forked from YokaiRick/akkoma
4417 lines
No EOL
7.5 MiB
4417 lines
No EOL
7.5 MiB
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["vendors~app"],{
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzPzVhNDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQSx3Q0FBd0MsU0FBUztBQUNqRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/arrayWithHoles.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcz9jMTM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcz8yMjM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QixtQkFBTyxDQUFDLHdGQUF1Qjs7QUFFdEQ7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkoYXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanM/M2M5NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gc2VsZjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzP2M5NzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGluZm8uZG9uZSkge1xuICAgIHJlc29sdmUodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuXG4gICAgICBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICB9XG5cbiAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcz85NzBiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/classCallCheck.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/construct.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/construct.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ \"./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jb25zdHJ1Y3QuanM/YjE3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQyxvRkFBcUI7O0FBRWxELCtCQUErQixtQkFBTyxDQUFDLHdHQUErQjs7QUFFdEU7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jb25zdHJ1Y3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcblxudmFyIGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiKTtcblxuZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gIGlmIChpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSkge1xuICAgIG1vZHVsZS5leHBvcnRzID0gX2NvbnN0cnVjdCA9IFJlZmxlY3QuY29uc3RydWN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gICAgICB2YXIgYSA9IFtudWxsXTtcbiAgICAgIGEucHVzaC5hcHBseShhLCBhcmdzKTtcbiAgICAgIHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTtcbiAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDb25zdHJ1Y3RvcigpO1xuICAgICAgaWYgKENsYXNzKSBzZXRQcm90b3R5cGVPZihpbnN0YW5jZSwgQ2xhc3MucHJvdG90eXBlKTtcbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7XG4gIH1cblxuICByZXR1cm4gX2NvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9jb25zdHJ1Y3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/construct.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/createClass.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
|
||
\************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcz81YmMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/createClass.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcz85NTIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/defineProperty.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/extends.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/extends.js ***!
|
||
\********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzP2E1NTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/extends.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcz8zNmM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzO1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/inherits.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/inherits.js ***!
|
||
\*********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcz9lZDZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQixtQkFBTyxDQUFDLG9GQUFxQjs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/inherits.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/isNativeFunction.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZUZ1bmN0aW9uLmpzP2M1ZjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXNOYXRpdmVGdW5jdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9pc05hdGl2ZUZ1bmN0aW9uKGZuKSB7XG4gIHJldHVybiBGdW5jdGlvbi50b1N0cmluZy5jYWxsKGZuKS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKSAhPT0gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlRnVuY3Rpb24sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/isNativeFunction.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanM/NmY4ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdGQUFnRjtBQUNoRjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7XG4gIGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7XG5cbiAgdHJ5IHtcbiAgICBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanM/MTFiMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/iterableToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
|
||
\*********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcz85YjQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwyQkFBMkIsK0JBQStCO0FBQzFEOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTtcblxuICBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuO1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcblxuICB2YXIgX3MsIF9lO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheUxpbWl0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/nonIterableRest.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanM/YzI0MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/nonIterableRest.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVNwcmVhZC5qcz8wNjc2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
|
||
\************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcz80MDgyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQyxtQkFBTyxDQUFDLGdIQUFtQzs7QUFFOUU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxlQUFlLDZCQUE2QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgPSByZXF1aXJlKFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCIpO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7XG4gIHZhciBrZXksIGk7XG5cbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!
|
||
\*****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzP2YwZTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLHVCQUF1QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var _typeof = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\n\nvar assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzPzZiNTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLG9FQUFhOztBQUVuQyw0QkFBNEIsbUJBQU8sQ0FBQyxrR0FBNEI7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuXG52YXIgYXNzZXJ0VGhpc0luaXRpYWxpemVkID0gcmVxdWlyZShcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCIpO1xuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcz80YTRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/slicedToArray.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***!
|
||
\**************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ \"./node_modules/@babel/runtime/helpers/arrayWithHoles.js\");\n\nvar iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ \"./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ \"./node_modules/@babel/runtime/helpers/nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzPzI3OGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLG1CQUFPLENBQUMsb0ZBQXFCOztBQUVsRCwyQkFBMkIsbUJBQU8sQ0FBQyxnR0FBMkI7O0FBRTlELGlDQUFpQyxtQkFBTyxDQUFDLDRHQUFpQzs7QUFFMUUsc0JBQXNCLG1CQUFPLENBQUMsc0ZBQXNCOztBQUVwRDtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG5cbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xuXG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcblxudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/slicedToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ \"./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\");\n\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ \"./node_modules/@babel/runtime/helpers/iterableToArray.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ \"./node_modules/@babel/runtime/helpers/nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcz80NDhhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdCQUF3QixtQkFBTyxDQUFDLDBGQUF3Qjs7QUFFeEQsc0JBQXNCLG1CQUFPLENBQUMsc0ZBQXNCOztBQUVwRCxpQ0FBaUMsbUJBQU8sQ0FBQyw0R0FBaUM7O0FBRTFFLHdCQUF3QixtQkFBTyxDQUFDLDBGQUF3Qjs7QUFFeEQ7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcblxudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcblxudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG5cbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/toConsumableArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/typeof.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
|
||
\*******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanM/NzAzNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gIH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvYmopO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/typeof.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
|
||
\***************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcz82NjEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QixtQkFBTyxDQUFDLHdGQUF1Qjs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n\nvar setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\n\nvar isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ \"./node_modules/@babel/runtime/helpers/isNativeFunction.js\");\n\nvar construct = __webpack_require__(/*! ./construct.js */ \"./node_modules/@babel/runtime/helpers/construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy93cmFwTmF0aXZlU3VwZXIuanM/YTEyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQyxvRkFBcUI7O0FBRWxELHFCQUFxQixtQkFBTyxDQUFDLG9GQUFxQjs7QUFFbEQsdUJBQXVCLG1CQUFPLENBQUMsd0ZBQXVCOztBQUV0RCxnQkFBZ0IsbUJBQU8sQ0FBQywwRUFBZ0I7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvd3JhcE5hdGl2ZVN1cGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vZ2V0UHJvdG90eXBlT2YuanNcIik7XG5cbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuXG52YXIgaXNOYXRpdmVGdW5jdGlvbiA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlRnVuY3Rpb24uanNcIik7XG5cbnZhciBjb25zdHJ1Y3QgPSByZXF1aXJlKFwiLi9jb25zdHJ1Y3QuanNcIik7XG5cbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHtcbiAgdmFyIF9jYWNoZSA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDtcblxuICBtb2R1bGUuZXhwb3J0cyA9IF93cmFwTmF0aXZlU3VwZXIgPSBmdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKSB7XG4gICAgaWYgKENsYXNzID09PSBudWxsIHx8ICFpc05hdGl2ZUZ1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzO1xuXG4gICAgaWYgKHR5cGVvZiBDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfY2FjaGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpO1xuXG4gICAgICBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgV3JhcHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKENsYXNzLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IFdyYXBwZXIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNldFByb3RvdHlwZU9mKFdyYXBwZXIsIENsYXNzKTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzO1xuICByZXR1cm4gX3dyYXBOYXRpdmVTdXBlcihDbGFzcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3dyYXBOYXRpdmVTdXBlciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/wrapNativeSuper.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@babel/runtime/regenerator/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/regenerator/index.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! regenerator-runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanM/YTM0YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywwRUFBcUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWdlbmVyYXRvci1ydW50aW1lXCIpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/regenerator/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@fortawesome/fontawesome-svg-core/index.es.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/@fortawesome/fontawesome-svg-core/index.es.js ***!
|
||
\********************************************************************/
|
||
/*! exports provided: noAuto, config, library, dom, parse, findIconDefinition, toHtml, icon, layer, text, counter, api */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"noAuto\", function() { return noAuto$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"config\", function() { return config$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"library\", function() { return library$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dom\", function() { return dom$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findIconDefinition\", function() { return findIconDefinition$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toHtml\", function() { return toHtml$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"icon\", function() { return icon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"layer\", function() { return layer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"text\", function() { return text; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"counter\", function() { return counter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"api\", function() { return api; });\n/*!\n * Font Awesome Free 6.0.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2022 Fonticons, Inc.\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return \"development\" === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n};\nvar PREFIX_TO_LONG_STYLE = {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n};\nvar LONG_STYLE_TO_PREFIX = {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n};\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa[srltdbk\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n // For example <script data-search-pseudo-elements src=\"...\"></script>\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n styleDefault: 'solid',\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_config).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = Object.values(PREFIX_TO_LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = Object.keys(PREFIX_TO_STYLE);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault);\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault);\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var style = PREFIX_TO_STYLE[styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[styleOrPrefix] || STYLE_TO_PREFIX[style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nfunction getCanonicalIcon(values) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var givenPrefix = null;\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE.includes(cls) ? LONG_STYLE_TO_PREFIX[cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES.indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls);\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]);\n var longPrefix = PREFIX_TO_LONG_STYLE[key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\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 var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.familyPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.0.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (abstract) {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$2);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlL2luZGV4LmVzLmpzP2VjZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHNCQUFzQjtBQUN2QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDJCQUEyQiwrQkFBK0I7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHdDQUF3QyxTQUFTOztBQUVqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFvQjtBQUMvQixHQUFHO0FBQ0g7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBLDhHQUE4Rzs7QUFFOUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOENBQThDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUNBQXVDLFFBQVE7QUFDL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0NBQXdDLEtBQUs7QUFDN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLHdCQUF3Qix1QkFBdUIsc0JBQXNCLHNCQUFzQjtBQUN2STtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsK0VBQStFO0FBQy9FLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0MsK0RBQStELG1FQUFtRSwrREFBK0QsNkRBQTZELG1FQUFtRSxpRUFBaUUsR0FBRyxrRUFBa0Usc0JBQXNCLDRCQUE0QixHQUFHLHFCQUFxQiw2Q0FBNkMsZ0JBQWdCLHNCQUFzQiw2QkFBNkIsR0FBRywwQkFBMEIsMEJBQTBCLEdBQUcseUJBQXlCLHdCQUF3QixHQUFHLHlCQUF5QixvQ0FBb0MsR0FBRyx5QkFBeUIsMkJBQTJCLEdBQUcseUJBQXlCLDRCQUE0QixHQUFHLDBCQUEwQiw4QkFBOEIsR0FBRyxnQ0FBZ0MsK0NBQStDLGdCQUFnQixHQUFHLGlDQUFpQyw4Q0FBOEMsZ0JBQWdCLEdBQUcseUJBQXlCLG1DQUFtQyxnQkFBZ0IsR0FBRyx5QkFBeUIsc0NBQXNDLEdBQUcsbUNBQW1DLGNBQWMsWUFBWSxpQkFBaUIsdUJBQXVCLGFBQWEsV0FBVyxHQUFHLHlDQUF5QywwQkFBMEIsdUJBQXVCLHVCQUF1QixHQUFHLGdCQUFnQiwwQkFBMEIsZ0JBQWdCLHVCQUF1Qix1QkFBdUIsNkJBQTZCLGVBQWUsR0FBRyxpQ0FBaUMsNENBQTRDLDRDQUE0QyxHQUFHLHFCQUFxQixjQUFjLGFBQWEsNkNBQTZDLDZDQUE2Qyw0Q0FBNEMsNENBQTRDLEdBQUcsd0JBQXdCLGtFQUFrRSx3REFBd0QsMkJBQTJCLG1DQUFtQyxrREFBa0QsZ0RBQWdELGtEQUFrRCxxQkFBcUIscURBQXFELDhCQUE4Qiw0QkFBNEIsMEJBQTBCLDREQUE0RCw0REFBNEQsd0NBQXdDLHdDQUF3QyxHQUFHLDZCQUE2QixnQ0FBZ0MsOEJBQThCLGNBQWMsMkRBQTJELDJEQUEyRCwyQ0FBMkMsMkNBQTJDLEdBQUcsNEJBQTRCLGdDQUFnQyw0QkFBNEIsZ0JBQWdCLGNBQWMsMkRBQTJELDJEQUEyRCwwQ0FBMEMsMENBQTBDLEdBQUcsMEJBQTBCLDBCQUEwQiw4QkFBOEIsMkRBQTJELDJEQUEyRCx3Q0FBd0Msd0NBQXdDLEdBQUcseUJBQXlCLDRCQUE0QixnQkFBZ0IsMEJBQTBCLDJEQUEyRCwyREFBMkQsdUNBQXVDLHVDQUF1QyxHQUFHLFlBQVksbUJBQW1CLEdBQUcsWUFBWSxtQkFBbUIsR0FBRyxZQUFZLG1CQUFtQixHQUFHLFlBQVksbUJBQW1CLEdBQUcsWUFBWSxtQkFBbUIsR0FBRyxZQUFZLG1CQUFtQixHQUFHLFlBQVksbUJBQW1CLEdBQUcsWUFBWSxtQkFBbUIsR0FBRyxZQUFZLG1CQUFtQixHQUFHLGFBQWEsb0JBQW9CLEdBQUcsYUFBYSx1QkFBdUIsdUJBQXVCLDRCQUE0QixHQUFHLFlBQVksc0JBQXNCLGdDQUFnQyw0QkFBNEIsR0FBRyxZQUFZLHVCQUF1QixnQ0FBZ0MsbUNBQW1DLEdBQUcsWUFBWSxzQkFBc0Isd0JBQXdCLDZCQUE2QixHQUFHLFlBQVkscUJBQXFCLGdDQUFnQyw2QkFBNkIsR0FBRyxhQUFhLG1CQUFtQiwyQkFBMkIsOEJBQThCLEdBQUcsWUFBWSx1QkFBdUIsa0JBQWtCLEdBQUcsWUFBWSwwQkFBMEIsNENBQTRDLG9CQUFvQixHQUFHLGVBQWUsdUJBQXVCLEdBQUcsWUFBWSw2Q0FBNkMsdUJBQXVCLHVCQUF1QixtQ0FBbUMseUJBQXlCLEdBQUcsZ0JBQWdCLCtDQUErQyxrREFBa0QsZ0RBQWdELGlEQUFpRCwyREFBMkQsR0FBRyxtQkFBbUIsZ0JBQWdCLCtDQUErQyxHQUFHLG9CQUFvQixpQkFBaUIsOENBQThDLEdBQUcsY0FBYyxvQ0FBb0Msb0NBQW9DLDBEQUEwRCwwREFBMEQsdUVBQXVFLHVFQUF1RSxpRUFBaUUsaUVBQWlFLHFGQUFxRixxRkFBcUYsK0VBQStFLCtFQUErRSxHQUFHLGdCQUFnQixzQ0FBc0Msc0NBQXNDLDBEQUEwRCwwREFBMEQsdUVBQXVFLHVFQUF1RSxpRUFBaUUsaUVBQWlFLHFGQUFxRixxRkFBcUYscUdBQXFHLHFHQUFxRyxHQUFHLGNBQWMsb0NBQW9DLG9DQUFvQywwREFBMEQsMERBQTBELHVFQUF1RSx1RUFBdUUsaUVBQWlFLGlFQUFpRSxxRkFBcUYscUZBQXFGLGdHQUFnRyxnR0FBZ0csR0FBRyxtQkFBbUIseUNBQXlDLHlDQUF5QywwREFBMEQsMERBQTBELHVFQUF1RSx1RUFBdUUsaUVBQWlFLGlFQUFpRSxxRkFBcUYscUZBQXFGLGdHQUFnRyxnR0FBZ0csR0FBRyxjQUFjLG9DQUFvQyxvQ0FBb0MsMERBQTBELDBEQUEwRCx1RUFBdUUsdUVBQXVFLGlFQUFpRSxpRUFBaUUscUZBQXFGLHFGQUFxRiwrRUFBK0UsK0VBQStFLEdBQUcsZUFBZSxxQ0FBcUMscUNBQXFDLDBEQUEwRCwwREFBMEQsdUVBQXVFLHVFQUF1RSxpRUFBaUUsaUVBQWlFLHFGQUFxRixxRkFBcUYsMEVBQTBFLDBFQUEwRSxHQUFHLGNBQWMsb0NBQW9DLG9DQUFvQywwREFBMEQsMERBQTBELHVFQUF1RSx1RUFBdUUsaUVBQWlFLGlFQUFpRSxxRkFBcUYscUZBQXFGLDBFQUEwRSwwRUFBMEUsR0FBRyxzQkFBc0Isc0NBQXNDLEdBQUcsZ0NBQWdDLG9DQUFvQyxvQ0FBb0MsdUVBQXVFLHVFQUF1RSxpRUFBaUUsaUVBQWlFLHFGQUFxRixxRkFBcUYsNEVBQTRFLDRFQUE0RSxHQUFHLDZDQUE2QyxxSEFBcUgsb0NBQW9DLG9DQUFvQyxzQ0FBc0Msc0NBQXNDLDJDQUEyQywyQ0FBMkMsMkJBQTJCLDhCQUE4QixLQUFLLEdBQUcsOEJBQThCLGFBQWEsa0NBQWtDLGtDQUFrQyxLQUFLLFNBQVMsMkRBQTJELDJEQUEyRCxLQUFLLEdBQUcsc0JBQXNCLGFBQWEsa0NBQWtDLGtDQUFrQyxLQUFLLFNBQVMsMkRBQTJELDJEQUEyRCxLQUFLLEdBQUcsZ0NBQWdDLFFBQVEsbURBQW1ELG1EQUFtRCxLQUFLLFNBQVMsdUhBQXVILHVIQUF1SCxLQUFLLFNBQVMsbUpBQW1KLG1KQUFtSixLQUFLLFNBQVMsdUhBQXVILHVIQUF1SCxLQUFLLFNBQVMsb0ZBQW9GLG9GQUFvRixLQUFLLFNBQVMsbURBQW1ELG1EQUFtRCxLQUFLLFVBQVUsbURBQW1ELG1EQUFtRCxLQUFLLEdBQUcsd0JBQXdCLFFBQVEsbURBQW1ELG1EQUFtRCxLQUFLLFNBQVMsdUhBQXVILHVIQUF1SCxLQUFLLFNBQVMsbUpBQW1KLG1KQUFtSixLQUFLLFNBQVMsdUhBQXVILHVIQUF1SCxLQUFLLFNBQVMsb0ZBQW9GLG9GQUFvRixLQUFLLFNBQVMsbURBQW1ELG1EQUFtRCxLQUFLLFVBQVUsbURBQW1ELG1EQUFtRCxLQUFLLEdBQUcsOEJBQThCLFNBQVMsMkNBQTJDLEtBQUssR0FBRyxzQkFBc0IsU0FBUywyQ0FBMkMsS0FBSyxHQUFHLG1DQUFtQyxjQUFjLGdEQUFnRCxrQ0FBa0Msa0NBQWtDLEtBQUssU0FBUyxpQkFBaUIsaUVBQWlFLGlFQUFpRSxLQUFLLEdBQUcsMkJBQTJCLGNBQWMsZ0RBQWdELGtDQUFrQyxrQ0FBa0MsS0FBSyxTQUFTLGlCQUFpQixpRUFBaUUsaUVBQWlFLEtBQUssR0FBRyw4QkFBOEIsU0FBUyxnSUFBZ0ksZ0lBQWdJLEtBQUssR0FBRyxzQkFBc0IsU0FBUyxnSUFBZ0ksZ0lBQWdJLEtBQUssR0FBRywrQkFBK0IsUUFBUSx3Q0FBd0Msd0NBQXdDLEtBQUssUUFBUSx1Q0FBdUMsdUNBQXVDLEtBQUssYUFBYSx3Q0FBd0Msd0NBQXdDLEtBQUssY0FBYyx1Q0FBdUMsdUNBQXVDLEtBQUssU0FBUyx3Q0FBd0Msd0NBQXdDLEtBQUssU0FBUyx1Q0FBdUMsdUNBQXVDLEtBQUssU0FBUyx3Q0FBd0Msd0NBQXdDLEtBQUssU0FBUyx1Q0FBdUMsdUNBQXVDLEtBQUssZUFBZSxzQ0FBc0Msc0NBQXNDLEtBQUssR0FBRyx1QkFBdUIsUUFBUSx3Q0FBd0Msd0NBQXdDLEtBQUssUUFBUSx1Q0FBdUMsdUNBQXVDLEtBQUssYUFBYSx3Q0FBd0Msd0NBQXdDLEtBQUssY0FBYyx1Q0FBdUMsdUNBQXVDLEtBQUssU0FBUyx3Q0FBd0Msd0NBQXdDLEtBQUssU0FBUyx1Q0FBdUMsdUNBQXVDLEtBQUssU0FBUyx3Q0FBd0Msd0NBQXdDLEtBQUssU0FBUyx1Q0FBdUMsdUNBQXVDLEtBQUssZUFBZSxzQ0FBc0Msc0NBQXNDLEtBQUssR0FBRyw4QkFBOEIsUUFBUSxzQ0FBc0Msc0NBQXNDLEtBQUssVUFBVSx3Q0FBd0Msd0NBQXdDLEtBQUssR0FBRyxzQkFBc0IsUUFBUSxzQ0FBc0Msc0NBQXNDLEtBQUssVUFBVSx3Q0FBd0Msd0NBQXdDLEtBQUssR0FBRyxpQkFBaUIscUNBQXFDLHFDQUFxQyxHQUFHLG9CQUFvQixzQ0FBc0Msc0NBQXNDLEdBQUcsb0JBQW9CLHNDQUFzQyxzQ0FBc0MsR0FBRyx5QkFBeUIsb0NBQW9DLG9DQUFvQyxHQUFHLHVCQUF1QixvQ0FBb0Msb0NBQW9DLEdBQUcsMERBQTBELHFDQUFxQyxxQ0FBcUMsR0FBRyxtQkFBbUIsNERBQTRELDREQUE0RCxHQUFHLGVBQWUsMEJBQTBCLDJCQUEyQixnQkFBZ0IsdUJBQXVCLGlCQUFpQixHQUFHLGlDQUFpQyxjQUFjLFlBQVksaUJBQWlCLHVCQUF1QixhQUFhLFdBQVcsMkNBQTJDLEdBQUcsaUNBQWlDLGdCQUFnQixrQkFBa0IsR0FBRywrQkFBK0IsZ0JBQWdCLGlCQUFpQixHQUFHLGlCQUFpQixtQ0FBbUMsR0FBRyw0QkFBNEIsdUJBQXVCLGVBQWUsZ0JBQWdCLGVBQWUsaUJBQWlCLHFCQUFxQiwyQkFBMkIsd0JBQXdCLG9CQUFvQixHQUFHLHdFQUF3RSx1QkFBdUIsZUFBZSxnQkFBZ0IsZUFBZSxpQkFBaUIscUJBQXFCLDJCQUEyQix3QkFBd0Isb0JBQW9CLEdBQUcsaUNBQWlDLGdEQUFnRCwwQ0FBMEMsR0FBRyxtQ0FBbUMsa0RBQWtELDhDQUE4QyxHQUFHLGlEQUFpRCw4Q0FBOEMsR0FBRyxtREFBbUQsMENBQTBDLEdBQUcsMkVBQTJFLGdCQUFnQixHQUFHLDhDQUE4QyxtQ0FBbUMsR0FBRzs7QUFFOTZxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RDtBQUN4RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxTQUFTO0FBQ3JCLFlBQVksTUFBTTtBQUNsQixZQUFZLE9BQU87QUFDbkIsWUFBWSxNQUFNO0FBQ2xCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLFFBQVEsWUFBWTtBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHLElBQUk7QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsK0RBQStELGdDQUFnQztBQUMvRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBLEtBQUssSUFBSTtBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUcsRUFBRTtBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsYUFBYTtBQUNiO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnRkFBZ0YsYUFBYTtBQUM3RjtBQUNBOztBQUVBLGtFQUFrRTtBQUNsRTtBQUNBLGlFQUFpRSw4QkFBOEI7QUFDL0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0Esd0ZBQXdGLGFBQWE7QUFDckc7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSw0RkFBNEYsZUFBZTtBQUMzRztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUVBQXFFLGFBQWE7QUFDbEY7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUIsS0FBSztBQUNMO0FBQ0E7QUFDQSxrREFBa0QsaUJBQWlCO0FBQ25FO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGdEQUFnRCx1QkFBdUI7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSw2Q0FBNkMsY0FBYztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrRUFBa0U7QUFDbEU7QUFDQSxHQUFHLEtBQUssS0FBSztBQUNiO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0VBQWtFO0FBQ2xFO0FBQ0EsR0FBRyxLQUFLLEtBQUs7QUFDYjtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLGlDQUFpQztBQUM3RSwyRkFBMkY7QUFDM0YsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0JBQStCO0FBQy9COztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUssSUFBSTtBQUNUOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHLElBQUk7QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRyxZQUFZO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsMkVBQTJFO0FBQzlIOztBQUVBO0FBQ0Esd0JBQXdCLDZDQUE2QztBQUNyRTs7QUFFQSxnRUFBZ0UsYUFBYTtBQUM3RTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTtBQUNqRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrRUFBK0UsV0FBVztBQUMxRjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRDtBQUMxRCxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0Esb0RBQW9ELGdCQUFnQjtBQUNwRTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0Esc0RBQXNEO0FBQ3RELFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGdCQUFnQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQSxvREFBb0QsV0FBVztBQUMvRDtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQLDREQUE0RCxxQkFBcUI7QUFDakY7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxvREFBb0QsV0FBVztBQUMvRDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QscUJBQXFCO0FBQzNFO0FBQ0Esd0JBQXdCLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRztBQUN2QyxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0Esc0RBQXNELHNCQUFzQjtBQUM1RSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ2pDLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELFdBQVc7QUFDL0Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esc0RBQXNELHNCQUFzQjtBQUM1RSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ2pDLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxXQUFXO0FBQ2pFO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLHdEQUF3RCxzQkFBc0I7QUFDOUUseUJBQXlCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUNuQyxhQUFhO0FBQ2IsV0FBVztBQUNYLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRXlNIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZS9pbmRleC5lcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogRm9udCBBd2Vzb21lIEZyZWUgNi4wLjAgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb21cbiAqIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOiBDQyBCWSA0LjAsIEZvbnRzOiBTSUwgT0ZMIDEuMSwgQ29kZTogTUlUIExpY2Vuc2UpXG4gKiBDb3B5cmlnaHQgMjAyMiBGb250aWNvbnMsIEluYy5cbiAqL1xuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuICAgIGVudW1lcmFibGVPbmx5ICYmIChzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7XG4gICAgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7XG4gIH1cblxuICByZXR1cm4ga2V5cztcbn1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZDIodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307XG4gICAgaSAlIDIgPyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKSA6IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gIH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgfSwgX3R5cGVvZihvYmopO1xufVxuXG5mdW5jdGlvbiBfd3JhcFJlZ0V4cCgpIHtcbiAgX3dyYXBSZWdFeHAgPSBmdW5jdGlvbiAocmUsIGdyb3Vwcykge1xuICAgIHJldHVybiBuZXcgQmFiZWxSZWdFeHAocmUsIHZvaWQgMCwgZ3JvdXBzKTtcbiAgfTtcblxuICB2YXIgX3N1cGVyID0gUmVnRXhwLnByb3RvdHlwZSxcbiAgICAgIF9ncm91cHMgPSBuZXcgV2Vha01hcCgpO1xuXG4gIGZ1bmN0aW9uIEJhYmVsUmVnRXhwKHJlLCBmbGFncywgZ3JvdXBzKSB7XG4gICAgdmFyIF90aGlzID0gbmV3IFJlZ0V4cChyZSwgZmxhZ3MpO1xuXG4gICAgcmV0dXJuIF9ncm91cHMuc2V0KF90aGlzLCBncm91cHMgfHwgX2dyb3Vwcy5nZXQocmUpKSwgX3NldFByb3RvdHlwZU9mKF90aGlzLCBCYWJlbFJlZ0V4cC5wcm90b3R5cGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRHcm91cHMocmVzdWx0LCByZSkge1xuICAgIHZhciBnID0gX2dyb3Vwcy5nZXQocmUpO1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGcpLnJlZHVjZShmdW5jdGlvbiAoZ3JvdXBzLCBuYW1lKSB7XG4gICAgICByZXR1cm4gZ3JvdXBzW25hbWVdID0gcmVzdWx0W2dbbmFtZV1dLCBncm91cHM7XG4gICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gIH1cblxuICByZXR1cm4gX2luaGVyaXRzKEJhYmVsUmVnRXhwLCBSZWdFeHApLCBCYWJlbFJlZ0V4cC5wcm90b3R5cGUuZXhlYyA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICB2YXIgcmVzdWx0ID0gX3N1cGVyLmV4ZWMuY2FsbCh0aGlzLCBzdHIpO1xuXG4gICAgcmV0dXJuIHJlc3VsdCAmJiAocmVzdWx0Lmdyb3VwcyA9IGJ1aWxkR3JvdXBzKHJlc3VsdCwgdGhpcykpLCByZXN1bHQ7XG4gIH0sIEJhYmVsUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wucmVwbGFjZV0gPSBmdW5jdGlvbiAoc3RyLCBzdWJzdGl0dXRpb24pIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2Ygc3Vic3RpdHV0aW9uKSB7XG4gICAgICB2YXIgZ3JvdXBzID0gX2dyb3Vwcy5nZXQodGhpcyk7XG5cbiAgICAgIHJldHVybiBfc3VwZXJbU3ltYm9sLnJlcGxhY2VdLmNhbGwodGhpcywgc3RyLCBzdWJzdGl0dXRpb24ucmVwbGFjZSgvXFwkPChbXj5dKyk+L2csIGZ1bmN0aW9uIChfLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBcIiRcIiArIGdyb3Vwc1tuYW1lXTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBpZiAoXCJmdW5jdGlvblwiID09IHR5cGVvZiBzdWJzdGl0dXRpb24pIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBfc3VwZXJbU3ltYm9sLnJlcGxhY2VdLmNhbGwodGhpcywgc3RyLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICByZXR1cm4gXCJvYmplY3RcIiAhPSB0eXBlb2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdICYmIChhcmdzID0gW10uc2xpY2UuY2FsbChhcmdzKSkucHVzaChidWlsZEdyb3VwcyhhcmdzLCBfdGhpcykpLCBzdWJzdGl0dXRpb24uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3N1cGVyW1N5bWJvbC5yZXBsYWNlXS5jYWxsKHRoaXMsIHN0ciwgc3Vic3RpdHV0aW9uKTtcbiAgfSwgX3dyYXBSZWdFeHAuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH1cbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcblxuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufVxuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTtcbn1cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikge1xuICByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2kgPSBhcnIgPT0gbnVsbCA/IG51bGwgOiB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl07XG5cbiAgaWYgKF9pID09IG51bGwpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG5cbiAgdmFyIF9zLCBfZTtcblxuICB0cnkge1xuICAgIGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcblxuICByZXR1cm4gYXJyMjtcbn1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cblxudmFyIG5vb3AgPSBmdW5jdGlvbiBub29wKCkge307XG5cbnZhciBfV0lORE9XID0ge307XG52YXIgX0RPQ1VNRU5UID0ge307XG52YXIgX01VVEFUSU9OX09CU0VSVkVSID0gbnVsbDtcbnZhciBfUEVSRk9STUFOQ0UgPSB7XG4gIG1hcms6IG5vb3AsXG4gIG1lYXN1cmU6IG5vb3Bcbn07XG5cbnRyeSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgX1dJTkRPVyA9IHdpbmRvdztcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIF9ET0NVTUVOVCA9IGRvY3VtZW50O1xuICBpZiAodHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSBfTVVUQVRJT05fT0JTRVJWRVIgPSBNdXRhdGlvbk9ic2VydmVyO1xuICBpZiAodHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJykgX1BFUkZPUk1BTkNFID0gcGVyZm9ybWFuY2U7XG59IGNhdGNoIChlKSB7fVxuXG52YXIgX3JlZiA9IF9XSU5ET1cubmF2aWdhdG9yIHx8IHt9LFxuICAgIF9yZWYkdXNlckFnZW50ID0gX3JlZi51c2VyQWdlbnQsXG4gICAgdXNlckFnZW50ID0gX3JlZiR1c2VyQWdlbnQgPT09IHZvaWQgMCA/ICcnIDogX3JlZiR1c2VyQWdlbnQ7XG52YXIgV0lORE9XID0gX1dJTkRPVztcbnZhciBET0NVTUVOVCA9IF9ET0NVTUVOVDtcbnZhciBNVVRBVElPTl9PQlNFUlZFUiA9IF9NVVRBVElPTl9PQlNFUlZFUjtcbnZhciBQRVJGT1JNQU5DRSA9IF9QRVJGT1JNQU5DRTtcbnZhciBJU19CUk9XU0VSID0gISFXSU5ET1cuZG9jdW1lbnQ7XG52YXIgSVNfRE9NID0gISFET0NVTUVOVC5kb2N1bWVudEVsZW1lbnQgJiYgISFET0NVTUVOVC5oZWFkICYmIHR5cGVvZiBET0NVTUVOVC5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBET0NVTUVOVC5jcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xudmFyIElTX0lFID0gfnVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgfHwgfnVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG52YXIgTkFNRVNQQUNFX0lERU5USUZJRVIgPSAnX19fRk9OVF9BV0VTT01FX19fJztcbnZhciBVTklUU19JTl9HUklEID0gMTY7XG52YXIgREVGQVVMVF9GQU1JTFlfUFJFRklYID0gJ2ZhJztcbnZhciBERUZBVUxUX1JFUExBQ0VNRU5UX0NMQVNTID0gJ3N2Zy1pbmxpbmUtLWZhJztcbnZhciBEQVRBX0ZBX0kyU1ZHID0gJ2RhdGEtZmEtaTJzdmcnO1xudmFyIERBVEFfRkFfUFNFVURPX0VMRU1FTlQgPSAnZGF0YS1mYS1wc2V1ZG8tZWxlbWVudCc7XG52YXIgREFUQV9GQV9QU0VVRE9fRUxFTUVOVF9QRU5ESU5HID0gJ2RhdGEtZmEtcHNldWRvLWVsZW1lbnQtcGVuZGluZyc7XG52YXIgREFUQV9QUkVGSVggPSAnZGF0YS1wcmVmaXgnO1xudmFyIERBVEFfSUNPTiA9ICdkYXRhLWljb24nO1xudmFyIEhUTUxfQ0xBU1NfSTJTVkdfQkFTRV9DTEFTUyA9ICdmb250YXdlc29tZS1pMnN2Zyc7XG52YXIgTVVUQVRJT05fQVBQUk9BQ0hfQVNZTkMgPSAnYXN5bmMnO1xudmFyIFRBR05BTUVTX1RPX1NLSVBfRk9SX1BTRVVET0VMRU1FTlRTID0gWydIVE1MJywgJ0hFQUQnLCAnU1RZTEUnLCAnU0NSSVBUJ107XG52YXIgUFJPRFVDVElPTiA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJztcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSgpO1xudmFyIFBSRUZJWF9UT19TVFlMRSA9IHtcbiAgJ2Zhcyc6ICdzb2xpZCcsXG4gICdmYS1zb2xpZCc6ICdzb2xpZCcsXG4gICdmYXInOiAncmVndWxhcicsXG4gICdmYS1yZWd1bGFyJzogJ3JlZ3VsYXInLFxuICAnZmFsJzogJ2xpZ2h0JyxcbiAgJ2ZhLWxpZ2h0JzogJ2xpZ2h0JyxcbiAgJ2ZhdCc6ICd0aGluJyxcbiAgJ2ZhLXRoaW4nOiAndGhpbicsXG4gICdmYWQnOiAnZHVvdG9uZScsXG4gICdmYS1kdW90b25lJzogJ2R1b3RvbmUnLFxuICAnZmFiJzogJ2JyYW5kcycsXG4gICdmYS1icmFuZHMnOiAnYnJhbmRzJyxcbiAgJ2Zhayc6ICdraXQnLFxuICAnZmEta2l0JzogJ2tpdCcsXG4gICdmYSc6ICdzb2xpZCdcbn07XG52YXIgU1RZTEVfVE9fUFJFRklYID0ge1xuICAnc29saWQnOiAnZmFzJyxcbiAgJ3JlZ3VsYXInOiAnZmFyJyxcbiAgJ2xpZ2h0JzogJ2ZhbCcsXG4gICd0aGluJzogJ2ZhdCcsXG4gICdkdW90b25lJzogJ2ZhZCcsXG4gICdicmFuZHMnOiAnZmFiJyxcbiAgJ2tpdCc6ICdmYWsnXG59O1xudmFyIFBSRUZJWF9UT19MT05HX1NUWUxFID0ge1xuICAnZmFiJzogJ2ZhLWJyYW5kcycsXG4gICdmYWQnOiAnZmEtZHVvdG9uZScsXG4gICdmYWsnOiAnZmEta2l0JyxcbiAgJ2ZhbCc6ICdmYS1saWdodCcsXG4gICdmYXInOiAnZmEtcmVndWxhcicsXG4gICdmYXMnOiAnZmEtc29saWQnLFxuICAnZmF0JzogJ2ZhLXRoaW4nXG59O1xudmFyIExPTkdfU1RZTEVfVE9fUFJFRklYID0ge1xuICAnZmEtYnJhbmRzJzogJ2ZhYicsXG4gICdmYS1kdW90b25lJzogJ2ZhZCcsXG4gICdmYS1raXQnOiAnZmFrJyxcbiAgJ2ZhLWxpZ2h0JzogJ2ZhbCcsXG4gICdmYS1yZWd1bGFyJzogJ2ZhcicsXG4gICdmYS1zb2xpZCc6ICdmYXMnLFxuICAnZmEtdGhpbic6ICdmYXQnXG59O1xudmFyIElDT05fU0VMRUNUSU9OX1NZTlRBWF9QQVRURVJOID0gL2ZhW3NybHRkYmtcXC1cXCBdLzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuXG52YXIgTEFZRVJTX1RFWFRfQ0xBU1NOQU1FID0gJ2ZhLWxheWVycy10ZXh0JztcbnZhciBGT05UX0ZBTUlMWV9QQVRURVJOID0gL0ZvbnQgP0F3ZXNvbWUgPyhbNTYgXSopKFNvbGlkfFJlZ3VsYXJ8TGlnaHR8VGhpbnxEdW90b25lfEJyYW5kc3xGcmVlfFByb3xLaXQpPy4qL2k7IC8vIFRPRE86IGRvIHdlIG5lZWQgdG8gaGFuZGxlIGZvbnQtd2VpZ2h0IGZvciBraXQgU1ZHIHBzZXVkby1lbGVtZW50cz9cblxudmFyIEZPTlRfV0VJR0hUX1RPX1BSRUZJWCA9IHtcbiAgJzkwMCc6ICdmYXMnLFxuICAnNDAwJzogJ2ZhcicsXG4gICdub3JtYWwnOiAnZmFyJyxcbiAgJzMwMCc6ICdmYWwnLFxuICAnMTAwJzogJ2ZhdCdcbn07XG52YXIgb25lVG9UZW4gPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdO1xudmFyIG9uZVRvVHdlbnR5ID0gb25lVG9UZW4uY29uY2F0KFsxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMF0pO1xudmFyIEFUVFJJQlVURVNfV0FUQ0hFRF9GT1JfTVVUQVRJT04gPSBbJ2NsYXNzJywgJ2RhdGEtcHJlZml4JywgJ2RhdGEtaWNvbicsICdkYXRhLWZhLXRyYW5zZm9ybScsICdkYXRhLWZhLW1hc2snXTtcbnZhciBEVU9UT05FX0NMQVNTRVMgPSB7XG4gIEdST1VQOiAnZHVvdG9uZS1ncm91cCcsXG4gIFNXQVBfT1BBQ0lUWTogJ3N3YXAtb3BhY2l0eScsXG4gIFBSSU1BUlk6ICdwcmltYXJ5JyxcbiAgU0VDT05EQVJZOiAnc2Vjb25kYXJ5J1xufTtcbnZhciBSRVNFUlZFRF9DTEFTU0VTID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShPYmplY3Qua2V5cyhTVFlMRV9UT19QUkVGSVgpKSwgWycyeHMnLCAneHMnLCAnc20nLCAnbGcnLCAneGwnLCAnMnhsJywgJ2JlYXQnLCAnYm9yZGVyJywgJ2ZhZGUnLCAnYmVhdC1mYWRlJywgJ2JvdW5jZScsICdmbGlwLWJvdGgnLCAnZmxpcC1ob3Jpem9udGFsJywgJ2ZsaXAtdmVydGljYWwnLCAnZmxpcCcsICdmdycsICdpbnZlcnNlJywgJ2xheWVycy1jb3VudGVyJywgJ2xheWVycy10ZXh0JywgJ2xheWVycycsICdsaScsICdwdWxsLWxlZnQnLCAncHVsbC1yaWdodCcsICdwdWxzZScsICdyb3RhdGUtMTgwJywgJ3JvdGF0ZS0yNzAnLCAncm90YXRlLTkwJywgJ3JvdGF0ZS1ieScsICdzaGFrZScsICdzcGluLXB1bHNlJywgJ3NwaW4tcmV2ZXJzZScsICdzcGluJywgJ3N0YWNrLTF4JywgJ3N0YWNrLTJ4JywgJ3N0YWNrJywgJ3VsJywgRFVPVE9ORV9DTEFTU0VTLkdST1VQLCBEVU9UT05FX0NMQVNTRVMuU1dBUF9PUEFDSVRZLCBEVU9UT05FX0NMQVNTRVMuUFJJTUFSWSwgRFVPVE9ORV9DTEFTU0VTLlNFQ09OREFSWV0pLmNvbmNhdChvbmVUb1Rlbi5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KG4sIFwieFwiKTtcbn0pKS5jb25jYXQob25lVG9Ud2VudHkubWFwKGZ1bmN0aW9uIChuKSB7XG4gIHJldHVybiBcInctXCIuY29uY2F0KG4pO1xufSkpO1xuXG52YXIgaW5pdGlhbCA9IFdJTkRPVy5Gb250QXdlc29tZUNvbmZpZyB8fCB7fTtcblxuZnVuY3Rpb24gZ2V0QXR0ckNvbmZpZyhhdHRyKSB7XG4gIHZhciBlbGVtZW50ID0gRE9DVU1FTlQucXVlcnlTZWxlY3Rvcignc2NyaXB0WycgKyBhdHRyICsgJ10nKTtcblxuICBpZiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2VyY2UodmFsKSB7XG4gIC8vIEdldHRpbmcgYW4gZW1wdHkgc3RyaW5nIHdpbGwgb2NjdXIgaWYgdGhlIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhlIEhUTUwgdGFnIGJ1dCB3aXRob3V0IGEgdmFsdWVcbiAgLy8gV2UnbGwgYXNzdW1lIHRoYXQgdGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgaXQgc2hvdWxkIGJlIHRvZ2dsZWQgdG8gdHJ1ZVxuICAvLyBGb3IgZXhhbXBsZSA8c2NyaXB0IGRhdGEtc2VhcmNoLXBzZXVkby1lbGVtZW50cyBzcmM9XCIuLi5cIj48L3NjcmlwdD5cbiAgaWYgKHZhbCA9PT0gJycpIHJldHVybiB0cnVlO1xuICBpZiAodmFsID09PSAnZmFsc2UnKSByZXR1cm4gZmFsc2U7XG4gIGlmICh2YWwgPT09ICd0cnVlJykgcmV0dXJuIHRydWU7XG4gIHJldHVybiB2YWw7XG59XG5cbmlmIChET0NVTUVOVCAmJiB0eXBlb2YgRE9DVU1FTlQucXVlcnlTZWxlY3RvciA9PT0gJ2Z1bmN0aW9uJykge1xuICB2YXIgYXR0cnMgPSBbWydkYXRhLWZhbWlseS1wcmVmaXgnLCAnZmFtaWx5UHJlZml4J10sIFsnZGF0YS1zdHlsZS1kZWZhdWx0JywgJ3N0eWxlRGVmYXVsdCddLCBbJ2RhdGEtcmVwbGFjZW1lbnQtY2xhc3MnLCAncmVwbGFjZW1lbnRDbGFzcyddLCBbJ2RhdGEtYXV0by1yZXBsYWNlLXN2ZycsICdhdXRvUmVwbGFjZVN2ZyddLCBbJ2RhdGEtYXV0by1hZGQtY3NzJywgJ2F1dG9BZGRDc3MnXSwgWydkYXRhLWF1dG8tYTExeScsICdhdXRvQTExeSddLCBbJ2RhdGEtc2VhcmNoLXBzZXVkby1lbGVtZW50cycsICdzZWFyY2hQc2V1ZG9FbGVtZW50cyddLCBbJ2RhdGEtb2JzZXJ2ZS1tdXRhdGlvbnMnLCAnb2JzZXJ2ZU11dGF0aW9ucyddLCBbJ2RhdGEtbXV0YXRlLWFwcHJvYWNoJywgJ211dGF0ZUFwcHJvYWNoJ10sIFsnZGF0YS1rZWVwLW9yaWdpbmFsLXNvdXJjZScsICdrZWVwT3JpZ2luYWxTb3VyY2UnXSwgWydkYXRhLW1lYXN1cmUtcGVyZm9ybWFuY2UnLCAnbWVhc3VyZVBlcmZvcm1hbmNlJ10sIFsnZGF0YS1zaG93LW1pc3NpbmctaWNvbnMnLCAnc2hvd01pc3NpbmdJY29ucyddXTtcbiAgYXR0cnMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDIpLFxuICAgICAgICBhdHRyID0gX3JlZjJbMF0sXG4gICAgICAgIGtleSA9IF9yZWYyWzFdO1xuXG4gICAgdmFyIHZhbCA9IGNvZXJjZShnZXRBdHRyQ29uZmlnKGF0dHIpKTtcblxuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgIGluaXRpYWxba2V5XSA9IHZhbDtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgX2RlZmF1bHQgPSB7XG4gIGZhbWlseVByZWZpeDogREVGQVVMVF9GQU1JTFlfUFJFRklYLFxuICBzdHlsZURlZmF1bHQ6ICdzb2xpZCcsXG4gIHJlcGxhY2VtZW50Q2xhc3M6IERFRkFVTFRfUkVQTEFDRU1FTlRfQ0xBU1MsXG4gIGF1dG9SZXBsYWNlU3ZnOiB0cnVlLFxuICBhdXRvQWRkQ3NzOiB0cnVlLFxuICBhdXRvQTExeTogdHJ1ZSxcbiAgc2VhcmNoUHNldWRvRWxlbWVudHM6IGZhbHNlLFxuICBvYnNlcnZlTXV0YXRpb25zOiB0cnVlLFxuICBtdXRhdGVBcHByb2FjaDogJ2FzeW5jJyxcbiAga2VlcE9yaWdpbmFsU291cmNlOiB0cnVlLFxuICBtZWFzdXJlUGVyZm9ybWFuY2U6IGZhbHNlLFxuICBzaG93TWlzc2luZ0ljb25zOiB0cnVlXG59O1xuXG52YXIgX2NvbmZpZyA9IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBfZGVmYXVsdCksIGluaXRpYWwpO1xuXG5pZiAoIV9jb25maWcuYXV0b1JlcGxhY2VTdmcpIF9jb25maWcub2JzZXJ2ZU11dGF0aW9ucyA9IGZhbHNlO1xudmFyIGNvbmZpZyA9IHt9O1xuT2JqZWN0LmtleXMoX2NvbmZpZykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25maWcsIGtleSwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsKSB7XG4gICAgICBfY29uZmlnW2tleV0gPSB2YWw7XG5cbiAgICAgIF9vbkNoYW5nZUNiLmZvckVhY2goZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgIHJldHVybiBjYihjb25maWcpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiBfY29uZmlnW2tleV07XG4gICAgfVxuICB9KTtcbn0pO1xuV0lORE9XLkZvbnRBd2Vzb21lQ29uZmlnID0gY29uZmlnO1xudmFyIF9vbkNoYW5nZUNiID0gW107XG5mdW5jdGlvbiBvbkNoYW5nZShjYikge1xuICBfb25DaGFuZ2VDYi5wdXNoKGNiKTtcblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIF9vbkNoYW5nZUNiLnNwbGljZShfb25DaGFuZ2VDYi5pbmRleE9mKGNiKSwgMSk7XG4gIH07XG59XG5cbnZhciBkID0gVU5JVFNfSU5fR1JJRDtcbnZhciBtZWFuaW5nbGVzc1RyYW5zZm9ybSA9IHtcbiAgc2l6ZTogMTYsXG4gIHg6IDAsXG4gIHk6IDAsXG4gIHJvdGF0ZTogMCxcbiAgZmxpcFg6IGZhbHNlLFxuICBmbGlwWTogZmFsc2Vcbn07XG5mdW5jdGlvbiBpbnNlcnRDc3MoY3NzKSB7XG4gIGlmICghY3NzIHx8ICFJU19ET00pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc3R5bGUgPSBET0NVTUVOVC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTtcbiAgc3R5bGUuaW5uZXJIVE1MID0gY3NzO1xuICB2YXIgaGVhZENoaWxkcmVuID0gRE9DVU1FTlQuaGVhZC5jaGlsZE5vZGVzO1xuICB2YXIgYmVmb3JlQ2hpbGQgPSBudWxsO1xuXG4gIGZvciAodmFyIGkgPSBoZWFkQ2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+IC0xOyBpLS0pIHtcbiAgICB2YXIgY2hpbGQgPSBoZWFkQ2hpbGRyZW5baV07XG4gICAgdmFyIHRhZ05hbWUgPSAoY2hpbGQudGFnTmFtZSB8fCAnJykudG9VcHBlckNhc2UoKTtcblxuICAgIGlmIChbJ1NUWUxFJywgJ0xJTksnXS5pbmRleE9mKHRhZ05hbWUpID4gLTEpIHtcbiAgICAgIGJlZm9yZUNoaWxkID0gY2hpbGQ7XG4gICAgfVxuICB9XG5cbiAgRE9DVU1FTlQuaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGJlZm9yZUNoaWxkKTtcbiAgcmV0dXJuIGNzcztcbn1cbnZhciBpZFBvb2wgPSAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonO1xuZnVuY3Rpb24gbmV4dFVuaXF1ZUlkKCkge1xuICB2YXIgc2l6ZSA9IDEyO1xuICB2YXIgaWQgPSAnJztcblxuICB3aGlsZSAoc2l6ZS0tID4gMCkge1xuICAgIGlkICs9IGlkUG9vbFtNYXRoLnJhbmRvbSgpICogNjIgfCAwXTtcbiAgfVxuXG4gIHJldHVybiBpZDtcbn1cbmZ1bmN0aW9uIHRvQXJyYXkob2JqKSB7XG4gIHZhciBhcnJheSA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAob2JqIHx8IFtdKS5sZW5ndGggPj4+IDA7IGktLTspIHtcbiAgICBhcnJheVtpXSA9IG9ialtpXTtcbiAgfVxuXG4gIHJldHVybiBhcnJheTtcbn1cbmZ1bmN0aW9uIGNsYXNzQXJyYXkobm9kZSkge1xuICBpZiAobm9kZS5jbGFzc0xpc3QpIHtcbiAgICByZXR1cm4gdG9BcnJheShub2RlLmNsYXNzTGlzdCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChub2RlLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJykuc3BsaXQoJyAnKS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH0pO1xuICB9XG59XG5mdW5jdGlvbiBodG1sRXNjYXBlKHN0cikge1xuICByZXR1cm4gXCJcIi5jb25jYXQoc3RyKS5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKS5yZXBsYWNlKC8nL2csICcmIzM5OycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG59XG5mdW5jdGlvbiBqb2luQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzIHx8IHt9KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgYXR0cmlidXRlTmFtZSkge1xuICAgIHJldHVybiBhY2MgKyBcIlwiLmNvbmNhdChhdHRyaWJ1dGVOYW1lLCBcIj1cXFwiXCIpLmNvbmNhdChodG1sRXNjYXBlKGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0pLCBcIlxcXCIgXCIpO1xuICB9LCAnJykudHJpbSgpO1xufVxuZnVuY3Rpb24gam9pblN0eWxlcyhzdHlsZXMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHN0eWxlcyB8fCB7fSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHN0eWxlTmFtZSkge1xuICAgIHJldHVybiBhY2MgKyBcIlwiLmNvbmNhdChzdHlsZU5hbWUsIFwiOiBcIikuY29uY2F0KHN0eWxlc1tzdHlsZU5hbWVdLnRyaW0oKSwgXCI7XCIpO1xuICB9LCAnJyk7XG59XG5mdW5jdGlvbiB0cmFuc2Zvcm1Jc01lYW5pbmdmdWwodHJhbnNmb3JtKSB7XG4gIHJldHVybiB0cmFuc2Zvcm0uc2l6ZSAhPT0gbWVhbmluZ2xlc3NUcmFuc2Zvcm0uc2l6ZSB8fCB0cmFuc2Zvcm0ueCAhPT0gbWVhbmluZ2xlc3NUcmFuc2Zvcm0ueCB8fCB0cmFuc2Zvcm0ueSAhPT0gbWVhbmluZ2xlc3NUcmFuc2Zvcm0ueSB8fCB0cmFuc2Zvcm0ucm90YXRlICE9PSBtZWFuaW5nbGVzc1RyYW5zZm9ybS5yb3RhdGUgfHwgdHJhbnNmb3JtLmZsaXBYIHx8IHRyYW5zZm9ybS5mbGlwWTtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybUZvclN2ZyhfcmVmKSB7XG4gIHZhciB0cmFuc2Zvcm0gPSBfcmVmLnRyYW5zZm9ybSxcbiAgICAgIGNvbnRhaW5lcldpZHRoID0gX3JlZi5jb250YWluZXJXaWR0aCxcbiAgICAgIGljb25XaWR0aCA9IF9yZWYuaWNvbldpZHRoO1xuICB2YXIgb3V0ZXIgPSB7XG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIi5jb25jYXQoY29udGFpbmVyV2lkdGggLyAyLCBcIiAyNTYpXCIpXG4gIH07XG4gIHZhciBpbm5lclRyYW5zbGF0ZSA9IFwidHJhbnNsYXRlKFwiLmNvbmNhdCh0cmFuc2Zvcm0ueCAqIDMyLCBcIiwgXCIpLmNvbmNhdCh0cmFuc2Zvcm0ueSAqIDMyLCBcIikgXCIpO1xuICB2YXIgaW5uZXJTY2FsZSA9IFwic2NhbGUoXCIuY29uY2F0KHRyYW5zZm9ybS5zaXplIC8gMTYgKiAodHJhbnNmb3JtLmZsaXBYID8gLTEgOiAxKSwgXCIsIFwiKS5jb25jYXQodHJhbnNmb3JtLnNpemUgLyAxNiAqICh0cmFuc2Zvcm0uZmxpcFkgPyAtMSA6IDEpLCBcIikgXCIpO1xuICB2YXIgaW5uZXJSb3RhdGUgPSBcInJvdGF0ZShcIi5jb25jYXQodHJhbnNmb3JtLnJvdGF0ZSwgXCIgMCAwKVwiKTtcbiAgdmFyIGlubmVyID0ge1xuICAgIHRyYW5zZm9ybTogXCJcIi5jb25jYXQoaW5uZXJUcmFuc2xhdGUsIFwiIFwiKS5jb25jYXQoaW5uZXJTY2FsZSwgXCIgXCIpLmNvbmNhdChpbm5lclJvdGF0ZSlcbiAgfTtcbiAgdmFyIHBhdGggPSB7XG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIi5jb25jYXQoaWNvbldpZHRoIC8gMiAqIC0xLCBcIiAtMjU2KVwiKVxuICB9O1xuICByZXR1cm4ge1xuICAgIG91dGVyOiBvdXRlcixcbiAgICBpbm5lcjogaW5uZXIsXG4gICAgcGF0aDogcGF0aFxuICB9O1xufVxuZnVuY3Rpb24gdHJhbnNmb3JtRm9yQ3NzKF9yZWYyKSB7XG4gIHZhciB0cmFuc2Zvcm0gPSBfcmVmMi50cmFuc2Zvcm0sXG4gICAgICBfcmVmMiR3aWR0aCA9IF9yZWYyLndpZHRoLFxuICAgICAgd2lkdGggPSBfcmVmMiR3aWR0aCA9PT0gdm9pZCAwID8gVU5JVFNfSU5fR1JJRCA6IF9yZWYyJHdpZHRoLFxuICAgICAgX3JlZjIkaGVpZ2h0ID0gX3JlZjIuaGVpZ2h0LFxuICAgICAgaGVpZ2h0ID0gX3JlZjIkaGVpZ2h0ID09PSB2b2lkIDAgPyBVTklUU19JTl9HUklEIDogX3JlZjIkaGVpZ2h0LFxuICAgICAgX3JlZjIkc3RhcnRDZW50ZXJlZCA9IF9yZWYyLnN0YXJ0Q2VudGVyZWQsXG4gICAgICBzdGFydENlbnRlcmVkID0gX3JlZjIkc3RhcnRDZW50ZXJlZCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmMiRzdGFydENlbnRlcmVkO1xuICB2YXIgdmFsID0gJyc7XG5cbiAgaWYgKHN0YXJ0Q2VudGVyZWQgJiYgSVNfSUUpIHtcbiAgICB2YWwgKz0gXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS54IC8gZCAtIHdpZHRoIC8gMiwgXCJlbSwgXCIpLmNvbmNhdCh0cmFuc2Zvcm0ueSAvIGQgLSBoZWlnaHQgLyAyLCBcImVtKSBcIik7XG4gIH0gZWxzZSBpZiAoc3RhcnRDZW50ZXJlZCkge1xuICAgIHZhbCArPSBcInRyYW5zbGF0ZShjYWxjKC01MCUgKyBcIi5jb25jYXQodHJhbnNmb3JtLnggLyBkLCBcImVtKSwgY2FsYygtNTAlICsgXCIpLmNvbmNhdCh0cmFuc2Zvcm0ueSAvIGQsIFwiZW0pKSBcIik7XG4gIH0gZWxzZSB7XG4gICAgdmFsICs9IFwidHJhbnNsYXRlKFwiLmNvbmNhdCh0cmFuc2Zvcm0ueCAvIGQsIFwiZW0sIFwiKS5jb25jYXQodHJhbnNmb3JtLnkgLyBkLCBcImVtKSBcIik7XG4gIH1cblxuICB2YWwgKz0gXCJzY2FsZShcIi5jb25jYXQodHJhbnNmb3JtLnNpemUgLyBkICogKHRyYW5zZm9ybS5mbGlwWCA/IC0xIDogMSksIFwiLCBcIikuY29uY2F0KHRyYW5zZm9ybS5zaXplIC8gZCAqICh0cmFuc2Zvcm0uZmxpcFkgPyAtMSA6IDEpLCBcIikgXCIpO1xuICB2YWwgKz0gXCJyb3RhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS5yb3RhdGUsIFwiZGVnKSBcIik7XG4gIHJldHVybiB2YWw7XG59XG5cbnZhciBiYXNlU3R5bGVzID0gXCI6cm9vdCwgOmhvc3Qge1xcbiAgLS1mYS1mb250LXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xIFxcXCJGb250IEF3ZXNvbWUgNiBTb2xpZFxcXCI7XFxuICAtLWZhLWZvbnQtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSBcXFwiRm9udCBBd2Vzb21lIDYgUmVndWxhclxcXCI7XFxuICAtLWZhLWZvbnQtbGlnaHQ6IG5vcm1hbCAzMDAgMWVtLzEgXFxcIkZvbnQgQXdlc29tZSA2IExpZ2h0XFxcIjtcXG4gIC0tZmEtZm9udC10aGluOiBub3JtYWwgMTAwIDFlbS8xIFxcXCJGb250IEF3ZXNvbWUgNiBUaGluXFxcIjtcXG4gIC0tZmEtZm9udC1kdW90b25lOiBub3JtYWwgOTAwIDFlbS8xIFxcXCJGb250IEF3ZXNvbWUgNiBEdW90b25lXFxcIjtcXG4gIC0tZmEtZm9udC1icmFuZHM6IG5vcm1hbCA0MDAgMWVtLzEgXFxcIkZvbnQgQXdlc29tZSA2IEJyYW5kc1xcXCI7XFxufVxcblxcbnN2Zzpub3QoOnJvb3QpLnN2Zy1pbmxpbmUtLWZhLCBzdmc6bm90KDpob3N0KS5zdmctaW5saW5lLS1mYSB7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbn1cXG5cXG4uc3ZnLWlubGluZS0tZmEge1xcbiAgZGlzcGxheTogdmFyKC0tZmEtZGlzcGxheSwgaW5saW5lLWJsb2NrKTtcXG4gIGhlaWdodDogMWVtO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS0yeHMge1xcbiAgdmVydGljYWwtYWxpZ246IDAuMWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEteHMge1xcbiAgdmVydGljYWwtYWxpZ246IDBlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXNtIHtcXG4gIHZlcnRpY2FsLWFsaWduOiAtMC4wNzE0Mjg1NzA1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS1sZyB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMmVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEteGwge1xcbiAgdmVydGljYWwtYWxpZ246IC0wLjI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS0yeGwge1xcbiAgdmVydGljYWwtYWxpZ246IC0wLjMxMjVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXB1bGwtbGVmdCB7XFxuICBtYXJnaW4tcmlnaHQ6IHZhcigtLWZhLXB1bGwtbWFyZ2luLCAwLjNlbSk7XFxuICB3aWR0aDogYXV0bztcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXB1bGwtcmlnaHQge1xcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLWZhLXB1bGwtbWFyZ2luLCAwLjNlbSk7XFxuICB3aWR0aDogYXV0bztcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLWxpIHtcXG4gIHdpZHRoOiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKTtcXG4gIHRvcDogMC4yNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtZncge1xcbiAgd2lkdGg6IHZhcigtLWZhLWZ3LXdpZHRoLCAxLjI1ZW0pO1xcbn1cXG5cXG4uZmEtbGF5ZXJzIHN2Zy5zdmctaW5saW5lLS1mYSB7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IDA7XFxufVxcblxcbi5mYS1sYXllcnMtY291bnRlciwgLmZhLWxheWVycy10ZXh0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuXFxuLmZhLWxheWVycyB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBoZWlnaHQ6IDFlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTtcXG4gIHdpZHRoOiAxZW07XFxufVxcbi5mYS1sYXllcnMgc3ZnLnN2Zy1pbmxpbmUtLWZhIHtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcXG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcXG59XFxuXFxuLmZhLWxheWVycy10ZXh0IHtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRvcDogNTAlO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XFxuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XFxufVxcblxcbi5mYS1sYXllcnMtY291bnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mYS1jb3VudGVyLWJhY2tncm91bmQtY29sb3IsICNmZjI1M2EpO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tZmEtY291bnRlci1ib3JkZXItcmFkaXVzLCAxZW0pO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGNvbG9yOiB2YXIoLS1mYS1pbnZlcnNlLCAjZmZmKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1mYS1jb3VudGVyLWxpbmUtaGVpZ2h0LCAxKTtcXG4gIG1heC13aWR0aDogdmFyKC0tZmEtY291bnRlci1tYXgtd2lkdGgsIDVlbSk7XFxuICBtaW4td2lkdGg6IHZhcigtLWZhLWNvdW50ZXItbWluLXdpZHRoLCAxLjVlbSk7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcGFkZGluZzogdmFyKC0tZmEtY291bnRlci1wYWRkaW5nLCAwLjI1ZW0gMC41ZW0pO1xcbiAgcmlnaHQ6IHZhcigtLWZhLXJpZ2h0LCAwKTtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgdG9wOiB2YXIoLS1mYS10b3AsIDApO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWNvdW50ZXItc2NhbGUsIDAuMjUpKTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1jb3VudGVyLXNjYWxlLCAwLjI1KSk7XFxuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDtcXG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIHJpZ2h0O1xcbn1cXG5cXG4uZmEtbGF5ZXJzLWJvdHRvbS1yaWdodCB7XFxuICBib3R0b206IHZhcigtLWZhLWJvdHRvbSwgMCk7XFxuICByaWdodDogdmFyKC0tZmEtcmlnaHQsIDApO1xcbiAgdG9wOiBhdXRvO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gcmlnaHQ7XFxuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcXG59XFxuXFxuLmZhLWxheWVycy1ib3R0b20tbGVmdCB7XFxuICBib3R0b206IHZhcigtLWZhLWJvdHRvbSwgMCk7XFxuICBsZWZ0OiB2YXIoLS1mYS1sZWZ0LCAwKTtcXG4gIHJpZ2h0OiBhdXRvO1xcbiAgdG9wOiBhdXRvO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcXG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7XFxufVxcblxcbi5mYS1sYXllcnMtdG9wLXJpZ2h0IHtcXG4gIHRvcDogdmFyKC0tZmEtdG9wLCAwKTtcXG4gIHJpZ2h0OiB2YXIoLS1mYS1yaWdodCwgMCk7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7XFxuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDtcXG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIHJpZ2h0O1xcbn1cXG5cXG4uZmEtbGF5ZXJzLXRvcC1sZWZ0IHtcXG4gIGxlZnQ6IHZhcigtLWZhLWxlZnQsIDApO1xcbiAgcmlnaHQ6IGF1dG87XFxuICB0b3A6IHZhcigtLWZhLXRvcCwgMCk7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7XFxuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0O1xcbiAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcXG59XFxuXFxuLmZhLTF4IHtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbn1cXG5cXG4uZmEtMngge1xcbiAgZm9udC1zaXplOiAyZW07XFxufVxcblxcbi5mYS0zeCB7XFxuICBmb250LXNpemU6IDNlbTtcXG59XFxuXFxuLmZhLTR4IHtcXG4gIGZvbnQtc2l6ZTogNGVtO1xcbn1cXG5cXG4uZmEtNXgge1xcbiAgZm9udC1zaXplOiA1ZW07XFxufVxcblxcbi5mYS02eCB7XFxuICBmb250LXNpemU6IDZlbTtcXG59XFxuXFxuLmZhLTd4IHtcXG4gIGZvbnQtc2l6ZTogN2VtO1xcbn1cXG5cXG4uZmEtOHgge1xcbiAgZm9udC1zaXplOiA4ZW07XFxufVxcblxcbi5mYS05eCB7XFxuICBmb250LXNpemU6IDllbTtcXG59XFxuXFxuLmZhLTEweCB7XFxuICBmb250LXNpemU6IDEwZW07XFxufVxcblxcbi5mYS0yeHMge1xcbiAgZm9udC1zaXplOiAwLjYyNWVtO1xcbiAgbGluZS1oZWlnaHQ6IDAuMWVtO1xcbiAgdmVydGljYWwtYWxpZ246IDAuMjI1ZW07XFxufVxcblxcbi5mYS14cyB7XFxuICBmb250LXNpemU6IDAuNzVlbTtcXG4gIGxpbmUtaGVpZ2h0OiAwLjA4MzMzMzMzMzdlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAwLjEyNWVtO1xcbn1cXG5cXG4uZmEtc20ge1xcbiAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgbGluZS1oZWlnaHQ6IDAuMDcxNDI4NTcxOGVtO1xcbiAgdmVydGljYWwtYWxpZ246IDAuMDUzNTcxNDI5NWVtO1xcbn1cXG5cXG4uZmEtbGcge1xcbiAgZm9udC1zaXplOiAxLjI1ZW07XFxuICBsaW5lLWhlaWdodDogMC4wNWVtO1xcbiAgdmVydGljYWwtYWxpZ246IC0wLjA3NWVtO1xcbn1cXG5cXG4uZmEteGwge1xcbiAgZm9udC1zaXplOiAxLjVlbTtcXG4gIGxpbmUtaGVpZ2h0OiAwLjA0MTY2NjY2ODJlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTtcXG59XFxuXFxuLmZhLTJ4bCB7XFxuICBmb250LXNpemU6IDJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAwLjAzMTI1ZW07XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTg3NWVtO1xcbn1cXG5cXG4uZmEtZncge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2lkdGg6IDEuMjVlbTtcXG59XFxuXFxuLmZhLXVsIHtcXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcXG4gIG1hcmdpbi1sZWZ0OiB2YXIoLS1mYS1saS1tYXJnaW4sIDIuNWVtKTtcXG4gIHBhZGRpbmctbGVmdDogMDtcXG59XFxuLmZhLXVsID4gbGkge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG5cXG4uZmEtbGkge1xcbiAgbGVmdDogY2FsYyh2YXIoLS1mYS1saS13aWR0aCwgMmVtKSAqIC0xKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdpZHRoOiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG5cXG4uZmEtYm9yZGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tZmEtYm9yZGVyLWNvbG9yLCAjZWVlKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWZhLWJvcmRlci1yYWRpdXMsIDAuMWVtKTtcXG4gIGJvcmRlci1zdHlsZTogdmFyKC0tZmEtYm9yZGVyLXN0eWxlLCBzb2xpZCk7XFxuICBib3JkZXItd2lkdGg6IHZhcigtLWZhLWJvcmRlci13aWR0aCwgMC4wOGVtKTtcXG4gIHBhZGRpbmc6IHZhcigtLWZhLWJvcmRlci1wYWRkaW5nLCAwLjJlbSAwLjI1ZW0gMC4xNWVtKTtcXG59XFxuXFxuLmZhLXB1bGwtbGVmdCB7XFxuICBmbG9hdDogbGVmdDtcXG4gIG1hcmdpbi1yaWdodDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTtcXG59XFxuXFxuLmZhLXB1bGwtcmlnaHQge1xcbiAgZmxvYXQ6IHJpZ2h0O1xcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLWZhLXB1bGwtbWFyZ2luLCAwLjNlbSk7XFxufVxcblxcbi5mYS1iZWF0IHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhLWJlYXQ7XFxuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYS1iZWF0O1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMCk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpO1xcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2UtaW4tb3V0KTtcXG4gICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1pbi1vdXQpO1xcbn1cXG5cXG4uZmEtYm91bmNlIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhLWJvdW5jZTtcXG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZhLWJvdW5jZTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDApO1xcbiAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMCk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBjdWJpYy1iZXppZXIoMC4yOCwgMC44NCwgMC40MiwgMSkpO1xcbiAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBjdWJpYy1iZXppZXIoMC4yOCwgMC44NCwgMC40MiwgMSkpO1xcbn1cXG5cXG4uZmEtZmFkZSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYS1mYWRlO1xcbiAgICAgICAgICBhbmltYXRpb24tbmFtZTogZmEtZmFkZTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDApO1xcbiAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMCk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKSk7XFxufVxcblxcbi5mYS1iZWF0LWZhZGUge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmEtYmVhdC1mYWRlO1xcbiAgICAgICAgICBhbmltYXRpb24tbmFtZTogZmEtYmVhdC1mYWRlO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMCk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpO1xcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSkpO1xcbiAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpKTtcXG59XFxuXFxuLmZhLWZsaXAge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmEtZmxpcDtcXG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZhLWZsaXA7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDApO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpO1xcbiAgICAgICAgICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpO1xcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpO1xcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1pbi1vdXQpO1xcbiAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7XFxufVxcblxcbi5mYS1zaGFrZSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYS1zaGFrZTtcXG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZhLXNoYWtlO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMCk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpO1xcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGxpbmVhcik7XFxuICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGxpbmVhcik7XFxufVxcblxcbi5mYS1zcGluIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhLXNwaW47XFxuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYS1zcGluO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMCk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDJzKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDJzKTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpO1xcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGxpbmVhcik7XFxuICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGxpbmVhcik7XFxufVxcblxcbi5mYS1zcGluLXJldmVyc2Uge1xcbiAgLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlO1xcbn1cXG5cXG4uZmEtcHVsc2UsXFxuLmZhLXNwaW4tcHVsc2Uge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmEtc3BpbjtcXG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZhLXNwaW47XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBzdGVwcyg4KSk7XFxuICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIHN0ZXBzKDgpKTtcXG59XFxuXFxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXG4gIC5mYS1iZWF0LFxcbi5mYS1ib3VuY2UsXFxuLmZhLWZhZGUsXFxuLmZhLWJlYXQtZmFkZSxcXG4uZmEtZmxpcCxcXG4uZmEtcHVsc2UsXFxuLmZhLXNoYWtlLFxcbi5mYS1zcGluLFxcbi5mYS1zcGluLXB1bHNlIHtcXG4gICAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC0xbXM7XFxuICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAtMW1zO1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMW1zO1xcbiAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMW1zO1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7XFxuICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTtcXG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XFxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzO1xcbiAgfVxcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmEtYmVhdCB7XFxuICAwJSwgOTAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxuICB9XFxuICA0NSUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYmVhdC1zY2FsZSwgMS4yNSkpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYmVhdC1zY2FsZSwgMS4yNSkpO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGZhLWJlYXQge1xcbiAgMCUsIDkwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xcbiAgfVxcbiAgNDUlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjUpKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjUpKTtcXG4gIH1cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIGZhLWJvdW5jZSB7XFxuICAwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKDApO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG4gIDEwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteCwgMS4xKSwgdmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXksIDAuOSkpIHRyYW5zbGF0ZVkoMCk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteCwgMS4xKSwgdmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXksIDAuOSkpIHRyYW5zbGF0ZVkoMCk7XFxuICB9XFxuICAzMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteCwgMC45KSwgdmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteSwgMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtaGVpZ2h0LCAtMC41ZW0pKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXgsIDAuOSksIHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXksIDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLWhlaWdodCwgLTAuNWVtKSk7XFxuICB9XFxuICA1MCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteCwgMS4wNSksIHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXksIDAuOTUpKSB0cmFuc2xhdGVZKDApO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteCwgMS4wNSksIHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXksIDAuOTUpKSB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbiAgNTclIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLXJlYm91bmQsIC0wLjEyNWVtKSk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1yZWJvdW5kLCAtMC4xMjVlbSkpO1xcbiAgfVxcbiAgNjQlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoMCk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKDApO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYS1ib3VuY2Uge1xcbiAgMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSgwKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoMCk7XFxuICB9XFxuICAxMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXgsIDEuMSksIHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS15LCAwLjkpKSB0cmFuc2xhdGVZKDApO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXgsIDEuMSksIHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS15LCAwLjkpKSB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbiAgMzAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXgsIDAuOSksIHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXksIDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLWhlaWdodCwgLTAuNWVtKSk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS14LCAwLjkpLCB2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS15LCAxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1oZWlnaHQsIC0wLjVlbSkpO1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXgsIDEuMDUpLCB2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS15LCAwLjk1KSkgdHJhbnNsYXRlWSgwKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXgsIDEuMDUpLCB2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS15LCAwLjk1KSkgdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG4gIDU3JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1yZWJvdW5kLCAtMC4xMjVlbSkpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtcmVib3VuZCwgLTAuMTI1ZW0pKTtcXG4gIH1cXG4gIDY0JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKDApO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSgwKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoMCk7XFxuICB9XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBmYS1mYWRlIHtcXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IHZhcigtLWZhLWZhZGUtb3BhY2l0eSwgMC40KTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYS1mYWRlIHtcXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IHZhcigtLWZhLWZhZGUtb3BhY2l0eSwgMC40KTtcXG4gIH1cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIGZhLWJlYXQtZmFkZSB7XFxuICAwJSwgMTAwJSB7XFxuICAgIG9wYWNpdHk6IHZhcigtLWZhLWJlYXQtZmFkZS1vcGFjaXR5LCAwLjQpO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1iZWF0LWZhZGUtc2NhbGUsIDEuMTI1KSk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1iZWF0LWZhZGUtc2NhbGUsIDEuMTI1KSk7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgZmEtYmVhdC1mYWRlIHtcXG4gIDAlLCAxMDAlIHtcXG4gICAgb3BhY2l0eTogdmFyKC0tZmEtYmVhdC1mYWRlLW9wYWNpdHksIDAuNCk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwgMS4xMjUpKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwgMS4xMjUpKTtcXG4gIH1cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIGZhLWZsaXAge1xcbiAgNTAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIHZhcigtLWZhLWZsaXAtYW5nbGUsIC0xODBkZWcpKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIHZhcigtLWZhLWZsaXAtYW5nbGUsIC0xODBkZWcpKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYS1mbGlwIHtcXG4gIDUwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCB2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMTgwZGVnKSk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCB2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMTgwZGVnKSk7XFxuICB9XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBmYS1zaGFrZSB7XFxuICAwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTE1ZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTVkZWcpO1xcbiAgfVxcbiAgNCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNWRlZyk7XFxuICB9XFxuICA4JSwgMjQlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMThkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xOGRlZyk7XFxuICB9XFxuICAxMiUsIDI4JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMThkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4ZGVnKTtcXG4gIH1cXG4gIDE2JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTIyZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMjJkZWcpO1xcbiAgfVxcbiAgMjAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyMmRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMjJkZWcpO1xcbiAgfVxcbiAgMzIlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTJkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMmRlZyk7XFxuICB9XFxuICAzNiUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEyZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMmRlZyk7XFxuICB9XFxuICA0MCUsIDEwMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGZhLXNoYWtlIHtcXG4gIDAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTVkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xNWRlZyk7XFxuICB9XFxuICA0JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTVkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTtcXG4gIH1cXG4gIDglLCAyNCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xOGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTE4ZGVnKTtcXG4gIH1cXG4gIDEyJSwgMjglIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxOGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMThkZWcpO1xcbiAgfVxcbiAgMTYlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMjJkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0yMmRlZyk7XFxuICB9XFxuICAyMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDIyZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMmRlZyk7XFxuICB9XFxuICAzMiUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMmRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEyZGVnKTtcXG4gIH1cXG4gIDM2JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTJkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEyZGVnKTtcXG4gIH1cXG4gIDQwJSwgMTAwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBmYS1zcGluIHtcXG4gIDAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYS1zcGluIHtcXG4gIDAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuLmZhLXJvdGF0ZS05MCB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcbn1cXG5cXG4uZmEtcm90YXRlLTE4MCB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxufVxcblxcbi5mYS1yb3RhdGUtMjcwIHtcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcXG59XFxuXFxuLmZhLWZsaXAtaG9yaXpvbnRhbCB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcXG59XFxuXFxuLmZhLWZsaXAtdmVydGljYWwge1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIC0xKTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAtMSk7XFxufVxcblxcbi5mYS1mbGlwLWJvdGgsXFxuLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2FsIHtcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgtMSwgLTEpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAtMSk7XFxufVxcblxcbi5mYS1yb3RhdGUtYnkge1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1mYS1yb3RhdGUtYW5nbGUsIG5vbmUpKTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tZmEtcm90YXRlLWFuZ2xlLCBub25lKSk7XFxufVxcblxcbi5mYS1zdGFjayB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgaGVpZ2h0OiAyZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMi41ZW07XFxufVxcblxcbi5mYS1zdGFjay0xeCxcXG4uZmEtc3RhY2stMngge1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIG1hcmdpbjogYXV0bztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAwO1xcbiAgdG9wOiAwO1xcbiAgei1pbmRleDogdmFyKC0tZmEtc3RhY2stei1pbmRleCwgYXV0byk7XFxufVxcblxcbi5zdmctaW5saW5lLS1mYS5mYS1zdGFjay0xeCB7XFxuICBoZWlnaHQ6IDFlbTtcXG4gIHdpZHRoOiAxLjI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS1zdGFjay0yeCB7XFxuICBoZWlnaHQ6IDJlbTtcXG4gIHdpZHRoOiAyLjVlbTtcXG59XFxuXFxuLmZhLWludmVyc2Uge1xcbiAgY29sb3I6IHZhcigtLWZhLWludmVyc2UsICNmZmYpO1xcbn1cXG5cXG4uc3Itb25seSxcXG4uZmEtc3Itb25seSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMXB4O1xcbiAgaGVpZ2h0OiAxcHg7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luOiAtMXB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgYm9yZGVyLXdpZHRoOiAwO1xcbn1cXG5cXG4uc3Itb25seS1mb2N1c2FibGU6bm90KDpmb2N1cyksXFxuLmZhLXNyLW9ubHktZm9jdXNhYmxlOm5vdCg6Zm9jdXMpIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiAxcHg7XFxuICBoZWlnaHQ6IDFweDtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW46IC0xcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBib3JkZXItd2lkdGg6IDA7XFxufVxcblxcbi5zdmctaW5saW5lLS1mYSAuZmEtcHJpbWFyeSB7XFxuICBmaWxsOiB2YXIoLS1mYS1wcmltYXJ5LWNvbG9yLCBjdXJyZW50Q29sb3IpO1xcbiAgb3BhY2l0eTogdmFyKC0tZmEtcHJpbWFyeS1vcGFjaXR5LCAxKTtcXG59XFxuXFxuLnN2Zy1pbmxpbmUtLWZhIC5mYS1zZWNvbmRhcnkge1xcbiAgZmlsbDogdmFyKC0tZmEtc2Vjb25kYXJ5LWNvbG9yLCBjdXJyZW50Q29sb3IpO1xcbiAgb3BhY2l0eTogdmFyKC0tZmEtc2Vjb25kYXJ5LW9wYWNpdHksIDAuNCk7XFxufVxcblxcbi5zdmctaW5saW5lLS1mYS5mYS1zd2FwLW9wYWNpdHkgLmZhLXByaW1hcnkge1xcbiAgb3BhY2l0eTogdmFyKC0tZmEtc2Vjb25kYXJ5LW9wYWNpdHksIDAuNCk7XFxufVxcblxcbi5zdmctaW5saW5lLS1mYS5mYS1zd2FwLW9wYWNpdHkgLmZhLXNlY29uZGFyeSB7XFxuICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpO1xcbn1cXG5cXG4uc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtcHJpbWFyeSxcXG4uc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtc2Vjb25kYXJ5IHtcXG4gIGZpbGw6IGJsYWNrO1xcbn1cXG5cXG4uZmFkLmZhLWludmVyc2UsXFxuLmZhLWR1b3RvbmUuZmEtaW52ZXJzZSB7XFxuICBjb2xvcjogdmFyKC0tZmEtaW52ZXJzZSwgI2ZmZik7XFxufVwiO1xuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIHZhciBkZnAgPSBERUZBVUxUX0ZBTUlMWV9QUkVGSVg7XG4gIHZhciBkcmMgPSBERUZBVUxUX1JFUExBQ0VNRU5UX0NMQVNTO1xuICB2YXIgZnAgPSBjb25maWcuZmFtaWx5UHJlZml4O1xuICB2YXIgcmMgPSBjb25maWcucmVwbGFjZW1lbnRDbGFzcztcbiAgdmFyIHMgPSBiYXNlU3R5bGVzO1xuXG4gIGlmIChmcCAhPT0gZGZwIHx8IHJjICE9PSBkcmMpIHtcbiAgICB2YXIgZFBhdHQgPSBuZXcgUmVnRXhwKFwiXFxcXC5cIi5jb25jYXQoZGZwLCBcIlxcXFwtXCIpLCAnZycpO1xuICAgIHZhciBjdXN0b21Qcm9wUGF0dCA9IG5ldyBSZWdFeHAoXCJcXFxcLS1cIi5jb25jYXQoZGZwLCBcIlxcXFwtXCIpLCAnZycpO1xuICAgIHZhciByUGF0dCA9IG5ldyBSZWdFeHAoXCJcXFxcLlwiLmNvbmNhdChkcmMpLCAnZycpO1xuICAgIHMgPSBzLnJlcGxhY2UoZFBhdHQsIFwiLlwiLmNvbmNhdChmcCwgXCItXCIpKS5yZXBsYWNlKGN1c3RvbVByb3BQYXR0LCBcIi0tXCIuY29uY2F0KGZwLCBcIi1cIikpLnJlcGxhY2UoclBhdHQsIFwiLlwiLmNvbmNhdChyYykpO1xuICB9XG5cbiAgcmV0dXJuIHM7XG59XG5cbnZhciBfY3NzSW5zZXJ0ZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gZW5zdXJlQ3NzKCkge1xuICBpZiAoY29uZmlnLmF1dG9BZGRDc3MgJiYgIV9jc3NJbnNlcnRlZCkge1xuICAgIGluc2VydENzcyhjc3MoKSk7XG4gICAgX2Nzc0luc2VydGVkID0gdHJ1ZTtcbiAgfVxufVxuXG52YXIgSW5qZWN0Q1NTID0ge1xuICBtaXhvdXQ6IGZ1bmN0aW9uIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZG9tOiB7XG4gICAgICAgIGNzczogY3NzLFxuICAgICAgICBpbnNlcnRDc3M6IGVuc3VyZUNzc1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGhvb2tzOiBmdW5jdGlvbiBob29rcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uOiBmdW5jdGlvbiBiZWZvcmVET01FbGVtZW50Q3JlYXRpb24oKSB7XG4gICAgICAgIGVuc3VyZUNzcygpO1xuICAgICAgfSxcbiAgICAgIGJlZm9yZUkyc3ZnOiBmdW5jdGlvbiBiZWZvcmVJMnN2ZygpIHtcbiAgICAgICAgZW5zdXJlQ3NzKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufTtcblxudmFyIHcgPSBXSU5ET1cgfHwge307XG5pZiAoIXdbTkFNRVNQQUNFX0lERU5USUZJRVJdKSB3W05BTUVTUEFDRV9JREVOVElGSUVSXSA9IHt9O1xuaWYgKCF3W05BTUVTUEFDRV9JREVOVElGSUVSXS5zdHlsZXMpIHdbTkFNRVNQQUNFX0lERU5USUZJRVJdLnN0eWxlcyA9IHt9O1xuaWYgKCF3W05BTUVTUEFDRV9JREVOVElGSUVSXS5ob29rcykgd1tOQU1FU1BBQ0VfSURFTlRJRklFUl0uaG9va3MgPSB7fTtcbmlmICghd1tOQU1FU1BBQ0VfSURFTlRJRklFUl0uc2hpbXMpIHdbTkFNRVNQQUNFX0lERU5USUZJRVJdLnNoaW1zID0gW107XG52YXIgbmFtZXNwYWNlID0gd1tOQU1FU1BBQ0VfSURFTlRJRklFUl07XG5cbnZhciBmdW5jdGlvbnMgPSBbXTtcblxudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gbGlzdGVuZXIoKSB7XG4gIERPQ1VNRU5ULnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBsaXN0ZW5lcik7XG4gIGxvYWRlZCA9IDE7XG4gIGZ1bmN0aW9ucy5tYXAoZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0pO1xufTtcblxudmFyIGxvYWRlZCA9IGZhbHNlO1xuXG5pZiAoSVNfRE9NKSB7XG4gIGxvYWRlZCA9IChET0NVTUVOVC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgPyAvXmxvYWRlZHxeYy8gOiAvXmxvYWRlZHxeaXxeYy8pLnRlc3QoRE9DVU1FTlQucmVhZHlTdGF0ZSk7XG4gIGlmICghbG9hZGVkKSBET0NVTUVOVC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgbGlzdGVuZXIpO1xufVxuXG5mdW5jdGlvbiBkb21yZWFkeSAoZm4pIHtcbiAgaWYgKCFJU19ET00pIHJldHVybjtcbiAgbG9hZGVkID8gc2V0VGltZW91dChmbiwgMCkgOiBmdW5jdGlvbnMucHVzaChmbik7XG59XG5cbmZ1bmN0aW9uIHRvSHRtbChhYnN0cmFjdE5vZGVzKSB7XG4gIHZhciB0YWcgPSBhYnN0cmFjdE5vZGVzLnRhZyxcbiAgICAgIF9hYnN0cmFjdE5vZGVzJGF0dHJpYiA9IGFic3RyYWN0Tm9kZXMuYXR0cmlidXRlcyxcbiAgICAgIGF0dHJpYnV0ZXMgPSBfYWJzdHJhY3ROb2RlcyRhdHRyaWIgPT09IHZvaWQgMCA/IHt9IDogX2Fic3RyYWN0Tm9kZXMkYXR0cmliLFxuICAgICAgX2Fic3RyYWN0Tm9kZXMkY2hpbGRyID0gYWJzdHJhY3ROb2Rlcy5jaGlsZHJlbixcbiAgICAgIGNoaWxkcmVuID0gX2Fic3RyYWN0Tm9kZXMkY2hpbGRyID09PSB2b2lkIDAgPyBbXSA6IF9hYnN0cmFjdE5vZGVzJGNoaWxkcjtcblxuICBpZiAodHlwZW9mIGFic3RyYWN0Tm9kZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGh0bWxFc2NhcGUoYWJzdHJhY3ROb2Rlcyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwiPFwiLmNvbmNhdCh0YWcsIFwiIFwiKS5jb25jYXQoam9pbkF0dHJpYnV0ZXMoYXR0cmlidXRlcyksIFwiPlwiKS5jb25jYXQoY2hpbGRyZW4ubWFwKHRvSHRtbCkuam9pbignJyksIFwiPC9cIikuY29uY2F0KHRhZywgXCI+XCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGljb25Gcm9tTWFwcGluZyhtYXBwaW5nLCBwcmVmaXgsIGljb25OYW1lKSB7XG4gIGlmIChtYXBwaW5nICYmIG1hcHBpbmdbcHJlZml4XSAmJiBtYXBwaW5nW3ByZWZpeF1baWNvbk5hbWVdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByZWZpeDogcHJlZml4LFxuICAgICAgaWNvbk5hbWU6IGljb25OYW1lLFxuICAgICAgaWNvbjogbWFwcGluZ1twcmVmaXhdW2ljb25OYW1lXVxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBoZWxwZXIgdG8gYmluZCBhIGZ1bmN0aW9uIGtub3duIHRvIGhhdmUgNCBhcmd1bWVudHNcbiAqIHRvIGEgZ2l2ZW4gY29udGV4dC5cbiAqL1xuXG52YXIgYmluZEludGVybmFsNCA9IGZ1bmN0aW9uIGJpbmRJbnRlcm5hbDQoZnVuYywgdGhpc0NvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQ29udGV4dCwgYSwgYiwgYywgZCk7XG4gIH07XG59O1xuXG4vKipcbiAqICMgUmVkdWNlXG4gKlxuICogQSBmYXN0IG9iamVjdCBgLnJlZHVjZSgpYCBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgc3ViamVjdCAgICAgIFRoZSBvYmplY3QgdG8gcmVkdWNlIG92ZXIuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gZm4gICAgICAgICAgIFRoZSByZWR1Y2VyIGZ1bmN0aW9uLlxuICogQHBhcmFtICB7bWl4ZWR9ICAgIGluaXRpYWxWYWx1ZSBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIHJlZHVjZXIsIGRlZmF1bHRzIHRvIHN1YmplY3RbMF0uXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgdGhpc0NvbnRleHQgIFRoZSBjb250ZXh0IGZvciB0aGUgcmVkdWNlci5cbiAqIEByZXR1cm4ge21peGVkfSAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHJlc3VsdC5cbiAqL1xuXG5cbnZhciByZWR1Y2UgPSBmdW5jdGlvbiBmYXN0UmVkdWNlT2JqZWN0KHN1YmplY3QsIGZuLCBpbml0aWFsVmFsdWUsIHRoaXNDb250ZXh0KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc3ViamVjdCksXG4gICAgICBsZW5ndGggPSBrZXlzLmxlbmd0aCxcbiAgICAgIGl0ZXJhdG9yID0gdGhpc0NvbnRleHQgIT09IHVuZGVmaW5lZCA/IGJpbmRJbnRlcm5hbDQoZm4sIHRoaXNDb250ZXh0KSA6IGZuLFxuICAgICAgaSxcbiAgICAgIGtleSxcbiAgICAgIHJlc3VsdDtcblxuICBpZiAoaW5pdGlhbFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICBpID0gMTtcbiAgICByZXN1bHQgPSBzdWJqZWN0W2tleXNbMF1dO1xuICB9IGVsc2Uge1xuICAgIGkgPSAwO1xuICAgIHJlc3VsdCA9IGluaXRpYWxWYWx1ZTtcbiAgfVxuXG4gIGZvciAoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ldO1xuICAgIHJlc3VsdCA9IGl0ZXJhdG9yKHJlc3VsdCwgc3ViamVjdFtrZXldLCBrZXksIHN1YmplY3QpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogdWNzMmRlY29kZSgpIGFuZCBjb2RlUG9pbnRBdCgpIGFyZSBib3RoIHdvcmtzIG9mIE1hdGhpYXMgQnluZW5zIGFuZCBsaWNlbnNlZCB1bmRlciBNSVRcbiAqXG4gKiBDb3B5cmlnaHQgTWF0aGlhcyBCeW5lbnMgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS8+XG5cbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZ1xuICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4gKiBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbiAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0b1xuICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvXG4gKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlXG4gKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCxcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkRcbiAqIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT05cbiAqIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTlxuICogV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4gKi9cbmZ1bmN0aW9uIHVjczJkZWNvZGUoc3RyaW5nKSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgdmFyIGNvdW50ZXIgPSAwO1xuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cbiAgICBpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXG4gICAgICBpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICAgICAgb3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHZhbHVlKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gdG9IZXgodW5pY29kZSkge1xuICB2YXIgZGVjb2RlZCA9IHVjczJkZWNvZGUodW5pY29kZSk7XG4gIHJldHVybiBkZWNvZGVkLmxlbmd0aCA9PT0gMSA/IGRlY29kZWRbMF0udG9TdHJpbmcoMTYpIDogbnVsbDtcbn1cbmZ1bmN0aW9uIGNvZGVQb2ludEF0KHN0cmluZywgaW5kZXgpIHtcbiAgdmFyIHNpemUgPSBzdHJpbmcubGVuZ3RoO1xuICB2YXIgZmlyc3QgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gIHZhciBzZWNvbmQ7XG5cbiAgaWYgKGZpcnN0ID49IDB4RDgwMCAmJiBmaXJzdCA8PSAweERCRkYgJiYgc2l6ZSA+IGluZGV4ICsgMSkge1xuICAgIHNlY29uZCA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4ICsgMSk7XG5cbiAgICBpZiAoc2Vjb25kID49IDB4REMwMCAmJiBzZWNvbmQgPD0gMHhERkZGKSB7XG4gICAgICByZXR1cm4gKGZpcnN0IC0gMHhEODAwKSAqIDB4NDAwICsgc2Vjb25kIC0gMHhEQzAwICsgMHgxMDAwMDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmlyc3Q7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUljb25zKGljb25zKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhpY29ucykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGljb25OYW1lKSB7XG4gICAgdmFyIGljb24gPSBpY29uc1tpY29uTmFtZV07XG4gICAgdmFyIGV4cGFuZGVkID0gISFpY29uLmljb247XG5cbiAgICBpZiAoZXhwYW5kZWQpIHtcbiAgICAgIGFjY1tpY29uLmljb25OYW1lXSA9IGljb24uaWNvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjW2ljb25OYW1lXSA9IGljb247XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVJY29ucyhwcmVmaXgsIGljb25zKSB7XG4gIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICB2YXIgX3BhcmFtcyRza2lwSG9va3MgPSBwYXJhbXMuc2tpcEhvb2tzLFxuICAgICAgc2tpcEhvb2tzID0gX3BhcmFtcyRza2lwSG9va3MgPT09IHZvaWQgMCA/IGZhbHNlIDogX3BhcmFtcyRza2lwSG9va3M7XG4gIHZhciBub3JtYWxpemVkID0gbm9ybWFsaXplSWNvbnMoaWNvbnMpO1xuXG4gIGlmICh0eXBlb2YgbmFtZXNwYWNlLmhvb2tzLmFkZFBhY2sgPT09ICdmdW5jdGlvbicgJiYgIXNraXBIb29rcykge1xuICAgIG5hbWVzcGFjZS5ob29rcy5hZGRQYWNrKHByZWZpeCwgbm9ybWFsaXplSWNvbnMoaWNvbnMpKTtcbiAgfSBlbHNlIHtcbiAgICBuYW1lc3BhY2Uuc3R5bGVzW3ByZWZpeF0gPSBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgbmFtZXNwYWNlLnN0eWxlc1twcmVmaXhdIHx8IHt9KSwgbm9ybWFsaXplZCk7XG4gIH1cbiAgLyoqXG4gICAqIEZvbnQgQXdlc29tZSA0IHVzZWQgdGhlIHByZWZpeCBvZiBgZmFgIGZvciBhbGwgaWNvbnMuIFdpdGggdGhlIGludHJvZHVjdGlvblxuICAgKiBvZiBuZXcgc3R5bGVzIHdlIG5lZWRlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlbS4gUHJlZml4IGBmYWAgaXMgbm93IGFuIGFsaWFzXG4gICAqIGZvciBgZmFzYCBzbyB3ZSdsbCBlYXNlIHRoZSB1cGdyYWRlIHByb2Nlc3MgZm9yIG91ciB1c2VycyBieSBhdXRvbWF0aWNhbGx5IGRlZmluaW5nXG4gICAqIHRoaXMgYXMgd2VsbC5cbiAgICovXG5cblxuICBpZiAocHJlZml4ID09PSAnZmFzJykge1xuICAgIGRlZmluZUljb25zKCdmYScsIGljb25zKTtcbiAgfVxufVxuXG52YXIgZHVvdG9uZVBhdGhSZSA9IFsvKiNfX1BVUkVfXyovX3dyYXBSZWdFeHAoL3BhdGggZD1cIigoPzooPyFcIilbXFxzXFxTXSkrKVwiLipwYXRoIGQ9XCIoKD86KD8hXCIpW1xcc1xcU10pKylcIi8sIHtcbiAgZDE6IDEsXG4gIGQyOiAyXG59KSwgLyojX19QVVJFX18qL193cmFwUmVnRXhwKC9wYXRoIGNsYXNzPVwiKCg/Oig/IVwiKVtcXHNcXFNdKSspXCIuKmQ9XCIoKD86KD8hXCIpW1xcc1xcU10pKylcIi4qcGF0aCBjbGFzcz1cIigoPzooPyFcIilbXFxzXFxTXSkrKVwiLipkPVwiKCg/Oig/IVwiKVtcXHNcXFNdKSspXCIvLCB7XG4gIGNsczE6IDEsXG4gIGQxOiAyLFxuICBjbHMyOiAzLFxuICBkMjogNFxufSksIC8qI19fUFVSRV9fKi9fd3JhcFJlZ0V4cCgvcGF0aCBjbGFzcz1cIigoPzooPyFcIilbXFxzXFxTXSkrKVwiLipkPVwiKCg/Oig/IVwiKVtcXHNcXFNdKSspXCIvLCB7XG4gIGNsczE6IDEsXG4gIGQxOiAyXG59KV07XG5cbnZhciBzdHlsZXMgPSBuYW1lc3BhY2Uuc3R5bGVzLFxuICAgIHNoaW1zID0gbmFtZXNwYWNlLnNoaW1zO1xudmFyIExPTkdfU1RZTEUgPSBPYmplY3QudmFsdWVzKFBSRUZJWF9UT19MT05HX1NUWUxFKTtcbnZhciBfZGVmYXVsdFVzYWJsZVByZWZpeCA9IG51bGw7XG52YXIgX2J5VW5pY29kZSA9IHt9O1xudmFyIF9ieUxpZ2F0dXJlID0ge307XG52YXIgX2J5T2xkTmFtZSA9IHt9O1xudmFyIF9ieU9sZFVuaWNvZGUgPSB7fTtcbnZhciBfYnlBbGlhcyA9IHt9O1xudmFyIFBSRUZJWEVTID0gT2JqZWN0LmtleXMoUFJFRklYX1RPX1NUWUxFKTtcblxuZnVuY3Rpb24gaXNSZXNlcnZlZChuYW1lKSB7XG4gIHJldHVybiB+UkVTRVJWRURfQ0xBU1NFUy5pbmRleE9mKG5hbWUpO1xufVxuXG5mdW5jdGlvbiBnZXRJY29uTmFtZShmYW1pbHlQcmVmaXgsIGNscykge1xuICB2YXIgcGFydHMgPSBjbHMuc3BsaXQoJy0nKTtcbiAgdmFyIHByZWZpeCA9IHBhcnRzWzBdO1xuICB2YXIgaWNvbk5hbWUgPSBwYXJ0cy5zbGljZSgxKS5qb2luKCctJyk7XG5cbiAgaWYgKHByZWZpeCA9PT0gZmFtaWx5UHJlZml4ICYmIGljb25OYW1lICE9PSAnJyAmJiAhaXNSZXNlcnZlZChpY29uTmFtZSkpIHtcbiAgICByZXR1cm4gaWNvbk5hbWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbnZhciBidWlsZCA9IGZ1bmN0aW9uIGJ1aWxkKCkge1xuICB2YXIgbG9va3VwID0gZnVuY3Rpb24gbG9va3VwKHJlZHVjZXIpIHtcbiAgICByZXR1cm4gcmVkdWNlKHN0eWxlcywgZnVuY3Rpb24gKG8sIHN0eWxlLCBwcmVmaXgpIHtcbiAgICAgIG9bcHJlZml4XSA9IHJlZHVjZShzdHlsZSwgcmVkdWNlciwge30pO1xuICAgICAgcmV0dXJuIG87XG4gICAgfSwge30pO1xuICB9O1xuXG4gIF9ieVVuaWNvZGUgPSBsb29rdXAoZnVuY3Rpb24gKGFjYywgaWNvbiwgaWNvbk5hbWUpIHtcbiAgICBpZiAoaWNvblszXSkge1xuICAgICAgYWNjW2ljb25bM11dID0gaWNvbk5hbWU7XG4gICAgfVxuXG4gICAgaWYgKGljb25bMl0pIHtcbiAgICAgIHZhciBhbGlhc2VzID0gaWNvblsyXS5maWx0ZXIoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBhID09PSAnbnVtYmVyJztcbiAgICAgIH0pO1xuICAgICAgYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgICAgICBhY2NbYWxpYXMudG9TdHJpbmcoMTYpXSA9IGljb25OYW1lO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSk7XG4gIF9ieUxpZ2F0dXJlID0gbG9va3VwKGZ1bmN0aW9uIChhY2MsIGljb24sIGljb25OYW1lKSB7XG4gICAgYWNjW2ljb25OYW1lXSA9IGljb25OYW1lO1xuXG4gICAgaWYgKGljb25bMl0pIHtcbiAgICAgIHZhciBhbGlhc2VzID0gaWNvblsyXS5maWx0ZXIoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBhID09PSAnc3RyaW5nJztcbiAgICAgIH0pO1xuICAgICAgYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgICAgICBhY2NbYWxpYXNdID0gaWNvbk5hbWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9KTtcbiAgX2J5QWxpYXMgPSBsb29rdXAoZnVuY3Rpb24gKGFjYywgaWNvbiwgaWNvbk5hbWUpIHtcbiAgICB2YXIgYWxpYXNlcyA9IGljb25bMl07XG4gICAgYWNjW2ljb25OYW1lXSA9IGljb25OYW1lO1xuICAgIGFsaWFzZXMuZm9yRWFjaChmdW5jdGlvbiAoYWxpYXMpIHtcbiAgICAgIGFjY1thbGlhc10gPSBpY29uTmFtZTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjO1xuICB9KTsgLy8gSWYgd2UgaGF2ZSBhIEtpdCwgd2UgY2FuJ3QgZGV0ZXJtaW5lIGlmIHJlZ3VsYXIgaXMgYXZhaWxhYmxlIHNpbmNlIHdlXG4gIC8vIGNvdWxkIGJlIGF1dG8tZmV0Y2hpbmcgaXQuIFdlJ2xsIGhhdmUgdG8gYXNzdW1lIHRoYXQgaXQgaXMgYXZhaWxhYmxlLlxuXG4gIHZhciBoYXNSZWd1bGFyID0gJ2ZhcicgaW4gc3R5bGVzIHx8IGNvbmZpZy5hdXRvRmV0Y2hTdmc7XG4gIHZhciBzaGltTG9va3VwcyA9IHJlZHVjZShzaGltcywgZnVuY3Rpb24gKGFjYywgc2hpbSkge1xuICAgIHZhciBtYXliZU5hbWVNYXliZVVuaWNvZGUgPSBzaGltWzBdO1xuICAgIHZhciBwcmVmaXggPSBzaGltWzFdO1xuICAgIHZhciBpY29uTmFtZSA9IHNoaW1bMl07XG5cbiAgICBpZiAocHJlZml4ID09PSAnZmFyJyAmJiAhaGFzUmVndWxhcikge1xuICAgICAgcHJlZml4ID0gJ2Zhcyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtYXliZU5hbWVNYXliZVVuaWNvZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBhY2MubmFtZXNbbWF5YmVOYW1lTWF5YmVVbmljb2RlXSA9IHtcbiAgICAgICAgcHJlZml4OiBwcmVmaXgsXG4gICAgICAgIGljb25OYW1lOiBpY29uTmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1heWJlTmFtZU1heWJlVW5pY29kZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGFjYy51bmljb2Rlc1ttYXliZU5hbWVNYXliZVVuaWNvZGUudG9TdHJpbmcoMTYpXSA9IHtcbiAgICAgICAgcHJlZml4OiBwcmVmaXgsXG4gICAgICAgIGljb25OYW1lOiBpY29uTmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7XG4gICAgbmFtZXM6IHt9LFxuICAgIHVuaWNvZGVzOiB7fVxuICB9KTtcbiAgX2J5T2xkTmFtZSA9IHNoaW1Mb29rdXBzLm5hbWVzO1xuICBfYnlPbGRVbmljb2RlID0gc2hpbUxvb2t1cHMudW5pY29kZXM7XG4gIF9kZWZhdWx0VXNhYmxlUHJlZml4ID0gZ2V0Q2Fub25pY2FsUHJlZml4KGNvbmZpZy5zdHlsZURlZmF1bHQpO1xufTtcbm9uQ2hhbmdlKGZ1bmN0aW9uIChjKSB7XG4gIF9kZWZhdWx0VXNhYmxlUHJlZml4ID0gZ2V0Q2Fub25pY2FsUHJlZml4KGMuc3R5bGVEZWZhdWx0KTtcbn0pO1xuYnVpbGQoKTtcbmZ1bmN0aW9uIGJ5VW5pY29kZShwcmVmaXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIChfYnlVbmljb2RlW3ByZWZpeF0gfHwge30pW3VuaWNvZGVdO1xufVxuZnVuY3Rpb24gYnlMaWdhdHVyZShwcmVmaXgsIGxpZ2F0dXJlKSB7XG4gIHJldHVybiAoX2J5TGlnYXR1cmVbcHJlZml4XSB8fCB7fSlbbGlnYXR1cmVdO1xufVxuZnVuY3Rpb24gYnlBbGlhcyhwcmVmaXgsIGFsaWFzKSB7XG4gIHJldHVybiAoX2J5QWxpYXNbcHJlZml4XSB8fCB7fSlbYWxpYXNdO1xufVxuZnVuY3Rpb24gYnlPbGROYW1lKG5hbWUpIHtcbiAgcmV0dXJuIF9ieU9sZE5hbWVbbmFtZV0gfHwge1xuICAgIHByZWZpeDogbnVsbCxcbiAgICBpY29uTmFtZTogbnVsbFxuICB9O1xufVxuZnVuY3Rpb24gYnlPbGRVbmljb2RlKHVuaWNvZGUpIHtcbiAgdmFyIG9sZFVuaWNvZGUgPSBfYnlPbGRVbmljb2RlW3VuaWNvZGVdO1xuICB2YXIgbmV3VW5pY29kZSA9IGJ5VW5pY29kZSgnZmFzJywgdW5pY29kZSk7XG4gIHJldHVybiBvbGRVbmljb2RlIHx8IChuZXdVbmljb2RlID8ge1xuICAgIHByZWZpeDogJ2ZhcycsXG4gICAgaWNvbk5hbWU6IG5ld1VuaWNvZGVcbiAgfSA6IG51bGwpIHx8IHtcbiAgICBwcmVmaXg6IG51bGwsXG4gICAgaWNvbk5hbWU6IG51bGxcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldERlZmF1bHRVc2FibGVQcmVmaXgoKSB7XG4gIHJldHVybiBfZGVmYXVsdFVzYWJsZVByZWZpeDtcbn1cbnZhciBlbXB0eUNhbm9uaWNhbEljb24gPSBmdW5jdGlvbiBlbXB0eUNhbm9uaWNhbEljb24oKSB7XG4gIHJldHVybiB7XG4gICAgcHJlZml4OiBudWxsLFxuICAgIGljb25OYW1lOiBudWxsLFxuICAgIHJlc3Q6IFtdXG4gIH07XG59O1xuZnVuY3Rpb24gZ2V0Q2Fub25pY2FsUHJlZml4KHN0eWxlT3JQcmVmaXgpIHtcbiAgdmFyIHN0eWxlID0gUFJFRklYX1RPX1NUWUxFW3N0eWxlT3JQcmVmaXhdO1xuICB2YXIgcHJlZml4ID0gU1RZTEVfVE9fUFJFRklYW3N0eWxlT3JQcmVmaXhdIHx8IFNUWUxFX1RPX1BSRUZJWFtzdHlsZV07XG4gIHZhciBkZWZpbmVkID0gc3R5bGVPclByZWZpeCBpbiBuYW1lc3BhY2Uuc3R5bGVzID8gc3R5bGVPclByZWZpeCA6IG51bGw7XG4gIHJldHVybiBwcmVmaXggfHwgZGVmaW5lZCB8fCBudWxsO1xufVxuZnVuY3Rpb24gZ2V0Q2Fub25pY2FsSWNvbih2YWx1ZXMpIHtcbiAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhciBfcGFyYW1zJHNraXBMb29rdXBzID0gcGFyYW1zLnNraXBMb29rdXBzLFxuICAgICAgc2tpcExvb2t1cHMgPSBfcGFyYW1zJHNraXBMb29rdXBzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9wYXJhbXMkc2tpcExvb2t1cHM7XG4gIHZhciBnaXZlblByZWZpeCA9IG51bGw7XG4gIHZhciBjYW5vbmljYWwgPSB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGNscykge1xuICAgIHZhciBpY29uTmFtZSA9IGdldEljb25OYW1lKGNvbmZpZy5mYW1pbHlQcmVmaXgsIGNscyk7XG5cbiAgICBpZiAoc3R5bGVzW2Nsc10pIHtcbiAgICAgIGNscyA9IExPTkdfU1RZTEUuaW5jbHVkZXMoY2xzKSA/IExPTkdfU1RZTEVfVE9fUFJFRklYW2Nsc10gOiBjbHM7XG4gICAgICBnaXZlblByZWZpeCA9IGNscztcbiAgICAgIGFjYy5wcmVmaXggPSBjbHM7XG4gICAgfSBlbHNlIGlmIChQUkVGSVhFUy5pbmRleE9mKGNscykgPiAtMSkge1xuICAgICAgZ2l2ZW5QcmVmaXggPSBjbHM7XG4gICAgICBhY2MucHJlZml4ID0gZ2V0Q2Fub25pY2FsUHJlZml4KGNscyk7XG4gICAgfSBlbHNlIGlmIChpY29uTmFtZSkge1xuICAgICAgYWNjLmljb25OYW1lID0gaWNvbk5hbWU7XG4gICAgfSBlbHNlIGlmIChjbHMgIT09IGNvbmZpZy5yZXBsYWNlbWVudENsYXNzKSB7XG4gICAgICBhY2MucmVzdC5wdXNoKGNscyk7XG4gICAgfVxuXG4gICAgaWYgKCFza2lwTG9va3VwcyAmJiBhY2MucHJlZml4ICYmIGFjYy5pY29uTmFtZSkge1xuICAgICAgdmFyIHNoaW0gPSBnaXZlblByZWZpeCA9PT0gJ2ZhJyA/IGJ5T2xkTmFtZShhY2MuaWNvbk5hbWUpIDoge307XG4gICAgICB2YXIgYWxpYXNJY29uTmFtZSA9IGJ5QWxpYXMoYWNjLnByZWZpeCwgYWNjLmljb25OYW1lKTtcblxuICAgICAgaWYgKHNoaW0ucHJlZml4KSB7XG4gICAgICAgIGdpdmVuUHJlZml4ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgYWNjLmljb25OYW1lID0gc2hpbS5pY29uTmFtZSB8fCBhbGlhc0ljb25OYW1lIHx8IGFjYy5pY29uTmFtZTtcbiAgICAgIGFjYy5wcmVmaXggPSBzaGltLnByZWZpeCB8fCBhY2MucHJlZml4O1xuXG4gICAgICBpZiAoYWNjLnByZWZpeCA9PT0gJ2ZhcicgJiYgIXN0eWxlc1snZmFyJ10gJiYgc3R5bGVzWydmYXMnXSAmJiAhY29uZmlnLmF1dG9GZXRjaFN2Zykge1xuICAgICAgICAvLyBBbGxvdyBhIGZhbGxiYWNrIGZyb20gdGhlIHJlZ3VsYXIgc3R5bGUgdG8gc29saWQgaWYgcmVndWxhciBpcyBub3QgYXZhaWxhYmxlXG4gICAgICAgIC8vIGJ1dCBvbmx5IGlmIHdlIGFyZW4ndCBhdXRvLWZldGNoaW5nIFNWR3NcbiAgICAgICAgYWNjLnByZWZpeCA9ICdmYXMnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIGVtcHR5Q2Fub25pY2FsSWNvbigpKTtcblxuICBpZiAoY2Fub25pY2FsLnByZWZpeCA9PT0gJ2ZhJyB8fCBnaXZlblByZWZpeCA9PT0gJ2ZhJykge1xuICAgIC8vIFRoZSBmYSBwcmVmaXggaXMgbm90IGNhbm9uaWNhbC4gU28gaWYgaXQgaGFzIG1hZGUgaXQgdGhyb3VnaCB1bnRpbCB0aGlzIHBvaW50XG4gICAgLy8gd2Ugd2lsbCBzaGlmdCBpdCB0byB0aGUgY29ycmVjdCBwcmVmaXguXG4gICAgY2Fub25pY2FsLnByZWZpeCA9IGdldERlZmF1bHRVc2FibGVQcmVmaXgoKSB8fCAnZmFzJztcbiAgfVxuXG4gIHJldHVybiBjYW5vbmljYWw7XG59XG5cbnZhciBMaWJyYXJ5ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGlicmFyeSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTGlicmFyeSk7XG5cbiAgICB0aGlzLmRlZmluaXRpb25zID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTGlicmFyeSwgW3tcbiAgICBrZXk6IFwiYWRkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZCgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBkZWZpbml0aW9ucyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgZGVmaW5pdGlvbnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHZhciBhZGRpdGlvbnMgPSBkZWZpbml0aW9ucy5yZWR1Y2UodGhpcy5fcHVsbERlZmluaXRpb25zLCB7fSk7XG4gICAgICBPYmplY3Qua2V5cyhhZGRpdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBfdGhpcy5kZWZpbml0aW9uc1trZXldID0gX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIF90aGlzLmRlZmluaXRpb25zW2tleV0gfHwge30pLCBhZGRpdGlvbnNba2V5XSk7XG4gICAgICAgIGRlZmluZUljb25zKGtleSwgYWRkaXRpb25zW2tleV0pO1xuICAgICAgICB2YXIgbG9uZ1ByZWZpeCA9IFBSRUZJWF9UT19MT05HX1NUWUxFW2tleV07XG4gICAgICAgIGlmIChsb25nUHJlZml4KSBkZWZpbmVJY29ucyhsb25nUHJlZml4LCBhZGRpdGlvbnNba2V5XSk7XG4gICAgICAgIGJ1aWxkKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICB0aGlzLmRlZmluaXRpb25zID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl9wdWxsRGVmaW5pdGlvbnNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3B1bGxEZWZpbml0aW9ucyhhZGRpdGlvbnMsIGRlZmluaXRpb24pIHtcbiAgICAgIHZhciBub3JtYWxpemVkID0gZGVmaW5pdGlvbi5wcmVmaXggJiYgZGVmaW5pdGlvbi5pY29uTmFtZSAmJiBkZWZpbml0aW9uLmljb24gPyB7XG4gICAgICAgIDA6IGRlZmluaXRpb25cbiAgICAgIH0gOiBkZWZpbml0aW9uO1xuICAgICAgT2JqZWN0LmtleXMobm9ybWFsaXplZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIF9ub3JtYWxpemVkJGtleSA9IG5vcm1hbGl6ZWRba2V5XSxcbiAgICAgICAgICAgIHByZWZpeCA9IF9ub3JtYWxpemVkJGtleS5wcmVmaXgsXG4gICAgICAgICAgICBpY29uTmFtZSA9IF9ub3JtYWxpemVkJGtleS5pY29uTmFtZSxcbiAgICAgICAgICAgIGljb24gPSBfbm9ybWFsaXplZCRrZXkuaWNvbjtcbiAgICAgICAgdmFyIGFsaWFzZXMgPSBpY29uWzJdO1xuICAgICAgICBpZiAoIWFkZGl0aW9uc1twcmVmaXhdKSBhZGRpdGlvbnNbcHJlZml4XSA9IHt9O1xuXG4gICAgICAgIGlmIChhbGlhc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhbGlhc2VzLmZvckVhY2goZnVuY3Rpb24gKGFsaWFzKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFsaWFzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBhZGRpdGlvbnNbcHJlZml4XVthbGlhc10gPSBpY29uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYWRkaXRpb25zW3ByZWZpeF1baWNvbk5hbWVdID0gaWNvbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFkZGl0aW9ucztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGlicmFyeTtcbn0oKTtcblxudmFyIF9wbHVnaW5zID0gW107XG52YXIgX2hvb2tzID0ge307XG52YXIgcHJvdmlkZXJzID0ge307XG52YXIgZGVmYXVsdFByb3ZpZGVyS2V5cyA9IE9iamVjdC5rZXlzKHByb3ZpZGVycyk7XG5mdW5jdGlvbiByZWdpc3RlclBsdWdpbnMobmV4dFBsdWdpbnMsIF9yZWYpIHtcbiAgdmFyIG9iaiA9IF9yZWYubWl4b3V0c1RvO1xuICBfcGx1Z2lucyA9IG5leHRQbHVnaW5zO1xuICBfaG9va3MgPSB7fTtcbiAgT2JqZWN0LmtleXMocHJvdmlkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgaWYgKGRlZmF1bHRQcm92aWRlcktleXMuaW5kZXhPZihrKSA9PT0gLTEpIHtcbiAgICAgIGRlbGV0ZSBwcm92aWRlcnNba107XG4gICAgfVxuICB9KTtcblxuICBfcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICB2YXIgbWl4b3V0ID0gcGx1Z2luLm1peG91dCA/IHBsdWdpbi5taXhvdXQoKSA6IHt9O1xuICAgIE9iamVjdC5rZXlzKG1peG91dCkuZm9yRWFjaChmdW5jdGlvbiAodGspIHtcbiAgICAgIGlmICh0eXBlb2YgbWl4b3V0W3RrXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvYmpbdGtdID0gbWl4b3V0W3RrXTtcbiAgICAgIH1cblxuICAgICAgaWYgKF90eXBlb2YobWl4b3V0W3RrXSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG1peG91dFt0a10pLmZvckVhY2goZnVuY3Rpb24gKHNrKSB7XG4gICAgICAgICAgaWYgKCFvYmpbdGtdKSB7XG4gICAgICAgICAgICBvYmpbdGtdID0ge307XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgb2JqW3RrXVtza10gPSBtaXhvdXRbdGtdW3NrXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocGx1Z2luLmhvb2tzKSB7XG4gICAgICB2YXIgaG9va3MgPSBwbHVnaW4uaG9va3MoKTtcbiAgICAgIE9iamVjdC5rZXlzKGhvb2tzKS5mb3JFYWNoKGZ1bmN0aW9uIChob29rKSB7XG4gICAgICAgIGlmICghX2hvb2tzW2hvb2tdKSB7XG4gICAgICAgICAgX2hvb2tzW2hvb2tdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBfaG9va3NbaG9va10ucHVzaChob29rc1tob29rXSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocGx1Z2luLnByb3ZpZGVzKSB7XG4gICAgICBwbHVnaW4ucHJvdmlkZXMocHJvdmlkZXJzKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBjaGFpbkhvb2tzKGhvb2ssIGFjY3VtdWxhdG9yKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAyID8gX2xlbiAtIDIgOiAwKSwgX2tleSA9IDI7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXkgLSAyXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHZhciBob29rRm5zID0gX2hvb2tzW2hvb2tdIHx8IFtdO1xuICBob29rRm5zLmZvckVhY2goZnVuY3Rpb24gKGhvb2tGbikge1xuICAgIGFjY3VtdWxhdG9yID0gaG9va0ZuLmFwcGx5KG51bGwsIFthY2N1bXVsYXRvcl0uY29uY2F0KGFyZ3MpKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11c2VsZXNzLWNhbGxcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cbmZ1bmN0aW9uIGNhbGxIb29rcyhob29rKSB7XG4gIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgfVxuXG4gIHZhciBob29rRm5zID0gX2hvb2tzW2hvb2tdIHx8IFtdO1xuICBob29rRm5zLmZvckVhY2goZnVuY3Rpb24gKGhvb2tGbikge1xuICAgIGhvb2tGbi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSk7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBjYWxsUHJvdmlkZWQoKSB7XG4gIHZhciBob29rID0gYXJndW1lbnRzWzBdO1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIHJldHVybiBwcm92aWRlcnNbaG9va10gPyBwcm92aWRlcnNbaG9va10uYXBwbHkobnVsbCwgYXJncykgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGZpbmRJY29uRGVmaW5pdGlvbihpY29uTG9va3VwKSB7XG4gIGlmIChpY29uTG9va3VwLnByZWZpeCA9PT0gJ2ZhJykge1xuICAgIGljb25Mb29rdXAucHJlZml4ID0gJ2Zhcyc7XG4gIH1cblxuICB2YXIgaWNvbk5hbWUgPSBpY29uTG9va3VwLmljb25OYW1lO1xuICB2YXIgcHJlZml4ID0gaWNvbkxvb2t1cC5wcmVmaXggfHwgZ2V0RGVmYXVsdFVzYWJsZVByZWZpeCgpO1xuICBpZiAoIWljb25OYW1lKSByZXR1cm47XG4gIGljb25OYW1lID0gYnlBbGlhcyhwcmVmaXgsIGljb25OYW1lKSB8fCBpY29uTmFtZTtcbiAgcmV0dXJuIGljb25Gcm9tTWFwcGluZyhsaWJyYXJ5LmRlZmluaXRpb25zLCBwcmVmaXgsIGljb25OYW1lKSB8fCBpY29uRnJvbU1hcHBpbmcobmFtZXNwYWNlLnN0eWxlcywgcHJlZml4LCBpY29uTmFtZSk7XG59XG52YXIgbGlicmFyeSA9IG5ldyBMaWJyYXJ5KCk7XG52YXIgbm9BdXRvID0gZnVuY3Rpb24gbm9BdXRvKCkge1xuICBjb25maWcuYXV0b1JlcGxhY2VTdmcgPSBmYWxzZTtcbiAgY29uZmlnLm9ic2VydmVNdXRhdGlvbnMgPSBmYWxzZTtcbiAgY2FsbEhvb2tzKCdub0F1dG8nKTtcbn07XG52YXIgZG9tID0ge1xuICBpMnN2ZzogZnVuY3Rpb24gaTJzdmcoKSB7XG4gICAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG5cbiAgICBpZiAoSVNfRE9NKSB7XG4gICAgICBjYWxsSG9va3MoJ2JlZm9yZUkyc3ZnJywgcGFyYW1zKTtcbiAgICAgIGNhbGxQcm92aWRlZCgncHNldWRvRWxlbWVudHMyc3ZnJywgcGFyYW1zKTtcbiAgICAgIHJldHVybiBjYWxsUHJvdmlkZWQoJ2kyc3ZnJywgcGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdPcGVyYXRpb24gcmVxdWlyZXMgYSBET00gb2Ygc29tZSBraW5kLicpO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IGZ1bmN0aW9uIHdhdGNoKCkge1xuICAgIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIHZhciBhdXRvUmVwbGFjZVN2Z1Jvb3QgPSBwYXJhbXMuYXV0b1JlcGxhY2VTdmdSb290O1xuXG4gICAgaWYgKGNvbmZpZy5hdXRvUmVwbGFjZVN2ZyA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbmZpZy5hdXRvUmVwbGFjZVN2ZyA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uZmlnLm9ic2VydmVNdXRhdGlvbnMgPSB0cnVlO1xuICAgIGRvbXJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgICAgIGF1dG9SZXBsYWNlKHtcbiAgICAgICAgYXV0b1JlcGxhY2VTdmdSb290OiBhdXRvUmVwbGFjZVN2Z1Jvb3RcbiAgICAgIH0pO1xuICAgICAgY2FsbEhvb2tzKCd3YXRjaCcsIHBhcmFtcyk7XG4gICAgfSk7XG4gIH1cbn07XG52YXIgcGFyc2UgPSB7XG4gIGljb246IGZ1bmN0aW9uIGljb24oX2ljb24pIHtcbiAgICBpZiAoX2ljb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChfdHlwZW9mKF9pY29uKSA9PT0gJ29iamVjdCcgJiYgX2ljb24ucHJlZml4ICYmIF9pY29uLmljb25OYW1lKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmVmaXg6IF9pY29uLnByZWZpeCxcbiAgICAgICAgaWNvbk5hbWU6IGJ5QWxpYXMoX2ljb24ucHJlZml4LCBfaWNvbi5pY29uTmFtZSkgfHwgX2ljb24uaWNvbk5hbWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoX2ljb24pICYmIF9pY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgdmFyIGljb25OYW1lID0gX2ljb25bMV0uaW5kZXhPZignZmEtJykgPT09IDAgPyBfaWNvblsxXS5zbGljZSgzKSA6IF9pY29uWzFdO1xuICAgICAgdmFyIHByZWZpeCA9IGdldENhbm9uaWNhbFByZWZpeChfaWNvblswXSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmVmaXg6IHByZWZpeCxcbiAgICAgICAgaWNvbk5hbWU6IGJ5QWxpYXMocHJlZml4LCBpY29uTmFtZSkgfHwgaWNvbk5hbWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfaWNvbiA9PT0gJ3N0cmluZycgJiYgKF9pY29uLmluZGV4T2YoXCJcIi5jb25jYXQoY29uZmlnLmZhbWlseVByZWZpeCwgXCItXCIpKSA+IC0xIHx8IF9pY29uLm1hdGNoKElDT05fU0VMRUNUSU9OX1NZTlRBWF9QQVRURVJOKSkpIHtcbiAgICAgIHZhciBjYW5vbmljYWxJY29uID0gZ2V0Q2Fub25pY2FsSWNvbihfaWNvbi5zcGxpdCgnICcpLCB7XG4gICAgICAgIHNraXBMb29rdXBzOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByZWZpeDogY2Fub25pY2FsSWNvbi5wcmVmaXggfHwgZ2V0RGVmYXVsdFVzYWJsZVByZWZpeCgpLFxuICAgICAgICBpY29uTmFtZTogYnlBbGlhcyhjYW5vbmljYWxJY29uLnByZWZpeCwgY2Fub25pY2FsSWNvbi5pY29uTmFtZSkgfHwgY2Fub25pY2FsSWNvbi5pY29uTmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIF9pY29uID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIF9wcmVmaXggPSBnZXREZWZhdWx0VXNhYmxlUHJlZml4KCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByZWZpeDogX3ByZWZpeCxcbiAgICAgICAgaWNvbk5hbWU6IGJ5QWxpYXMoX3ByZWZpeCwgX2ljb24pIHx8IF9pY29uXG4gICAgICB9O1xuICAgIH1cbiAgfVxufTtcbnZhciBhcGkgPSB7XG4gIG5vQXV0bzogbm9BdXRvLFxuICBjb25maWc6IGNvbmZpZyxcbiAgZG9tOiBkb20sXG4gIHBhcnNlOiBwYXJzZSxcbiAgbGlicmFyeTogbGlicmFyeSxcbiAgZmluZEljb25EZWZpbml0aW9uOiBmaW5kSWNvbkRlZmluaXRpb24sXG4gIHRvSHRtbDogdG9IdG1sXG59O1xuXG52YXIgYXV0b1JlcGxhY2UgPSBmdW5jdGlvbiBhdXRvUmVwbGFjZSgpIHtcbiAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gIHZhciBfcGFyYW1zJGF1dG9SZXBsYWNlU3YgPSBwYXJhbXMuYXV0b1JlcGxhY2VTdmdSb290LFxuICAgICAgYXV0b1JlcGxhY2VTdmdSb290ID0gX3BhcmFtcyRhdXRvUmVwbGFjZVN2ID09PSB2b2lkIDAgPyBET0NVTUVOVCA6IF9wYXJhbXMkYXV0b1JlcGxhY2VTdjtcbiAgaWYgKChPYmplY3Qua2V5cyhuYW1lc3BhY2Uuc3R5bGVzKS5sZW5ndGggPiAwIHx8IGNvbmZpZy5hdXRvRmV0Y2hTdmcpICYmIElTX0RPTSAmJiBjb25maWcuYXV0b1JlcGxhY2VTdmcpIGFwaS5kb20uaTJzdmcoe1xuICAgIG5vZGU6IGF1dG9SZXBsYWNlU3ZnUm9vdFxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGRvbVZhcmlhbnRzKHZhbCwgYWJzdHJhY3RDcmVhdG9yKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWwsICdhYnN0cmFjdCcsIHtcbiAgICBnZXQ6IGFic3RyYWN0Q3JlYXRvclxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbCwgJ2h0bWwnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdmFsLmFic3RyYWN0Lm1hcChmdW5jdGlvbiAoYSkge1xuICAgICAgICByZXR1cm4gdG9IdG1sKGEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbCwgJ25vZGUnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICBpZiAoIUlTX0RPTSkgcmV0dXJuO1xuICAgICAgdmFyIGNvbnRhaW5lciA9IERPQ1VNRU5ULmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IHZhbC5odG1sO1xuICAgICAgcmV0dXJuIGNvbnRhaW5lci5jaGlsZHJlbjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBhc0ljb24gKF9yZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIG1haW4gPSBfcmVmLm1haW4sXG4gICAgICBtYXNrID0gX3JlZi5tYXNrLFxuICAgICAgYXR0cmlidXRlcyA9IF9yZWYuYXR0cmlidXRlcyxcbiAgICAgIHN0eWxlcyA9IF9yZWYuc3R5bGVzLFxuICAgICAgdHJhbnNmb3JtID0gX3JlZi50cmFuc2Zvcm07XG5cbiAgaWYgKHRyYW5zZm9ybUlzTWVhbmluZ2Z1bCh0cmFuc2Zvcm0pICYmIG1haW4uZm91bmQgJiYgIW1hc2suZm91bmQpIHtcbiAgICB2YXIgd2lkdGggPSBtYWluLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBtYWluLmhlaWdodDtcbiAgICB2YXIgb2Zmc2V0ID0ge1xuICAgICAgeDogd2lkdGggLyBoZWlnaHQgLyAyLFxuICAgICAgeTogMC41XG4gICAgfTtcbiAgICBhdHRyaWJ1dGVzWydzdHlsZSddID0gam9pblN0eWxlcyhfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgc3R5bGVzKSwge30sIHtcbiAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogXCJcIi5jb25jYXQob2Zmc2V0LnggKyB0cmFuc2Zvcm0ueCAvIDE2LCBcImVtIFwiKS5jb25jYXQob2Zmc2V0LnkgKyB0cmFuc2Zvcm0ueSAvIDE2LCBcImVtXCIpXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgdGFnOiAnc3ZnJyxcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9XTtcbn1cblxuZnVuY3Rpb24gYXNTeW1ib2wgKF9yZWYpIHtcbiAgdmFyIHByZWZpeCA9IF9yZWYucHJlZml4LFxuICAgICAgaWNvbk5hbWUgPSBfcmVmLmljb25OYW1lLFxuICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgYXR0cmlidXRlcyA9IF9yZWYuYXR0cmlidXRlcyxcbiAgICAgIHN5bWJvbCA9IF9yZWYuc3ltYm9sO1xuICB2YXIgaWQgPSBzeW1ib2wgPT09IHRydWUgPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLVwiKS5jb25jYXQoY29uZmlnLmZhbWlseVByZWZpeCwgXCItXCIpLmNvbmNhdChpY29uTmFtZSkgOiBzeW1ib2w7XG4gIHJldHVybiBbe1xuICAgIHRhZzogJ3N2ZycsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgc3R5bGU6ICdkaXNwbGF5OiBub25lOydcbiAgICB9LFxuICAgIGNoaWxkcmVuOiBbe1xuICAgICAgdGFnOiAnc3ltYm9sJyxcbiAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBhdHRyaWJ1dGVzKSwge30sIHtcbiAgICAgICAgaWQ6IGlkXG4gICAgICB9KSxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH1dXG4gIH1dO1xufVxuXG5mdW5jdGlvbiBtYWtlSW5saW5lU3ZnQWJzdHJhY3QocGFyYW1zKSB7XG4gIHZhciBfcGFyYW1zJGljb25zID0gcGFyYW1zLmljb25zLFxuICAgICAgbWFpbiA9IF9wYXJhbXMkaWNvbnMubWFpbixcbiAgICAgIG1hc2sgPSBfcGFyYW1zJGljb25zLm1hc2ssXG4gICAgICBwcmVmaXggPSBwYXJhbXMucHJlZml4LFxuICAgICAgaWNvbk5hbWUgPSBwYXJhbXMuaWNvbk5hbWUsXG4gICAgICB0cmFuc2Zvcm0gPSBwYXJhbXMudHJhbnNmb3JtLFxuICAgICAgc3ltYm9sID0gcGFyYW1zLnN5bWJvbCxcbiAgICAgIHRpdGxlID0gcGFyYW1zLnRpdGxlLFxuICAgICAgbWFza0lkID0gcGFyYW1zLm1hc2tJZCxcbiAgICAgIHRpdGxlSWQgPSBwYXJhbXMudGl0bGVJZCxcbiAgICAgIGV4dHJhID0gcGFyYW1zLmV4dHJhLFxuICAgICAgX3BhcmFtcyR3YXRjaGFibGUgPSBwYXJhbXMud2F0Y2hhYmxlLFxuICAgICAgd2F0Y2hhYmxlID0gX3BhcmFtcyR3YXRjaGFibGUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3BhcmFtcyR3YXRjaGFibGU7XG5cbiAgdmFyIF9yZWYgPSBtYXNrLmZvdW5kID8gbWFzayA6IG1haW4sXG4gICAgICB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcblxuICB2YXIgaXNVcGxvYWRlZEljb24gPSBwcmVmaXggPT09ICdmYWsnO1xuICB2YXIgYXR0ckNsYXNzID0gW2NvbmZpZy5yZXBsYWNlbWVudENsYXNzLCBpY29uTmFtZSA/IFwiXCIuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLVwiKS5jb25jYXQoaWNvbk5hbWUpIDogJyddLmZpbHRlcihmdW5jdGlvbiAoYykge1xuICAgIHJldHVybiBleHRyYS5jbGFzc2VzLmluZGV4T2YoYykgPT09IC0xO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gYyAhPT0gJycgfHwgISFjO1xuICB9KS5jb25jYXQoZXh0cmEuY2xhc3Nlcykuam9pbignICcpO1xuICB2YXIgY29udGVudCA9IHtcbiAgICBjaGlsZHJlbjogW10sXG4gICAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIGV4dHJhLmF0dHJpYnV0ZXMpLCB7fSwge1xuICAgICAgJ2RhdGEtcHJlZml4JzogcHJlZml4LFxuICAgICAgJ2RhdGEtaWNvbic6IGljb25OYW1lLFxuICAgICAgJ2NsYXNzJzogYXR0ckNsYXNzLFxuICAgICAgJ3JvbGUnOiBleHRyYS5hdHRyaWJ1dGVzLnJvbGUgfHwgJ2ltZycsXG4gICAgICAneG1sbnMnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICAgICAgJ3ZpZXdCb3gnOiBcIjAgMCBcIi5jb25jYXQod2lkdGgsIFwiIFwiKS5jb25jYXQoaGVpZ2h0KVxuICAgIH0pXG4gIH07XG4gIHZhciB1cGxvYWRlZEljb25XaWR0aFN0eWxlID0gaXNVcGxvYWRlZEljb24gJiYgIX5leHRyYS5jbGFzc2VzLmluZGV4T2YoJ2ZhLWZ3JykgPyB7XG4gICAgd2lkdGg6IFwiXCIuY29uY2F0KHdpZHRoIC8gaGVpZ2h0ICogMTYgKiAwLjA2MjUsIFwiZW1cIilcbiAgfSA6IHt9O1xuXG4gIGlmICh3YXRjaGFibGUpIHtcbiAgICBjb250ZW50LmF0dHJpYnV0ZXNbREFUQV9GQV9JMlNWR10gPSAnJztcbiAgfVxuXG4gIGlmICh0aXRsZSkge1xuICAgIGNvbnRlbnQuY2hpbGRyZW4ucHVzaCh7XG4gICAgICB0YWc6ICd0aXRsZScsXG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGlkOiBjb250ZW50LmF0dHJpYnV0ZXNbJ2FyaWEtbGFiZWxsZWRieSddIHx8IFwidGl0bGUtXCIuY29uY2F0KHRpdGxlSWQgfHwgbmV4dFVuaXF1ZUlkKCkpXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IFt0aXRsZV1cbiAgICB9KTtcbiAgICBkZWxldGUgY29udGVudC5hdHRyaWJ1dGVzLnRpdGxlO1xuICB9XG5cbiAgdmFyIGFyZ3MgPSBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgY29udGVudCksIHt9LCB7XG4gICAgcHJlZml4OiBwcmVmaXgsXG4gICAgaWNvbk5hbWU6IGljb25OYW1lLFxuICAgIG1haW46IG1haW4sXG4gICAgbWFzazogbWFzayxcbiAgICBtYXNrSWQ6IG1hc2tJZCxcbiAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybSxcbiAgICBzeW1ib2w6IHN5bWJvbCxcbiAgICBzdHlsZXM6IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCB1cGxvYWRlZEljb25XaWR0aFN0eWxlKSwgZXh0cmEuc3R5bGVzKVxuICB9KTtcblxuICB2YXIgX3JlZjIgPSBtYXNrLmZvdW5kICYmIG1haW4uZm91bmQgPyBjYWxsUHJvdmlkZWQoJ2dlbmVyYXRlQWJzdHJhY3RNYXNrJywgYXJncykgfHwge1xuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBhdHRyaWJ1dGVzOiB7fVxuICB9IDogY2FsbFByb3ZpZGVkKCdnZW5lcmF0ZUFic3RyYWN0SWNvbicsIGFyZ3MpIHx8IHtcbiAgICBjaGlsZHJlbjogW10sXG4gICAgYXR0cmlidXRlczoge31cbiAgfSxcbiAgICAgIGNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW4sXG4gICAgICBhdHRyaWJ1dGVzID0gX3JlZjIuYXR0cmlidXRlcztcblxuICBhcmdzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIGFyZ3MuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG5cbiAgaWYgKHN5bWJvbCkge1xuICAgIHJldHVybiBhc1N5bWJvbChhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXNJY29uKGFyZ3MpO1xuICB9XG59XG5mdW5jdGlvbiBtYWtlTGF5ZXJzVGV4dEFic3RyYWN0KHBhcmFtcykge1xuICB2YXIgY29udGVudCA9IHBhcmFtcy5jb250ZW50LFxuICAgICAgd2lkdGggPSBwYXJhbXMud2lkdGgsXG4gICAgICBoZWlnaHQgPSBwYXJhbXMuaGVpZ2h0LFxuICAgICAgdHJhbnNmb3JtID0gcGFyYW1zLnRyYW5zZm9ybSxcbiAgICAgIHRpdGxlID0gcGFyYW1zLnRpdGxlLFxuICAgICAgZXh0cmEgPSBwYXJhbXMuZXh0cmEsXG4gICAgICBfcGFyYW1zJHdhdGNoYWJsZTIgPSBwYXJhbXMud2F0Y2hhYmxlLFxuICAgICAgd2F0Y2hhYmxlID0gX3BhcmFtcyR3YXRjaGFibGUyID09PSB2b2lkIDAgPyBmYWxzZSA6IF9wYXJhbXMkd2F0Y2hhYmxlMjtcblxuICB2YXIgYXR0cmlidXRlcyA9IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBleHRyYS5hdHRyaWJ1dGVzKSwgdGl0bGUgPyB7XG4gICAgJ3RpdGxlJzogdGl0bGVcbiAgfSA6IHt9KSwge30sIHtcbiAgICAnY2xhc3MnOiBleHRyYS5jbGFzc2VzLmpvaW4oJyAnKVxuICB9KTtcblxuICBpZiAod2F0Y2hhYmxlKSB7XG4gICAgYXR0cmlidXRlc1tEQVRBX0ZBX0kyU1ZHXSA9ICcnO1xuICB9XG5cbiAgdmFyIHN0eWxlcyA9IF9vYmplY3RTcHJlYWQyKHt9LCBleHRyYS5zdHlsZXMpO1xuXG4gIGlmICh0cmFuc2Zvcm1Jc01lYW5pbmdmdWwodHJhbnNmb3JtKSkge1xuICAgIHN0eWxlc1sndHJhbnNmb3JtJ10gPSB0cmFuc2Zvcm1Gb3JDc3Moe1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm0sXG4gICAgICBzdGFydENlbnRlcmVkOiB0cnVlLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9KTtcbiAgICBzdHlsZXNbJy13ZWJraXQtdHJhbnNmb3JtJ10gPSBzdHlsZXNbJ3RyYW5zZm9ybSddO1xuICB9XG5cbiAgdmFyIHN0eWxlU3RyaW5nID0gam9pblN0eWxlcyhzdHlsZXMpO1xuXG4gIGlmIChzdHlsZVN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgYXR0cmlidXRlc1snc3R5bGUnXSA9IHN0eWxlU3RyaW5nO1xuICB9XG5cbiAgdmFyIHZhbCA9IFtdO1xuICB2YWwucHVzaCh7XG4gICAgdGFnOiAnc3BhbicsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcyxcbiAgICBjaGlsZHJlbjogW2NvbnRlbnRdXG4gIH0pO1xuXG4gIGlmICh0aXRsZSkge1xuICAgIHZhbC5wdXNoKHtcbiAgICAgIHRhZzogJ3NwYW4nLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBjbGFzczogJ3NyLW9ubHknXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IFt0aXRsZV1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB2YWw7XG59XG5mdW5jdGlvbiBtYWtlTGF5ZXJzQ291bnRlckFic3RyYWN0KHBhcmFtcykge1xuICB2YXIgY29udGVudCA9IHBhcmFtcy5jb250ZW50LFxuICAgICAgdGl0bGUgPSBwYXJhbXMudGl0bGUsXG4gICAgICBleHRyYSA9IHBhcmFtcy5leHRyYTtcblxuICB2YXIgYXR0cmlidXRlcyA9IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBleHRyYS5hdHRyaWJ1dGVzKSwgdGl0bGUgPyB7XG4gICAgJ3RpdGxlJzogdGl0bGVcbiAgfSA6IHt9KSwge30sIHtcbiAgICAnY2xhc3MnOiBleHRyYS5jbGFzc2VzLmpvaW4oJyAnKVxuICB9KTtcblxuICB2YXIgc3R5bGVTdHJpbmcgPSBqb2luU3R5bGVzKGV4dHJhLnN0eWxlcyk7XG5cbiAgaWYgKHN0eWxlU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICBhdHRyaWJ1dGVzWydzdHlsZSddID0gc3R5bGVTdHJpbmc7XG4gIH1cblxuICB2YXIgdmFsID0gW107XG4gIHZhbC5wdXNoKHtcbiAgICB0YWc6ICdzcGFuJyxcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgIGNoaWxkcmVuOiBbY29udGVudF1cbiAgfSk7XG5cbiAgaWYgKHRpdGxlKSB7XG4gICAgdmFsLnB1c2goe1xuICAgICAgdGFnOiAnc3BhbicsXG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGNsYXNzOiAnc3Itb25seSdcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW3RpdGxlXVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHZhbDtcbn1cblxudmFyIHN0eWxlcyQxID0gbmFtZXNwYWNlLnN0eWxlcztcbmZ1bmN0aW9uIGFzRm91bmRJY29uKGljb24pIHtcbiAgdmFyIHdpZHRoID0gaWNvblswXTtcbiAgdmFyIGhlaWdodCA9IGljb25bMV07XG5cbiAgdmFyIF9pY29uJHNsaWNlID0gaWNvbi5zbGljZSg0KSxcbiAgICAgIF9pY29uJHNsaWNlMiA9IF9zbGljZWRUb0FycmF5KF9pY29uJHNsaWNlLCAxKSxcbiAgICAgIHZlY3RvckRhdGEgPSBfaWNvbiRzbGljZTJbMF07XG5cbiAgdmFyIGVsZW1lbnQgPSBudWxsO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZlY3RvckRhdGEpKSB7XG4gICAgZWxlbWVudCA9IHtcbiAgICAgIHRhZzogJ2cnLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBjbGFzczogXCJcIi5jb25jYXQoY29uZmlnLmZhbWlseVByZWZpeCwgXCItXCIpLmNvbmNhdChEVU9UT05FX0NMQVNTRVMuR1JPVVApXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgY2xhc3M6IFwiXCIuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLVwiKS5jb25jYXQoRFVPVE9ORV9DTEFTU0VTLlNFQ09OREFSWSksXG4gICAgICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICAgICAgZDogdmVjdG9yRGF0YVswXVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgY2xhc3M6IFwiXCIuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLVwiKS5jb25jYXQoRFVPVE9ORV9DTEFTU0VTLlBSSU1BUlkpLFxuICAgICAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgICAgIGQ6IHZlY3RvckRhdGFbMV1cbiAgICAgICAgfVxuICAgICAgfV1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQgPSB7XG4gICAgICB0YWc6ICdwYXRoJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICAgIGQ6IHZlY3RvckRhdGFcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmb3VuZDogdHJ1ZSxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgaWNvbjogZWxlbWVudFxuICB9O1xufVxudmFyIG1pc3NpbmdJY29uUmVzb2x1dGlvbk1peGluID0ge1xuICBmb3VuZDogZmFsc2UsXG4gIHdpZHRoOiA1MTIsXG4gIGhlaWdodDogNTEyXG59O1xuXG5mdW5jdGlvbiBtYXliZU5vdGlmeU1pc3NpbmcoaWNvbk5hbWUsIHByZWZpeCkge1xuICBpZiAoIVBST0RVQ1RJT04gJiYgIWNvbmZpZy5zaG93TWlzc2luZ0ljb25zICYmIGljb25OYW1lKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkljb24gd2l0aCBuYW1lIFxcXCJcIi5jb25jYXQoaWNvbk5hbWUsIFwiXFxcIiBhbmQgcHJlZml4IFxcXCJcIikuY29uY2F0KHByZWZpeCwgXCJcXFwiIGlzIG1pc3NpbmcuXCIpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kSWNvbihpY29uTmFtZSwgcHJlZml4KSB7XG4gIHZhciBnaXZlblByZWZpeCA9IHByZWZpeDtcblxuICBpZiAocHJlZml4ID09PSAnZmEnICYmIGNvbmZpZy5zdHlsZURlZmF1bHQgIT09IG51bGwpIHtcbiAgICBwcmVmaXggPSBnZXREZWZhdWx0VXNhYmxlUHJlZml4KCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciB2YWwgPSB7XG4gICAgICBmb3VuZDogZmFsc2UsXG4gICAgICB3aWR0aDogNTEyLFxuICAgICAgaGVpZ2h0OiA1MTIsXG4gICAgICBpY29uOiBjYWxsUHJvdmlkZWQoJ21pc3NpbmdJY29uQWJzdHJhY3QnKSB8fCB7fVxuICAgIH07XG5cbiAgICBpZiAoZ2l2ZW5QcmVmaXggPT09ICdmYScpIHtcbiAgICAgIHZhciBzaGltID0gYnlPbGROYW1lKGljb25OYW1lKSB8fCB7fTtcbiAgICAgIGljb25OYW1lID0gc2hpbS5pY29uTmFtZSB8fCBpY29uTmFtZTtcbiAgICAgIHByZWZpeCA9IHNoaW0ucHJlZml4IHx8IHByZWZpeDtcbiAgICB9XG5cbiAgICBpZiAoaWNvbk5hbWUgJiYgcHJlZml4ICYmIHN0eWxlcyQxW3ByZWZpeF0gJiYgc3R5bGVzJDFbcHJlZml4XVtpY29uTmFtZV0pIHtcbiAgICAgIHZhciBpY29uID0gc3R5bGVzJDFbcHJlZml4XVtpY29uTmFtZV07XG4gICAgICByZXR1cm4gcmVzb2x2ZShhc0ZvdW5kSWNvbihpY29uKSk7XG4gICAgfVxuXG4gICAgbWF5YmVOb3RpZnlNaXNzaW5nKGljb25OYW1lLCBwcmVmaXgpO1xuICAgIHJlc29sdmUoX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIG1pc3NpbmdJY29uUmVzb2x1dGlvbk1peGluKSwge30sIHtcbiAgICAgIGljb246IGNvbmZpZy5zaG93TWlzc2luZ0ljb25zICYmIGljb25OYW1lID8gY2FsbFByb3ZpZGVkKCdtaXNzaW5nSWNvbkFic3RyYWN0JykgfHwge30gOiB7fVxuICAgIH0pKTtcbiAgfSk7XG59XG5cbnZhciBub29wJDEgPSBmdW5jdGlvbiBub29wKCkge307XG5cbnZhciBwID0gY29uZmlnLm1lYXN1cmVQZXJmb3JtYW5jZSAmJiBQRVJGT1JNQU5DRSAmJiBQRVJGT1JNQU5DRS5tYXJrICYmIFBFUkZPUk1BTkNFLm1lYXN1cmUgPyBQRVJGT1JNQU5DRSA6IHtcbiAgbWFyazogbm9vcCQxLFxuICBtZWFzdXJlOiBub29wJDFcbn07XG52YXIgcHJlYW1ibGUgPSBcIkZBIFxcXCI2LjAuMFxcXCJcIjtcblxudmFyIGJlZ2luID0gZnVuY3Rpb24gYmVnaW4obmFtZSkge1xuICBwLm1hcmsoXCJcIi5jb25jYXQocHJlYW1ibGUsIFwiIFwiKS5jb25jYXQobmFtZSwgXCIgYmVnaW5zXCIpKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZW5kKG5hbWUpO1xuICB9O1xufTtcblxudmFyIGVuZCA9IGZ1bmN0aW9uIGVuZChuYW1lKSB7XG4gIHAubWFyayhcIlwiLmNvbmNhdChwcmVhbWJsZSwgXCIgXCIpLmNvbmNhdChuYW1lLCBcIiBlbmRzXCIpKTtcbiAgcC5tZWFzdXJlKFwiXCIuY29uY2F0KHByZWFtYmxlLCBcIiBcIikuY29uY2F0KG5hbWUpLCBcIlwiLmNvbmNhdChwcmVhbWJsZSwgXCIgXCIpLmNvbmNhdChuYW1lLCBcIiBiZWdpbnNcIiksIFwiXCIuY29uY2F0KHByZWFtYmxlLCBcIiBcIikuY29uY2F0KG5hbWUsIFwiIGVuZHNcIikpO1xufTtcblxudmFyIHBlcmYgPSB7XG4gIGJlZ2luOiBiZWdpbixcbiAgZW5kOiBlbmRcbn07XG5cbnZhciBub29wJDIgPSBmdW5jdGlvbiBub29wKCkge307XG5cbmZ1bmN0aW9uIGlzV2F0Y2hlZChub2RlKSB7XG4gIHZhciBpMnN2ZyA9IG5vZGUuZ2V0QXR0cmlidXRlID8gbm9kZS5nZXRBdHRyaWJ1dGUoREFUQV9GQV9JMlNWRykgOiBudWxsO1xuICByZXR1cm4gdHlwZW9mIGkyc3ZnID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gaGFzUHJlZml4QW5kSWNvbihub2RlKSB7XG4gIHZhciBwcmVmaXggPSBub2RlLmdldEF0dHJpYnV0ZSA/IG5vZGUuZ2V0QXR0cmlidXRlKERBVEFfUFJFRklYKSA6IG51bGw7XG4gIHZhciBpY29uID0gbm9kZS5nZXRBdHRyaWJ1dGUgPyBub2RlLmdldEF0dHJpYnV0ZShEQVRBX0lDT04pIDogbnVsbDtcbiAgcmV0dXJuIHByZWZpeCAmJiBpY29uO1xufVxuXG5mdW5jdGlvbiBoYXNCZWVuUmVwbGFjZWQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLmNsYXNzTGlzdCAmJiBub2RlLmNsYXNzTGlzdC5jb250YWlucyAmJiBub2RlLmNsYXNzTGlzdC5jb250YWlucyhjb25maWcucmVwbGFjZW1lbnRDbGFzcyk7XG59XG5cbmZ1bmN0aW9uIGdldE11dGF0b3IoKSB7XG4gIGlmIChjb25maWcuYXV0b1JlcGxhY2VTdmcgPT09IHRydWUpIHtcbiAgICByZXR1cm4gbXV0YXRvcnMucmVwbGFjZTtcbiAgfVxuXG4gIHZhciBtdXRhdG9yID0gbXV0YXRvcnNbY29uZmlnLmF1dG9SZXBsYWNlU3ZnXTtcbiAgcmV0dXJuIG11dGF0b3IgfHwgbXV0YXRvcnMucmVwbGFjZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKHRhZykge1xuICByZXR1cm4gRE9DVU1FTlQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHRhZyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnKSB7XG4gIHJldHVybiBET0NVTUVOVC5jcmVhdGVFbGVtZW50KHRhZyk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRTVkcoYWJzdHJhY3RPYmopIHtcbiAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhciBfcGFyYW1zJGNlRm4gPSBwYXJhbXMuY2VGbixcbiAgICAgIGNlRm4gPSBfcGFyYW1zJGNlRm4gPT09IHZvaWQgMCA/IGFic3RyYWN0T2JqLnRhZyA9PT0gJ3N2ZycgPyBjcmVhdGVFbGVtZW50TlMgOiBjcmVhdGVFbGVtZW50IDogX3BhcmFtcyRjZUZuO1xuXG4gIGlmICh0eXBlb2YgYWJzdHJhY3RPYmogPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIERPQ1VNRU5ULmNyZWF0ZVRleHROb2RlKGFic3RyYWN0T2JqKTtcbiAgfVxuXG4gIHZhciB0YWcgPSBjZUZuKGFic3RyYWN0T2JqLnRhZyk7XG4gIE9iamVjdC5rZXlzKGFic3RyYWN0T2JqLmF0dHJpYnV0ZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHRhZy5zZXRBdHRyaWJ1dGUoa2V5LCBhYnN0cmFjdE9iai5hdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcbiAgdmFyIGNoaWxkcmVuID0gYWJzdHJhY3RPYmouY2hpbGRyZW4gfHwgW107XG4gIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdGFnLmFwcGVuZENoaWxkKGNvbnZlcnRTVkcoY2hpbGQsIHtcbiAgICAgIGNlRm46IGNlRm5cbiAgICB9KSk7XG4gIH0pO1xuICByZXR1cm4gdGFnO1xufVxuXG5mdW5jdGlvbiBub2RlQXNDb21tZW50KG5vZGUpIHtcbiAgdmFyIGNvbW1lbnQgPSBcIiBcIi5jb25jYXQobm9kZS5vdXRlckhUTUwsIFwiIFwiKTtcbiAgLyogQkVHSU4uQVRUUklCVVRJT04gKi9cblxuICBjb21tZW50ID0gXCJcIi5jb25jYXQoY29tbWVudCwgXCJGb250IEF3ZXNvbWUgZm9udGF3ZXNvbWUuY29tIFwiKTtcbiAgLyogRU5ELkFUVFJJQlVUSU9OICovXG5cbiAgcmV0dXJuIGNvbW1lbnQ7XG59XG5cbnZhciBtdXRhdG9ycyA9IHtcbiAgcmVwbGFjZTogZnVuY3Rpb24gcmVwbGFjZShtdXRhdGlvbikge1xuICAgIHZhciBub2RlID0gbXV0YXRpb25bMF07XG5cbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBtdXRhdGlvblsxXS5mb3JFYWNoKGZ1bmN0aW9uIChhYnN0cmFjdCkge1xuICAgICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNvbnZlcnRTVkcoYWJzdHJhY3QpLCBub2RlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoREFUQV9GQV9JMlNWRykgPT09IG51bGwgJiYgY29uZmlnLmtlZXBPcmlnaW5hbFNvdXJjZSkge1xuICAgICAgICB2YXIgY29tbWVudCA9IERPQ1VNRU5ULmNyZWF0ZUNvbW1lbnQobm9kZUFzQ29tbWVudChub2RlKSk7XG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY29tbWVudCwgbm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnJlbW92ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbmVzdDogZnVuY3Rpb24gbmVzdChtdXRhdGlvbikge1xuICAgIHZhciBub2RlID0gbXV0YXRpb25bMF07XG4gICAgdmFyIGFic3RyYWN0ID0gbXV0YXRpb25bMV07IC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIHJlcGxhY2VkIG5vZGUgd2UgZG8gbm90IHdhbnQgdG8gY29udGludWUgbmVzdGluZyB3aXRoaW4gaXQuXG4gICAgLy8gU2hvcnQtY2lyY3VpdCB0byB0aGUgc3RhbmRhcmQgcmVwbGFjZW1lbnRcblxuICAgIGlmICh+Y2xhc3NBcnJheShub2RlKS5pbmRleE9mKGNvbmZpZy5yZXBsYWNlbWVudENsYXNzKSkge1xuICAgICAgcmV0dXJuIG11dGF0b3JzLnJlcGxhY2UobXV0YXRpb24pO1xuICAgIH1cblxuICAgIHZhciBmb3JTdmcgPSBuZXcgUmVnRXhwKFwiXCIuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLS4qXCIpKTtcbiAgICBkZWxldGUgYWJzdHJhY3RbMF0uYXR0cmlidXRlcy5pZDtcblxuICAgIGlmIChhYnN0cmFjdFswXS5hdHRyaWJ1dGVzLmNsYXNzKSB7XG4gICAgICB2YXIgc3BsaXRDbGFzc2VzID0gYWJzdHJhY3RbMF0uYXR0cmlidXRlcy5jbGFzcy5zcGxpdCgnICcpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjbHMpIHtcbiAgICAgICAgaWYgKGNscyA9PT0gY29uZmlnLnJlcGxhY2VtZW50Q2xhc3MgfHwgY2xzLm1hdGNoKGZvclN2ZykpIHtcbiAgICAgICAgICBhY2MudG9TdmcucHVzaChjbHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjYy50b05vZGUucHVzaChjbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHtcbiAgICAgICAgdG9Ob2RlOiBbXSxcbiAgICAgICAgdG9Tdmc6IFtdXG4gICAgICB9KTtcbiAgICAgIGFic3RyYWN0WzBdLmF0dHJpYnV0ZXMuY2xhc3MgPSBzcGxpdENsYXNzZXMudG9Tdmcuam9pbignICcpO1xuXG4gICAgICBpZiAoc3BsaXRDbGFzc2VzLnRvTm9kZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBzcGxpdENsYXNzZXMudG9Ob2RlLmpvaW4oJyAnKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5ld0lubmVySFRNTCA9IGFic3RyYWN0Lm1hcChmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIHRvSHRtbChhKTtcbiAgICB9KS5qb2luKCdcXG4nKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShEQVRBX0ZBX0kyU1ZHLCAnJyk7XG4gICAgbm9kZS5pbm5lckhUTUwgPSBuZXdJbm5lckhUTUw7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHBlcmZvcm1PcGVyYXRpb25TeW5jKG9wKSB7XG4gIG9wKCk7XG59XG5cbmZ1bmN0aW9uIHBlcmZvcm0obXV0YXRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgY2FsbGJhY2tGdW5jdGlvbiA9IHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyA/IGNhbGxiYWNrIDogbm9vcCQyO1xuXG4gIGlmIChtdXRhdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgY2FsbGJhY2tGdW5jdGlvbigpO1xuICB9IGVsc2Uge1xuICAgIHZhciBmcmFtZSA9IHBlcmZvcm1PcGVyYXRpb25TeW5jO1xuXG4gICAgaWYgKGNvbmZpZy5tdXRhdGVBcHByb2FjaCA9PT0gTVVUQVRJT05fQVBQUk9BQ0hfQVNZTkMpIHtcbiAgICAgIGZyYW1lID0gV0lORE9XLnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBwZXJmb3JtT3BlcmF0aW9uU3luYztcbiAgICB9XG5cbiAgICBmcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbXV0YXRvciA9IGdldE11dGF0b3IoKTtcbiAgICAgIHZhciBtYXJrID0gcGVyZi5iZWdpbignbXV0YXRlJyk7XG4gICAgICBtdXRhdGlvbnMubWFwKG11dGF0b3IpO1xuICAgICAgbWFyaygpO1xuICAgICAgY2FsbGJhY2tGdW5jdGlvbigpO1xuICAgIH0pO1xuICB9XG59XG52YXIgZGlzYWJsZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIGRpc2FibGVPYnNlcnZhdGlvbigpIHtcbiAgZGlzYWJsZWQgPSB0cnVlO1xufVxuZnVuY3Rpb24gZW5hYmxlT2JzZXJ2YXRpb24oKSB7XG4gIGRpc2FibGVkID0gZmFsc2U7XG59XG52YXIgbW8gPSBudWxsO1xuZnVuY3Rpb24gb2JzZXJ2ZShvcHRpb25zKSB7XG4gIGlmICghTVVUQVRJT05fT0JTRVJWRVIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWNvbmZpZy5vYnNlcnZlTXV0YXRpb25zKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJHRyZWVDYWxsYmFjayA9IG9wdGlvbnMudHJlZUNhbGxiYWNrLFxuICAgICAgdHJlZUNhbGxiYWNrID0gX29wdGlvbnMkdHJlZUNhbGxiYWNrID09PSB2b2lkIDAgPyBub29wJDIgOiBfb3B0aW9ucyR0cmVlQ2FsbGJhY2ssXG4gICAgICBfb3B0aW9ucyRub2RlQ2FsbGJhY2sgPSBvcHRpb25zLm5vZGVDYWxsYmFjayxcbiAgICAgIG5vZGVDYWxsYmFjayA9IF9vcHRpb25zJG5vZGVDYWxsYmFjayA9PT0gdm9pZCAwID8gbm9vcCQyIDogX29wdGlvbnMkbm9kZUNhbGxiYWNrLFxuICAgICAgX29wdGlvbnMkcHNldWRvRWxlbWVuID0gb3B0aW9ucy5wc2V1ZG9FbGVtZW50c0NhbGxiYWNrLFxuICAgICAgcHNldWRvRWxlbWVudHNDYWxsYmFjayA9IF9vcHRpb25zJHBzZXVkb0VsZW1lbiA9PT0gdm9pZCAwID8gbm9vcCQyIDogX29wdGlvbnMkcHNldWRvRWxlbWVuLFxuICAgICAgX29wdGlvbnMkb2JzZXJ2ZU11dGF0ID0gb3B0aW9ucy5vYnNlcnZlTXV0YXRpb25zUm9vdCxcbiAgICAgIG9ic2VydmVNdXRhdGlvbnNSb290ID0gX29wdGlvbnMkb2JzZXJ2ZU11dGF0ID09PSB2b2lkIDAgPyBET0NVTUVOVCA6IF9vcHRpb25zJG9ic2VydmVNdXRhdDtcbiAgbW8gPSBuZXcgTVVUQVRJT05fT0JTRVJWRVIoZnVuY3Rpb24gKG9iamVjdHMpIHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICB2YXIgZGVmYXVsdFByZWZpeCA9IGdldERlZmF1bHRVc2FibGVQcmVmaXgoKTtcbiAgICB0b0FycmF5KG9iamVjdHMpLmZvckVhY2goZnVuY3Rpb24gKG11dGF0aW9uUmVjb3JkKSB7XG4gICAgICBpZiAobXV0YXRpb25SZWNvcmQudHlwZSA9PT0gJ2NoaWxkTGlzdCcgJiYgbXV0YXRpb25SZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggPiAwICYmICFpc1dhdGNoZWQobXV0YXRpb25SZWNvcmQuYWRkZWROb2Rlc1swXSkpIHtcbiAgICAgICAgaWYgKGNvbmZpZy5zZWFyY2hQc2V1ZG9FbGVtZW50cykge1xuICAgICAgICAgIHBzZXVkb0VsZW1lbnRzQ2FsbGJhY2sobXV0YXRpb25SZWNvcmQudGFyZ2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyZWVDYWxsYmFjayhtdXRhdGlvblJlY29yZC50YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAobXV0YXRpb25SZWNvcmQudHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICYmIG11dGF0aW9uUmVjb3JkLnRhcmdldC5wYXJlbnROb2RlICYmIGNvbmZpZy5zZWFyY2hQc2V1ZG9FbGVtZW50cykge1xuICAgICAgICBwc2V1ZG9FbGVtZW50c0NhbGxiYWNrKG11dGF0aW9uUmVjb3JkLnRhcmdldC5wYXJlbnROb2RlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG11dGF0aW9uUmVjb3JkLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiBpc1dhdGNoZWQobXV0YXRpb25SZWNvcmQudGFyZ2V0KSAmJiB+QVRUUklCVVRFU19XQVRDSEVEX0ZPUl9NVVRBVElPTi5pbmRleE9mKG11dGF0aW9uUmVjb3JkLmF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgIGlmIChtdXRhdGlvblJlY29yZC5hdHRyaWJ1dGVOYW1lID09PSAnY2xhc3MnICYmIGhhc1ByZWZpeEFuZEljb24obXV0YXRpb25SZWNvcmQudGFyZ2V0KSkge1xuICAgICAgICAgIHZhciBfZ2V0Q2Fub25pY2FsSWNvbiA9IGdldENhbm9uaWNhbEljb24oY2xhc3NBcnJheShtdXRhdGlvblJlY29yZC50YXJnZXQpKSxcbiAgICAgICAgICAgICAgcHJlZml4ID0gX2dldENhbm9uaWNhbEljb24ucHJlZml4LFxuICAgICAgICAgICAgICBpY29uTmFtZSA9IF9nZXRDYW5vbmljYWxJY29uLmljb25OYW1lO1xuXG4gICAgICAgICAgbXV0YXRpb25SZWNvcmQudGFyZ2V0LnNldEF0dHJpYnV0ZShEQVRBX1BSRUZJWCwgcHJlZml4IHx8IGRlZmF1bHRQcmVmaXgpO1xuICAgICAgICAgIGlmIChpY29uTmFtZSkgbXV0YXRpb25SZWNvcmQudGFyZ2V0LnNldEF0dHJpYnV0ZShEQVRBX0lDT04sIGljb25OYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXNCZWVuUmVwbGFjZWQobXV0YXRpb25SZWNvcmQudGFyZ2V0KSkge1xuICAgICAgICAgIG5vZGVDYWxsYmFjayhtdXRhdGlvblJlY29yZC50YXJnZXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBpZiAoIUlTX0RPTSkgcmV0dXJuO1xuICBtby5vYnNlcnZlKG9ic2VydmVNdXRhdGlvbnNSb290LCB7XG4gICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbiAgICBzdWJ0cmVlOiB0cnVlXG4gIH0pO1xufVxuZnVuY3Rpb24gZGlzY29ubmVjdCgpIHtcbiAgaWYgKCFtbykgcmV0dXJuO1xuICBtby5kaXNjb25uZWN0KCk7XG59XG5cbmZ1bmN0aW9uIHN0eWxlUGFyc2VyIChub2RlKSB7XG4gIHZhciBzdHlsZSA9IG5vZGUuZ2V0QXR0cmlidXRlKCdzdHlsZScpO1xuICB2YXIgdmFsID0gW107XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgdmFsID0gc3R5bGUuc3BsaXQoJzsnKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgc3R5bGUpIHtcbiAgICAgIHZhciBzdHlsZXMgPSBzdHlsZS5zcGxpdCgnOicpO1xuICAgICAgdmFyIHByb3AgPSBzdHlsZXNbMF07XG4gICAgICB2YXIgdmFsdWUgPSBzdHlsZXMuc2xpY2UoMSk7XG5cbiAgICAgIGlmIChwcm9wICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWNjW3Byb3BdID0gdmFsdWUuam9pbignOicpLnRyaW0oKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBjbGFzc1BhcnNlciAobm9kZSkge1xuICB2YXIgZXhpc3RpbmdQcmVmaXggPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1wcmVmaXgnKTtcbiAgdmFyIGV4aXN0aW5nSWNvbk5hbWUgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1pY29uJyk7XG4gIHZhciBpbm5lclRleHQgPSBub2RlLmlubmVyVGV4dCAhPT0gdW5kZWZpbmVkID8gbm9kZS5pbm5lclRleHQudHJpbSgpIDogJyc7XG4gIHZhciB2YWwgPSBnZXRDYW5vbmljYWxJY29uKGNsYXNzQXJyYXkobm9kZSkpO1xuXG4gIGlmICghdmFsLnByZWZpeCkge1xuICAgIHZhbC5wcmVmaXggPSBnZXREZWZhdWx0VXNhYmxlUHJlZml4KCk7XG4gIH1cblxuICBpZiAoZXhpc3RpbmdQcmVmaXggJiYgZXhpc3RpbmdJY29uTmFtZSkge1xuICAgIHZhbC5wcmVmaXggPSBleGlzdGluZ1ByZWZpeDtcbiAgICB2YWwuaWNvbk5hbWUgPSBleGlzdGluZ0ljb25OYW1lO1xuICB9XG5cbiAgaWYgKHZhbC5pY29uTmFtZSAmJiB2YWwucHJlZml4KSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGlmICh2YWwucHJlZml4ICYmIGlubmVyVGV4dC5sZW5ndGggPiAwKSB7XG4gICAgdmFsLmljb25OYW1lID0gYnlMaWdhdHVyZSh2YWwucHJlZml4LCBub2RlLmlubmVyVGV4dCkgfHwgYnlVbmljb2RlKHZhbC5wcmVmaXgsIHRvSGV4KG5vZGUuaW5uZXJUZXh0KSk7XG4gIH1cblxuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBhdHRyaWJ1dGVzUGFyc2VyIChub2RlKSB7XG4gIHZhciBleHRyYUF0dHJpYnV0ZXMgPSB0b0FycmF5KG5vZGUuYXR0cmlidXRlcykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGF0dHIpIHtcbiAgICBpZiAoYWNjLm5hbWUgIT09ICdjbGFzcycgJiYgYWNjLm5hbWUgIT09ICdzdHlsZScpIHtcbiAgICAgIGFjY1thdHRyLm5hbWVdID0gYXR0ci52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHZhciB0aXRsZSA9IG5vZGUuZ2V0QXR0cmlidXRlKCd0aXRsZScpO1xuICB2YXIgdGl0bGVJZCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWZhLXRpdGxlLWlkJyk7XG5cbiAgaWYgKGNvbmZpZy5hdXRvQTExeSkge1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgZXh0cmFBdHRyaWJ1dGVzWydhcmlhLWxhYmVsbGVkYnknXSA9IFwiXCIuY29uY2F0KGNvbmZpZy5yZXBsYWNlbWVudENsYXNzLCBcIi10aXRsZS1cIikuY29uY2F0KHRpdGxlSWQgfHwgbmV4dFVuaXF1ZUlkKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHRyYUF0dHJpYnV0ZXNbJ2FyaWEtaGlkZGVuJ10gPSAndHJ1ZSc7XG4gICAgICBleHRyYUF0dHJpYnV0ZXNbJ2ZvY3VzYWJsZSddID0gJ2ZhbHNlJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXh0cmFBdHRyaWJ1dGVzO1xufVxuXG5mdW5jdGlvbiBibGFua01ldGEoKSB7XG4gIHJldHVybiB7XG4gICAgaWNvbk5hbWU6IG51bGwsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdGl0bGVJZDogbnVsbCxcbiAgICBwcmVmaXg6IG51bGwsXG4gICAgdHJhbnNmb3JtOiBtZWFuaW5nbGVzc1RyYW5zZm9ybSxcbiAgICBzeW1ib2w6IGZhbHNlLFxuICAgIG1hc2s6IHtcbiAgICAgIGljb25OYW1lOiBudWxsLFxuICAgICAgcHJlZml4OiBudWxsLFxuICAgICAgcmVzdDogW11cbiAgICB9LFxuICAgIG1hc2tJZDogbnVsbCxcbiAgICBleHRyYToge1xuICAgICAgY2xhc3NlczogW10sXG4gICAgICBzdHlsZXM6IHt9LFxuICAgICAgYXR0cmlidXRlczoge31cbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBwYXJzZU1ldGEobm9kZSkge1xuICB2YXIgcGFyc2VyID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7XG4gICAgc3R5bGVQYXJzZXI6IHRydWVcbiAgfTtcblxuICB2YXIgX2NsYXNzUGFyc2VyID0gY2xhc3NQYXJzZXIobm9kZSksXG4gICAgICBpY29uTmFtZSA9IF9jbGFzc1BhcnNlci5pY29uTmFtZSxcbiAgICAgIHByZWZpeCA9IF9jbGFzc1BhcnNlci5wcmVmaXgsXG4gICAgICBleHRyYUNsYXNzZXMgPSBfY2xhc3NQYXJzZXIucmVzdDtcblxuICB2YXIgZXh0cmFBdHRyaWJ1dGVzID0gYXR0cmlidXRlc1BhcnNlcihub2RlKTtcbiAgdmFyIHBsdWdpbk1ldGEgPSBjaGFpbkhvb2tzKCdwYXJzZU5vZGVBdHRyaWJ1dGVzJywge30sIG5vZGUpO1xuICB2YXIgZXh0cmFTdHlsZXMgPSBwYXJzZXIuc3R5bGVQYXJzZXIgPyBzdHlsZVBhcnNlcihub2RlKSA6IFtdO1xuICByZXR1cm4gX29iamVjdFNwcmVhZDIoe1xuICAgIGljb25OYW1lOiBpY29uTmFtZSxcbiAgICB0aXRsZTogbm9kZS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksXG4gICAgdGl0bGVJZDogbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmEtdGl0bGUtaWQnKSxcbiAgICBwcmVmaXg6IHByZWZpeCxcbiAgICB0cmFuc2Zvcm06IG1lYW5pbmdsZXNzVHJhbnNmb3JtLFxuICAgIG1hc2s6IHtcbiAgICAgIGljb25OYW1lOiBudWxsLFxuICAgICAgcHJlZml4OiBudWxsLFxuICAgICAgcmVzdDogW11cbiAgICB9LFxuICAgIG1hc2tJZDogbnVsbCxcbiAgICBzeW1ib2w6IGZhbHNlLFxuICAgIGV4dHJhOiB7XG4gICAgICBjbGFzc2VzOiBleHRyYUNsYXNzZXMsXG4gICAgICBzdHlsZXM6IGV4dHJhU3R5bGVzLFxuICAgICAgYXR0cmlidXRlczogZXh0cmFBdHRyaWJ1dGVzXG4gICAgfVxuICB9LCBwbHVnaW5NZXRhKTtcbn1cblxudmFyIHN0eWxlcyQyID0gbmFtZXNwYWNlLnN0eWxlcztcblxuZnVuY3Rpb24gZ2VuZXJhdGVNdXRhdGlvbihub2RlKSB7XG4gIHZhciBub2RlTWV0YSA9IGNvbmZpZy5hdXRvUmVwbGFjZVN2ZyA9PT0gJ25lc3QnID8gcGFyc2VNZXRhKG5vZGUsIHtcbiAgICBzdHlsZVBhcnNlcjogZmFsc2VcbiAgfSkgOiBwYXJzZU1ldGEobm9kZSk7XG5cbiAgaWYgKH5ub2RlTWV0YS5leHRyYS5jbGFzc2VzLmluZGV4T2YoTEFZRVJTX1RFWFRfQ0xBU1NOQU1FKSkge1xuICAgIHJldHVybiBjYWxsUHJvdmlkZWQoJ2dlbmVyYXRlTGF5ZXJzVGV4dCcsIG5vZGUsIG5vZGVNZXRhKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FsbFByb3ZpZGVkKCdnZW5lcmF0ZVN2Z1JlcGxhY2VtZW50TXV0YXRpb24nLCBub2RlLCBub2RlTWV0YSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb25UcmVlKHJvb3QpIHtcbiAgdmFyIGNhbGxiYWNrID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBudWxsO1xuICBpZiAoIUlTX0RPTSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB2YXIgaHRtbENsYXNzTGlzdCA9IERPQ1VNRU5ULmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3Q7XG5cbiAgdmFyIGhjbEFkZCA9IGZ1bmN0aW9uIGhjbEFkZChzdWZmaXgpIHtcbiAgICByZXR1cm4gaHRtbENsYXNzTGlzdC5hZGQoXCJcIi5jb25jYXQoSFRNTF9DTEFTU19JMlNWR19CQVNFX0NMQVNTLCBcIi1cIikuY29uY2F0KHN1ZmZpeCkpO1xuICB9O1xuXG4gIHZhciBoY2xSZW1vdmUgPSBmdW5jdGlvbiBoY2xSZW1vdmUoc3VmZml4KSB7XG4gICAgcmV0dXJuIGh0bWxDbGFzc0xpc3QucmVtb3ZlKFwiXCIuY29uY2F0KEhUTUxfQ0xBU1NfSTJTVkdfQkFTRV9DTEFTUywgXCItXCIpLmNvbmNhdChzdWZmaXgpKTtcbiAgfTtcblxuICB2YXIgcHJlZml4ZXMgPSBjb25maWcuYXV0b0ZldGNoU3ZnID8gT2JqZWN0LmtleXMoUFJFRklYX1RPX1NUWUxFKSA6IE9iamVjdC5rZXlzKHN0eWxlcyQyKTtcbiAgdmFyIHByZWZpeGVzRG9tUXVlcnkgPSBbXCIuXCIuY29uY2F0KExBWUVSU19URVhUX0NMQVNTTkFNRSwgXCI6bm90KFtcIikuY29uY2F0KERBVEFfRkFfSTJTVkcsIFwiXSlcIildLmNvbmNhdChwcmVmaXhlcy5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICByZXR1cm4gXCIuXCIuY29uY2F0KHAsIFwiOm5vdChbXCIpLmNvbmNhdChEQVRBX0ZBX0kyU1ZHLCBcIl0pXCIpO1xuICB9KSkuam9pbignLCAnKTtcblxuICBpZiAocHJlZml4ZXNEb21RdWVyeS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICB2YXIgY2FuZGlkYXRlcyA9IFtdO1xuXG4gIHRyeSB7XG4gICAgY2FuZGlkYXRlcyA9IHRvQXJyYXkocm9vdC5xdWVyeVNlbGVjdG9yQWxsKHByZWZpeGVzRG9tUXVlcnkpKTtcbiAgfSBjYXRjaCAoZSkgey8vIG5vb3BcbiAgfVxuXG4gIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICBoY2xBZGQoJ3BlbmRpbmcnKTtcbiAgICBoY2xSZW1vdmUoJ2NvbXBsZXRlJyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgdmFyIG1hcmsgPSBwZXJmLmJlZ2luKCdvblRyZWUnKTtcbiAgdmFyIG11dGF0aW9ucyA9IGNhbmRpZGF0ZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIG5vZGUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIG11dGF0aW9uID0gZ2VuZXJhdGVNdXRhdGlvbihub2RlKTtcblxuICAgICAgaWYgKG11dGF0aW9uKSB7XG4gICAgICAgIGFjYy5wdXNoKG11dGF0aW9uKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIVBST0RVQ1RJT04pIHtcbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ01pc3NpbmdJY29uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgUHJvbWlzZS5hbGwobXV0YXRpb25zKS50aGVuKGZ1bmN0aW9uIChyZXNvbHZlZE11dGF0aW9ucykge1xuICAgICAgcGVyZm9ybShyZXNvbHZlZE11dGF0aW9ucywgZnVuY3Rpb24gKCkge1xuICAgICAgICBoY2xBZGQoJ2FjdGl2ZScpO1xuICAgICAgICBoY2xBZGQoJ2NvbXBsZXRlJyk7XG4gICAgICAgIGhjbFJlbW92ZSgncGVuZGluZycpO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSBjYWxsYmFjaygpO1xuICAgICAgICBtYXJrKCk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICBtYXJrKCk7XG4gICAgICByZWplY3QoZSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvbk5vZGUobm9kZSkge1xuICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gIGdlbmVyYXRlTXV0YXRpb24obm9kZSkudGhlbihmdW5jdGlvbiAobXV0YXRpb24pIHtcbiAgICBpZiAobXV0YXRpb24pIHtcbiAgICAgIHBlcmZvcm0oW211dGF0aW9uXSwgY2FsbGJhY2spO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVJY29ucyhuZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAobWF5YmVJY29uRGVmaW5pdGlvbikge1xuICAgIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgIHZhciBpY29uRGVmaW5pdGlvbiA9IChtYXliZUljb25EZWZpbml0aW9uIHx8IHt9KS5pY29uID8gbWF5YmVJY29uRGVmaW5pdGlvbiA6IGZpbmRJY29uRGVmaW5pdGlvbihtYXliZUljb25EZWZpbml0aW9uIHx8IHt9KTtcbiAgICB2YXIgbWFzayA9IHBhcmFtcy5tYXNrO1xuXG4gICAgaWYgKG1hc2spIHtcbiAgICAgIG1hc2sgPSAobWFzayB8fCB7fSkuaWNvbiA/IG1hc2sgOiBmaW5kSWNvbkRlZmluaXRpb24obWFzayB8fCB7fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQoaWNvbkRlZmluaXRpb24sIF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBwYXJhbXMpLCB7fSwge1xuICAgICAgbWFzazogbWFza1xuICAgIH0pKTtcbiAgfTtcbn1cblxudmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihpY29uRGVmaW5pdGlvbikge1xuICB2YXIgcGFyYW1zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgdmFyIF9wYXJhbXMkdHJhbnNmb3JtID0gcGFyYW1zLnRyYW5zZm9ybSxcbiAgICAgIHRyYW5zZm9ybSA9IF9wYXJhbXMkdHJhbnNmb3JtID09PSB2b2lkIDAgPyBtZWFuaW5nbGVzc1RyYW5zZm9ybSA6IF9wYXJhbXMkdHJhbnNmb3JtLFxuICAgICAgX3BhcmFtcyRzeW1ib2wgPSBwYXJhbXMuc3ltYm9sLFxuICAgICAgc3ltYm9sID0gX3BhcmFtcyRzeW1ib2wgPT09IHZvaWQgMCA/IGZhbHNlIDogX3BhcmFtcyRzeW1ib2wsXG4gICAgICBfcGFyYW1zJG1hc2sgPSBwYXJhbXMubWFzayxcbiAgICAgIG1hc2sgPSBfcGFyYW1zJG1hc2sgPT09IHZvaWQgMCA/IG51bGwgOiBfcGFyYW1zJG1hc2ssXG4gICAgICBfcGFyYW1zJG1hc2tJZCA9IHBhcmFtcy5tYXNrSWQsXG4gICAgICBtYXNrSWQgPSBfcGFyYW1zJG1hc2tJZCA9PT0gdm9pZCAwID8gbnVsbCA6IF9wYXJhbXMkbWFza0lkLFxuICAgICAgX3BhcmFtcyR0aXRsZSA9IHBhcmFtcy50aXRsZSxcbiAgICAgIHRpdGxlID0gX3BhcmFtcyR0aXRsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9wYXJhbXMkdGl0bGUsXG4gICAgICBfcGFyYW1zJHRpdGxlSWQgPSBwYXJhbXMudGl0bGVJZCxcbiAgICAgIHRpdGxlSWQgPSBfcGFyYW1zJHRpdGxlSWQgPT09IHZvaWQgMCA/IG51bGwgOiBfcGFyYW1zJHRpdGxlSWQsXG4gICAgICBfcGFyYW1zJGNsYXNzZXMgPSBwYXJhbXMuY2xhc3NlcyxcbiAgICAgIGNsYXNzZXMgPSBfcGFyYW1zJGNsYXNzZXMgPT09IHZvaWQgMCA/IFtdIDogX3BhcmFtcyRjbGFzc2VzLFxuICAgICAgX3BhcmFtcyRhdHRyaWJ1dGVzID0gcGFyYW1zLmF0dHJpYnV0ZXMsXG4gICAgICBhdHRyaWJ1dGVzID0gX3BhcmFtcyRhdHRyaWJ1dGVzID09PSB2b2lkIDAgPyB7fSA6IF9wYXJhbXMkYXR0cmlidXRlcyxcbiAgICAgIF9wYXJhbXMkc3R5bGVzID0gcGFyYW1zLnN0eWxlcyxcbiAgICAgIHN0eWxlcyA9IF9wYXJhbXMkc3R5bGVzID09PSB2b2lkIDAgPyB7fSA6IF9wYXJhbXMkc3R5bGVzO1xuICBpZiAoIWljb25EZWZpbml0aW9uKSByZXR1cm47XG4gIHZhciBwcmVmaXggPSBpY29uRGVmaW5pdGlvbi5wcmVmaXgsXG4gICAgICBpY29uTmFtZSA9IGljb25EZWZpbml0aW9uLmljb25OYW1lLFxuICAgICAgaWNvbiA9IGljb25EZWZpbml0aW9uLmljb247XG4gIHJldHVybiBkb21WYXJpYW50cyhfb2JqZWN0U3ByZWFkMih7XG4gICAgdHlwZTogJ2ljb24nXG4gIH0sIGljb25EZWZpbml0aW9uKSwgZnVuY3Rpb24gKCkge1xuICAgIGNhbGxIb29rcygnYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uJywge1xuICAgICAgaWNvbkRlZmluaXRpb246IGljb25EZWZpbml0aW9uLFxuICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICB9KTtcblxuICAgIGlmIChjb25maWcuYXV0b0ExMXkpIHtcbiAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICBhdHRyaWJ1dGVzWydhcmlhLWxhYmVsbGVkYnknXSA9IFwiXCIuY29uY2F0KGNvbmZpZy5yZXBsYWNlbWVudENsYXNzLCBcIi10aXRsZS1cIikuY29uY2F0KHRpdGxlSWQgfHwgbmV4dFVuaXF1ZUlkKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0cmlidXRlc1snYXJpYS1oaWRkZW4nXSA9ICd0cnVlJztcbiAgICAgICAgYXR0cmlidXRlc1snZm9jdXNhYmxlJ10gPSAnZmFsc2UnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYWtlSW5saW5lU3ZnQWJzdHJhY3Qoe1xuICAgICAgaWNvbnM6IHtcbiAgICAgICAgbWFpbjogYXNGb3VuZEljb24oaWNvbiksXG4gICAgICAgIG1hc2s6IG1hc2sgPyBhc0ZvdW5kSWNvbihtYXNrLmljb24pIDoge1xuICAgICAgICAgIGZvdW5kOiBmYWxzZSxcbiAgICAgICAgICB3aWR0aDogbnVsbCxcbiAgICAgICAgICBoZWlnaHQ6IG51bGwsXG4gICAgICAgICAgaWNvbjoge31cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHByZWZpeDogcHJlZml4LFxuICAgICAgaWNvbk5hbWU6IGljb25OYW1lLFxuICAgICAgdHJhbnNmb3JtOiBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgbWVhbmluZ2xlc3NUcmFuc2Zvcm0pLCB0cmFuc2Zvcm0pLFxuICAgICAgc3ltYm9sOiBzeW1ib2wsXG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICBtYXNrSWQ6IG1hc2tJZCxcbiAgICAgIHRpdGxlSWQ6IHRpdGxlSWQsXG4gICAgICBleHRyYToge1xuICAgICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgICAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICAgICAgY2xhc3NlczogY2xhc3Nlc1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG52YXIgUmVwbGFjZUVsZW1lbnRzID0ge1xuICBtaXhvdXQ6IGZ1bmN0aW9uIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvbjogcmVzb2x2ZUljb25zKHJlbmRlcilcbiAgICB9O1xuICB9LFxuICBob29rczogZnVuY3Rpb24gaG9va3MoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3M6IGZ1bmN0aW9uIG11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3MoYWNjdW11bGF0b3IpIHtcbiAgICAgICAgYWNjdW11bGF0b3IudHJlZUNhbGxiYWNrID0gb25UcmVlO1xuICAgICAgICBhY2N1bXVsYXRvci5ub2RlQ2FsbGJhY2sgPSBvbk5vZGU7XG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBwcm92aWRlczogZnVuY3Rpb24gcHJvdmlkZXMocHJvdmlkZXJzJCQxKSB7XG4gICAgcHJvdmlkZXJzJCQxLmkyc3ZnID0gZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgdmFyIF9wYXJhbXMkbm9kZSA9IHBhcmFtcy5ub2RlLFxuICAgICAgICAgIG5vZGUgPSBfcGFyYW1zJG5vZGUgPT09IHZvaWQgMCA/IERPQ1VNRU5UIDogX3BhcmFtcyRub2RlLFxuICAgICAgICAgIF9wYXJhbXMkY2FsbGJhY2sgPSBwYXJhbXMuY2FsbGJhY2ssXG4gICAgICAgICAgY2FsbGJhY2sgPSBfcGFyYW1zJGNhbGxiYWNrID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9wYXJhbXMkY2FsbGJhY2s7XG4gICAgICByZXR1cm4gb25UcmVlKG5vZGUsIGNhbGxiYWNrKTtcbiAgICB9O1xuXG4gICAgcHJvdmlkZXJzJCQxLmdlbmVyYXRlU3ZnUmVwbGFjZW1lbnRNdXRhdGlvbiA9IGZ1bmN0aW9uIChub2RlLCBub2RlTWV0YSkge1xuICAgICAgdmFyIGljb25OYW1lID0gbm9kZU1ldGEuaWNvbk5hbWUsXG4gICAgICAgICAgdGl0bGUgPSBub2RlTWV0YS50aXRsZSxcbiAgICAgICAgICB0aXRsZUlkID0gbm9kZU1ldGEudGl0bGVJZCxcbiAgICAgICAgICBwcmVmaXggPSBub2RlTWV0YS5wcmVmaXgsXG4gICAgICAgICAgdHJhbnNmb3JtID0gbm9kZU1ldGEudHJhbnNmb3JtLFxuICAgICAgICAgIHN5bWJvbCA9IG5vZGVNZXRhLnN5bWJvbCxcbiAgICAgICAgICBtYXNrID0gbm9kZU1ldGEubWFzayxcbiAgICAgICAgICBtYXNrSWQgPSBub2RlTWV0YS5tYXNrSWQsXG4gICAgICAgICAgZXh0cmEgPSBub2RlTWV0YS5leHRyYTtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIFByb21pc2UuYWxsKFtmaW5kSWNvbihpY29uTmFtZSwgcHJlZml4KSwgbWFzay5pY29uTmFtZSA/IGZpbmRJY29uKG1hc2suaWNvbk5hbWUsIG1hc2sucHJlZml4KSA6IFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgZm91bmQ6IGZhbHNlLFxuICAgICAgICAgIHdpZHRoOiA1MTIsXG4gICAgICAgICAgaGVpZ2h0OiA1MTIsXG4gICAgICAgICAgaWNvbjoge31cbiAgICAgICAgfSldKS50aGVuKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgdmFyIF9yZWYyID0gX3NsaWNlZFRvQXJyYXkoX3JlZiwgMiksXG4gICAgICAgICAgICAgIG1haW4gPSBfcmVmMlswXSxcbiAgICAgICAgICAgICAgbWFzayA9IF9yZWYyWzFdO1xuXG4gICAgICAgICAgcmVzb2x2ZShbbm9kZSwgbWFrZUlubGluZVN2Z0Fic3RyYWN0KHtcbiAgICAgICAgICAgIGljb25zOiB7XG4gICAgICAgICAgICAgIG1haW46IG1haW4sXG4gICAgICAgICAgICAgIG1hc2s6IG1hc2tcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHByZWZpeCxcbiAgICAgICAgICAgIGljb25OYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICAgICAgICAgICAgc3ltYm9sOiBzeW1ib2wsXG4gICAgICAgICAgICBtYXNrSWQ6IG1hc2tJZCxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlSWQ6IHRpdGxlSWQsXG4gICAgICAgICAgICBleHRyYTogZXh0cmEsXG4gICAgICAgICAgICB3YXRjaGFibGU6IHRydWVcbiAgICAgICAgICB9KV0pO1xuICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHByb3ZpZGVycyQkMS5nZW5lcmF0ZUFic3RyYWN0SWNvbiA9IGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgdmFyIGNoaWxkcmVuID0gX3JlZjMuY2hpbGRyZW4sXG4gICAgICAgICAgYXR0cmlidXRlcyA9IF9yZWYzLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgbWFpbiA9IF9yZWYzLm1haW4sXG4gICAgICAgICAgdHJhbnNmb3JtID0gX3JlZjMudHJhbnNmb3JtLFxuICAgICAgICAgIHN0eWxlcyA9IF9yZWYzLnN0eWxlcztcbiAgICAgIHZhciBzdHlsZVN0cmluZyA9IGpvaW5TdHlsZXMoc3R5bGVzKTtcblxuICAgICAgaWYgKHN0eWxlU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXR0cmlidXRlc1snc3R5bGUnXSA9IHN0eWxlU3RyaW5nO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmV4dENoaWxkO1xuXG4gICAgICBpZiAodHJhbnNmb3JtSXNNZWFuaW5nZnVsKHRyYW5zZm9ybSkpIHtcbiAgICAgICAgbmV4dENoaWxkID0gY2FsbFByb3ZpZGVkKCdnZW5lcmF0ZUFic3RyYWN0VHJhbnNmb3JtR3JvdXBpbmcnLCB7XG4gICAgICAgICAgbWFpbjogbWFpbixcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybSxcbiAgICAgICAgICBjb250YWluZXJXaWR0aDogbWFpbi53aWR0aCxcbiAgICAgICAgICBpY29uV2lkdGg6IG1haW4ud2lkdGhcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNoaWxkcmVuLnB1c2gobmV4dENoaWxkIHx8IG1haW4uaWNvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcbiAgICAgIH07XG4gICAgfTtcbiAgfVxufTtcblxudmFyIExheWVycyA9IHtcbiAgbWl4b3V0OiBmdW5jdGlvbiBtaXhvdXQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxheWVyOiBmdW5jdGlvbiBsYXllcihhc3NlbWJsZXIpIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgICAgIHZhciBfcGFyYW1zJGNsYXNzZXMgPSBwYXJhbXMuY2xhc3NlcyxcbiAgICAgICAgICAgIGNsYXNzZXMgPSBfcGFyYW1zJGNsYXNzZXMgPT09IHZvaWQgMCA/IFtdIDogX3BhcmFtcyRjbGFzc2VzO1xuICAgICAgICByZXR1cm4gZG9tVmFyaWFudHMoe1xuICAgICAgICAgIHR5cGU6ICdsYXllcidcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNhbGxIb29rcygnYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uJywge1xuICAgICAgICAgICAgYXNzZW1ibGVyOiBhc3NlbWJsZXIsXG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgIGFzc2VtYmxlcihmdW5jdGlvbiAoYXJncykge1xuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShhcmdzKSA/IGFyZ3MubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uY29uY2F0KGEuYWJzdHJhY3QpO1xuICAgICAgICAgICAgfSkgOiBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdChhcmdzLmFic3RyYWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gW3tcbiAgICAgICAgICAgIHRhZzogJ3NwYW4nLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICBjbGFzczogW1wiXCIuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLWxheWVyc1wiKV0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjbGFzc2VzKSkuam9pbignICcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgICAgfV07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbnZhciBMYXllcnNDb3VudGVyID0ge1xuICBtaXhvdXQ6IGZ1bmN0aW9uIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY291bnRlcjogZnVuY3Rpb24gY291bnRlcihjb250ZW50KSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgICB2YXIgX3BhcmFtcyR0aXRsZSA9IHBhcmFtcy50aXRsZSxcbiAgICAgICAgICAgIHRpdGxlID0gX3BhcmFtcyR0aXRsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9wYXJhbXMkdGl0bGUsXG4gICAgICAgICAgICBfcGFyYW1zJGNsYXNzZXMgPSBwYXJhbXMuY2xhc3NlcyxcbiAgICAgICAgICAgIGNsYXNzZXMgPSBfcGFyYW1zJGNsYXNzZXMgPT09IHZvaWQgMCA/IFtdIDogX3BhcmFtcyRjbGFzc2VzLFxuICAgICAgICAgICAgX3BhcmFtcyRhdHRyaWJ1dGVzID0gcGFyYW1zLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gX3BhcmFtcyRhdHRyaWJ1dGVzID09PSB2b2lkIDAgPyB7fSA6IF9wYXJhbXMkYXR0cmlidXRlcyxcbiAgICAgICAgICAgIF9wYXJhbXMkc3R5bGVzID0gcGFyYW1zLnN0eWxlcyxcbiAgICAgICAgICAgIHN0eWxlcyA9IF9wYXJhbXMkc3R5bGVzID09PSB2b2lkIDAgPyB7fSA6IF9wYXJhbXMkc3R5bGVzO1xuICAgICAgICByZXR1cm4gZG9tVmFyaWFudHMoe1xuICAgICAgICAgIHR5cGU6ICdjb3VudGVyJyxcbiAgICAgICAgICBjb250ZW50OiBjb250ZW50XG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjYWxsSG9va3MoJ2JlZm9yZURPTUVsZW1lbnRDcmVhdGlvbicsIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBtYWtlTGF5ZXJzQ291bnRlckFic3RyYWN0KHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgICAgICAgICBjbGFzc2VzOiBbXCJcIi5jb25jYXQoY29uZmlnLmZhbWlseVByZWZpeCwgXCItbGF5ZXJzLWNvdW50ZXJcIildLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoY2xhc3NlcykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbnZhciBMYXllcnNUZXh0ID0ge1xuICBtaXhvdXQ6IGZ1bmN0aW9uIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogZnVuY3Rpb24gdGV4dChjb250ZW50KSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgICB2YXIgX3BhcmFtcyR0cmFuc2Zvcm0gPSBwYXJhbXMudHJhbnNmb3JtLFxuICAgICAgICAgICAgdHJhbnNmb3JtID0gX3BhcmFtcyR0cmFuc2Zvcm0gPT09IHZvaWQgMCA/IG1lYW5pbmdsZXNzVHJhbnNmb3JtIDogX3BhcmFtcyR0cmFuc2Zvcm0sXG4gICAgICAgICAgICBfcGFyYW1zJHRpdGxlID0gcGFyYW1zLnRpdGxlLFxuICAgICAgICAgICAgdGl0bGUgPSBfcGFyYW1zJHRpdGxlID09PSB2b2lkIDAgPyBudWxsIDogX3BhcmFtcyR0aXRsZSxcbiAgICAgICAgICAgIF9wYXJhbXMkY2xhc3NlcyA9IHBhcmFtcy5jbGFzc2VzLFxuICAgICAgICAgICAgY2xhc3NlcyA9IF9wYXJhbXMkY2xhc3NlcyA9PT0gdm9pZCAwID8gW10gOiBfcGFyYW1zJGNsYXNzZXMsXG4gICAgICAgICAgICBfcGFyYW1zJGF0dHJpYnV0ZXMgPSBwYXJhbXMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBfcGFyYW1zJGF0dHJpYnV0ZXMgPT09IHZvaWQgMCA/IHt9IDogX3BhcmFtcyRhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgX3BhcmFtcyRzdHlsZXMgPSBwYXJhbXMuc3R5bGVzLFxuICAgICAgICAgICAgc3R5bGVzID0gX3BhcmFtcyRzdHlsZXMgPT09IHZvaWQgMCA/IHt9IDogX3BhcmFtcyRzdHlsZXM7XG4gICAgICAgIHJldHVybiBkb21WYXJpYW50cyh7XG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNhbGxIb29rcygnYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uJywge1xuICAgICAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIG1ha2VMYXllcnNUZXh0QWJzdHJhY3Qoe1xuICAgICAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIG1lYW5pbmdsZXNzVHJhbnNmb3JtKSwgdHJhbnNmb3JtKSxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgICAgICAgICBjbGFzc2VzOiBbXCJcIi5jb25jYXQoY29uZmlnLmZhbWlseVByZWZpeCwgXCItbGF5ZXJzLXRleHRcIildLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoY2xhc3NlcykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIHByb3ZpZGVzOiBmdW5jdGlvbiBwcm92aWRlcyhwcm92aWRlcnMkJDEpIHtcbiAgICBwcm92aWRlcnMkJDEuZ2VuZXJhdGVMYXllcnNUZXh0ID0gZnVuY3Rpb24gKG5vZGUsIG5vZGVNZXRhKSB7XG4gICAgICB2YXIgdGl0bGUgPSBub2RlTWV0YS50aXRsZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gPSBub2RlTWV0YS50cmFuc2Zvcm0sXG4gICAgICAgICAgZXh0cmEgPSBub2RlTWV0YS5leHRyYTtcbiAgICAgIHZhciB3aWR0aCA9IG51bGw7XG4gICAgICB2YXIgaGVpZ2h0ID0gbnVsbDtcblxuICAgICAgaWYgKElTX0lFKSB7XG4gICAgICAgIHZhciBjb21wdXRlZEZvbnRTaXplID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5mb250U2l6ZSwgMTApO1xuICAgICAgICB2YXIgYm91bmRpbmdDbGllbnRSZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgd2lkdGggPSBib3VuZGluZ0NsaWVudFJlY3Qud2lkdGggLyBjb21wdXRlZEZvbnRTaXplO1xuICAgICAgICBoZWlnaHQgPSBib3VuZGluZ0NsaWVudFJlY3QuaGVpZ2h0IC8gY29tcHV0ZWRGb250U2l6ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5hdXRvQTExeSAmJiAhdGl0bGUpIHtcbiAgICAgICAgZXh0cmEuYXR0cmlidXRlc1snYXJpYS1oaWRkZW4nXSA9ICd0cnVlJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbbm9kZSwgbWFrZUxheWVyc1RleHRBYnN0cmFjdCh7XG4gICAgICAgIGNvbnRlbnQ6IG5vZGUuaW5uZXJIVE1MLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybSxcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICBleHRyYTogZXh0cmEsXG4gICAgICAgIHdhdGNoYWJsZTogdHJ1ZVxuICAgICAgfSldKTtcbiAgICB9O1xuICB9XG59O1xuXG52YXIgQ0xFQU5fQ09OVEVOVF9QQVRURVJOID0gbmV3IFJlZ0V4cChcIlxcXCJcIiwgJ3VnJyk7XG52YXIgU0VDT05EQVJZX1VOSUNPREVfUkFOR0UgPSBbMTEwNTkyMCwgMTExMjMxOV07XG5mdW5jdGlvbiBoZXhWYWx1ZUZyb21Db250ZW50KGNvbnRlbnQpIHtcbiAgdmFyIGNsZWFuZWQgPSBjb250ZW50LnJlcGxhY2UoQ0xFQU5fQ09OVEVOVF9QQVRURVJOLCAnJyk7XG4gIHZhciBjb2RlUG9pbnQgPSBjb2RlUG9pbnRBdChjbGVhbmVkLCAwKTtcbiAgdmFyIGlzUHJlcGVuZFRlbiA9IGNvZGVQb2ludCA+PSBTRUNPTkRBUllfVU5JQ09ERV9SQU5HRVswXSAmJiBjb2RlUG9pbnQgPD0gU0VDT05EQVJZX1VOSUNPREVfUkFOR0VbMV07XG4gIHZhciBpc0RvdWJsZWQgPSBjbGVhbmVkLmxlbmd0aCA9PT0gMiA/IGNsZWFuZWRbMF0gPT09IGNsZWFuZWRbMV0gOiBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogaXNEb3VibGVkID8gdG9IZXgoY2xlYW5lZFswXSkgOiB0b0hleChjbGVhbmVkKSxcbiAgICBpc1NlY29uZGFyeTogaXNQcmVwZW5kVGVuIHx8IGlzRG91YmxlZFxuICB9O1xufVxuXG5mdW5jdGlvbiByZXBsYWNlRm9yUG9zaXRpb24obm9kZSwgcG9zaXRpb24pIHtcbiAgdmFyIHBlbmRpbmdBdHRyaWJ1dGUgPSBcIlwiLmNvbmNhdChEQVRBX0ZBX1BTRVVET19FTEVNRU5UX1BFTkRJTkcpLmNvbmNhdChwb3NpdGlvbi5yZXBsYWNlKCc6JywgJy0nKSk7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKHBlbmRpbmdBdHRyaWJ1dGUpICE9PSBudWxsKSB7XG4gICAgICAvLyBUaGlzIG5vZGUgaXMgYWxyZWFkeSBiZWluZyBwcm9jZXNzZWRcbiAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdG9BcnJheShub2RlLmNoaWxkcmVuKTtcbiAgICB2YXIgYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQgPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGMpIHtcbiAgICAgIHJldHVybiBjLmdldEF0dHJpYnV0ZShEQVRBX0ZBX1BTRVVET19FTEVNRU5UKSA9PT0gcG9zaXRpb247XG4gICAgfSlbMF07XG4gICAgdmFyIHN0eWxlcyA9IFdJTkRPVy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIHBvc2l0aW9uKTtcbiAgICB2YXIgZm9udEZhbWlseSA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LWZhbWlseScpLm1hdGNoKEZPTlRfRkFNSUxZX1BBVFRFUk4pO1xuICAgIHZhciBmb250V2VpZ2h0ID0gc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtd2VpZ2h0Jyk7XG4gICAgdmFyIGNvbnRlbnQgPSBzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnY29udGVudCcpO1xuXG4gICAgaWYgKGFscmVhZHlQcm9jZXNzZWRQc2V1ZG9FbGVtZW50ICYmICFmb250RmFtaWx5KSB7XG4gICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IHByb2Nlc3NlZCBpdCBidXQgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc3R5bGUgZG9lcyBub3QgcmVzdWx0IGluIGEgZm9udC1mYW1pbHksXG4gICAgICAvLyB0aGF0IHByb2JhYmx5IG1lYW5zIHRoYXQgYSBjbGFzcyBuYW1lIHRoYXQgd2FzIHByZXZpb3VzbHkgcHJlc2VudCB0byBtYWtlIHRoZSBpY29uIGhhcyBiZWVuXG4gICAgICAvLyByZW1vdmVkLiBTbyB3ZSBub3cgc2hvdWxkIGRlbGV0ZSB0aGUgaWNvbi5cbiAgICAgIG5vZGUucmVtb3ZlQ2hpbGQoYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQpO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9IGVsc2UgaWYgKGZvbnRGYW1pbHkgJiYgY29udGVudCAhPT0gJ25vbmUnICYmIGNvbnRlbnQgIT09ICcnKSB7XG4gICAgICB2YXIgX2NvbnRlbnQgPSBzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnY29udGVudCcpO1xuXG4gICAgICB2YXIgcHJlZml4ID0gflsnU29saWQnLCAnUmVndWxhcicsICdMaWdodCcsICdUaGluJywgJ0R1b3RvbmUnLCAnQnJhbmRzJywgJ0tpdCddLmluZGV4T2YoZm9udEZhbWlseVsyXSkgPyBTVFlMRV9UT19QUkVGSVhbZm9udEZhbWlseVsyXS50b0xvd2VyQ2FzZSgpXSA6IEZPTlRfV0VJR0hUX1RPX1BSRUZJWFtmb250V2VpZ2h0XTtcblxuICAgICAgdmFyIF9oZXhWYWx1ZUZyb21Db250ZW50ID0gaGV4VmFsdWVGcm9tQ29udGVudChfY29udGVudCksXG4gICAgICAgICAgaGV4VmFsdWUgPSBfaGV4VmFsdWVGcm9tQ29udGVudC52YWx1ZSxcbiAgICAgICAgICBpc1NlY29uZGFyeSA9IF9oZXhWYWx1ZUZyb21Db250ZW50LmlzU2Vjb25kYXJ5O1xuXG4gICAgICB2YXIgaXNWNCA9IGZvbnRGYW1pbHlbMF0uc3RhcnRzV2l0aCgnRm9udEF3ZXNvbWUnKTtcbiAgICAgIHZhciBpY29uTmFtZSA9IGJ5VW5pY29kZShwcmVmaXgsIGhleFZhbHVlKTtcbiAgICAgIHZhciBpY29uSWRlbnRpZmllciA9IGljb25OYW1lO1xuXG4gICAgICBpZiAoaXNWNCkge1xuICAgICAgICB2YXIgaWNvbk5hbWU0ID0gYnlPbGRVbmljb2RlKGhleFZhbHVlKTtcblxuICAgICAgICBpZiAoaWNvbk5hbWU0Lmljb25OYW1lICYmIGljb25OYW1lNC5wcmVmaXgpIHtcbiAgICAgICAgICBpY29uTmFtZSA9IGljb25OYW1lNC5pY29uTmFtZTtcbiAgICAgICAgICBwcmVmaXggPSBpY29uTmFtZTQucHJlZml4O1xuICAgICAgICB9XG4gICAgICB9IC8vIE9ubHkgY29udmVydCB0aGUgcHNldWRvIGVsZW1lbnQgaW4gdGhpcyA6OmJlZm9yZS86OmFmdGVyIHBvc2l0aW9uIGludG8gYW4gaWNvbiBpZiB3ZSBoYXZlbid0XG4gICAgICAvLyBhbHJlYWR5IGRvbmUgc28gd2l0aCB0aGUgc2FtZSBwcmVmaXggYW5kIGljb25OYW1lXG5cblxuICAgICAgaWYgKGljb25OYW1lICYmICFpc1NlY29uZGFyeSAmJiAoIWFscmVhZHlQcm9jZXNzZWRQc2V1ZG9FbGVtZW50IHx8IGFscmVhZHlQcm9jZXNzZWRQc2V1ZG9FbGVtZW50LmdldEF0dHJpYnV0ZShEQVRBX1BSRUZJWCkgIT09IHByZWZpeCB8fCBhbHJlYWR5UHJvY2Vzc2VkUHNldWRvRWxlbWVudC5nZXRBdHRyaWJ1dGUoREFUQV9JQ09OKSAhPT0gaWNvbklkZW50aWZpZXIpKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKHBlbmRpbmdBdHRyaWJ1dGUsIGljb25JZGVudGlmaWVyKTtcblxuICAgICAgICBpZiAoYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQpIHtcbiAgICAgICAgICAvLyBEZWxldGUgdGhlIG9sZCBvbmUsIHNpbmNlIHdlJ3JlIHJlcGxhY2luZyBpdCB3aXRoIGEgbmV3IG9uZVxuICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQoYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1ldGEgPSBibGFua01ldGEoKTtcbiAgICAgICAgdmFyIGV4dHJhID0gbWV0YS5leHRyYTtcbiAgICAgICAgZXh0cmEuYXR0cmlidXRlc1tEQVRBX0ZBX1BTRVVET19FTEVNRU5UXSA9IHBvc2l0aW9uO1xuICAgICAgICBmaW5kSWNvbihpY29uTmFtZSwgcHJlZml4KS50aGVuKGZ1bmN0aW9uIChtYWluKSB7XG4gICAgICAgICAgdmFyIGFic3RyYWN0ID0gbWFrZUlubGluZVN2Z0Fic3RyYWN0KF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBtZXRhKSwge30sIHtcbiAgICAgICAgICAgIGljb25zOiB7XG4gICAgICAgICAgICAgIG1haW46IG1haW4sXG4gICAgICAgICAgICAgIG1hc2s6IGVtcHR5Q2Fub25pY2FsSWNvbigpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiBwcmVmaXgsXG4gICAgICAgICAgICBpY29uTmFtZTogaWNvbklkZW50aWZpZXIsXG4gICAgICAgICAgICBleHRyYTogZXh0cmEsXG4gICAgICAgICAgICB3YXRjaGFibGU6IHRydWVcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgdmFyIGVsZW1lbnQgPSBET0NVTUVOVC5jcmVhdGVFbGVtZW50KCdzdmcnKTtcblxuICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gJzo6YmVmb3JlJykge1xuICAgICAgICAgICAgbm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZS5maXJzdENoaWxkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbGVtZW50Lm91dGVySFRNTCA9IGFic3RyYWN0Lm1hcChmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvSHRtbChhKTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwZW5kaW5nQXR0cmlidXRlKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pLmNhdGNoKHJlamVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlKG5vZGUpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFtyZXBsYWNlRm9yUG9zaXRpb24obm9kZSwgJzo6YmVmb3JlJyksIHJlcGxhY2VGb3JQb3NpdGlvbihub2RlLCAnOjphZnRlcicpXSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NhYmxlKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZSAhPT0gZG9jdW1lbnQuaGVhZCAmJiAhflRBR05BTUVTX1RPX1NLSVBfRk9SX1BTRVVET0VMRU1FTlRTLmluZGV4T2Yobm9kZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpICYmICFub2RlLmdldEF0dHJpYnV0ZShEQVRBX0ZBX1BTRVVET19FTEVNRU5UKSAmJiAoIW5vZGUucGFyZW50Tm9kZSB8fCBub2RlLnBhcmVudE5vZGUudGFnTmFtZSAhPT0gJ3N2ZycpO1xufVxuXG5mdW5jdGlvbiBzZWFyY2hQc2V1ZG9FbGVtZW50cyhyb290KSB7XG4gIGlmICghSVNfRE9NKSByZXR1cm47XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIG9wZXJhdGlvbnMgPSB0b0FycmF5KHJvb3QucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIocHJvY2Vzc2FibGUpLm1hcChyZXBsYWNlKTtcbiAgICB2YXIgZW5kID0gcGVyZi5iZWdpbignc2VhcmNoUHNldWRvRWxlbWVudHMnKTtcbiAgICBkaXNhYmxlT2JzZXJ2YXRpb24oKTtcbiAgICBQcm9taXNlLmFsbChvcGVyYXRpb25zKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGVuZCgpO1xuICAgICAgZW5hYmxlT2JzZXJ2YXRpb24oKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICBlbmQoKTtcbiAgICAgIGVuYWJsZU9ic2VydmF0aW9uKCk7XG4gICAgICByZWplY3QoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbnZhciBQc2V1ZG9FbGVtZW50cyA9IHtcbiAgaG9va3M6IGZ1bmN0aW9uIGhvb2tzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBtdXRhdGlvbk9ic2VydmVyQ2FsbGJhY2tzOiBmdW5jdGlvbiBtdXRhdGlvbk9ic2VydmVyQ2FsbGJhY2tzKGFjY3VtdWxhdG9yKSB7XG4gICAgICAgIGFjY3VtdWxhdG9yLnBzZXVkb0VsZW1lbnRzQ2FsbGJhY2sgPSBzZWFyY2hQc2V1ZG9FbGVtZW50cztcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIHByb3ZpZGVzOiBmdW5jdGlvbiBwcm92aWRlcyhwcm92aWRlcnMkJDEpIHtcbiAgICBwcm92aWRlcnMkJDEucHNldWRvRWxlbWVudHMyc3ZnID0gZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgdmFyIF9wYXJhbXMkbm9kZSA9IHBhcmFtcy5ub2RlLFxuICAgICAgICAgIG5vZGUgPSBfcGFyYW1zJG5vZGUgPT09IHZvaWQgMCA/IERPQ1VNRU5UIDogX3BhcmFtcyRub2RlO1xuXG4gICAgICBpZiAoY29uZmlnLnNlYXJjaFBzZXVkb0VsZW1lbnRzKSB7XG4gICAgICAgIHNlYXJjaFBzZXVkb0VsZW1lbnRzKG5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbnZhciBfdW53YXRjaGVkID0gZmFsc2U7XG52YXIgTXV0YXRpb25PYnNlcnZlciQxID0ge1xuICBtaXhvdXQ6IGZ1bmN0aW9uIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZG9tOiB7XG4gICAgICAgIHVud2F0Y2g6IGZ1bmN0aW9uIHVud2F0Y2goKSB7XG4gICAgICAgICAgZGlzYWJsZU9ic2VydmF0aW9uKCk7XG4gICAgICAgICAgX3Vud2F0Y2hlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBob29rczogZnVuY3Rpb24gaG9va3MoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvb3RzdHJhcDogZnVuY3Rpb24gYm9vdHN0cmFwKCkge1xuICAgICAgICBvYnNlcnZlKGNoYWluSG9va3MoJ211dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3MnLCB7fSkpO1xuICAgICAgfSxcbiAgICAgIG5vQXV0bzogZnVuY3Rpb24gbm9BdXRvKCkge1xuICAgICAgICBkaXNjb25uZWN0KCk7XG4gICAgICB9LFxuICAgICAgd2F0Y2g6IGZ1bmN0aW9uIHdhdGNoKHBhcmFtcykge1xuICAgICAgICB2YXIgb2JzZXJ2ZU11dGF0aW9uc1Jvb3QgPSBwYXJhbXMub2JzZXJ2ZU11dGF0aW9uc1Jvb3Q7XG5cbiAgICAgICAgaWYgKF91bndhdGNoZWQpIHtcbiAgICAgICAgICBlbmFibGVPYnNlcnZhdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9ic2VydmUoY2hhaW5Ib29rcygnbXV0YXRpb25PYnNlcnZlckNhbGxiYWNrcycsIHtcbiAgICAgICAgICAgIG9ic2VydmVNdXRhdGlvbnNSb290OiBvYnNlcnZlTXV0YXRpb25zUm9vdFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbnZhciBwYXJzZVRyYW5zZm9ybVN0cmluZyA9IGZ1bmN0aW9uIHBhcnNlVHJhbnNmb3JtU3RyaW5nKHRyYW5zZm9ybVN0cmluZykge1xuICB2YXIgdHJhbnNmb3JtID0ge1xuICAgIHNpemU6IDE2LFxuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBmbGlwWDogZmFsc2UsXG4gICAgZmxpcFk6IGZhbHNlLFxuICAgIHJvdGF0ZTogMFxuICB9O1xuICByZXR1cm4gdHJhbnNmb3JtU3RyaW5nLnRvTG93ZXJDYXNlKCkuc3BsaXQoJyAnKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgbikge1xuICAgIHZhciBwYXJ0cyA9IG4udG9Mb3dlckNhc2UoKS5zcGxpdCgnLScpO1xuICAgIHZhciBmaXJzdCA9IHBhcnRzWzBdO1xuICAgIHZhciByZXN0ID0gcGFydHMuc2xpY2UoMSkuam9pbignLScpO1xuXG4gICAgaWYgKGZpcnN0ICYmIHJlc3QgPT09ICdoJykge1xuICAgICAgYWNjLmZsaXBYID0gdHJ1ZTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuXG4gICAgaWYgKGZpcnN0ICYmIHJlc3QgPT09ICd2Jykge1xuICAgICAgYWNjLmZsaXBZID0gdHJ1ZTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuXG4gICAgcmVzdCA9IHBhcnNlRmxvYXQocmVzdCk7XG5cbiAgICBpZiAoaXNOYU4ocmVzdCkpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaXJzdCkge1xuICAgICAgY2FzZSAnZ3Jvdyc6XG4gICAgICAgIGFjYy5zaXplID0gYWNjLnNpemUgKyByZXN0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2hyaW5rJzpcbiAgICAgICAgYWNjLnNpemUgPSBhY2Muc2l6ZSAtIHJlc3Q7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgYWNjLnggPSBhY2MueCAtIHJlc3Q7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGFjYy54ID0gYWNjLnggKyByZXN0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndXAnOlxuICAgICAgICBhY2MueSA9IGFjYy55IC0gcmVzdDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICBhY2MueSA9IGFjYy55ICsgcmVzdDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JvdGF0ZSc6XG4gICAgICAgIGFjYy5yb3RhdGUgPSBhY2Mucm90YXRlICsgcmVzdDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwgdHJhbnNmb3JtKTtcbn07XG52YXIgUG93ZXJUcmFuc2Zvcm1zID0ge1xuICBtaXhvdXQ6IGZ1bmN0aW9uIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyc2U6IHtcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVHJhbnNmb3JtU3RyaW5nKHRyYW5zZm9ybVN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBob29rczogZnVuY3Rpb24gaG9va3MoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcnNlTm9kZUF0dHJpYnV0ZXM6IGZ1bmN0aW9uIHBhcnNlTm9kZUF0dHJpYnV0ZXMoYWNjdW11bGF0b3IsIG5vZGUpIHtcbiAgICAgICAgdmFyIHRyYW5zZm9ybVN0cmluZyA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWZhLXRyYW5zZm9ybScpO1xuXG4gICAgICAgIGlmICh0cmFuc2Zvcm1TdHJpbmcpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvci50cmFuc2Zvcm0gPSBwYXJzZVRyYW5zZm9ybVN0cmluZyh0cmFuc2Zvcm1TdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIHByb3ZpZGVzOiBmdW5jdGlvbiBwcm92aWRlcyhwcm92aWRlcnMpIHtcbiAgICBwcm92aWRlcnMuZ2VuZXJhdGVBYnN0cmFjdFRyYW5zZm9ybUdyb3VwaW5nID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBtYWluID0gX3JlZi5tYWluLFxuICAgICAgICAgIHRyYW5zZm9ybSA9IF9yZWYudHJhbnNmb3JtLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoID0gX3JlZi5jb250YWluZXJXaWR0aCxcbiAgICAgICAgICBpY29uV2lkdGggPSBfcmVmLmljb25XaWR0aDtcbiAgICAgIHZhciBvdXRlciA9IHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIi5jb25jYXQoY29udGFpbmVyV2lkdGggLyAyLCBcIiAyNTYpXCIpXG4gICAgICB9O1xuICAgICAgdmFyIGlubmVyVHJhbnNsYXRlID0gXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS54ICogMzIsIFwiLCBcIikuY29uY2F0KHRyYW5zZm9ybS55ICogMzIsIFwiKSBcIik7XG4gICAgICB2YXIgaW5uZXJTY2FsZSA9IFwic2NhbGUoXCIuY29uY2F0KHRyYW5zZm9ybS5zaXplIC8gMTYgKiAodHJhbnNmb3JtLmZsaXBYID8gLTEgOiAxKSwgXCIsIFwiKS5jb25jYXQodHJhbnNmb3JtLnNpemUgLyAxNiAqICh0cmFuc2Zvcm0uZmxpcFkgPyAtMSA6IDEpLCBcIikgXCIpO1xuICAgICAgdmFyIGlubmVyUm90YXRlID0gXCJyb3RhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS5yb3RhdGUsIFwiIDAgMClcIik7XG4gICAgICB2YXIgaW5uZXIgPSB7XG4gICAgICAgIHRyYW5zZm9ybTogXCJcIi5jb25jYXQoaW5uZXJUcmFuc2xhdGUsIFwiIFwiKS5jb25jYXQoaW5uZXJTY2FsZSwgXCIgXCIpLmNvbmNhdChpbm5lclJvdGF0ZSlcbiAgICAgIH07XG4gICAgICB2YXIgcGF0aCA9IHtcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIi5jb25jYXQoaWNvbldpZHRoIC8gMiAqIC0xLCBcIiAtMjU2KVwiKVxuICAgICAgfTtcbiAgICAgIHZhciBvcGVyYXRpb25zID0ge1xuICAgICAgICBvdXRlcjogb3V0ZXIsXG4gICAgICAgIGlubmVyOiBpbm5lcixcbiAgICAgICAgcGF0aDogcGF0aFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRhZzogJ2cnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkMih7fSwgb3BlcmF0aW9ucy5vdXRlciksXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHRhZzogJ2cnLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKHt9LCBvcGVyYXRpb25zLmlubmVyKSxcbiAgICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICAgIHRhZzogbWFpbi5pY29uLnRhZyxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBtYWluLmljb24uY2hpbGRyZW4sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgbWFpbi5pY29uLmF0dHJpYnV0ZXMpLCBvcGVyYXRpb25zLnBhdGgpXG4gICAgICAgICAgfV1cbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfTtcbiAgfVxufTtcblxudmFyIEFMTF9TUEFDRSA9IHtcbiAgeDogMCxcbiAgeTogMCxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgaGVpZ2h0OiAnMTAwJSdcbn07XG5cbmZ1bmN0aW9uIGZpbGxCbGFjayhhYnN0cmFjdCkge1xuICB2YXIgZm9yY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG5cbiAgaWYgKGFic3RyYWN0LmF0dHJpYnV0ZXMgJiYgKGFic3RyYWN0LmF0dHJpYnV0ZXMuZmlsbCB8fCBmb3JjZSkpIHtcbiAgICBhYnN0cmFjdC5hdHRyaWJ1dGVzLmZpbGwgPSAnYmxhY2snO1xuICB9XG5cbiAgcmV0dXJuIGFic3RyYWN0O1xufVxuXG5mdW5jdGlvbiBkZUdyb3VwKGFic3RyYWN0KSB7XG4gIGlmIChhYnN0cmFjdC50YWcgPT09ICdnJykge1xuICAgIHJldHVybiBhYnN0cmFjdC5jaGlsZHJlbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW2Fic3RyYWN0XTtcbiAgfVxufVxuXG52YXIgTWFza3MgPSB7XG4gIGhvb2tzOiBmdW5jdGlvbiBob29rcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyc2VOb2RlQXR0cmlidXRlczogZnVuY3Rpb24gcGFyc2VOb2RlQXR0cmlidXRlcyhhY2N1bXVsYXRvciwgbm9kZSkge1xuICAgICAgICB2YXIgbWFza0RhdGEgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS1tYXNrJyk7XG4gICAgICAgIHZhciBtYXNrID0gIW1hc2tEYXRhID8gZW1wdHlDYW5vbmljYWxJY29uKCkgOiBnZXRDYW5vbmljYWxJY29uKG1hc2tEYXRhLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgcmV0dXJuIGkudHJpbSgpO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgaWYgKCFtYXNrLnByZWZpeCkge1xuICAgICAgICAgIG1hc2sucHJlZml4ID0gZ2V0RGVmYXVsdFVzYWJsZVByZWZpeCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgYWNjdW11bGF0b3IubWFzayA9IG1hc2s7XG4gICAgICAgIGFjY3VtdWxhdG9yLm1hc2tJZCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWZhLW1hc2staWQnKTtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIHByb3ZpZGVzOiBmdW5jdGlvbiBwcm92aWRlcyhwcm92aWRlcnMpIHtcbiAgICBwcm92aWRlcnMuZ2VuZXJhdGVBYnN0cmFjdE1hc2sgPSBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgICAgICBhdHRyaWJ1dGVzID0gX3JlZi5hdHRyaWJ1dGVzLFxuICAgICAgICAgIG1haW4gPSBfcmVmLm1haW4sXG4gICAgICAgICAgbWFzayA9IF9yZWYubWFzayxcbiAgICAgICAgICBleHBsaWNpdE1hc2tJZCA9IF9yZWYubWFza0lkLFxuICAgICAgICAgIHRyYW5zZm9ybSA9IF9yZWYudHJhbnNmb3JtO1xuICAgICAgdmFyIG1haW5XaWR0aCA9IG1haW4ud2lkdGgsXG4gICAgICAgICAgbWFpblBhdGggPSBtYWluLmljb247XG4gICAgICB2YXIgbWFza1dpZHRoID0gbWFzay53aWR0aCxcbiAgICAgICAgICBtYXNrUGF0aCA9IG1hc2suaWNvbjtcbiAgICAgIHZhciB0cmFucyA9IHRyYW5zZm9ybUZvclN2Zyh7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICAgICAgICBjb250YWluZXJXaWR0aDogbWFza1dpZHRoLFxuICAgICAgICBpY29uV2lkdGg6IG1haW5XaWR0aFxuICAgICAgfSk7XG4gICAgICB2YXIgbWFza1JlY3QgPSB7XG4gICAgICAgIHRhZzogJ3JlY3QnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgQUxMX1NQQUNFKSwge30sIHtcbiAgICAgICAgICBmaWxsOiAnd2hpdGUnXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgICAgdmFyIG1hc2tJbm5lckdyb3VwQ2hpbGRyZW5NaXhpbiA9IG1haW5QYXRoLmNoaWxkcmVuID8ge1xuICAgICAgICBjaGlsZHJlbjogbWFpblBhdGguY2hpbGRyZW4ubWFwKGZpbGxCbGFjaylcbiAgICAgIH0gOiB7fTtcbiAgICAgIHZhciBtYXNrSW5uZXJHcm91cCA9IHtcbiAgICAgICAgdGFnOiAnZycsXG4gICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKHt9LCB0cmFucy5pbm5lciksXG4gICAgICAgIGNoaWxkcmVuOiBbZmlsbEJsYWNrKF9vYmplY3RTcHJlYWQyKHtcbiAgICAgICAgICB0YWc6IG1haW5QYXRoLnRhZyxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgbWFpblBhdGguYXR0cmlidXRlcyksIHRyYW5zLnBhdGgpXG4gICAgICAgIH0sIG1hc2tJbm5lckdyb3VwQ2hpbGRyZW5NaXhpbikpXVxuICAgICAgfTtcbiAgICAgIHZhciBtYXNrT3V0ZXJHcm91cCA9IHtcbiAgICAgICAgdGFnOiAnZycsXG4gICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKHt9LCB0cmFucy5vdXRlciksXG4gICAgICAgIGNoaWxkcmVuOiBbbWFza0lubmVyR3JvdXBdXG4gICAgICB9O1xuICAgICAgdmFyIG1hc2tJZCA9IFwibWFzay1cIi5jb25jYXQoZXhwbGljaXRNYXNrSWQgfHwgbmV4dFVuaXF1ZUlkKCkpO1xuICAgICAgdmFyIGNsaXBJZCA9IFwiY2xpcC1cIi5jb25jYXQoZXhwbGljaXRNYXNrSWQgfHwgbmV4dFVuaXF1ZUlkKCkpO1xuICAgICAgdmFyIG1hc2tUYWcgPSB7XG4gICAgICAgIHRhZzogJ21hc2snLFxuICAgICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgQUxMX1NQQUNFKSwge30sIHtcbiAgICAgICAgICBpZDogbWFza0lkLFxuICAgICAgICAgIG1hc2tVbml0czogJ3VzZXJTcGFjZU9uVXNlJyxcbiAgICAgICAgICBtYXNrQ29udGVudFVuaXRzOiAndXNlclNwYWNlT25Vc2UnXG4gICAgICAgIH0pLFxuICAgICAgICBjaGlsZHJlbjogW21hc2tSZWN0LCBtYXNrT3V0ZXJHcm91cF1cbiAgICAgIH07XG4gICAgICB2YXIgZGVmcyA9IHtcbiAgICAgICAgdGFnOiAnZGVmcycsXG4gICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgIHRhZzogJ2NsaXBQYXRoJyxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBpZDogY2xpcElkXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGlsZHJlbjogZGVHcm91cChtYXNrUGF0aClcbiAgICAgICAgfSwgbWFza1RhZ11cbiAgICAgIH07XG4gICAgICBjaGlsZHJlbi5wdXNoKGRlZnMsIHtcbiAgICAgICAgdGFnOiAncmVjdCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKHtcbiAgICAgICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgICAgICAnY2xpcC1wYXRoJzogXCJ1cmwoI1wiLmNvbmNhdChjbGlwSWQsIFwiKVwiKSxcbiAgICAgICAgICBtYXNrOiBcInVybCgjXCIuY29uY2F0KG1hc2tJZCwgXCIpXCIpXG4gICAgICAgIH0sIEFMTF9TUEFDRSlcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzXG4gICAgICB9O1xuICAgIH07XG4gIH1cbn07XG5cbnZhciBNaXNzaW5nSWNvbkluZGljYXRvciA9IHtcbiAgcHJvdmlkZXM6IGZ1bmN0aW9uIHByb3ZpZGVzKHByb3ZpZGVycykge1xuICAgIHZhciByZWR1Y2VNb3Rpb24gPSBmYWxzZTtcblxuICAgIGlmIChXSU5ET1cubWF0Y2hNZWRpYSkge1xuICAgICAgcmVkdWNlTW90aW9uID0gV0lORE9XLm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlcztcbiAgICB9XG5cbiAgICBwcm92aWRlcnMubWlzc2luZ0ljb25BYnN0cmFjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBnQ2hpbGRyZW4gPSBbXTtcbiAgICAgIHZhciBGSUxMID0ge1xuICAgICAgICBmaWxsOiAnY3VycmVudENvbG9yJ1xuICAgICAgfTtcbiAgICAgIHZhciBBTklNQVRJT05fQkFTRSA9IHtcbiAgICAgICAgYXR0cmlidXRlVHlwZTogJ1hNTCcsXG4gICAgICAgIHJlcGVhdENvdW50OiAnaW5kZWZpbml0ZScsXG4gICAgICAgIGR1cjogJzJzJ1xuICAgICAgfTsgLy8gUmluZ1xuXG4gICAgICBnQ2hpbGRyZW4ucHVzaCh7XG4gICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgRklMTCksIHt9LCB7XG4gICAgICAgICAgZDogJ00xNTYuNSw0NDcuN2wtMTIuNiwyOS41Yy0xOC43LTkuNS0zNS45LTIxLjItNTEuNS0zNC45bDIyLjctMjIuN0MxMjcuNiw0MzAuNSwxNDEuNSw0NDAsMTU2LjUsNDQ3Ljd6IE00MC42LDI3Mkg4LjUgYzEuNCwyMS4yLDUuNCw0MS43LDExLjcsNjEuMUw1MCwzMjEuMkM0NS4xLDMwNS41LDQxLjgsMjg5LDQwLjYsMjcyeiBNNDAuNiwyNDBjMS40LTE4LjgsNS4yLTM3LDExLjEtNTQuMWwtMjkuNS0xMi42IEMxNC43LDE5NC4zLDEwLDIxNi43LDguNSwyNDBINDAuNnogTTY0LjMsMTU2LjVjNy44LTE0LjksMTcuMi0yOC44LDI4LjEtNDEuNUw2OS43LDkyLjNjLTEzLjcsMTUuNi0yNS41LDMyLjgtMzQuOSw1MS41IEw2NC4zLDE1Ni41eiBNMzk3LDQxOS42Yy0xMy45LDEyLTI5LjQsMjIuMy00Ni4xLDMwLjRsMTEuOSwyOS44YzIwLjctOS45LDM5LjgtMjIuNiw1Ni45LTM3LjZMMzk3LDQxOS42eiBNMTE1LDkyLjQgYzEzLjktMTIsMjkuNC0yMi4zLDQ2LjEtMzAuNGwtMTEuOS0yOS44Yy0yMC43LDkuOS0zOS44LDIyLjYtNTYuOCwzNy42TDExNSw5Mi40eiBNNDQ3LjcsMzU1LjVjLTcuOCwxNC45LTE3LjIsMjguOC0yOC4xLDQxLjUgbDIyLjcsMjIuN2MxMy43LTE1LjYsMjUuNS0zMi45LDM0LjktNTEuNUw0NDcuNywzNTUuNXogTTQ3MS40LDI3MmMtMS40LDE4LjgtNS4yLDM3LTExLjEsNTQuMWwyOS41LDEyLjYgYzcuNS0yMS4xLDEyLjItNDMuNSwxMy42LTY2LjhINDcxLjR6IE0zMjEuMiw0NjJjLTE1LjcsNS0zMi4yLDguMi00OS4yLDkuNHYzMi4xYzIxLjItMS40LDQxLjctNS40LDYxLjEtMTEuN0wzMjEuMiw0NjJ6IE0yNDAsNDcxLjRjLTE4LjgtMS40LTM3LTUuMi01NC4xLTExLjFsLTEyLjYsMjkuNWMyMS4xLDcuNSw0My41LDEyLjIsNjYuOCwxMy42VjQ3MS40eiBNNDYyLDE5MC44YzUsMTUuNyw4LjIsMzIuMiw5LjQsNDkuMmgzMi4xIGMtMS40LTIxLjItNS40LTQxLjctMTEuNy02MS4xTDQ2MiwxOTAuOHogTTkyLjQsMzk3Yy0xMi0xMy45LTIyLjMtMjkuNC0zMC40LTQ2LjFsLTI5LjgsMTEuOWM5LjksMjAuNywyMi42LDM5LjgsMzcuNiw1Ni45IEw5Mi40LDM5N3ogTTI3Miw0MC42YzE4LjgsMS40LDM2LjksNS4yLDU0LjEsMTEuMWwxMi42LTI5LjVDMzE3LjcsMTQuNywyOTUuMywxMCwyNzIsOC41VjQwLjZ6IE0xOTAuOCw1MCBjMTUuNy01LDMyLjItOC4yLDQ5LjItOS40VjguNWMtMjEuMiwxLjQtNDEuNyw1LjQtNjEuMSwxMS43TDE5MC44LDUweiBNNDQyLjMsOTIuM0w0MTkuNiwxMTVjMTIsMTMuOSwyMi4zLDI5LjQsMzAuNSw0Ni4xIGwyOS44LTExLjlDNDcwLDEyOC41LDQ1Ny4zLDEwOS40LDQ0Mi4zLDkyLjN6IE0zOTcsOTIuNGwyMi43LTIyLjdjLTE1LjYtMTMuNy0zMi44LTI1LjUtNTEuNS0zNC45bC0xMi42LDI5LjUgQzM3MC40LDcyLjEsMzg0LjQsODEuNSwzOTcsOTIuNHonXG4gICAgICAgIH0pXG4gICAgICB9KTtcblxuICAgICAgdmFyIE9QQUNJVFlfQU5JTUFURSA9IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBBTklNQVRJT05fQkFTRSksIHt9LCB7XG4gICAgICAgIGF0dHJpYnV0ZU5hbWU6ICdvcGFjaXR5J1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBkb3QgPSB7XG4gICAgICAgIHRhZzogJ2NpcmNsZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBGSUxMKSwge30sIHtcbiAgICAgICAgICBjeDogJzI1NicsXG4gICAgICAgICAgY3k6ICczNjQnLFxuICAgICAgICAgIHI6ICcyOCdcbiAgICAgICAgfSksXG4gICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgfTtcblxuICAgICAgaWYgKCFyZWR1Y2VNb3Rpb24pIHtcbiAgICAgICAgZG90LmNoaWxkcmVuLnB1c2goe1xuICAgICAgICAgIHRhZzogJ2FuaW1hdGUnLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBBTklNQVRJT05fQkFTRSksIHt9LCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVOYW1lOiAncicsXG4gICAgICAgICAgICB2YWx1ZXM6ICcyODsxNDsyODsyODsxNDsyODsnXG4gICAgICAgICAgfSlcbiAgICAgICAgfSwge1xuICAgICAgICAgIHRhZzogJ2FuaW1hdGUnLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBPUEFDSVRZX0FOSU1BVEUpLCB7fSwge1xuICAgICAgICAgICAgdmFsdWVzOiAnMTswOzE7MTswOzE7J1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBnQ2hpbGRyZW4ucHVzaChkb3QpO1xuICAgICAgZ0NoaWxkcmVuLnB1c2goe1xuICAgICAgICB0YWc6ICdwYXRoJyxcbiAgICAgICAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIEZJTEwpLCB7fSwge1xuICAgICAgICAgIG9wYWNpdHk6ICcxJyxcbiAgICAgICAgICBkOiAnTTI2My43LDMxMmgtMTZjLTYuNiwwLTEyLTUuNC0xMi0xMmMwLTcxLDc3LjQtNjMuOSw3Ny40LTEwNy44YzAtMjAtMTcuOC00MC4yLTU3LjQtNDAuMmMtMjkuMSwwLTQ0LjMsOS42LTU5LjIsMjguNyBjLTMuOSw1LTExLjEsNi0xNi4yLDIuNGwtMTMuMS05LjJjLTUuNi0zLjktNi45LTExLjgtMi42LTE3LjJjMjEuMi0yNy4yLDQ2LjQtNDQuNyw5MS4yLTQ0LjdjNTIuMywwLDk3LjQsMjkuOCw5Ny40LDgwLjIgYzAsNjcuNi03Ny40LDYzLjUtNzcuNCwxMDcuOEMyNzUuNywzMDYuNiwyNzAuMywzMTIsMjYzLjcsMzEyeidcbiAgICAgICAgfSksXG4gICAgICAgIGNoaWxkcmVuOiByZWR1Y2VNb3Rpb24gPyBbXSA6IFt7XG4gICAgICAgICAgdGFnOiAnYW5pbWF0ZScsXG4gICAgICAgICAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIE9QQUNJVFlfQU5JTUFURSksIHt9LCB7XG4gICAgICAgICAgICB2YWx1ZXM6ICcxOzA7MDswOzA7MTsnXG4gICAgICAgICAgfSlcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlZHVjZU1vdGlvbikge1xuICAgICAgICAvLyBFeGNsYW1hdGlvblxuICAgICAgICBnQ2hpbGRyZW4ucHVzaCh7XG4gICAgICAgICAgdGFnOiAncGF0aCcsXG4gICAgICAgICAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIEZJTEwpLCB7fSwge1xuICAgICAgICAgICAgb3BhY2l0eTogJzAnLFxuICAgICAgICAgICAgZDogJ00yMzIuNSwxMzQuNWw3LDE2OGMwLjMsNi40LDUuNiwxMS41LDEyLDExLjVoOWM2LjQsMCwxMS43LTUuMSwxMi0xMS41bDctMTY4YzAuMy02LjgtNS4yLTEyLjUtMTItMTIuNWgtMjMgQzIzNy43LDEyMiwyMzIuMiwxMjcuNywyMzIuNSwxMzQuNXonXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgICB0YWc6ICdhbmltYXRlJyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBPUEFDSVRZX0FOSU1BVEUpLCB7fSwge1xuICAgICAgICAgICAgICB2YWx1ZXM6ICcwOzA7MTsxOzA7MDsnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1dXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0YWc6ICdnJyxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICdjbGFzcyc6ICdtaXNzaW5nJ1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogZ0NoaWxkcmVuXG4gICAgICB9O1xuICAgIH07XG4gIH1cbn07XG5cbnZhciBTdmdTeW1ib2xzID0ge1xuICBob29rczogZnVuY3Rpb24gaG9va3MoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcnNlTm9kZUF0dHJpYnV0ZXM6IGZ1bmN0aW9uIHBhcnNlTm9kZUF0dHJpYnV0ZXMoYWNjdW11bGF0b3IsIG5vZGUpIHtcbiAgICAgICAgdmFyIHN5bWJvbERhdGEgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS1zeW1ib2wnKTtcbiAgICAgICAgdmFyIHN5bWJvbCA9IHN5bWJvbERhdGEgPT09IG51bGwgPyBmYWxzZSA6IHN5bWJvbERhdGEgPT09ICcnID8gdHJ1ZSA6IHN5bWJvbERhdGE7XG4gICAgICAgIGFjY3VtdWxhdG9yWydzeW1ib2wnXSA9IHN5bWJvbDtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbnZhciBwbHVnaW5zID0gW0luamVjdENTUywgUmVwbGFjZUVsZW1lbnRzLCBMYXllcnMsIExheWVyc0NvdW50ZXIsIExheWVyc1RleHQsIFBzZXVkb0VsZW1lbnRzLCBNdXRhdGlvbk9ic2VydmVyJDEsIFBvd2VyVHJhbnNmb3JtcywgTWFza3MsIE1pc3NpbmdJY29uSW5kaWNhdG9yLCBTdmdTeW1ib2xzXTtcblxucmVnaXN0ZXJQbHVnaW5zKHBsdWdpbnMsIHtcbiAgbWl4b3V0c1RvOiBhcGlcbn0pO1xudmFyIG5vQXV0byQxID0gYXBpLm5vQXV0bztcbnZhciBjb25maWckMSA9IGFwaS5jb25maWc7XG52YXIgbGlicmFyeSQxID0gYXBpLmxpYnJhcnk7XG52YXIgZG9tJDEgPSBhcGkuZG9tO1xudmFyIHBhcnNlJDEgPSBhcGkucGFyc2U7XG52YXIgZmluZEljb25EZWZpbml0aW9uJDEgPSBhcGkuZmluZEljb25EZWZpbml0aW9uO1xudmFyIHRvSHRtbCQxID0gYXBpLnRvSHRtbDtcbnZhciBpY29uID0gYXBpLmljb247XG52YXIgbGF5ZXIgPSBhcGkubGF5ZXI7XG52YXIgdGV4dCA9IGFwaS50ZXh0O1xudmFyIGNvdW50ZXIgPSBhcGkuY291bnRlcjtcblxuZXhwb3J0IHsgbm9BdXRvJDEgYXMgbm9BdXRvLCBjb25maWckMSBhcyBjb25maWcsIGxpYnJhcnkkMSBhcyBsaWJyYXJ5LCBkb20kMSBhcyBkb20sIHBhcnNlJDEgYXMgcGFyc2UsIGZpbmRJY29uRGVmaW5pdGlvbiQxIGFzIGZpbmRJY29uRGVmaW5pdGlvbiwgdG9IdG1sJDEgYXMgdG9IdG1sLCBpY29uLCBsYXllciwgdGV4dCwgY291bnRlciwgYXBpIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@fortawesome/free-regular-svg-icons/index.es.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/@fortawesome/free-regular-svg-icons/index.es.js ***!
|
||
\**********************************************************************/
|
||
/*! exports provided: far, prefix, faAddressBook, faAddressCard, faAngry, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faBell, faBellSlash, faBookmark, faBuilding, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faChartBar, faCheckCircle, faCheckSquare, faCircle, faClipboard, faClock, faClone, faClosedCaptioning, faComment, faCommentAlt, faCommentDots, faComments, faCompass, faCopy, faCopyright, faCreditCard, faDizzy, faDotCircle, faEdit, faEnvelope, faEnvelopeOpen, faEye, faEyeSlash, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileExcel, faFileImage, faFilePdf, faFilePowerpoint, faFileVideo, faFileWord, faFlag, faFlushed, faFolder, faFolderOpen, faFontAwesomeLogoFull, faFrown, faFrownOpen, faFutbol, faGem, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faHandLizard, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSpock, faHandshake, faHdd, faHeart, faHospital, faHourglass, faIdBadge, faIdCard, faImage, faImages, faKeyboard, faKiss, faKissBeam, faKissWinkHeart, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLemon, faLifeRing, faLightbulb, faListAlt, faMap, faMeh, faMehBlank, faMehRollingEyes, faMinusSquare, faMoneyBillAlt, faMoon, faNewspaper, faObjectGroup, faObjectUngroup, faPaperPlane, faPauseCircle, faPlayCircle, faPlusSquare, faQuestionCircle, faRegistered, faSadCry, faSadTear, faSave, faShareSquare, faSmile, faSmileBeam, faSmileWink, faSnowflake, faSquare, faStar, faStarHalf, faStickyNote, faStopCircle, faSun, faSurprise, faThumbsDown, faThumbsUp, faTimesCircle, faTired, faTrashAlt, faUser, faUserCircle, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"far\", function() { return _iconsCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefix\", function() { return prefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAddressBook\", function() { return faAddressBook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAddressCard\", function() { return faAddressCard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngry\", function() { return faAngry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowAltCircleDown\", function() { return faArrowAltCircleDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowAltCircleLeft\", function() { return faArrowAltCircleLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowAltCircleRight\", function() { return faArrowAltCircleRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowAltCircleUp\", function() { return faArrowAltCircleUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBell\", function() { return faBell; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBellSlash\", function() { return faBellSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBookmark\", function() { return faBookmark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBuilding\", function() { return faBuilding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendar\", function() { return faCalendar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarAlt\", function() { return faCalendarAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarCheck\", function() { return faCalendarCheck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarMinus\", function() { return faCalendarMinus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarPlus\", function() { return faCalendarPlus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarTimes\", function() { return faCalendarTimes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretSquareDown\", function() { return faCaretSquareDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretSquareLeft\", function() { return faCaretSquareLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretSquareRight\", function() { return faCaretSquareRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretSquareUp\", function() { return faCaretSquareUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChartBar\", function() { return faChartBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCheckCircle\", function() { return faCheckCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCheckSquare\", function() { return faCheckSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCircle\", function() { return faCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClipboard\", function() { return faClipboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClock\", function() { return faClock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClone\", function() { return faClone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClosedCaptioning\", function() { return faClosedCaptioning; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faComment\", function() { return faComment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCommentAlt\", function() { return faCommentAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCommentDots\", function() { return faCommentDots; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faComments\", function() { return faComments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCompass\", function() { return faCompass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCopy\", function() { return faCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCopyright\", function() { return faCopyright; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCreditCard\", function() { return faCreditCard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDizzy\", function() { return faDizzy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDotCircle\", function() { return faDotCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEdit\", function() { return faEdit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEnvelope\", function() { return faEnvelope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEnvelopeOpen\", function() { return faEnvelopeOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEye\", function() { return faEye; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEyeSlash\", function() { return faEyeSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFile\", function() { return faFile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileAlt\", function() { return faFileAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileArchive\", function() { return faFileArchive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileAudio\", function() { return faFileAudio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileCode\", function() { return faFileCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileExcel\", function() { return faFileExcel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileImage\", function() { return faFileImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFilePdf\", function() { return faFilePdf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFilePowerpoint\", function() { return faFilePowerpoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileVideo\", function() { return faFileVideo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileWord\", function() { return faFileWord; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFlag\", function() { return faFlag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFlushed\", function() { return faFlushed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFolder\", function() { return faFolder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFolderOpen\", function() { return faFolderOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFontAwesomeLogoFull\", function() { return faFontAwesomeLogoFull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFrown\", function() { return faFrown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFrownOpen\", function() { return faFrownOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFutbol\", function() { return faFutbol; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGem\", function() { return faGem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrimace\", function() { return faGrimace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrin\", function() { return faGrin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinAlt\", function() { return faGrinAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinBeam\", function() { return faGrinBeam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinBeamSweat\", function() { return faGrinBeamSweat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinHearts\", function() { return faGrinHearts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinSquint\", function() { return faGrinSquint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinSquintTears\", function() { return faGrinSquintTears; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinStars\", function() { return faGrinStars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinTears\", function() { return faGrinTears; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinTongue\", function() { return faGrinTongue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinTongueSquint\", function() { return faGrinTongueSquint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinTongueWink\", function() { return faGrinTongueWink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinWink\", function() { return faGrinWink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandLizard\", function() { return faHandLizard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPaper\", function() { return faHandPaper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPeace\", function() { return faHandPeace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointDown\", function() { return faHandPointDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointLeft\", function() { return faHandPointLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointRight\", function() { return faHandPointRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointUp\", function() { return faHandPointUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointer\", function() { return faHandPointer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandRock\", function() { return faHandRock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandScissors\", function() { return faHandScissors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandSpock\", function() { return faHandSpock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandshake\", function() { return faHandshake; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHdd\", function() { return faHdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeart\", function() { return faHeart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHospital\", function() { return faHospital; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHourglass\", function() { return faHourglass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIdBadge\", function() { return faIdBadge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIdCard\", function() { return faIdCard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faImage\", function() { return faImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faImages\", function() { return faImages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKeyboard\", function() { return faKeyboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKiss\", function() { return faKiss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKissBeam\", function() { return faKissBeam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKissWinkHeart\", function() { return faKissWinkHeart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaugh\", function() { return faLaugh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaughBeam\", function() { return faLaughBeam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaughSquint\", function() { return faLaughSquint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaughWink\", function() { return faLaughWink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLemon\", function() { return faLemon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLifeRing\", function() { return faLifeRing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLightbulb\", function() { return faLightbulb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faListAlt\", function() { return faListAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMap\", function() { return faMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMeh\", function() { return faMeh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMehBlank\", function() { return faMehBlank; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMehRollingEyes\", function() { return faMehRollingEyes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMinusSquare\", function() { return faMinusSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoneyBillAlt\", function() { return faMoneyBillAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoon\", function() { return faMoon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faNewspaper\", function() { return faNewspaper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faObjectGroup\", function() { return faObjectGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faObjectUngroup\", function() { return faObjectUngroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPaperPlane\", function() { return faPaperPlane; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPauseCircle\", function() { return faPauseCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlayCircle\", function() { return faPlayCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlusSquare\", function() { return faPlusSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faQuestionCircle\", function() { return faQuestionCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRegistered\", function() { return faRegistered; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSadCry\", function() { return faSadCry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSadTear\", function() { return faSadTear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSave\", function() { return faSave; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShareSquare\", function() { return faShareSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmile\", function() { return faSmile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmileBeam\", function() { return faSmileBeam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmileWink\", function() { return faSmileWink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSnowflake\", function() { return faSnowflake; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSquare\", function() { return faSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStar\", function() { return faStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStarHalf\", function() { return faStarHalf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStickyNote\", function() { return faStickyNote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStopCircle\", function() { return faStopCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSun\", function() { return faSun; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSurprise\", function() { return faSurprise; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThumbsDown\", function() { return faThumbsDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThumbsUp\", function() { return faThumbsUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTimesCircle\", function() { return faTimesCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTired\", function() { return faTired; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrashAlt\", function() { return faTrashAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUser\", function() { return faUser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserCircle\", function() { return faUserCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWindowClose\", function() { return faWindowClose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWindowMaximize\", function() { return faWindowMaximize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWindowMinimize\", function() { return faWindowMinimize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWindowRestore\", function() { return faWindowRestore; });\n/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"far\";\nvar faAddressBook = {\n prefix: 'far',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'far',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z\"]\n};\nvar faAngry = {\n prefix: 'far',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z\"]\n};\nvar faBell = {\n prefix: 'far',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBellSlash = {\n prefix: 'far',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBookmark = {\n prefix: 'far',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z\"]\n};\nvar faBuilding = {\n prefix: 'far',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z\"]\n};\nvar faCalendar = {\n prefix: 'far',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z\"]\n};\nvar faCalendarAlt = {\n prefix: 'far',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarCheck = {\n prefix: 'far',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z\"]\n};\nvar faCalendarMinus = {\n prefix: 'far',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarPlus = {\n prefix: 'far',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarTimes = {\n prefix: 'far',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'far',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'far',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'far',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'far',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faChartBar = {\n prefix: 'far',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\"]\n};\nvar faCheckCircle = {\n prefix: 'far',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\"]\n};\nvar faCheckSquare = {\n prefix: 'far',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z\"]\n};\nvar faCircle = {\n prefix: 'far',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"]\n};\nvar faClipboard = {\n prefix: 'far',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z\"]\n};\nvar faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z\"]\n};\nvar faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'far',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z\"]\n};\nvar faComment = {\n prefix: 'far',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentAlt = {\n prefix: 'far',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z\"]\n};\nvar faCommentDots = {\n prefix: 'far',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faComments = {\n prefix: 'far',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z\"]\n};\nvar faCompass = {\n prefix: 'far',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faCopy = {\n prefix: 'far',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"]\n};\nvar faCopyright = {\n prefix: 'far',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z\"]\n};\nvar faCreditCard = {\n prefix: 'far',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z\"]\n};\nvar faDizzy = {\n prefix: 'far',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\"]\n};\nvar faDotCircle = {\n prefix: 'far',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z\"]\n};\nvar faEdit = {\n prefix: 'far',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z\"]\n};\nvar faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'far',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z\"]\n};\nvar faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z\"]\n};\nvar faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z\"]\n};\nvar faFile = {\n prefix: 'far',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z\"]\n};\nvar faFileAlt = {\n prefix: 'far',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\"]\n};\nvar faFileArchive = {\n prefix: 'far',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z\"]\n};\nvar faFileAudio = {\n prefix: 'far',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z\"]\n};\nvar faFileCode = {\n prefix: 'far',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z\"]\n};\nvar faFileExcel = {\n prefix: 'far',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z\"]\n};\nvar faFileImage = {\n prefix: 'far',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"]\n};\nvar faFilePdf = {\n prefix: 'far',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'far',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z\"]\n};\nvar faFileVideo = {\n prefix: 'far',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z\"]\n};\nvar faFileWord = {\n prefix: 'far',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z\"]\n};\nvar faFlag = {\n prefix: 'far',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z\"]\n};\nvar faFlushed = {\n prefix: 'far',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faFolder = {\n prefix: 'far',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\"]\n};\nvar faFolderOpen = {\n prefix: 'far',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'far',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFrown = {\n prefix: 'far',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z\"]\n};\nvar faFrownOpen = {\n prefix: 'far',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z\"]\n};\nvar faFutbol = {\n prefix: 'far',\n iconName: 'futbol',\n icon: [496, 512, [], \"f1e3\", \"M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z\"]\n};\nvar faGem = {\n prefix: 'far',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z\"]\n};\nvar faGrimace = {\n prefix: 'far',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z\"]\n};\nvar faGrin = {\n prefix: 'far',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faGrinAlt = {\n prefix: 'far',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'far',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'far',\n iconName: 'grin-beam-sweat',\n icon: [496, 512, [], \"f583\", \"M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\"]\n};\nvar faGrinHearts = {\n prefix: 'far',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z\"]\n};\nvar faGrinSquint = {\n prefix: 'far',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'far',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z\"]\n};\nvar faGrinStars = {\n prefix: 'far',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z\"]\n};\nvar faGrinTears = {\n prefix: 'far',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\"]\n};\nvar faGrinTongue = {\n prefix: 'far',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'far',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'far',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z\"]\n};\nvar faGrinWink = {\n prefix: 'far',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faHandLizard = {\n prefix: 'far',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z\"]\n};\nvar faHandPaper = {\n prefix: 'far',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z\"]\n};\nvar faHandPeace = {\n prefix: 'far',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z\"]\n};\nvar faHandPointDown = {\n prefix: 'far',\n iconName: 'hand-point-down',\n icon: [448, 512, [], \"f0a7\", \"M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z\"]\n};\nvar faHandPointLeft = {\n prefix: 'far',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\"]\n};\nvar faHandPointRight = {\n prefix: 'far',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\"]\n};\nvar faHandPointUp = {\n prefix: 'far',\n iconName: 'hand-point-up',\n icon: [448, 512, [], \"f0a6\", \"M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\"]\n};\nvar faHandPointer = {\n prefix: 'far',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z\"]\n};\nvar faHandRock = {\n prefix: 'far',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z\"]\n};\nvar faHandScissors = {\n prefix: 'far',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z\"]\n};\nvar faHandSpock = {\n prefix: 'far',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z\"]\n};\nvar faHandshake = {\n prefix: 'far',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z\"]\n};\nvar faHdd = {\n prefix: 'far',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z\"]\n};\nvar faHeart = {\n prefix: 'far',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z\"]\n};\nvar faHospital = {\n prefix: 'far',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z\"]\n};\nvar faHourglass = {\n prefix: 'far',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z\"]\n};\nvar faIdBadge = {\n prefix: 'far',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faIdCard = {\n prefix: 'far',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faImage = {\n prefix: 'far',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z\"]\n};\nvar faImages = {\n prefix: 'far',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z\"]\n};\nvar faKeyboard = {\n prefix: 'far',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z\"]\n};\nvar faKiss = {\n prefix: 'far',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faKissBeam = {\n prefix: 'far',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'far',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z\"]\n};\nvar faLaugh = {\n prefix: 'far',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughBeam = {\n prefix: 'far',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughSquint = {\n prefix: 'far',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughWink = {\n prefix: 'far',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLemon = {\n prefix: 'far',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z\"]\n};\nvar faLifeRing = {\n prefix: 'far',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z\"]\n};\nvar faLightbulb = {\n prefix: 'far',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z\"]\n};\nvar faListAlt = {\n prefix: 'far',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\"]\n};\nvar faMap = {\n prefix: 'far',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z\"]\n};\nvar faMeh = {\n prefix: 'far',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faMehBlank = {\n prefix: 'far',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'far',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faMinusSquare = {\n prefix: 'far',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'far',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z\"]\n};\nvar faMoon = {\n prefix: 'far',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z\"]\n};\nvar faNewspaper = {\n prefix: 'far',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z\"]\n};\nvar faObjectGroup = {\n prefix: 'far',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z\"]\n};\nvar faObjectUngroup = {\n prefix: 'far',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z\"]\n};\nvar faPaperPlane = {\n prefix: 'far',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z\"]\n};\nvar faPauseCircle = {\n prefix: 'far',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z\"]\n};\nvar faPlayCircle = {\n prefix: 'far',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z\"]\n};\nvar faPlusSquare = {\n prefix: 'far',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faQuestionCircle = {\n prefix: 'far',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"]\n};\nvar faRegistered = {\n prefix: 'far',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z\"]\n};\nvar faSadCry = {\n prefix: 'far',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z\"]\n};\nvar faSadTear = {\n prefix: 'far',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z\"]\n};\nvar faSave = {\n prefix: 'far',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z\"]\n};\nvar faShareSquare = {\n prefix: 'far',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z\"]\n};\nvar faSmile = {\n prefix: 'far',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\"]\n};\nvar faSmileBeam = {\n prefix: 'far',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z\"]\n};\nvar faSmileWink = {\n prefix: 'far',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z\"]\n};\nvar faSnowflake = {\n prefix: 'far',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z\"]\n};\nvar faSquare = {\n prefix: 'far',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z\"]\n};\nvar faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z\"]\n};\nvar faStarHalf = {\n prefix: 'far',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z\"]\n};\nvar faStickyNote = {\n prefix: 'far',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z\"]\n};\nvar faStopCircle = {\n prefix: 'far',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z\"]\n};\nvar faSun = {\n prefix: 'far',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z\"]\n};\nvar faSurprise = {\n prefix: 'far',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faThumbsDown = {\n prefix: 'far',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z\"]\n};\nvar faThumbsUp = {\n prefix: 'far',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\"]\n};\nvar faTimesCircle = {\n prefix: 'far',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z\"]\n};\nvar faTired = {\n prefix: 'far',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z\"]\n};\nvar faTrashAlt = {\n prefix: 'far',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z\"]\n};\nvar faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z\"]\n};\nvar faUserCircle = {\n prefix: 'far',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\"]\n};\nvar faWindowClose = {\n prefix: 'far',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z\"]\n};\nvar faWindowMaximize = {\n prefix: 'far',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z\"]\n};\nvar faWindowMinimize = {\n prefix: 'far',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faWindowRestore = {\n prefix: 'far',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z\"]\n};\nvar _iconsCache = {\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAngry: faAngry,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faBell: faBell,\n faBellSlash: faBellSlash,\n faBookmark: faBookmark,\n faBuilding: faBuilding,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarTimes: faCalendarTimes,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faChartBar: faChartBar,\n faCheckCircle: faCheckCircle,\n faCheckSquare: faCheckSquare,\n faCircle: faCircle,\n faClipboard: faClipboard,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentDots: faCommentDots,\n faComments: faComments,\n faCompass: faCompass,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCreditCard: faCreditCard,\n faDizzy: faDizzy,\n faDotCircle: faDotCircle,\n faEdit: faEdit,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEye: faEye,\n faEyeSlash: faEyeSlash,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCode: faFileCode,\n faFileExcel: faFileExcel,\n faFileImage: faFileImage,\n faFilePdf: faFilePdf,\n faFilePowerpoint: faFilePowerpoint,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFlag: faFlag,\n faFlushed: faFlushed,\n faFolder: faFolder,\n faFolderOpen: faFolderOpen,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFutbol: faFutbol,\n faGem: faGem,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faHandLizard: faHandLizard,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSpock: faHandSpock,\n faHandshake: faHandshake,\n faHdd: faHdd,\n faHeart: faHeart,\n faHospital: faHospital,\n faHourglass: faHourglass,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faImage: faImage,\n faImages: faImages,\n faKeyboard: faKeyboard,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLemon: faLemon,\n faLifeRing: faLifeRing,\n faLightbulb: faLightbulb,\n faListAlt: faListAlt,\n faMap: faMap,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMinusSquare: faMinusSquare,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoon: faMoon,\n faNewspaper: faNewspaper,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faPaperPlane: faPaperPlane,\n faPauseCircle: faPauseCircle,\n faPlayCircle: faPlayCircle,\n faPlusSquare: faPlusSquare,\n faQuestionCircle: faQuestionCircle,\n faRegistered: faRegistered,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSave: faSave,\n faShareSquare: faShareSquare,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmileWink: faSmileWink,\n faSnowflake: faSnowflake,\n faSquare: faSquare,\n faStar: faStar,\n faStarHalf: faStarHalf,\n faStickyNote: faStickyNote,\n faStopCircle: faStopCircle,\n faSun: faSun,\n faSurprise: faSurprise,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faTimesCircle: faTimesCircle,\n faTired: faTired,\n faTrashAlt: faTrashAlt,\n faUser: faUser,\n faUserCircle: faUserCircle,\n faWindowClose: faWindowClose,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore\n};\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL2ZyZWUtcmVndWxhci1zdmctaWNvbnMvaW5kZXguZXMuanM/YjcwMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRW0vRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZm9ydGF3ZXNvbWUvZnJlZS1yZWd1bGFyLXN2Zy1pY29ucy9pbmRleC5lcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogRm9udCBBd2Vzb21lIEZyZWUgNS4xNS40IGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tXG4gKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKVxuICovXG52YXIgcHJlZml4ID0gXCJmYXJcIjtcbnZhciBmYUFkZHJlc3NCb29rID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2FkZHJlc3MtYm9vaycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjJiOVwiLCBcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tNjggMzA0SDQ4VjQ4aDMyMHY0MTZ6TTIwOCAyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0tODkuNiAxMjhoMTc5LjJjMTIuNCAwIDIyLjQtOC42IDIyLjQtMTkuMnYtMTkuMmMwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNnYxOS4yYzAgMTAuNiAxMCAxOS4yIDIyLjQgMTkuMnpcIl1cbn07XG52YXIgZmFBZGRyZXNzQ2FyZCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdhZGRyZXNzLWNhcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyYmJcIiwgXCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0MDBINDhWODBoNDgwdjM1MnpNMjA4IDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bS04OS42IDEyOGgxNzkuMmMxMi40IDAgMjIuNC04LjYgMjIuNC0xOS4ydi0xOS4yYzAtMzEuOC0zMC4xLTU3LjYtNjcuMi01Ny42LTEwLjggMC0xOC43IDgtNDQuOCA4LTI2LjkgMC0zMy40LTgtNDQuOC04LTM3LjEgMC02Ny4yIDI1LjgtNjcuMiA1Ny42djE5LjJjMCAxMC42IDEwIDE5LjIgMjIuNCAxOS4yek0zNjAgMzIwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4elwiXVxufTtcbnZhciBmYUFuZ3J5ID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2FuZ3J5JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTU2XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMC0xNDRjLTMzLjYgMC02NS4yIDE0LjgtODYuOCA0MC42LTguNSAxMC4yLTcuMSAyNS4zIDMuMSAzMy44czI1LjMgNy4yIDMzLjgtM2MyNC44LTI5LjcgNzUtMjkuNyA5OS44IDAgOC4xIDkuNyAyMy4yIDExLjkgMzMuOCAzIDEwLjItOC41IDExLjUtMjMuNiAzLjEtMzMuOC0yMS42LTI1LjgtNTMuMi00MC42LTg2LjgtNDAuNnptLTQ4LTcyYzEwLjMgMCAxOS45LTYuNyAyMy0xNy4xIDMuOC0xMi43LTMuNC0yNi4xLTE2LjEtMjkuOWwtODAtMjRjLTEyLjgtMy45LTI2LjEgMy40LTI5LjkgMTYuMS0zLjggMTIuNyAzLjQgMjYuMSAxNi4xIDI5LjlsMjguMiA4LjVjLTMuMSA0LjktNS4zIDEwLjQtNS4zIDE2LjYgMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuNCAzMi0zMi4xem0xOTktNTQuOWMtMy44LTEyLjctMTcuMS0xOS45LTI5LjktMTYuMWwtODAgMjRjLTEyLjcgMy44LTE5LjkgMTcuMi0xNi4xIDI5LjkgMy4xIDEwLjQgMTIuNyAxNy4xIDIzIDE3LjEgMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTYuMi0yLjItMTEuNy01LjMtMTYuNmwyOC4yLTguNWMxMi43LTMuNyAxOS45LTE3LjEgMTYuMS0yOS44elwiXVxufTtcbnZhciBmYUFycm93QWx0Q2lyY2xlRG93biA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1hbHQtY2lyY2xlLWRvd24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzNThcIiwgXCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwem0tMzItMzE2djExNmgtNjdjLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDk5IDk5YzQuNyA0LjcgMTIuMyA0LjcgMTcgMGw5OS05OWM3LjYtNy42IDIuMi0yMC41LTguNS0yMC41aC02N1YxNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEyelwiXVxufTtcbnZhciBmYUFycm93QWx0Q2lyY2xlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1hbHQtY2lyY2xlLWxlZnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzNTlcIiwgXCJNOCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOCA4IDExOSA4IDI1NnptNDQ4IDBjMCAxMTAuNS04OS41IDIwMC0yMDAgMjAwUzU2IDM2Ni41IDU2IDI1NiAxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMHptLTcyLTIwdjQwYzAgNi42LTUuNCAxMi0xMiAxMkgyNTZ2NjdjMCAxMC43LTEyLjkgMTYtMjAuNSA4LjVsLTk5LTk5Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsOTktOTljNy42LTcuNiAyMC41LTIuMiAyMC41IDguNXY2N2gxMTZjNi42IDAgMTIgNS40IDEyIDEyelwiXVxufTtcbnZhciBmYUFycm93QWx0Q2lyY2xlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnYXJyb3ctYWx0LWNpcmNsZS1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjM1YVwiLCBcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em03MiAyMHYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDExNnYtNjdjMC0xMC43IDEyLjktMTYgMjAuNS04LjVsOTkgOTljNC43IDQuNyA0LjcgMTIuMyAwIDE3bC05OSA5OWMtNy42IDcuNi0yMC41IDIuMi0yMC41LTguNXYtNjdIMTQwYy02LjYgMC0xMi01LjQtMTItMTJ6XCJdXG59O1xudmFyIGZhQXJyb3dBbHRDaXJjbGVVcCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1hbHQtY2lyY2xlLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMzViXCIsIFwiTTI1NiA1MDRjMTM3IDAgMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OHptMC00NDhjMTEwLjUgMCAyMDAgODkuNSAyMDAgMjAwcy04OS41IDIwMC0yMDAgMjAwUzU2IDM2Ni41IDU2IDI1NiAxNDUuNSA1NiAyNTYgNTZ6bTIwIDMyOGgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlYyNTZoLTY3Yy0xMC43IDAtMTYtMTIuOS04LjUtMjAuNWw5OS05OWM0LjctNC43IDEyLjMtNC43IDE3IDBsOTkgOTljNy42IDcuNiAyLjIgMjAuNS04LjUgMjAuNWgtNjd2MTE2YzAgNi42LTUuNCAxMi0xMiAxMnpcIl1cbn07XG52YXIgZmFCZWxsID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2JlbGwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwZjNcIiwgXCJNNDM5LjM5IDM2Mi4yOWMtMTkuMzItMjAuNzYtNTUuNDctNTEuOTktNTUuNDctMTU0LjI5IDAtNzcuNy01NC40OC0xMzkuOS0xMjcuOTQtMTU1LjE2VjMyYzAtMTcuNjctMTQuMzItMzItMzEuOTgtMzJzLTMxLjk4IDE0LjMzLTMxLjk4IDMydjIwLjg0QzExOC41NiA2OC4xIDY0LjA4IDEzMC4zIDY0LjA4IDIwOGMwIDEwMi4zLTM2LjE1IDEzMy41My01NS40NyAxNTQuMjktNiA2LjQ1LTguNjYgMTQuMTYtOC42MSAyMS43MS4xMSAxNi40IDEyLjk4IDMyIDMyLjEgMzJoMzgzLjhjMTkuMTIgMCAzMi0xNS42IDMyLjEtMzIgLjA1LTcuNTUtMi42MS0xNS4yNy04LjYxLTIxLjcxek02Ny41MyAzNjhjMjEuMjItMjcuOTcgNDQuNDItNzQuMzMgNDQuNTMtMTU5LjQyIDAtLjItLjA2LS4zOC0uMDYtLjU4IDAtNjEuODYgNTAuMTQtMTEyIDExMi0xMTJzMTEyIDUwLjE0IDExMiAxMTJjMCAuMi0uMDYuMzgtLjA2LjU4LjExIDg1LjEgMjMuMzEgMTMxLjQ2IDQ0LjUzIDE1OS40Mkg2Ny41M3pNMjI0IDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDE2MC4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0elwiXVxufTtcbnZhciBmYUJlbGxTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdiZWxsLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMWY2XCIsIFwiTTYzMy45OSA0NzEuMDJMMzYgMy41MUMyOS4xLTIuMDEgMTkuMDMtLjkgMTMuNTEgNmwtMTAgMTIuNDlDLTIuMDIgMjUuMzktLjkgMzUuNDYgNiA0MC45OGw1OTggNDY3LjUxYzYuOSA1LjUyIDE2Ljk2IDQuNCAyMi40OS0yLjQ5bDEwLTEyLjQ5YzUuNTItNi45IDQuNDEtMTYuOTctMi41LTIyLjQ5ek0xNjMuNTMgMzY4YzE2LjcxLTIyLjAzIDM0LjQ4LTU1LjggNDEuNC0xMTAuNThsLTQ1LjQ3LTM1LjU1Yy0zLjI3IDkwLjczLTM2LjQ3IDEyMC42OC01NC44NCAxNDAuNDItNiA2LjQ1LTguNjYgMTQuMTYtOC42MSAyMS43MS4xMSAxNi40IDEyLjk4IDMyIDMyLjEgMzJoMjc5LjY2bC02MS40LTQ4SDE2My41M3pNMzIwIDk2YzYxLjg2IDAgMTEyIDUwLjE0IDExMiAxMTIgMCAuMi0uMDYuMzgtLjA2LjU4LjAyIDE2Ljg0IDEuMTYgMzEuNzcgMi43OSA0NS43M2w1OS41MyA0Ni41NGMtOC4zMS0yMi4xMy0xNC4zNC01MS40OS0xNC4zNC05Mi44NSAwLTc3LjctNTQuNDgtMTM5LjktMTI3Ljk0LTE1NS4xNlYzMmMwLTE3LjY3LTE0LjMyLTMyLTMxLjk4LTMycy0zMS45OCAxNC4zMy0zMS45OCAzMnYyMC44NGMtMjYuMDIgNS40MS00OS40NSAxNi45NC02OS4xMyAzMi43MmwzOC4xNyAyOS44NEMyNzUgMTAzLjE4IDI5Ni42NSA5NiAzMjAgOTZ6bTAgNDE2YzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMjU2LjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6XCJdXG59O1xudmFyIGZhQm9va21hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnYm9va21hcmsnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwMmVcIiwgXCJNMzM2IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2NDY0bDE5Mi0xMTIgMTkyIDExMlY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDQyOC40M2wtMTQ0LTg0LTE0NCA4NFY1NGE2IDYgMCAwIDEgNi02aDI3NmMzLjMxNCAwIDYgMi42ODMgNiA1Ljk5NlY0MjguNDN6XCJdXG59O1xudmFyIGZhQnVpbGRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnYnVpbGRpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxYWRcIiwgXCJNMTI4IDE0OHYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ6bTE0MCAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJ6bS0xMjggOTZoNDBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyem0xMjggMGg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJ6bS03NiA4NHYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bTc2IDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptMTgwIDEyNHYzNkgwdi0zNmMwLTYuNiA1LjQtMTIgMTItMTJoMTkuNVYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgzMzdjMTMuMyAwIDI0IDEwLjcgMjQgMjR2NDQwSDQzNmM2LjYgMCAxMiA1LjQgMTIgMTJ6TTc5LjUgNDYzSDE5MnYtNjdjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY2N2gxMTIuNVY0OUw4MCA0OGwtLjUgNDE1elwiXVxufTtcbnZhciBmYUNhbGVuZGFyID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTMzXCIsIFwiTTQwMCA2NGgtNDhWMTJjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjUySDE2MFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDQwMEg1NGMtMy4zIDAtNi0yLjctNi02VjE2MGgzNTJ2Mjk4YzAgMy4zLTIuNyA2LTYgNnpcIl1cbn07XG52YXIgZmFDYWxlbmRhckFsdCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNzNcIiwgXCJNMTQ4IDI4OGgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJ6bTEwOC0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bTk2IDB2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0tOTYgOTZ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0tOTYgMHYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bTE5MiAwdi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptOTYtMjYwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWMTYwSDQ4djI5OGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIl1cbn07XG52YXIgZmFDYWxlbmRhckNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLWNoZWNrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjc0XCIsIFwiTTQwMCA2NGgtNDhWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTJIMTYwVjEyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjUySDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS02IDQwMEg1NGE2IDYgMCAwIDEtNi02VjE2MGgzNTJ2Mjk4YTYgNiAwIDAgMS02IDZ6bS01Mi44NDktMjAwLjY1TDE5OC44NDIgNDA0LjUxOWMtNC43MDUgNC42NjctMTIuMzAzIDQuNjM3LTE2Ljk3MS0uMDY4bC03NS4wOTEtNzUuNjk5Yy00LjY2Ny00LjcwNS00LjYzNy0xMi4zMDMuMDY4LTE2Ljk3MWwyMi43MTktMjIuNTM2YzQuNzA1LTQuNjY3IDEyLjMwMy00LjYzNyAxNi45Ny4wNjlsNDQuMTA0IDQ0LjQ2MSAxMTEuMDcyLTExMC4xODFjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3MS4wNjhsMjIuNTM2IDIyLjcxOGM0LjY2NyA0LjcwNSA0LjYzNiAxMi4zMDMtLjA2OSAxNi45N3pcIl1cbn07XG52YXIgZmFDYWxlbmRhck1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLW1pbnVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjcyXCIsIFwiTTEyNCAzMjhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMjRjMC02LjYgNS40LTEyIDEyLTEyaDIwMGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjRjMCA2LjYtNS40IDEyLTEyIDEySDEyNHptMzI0LTIxNnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJdXG59O1xudmFyIGZhQ2FsZW5kYXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLXBsdXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzFcIiwgXCJNMzM2IDI5MnYyNGMwIDYuNi01LjQgMTItMTIgMTJoLTc2djc2YzAgNi42LTUuNCAxMi0xMiAxMmgtMjRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNzZoLTc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTI0YzAtNi42IDUuNC0xMiAxMi0xMmg3NnYtNzZjMC02LjYgNS40LTEyIDEyLTEyaDI0YzYuNiAwIDEyIDUuNCAxMiAxMnY3Nmg3NmM2LjYgMCAxMiA1LjQgMTIgMTJ6bTExMi0xODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQ4IDM0NlYxNjBINDh2Mjk4YzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwiXVxufTtcbnZhciBmYUNhbGVuZGFyVGltZXMgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItdGltZXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzNcIiwgXCJNMzExLjcgMzc0LjdsLTE3IDE3Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjI0IDMzNy45bC01My43IDUzLjdjLTQuNyA0LjctMTIuMyA0LjctMTcgMGwtMTctMTdjLTQuNy00LjctNC43LTEyLjMgMC0xN2w1My43LTUzLjctNTMuNy01My43Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsMTctMTdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDUzLjcgNTMuNyA1My43LTUzLjdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDE3IDE3YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wyNTcuOSAzMDRsNTMuNyA1My43YzQuOCA0LjcgNC44IDEyLjMuMSAxN3pNNDQ4IDExMnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJdXG59O1xudmFyIGZhQ2FyZXRTcXVhcmVEb3duID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NhcmV0LXNxdWFyZS1kb3duJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTUwXCIsIFwiTTEyNS4xIDIwOGgxOTcuOGMxMC43IDAgMTYuMSAxMyA4LjUgMjAuNWwtOTguOSA5OC4zYy00LjcgNC43LTEyLjIgNC43LTE2LjkgMGwtOTguOS05OC4zYy03LjctNy41LTIuMy0yMC41IDguNC0yMC41ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwiXVxufTtcbnZhciBmYUNhcmV0U3F1YXJlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1zcXVhcmUtbGVmdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjE5MVwiLCBcIk0yNzIgMTU3LjF2MTk3LjhjMCAxMC43LTEzIDE2LjEtMjAuNSA4LjVsLTk4LjMtOTguOWMtNC43LTQuNy00LjctMTIuMiAwLTE2LjlsOTguMy05OC45YzcuNS03LjcgMjAuNS0yLjMgMjAuNSA4LjR6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQ4IDM0NlY4NmMwLTMuMy0yLjctNi02LTZINTRjLTMuMyAwLTYgMi43LTYgNnYzNDBjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJdXG59O1xudmFyIGZhQ2FyZXRTcXVhcmVSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1zcXVhcmUtcmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNTJcIiwgXCJNMTc2IDM1NC45VjE1Ny4xYzAtMTAuNyAxMy0xNi4xIDIwLjUtOC41bDk4LjMgOTguOWM0LjcgNC43IDQuNyAxMi4yIDAgMTYuOWwtOTguMyA5OC45Yy03LjUgNy43LTIwLjUgMi4zLTIwLjUtOC40ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwiXVxufTtcbnZhciBmYUNhcmV0U3F1YXJlVXAgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnY2FyZXQtc3F1YXJlLXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTUxXCIsIFwiTTMyMi45IDMwNEgxMjUuMWMtMTAuNyAwLTE2LjEtMTMtOC41LTIwLjVsOTguOS05OC4zYzQuNy00LjcgMTIuMi00LjcgMTYuOSAwbDk4LjkgOTguM2M3LjcgNy41IDIuMyAyMC41LTguNCAyMC41ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwiXVxufTtcbnZhciBmYUNoYXJ0QmFyID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NoYXJ0LWJhcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA4MFwiLCBcIk0zOTYuOCAzNTJoMjIuNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWMTA4LjhjMC02LjQtNi40LTEyLjgtMTIuOC0xMi44aC0yMi40Yy02LjQgMC0xMi44IDYuNC0xMi44IDEyLjh2MjMwLjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44em0tMTkyIDBoMjIuNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWMTQwLjhjMC02LjQtNi40LTEyLjgtMTIuOC0xMi44aC0yMi40Yy02LjQgMC0xMi44IDYuNC0xMi44IDEyLjh2MTk4LjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44em05NiAwaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjIwNC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djEzNC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHpNNDk2IDQwMEg0OFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDY0IDAgNzEuMTYgMCA4MHYzMzZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2em0tMzg3LjItNDhoMjIuNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjh2LTcwLjRjMC02LjQtNi40LTEyLjgtMTIuOC0xMi44aC0yMi40Yy02LjQgMC0xMi44IDYuNC0xMi44IDEyLjh2NzAuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6XCJdXG59O1xudmFyIGZhQ2hlY2tDaXJjbGUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnY2hlY2stY2lyY2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDU4XCIsIFwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMCA0OGMxMTAuNTMyIDAgMjAwIDg5LjQ1MSAyMDAgMjAwIDAgMTEwLjUzMi04OS40NTEgMjAwLTIwMCAyMDAtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzIgODkuNDUxLTIwMCAyMDAtMjAwbTE0MC4yMDQgMTMwLjI2N2wtMjIuNTM2LTIyLjcxOGMtNC42NjctNC43MDUtMTIuMjY1LTQuNzM2LTE2Ljk3LS4wNjhMMjE1LjM0NiAzMDMuNjk3bC01OS43OTItNjAuMjc3Yy00LjY2Ny00LjcwNS0xMi4yNjUtNC43MzYtMTYuOTctLjA2OWwtMjIuNzE5IDIyLjUzNmMtNC43MDUgNC42NjctNC43MzYgMTIuMjY1LS4wNjggMTYuOTcxbDkwLjc4MSA5MS41MTZjNC42NjcgNC43MDUgMTIuMjY1IDQuNzM2IDE2Ljk3LjA2OGwxNzIuNTg5LTE3MS4yMDRjNC43MDQtNC42NjggNC43MzQtMTIuMjY2LjA2Ny0xNi45NzF6XCJdXG59O1xudmFyIGZhQ2hlY2tTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnY2hlY2stc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTRhXCIsIFwiTTQwMCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0MDBINDhWODBoMzUydjM1MnptLTM1Ljg2NC0yNDEuNzI0TDE5MS41NDcgMzYxLjQ4Yy00LjcwNSA0LjY2Ny0xMi4zMDMgNC42MzctMTYuOTctLjA2OGwtOTAuNzgxLTkxLjUxNmMtNC42NjctNC43MDUtNC42MzctMTIuMzAzLjA2OS0xNi45NzFsMjIuNzE5LTIyLjUzNmM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcuMDY5bDU5Ljc5MiA2MC4yNzcgMTQxLjM1Mi0xNDAuMjE2YzQuNzA1LTQuNjY3IDEyLjMwMy00LjYzNyAxNi45Ny4wNjhsMjIuNTM2IDIyLjcxOGM0LjY2NyA0LjcwNiA0LjYzNyAxMi4zMDQtLjA2OCAxNi45NzF6XCJdXG59O1xudmFyIGZhQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjExMVwiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6XCJdXG59O1xudmFyIGZhQ2xpcGJvYXJkID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NsaXBib2FyZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjMyOFwiLCBcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0xNDQgNDE4YzAgMy4zLTIuNyA2LTYgNkg1NGMtMy4zIDAtNi0yLjctNi02VjExOGMwLTMuMyAyLjctNiA2LTZoNDJ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDE2OGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDQyYzMuMyAwIDYgMi43IDYgNnpcIl1cbn07XG52YXIgZmFDbG9jayA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjbG9jaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAxN1wiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTYxLjgtMTA0LjRsLTg0LjktNjEuN2MtMy4xLTIuMy00LjktNS45LTQuOS05LjdWMTE2YzAtNi42IDUuNC0xMiAxMi0xMmgzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2MTQxLjdsNjYuOCA0OC42YzUuNCAzLjkgNi41IDExLjQgMi42IDE2LjhMMzM0LjYgMzQ5Yy0zLjkgNS4zLTExLjQgNi41LTE2LjggMi42elwiXVxufTtcbnZhciBmYUNsb25lID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2Nsb25lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjRkXCIsIFwiTTQ2NCAwSDE0NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYzMjBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzMjBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhoNDhjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0zNjIgNDY0SDU0YTYgNiAwIDAgMS02LTZWMTUwYTYgNiAwIDAgMSA2LTZoNDJ2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0djQyYTYgNiAwIDAgMS02IDZ6bTk2LTk2SDE1MGE2IDYgMCAwIDEtNi02VjU0YTYgNiAwIDAgMSA2LTZoMzA4YTYgNiAwIDAgMSA2IDZ2MzA4YTYgNiAwIDAgMS02IDZ6XCJdXG59O1xudmFyIGZhQ2xvc2VkQ2FwdGlvbmluZyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjbG9zZWQtY2FwdGlvbmluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjIwYVwiLCBcIk00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDMzNkg1NGMtMy4zIDAtNi0yLjctNi02VjExOGMwLTMuMyAyLjctNiA2LTZoNDA0YzMuMyAwIDYgMi43IDYgNnYyNzZjMCAzLjMtMi43IDYtNiA2em0tMjExLjEtODUuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjYgNTYuOC0xNzIuOCAzMi4xLTE3Mi44LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN2wtMTcuNSAzMC41Yy0xLjkgMy4xLTYuMiA0LTkuMSAxLjctNDAuOC0zMi05NC42LTE0LjktOTQuNiAzMS4yIDAgNDggNTEgNzAuNSA5Mi4yIDMyLjYgMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjYgMjcuN3ptMTkwLjQgMGMxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjYgNTYuOS0xNzIuOCAzMi4xLTE3Mi44LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN0w0MjAgMjIwLjJjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIgMCA0OCA1MSA3MC41IDkyLjIgMzIuNiAyLjgtMi41IDcuMS0yLjEgOS4yLjlsMTkuNiAyNy43elwiXVxufTtcbnZhciBmYUNvbW1lbnQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnY29tbWVudCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA3NVwiLCBcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ3LjYgMTkuOSA5MS4yIDUyLjkgMTI2LjNDMzggNDA1LjcgNyA0MzkuMSA2LjUgNDM5LjVjLTYuNiA3LTguNCAxNy4yLTQuNiAyNlMxNC40IDQ4MCAyNCA0ODBjNjEuNSAwIDExMC0yNS43IDEzOS4xLTQ2LjNDMTkyIDQ0Mi44IDIyMy4yIDQ0OCAyNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJ6bTAgMzY4Yy0yNi43IDAtNTMuMS00LjEtNzguNC0xMi4xbC0yMi43LTcuMi0xOS41IDEzLjhjLTE0LjMgMTAuMS0zMy45IDIxLjQtNTcuNSAyOSA3LjMtMTIuMSAxNC40LTI1LjcgMTkuOS00MC4ybDEwLjYtMjguMS0yMC42LTIxLjhDNjkuNyAzMTQuMSA0OCAyODIuMiA0OCAyNDBjMC04OC4yIDkzLjMtMTYwIDIwOC0xNjBzMjA4IDcxLjggMjA4IDE2MC05My4zIDE2MC0yMDggMTYwelwiXVxufTtcbnZhciBmYUNvbW1lbnRBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnY29tbWVudC1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyN2FcIiwgXCJNNDQ4IDBINjRDMjguNyAwIDAgMjguNyAwIDY0djI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg5NnY4NGMwIDcuMSA1LjggMTIgMTIgMTIgMi40IDAgNC45LS43IDcuMS0yLjRMMzA0IDQxNmgxNDRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6bTE2IDM1MmMwIDguOC03LjIgMTYtMTYgMTZIMjg4bC0xMi44IDkuNkwyMDggNDI4di02MEg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNmgzODRjOC44IDAgMTYgNy4yIDE2IDE2djI4OHpcIl1cbn07XG52YXIgZmFDb21tZW50RG90cyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50LWRvdHMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0YWRcIiwgXCJNMTQ0IDIwOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTExMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTEyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyek0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ3LjYgMTkuOSA5MS4yIDUyLjkgMTI2LjNDMzggNDA1LjcgNyA0MzkuMSA2LjUgNDM5LjVjLTYuNiA3LTguNCAxNy4yLTQuNiAyNlMxNC40IDQ4MCAyNCA0ODBjNjEuNSAwIDExMC0yNS43IDEzOS4xLTQ2LjNDMTkyIDQ0Mi44IDIyMy4yIDQ0OCAyNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJ6bTAgMzY4Yy0yNi43IDAtNTMuMS00LjEtNzguNC0xMi4xbC0yMi43LTcuMi0xOS41IDEzLjhjLTE0LjMgMTAuMS0zMy45IDIxLjQtNTcuNSAyOSA3LjMtMTIuMSAxNC40LTI1LjcgMTkuOS00MC4ybDEwLjYtMjguMS0yMC42LTIxLjhDNjkuNyAzMTQuMSA0OCAyODIuMiA0OCAyNDBjMC04OC4yIDkzLjMtMTYwIDIwOC0xNjBzMjA4IDcxLjggMjA4IDE2MC05My4zIDE2MC0yMDggMTYwelwiXVxufTtcbnZhciBmYUNvbW1lbnRzID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2NvbW1lbnRzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDg2XCIsIFwiTTUzMiAzODYuMmMyNy41LTI3LjEgNDQtNjEuMSA0NC05OC4yIDAtODAtNzYuNS0xNDYuMS0xNzYuMi0xNTcuOUMzNjguMyA3Mi41IDI5NC4zIDMyIDIwOCAzMiA5My4xIDMyIDAgMTAzLjYgMCAxOTJjMCAzNyAxNi41IDcxIDQ0IDk4LjItMTUuMyAzMC43LTM3LjMgNTQuNS0zNy43IDU0LjktNi4zIDYuNy04LjEgMTYuNS00LjQgMjUgMy42IDguNSAxMiAxNCAyMS4yIDE0IDUzLjUgMCA5Ni43LTIwLjIgMTI1LjItMzguOCA5LjIgMi4xIDE4LjcgMy43IDI4LjQgNC45QzIwOC4xIDQwNy42IDI4MS44IDQ0OCAzNjggNDQ4YzIwLjggMCA0MC44LTIuNCA1OS44LTYuOEM0NTYuMyA0NTkuNyA0OTkuNCA0ODAgNTUzIDQ4MGM5LjIgMCAxNy41LTUuNSAyMS4yLTE0IDMuNi04LjUgMS45LTE4LjMtNC40LTI1LS40LS4zLTIyLjUtMjQuMS0zNy44LTU0Ljh6bS0zOTIuOC05Mi4zTDEyMi4xIDMwNWMtMTQuMSA5LjEtMjguNSAxNi4zLTQzLjEgMjEuNCAyLjctNC43IDUuNC05LjcgOC0xNC44bDE1LjUtMzEuMUw3Ny43IDI1NkM2NC4yIDI0Mi42IDQ4IDIyMC43IDQ4IDE5MmMwLTYwLjcgNzMuMy0xMTIgMTYwLTExMnMxNjAgNTEuMyAxNjAgMTEyLTczLjMgMTEyLTE2MCAxMTJjLTE2LjUgMC0zMy0xLjktNDktNS42bC0xOS44LTQuNXpNNDk4LjMgMzUybC0yNC43IDI0LjQgMTUuNSAzMS4xYzIuNiA1LjEgNS4zIDEwLjEgOCAxNC44LTE0LjYtNS4xLTI5LTEyLjMtNDMuMS0yMS40bC0xNy4xLTExLjEtMTkuOSA0LjZjLTE2IDMuNy0zMi41IDUuNi00OSA1LjYtNTQgMC0xMDIuMi0yMC4xLTEzMS4zLTQ5LjdDMzM4IDMzOS41IDQxNiAyNzIuOSA0MTYgMTkyYzAtMy40LS40LTYuNy0uNy0xMEM0NzkuNyAxOTYuNSA1MjggMjM4LjggNTI4IDI4OGMwIDI4LjctMTYuMiA1MC42LTI5LjcgNjR6XCJdXG59O1xudmFyIGZhQ29tcGFzcyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjb21wYXNzJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmMTRlXCIsIFwiTTM0Ny45NCAxMjkuODZMMjAzLjYgMTk1LjgzYTMxLjkzOCAzMS45MzggMCAwIDAtMTUuNzcgMTUuNzdsLTY1Ljk3IDE0NC4zNGMtNy42MSAxNi42NSA5LjU0IDMzLjgxIDI2LjIgMjYuMmwxNDQuMzQtNjUuOTdhMzEuOTM4IDMxLjkzOCAwIDAgMCAxNS43Ny0xNS43N2w2NS45Ny0xNDQuMzRjNy42MS0xNi42Ni05LjU0LTMzLjgxLTI2LjItMjYuMnptLTc3LjM2IDE0OC43MmMtMTIuNDcgMTIuNDctMzIuNjkgMTIuNDctNDUuMTYgMC0xMi40Ny0xMi40Ny0xMi40Ny0zMi42OSAwLTQ1LjE2IDEyLjQ3LTEyLjQ3IDMyLjY5LTEyLjQ3IDQ1LjE2IDAgMTIuNDcgMTIuNDcgMTIuNDcgMzIuNjkgMCA0NS4xNnpNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0NDhjLTExMC4yOCAwLTIwMC04OS43Mi0yMDAtMjAwUzEzNy43MiA1NiAyNDggNTZzMjAwIDg5LjcyIDIwMCAyMDAtODkuNzIgMjAwLTIwMCAyMDB6XCJdXG59O1xudmFyIGZhQ29weSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjb3B5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGM1XCIsIFwiTTQzMy45NDEgNjUuOTQxbC01MS44ODItNTEuODgyQTQ4IDQ4IDAgMCAwIDM0OC4xMTggMEgxNzZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2NDhINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MzIwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQ4aDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWOTkuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTI2NiA0NjRINTRhNiA2IDAgMCAxLTYtNlYxNTBhNiA2IDAgMCAxIDYtNmg3NHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg5NnY0MmE2IDYgMCAwIDEtNiA2em0xMjgtOTZIMTgyYTYgNiAwIDAgMS02LTZWNTRhNiA2IDAgMCAxIDYtNmgxMDZ2ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDg4djIwMmE2IDYgMCAwIDEtNiA2em02LTI1NmgtNjRWNDhoOS42MzJjMS41OTEgMCAzLjExNy42MzIgNC4yNDMgMS43NTdsNDguMzY4IDQ4LjM2OGE2IDYgMCAwIDEgMS43NTcgNC4yNDNWMTEyelwiXVxufTtcbnZhciBmYUNvcHlyaWdodCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdjb3B5cmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZjlcIiwgXCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzEgODkuNDUxLTIwMCAyMDAtMjAwIDExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMHptMTA3LjM1MS0xMDEuMDY0Yy05LjYxNCA5LjcxMi00NS41MyA0MS4zOTYtMTA0LjA2NSA0MS4zOTYtODIuNDMgMC0xNDAuNDg0LTYxLjQyNS0xNDAuNDg0LTE0MS41NjcgMC03OS4xNTIgNjAuMjc1LTEzOS40MDEgMTM5Ljc2Mi0xMzkuNDAxIDU1LjUzMSAwIDg4LjczOCAyNi42MiA5Ny41OTMgMzQuNzc5YTExLjk2NSAxMS45NjUgMCAwIDEgMS45MzYgMTUuMzIybC0xOC4xNTUgMjguMTEzYy0zLjg0MSA1Ljk1LTExLjk2NiA3LjI4Mi0xNy40OTkgMi45MjEtOC41OTUtNi43NzYtMzEuODE0LTIyLjUzOC02MS43MDgtMjIuNTM4LTQ4LjMwMyAwLTc3LjkxNiAzNS4zMy03Ny45MTYgODAuMDgyIDAgNDEuNTg5IDI2Ljg4OCA4My42OTIgNzguMjc3IDgzLjY5MiAzMi42NTcgMCA1Ni44NDMtMTkuMDM5IDY1LjcyNi0yNy4yMjUgNS4yNy00Ljg1NyAxMy41OTYtNC4wMzkgMTcuODIgMS43MzhsMTkuODY1IDI3LjE3YTExLjk0NyAxMS45NDcgMCAwIDEtMS4xNTIgMTUuNTE4elwiXVxufTtcbnZhciBmYUNyZWRpdENhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnY3JlZGl0LWNhcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwOWRcIiwgXCJNNTI3LjkgMzJINDguMUMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OC4xIDQ4aDQ3OS44YzI2LjYgMCA0OC4xLTIxLjUgNDguMS00OFY4MGMwLTI2LjUtMjEuNS00OC00OC4xLTQ4ek01NC4xIDgwaDQ2Ny44YzMuMyAwIDYgMi43IDYgNnY0Mkg0OC4xVjg2YzAtMy4zIDIuNy02IDYtNnptNDY3LjggMzUySDU0LjFjLTMuMyAwLTYtMi43LTYtNlYyNTZoNDc5Ljh2MTcwYzAgMy4zLTIuNyA2LTYgNnpNMTkyIDMzMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTcyYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg3MmM2LjYgMCAxMiA1LjQgMTIgMTJ6bTE5MiAwdjQwYzAgNi42LTUuNCAxMi0xMiAxMkgyMzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDEzNmM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJdXG59O1xudmFyIGZhRGl6enkgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZGl6enknLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1NjdcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tMzMuOC0yMTcuOWM3LjgtNy44IDcuOC0yMC41IDAtMjguM0wxOTYuMyAxOTJsMTcuOS0xNy45YzcuOC03LjggNy44LTIwLjUgMC0yOC4zLTcuOC03LjgtMjAuNS03LjgtMjguMyAwTDE2OCAxNjMuN2wtMTcuOC0xNy44Yy03LjgtNy44LTIwLjUtNy44LTI4LjMgMC03LjggNy44LTcuOCAyMC41IDAgMjguM2wxNy45IDE3LjktMTcuOSAxNy45Yy03LjggNy44LTcuOCAyMC41IDAgMjguMyA3LjggNy44IDIwLjUgNy44IDI4LjMgMGwxNy44LTE3LjggMTcuOCAxNy44YzcuOSA3LjcgMjAuNSA3LjcgMjguNC0uMnptMTYwLTkyLjJjLTcuOC03LjgtMjAuNS03LjgtMjguMyAwTDMyOCAxNjMuN2wtMTcuOC0xNy44Yy03LjgtNy44LTIwLjUtNy44LTI4LjMgMC03LjggNy44LTcuOCAyMC41IDAgMjguM2wxNy45IDE3LjktMTcuOSAxNy45Yy03LjggNy44LTcuOCAyMC41IDAgMjguMyA3LjggNy44IDIwLjUgNy44IDI4LjMgMGwxNy44LTE3LjggMTcuOCAxNy44YzcuOCA3LjggMjAuNSA3LjggMjguMyAwIDcuOC03LjggNy44LTIwLjUgMC0yOC4zbC0xNy44LTE4IDE3LjktMTcuOWM3LjctNy44IDcuNy0yMC40IDAtMjguMnpNMjQ4IDI3MmMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NCA2NC0yOC43IDY0LTY0LTI4LjctNjQtNjQtNjR6XCJdXG59O1xudmFyIGZhRG90Q2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2RvdC1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxOTJcIiwgXCJNMjU2IDU2YzExMC41MzIgMCAyMDAgODkuNDUxIDIwMCAyMDAgMCAxMTAuNTMyLTg5LjQ1MSAyMDAtMjAwIDIwMC0xMTAuNTMyIDAtMjAwLTg5LjQ1MS0yMDAtMjAwIDAtMTEwLjUzMiA4OS40NTEtMjAwIDIwMC0yMDBtMC00OEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgMTY4Yy00NC4xODMgMC04MCAzNS44MTctODAgODBzMzUuODE3IDgwIDgwIDgwIDgwLTM1LjgxNyA4MC04MC0zNS44MTctODAtODAtODB6XCJdXG59O1xudmFyIGZhRWRpdCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdlZGl0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDQ0XCIsIFwiTTQwMi4zIDM0NC45bDMyLTMyYzUtNSAxMy43LTEuNSAxMy43IDUuN1Y0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGgyNzMuNWM3LjEgMCAxMC43IDguNiA1LjcgMTMuN2wtMzIgMzJjLTEuNSAxLjUtMy41IDIuMy01LjcgMi4zSDQ4djM1MmgzNTJWMzUwLjVjMC0yLjEuOC00LjEgMi4zLTUuNnptMTU2LjYtMjAxLjhMMjk2LjMgNDA1LjdsLTkwLjQgMTBjLTI2LjIgMi45LTQ4LjUtMTkuMi00NS42LTQ1LjZsMTAtOTAuNEw0MzIuOSAxNy4xYzIyLjktMjIuOSA1OS45LTIyLjkgODIuNyAwbDQzLjIgNDMuMmMyMi45IDIyLjkgMjIuOSA2MCAuMSA4Mi44ek00NjAuMSAxNzRMNDAyIDExNS45IDIxNi4yIDMwMS44bC03LjMgNjUuMyA2NS4zLTcuM0w0NjAuMSAxNzR6bTY0LjgtNzkuN2wtNDMuMi00My4yYy00LjEtNC4xLTEwLjgtNC4xLTE0LjggMEw0MzYgODJsNTguMSA1OC4xIDMwLjktMzAuOWM0LTQuMiA0LTEwLjgtLjEtMTQuOXpcIl1cbn07XG52YXIgZmFFbnZlbG9wZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdlbnZlbG9wZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBlMFwiLCBcIk00NjQgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0OHY0MC44MDVjLTIyLjQyMiAxOC4yNTktNTguMTY4IDQ2LjY1MS0xMzQuNTg3IDEwNi40OS0xNi44NDEgMTMuMjQ3LTUwLjIwMSA0NS4wNzItNzMuNDEzIDQ0LjcwMS0yMy4yMDguMzc1LTU2LjU3OS0zMS40NTktNzMuNDEzLTQ0LjcwMUMxMDYuMTggMTk5LjQ2NSA3MC40MjUgMTcxLjA2NyA0OCAxNTIuODA1VjExMmg0MTZ6TTQ4IDQwMFYyMTQuMzk4YzIyLjkxNCAxOC4yNTEgNTUuNDA5IDQzLjg2MiAxMDQuOTM4IDgyLjY0NiAyMS44NTcgMTcuMjA1IDYwLjEzNCA1NS4xODYgMTAzLjA2MiA1NC45NTUgNDIuNzE3LjIzMSA4MC41MDktMzcuMTk5IDEwMy4wNTMtNTQuOTQ3IDQ5LjUyOC0zOC43ODMgODIuMDMyLTY0LjQwMSAxMDQuOTQ3LTgyLjY1M1Y0MDBINDh6XCJdXG59O1xudmFyIGZhRW52ZWxvcGVPcGVuID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2VudmVsb3BlLW9wZW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyYjZcIiwgXCJNNDk0LjU4NiAxNjQuNTE2Yy00LjY5Ny0zLjg4My0xMTEuNzIzLTg5Ljk1LTEzNS4yNTEtMTA4LjY1N0MzMzcuMjMxIDM4LjE5MSAyOTkuNDM3IDAgMjU2IDBjLTQzLjIwNSAwLTgwLjYzNiAzNy43MTctMTAzLjMzNSA1NS44NTktMjQuNDYzIDE5LjQ1LTEzMS4wNyAxMDUuMTk1LTEzNS4xNSAxMDguNTQ5QTQ4LjAwNCA0OC4wMDQgMCAwIDAgMCAyMDEuNDg1VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjIwMS41MDlhNDggNDggMCAwIDAtMTcuNDE0LTM2Ljk5M3pNNDY0IDQ1OGE2IDYgMCAwIDEtNiA2SDU0YTYgNiAwIDAgMS02LTZWMjA0LjM0N2MwLTEuODEzLjgxNi0zLjUyNiAyLjIyNi00LjY2NSAxNS44Ny0xMi44MTQgMTA4Ljc5My04Ny41NTQgMTMyLjM2NC0xMDYuMjkzQzIwMC43NTUgNzguODggMjMyLjM5OCA0OCAyNTYgNDhjMjMuNjkzIDAgNTUuODU3IDMxLjM2OSA3My40MSA0NS4zODkgMjMuNTczIDE4Ljc0MSAxMTYuNTAzIDkzLjQ5MyAxMzIuMzY2IDEwNi4zMTZhNS45OSA1Ljk5IDAgMCAxIDIuMjI0IDQuNjYzVjQ1OHptLTMxLjk5MS0xODcuNzA0YzQuMjQ5IDUuMTU5IDMuNDY1IDEyLjc5NS0xLjc0NSAxNi45ODEtMjguOTc1IDIzLjI4My01OS4yNzQgNDcuNTk3LTcwLjkyOSA1Ni44NjNDMzM2LjYzNiAzNjIuMjgzIDI5OS4yMDUgNDAwIDI1NiA0MDBjLTQzLjQ1MiAwLTgxLjI4Ny0zOC4yMzctMTAzLjMzNS01NS44Ni0xMS4yNzktOC45NjctNDEuNzQ0LTMzLjQxMy03MC45MjctNTYuODY1LTUuMjEtNC4xODctNS45OTMtMTEuODIyLTEuNzQ1LTE2Ljk4MWwxNS4yNTgtMTguNTI4YzQuMTc4LTUuMDczIDExLjY1Ny01Ljg0MyAxNi43NzktMS43MjYgMjguNjE4IDIzLjAwMSA1OC41NjYgNDcuMDM1IDcwLjU2IDU2LjU3MUMyMDAuMTQzIDMyMC42MzEgMjMyLjMwNyAzNTIgMjU2IDM1MmMyMy42MDIgMCA1NS4yNDYtMzAuODggNzMuNDEtNDUuMzg5IDExLjk5NC05LjUzNSA0MS45NDQtMzMuNTcgNzAuNTYzLTU2LjU2OCA1LjEyMi00LjExNiAxMi42MDEtMy4zNDYgMTYuNzc4IDEuNzI3bDE1LjI1OCAxOC41MjZ6XCJdXG59O1xudmFyIGZhRXllID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2V5ZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA2ZVwiLCBcIk0yODggMTQ0YTExMC45NCAxMTAuOTQgMCAwIDAtMzEuMjQgNSA1NS40IDU1LjQgMCAwIDEgNy4yNCAyNyA1NiA1NiAwIDAgMS01NiA1NiA1NS40IDU1LjQgMCAwIDEtMjctNy4yNEExMTEuNzEgMTExLjcxIDAgMSAwIDI4OCAxNDR6bTI4NC41MiA5Ny40QzUxOC4yOSAxMzUuNTkgNDEwLjkzIDY0IDI4OCA2NFM1Ny42OCAxMzUuNjQgMy40OCAyNDEuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM1Ny43MSAzNzYuNDEgMTY1LjA3IDQ0OCAyODggNDQ4czIzMC4zMi03MS42NCAyODQuNTItMTc3LjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTl6TTI4OCA0MDBjLTk4LjY1IDAtMTg5LjA5LTU1LTIzNy45My0xNDRDOTguOTEgMTY3IDE4OS4zNCAxMTIgMjg4IDExMnMxODkuMDkgNTUgMjM3LjkzIDE0NEM0NzcuMSAzNDUgMzg2LjY2IDQwMCAyODggNDAwelwiXVxufTtcbnZhciBmYUV5ZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2V5ZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjA3MFwiLCBcIk02MzQgNDcxTDM2IDMuNTFBMTYgMTYgMCAwIDAgMTMuNTEgNmwtMTAgMTIuNDlBMTYgMTYgMCAwIDAgNiA0MWw1OTggNDY3LjQ5YTE2IDE2IDAgMCAwIDIyLjQ5LTIuNDlsMTAtMTIuNDlBMTYgMTYgMCAwIDAgNjM0IDQ3MXpNMjk2Ljc5IDE0Ni40N2wxMzQuNzkgMTA1LjM4QzQyOS4zNiAxOTEuOTEgMzgwLjQ4IDE0NCAzMjAgMTQ0YTExMi4yNiAxMTIuMjYgMCAwIDAtMjMuMjEgMi40N3ptNDYuNDIgMjE5LjA3TDIwOC40MiAyNjAuMTZDMjEwLjY1IDMyMC4wOSAyNTkuNTMgMzY4IDMyMCAzNjhhMTEzIDExMyAwIDAgMCAyMy4yMS0yLjQ2ek0zMjAgMTEyYzk4LjY1IDAgMTg5LjA5IDU1IDIzNy45MyAxNDRhMjg1LjUzIDI4NS41MyAwIDAgMS00NCA2MC4ybDM3Ljc0IDI5LjVhMzMzLjcgMzMzLjcgMCAwIDAgNTIuOS03NS4xMSAzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5QzU1MC4yOSAxMzUuNTkgNDQyLjkzIDY0IDMyMCA2NGMtMzYuNyAwLTcxLjcxIDctMTA0LjYzIDE4LjgxbDQ2LjQxIDM2LjI5YzE4Ljk0LTQuMyAzOC4zNC03LjEgNTguMjItNy4xem0wIDI4OGMtOTguNjUgMC0xODkuMDgtNTUtMjM3LjkzLTE0NGEyODUuNDcgMjg1LjQ3IDAgMCAxIDQ0LjA1LTYwLjE5bC0zNy43NC0yOS41YTMzMy42IDMzMy42IDAgMCAwLTUyLjg5IDc1LjEgMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM4OS43MiAzNzYuNDEgMTk3LjA4IDQ0OCAzMjAgNDQ4YzM2LjcgMCA3MS43MS03LjA1IDEwNC42My0xOC44MWwtNDYuNDEtMzYuMjhDMzU5LjI4IDM5Ny4yIDMzOS44OSA0MDAgMzIwIDQwMHpcIl1cbn07XG52YXIgZmFGaWxlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2ZpbGUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxNWJcIiwgXCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4elwiXVxufTtcbnZhciBmYUZpbGVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZmlsZS1hbHQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxNWNcIiwgXCJNMjg4IDI0OHYyOGMwIDYuNi01LjQgMTItMTIgMTJIMTA4Yy02LjYgMC0xMi01LjQtMTItMTJ2LTI4YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem0tMTIgNzJIMTA4Yy02LjYgMC0xMiA1LjQtMTIgMTJ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDE2OGM2LjYgMCAxMi01LjQgMTItMTJ2LTI4YzAtNi42LTUuNC0xMi0xMi0xMnptMTA4LTE4OC4xVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDhDMCAyMS41IDIxLjUgMCA0OCAwaDIwNC4xQzI2NC44IDAgMjc3IDUuMSAyODYgMTQuMUwzNjkuOSA5OGM5IDguOSAxNC4xIDIxLjIgMTQuMSAzMy45em0tMTI4LTgwVjEyOGg3Ni4xTDI1NiA1MS45ek0zMzYgNDY0VjE3NkgyMzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjQ4SDQ4djQxNmgyODh6XCJdXG59O1xudmFyIGZhRmlsZUFyY2hpdmUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZmlsZS1hcmNoaXZlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWM2XCIsIFwiTTEyOC4zIDE2MHYzMmgzMnYtMzJ6bTY0LTk2aC0zMnYzMmgzMnptLTY0IDMydjMyaDMyVjk2em02NCAzMmgtMzJ2MzJoMzJ6bTE3Ny42LTMwLjFMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMjU2IDUxLjlsNzYuMSA3Ni4xSDI1NnpNMzM2IDQ2NEg0OFY0OGg3OS43djE2aDMyVjQ4SDIwOHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0ek0xOTQuMiAyNjUuN2MtMS4xLTUuNi02LTkuNy0xMS44LTkuN2gtMjIuMXYtMzJoLTMydjMybC0xOS43IDk3LjFDMTAyIDM4NS42IDEyNi44IDQxNiAxNjAgNDE2YzMzLjEgMCA1Ny45LTMwLjIgNTEuNS02Mi42em0tMzMuOSAxMjQuNGMtMTcuOSAwLTMyLjQtMTIuMS0zMi40LTI3czE0LjUtMjcgMzIuNC0yNyAzMi40IDEyLjEgMzIuNCAyNy0xNC41IDI3LTMyLjQgMjd6bTMyLTE5OC4xaC0zMnYzMmgzMnpcIl1cbn07XG52YXIgZmFGaWxlQXVkaW8gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZmlsZS1hdWRpbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjN1wiLCBcIk0zNjkuOTQxIDk3Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAyNTIuMTE4IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2NDE2YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjg4YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTMxLjg4MmE0OCA0OCAwIDAgMC0xNC4wNTktMzMuOTQxek0zMzIuMTE4IDEyOEgyNTZWNTEuODgyTDMzMi4xMTggMTI4ek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0djI4OEg0OHptMTQ0LTc2LjAyNGMwIDEwLjY5MS0xMi45MjYgMTYuMDQ1LTIwLjQ4NSA4LjQ4NUwxMzYgMzYwLjQ4NmgtMjhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTU2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjhsMzUuNTE1LTM2Ljk0N2M3LjU2LTcuNTYgMjAuNDg1LTIuMjA2IDIwLjQ4NSA4LjQ4NXYxMzUuOTUyem00MS4yMDEtNDcuMTNjOS4wNTEtOS4yOTcgOS4wNi0yNC4xMzMuMDAxLTMzLjQzOS0yMi4xNDktMjIuNzUyIDEyLjIzNS01Ni4yNDYgMzQuMzk1LTMzLjQ4MSAyNy4xOTggMjcuOTQgMjcuMjEyIDcyLjQ0NC4wMDEgMTAwLjQwMS0yMS43OTMgMjIuMzg2LTU2Ljk0Ny0xMC4zMTUtMzQuMzk3LTMzLjQ4MXpcIl1cbn07XG52YXIgZmFGaWxlQ29kZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWNvZGUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzlcIiwgXCJNMTQ5LjkgMzQ5LjFsLS4yLS4yLTMyLjgtMjguOSAzMi44LTI4LjljMy42LTMuMiA0LTguOC44LTEyLjRsLS4yLS4yLTE3LjQtMTguNmMtMy40LTMuNi05LTMuNy0xMi40LS40bC01Ny43IDU0LjFjLTMuNyAzLjUtMy43IDkuNCAwIDEyLjhsNTcuNyA1NC4xYzEuNiAxLjUgMy44IDIuNCA2IDIuNCAyLjQgMCA0LjgtMSA2LjQtMi44bDE3LjQtMTguNmMzLjMtMy41IDMuMS05LjEtLjQtMTIuNHptMjIwLTI1MS4yTDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTI1NiA1MS45bDc2LjEgNzYuMUgyNTZ6TTMzNiA0NjRINDhWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR6TTIwOS42IDIxNGMtNC43LTEuNC05LjUgMS4zLTEwLjkgNkwxNDQgNDA4LjFjLTEuNCA0LjcgMS4zIDkuNiA2IDEwLjlsMjQuNCA3LjFjNC43IDEuNCA5LjYtMS40IDEwLjktNkwyNDAgMjMxLjljMS40LTQuNy0xLjMtOS42LTYtMTAuOXptMjQuNSA3Ni45bC4yLjIgMzIuOCAyOC45LTMyLjggMjguOWMtMy42IDMuMi00IDguOC0uOCAxMi40bC4yLjIgMTcuNCAxOC42YzMuMyAzLjUgOC45IDMuNyAxMi40LjRsNTcuNy01NC4xYzMuNy0zLjUgMy43LTkuNCAwLTEyLjhsLTU3LjctNTQuMWMtMy41LTMuMy05LjEtMy4yLTEyLjQuNGwtMTcuNCAxOC42Yy0zLjMgMy41LTMuMSA5LjEuNCAxMi40elwiXVxufTtcbnZhciBmYUZpbGVFeGNlbCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWV4Y2VsJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWMzXCIsIFwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjEyLTI0MGgtMjguOGMtNC40IDAtOC40IDIuNC0xMC41IDYuMy0xOCAzMy4xLTIyLjIgNDIuNC0yOC42IDU3LjctMTMuOS0yOS4xLTYuOS0xNy4zLTI4LjYtNTcuNy0yLjEtMy45LTYuMi02LjMtMTAuNi02LjNIMTI0Yy05LjMgMC0xNSAxMC0xMC40IDE4bDQ2LjMgNzgtNDYuMyA3OGMtNC43IDggMS4xIDE4IDEwLjQgMThoMjguOWM0LjQgMCA4LjQtMi40IDEwLjUtNi4zIDIxLjctNDAgMjMtNDUgMjguNi01Ny43IDE0LjkgMzAuMiA1LjkgMTUuOSAyOC42IDU3LjcgMi4xIDMuOSA2LjIgNi4zIDEwLjYgNi4zSDI2MGM5LjMgMCAxNS0xMCAxMC40LTE4TDIyNCAzMjBjLjctMS4xIDMwLjMtNTAuNSA0Ni4zLTc4IDQuNy04LTEuMS0xOC0xMC4zLTE4elwiXVxufTtcbnZhciBmYUZpbGVJbWFnZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWltYWdlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWM1XCIsIFwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMzItNDhoMjI0VjI4OGwtMjMuNS0yMy41Yy00LjctNC43LTEyLjMtNC43LTE3IDBMMTc2IDM1MmwtMzkuNS0zOS41Yy00LjctNC43LTEyLjMtNC43LTE3IDBMODAgMzUydjY0em00OC0yNDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUZpbGVQZGYgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZmlsZS1wZGYnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzFcIiwgXCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em0yNTAuMi0xNDMuN2MtMTIuMi0xMi00Ny04LjctNjQuNC02LjUtMTcuMi0xMC41LTI4LjctMjUtMzYuOC00Ni4zIDMuOS0xNi4xIDEwLjEtNDAuNiA1LjQtNTYtNC4yLTI2LjItMzcuOC0yMy42LTQyLjYtNS45LTQuNCAxNi4xLS40IDM4LjUgNyA2Ny4xLTEwIDIzLjktMjQuOSA1Ni0zNS40IDc0LjQtMjAgMTAuMy00NyAyNi4yLTUxIDQ2LjItMy4zIDE1LjggMjYgNTUuMiA3Ni4xLTMxLjIgMjIuNC03LjQgNDYuOC0xNi41IDY4LjQtMjAuMSAxOC45IDEwLjIgNDEgMTcgNTUuOCAxNyAyNS41IDAgMjgtMjguMiAxNy41LTM4Ljd6bS0xOTguMSA3Ny44YzUuMS0xMy43IDI0LjUtMjkuNSAzMC40LTM1LTE5IDMwLjMtMzAuNCAzNS43LTMwLjQgMzV6bTgxLjYtMTkwLjZjNy40IDAgNi43IDMyLjEgMS44IDQwLjgtNC40LTEzLjktNC4zLTQwLjgtMS44LTQwLjh6bS0yNC40IDEzNi42YzkuNy0xNi45IDE4LTM3IDI0LjctNTQuNyA4LjMgMTUuMSAxOC45IDI3LjIgMzAuMSAzNS41LTIwLjggNC4zLTM4LjkgMTMuMS01NC44IDE5LjJ6bTEzMS42LTVzLTUgNi0zNy4zLTcuOGMzNS4xLTIuNiA0MC45IDUuNCAzNy4zIDcuOHpcIl1cbn07XG52YXIgZmFGaWxlUG93ZXJwb2ludCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXBvd2VycG9pbnQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzRcIiwgXCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em03Mi02MFYyMzZjMC02LjYgNS40LTEyIDEyLTEyaDY5LjJjMzYuNyAwIDYyLjggMjcgNjIuOCA2Ni4zIDAgNzQuMy02OC43IDY2LjUtOTUuNSA2Ni41VjQwNGMwIDYuNi01LjQgMTItMTIgMTJIMTMyYy02LjYgMC0xMi01LjQtMTItMTJ6bTQ4LjUtODcuNGgyM2M3LjkgMCAxMy45LTIuNCAxOC4xLTcuMiA4LjUtOS44IDguNC0yOC41LjEtMzcuOC00LjEtNC42LTkuOS03LTE3LjQtN2gtMjMuOXY1MnpcIl1cbn07XG52YXIgZmFGaWxlVmlkZW8gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZmlsZS12aWRlbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjOFwiLCBcIk0zNjkuOTQxIDk3Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAyNTIuMTE4IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2NDE2YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjg4YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTMxLjg4MmE0OCA0OCAwIDAgMC0xNC4wNTktMzMuOTQxek0zMzIuMTE4IDEyOEgyNTZWNTEuODgyTDMzMi4xMTggMTI4ek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0djI4OEg0OHptMjI4LjY4Ny0yMTEuMzAzTDIyNCAzMDUuMzc0VjI2OGMwLTExLjA0Ni04Ljk1NC0yMC0yMC0yMEgxMDBjLTExLjA0NiAwLTIwIDguOTU0LTIwIDIwdjEwNGMwIDExLjA0NiA4Ljk1NCAyMCAyMCAyMGgxMDRjMTEuMDQ2IDAgMjAtOC45NTQgMjAtMjB2LTM3LjM3NGw1Mi42ODcgNTIuNjc0QzI4Ni43MDQgMzk3LjMxOCAzMDQgMzkwLjI4IDMwNCAzNzUuOTg2VjI2NC4wMTFjMC0xNC4zMTEtMTcuMzA5LTIxLjMxOS0yNy4zMTMtMTEuMzE0elwiXVxufTtcbnZhciBmYUZpbGVXb3JkID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2ZpbGUtd29yZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjMlwiLCBcIk0zNjkuOSA5Ny45TDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTMzMi4xIDEyOEgyNTZWNTEuOWw3Ni4xIDc2LjF6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHYyODhINDh6bTIyMC4xLTIwOGMtNS43IDAtMTAuNiA0LTExLjcgOS41LTIwLjYgOTcuNy0yMC40IDk1LjQtMjEgMTAzLjUtLjItMS4yLS40LTIuNi0uNy00LjMtLjgtNS4xLjMuMi0yMy42LTk5LjUtMS4zLTUuNC02LjEtOS4yLTExLjctOS4yaC0xMy4zYy01LjUgMC0xMC4zIDMuOC0xMS43IDkuMS0yNC40IDk5LTI0IDk2LjItMjQuOCAxMDMuNy0uMS0xLjEtLjItMi41LS41LTQuMi0uNy01LjItMTQuMS03My4zLTE5LjEtOTktMS4xLTUuNi02LTkuNy0xMS44LTkuN2gtMTYuOGMtNy44IDAtMTMuNSA3LjMtMTEuNyAxNC44IDggMzIuNiAyNi43IDEwOS41IDMzLjIgMTM2IDEuMyA1LjQgNi4xIDkuMSAxMS43IDkuMWgyNS4yYzUuNSAwIDEwLjMtMy43IDExLjYtOS4xbDE3LjktNzEuNGMxLjUtNi4yIDIuNS0xMiAzLTE3LjNsMi45IDE3LjNjLjEuNCAxMi42IDUwLjUgMTcuOSA3MS40IDEuMyA1LjMgNi4xIDkuMSAxMS42IDkuMWgyNC43YzUuNSAwIDEwLjMtMy43IDExLjYtOS4xIDIwLjgtODEuOSAzMC4yLTExOSAzNC41LTEzNiAxLjktNy42LTMuOC0xNC45LTExLjYtMTQuOWgtMTUuOHpcIl1cbn07XG52YXIgZmFGbGFnID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2ZsYWcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMjRcIiwgXCJNMzM2LjE3NCA4MGMtNDkuMTMyIDAtOTMuMzA1LTMyLTE2MS45MTMtMzItMzEuMzAxIDAtNTguMzAzIDYuNDgyLTgwLjcyMSAxNS4xNjhhNDguMDQgNDguMDQgMCAwIDAgMi4xNDItMjAuNzI3QzkzLjA2NyAxOS41NzUgNzQuMTY3IDEuNTk0IDUxLjIwMS4xMDQgMjMuMjQyLTEuNzEgMCAyMC40MzEgMCA0OGMwIDE3Ljc2NCA5LjY1NyAzMy4yNjIgMjQgNDEuNTYyVjQ5NmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDE2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTgzLjQ0M0MxMDkuODY5IDM5NS4yOCAxNDMuMjU5IDM4NCAxOTkuODI2IDM4NGM0OS4xMzIgMCA5My4zMDUgMzIgMTYxLjkxMyAzMiA1OC40NzkgMCAxMDEuOTcyLTIyLjYxNyAxMjguNTQ4LTM5Ljk4MUM1MDMuODQ2IDM2Ny4xNjEgNTEyIDM1Mi4wNTEgNTEyIDMzNS44NTVWOTUuOTM3YzAtMzQuNDU5LTM1LjI2NC01Ny43NjgtNjYuOTA0LTQ0LjExN0M0MDkuMTkzIDY3LjMwOSAzNzEuNjQxIDgwIDMzNi4xNzQgODB6TTQ2NCAzMzZjLTIxLjc4MyAxNS40MTItNjAuODI0IDMyLTEwMi4yNjEgMzItNTkuOTQ1IDAtMTAyLjAwMi0zMi0xNjEuOTEzLTMyLTQzLjM2MSAwLTk2LjM3OSA5LjQwMy0xMjcuODI2IDI0VjEyOGMyMS43ODQtMTUuNDEyIDYwLjgyNC0zMiAxMDIuMjYxLTMyIDU5Ljk0NSAwIDEwMi4wMDIgMzIgMTYxLjkxMyAzMiA0My4yNzEgMCA5Ni4zMi0xNy4zNjYgMTI3LjgyNi0zMnYyNDB6XCJdXG59O1xudmFyIGZhRmx1c2hlZCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdmbHVzaGVkJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTc5XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptOTYtMzEyYy00NC4yIDAtODAgMzUuOC04MCA4MHMzNS44IDgwIDgwIDgwIDgwLTM1LjggODAtODAtMzUuOC04MC04MC04MHptMCAxMjhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em0wLTcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptLTExMiAyNGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MCAzNS44IDgwIDgwIDgwIDgwLTM1LjggODAtODB6bS04MCA0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTAtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em0xNjAgMTQ0SDE4NGMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGgxMjhjMTMuMiAwIDI0LTEwLjggMjQtMjRzLTEwLjgtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhRm9sZGVyID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2ZvbGRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA3YlwiLCBcIk00NjQgMTI4SDI3MmwtNTQuNjMtNTQuNjNjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNzZjMC0yNi41MS0yMS40OS00OC00OC00OHptMCAyNzJINDhWMTEyaDE0MC4xMmw1NC42MyA1NC42M2M2IDYgMTQuMTQgOS4zNyAyMi42MyA5LjM3SDQ2NHYyMjR6XCJdXG59O1xudmFyIGZhRm9sZGVyT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdmb2xkZXItb3BlbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3Y1wiLCBcIk01MjcuOSAyMjRINDgwdi00OGMwLTI2LjUtMjEuNS00OC00OC00OEgyNzJsLTY0LTY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjI4OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MDBjMTYuNSAwIDMxLjktOC41IDQwLjctMjIuNmw3OS45LTEyOGMyMC0zMS45LTMtNzMuNC00MC43LTczLjR6TTQ4IDExOGMwLTMuMyAyLjctNiA2LTZoMTM0LjFsNjQgNjRINDI2YzMuMyAwIDYgMi43IDYgNnY0MkgxNTJjLTE2LjggMC0zMi40IDguOC00MS4xIDIzLjJMNDggMzUxLjR6bTQwMCAyODJINzJsNzcuMi0xMjhINTI4elwiXVxufTtcbnZhciBmYUZvbnRBd2Vzb21lTG9nb0Z1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZm9udC1hd2Vzb21lLWxvZ28tZnVsbCcsXG4gIGljb246IFszOTkyLCA1MTIsIFtcIkZvbnQgQXdlc29tZVwiXSwgXCJmNGU2XCIsIFwiTTQ1NC42IDBINTcuNEMyNS45IDAgMCAyNS45IDAgNTcuNHYzOTcuM0MwIDQ4Ni4xIDI1LjkgNTEyIDU3LjQgNTEyaDM5Ny4zYzMxLjQgMCA1Ny40LTI1LjkgNTcuNC01Ny40VjU3LjRDNTEyIDI1LjkgNDg2LjEgMCA0NTQuNiAwem0tNTguOSAzMjQuOWMwIDQuOC00LjEgNi45LTguOSA4LjktMTkuMiA4LjEtMzkuNyAxNS43LTYxLjUgMTUuNy00MC41IDAtNjguNy00NC44LTE2My4yIDIuNXY1MS44YzAgMzAuMy00NS43IDMwLjItNDUuNyAwdi0yNTBjLTktNy0xNS0xNy45LTE1LTMwLjMgMC0yMSAxNy4xLTM4LjIgMzguMi0zOC4yIDIxIDAgMzguMiAxNy4xIDM4LjIgMzguMiAwIDEyLjItNS44IDIzLjItMTQuOSAzMC4ydjIxYzM3LjEtMTIgNjUuNS0zNC40IDE0Ni4xLTMuNCAyNi42IDExLjQgNjguNy0xNS43IDc2LjUtMTUuNyA1LjUgMCAxMC4zIDQuMSAxMC4zIDguOXYxNjAuNHptNDMyLjktMTc0LjJoLTEzN3Y3MC4xSDgyNWMzOS44IDAgNDAuNCA2Mi4yIDAgNjIuMkg2OTEuNnYxMDUuNmMwIDQ1LjUtNzAuNyA0Ni40LTcwLjcgMFYxMjguM2MwLTIyIDE4LTM5LjggMzkuOC0zOS44aDE2Ny44YzM5LjYgMCA0MC41IDYyLjIuMSA2Mi4yem0xOTEuMSAyMy40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTY5LjkgMCAxNjkuOS0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS42IDAtODIuMS0xMzkuOCAwLTEzOS44IDgyLjUgMCA4Mi40IDEzOS44IDAgMTM5Ljh6bTM3Mi40IDUzLjRjLTE3LjUgMC0zMS40LTEzLjktMzEuNC0zMS40di0xMTdjMC02Mi40LTcyLjYtNTIuNS05OS4xLTE2LjR2MTMzLjRjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjNDMuMy01MS42IDE2Mi40LTYwLjQgMTYyLjQgMzkuM3YxNDEuNWMuMyAzMC40LTMxLjUgMzEuNC0zMS43IDMxLjR6bTE3OS43IDIuOWMtNDQuMyAwLTY4LjMtMjIuOS02OC4zLTY1LjhWMjM1LjJIMTQ4OGMtMzUuNiAwLTM2LjctNTUuMyAwLTU1LjNoMTUuNXYtMzcuM2MwLTQxLjMgNjMuOC00Mi4xIDYzLjggMHYzNy41aDI0LjljMzUuNCAwIDM1LjcgNTUuMyAwIDU1LjNoLTI0Ljl2MTA4LjVjMCAyOS42IDI2LjEgMjYuMyAyNy40IDI2LjMgMzEuNCAwIDUyLjYgNTYuMy0yMi45IDU2LjN6TTE5OTIgMTIzYy0xOS41LTUwLjItOTUuNS01MC0xMTQuNSAwLTEwNy4zIDI3NS43LTk5LjUgMjUyLjctOTkuNSAyNjIuOCAwIDQyLjggNTguMyA1MS4yIDcyLjEgMTQuNGwxMy41LTM1LjlIMjAwNmwxMyAzNS45YzE0LjIgMzcuNyA3Mi4xIDI3LjIgNzIuMS0xNC40IDAtMTAuMSA1LjMgNi44LTk5LjEtMjYyLjh6bS0xMDguOSAxNzkuMWw1MS43LTE0Mi45IDUxLjggMTQyLjloLTEwMy41em01OTEuMy04NS42bC01My43IDE3Ni4zYy0xMi40IDQxLjItNzIgNDEtODQgMGwtNDIuMy0xMzUuOS00Mi4zIDEzNS45Yy0xMi40IDQwLjktNzIgNDEuMi04NC41IDBsLTU0LjItMTc2LjNjLTEyLjUtMzkuNCA0OS44LTU2LjEgNjAuMi0xNi45TDIyMTMgMzQybDQ1LjMtMTM5LjVjMTAuOS0zMi43IDU5LjYtMzQuNyA3MS4yIDBsNDUuMyAxMzkuNSAzOS4zLTE0Mi40YzEwLjMtMzguMyA3Mi42LTIzLjggNjAuMyAxNi45em0yNzUuNCA3NS4xYzAtNDIuNC0zMy45LTExNy41LTExOS41LTExNy41LTczLjIgMC0xMjQuNCA1Ni4zLTEyNC40IDEyNiAwIDc3LjIgNTUuMyAxMjYuNCAxMjguNSAxMjYuNCAzMS43IDAgOTMtMTEuNSA5My0zOS44IDAtMTguMy0yMS4xLTMxLjUtMzkuMy0yMi40LTQ5LjQgMjYuMi0xMDkgOC40LTExNS45LTQzLjhoMTQ4LjNjMTYuMyAwIDI5LjMtMTMuNCAyOS4zLTI4Ljl6TTI1NzEgMjc3LjdjOS41LTczLjQgMTEzLjktNjguNiAxMTguNiAwSDI1NzF6bTMxNi43IDE0OC44Yy0zMS40IDAtODEuNi0xMC41LTk2LjYtMzEuOS0xMi40LTE3IDIuNS0zOS44IDIxLjgtMzkuOCAxNi4zIDAgMzYuOCAyMi45IDc3LjcgMjIuOSAyNy40IDAgNDAuNC0xMSA0MC40LTI1LjggMC0zOS44LTE0Mi45LTcuNC0xNDIuOS0xMDIgMC00MC40IDM1LjMtNzUuNyA5OC42LTc1LjcgMzEuNCAwIDc0LjEgOS45IDg3LjYgMjkuNCAxMC44IDE0LjgtMS40IDM2LjItMjAuOSAzNi4yLTE1LjEgMC0yNi43LTE3LjMtNjYuMi0xNy4zLTIyLjkgMC0zNy44IDEwLjUtMzcuOCAyMy44IDAgMzUuOSAxNDIuNCA2IDE0Mi40IDEwMy4xLS4xIDQzLjctMzcuNCA3Ny4xLTEwNC4xIDc3LjF6bTI2Ni44LTI1Mi40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTcwLjEgMCAxNjkuNi0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS44IDAtODItMTM5LjggMC0xMzkuOCA4Mi41IDAgODIuNCAxMzkuOCAwIDEzOS44em00NzYuOSAyMlYyNjguN2MwLTUzLjgtNjEuNC00NS44LTg1LjctMTAuNXYxMzRjMCA0MS4zLTYzLjggNDIuMS02My44IDBWMjY4LjdjMC01Mi4xLTU5LjUtNDcuNC04NS43LTEwLjF2MTMzLjZjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjOS45LTE0LjQgNDEuOC0zNy4zIDc4LjYtMzcuMyAzNS4zIDAgNTcuNyAxNi40IDY2LjcgNDMuOCAxMy45LTIxLjggNDUuOC00My44IDgyLjYtNDMuOCA0NC4zIDAgNzAuNyAyMy40IDcwLjcgNzIuN3YxNDUuM2MuNSAxNy4zLTEzLjUgMzEuNC0zMS45IDMxLjQgMy41LjEtMzEuMyAxLjEtMzEuMy0zMS4zek0zOTkyIDI5MS42YzAtNDIuNC0zMi40LTExNy41LTExNy45LTExNy41LTczLjIgMC0xMjcuNSA1Ni4zLTEyNy41IDEyNiAwIDc3LjIgNTguMyAxMjYuNCAxMzEuNiAxMjYuNCAzMS43IDAgOTEuNS0xMS41IDkxLjUtMzkuOCAwLTE4LjMtMjEuMS0zMS41LTM5LjMtMjIuNC00OS40IDI2LjItMTEwLjUgOC40LTExNy41LTQzLjhoMTQ5LjhjMTYuMyAwIDI5LjEtMTMuNCAyOS4zLTI4Ljl6bS0xODAuNS0xMy45YzkuNy03NC40IDExNS45LTY4LjMgMTIwLjEgMGgtMTIwLjF6XCJdXG59O1xudmFyIGZhRnJvd24gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZnJvd24nLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImYxMTlcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tODAtMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwLTY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptLTgwIDEyOGMtNDAuMiAwLTc4IDE3LjctMTAzLjggNDguNi04LjUgMTAuMi03LjEgMjUuMyAzLjEgMzMuOCAxMC4yIDguNCAyNS4zIDcuMSAzMy44LTMuMSAxNi42LTE5LjkgNDEtMzEuNCA2Ni45LTMxLjRzNTAuMyAxMS40IDY2LjkgMzEuNGM4LjEgOS43IDIzLjEgMTEuOSAzMy44IDMuMSAxMC4yLTguNSAxMS41LTIzLjYgMy4xLTMzLjhDMzI2IDMyMS43IDI4OC4yIDMwNCAyNDggMzA0elwiXVxufTtcbnZhciBmYUZyb3duT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdmcm93bi1vcGVuJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTdhXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTQ4LTI0OGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzJ6bTEyOC0zMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bS04MCAxMTJjLTM1LjYgMC04OC44IDIxLjMtOTUuOCA2MS4yLTIgMTEuOCA5IDIxLjUgMjAuNSAxOC4xIDMxLjItOS42IDU5LjQtMTUuMyA3NS4zLTE1LjNzNDQuMSA1LjcgNzUuMyAxNS4zYzExLjQgMy41IDIyLjUtNi4zIDIwLjUtMTguMS03LTM5LjktNjAuMi02MS4yLTk1LjgtNjEuMnpcIl1cbn07XG52YXIgZmFGdXRib2wgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZnV0Ym9sJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmMWUzXCIsIFwiTTQ4My44IDE3OS40QzQ0OS44IDc0LjYgMzUyLjYgOCAyNDguMSA4Yy0yNS40IDAtNTEuMiAzLjktNzYuNyAxMi4yQzQxLjIgNjIuNS0zMC4xIDIwMi40IDEyLjIgMzMyLjYgNDYuMiA0MzcuNCAxNDMuNCA1MDQgMjQ3LjkgNTA0YzI1LjQgMCA1MS4yLTMuOSA3Ni43LTEyLjIgMTMwLjItNDIuMyAyMDEuNS0xODIuMiAxNTkuMi0zMTIuNHptLTc0LjUgMTkzLjdsLTUyLjIgNi40LTQzLjctNjAuOSAyNC40LTc1LjIgNzEuMS0yMi4xIDM4LjkgMzYuNGMtLjIgMzAuNy03LjQgNjEuMS0yMS43IDg5LjItNC43IDkuMy0xMC43IDE3LjgtMTYuOCAyNi4yem0wLTIzNS40bC0xMC40IDUzLjEtNzAuNyAyMi02NC4yLTQ2LjVWOTIuNWw0Ny40LTI2LjJjMzkuMiAxMyA3My40IDM4IDk3LjkgNzEuNHpNMTg0LjkgNjYuNEwyMzIgOTIuNXY3My44bC02NC4yIDQ2LjUtNzAuNi0yMi0xMC4xLTUyLjVjMjQuMy0zMy40IDU3LjktNTguNiA5Ny44LTcxLjl6TTEzOSAzNzkuNUw4NS45IDM3M2MtMTQuNC0yMC4xLTM3LjMtNTkuNi0zNy44LTExNS4zbDM5LTM2LjQgNzEuMSAyMi4yIDI0LjMgNzQuMy00My41IDYxLjd6bTQ4LjIgNjdsLTIyLjQtNDguMSA0My42LTYxLjdIMjg3bDQ0LjMgNjEuNy0yMi40IDQ4LjFjLTYuMiAxLjgtNTcuNiAyMC40LTEyMS43IDB6XCJdXG59O1xudmFyIGZhR2VtID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2dlbScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjNhNVwiLCBcIk00NjQgMEgxMTJjLTQgMC03LjggMi0xMCA1LjRMMiAxNTIuNmMtMi45IDQuNC0yLjYgMTAuMi43IDE0LjJsMjc2IDM0MC44YzQuOCA1LjkgMTMuOCA1LjkgMTguNiAwbDI3Ni0zNDAuOGMzLjMtNC4xIDMuNi05LjguNy0xNC4yTDQ3NC4xIDUuNEM0NzEuOCAyIDQ2OC4xIDAgNDY0IDB6bS0xOS4zIDQ4bDYzLjMgOTZoLTY4LjRsLTUxLjctOTZoNTYuOHptLTIwMi4xIDBoOTAuN2w1MS43IDk2SDE5MWw1MS42LTk2em0tMTExLjMgMGg1Ni44bC01MS43IDk2SDY4bDYzLjMtOTZ6bS00MyAxNDRoNTEuNEwyMDggMzUyIDg4LjMgMTkyem0xMDIuOSAwaDE5My42TDI4OCA0MzUuMyAxOTEuMiAxOTJ6TTM2OCAzNTJsNjguMi0xNjBoNTEuNEwzNjggMzUyelwiXVxufTtcbnZhciBmYUdyaW1hY2UgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZ3JpbWFjZScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU3ZlwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS04MC0yMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2IDE2SDE1MmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0zMmMwLTI2LjUtMjEuNS00OC00OC00OHptLTE2OCA5NmgtMjRjLTguOCAwLTE2LTcuMi0xNi0xNnYtOGg0MHYyNHptMC00MGgtNDB2LThjMC04LjggNy4yLTE2IDE2LTE2aDI0djI0em02NCA0MGgtNDh2LTI0aDQ4djI0em0wLTQwaC00OHYtMjRoNDh2MjR6bTY0IDQwaC00OHYtMjRoNDh2MjR6bTAtNDBoLTQ4di0yNGg0OHYyNHptNTYgMjRjMCA4LjgtNy4yIDE2LTE2IDE2aC0yNHYtMjRoNDB2OHptMC0yNGgtNDB2LTI0aDI0YzguOCAwIDE2IDcuMiAxNiAxNnY4elwiXVxufTtcbnZhciBmYUdyaW4gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZ3JpbicsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4MFwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuNC0xNy43IDE1LjMgNy45IDQ3LjEgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zek0xNjggMjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYUdyaW5BbHQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZ3Jpbi1hbHQnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODFcIiwgXCJNMjAwLjMgMjQ4YzEyLjQtMTguNyAxNS4xLTM3LjMgMTUuNy01Ni0uNS0xOC43LTMuMy0zNy4zLTE1LjctNTYtOC0xMi0yNS4xLTExLjQtMzIuNyAwLTEyLjQgMTguNy0xNS4xIDM3LjMtMTUuNyA1NiAuNSAxOC43IDMuMyAzNy4zIDE1LjcgNTYgOC4xIDEyIDI1LjIgMTEuNCAzMi43IDB6bTEyOCAwYzEyLjQtMTguNyAxNS4xLTM3LjMgMTUuNy01Ni0uNS0xOC43LTMuMy0zNy4zLTE1LjctNTYtOC0xMi0yNS4xLTExLjQtMzIuNyAwLTEyLjQgMTguNy0xNS4xIDM3LjMtMTUuNyA1NiAuNSAxOC43IDMuMyAzNy4zIDE1LjcgNTYgOC4xIDEyIDI1LjIgMTEuNCAzMi43IDB6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6XCJdXG59O1xudmFyIGZhR3JpbkJlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZ3Jpbi1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTgyXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTA1LjYtMTUxLjRjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjgtMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMSA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6bS0yMzUuOS03Mi45YzMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zem0xNjAgMGMzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjMgMy43IDIuMSA3LjIgNS43IDguM3pcIl1cbn07XG52YXIgZmFHcmluQmVhbVN3ZWF0ID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2dyaW4tYmVhbS1zd2VhdCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4M1wiLCBcIk00NDAgMTYwYzI5LjUgMCA1My4zLTI2LjMgNTMuMy01OC43IDAtMjUtMzEuNy03NS41LTQ2LjItOTcuMy0zLjYtNS4zLTEwLjctNS4zLTE0LjIgMC0xNC41IDIxLjgtNDYuMiA3Mi4zLTQ2LjIgOTcuMyAwIDMyLjQgMjMuOCA1OC43IDUzLjMgNTguN3pNMjQ4IDQwMGM1MS45IDAgMTE1LjMtMzIuOSAxMjMuMy04MCAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgOCA0Ny4xIDcxLjQgODAgMTIzLjMgODB6bTEzMC4zLTE2OC4zYzMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjYgNi4yIDQuNiA5LjMgMy43em0xMDUuMy01Mi45Yy0yNC42IDE1LjctNDYgMTIuOS00Ni40IDEyLjkgNi45IDIwLjIgMTAuOCA0MS44IDEwLjggNjQuMyAwIDExMC4zLTg5LjcgMjAwLTIwMCAyMDBTNDggMzY2LjMgNDggMjU2IDEzNy43IDU2IDI0OCA1NmMzOS44IDAgNzYuOCAxMS44IDEwOCAzMS45IDEuNy05LjUgNi4zLTI0LjEgMTcuMi00NS43QzMzNi40IDIwLjYgMjkzLjcgOCAyNDggOCAxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4YzAtMjctNC40LTUyLjktMTIuNC03Ny4yek0xNjggMTg5LjRjMTIuMyAwIDIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjMgMy43IDIuMSA3LjIgNS43IDguMyAzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuOCAxOS4yLTIxLjYgMzEuNS0yMS42elwiXVxufTtcbnZhciBmYUdyaW5IZWFydHMgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZ3Jpbi1oZWFydHMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODRcIiwgXCJNMzUzLjYgMzA0LjZjLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjgtMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyA3LjkgNDcuMiA3MS4zIDgwIDEyMy4zIDgwczExNS4zLTMyLjkgMTIzLjMtODBjMS42LTkuOC03LjctMTguNC0xNy43LTE1LjN6bS0xNTIuOC00OC45YzQuNSAxLjIgOS4yLTEuNSAxMC41LTZsMTkuNC02OS45YzUuNi0yMC4zLTcuNC00MS4xLTI4LjgtNDQuNS0xOC42LTMtMzYuNCA5LjgtNDEuNSAyNy45bC0yIDcuMS03LjEtMS45Yy0xOC4yLTQuNy0zOC4yIDQuMy00NC45IDIyLTcuNyAyMC4yIDMuOCA0MS45IDI0LjIgNDcuMmw3MC4yIDE4LjF6bTE4OC44LTY1LjNjLTYuNy0xNy42LTI2LjctMjYuNy00NC45LTIybC03LjEgMS45LTItNy4xYy01LTE4LjEtMjIuOC0zMC45LTQxLjUtMjcuOS0yMS40IDMuNC0zNC40IDI0LjItMjguOCA0NC41bDE5LjQgNjkuOWMxLjIgNC41IDUuOSA3LjIgMTAuNSA2bDcwLjItMTguMmMyMC40LTUuMyAzMS45LTI2LjkgMjQuMi00Ny4xek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6XCJdXG59O1xudmFyIGZhR3JpblNxdWludCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdncmluLXNxdWludCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4NVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuNC0xNy43IDE1LjMgNy45IDQ3LjEgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMjM0LjctNDAuOGMzLjYgNC4yIDkuOSA1LjcgMTUuMyAyLjVsODAtNDhjMy42LTIuMiA1LjgtNi4xIDUuOC0xMC4zcy0yLjItOC4xLTUuOC0xMC4zbC04MC00OGMtNS4xLTMtMTEuNC0xLjktMTUuMyAyLjUtMy44IDQuNS0zLjggMTEtLjEgMTUuNWwzMy42IDQwLjMtMzMuNiA0MC4zYy0zLjggNC41LTMuNyAxMS4xLjEgMTUuNXptMjQyLjkgMi41YzUuNCAzLjIgMTEuNyAxLjcgMTUuMy0yLjUgMy44LTQuNSAzLjgtMTEgLjEtMTUuNUwzNDMuNiAyMDhsMzMuNi00MC4zYzMuOC00LjUgMy43LTExLS4xLTE1LjUtMy44LTQuNC0xMC4yLTUuNC0xNS4zLTIuNWwtODAgNDhjLTMuNiAyLjItNS44IDYuMS01LjggMTAuM3MyLjIgOC4xIDUuOCAxMC4zbDgwIDQ4elwiXVxufTtcbnZhciBmYUdyaW5TcXVpbnRUZWFycyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdncmluLXNxdWludC10ZWFycycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU4NlwiLCBcIk0xMTcuMSAzODQuMWMtMjUuOCAzLjctODQgMTMuNy0xMDAuOSAzMC42LTIxLjkgMjEuOS0yMS41IDU3LjkuOSA4MC4zczU4LjMgMjIuOCA4MC4zLjlDMTE0LjMgNDc5IDEyNC4zIDQyMC44IDEyOCAzOTVjLjgtNi40LTQuNi0xMS44LTEwLjktMTAuOXptLTQxLjItNDEuN0M0MC4zIDI2OCA1MyAxNzYuMSAxMTQuNiAxMTQuNiAxNTIuNCA3Ni44IDIwMi42IDU2IDI1NiA1NmMzNi4yIDAgNzAuOCA5LjggMTAxLjIgMjcuNyAzLjgtMjAuMyA4LTM2LjEgMTItNDguM0MzMzMuOCAxNy4yIDI5NC45IDggMjU2IDggMTkyLjUgOCAxMjkuMSAzMi4yIDgwLjYgODAuNmMtNzQuMSA3NC4xLTkxLjMgMTgzLjQtNTIgMjc0IDEyLjItNC4xIDI3LjctOC4zIDQ3LjMtMTIuMnptMzUyLjMtMTg3LjZjNDUgNzYuNiAzNC45IDE3Ni45LTMwLjggMjQyLjYtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNi0zMC41IDAtNTkuOC03LTg2LjQtMTkuOC0zLjkgMTkuNS04IDM1LTEyLjIgNDcuMiAzMS40IDEzLjYgNjUgMjAuNiA5OC43IDIwLjYgNjMuNSAwIDEyNi45LTI0LjIgMTc1LjQtNzIuNiA3OC4xLTc4LjEgOTMuMS0xOTUuNCA0NS4yLTI4OC42LTEyLjMgNC0yOC4yIDguMS00OC41IDEyem0tMzMuMy0yNi45YzI1LjgtMy43IDg0LTEzLjcgMTAwLjktMzAuNiAyMS45LTIxLjkgMjEuNS01Ny45LS45LTgwLjNzLTU4LjMtMjIuOC04MC4zLS45QzM5Ny43IDMzIDM4Ny43IDkxLjIgMzg0IDExN2MtLjggNi40IDQuNiAxMS44IDEwLjkgMTAuOXptLTE4NyAxMDguM2MtMy0zLTcuMi00LjItMTEuNC0zLjJMMTA2IDI1NS43Yy01LjcgMS40LTkuNSA2LjctOS4xIDEyLjYuNSA1LjggNS4xIDEwLjUgMTAuOSAxMWw1Mi4zIDQuOCA0LjggNTIuM2MuNSA1LjggNS4yIDEwLjQgMTEgMTAuOWguOWM1LjUgMCAxMC4zLTMuNyAxMS43LTkuMWwyMi42LTkwLjVjMS00LjItLjItOC41LTMuMi0xMS41em0zOS43LTI1LjFsOTAuNS0yMi42YzUuNy0xLjQgOS41LTYuNyA5LjEtMTIuNi0uNS01LjgtNS4xLTEwLjUtMTAuOS0xMWwtNTIuMy00LjgtNC44LTUyLjNjLS41LTUuOC01LjItMTAuNC0xMS0xMC45LTUuNi0uMS0xMS4yIDMuNC0xMi42IDkuMUwyMzMgMTk2LjVjLTEgNC4xLjIgOC40IDMuMiAxMS40IDUgNSAxMS4zIDMuMiAxMS40IDMuMnptNTIgODguNWMtMjkuMSAyOS4xLTU5LjcgNTIuOS04My45IDY1LjQtOS4yIDQuOC0xMCAxNy41LTEuNyAyMy40IDM4LjkgMjcuNyAxMDcgNi4yIDE0My43LTMwLjZTNDE2IDI1MyAzODguMyAyMTQuMWMtNS44LTguMi0xOC41LTcuNi0yMy40IDEuNy0xMi4zIDI0LjItMzYuMiA1NC43LTY1LjMgODMuOHpcIl1cbn07XG52YXIgZmFHcmluU3RhcnMgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZ3Jpbi1zdGFycycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4N1wiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgNy45IDQ3LjIgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMjI3LjktNTcuNWMtMSA2LjIgNS40IDExIDExIDcuOWwzMS4zLTE2LjMgMzEuMyAxNi4zYzUuNiAzLjEgMTItMS43IDExLTcuOWwtNi0zNC45IDI1LjQtMjQuNmM0LjUtNC41IDEuOS0xMi4yLTQuMy0xMy4ybC0zNC45LTUtMTUuNS0zMS42Yy0yLjktNS44LTExLTUuOC0xMy45IDBsLTE1LjUgMzEuNi0zNC45IDVjLTYuMi45LTguOSA4LjYtNC4zIDEzLjJsMjUuNCAyNC42LTYuMSAzNC45em0yNTkuNy03Mi43bC0zNC45LTUtMTUuNS0zMS42Yy0yLjktNS44LTExLTUuOC0xMy45IDBsLTE1LjUgMzEuNi0zNC45IDVjLTYuMi45LTguOSA4LjYtNC4zIDEzLjJsMjUuNCAyNC42LTYgMzQuOWMtMSA2LjIgNS40IDExIDExIDcuOWwzMS4zLTE2LjMgMzEuMyAxNi4zYzUuNiAzLjEgMTItMS43IDExLTcuOWwtNi0zNC45IDI1LjQtMjQuNmM0LjUtNC42IDEuOC0xMi4yLTQuNC0xMy4yelwiXVxufTtcbnZhciBmYUdyaW5UZWFycyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdncmluLXRlYXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTg4XCIsIFwiTTExNy4xIDI1Ni4xYy0yNS44IDMuNy04NCAxMy43LTEwMC45IDMwLjYtMjEuOSAyMS45LTIxLjUgNTcuOS45IDgwLjNzNTguMyAyMi44IDgwLjMuOUMxMTQuMyAzNTEgMTI0LjMgMjkyLjggMTI4IDI2N2MuOC02LjQtNC42LTExLjgtMTAuOS0xMC45em01MDYuNyAzMC42Yy0xNi45LTE2LjktNzUuMS0yNi45LTEwMC45LTMwLjYtNi4zLS45LTExLjcgNC41LTEwLjggMTAuOCAzLjcgMjUuOCAxMy43IDg0IDMwLjYgMTAwLjkgMjEuOSAyMS45IDU3LjkgMjEuNSA4MC4zLS45IDIyLjMtMjIuMyAyMi43LTU4LjMuOC04MC4yem0tMTI2LjYgNjEuN0M0NjMuOCA0MTIuMyAzOTYuOSA0NTYgMzIwIDQ1NmMtNzYuOSAwLTE0My44LTQzLjctMTc3LjItMTA3LjYtMTIuNSAzNy40LTI1LjIgNDMuOS0yOC4zIDQ2LjVDMTU5LjEgNDYwLjcgMjM0LjUgNTA0IDMyMCA1MDRzMTYwLjktNDMuMyAyMDUuNS0xMDkuMWMtMy4yLTIuNy0xNS45LTkuMi0yOC4zLTQ2LjV6TTEyMi43IDIyNC41QzEzNy45IDEyOS4yIDIyMC41IDU2IDMyMCA1NmM5OS41IDAgMTgyLjEgNzMuMiAxOTcuMyAxNjguNSAyLjEtLjIgNS4yLTIuNCA0OS41IDdDNTU0LjQgMTA2IDQ0OC43IDggMzIwIDhTODUuNiAxMDYgNzMuMiAyMzEuNGM0NC41LTkuNCA0Ny4xLTcuMiA0OS41LTYuOXpNMzIwIDQwMGM1MS45IDAgMTE1LjMtMzIuOSAxMjMuMy04MCAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgOCA0Ny4xIDcxLjQgODAgMTIzLjMgODB6bTEzMC4zLTE2OC4zYzMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjYgNi4yIDQuNiA5LjMgMy43ek0yNDAgMTg5LjRjMTIuMyAwIDIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjMgMy43IDIuMSA3LjIgNS43IDguMyAzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuOCAxOS4yLTIxLjYgMzEuNS0yMS42elwiXVxufTtcbnZhciBmYUdyaW5Ub25ndWUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZ3Jpbi10b25ndWUnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODlcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjQgNDAwYzAgMzUuNi0yOS4xIDY0LjUtNjQuOSA2NC0zNS4xLS41LTYzLjEtMjkuOC02My4xLTY1di00Mi44bDE3LjctOC44YzE1LTcuNSAzMS41IDEuNyAzNC45IDE2LjVsMi44IDEyLjFjMi4xIDkuMiAxNS4yIDkuMiAxNy4zIDBsMi44LTEyLjFjMy40LTE0LjggMTkuOC0yNC4xIDM0LjktMTYuNWwxNy43IDguOFY0MDh6bTI4LjIgMjUuM2MyLjItOC4xIDMuOC0xNi41IDMuOC0yNS4zdi00My41YzE0LjItMTIuNCAyNC40LTI3LjUgMjcuMy00NC41IDEuNy05LjktNy43LTE4LjUtMTcuNy0xNS4zLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyAyLjkgMTcgMTMuMSAzMi4xIDI3LjMgNDQuNVY0MDhjMCA4LjggMS42IDE3LjIgMy44IDI1LjNDOTEuOCAzOTkuOSA0OCAzMzMgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNzctNDMuOCAxNDMuOS0xMDcuOCAxNzcuM3pNMTY4IDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFHcmluVG9uZ3VlU3F1aW50ID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2dyaW4tdG9uZ3VlLXNxdWludCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4YVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em02NCA0MDBjMCAzNS42LTI5LjEgNjQuNS02NC45IDY0LTM1LjEtLjUtNjMuMS0yOS44LTYzLjEtNjV2LTQyLjhsMTcuNy04LjhjMTUtNy41IDMxLjUgMS43IDM0LjkgMTYuNWwyLjggMTIuMWMyLjEgOS4yIDE1LjIgOS4yIDE3LjMgMGwyLjgtMTIuMWMzLjQtMTQuOCAxOS44LTI0LjEgMzQuOS0xNi41bDE3LjcgOC44VjQwOHptMjguMiAyNS4zYzIuMi04LjEgMy44LTE2LjUgMy44LTI1LjN2LTQzLjVjMTQuMi0xMi40IDI0LjQtMjcuNSAyNy4zLTQ0LjUgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDIuOSAxNyAxMy4xIDMyLjEgMjcuMyA0NC41VjQwOGMwIDguOCAxLjYgMTcuMiAzLjggMjUuM0M5MS44IDM5OS45IDQ4IDMzMyA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA3Ny00My44IDE0My45LTEwNy44IDE3Ny4zem0zNi45LTI4MS4xYy0zLjgtNC40LTEwLjMtNS41LTE1LjMtMi41bC04MCA0OGMtMy42IDIuMi01LjggNi4xLTUuOCAxMC4zczIuMiA4LjEgNS44IDEwLjNsODAgNDhjNS40IDMuMiAxMS43IDEuNyAxNS4zLTIuNSAzLjgtNC41IDMuOC0xMSAuMS0xNS41TDM0My42IDIwOGwzMy42LTQwLjNjMy44LTQuNSAzLjctMTEuMS0uMS0xNS41em0tMTYyLjkgNDUuNWwtODAtNDhjLTUtMy0xMS40LTItMTUuMyAyLjUtMy44IDQuNS0zLjggMTEtLjEgMTUuNWwzMy42IDQwLjMtMzMuNiA0MC4zYy0zLjggNC41LTMuNyAxMSAuMSAxNS41IDMuNiA0LjIgOS45IDUuNyAxNS4zIDIuNWw4MC00OGMzLjYtMi4yIDUuOC02LjEgNS44LTEwLjNzLTIuMi04LjEtNS44LTEwLjN6XCJdXG59O1xudmFyIGZhR3JpblRvbmd1ZVdpbmsgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnZ3Jpbi10b25ndWUtd2luaycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4YlwiLCBcIk0xNTIgMTgwYy0yNS43IDAtNTUuOSAxNi45LTU5LjggNDIuMS0uOCA1IDEuNyAxMCA2LjEgMTIuNCA0LjQgMi40IDkuOSAxLjggMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWMyLjUgMi4yIDggNC43IDEzLjcgMS42IDQuNC0yLjQgNi45LTcuNCA2LjEtMTIuNC0zLjktMjUuMi0zNC4xLTQyLjEtNTkuOC00Mi4xem0xNzYtNTJjLTQ0LjIgMC04MCAzNS44LTgwIDgwczM1LjggODAgODAgODAgODAtMzUuOCA4MC04MC0zNS44LTgwLTgwLTgwem0wIDEyOGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTAtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em02NCA0MDBjMCAzNS42LTI5LjEgNjQuNS02NC45IDY0LTM1LjEtLjUtNjMuMS0yOS44LTYzLjEtNjV2LTQyLjhsMTcuNy04LjhjMTUtNy41IDMxLjUgMS43IDM0LjkgMTYuNWwyLjggMTIuMWMyLjEgOS4yIDE1LjIgOS4yIDE3LjMgMGwyLjgtMTIuMWMzLjQtMTQuOCAxOS44LTI0LjEgMzQuOS0xNi41bDE3LjcgOC44VjQwOHptMjguMiAyNS4zYzIuMi04LjEgMy44LTE2LjUgMy44LTI1LjN2LTQzLjVjMTQuMi0xMi40IDI0LjQtMjcuNSAyNy4zLTQ0LjUgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDIuOSAxNyAxMy4xIDMyLjEgMjcuMyA0NC41VjQwOGMwIDguOCAxLjYgMTcuMiAzLjggMjUuM0M5MS44IDM5OS45IDQ4IDMzMyA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA3Ny00My44IDE0My45LTEwNy44IDE3Ny4zelwiXVxufTtcbnZhciBmYUdyaW5XaW5rID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2dyaW4td2luaycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4Y1wiLCBcIk0zMjggMTgwYy0yNS42OSAwLTU1Ljg4IDE2LjkyLTU5Ljg2IDQyLjEyLTEuNzUgMTEuMjIgMTEuNSAxOC4yNCAxOS44MyAxMC44NGw5LjU1LTguNDhjMTQuODEtMTMuMTkgNDYuMTYtMTMuMTkgNjAuOTcgMGw5LjU1IDguNDhjOC40OCA3LjQzIDIxLjU2LjI1IDE5LjgzLTEwLjg0QzM4My44OCAxOTYuOTIgMzUzLjY5IDE4MCAzMjggMTgwem0tMTYwIDYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMyLTMyLTMyLTMyIDE0LjMzLTMyIDMyIDE0LjMzIDMyIDMyIDMyem0xODUuNTUgNjQuNjRjLTI1LjkzIDguMy02NC40IDEzLjA2LTEwNS41NSAxMy4wNnMtNzkuNjItNC43NS0xMDUuNTUtMTMuMDZjLTkuOTQtMy4xMy0xOS40IDUuMzctMTcuNzEgMTUuMzRDMTMyLjY3IDM2Ny4xMyAxOTYuMDYgNDAwIDI0OCA0MDBzMTE1LjMzLTMyLjg3IDEyMy4yNi04MC4wMmMxLjY4LTkuODktNy42Ny0xOC40OC0xNy43MS0xNS4zNHpNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0NDhjLTExMC4yOCAwLTIwMC04OS43Mi0yMDAtMjAwUzEzNy43MiA1NiAyNDggNTZzMjAwIDg5LjcyIDIwMCAyMDAtODkuNzIgMjAwLTIwMCAyMDB6XCJdXG59O1xudmFyIGZhSGFuZExpemFyZCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWxpemFyZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI1OFwiLCBcIk01NTYuNjg2IDI5MC41NDJMNDEwLjMyOCA2NC44MjlDMzk3LjAwMSA0NC4yNzIgMzc0LjQxNyAzMiAzNDkuOTE3IDMySDU2QzI1LjEyMSAzMiAwIDU3LjEyMiAwIDg4djhjMCA0NC4xMTIgMzUuODg4IDgwIDgwIDgwaDE5Ni4wNDJsLTE4LjMzMyA0OEgxNDRjLTQ4LjUyMyAwLTg4IDM5LjQ3Ny04OCA4OCAwIDMwLjg3OSAyNS4xMjEgNTYgNTYgNTZoMTMxLjU1MmMyLjk4NyAwIDUuOTE0LjU0OSA4LjY5NyAxLjYzMUwzNTIgNDA4LjQxOFY0ODBoMjI0VjM1NS44MjljMC0yMy4yMjUtNi42NzktNDUuODAxLTE5LjMxNC02NS4yODd6TTUyOCA0MzJINDAwdi0yMy41ODJjMC0xOS45NDgtMTIuMDE0LTM3LjUwOC0zMC42MDQtNDQuNzM2bC05OS43NTEtMzguNzg4QTcxLjczMyA3MS43MzMgMCAwIDAgMjQzLjU1MiAzMjBIMTEyYy00LjQxMSAwLTgtMy41ODktOC04IDAtMjIuMDU2IDE3Ljk0NC00MCA0MC00MGgxMTMuNzA5YzE5Ljc2NyAwIDM3Ljc4Ni0xMi40MDcgNDQuODQtMzAuODczbDI0LjU1Mi02NC4yODFjOC45OTYtMjMuNTUzLTguNDI4LTQ4Ljg0Ni0zMy42My00OC44NDZIODBjLTE3LjY0NSAwLTMyLTE0LjM1NS0zMi0zMnYtOGMwLTQuNDExIDMuNTg5LTggOC04aDI5My45MTdjOC4xNjYgMCAxNS42OTMgNC4wOSAyMC4xMzcgMTAuOTQybDE0Ni4zNTggMjI1LjcxNUE3MS44NCA3MS44NCAwIDAgMSA1MjggMzU1LjgyOVY0MzJ6XCJdXG59O1xudmFyIGZhSGFuZFBhcGVyID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2hhbmQtcGFwZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNTZcIiwgXCJNMzcyLjU3IDExMi42NDF2LTEwLjgyNWMwLTQzLjYxMi00MC41Mi03Ni42OTEtODMuMDM5LTY1LjU0Ni0yNS42MjktNDkuNS05NC4wOS00Ny40NS0xMTcuOTgyLjc0N0MxMzAuMjY5IDI2LjQ1NiA4OS4xNDQgNTcuOTQ1IDg5LjE0NCAxMDJ2MTI2LjEzYy0xOS45NTMtNy40MjctNDMuMzA4LTUuMDY4LTYyLjA4MyA4Ljg3MS0yOS4zNTUgMjEuNzk2LTM1Ljc5NCA2My4zMzMtMTQuNTUgOTMuMTUzTDEzMi40OCA0OTguNTY5YTMyIDMyIDAgMCAwIDI2LjA2MiAxMy40MzJoMjIyLjg5N2MxNC45MDQgMCAyNy44MzUtMTAuMjg5IDMxLjE4Mi0yNC44MTNsMzAuMTg0LTEzMC45NThBMjAzLjYzNyAyMDMuNjM3IDAgMCAwIDQ0OCAzMTAuNTY0VjE3OWMwLTQwLjYyLTM1LjUyMy03MS45OTItNzUuNDMtNjYuMzU5em0yNy40MjcgMTk3LjkyMmMwIDExLjczMS0xLjMzNCAyMy40NjktMy45NjUgMzQuODg2TDM2OC43MDcgNDY0aC0yMDEuOTJMNTEuNTkxIDMwMi4zMDNjLTE0LjQzOS0yMC4yNyAxNS4wMjMtNDIuNzc2IDI5LjM5NC0yMi42MDVsMjcuMTI4IDM4LjA3OWM4Ljk5NSAxMi42MjYgMjkuMDMxIDYuMjg3IDI5LjAzMS05LjI4M1YxMDJjMC0yNS42NDUgMzYuNTcxLTI0LjgxIDM2LjU3MS42OTFWMjU2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNlY2N2MwLTI1LjY2MyAzNi41NzEtMjQuODEgMzYuNTcxLjY5MVYyNTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjEwMS4xMjVjMC0yNS42NzIgMzYuNTctMjQuODEgMzYuNTcuNjkxVjI1NmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU3YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTc2LjMwOWMwLTI2LjI0MiAzNi41Ny0yNS42NCAzNi41Ny0uNjkxdjEzMS41NjN6XCJdXG59O1xudmFyIGZhSGFuZFBlYWNlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2hhbmQtcGVhY2UnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNWJcIiwgXCJNMzYyLjE0NiAxOTEuOTc2Yy0xMy43MS0yMS42NDktMzguNzYxLTM0LjAxNi02NS4wMDYtMzAuMzQxVjc0YzAtNDAuODA0LTMyLjgxMS03NC03My4xNDEtNzQtNDAuMzMgMC03My4xNCAzMy4xOTYtNzMuMTQgNzRMMTYwIDE2OGwtMTguNjc5LTc4Ljg1QzEyNi41NzggNTAuODQzIDgzLjg1IDMyLjExIDQ2LjIwOSA0Ny4yMDggOC43MzUgNjIuMjM4LTkuNTcxIDEwNC45NjMgNS4wMDggMTQyLjg1bDU1Ljc1NyAxNDQuOTI3Yy0zMC41NTcgMjQuOTU2LTQzLjk5NCA1Ny44MDktMjQuNzMzIDkyLjIxOGw1NC44NTMgOTcuOTk5QzEwMi42MjUgNDk4Ljk3IDEyNC43MyA1MTIgMTQ4LjU3NSA1MTJoMjA1LjcwMmMzMC43NDQgMCA1Ny41NTgtMjEuNDQgNjQuNTU1LTUxLjc5N2wyNy40MjctMTE4Ljk5OWE2Ny44MDEgNjcuODAxIDAgMCAwIDEuNzI5LTE1LjIwM0w0NDggMjU2YzAtNDQuOTU2LTQzLjI2My03Ny4zNDMtODUuODU0LTY0LjAyNHpNMzk5Ljk4NyAzMjZjMCAxLjQ4OC0uMTY5IDIuOTc3LS41MDIgNC40MjNsLTI3LjQyNyAxMTkuMDAxYy0xLjk3OCA4LjU4Mi05LjI5IDE0LjU3Ni0xNy43ODIgMTQuNTc2SDE0OC41NzVjLTYuNDg2IDAtMTIuNTQyLTMuNjIxLTE1LjgwNS05LjQ0OWwtNTQuODU0LTk4Yy00LjU1Ny04LjE0MS0yLjYxOS0xOC42NjggNC41MDgtMjQuNDg4bDI2LjY0Ny0yMS43NjRhMTYgMTYgMCAwIDAgNC44MTItMTguMTM5bC02NC4wOS0xNjYuNTQ5QzM3LjIyNiA5Mi45NTYgODQuMzcgNzQuODM3IDk2LjUxIDEwNi4zODlsNTkuNzg0IDE1NS4zNTdBMTYgMTYgMCAwIDAgMTcxLjIyNyAyNzJoMTEuNjMyYzguODM3IDAgMTYtNy4xNjMgMTYtMTZWNzRjMC0zNC4zNzUgNTAuMjgxLTM0LjQzIDUwLjI4MSAwdjE4MmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTI4YzAtMjUuMTIyIDM2LjU2Ny0yNS4xNTkgMzYuNTY3IDB2MjhjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2IDAtMjUuMTIgMzYuNTY3LTI1LjE2IDM2LjU2NyAwdjcwelwiXVxufTtcbnZhciBmYUhhbmRQb2ludERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnaGFuZC1wb2ludC1kb3duJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGE3XCIsIFwiTTE4OC44IDUxMmM0NS42MTYgMCA4My4yLTM3Ljc2NSA4My4yLTgzLjJ2LTM1LjY0N2E5My4xNDggOTMuMTQ4IDAgMCAwIDIyLjA2NC03LjkyOWMyMi4wMDYgMi41MDcgNDQuOTc4LTMuNTAzIDYyLjc5MS0xNS45ODVDNDA5LjM0MiAzNjguMSA0NDggMzMxLjg0MSA0NDggMjY5LjI5OVYyNDhjMC02MC4wNjMtNDAtOTguNTEyLTQwLTEyNy4ydi0yLjY3OWM0Ljk1Mi01Ljc0NyA4LTEzLjUzNiA4LTIyLjEyVjMyYzAtMTcuNjczLTEyLjg5NC0zMi0yOC44LTMySDE1Ni44QzE0MC44OTQgMCAxMjggMTQuMzI3IDEyOCAzMnY2NGMwIDguNTg0IDMuMDQ4IDE2LjM3MyA4IDIyLjEydjIuNjc5YzAgNi45NjQtNi4xOTMgMTQuODYyLTIzLjY2OCAzMC4xODNsLS4xNDguMTI5LS4xNDYuMTMxYy05LjkzNyA4Ljg1Ni0yMC44NDEgMTguMTE2LTMzLjI1MyAyNS44NTFDNDguNTM3IDE5NS43OTggMCAyMDcuNDg2IDAgMjUyLjhjMCA1Ni45MjggMzUuMjg2IDkyIDgzLjIgOTIgOC4wMjYgMCAxNS40ODktLjgxNCAyMi40LTIuMTc2VjQyOC44YzAgNDUuMDk5IDM4LjEwMSA4My4yIDgzLjIgODMuMnptMC00OGMtMTguNyAwLTM1LjItMTYuNzc1LTM1LjItMzUuMlYyNzAuNGMtMTcuMzI1IDAtMzUuMiAyNi40LTcwLjQgMjYuNC0yNi40IDAtMzUuMi0yMC42MjUtMzUuMi00NCAwLTguNzk0IDMyLjcxMi0yMC40NDUgNTYuMS0zNC45MjYgMTQuNTc1LTkuMDc0IDI3LjIyNS0xOS41MjQgMzkuODc1LTMwLjc5OSAxOC4zNzQtMTYuMTA5IDM2LjYzMy0zMy44MzYgMzkuNTk2LTU5LjA3NWgxNzYuNzUyQzM2NC4wODcgMTcwLjc5IDQwMCAyMDIuNTA5IDQwMCAyNDh2MjEuMjk5YzAgNDAuNTI0LTIyLjE5NyA1Ny4xMjQtNjEuMzI1IDUwLjYwMS04LjAwMSAxNC42MTItMzMuOTc5IDI0LjE1MS01My42MjUgMTIuOTI1LTE4LjIyNSAxOS4zNjUtNDYuMzgxIDE3Ljc4Ny02MS4wNSA0Ljk1VjQyOC44YzAgMTguOTc1LTE2LjIyNSAzNS4yLTM1LjIgMzUuMnpNMzI4IDY0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHMyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNHpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnRMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2hhbmQtcG9pbnQtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBhNVwiLCBcIk0wIDIyMC44QzAgMjY2LjQxNiAzNy43NjUgMzA0IDgzLjIgMzA0aDM1LjY0N2E5My4xNDggOTMuMTQ4IDAgMCAwIDcuOTI5IDIyLjA2NGMtMi41MDcgMjIuMDA2IDMuNTAzIDQ0Ljk3OCAxNS45ODUgNjIuNzkxQzE0My45IDQ0MS4zNDIgMTgwLjE1OSA0ODAgMjQyLjcwMSA0ODBIMjY0YzYwLjA2MyAwIDk4LjUxMi00MCAxMjcuMi00MGgyLjY3OWM1Ljc0NyA0Ljk1MiAxMy41MzYgOCAyMi4xMiA4aDY0YzE3LjY3MyAwIDMyLTEyLjg5NCAzMi0yOC44VjE4OC44YzAtMTUuOTA2LTE0LjMyNy0yOC44LTMyLTI4LjhoLTY0Yy04LjU4NCAwLTE2LjM3MyAzLjA0OC0yMi4xMiA4SDM5MS4yYy02Ljk2NCAwLTE0Ljg2Mi02LjE5My0zMC4xODMtMjMuNjY4bC0uMTI5LS4xNDgtLjEzMS0uMTQ2Yy04Ljg1Ni05LjkzNy0xOC4xMTYtMjAuODQxLTI1Ljg1MS0zMy4yNTNDMzE2LjIwMiA4MC41MzcgMzA0LjUxNCAzMiAyNTkuMiAzMmMtNTYuOTI4IDAtOTIgMzUuMjg2LTkyIDgzLjIgMCA4LjAyNi44MTQgMTUuNDg5IDIuMTc2IDIyLjRIODMuMkMzOC4xMDEgMTM3LjYgMCAxNzUuNzAxIDAgMjIwLjh6bTQ4IDBjMC0xOC43IDE2Ljc3NS0zNS4yIDM1LjItMzUuMmgxNTguNGMwLTE3LjMyNS0yNi40LTM1LjItMjYuNC03MC40IDAtMjYuNCAyMC42MjUtMzUuMiA0NC0zNS4yIDguNzk0IDAgMjAuNDQ1IDMyLjcxMiAzNC45MjYgNTYuMSA5LjA3NCAxNC41NzUgMTkuNTI0IDI3LjIyNSAzMC43OTkgMzkuODc1IDE2LjEwOSAxOC4zNzQgMzMuODM2IDM2LjYzMyA1OS4wNzUgMzkuNTk2djE3Ni43NTJDMzQxLjIxIDM5Ni4wODcgMzA5LjQ5MSA0MzIgMjY0IDQzMmgtMjEuMjk5Yy00MC41MjQgMC01Ny4xMjQtMjIuMTk3LTUwLjYwMS02MS4zMjUtMTQuNjEyLTguMDAxLTI0LjE1MS0zMy45NzktMTIuOTI1LTUzLjYyNS0xOS4zNjUtMTguMjI1LTE3Ljc4Ny00Ni4zODEtNC45NS02MS4wNUg4My4yQzY0LjIyNSAyNTYgNDggMjM5Ljc3NSA0OCAyMjAuOHpNNDQ4IDM2MGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjRzLTEwLjc0NSAyNC0yNCAyNC0yNC0xMC43NDUtMjQtMjQgMTAuNzQ1LTI0IDI0LTI0elwiXVxufTtcbnZhciBmYUhhbmRQb2ludFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2hhbmQtcG9pbnQtcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYTRcIiwgXCJNNDI4LjggMTM3LjZoLTg2LjE3N2ExMTUuNTIgMTE1LjUyIDAgMCAwIDIuMTc2LTIyLjRjMC00Ny45MTQtMzUuMDcyLTgzLjItOTItODMuMi00NS4zMTQgMC01Ny4wMDIgNDguNTM3LTc1LjcwNyA3OC43ODQtNy43MzUgMTIuNDEzLTE2Ljk5NCAyMy4zMTctMjUuODUxIDMzLjI1M2wtLjEzMS4xNDYtLjEyOS4xNDhDMTM1LjY2MiAxNjEuODA3IDEyNy43NjQgMTY4IDEyMC44IDE2OGgtMi42NzljLTUuNzQ3LTQuOTUyLTEzLjUzNi04LTIyLjEyLThIMzJjLTE3LjY3MyAwLTMyIDEyLjg5NC0zMiAyOC44djIzMC40QzAgNDM1LjEwNiAxNC4zMjcgNDQ4IDMyIDQ0OGg2NGM4LjU4NCAwIDE2LjM3My0zLjA0OCAyMi4xMi04aDIuNjc5YzI4LjY4OCAwIDY3LjEzNyA0MCAxMjcuMiA0MGgyMS4yOTljNjIuNTQyIDAgOTguOC0zOC42NTggOTkuOTQtOTEuMTQ1IDEyLjQ4Mi0xNy44MTMgMTguNDkxLTQwLjc4NSAxNS45ODUtNjIuNzkxQTkzLjE0OCA5My4xNDggMCAwIDAgMzkzLjE1MiAzMDRINDI4LjhjNDUuNDM1IDAgODMuMi0zNy41ODQgODMuMi04My4yIDAtNDUuMDk5LTM4LjEwMS04My4yLTgzLjItODMuMnptMCAxMTguNGgtOTEuMDI2YzEyLjgzNyAxNC42NjkgMTQuNDE1IDQyLjgyNS00Ljk1IDYxLjA1IDExLjIyNyAxOS42NDYgMS42ODcgNDUuNjI0LTEyLjkyNSA1My42MjUgNi41MjQgMzkuMTI4LTEwLjA3NiA2MS4zMjUtNTAuNiA2MS4zMjVIMjQ4Yy00NS40OTEgMC03Ny4yMS0zNS45MTMtMTIwLTM5LjY3NlYyMTUuNTcxYzI1LjIzOS0yLjk2NCA0Mi45NjYtMjEuMjIyIDU5LjA3NS0zOS41OTYgMTEuMjc1LTEyLjY1IDIxLjcyNS0yNS4zIDMwLjc5OS0zOS44NzVDMjMyLjM1NSAxMTIuNzEyIDI0NC4wMDYgODAgMjUyLjggODBjMjMuMzc1IDAgNDQgOC44IDQ0IDM1LjIgMCAzNS4yLTI2LjQgNTMuMDc1LTI2LjQgNzAuNGgxNTguNGMxOC40MjUgMCAzNS4yIDE2LjUgMzUuMiAzNS4yIDAgMTguOTc1LTE2LjIyNSAzNS4yLTM1LjIgMzUuMnpNODggMzg0YzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNHMtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjR6XCJdXG59O1xudmFyIGZhSGFuZFBvaW50VXAgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnaGFuZC1wb2ludC11cCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBhNlwiLCBcIk0xMDUuNiA4My4ydjg2LjE3N2ExMTUuNTIgMTE1LjUyIDAgMCAwLTIyLjQtMi4xNzZjLTQ3LjkxNCAwLTgzLjIgMzUuMDcyLTgzLjIgOTIgMCA0NS4zMTQgNDguNTM3IDU3LjAwMiA3OC43ODQgNzUuNzA3IDEyLjQxMyA3LjczNSAyMy4zMTcgMTYuOTk0IDMzLjI1MyAyNS44NTFsLjE0Ni4xMzEuMTQ4LjEyOUMxMjkuODA3IDM3Ni4zMzggMTM2IDM4NC4yMzYgMTM2IDM5MS4ydjIuNjc5Yy00Ljk1MiA1Ljc0Ny04IDEzLjUzNi04IDIyLjEydjY0YzAgMTcuNjczIDEyLjg5NCAzMiAyOC44IDMyaDIzMC40YzE1LjkwNiAwIDI4LjgtMTQuMzI3IDI4LjgtMzJ2LTY0YzAtOC41ODQtMy4wNDgtMTYuMzczLTgtMjIuMTJWMzkxLjJjMC0yOC42ODggNDAtNjcuMTM3IDQwLTEyNy4ydi0yMS4yOTljMC02Mi41NDItMzguNjU4LTk4LjgtOTEuMTQ1LTk5Ljk0LTE3LjgxMy0xMi40ODItNDAuNzg1LTE4LjQ5MS02Mi43OTEtMTUuOTg1QTkzLjE0OCA5My4xNDggMCAwIDAgMjcyIDExOC44NDdWODMuMkMyNzIgMzcuNzY1IDIzNC40MTYgMCAxODguOCAwYy00NS4wOTkgMC04My4yIDM4LjEwMS04My4yIDgzLjJ6bTExOC40IDB2OTEuMDI2YzE0LjY2OS0xMi44MzcgNDIuODI1LTE0LjQxNSA2MS4wNSA0Ljk1IDE5LjY0Ni0xMS4yMjcgNDUuNjI0LTEuNjg3IDUzLjYyNSAxMi45MjUgMzkuMTI4LTYuNTI0IDYxLjMyNSAxMC4wNzYgNjEuMzI1IDUwLjZWMjY0YzAgNDUuNDkxLTM1LjkxMyA3Ny4yMS0zOS42NzYgMTIwSDE4My41NzFjLTIuOTY0LTI1LjIzOS0yMS4yMjItNDIuOTY2LTM5LjU5Ni01OS4wNzUtMTIuNjUtMTEuMjc1LTI1LjMtMjEuNzI1LTM5Ljg3NS0zMC43OTlDODAuNzEyIDI3OS42NDUgNDggMjY3Ljk5NCA0OCAyNTkuMmMwLTIzLjM3NSA4LjgtNDQgMzUuMi00NCAzNS4yIDAgNTMuMDc1IDI2LjQgNzAuNCAyNi40VjgzLjJjMC0xOC40MjUgMTYuNS0zNS4yIDM1LjItMzUuMiAxOC45NzUgMCAzNS4yIDE2LjIyNSAzNS4yIDM1LjJ6TTM1MiA0MjRjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0cy0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnRlciA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50ZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNWFcIiwgXCJNMzU4LjE4MiAxNzkuMzYxYy0xOS40OTMtMjQuNzY4LTUyLjY3OS0zMS45NDUtNzkuODcyLTE5LjA5OC0xNS4xMjctMTUuNjg3LTM2LjE4Mi0yMi40ODctNTYuNTk1LTE5LjYyOVY2N2MwLTM2Ljk0NC0yOS43MzYtNjctNjYuMjg2LTY3Uzg5LjE0MyAzMC4wNTYgODkuMTQzIDY3djE2MS4xMjljLTE5LjkwOS03LjQxLTQzLjI3Mi01LjA5NC02Mi4wODMgOC44NzItMjkuMzU1IDIxLjc5NS0zNS43OTMgNjMuMzMzLTE0LjU1IDkzLjE1MmwxMDkuNjk5IDE1NC4wMDFDMTM0LjYzMiA1MDEuNTkgMTU0Ljc0MSA1MTIgMTc2IDUxMmgxNzguMjg2YzMwLjgwMiAwIDU3LjU3NC0yMS41IDY0LjU1Ny01MS43OTdsMjcuNDI5LTExOC45OTlBNjcuODczIDY3Ljg3MyAwIDAgMCA0NDggMzI2di04NGMwLTQ2Ljg0NC00Ni42MjUtNzkuMjczLTg5LjgxOC02Mi42Mzl6TTgwLjk4NSAyNzkuNjk3bDI3LjEyNiAzOC4wNzljOC45OTUgMTIuNjI2IDI5LjAzMSA2LjI4NyAyOS4wMzEtOS4yODNWNjdjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MTc1YzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoNi44NTdjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMzVjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MzVjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNkgyNzJjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMjFjMC0yNS4xMiAzNi41NzEtMjUuMTYgMzYuNTcxIDB2MjFjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNmg2Ljg1N2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2IDAtMjUuMTIxIDM2LjU3MS0yNS4xNiAzNi41NzEgMHY4NGMwIDEuNDg4LS4xNjkgMi45NzctLjUwMiA0LjQyM2wtMjcuNDMgMTE5LjAwMWMtMS45NzggOC41ODItOS4yOSAxNC41NzYtMTcuNzgyIDE0LjU3NkgxNzZjLTUuNzY5IDAtMTEuMjYzLTIuODc4LTE0LjY5Ny03LjY5N2wtMTA5LjcxMi0xNTRjLTE0LjQwNi0yMC4yMjMgMTQuOTk0LTQyLjgxOCAyOS4zOTQtMjIuNjA2ek0xNzYuMTQzIDQwMHYtOTZjMC04LjgzNyA2LjI2OC0xNiAxNC0xNmg2YzcuNzMyIDAgMTQgNy4xNjMgMTQgMTZ2OTZjMCA4LjgzNy02LjI2OCAxNi0xNCAxNmgtNmMtNy43MzMgMC0xNC03LjE2My0xNC0xNnptNzUuNDI4IDB2LTk2YzAtOC44MzcgNi4yNjgtMTYgMTQtMTZoNmM3LjczMiAwIDE0IDcuMTYzIDE0IDE2djk2YzAgOC44MzctNi4yNjggMTYtMTQgMTZoLTZjLTcuNzMyIDAtMTQtNy4xNjMtMTQtMTZ6TTMyNyA0MDB2LTk2YzAtOC44MzcgNi4yNjgtMTYgMTQtMTZoNmM3LjczMiAwIDE0IDcuMTYzIDE0IDE2djk2YzAgOC44MzctNi4yNjggMTYtMTQgMTZoLTZjLTcuNzMyIDAtMTQtNy4xNjMtMTQtMTZ6XCJdXG59O1xudmFyIGZhSGFuZFJvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnaGFuZC1yb2NrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjU1XCIsIFwiTTQwOC44NjQgNzkuMDUyYy0yMi40MDEtMzMuODk4LTY2LjEwOC00Mi4yNzMtOTguODEzLTIzLjU4OC0yOS40NzQtMzEuNDY5LTc5LjE0NS0zMS4wOTMtMTA4LjMzNC0uMDIyLTQ3LjE2LTI3LjAyLTEwOC43MSA1LjA1NS0xMTAuNjcxIDYwLjgwNkM0NC44NDYgMTA1LjQwNyAwIDE0MC4wMDEgMCAxODcuNDI5djU2Ljk1M2MwIDMyLjc0MSAxNC4yOCA2My45NTQgMzkuMTggODUuNjM0bDk3LjcxIDg1LjA4MWM0LjI1MiAzLjcwMiAzLjExIDUuNTczIDMuMTEgMzIuOTAzIDAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmgyNTJjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyIDAtMjMuNTEzLTEuMDE1LTMwLjc0NSAzLjk4Mi00Mi4zN2w0Mi44MzUtOTkuNjU2YzYuMDk0LTE0LjE3NyA5LjE4My0yOS4xNzIgOS4xODMtNDQuNTY4VjE0Ni45NjNjMC01Mi44MzktNTQuMzE0LTg4LjY2Mi0xMDMuMTM2LTY3LjkxMXpNNDY0IDI2MS40MDZhNjQuNTA1IDY0LjUwNSAwIDAgMS01LjI4MiAyNS42MTNsLTQyLjgzNSA5OS42NTVjLTUuMjMgMTIuMTcxLTcuODgzIDI1LjA0LTcuODgzIDM4LjI1VjQzMkgxODh2LTEwLjI4NmMwLTE2LjM3LTcuMTQtMzEuOTc3LTE5LjU5LTQyLjgxN2wtOTcuNzEtODUuMDhDNTYuMjc0IDI4MS4yNTUgNDggMjYzLjIzNiA0OCAyNDQuMzgxdi01Ni45NTNjMC0zMy4yMDggNTItMzMuNTM3IDUyIC42Nzd2NDEuMjI4YTE2IDE2IDAgMCAwIDUuNDkzIDEyLjA2N2w3IDYuMDk1QTE2IDE2IDAgMCAwIDEzOSAyMzUuNDI5VjExOC44NTdjMC0zMy4wOTcgNTItMzMuNzI1IDUyIC42Nzd2MjYuNzUxYzAgOC44MzYgNy4xNjQgMTYgMTYgMTZoN2M4LjgzNiAwIDE2LTcuMTY0IDE2LTE2di00MS4xNDNjMC0zMy4xMzQgNTItMzMuNjc1IDUyIC42Nzd2NDAuNDY2YzAgOC44MzYgNy4xNjMgMTYgMTYgMTZoN2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2di0yNy40MjljMC0zMy4wMyA1Mi0zMy43OCA1MiAuNjc3djI2Ljc1MWMwIDguODM2IDcuMTYzIDE2IDE2IDE2aDdjOC44MzcgMCAxNi03LjE2NCAxNi0xNiAwLTMzLjE0NiA1Mi0zMy42MTMgNTIgLjY3N3YxMTQuNDQ1elwiXVxufTtcbnZhciBmYUhhbmRTY2lzc29ycyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXNjaXNzb3JzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjU3XCIsIFwiTTI1NiA0ODBsNzAtLjAxM2M1LjExNCAwIDEwLjIzMS0uNTgzIDE1LjIwMy0xLjcyOWwxMTguOTk5LTI3LjQyN0M0OTAuNTYgNDQzLjgzNSA1MTIgNDE3LjAyIDUxMiAzODYuMjc3VjE4MC41NzVjMC0yMy44NDUtMTMuMDMtNDUuOTUxLTM0LjAwNS01Ny42OWwtOTcuOTk5LTU0Ljg1M2MtMzQuNDA5LTE5LjI2MS02Ny4yNjMtNS44MjQtOTIuMjE4IDI0LjczM0wxNDIuODUgMzcuMDA4Yy0zNy44ODctMTQuNTc5LTgwLjYxMiAzLjcyNy05NS42NDIgNDEuMjAxLTE1LjA5OCAzNy42NDIgMy42MzUgODAuMzcgNDEuOTQyIDk1LjExMkwxNjggMTkybC05NC05LjE0MWMtNDAuODA0IDAtNzQgMzIuODExLTc0IDczLjE0IDAgNDAuMzMgMzMuMTk2IDczLjE0MSA3NCA3My4xNDFoODcuNjM1Yy0zLjY3NSAyNi4yNDUgOC42OTIgNTEuMjk3IDMwLjM0MSA2NS4wMDZDMTc4LjY1NyA0MzYuNzM3IDIxMS4wNDQgNDgwIDI1NiA0ODB6bTAtNDguMDEzYy0yNS4xNiAwLTI1LjEyLTM2LjU2NyAwLTM2LjU2NyA4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di02Ljg1NmMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0yOGMtMjUuMTU5IDAtMjUuMTIyLTM2LjU2NyAwLTM2LjU2N2gyOGM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di02Ljg1NmMwLTguODM3LTcuMTYzLTE2LTE2LTE2SDc0Yy0zNC40MyAwLTM0LjM3NS01MC4yODEgMC01MC4yODFoMTgyYzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTExLjYzMmExNiAxNiAwIDAgMC0xMC4yNTQtMTQuOTMzTDEwNi4zODkgMTI4LjUxYy0zMS41NTItMTIuMTQtMTMuNDMyLTU5LjI4MyAxOS4yMjItNDYuNzE3bDE2Ni41NDkgNjQuMDkxYTE2LjAwMSAxNi4wMDEgMCAwIDAgMTguMTM5LTQuODEybDIxLjc2NC0yNi42NDdjNS44Mi03LjEyNyAxNi4zNDgtOS4wNjQgMjQuNDg4LTQuNTA4bDk4IDU0Ljg1NGM1LjgyOCAzLjI2MyA5LjQ0OSA5LjMxOCA5LjQ0OSAxNS44MDV2MjA1LjcwMWMwIDguNDkxLTUuOTk0IDE1LjgwNC0xNC41NzYgMTcuNzgybC0xMTkuMDAxIDI3LjQyN2ExOS43NDMgMTkuNzQzIDAgMCAxLTQuNDIzLjUwMmgtNzB6XCJdXG59O1xudmFyIGZhSGFuZFNwb2NrID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2hhbmQtc3BvY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNTlcIiwgXCJNNTAxLjAzMDUzLDExNi4xNzYwNWMtMTkuMzkwNTktMzEuNTA3NzktNTEuMjQ0MDYtMzUuNzI4NDktNjYuMzEwNDQtMzUuMDE3NTYtMTQuMTEzMjUtNTAuODEwNTEtNjIuMDAzOC01NC4wOC03MC43MzgxNi01NC4wOGE3NC4wMzA5MSw3NC4wMzA5MSwwLDAsMC03Mi4yMzgxNiw1OC45MTZsLTQuNjQ2NDgsMjIuNjYwMTQtMTMuNjgzNTctNTMuMjA3Yy05LjA5NTY5LTM1LjM3MTA3LTQ2LjQxMi02NC4wNTA3NC04OS42Ni01My4wNzIyM2E3My44OTc0OSw3My44OTc0OSwwLDAsMC01NS4xMjEsNzguOTQ3MjIsNzMuNjgyNzMsNzMuNjgyNzMsMCwwLDAtNjQuODQ5NSw5NC40MjE4MWwyNC4zNTkzMyw4Mi4xOTcyMWMtMzguMjQwMTctNy41NDQ5Mi02Mi43OTY3NywxNi4xODM1OC02OC4xMTUxMiwyMS44NDc2NGE3My42NzkxLDczLjY3OTEsMCwwLDAsMy4xOTkyMSwxMDQuMTkzMjlsOTEuMzY1MDksODUuOTc2NUExNTQuMTY0LDE1NC4xNjQsMCwwLDAsMjIwLjYyMjc5LDUxMmgxMDcuNDU0OUExMjcuMzAwNzksMTI3LjMwMDc5LDAsMCwwLDQ1Mi4zMzkyLDQxMy44NjEzOWw1Ny42MjMtMjQxLjk2MjcyQTczLjIwMjc0LDczLjIwMjc0LDAsMCwwLDUwMS4wMzA1MywxMTYuMTc2MDVabS0zNy43NTk3LDQ0LjYwNTQ0TDQwNS42NDc4OCw0MDIuNzQ4MTJhNzkuNDY2MTYsNzkuNDY2MTYsMCwwLDEtNzcuNTcwMTksNjEuMjU5NzJIMjIwLjYyMjc5YTEwNi4zNDA1MiwxMDYuMzQwNTIsMCwwLDEtNzMuMTM2Ni0yOC45OThsLTkxLjM2OS04NS45ODA0MUMzMS4zNDM4MSwzMjUuNzI2NjksNjYuNjExMzMsMjg4LjEzMSw5MS4zOTY0NCwzMTEuNTM5Mmw1MS4xMjMsNDguMTA3MzljNS40MjU3Nyw1LjEwOTM3LDEzLjQ4MjM5LjcxNjc5LDEzLjQ4MjM5LTUuODI2MTdhMjQ2Ljc5OTE0LDI0Ni43OTkxNCwwLDAsMC0xMC4xNzc3MS03MC4xNTIzbC0zNi4wMTM2Mi0xMjEuNTM5Yy05LjczMjQtMzIuODgyNzksMzkuNjk5MTYtNDcuMjcxNDUsNDkuMzg2NjQtMTQuNjI1bDMxLjM0MzcsMTA1Ljc3OTIzYzUuNTkzNzQsMTguOTA0MjgsMzMuNzgxMTksMTAuNzEyODgsMjguOTY0OC04LjAwNzgxTDE3Ny4wNjQyNyw4MC4yMzY2MmMtOC41MDM4OS0zMy4xMDM1LDQxLjQzMTU3LTQ1LjY0NjQ2LDQ5Ljg2NTE1LTEyLjgzNTkzbDQ3LjMyNjA5LDE4NC4wMzVjNC40Mjc3MywxNy4yNDIxOCwyOS4xNjIwNywxNi41MDM5LDMyLjcxMDg5LS44MDQ2OGwzMS43OTEtMTU0Ljk3MDZjNi44MTA1NC0zMy4xMDc0LDU3LjUxNzQ4LTI0LjEwNzQxLDUwLjExOTA2LDExLjk2Mjg4TDM2MC4zMjc2NCwyNDYuNzg5MjRjLTMuNzIyNjUsMTguMTA5MzYsMjMuNjY3OTMsMjQuNjMwODQsMjguMDU2NTksNi4yMTY3OUw0MTMuMTg1LDE0OC44NTk2MkM0MjEuMTQ5OCwxMTUuNTEyLDQ3MS4xNCwxMjcuNzk3MTMsNDYzLjI3MDgzLDE2MC43ODE0OVpcIl1cbn07XG52YXIgZmFIYW5kc2hha2UgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMmI1XCIsIFwiTTUxOS4yIDEyNy45bC00Ny42LTQ3LjZBNTYuMjUyIDU2LjI1MiAwIDAgMCA0MzIgNjRIMjA1LjJjLTE0LjggMC0yOS4xIDUuOS0zOS42IDE2LjNMMTE4IDEyNy45SDB2MjU1LjdoNjRjMTcuNiAwIDMxLjgtMTQuMiAzMS45LTMxLjdoOS4xbDg0LjYgNzYuNGMzMC45IDI1LjEgNzMuOCAyNS43IDEwNS42IDMuOCAxMi41IDEwLjggMjYgMTUuOSA0MS4xIDE1LjkgMTguMiAwIDM1LjMtNy40IDQ4LjgtMjQgMjIuMSA4LjcgNDguMiAyLjYgNjQtMTYuOGwyNi4yLTMyLjNjNS42LTYuOSA5LjEtMTQuOCAxMC45LTIzaDU3LjljLjEgMTcuNSAxNC40IDMxLjcgMzEuOSAzMS43aDY0VjEyNy45SDUxOS4yek00OCAzNTEuNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTZjMCA4LjktNy4yIDE2LTE2IDE2em0zOTAtNi45bC0yNi4xIDMyLjJjLTIuOCAzLjQtNy44IDQtMTEuMyAxLjJsLTIzLjktMTkuNC0zMCAzNi41Yy02IDcuMy0xNSA0LjgtMTggMi40bC0zNi44LTMxLjUtMTUuNiAxOS4yYy0xMy45IDE3LjEtMzkuMiAxOS43LTU1LjMgNi42bC05Ny4zLTg4SDk2VjE3NS44aDQxLjlsNjEuNy02MS42YzItLjggMy43LTEuNSA1LjctMi4zSDI2MmwtMzguNyAzNS41Yy0yOS40IDI2LjktMzEuMSA3Mi4zLTQuNCAxMDEuMyAxNC44IDE2LjIgNjEuMiA0MS4yIDEwMS41IDQuNGw4LjItNy41IDEwOC4yIDg3LjhjMy40IDIuOCAzLjkgNy45IDEuMiAxMS4zem0xMDYtNDAuOGgtNjkuMmMtMi4zLTIuOC00LjktNS40LTcuNy03LjdsLTEwMi43LTgzLjQgMTIuNS0xMS40YzYuNS02IDctMTYuMSAxLTIyLjZMMzY3IDE2Ny4xYy02LTYuNS0xNi4xLTYuOS0yMi42LTFsLTU1LjIgNTAuNmMtOS41IDguNy0yNS43IDkuNC0zNC42IDAtOS4zLTkuOS04LjUtMjUuMSAxLjItMzMuOWw2NS42LTYwLjFjNy40LTYuOCAxNy0xMC41IDI3LTEwLjVsODMuNy0uMmMyLjEgMCA0LjEuOCA1LjUgMi4zbDYxLjcgNjEuNkg1NDR2MTI4em00OCA0Ny43Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNmMwIDguOS03LjIgMTYtMTYgMTZ6XCJdXG59O1xudmFyIGZhSGRkID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2hkZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjBhMFwiLCBcIk01NjcuNDAzIDIzNS42NDJMNDYyLjMyMyA4NC41ODlBNDggNDggMCAwIDAgNDIyLjkxOSA2NEgxNTMuMDgxYTQ4IDQ4IDAgMCAwLTM5LjQwNCAyMC41ODlMOC41OTcgMjM1LjY0MkE0OC4wMDEgNDguMDAxIDAgMCAwIDAgMjYzLjA1NFY0MDBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0ODBjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyNjMuMDU0YzAtOS44MDEtMy0xOS4zNjYtOC41OTctMjcuNDEyek0xNTMuMDgxIDExMmgyNjkuODM4bDc3LjkxMyAxMTJINzUuMTY4bDc3LjkxMy0xMTJ6TTUyOCA0MDBINDhWMjcyaDQ4MHYxMjh6bS0zMi02NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJzLTMyLTE0LjMyNy0zMi0zMiAxNC4zMjctMzIgMzItMzIgMzIgMTQuMzI3IDMyIDMyem0tOTYgMGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJzLTMyLTE0LjMyNy0zMi0zMiAxNC4zMjctMzIgMzItMzIgMzIgMTQuMzI3IDMyIDMyelwiXVxufTtcbnZhciBmYUhlYXJ0ID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2hlYXJ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDA0XCIsIFwiTTQ1OC40IDY0LjNDNDAwLjYgMTUuNyAzMTEuMyAyMyAyNTYgNzkuMyAyMDAuNyAyMyAxMTEuNCAxNS42IDUzLjYgNjQuMy0yMS42IDEyNy42LTEwLjYgMjMwLjggNDMgMjg1LjVsMTc1LjQgMTc4LjdjMTAgMTAuMiAyMy40IDE1LjkgMzcuNiAxNS45IDE0LjMgMCAyNy42LTUuNiAzNy42LTE1LjhMNDY5IDI4NS42YzUzLjUtNTQuNyA2NC43LTE1Ny45LTEwLjYtMjIxLjN6bS0yMy42IDE4Ny41TDI1OS40IDQzMC41Yy0yLjQgMi40LTQuNCAyLjQtNi44IDBMNzcuMiAyNTEuOGMtMzYuNS0zNy4yLTQzLjktMTA3LjYgNy4zLTE1MC43IDM4LjktMzIuNyA5OC45LTI3LjggMTM2LjUgMTAuNWwzNSAzNS43IDM1LTM1LjdjMzcuOC0zOC41IDk3LjgtNDMuMiAxMzYuNS0xMC42IDUxLjEgNDMuMSA0My41IDExMy45IDcuMyAxNTAuOHpcIl1cbn07XG52YXIgZmFIb3NwaXRhbCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdob3NwaXRhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmOFwiLCBcIk0xMjggMjQ0di00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTE0MCAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyem0tNzYgODR2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptNzYgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMTgwIDEyNHYzNkgwdi0zNmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE5LjVWODUuMDM1QzMxLjUgNzMuNDE4IDQyLjI0NSA2NCA1NS41IDY0SDE0NFYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTEyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0MGg4OC41YzEzLjI1NSAwIDI0IDkuNDE4IDI0IDIxLjAzNVY0NjRINDM2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ6TTc5LjUgNDYzSDE5MnYtNjdjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjY3aDExMi41VjExMkgzMDR2MjRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDE2OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di0yNEg3OS41djM1MXpNMjY2IDY0aC0yNlYzOGE2IDYgMCAwIDAtNi02aC0yMGE2IDYgMCAwIDAtNiA2djI2aC0yNmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZoMjZ2MjZhNiA2IDAgMCAwIDYgNmgyMGE2IDYgMCAwIDAgNi02Vjk2aDI2YTYgNiAwIDAgMCA2LTZWNzBhNiA2IDAgMCAwLTYtNnpcIl1cbn07XG52YXIgZmFIb3VyZ2xhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnaG91cmdsYXNzJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMjU0XCIsIFwiTTM2OCA0OGg0YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAwIDAgNS4zNzMgMCAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDRjMCA4MC41NjQgMzIuMTg4IDE2NS44MDcgOTcuMTggMjA4QzQ3Ljg5OSAyOTguMzgxIDE2IDM4My45IDE2IDQ2NGgtNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDM2MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0yNGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00YzAtODAuNTY0LTMyLjE4OC0xNjUuODA3LTk3LjE4LTIwOEMzMzYuMTAyIDIxMy42MTkgMzY4IDEyOC4xIDM2OCA0OHpNNjQgNDhoMjU2YzAgMTAxLjYyLTU3LjMwNyAxODQtMTI4IDE4NFM2NCAxNDkuNjIxIDY0IDQ4em0yNTYgNDE2SDY0YzAtMTAxLjYyIDU3LjMwOC0xODQgMTI4LTE4NHMxMjggODIuMzggMTI4IDE4NHpcIl1cbn07XG52YXIgZmFJZEJhZGdlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2lkLWJhZGdlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMmMxXCIsIFwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDQ2NEg0OFY0OGgyODh2NDE2ek0xNDQgMTEyaDk2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2aC05NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNnptNDggMTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptLTg5LjYgMTI4aDE3OS4yYzEyLjQgMCAyMi40LTguNiAyMi40LTE5LjJ2LTE5LjJjMC0zMS44LTMwLjEtNTcuNi02Ny4yLTU3LjYtMTAuOCAwLTE4LjcgOC00NC44IDgtMjYuOSAwLTMzLjQtOC00NC44LTgtMzcuMSAwLTY3LjIgMjUuOC02Ny4yIDU3LjZ2MTkuMmMwIDEwLjYgMTAgMTkuMiAyMi40IDE5LjJ6XCJdXG59O1xudmFyIGZhSWRDYXJkID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2lkLWNhcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyYzJcIiwgXCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCA0MDBIMzAzLjJjLjktNC41LjggMy42LjgtMjIuNCAwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNiAwIDI2LS4yIDE3LjkuOCAyMi40SDQ4VjE0NGg0ODB2Mjg4em0tMTY4LTgwaDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0tMTY4IDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHpcIl1cbn07XG52YXIgZmFJbWFnZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdpbWFnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAzZVwiLCBcIk00NjQgNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptLTYgMzM2SDU0YTYgNiAwIDAgMS02LTZWMTE4YTYgNiAwIDAgMSA2LTZoNDA0YTYgNiAwIDAgMSA2IDZ2Mjc2YTYgNiAwIDAgMS02IDZ6TTEyOCAxNTJjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHpNOTYgMzUyaDMyMHYtODBsLTg3LjUxNS04Ny41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwxOTIgMzA0bC0zOS41MTUtMzkuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMOTYgMzA0djQ4elwiXVxufTtcbnZhciBmYUltYWdlcyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdpbWFnZXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYzMDJcIiwgXCJNNDgwIDQxNnYxNmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjE3NmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDE2djQ4SDU0YTYgNiAwIDAgMC02IDZ2MjQ0YTYgNiAwIDAgMCA2IDZoMzcyYTYgNiAwIDAgMCA2LTZ2LTEwaDQ4em00Mi0zMzZIMTUwYTYgNiAwIDAgMC02IDZ2MjQ0YTYgNiAwIDAgMCA2IDZoMzcyYTYgNiAwIDAgMCA2LTZWODZhNiA2IDAgMCAwLTYtNnptNi00OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI1NmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDE0NGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM4NHpNMjY0IDE0NGMwIDIyLjA5MS0xNy45MDkgNDAtNDAgNDBzLTQwLTE3LjkwOS00MC00MCAxNy45MDktNDAgNDAtNDAgNDAgMTcuOTA5IDQwIDQwem0tNzIgOTZsMzkuNTE1LTM5LjUxNWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMjg4IDI0MGwxMDMuNTE1LTEwMy41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDQ4MCAyMDh2ODBIMTkydi00OHpcIl1cbn07XG52YXIgZmFLZXlib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdrZXlib2FyZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjExY1wiLCBcIk01MjggNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0ODBjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptOCAzMzZjMCA0LjQxMS0zLjU4OSA4LTggOEg0OGMtNC40MTEgMC04LTMuNTg5LTgtOFYxMTJjMC00LjQxMSAzLjU4OS04IDgtOGg0ODBjNC40MTEgMCA4IDMuNTg5IDggOHYyODh6TTE3MCAyNzB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA4MnYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMkg4MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTM4NCAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6TTEyMiAxODh2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJIODJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS05OCAxNTh2LTE2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTgwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjE2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjE2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJdXG59O1xudmFyIGZhS2lzcyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdraXNzJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTk2XCIsIFwiTTE2OCAxNzZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xMzYgMTMyYzAtMTkuMi0yOC44LTQxLjUtNzEuNS00NC0zLjgtLjQtNy40IDIuNC04LjIgNi4yLS45IDMuOCAxLjEgNy43IDQuNyA5LjJsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtNS43IDIuNC02IDEyLjIgMCAxNC44bDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTMuNiAxLjUtNS42IDUuNC00LjcgOS4yLjggMy42IDQuMSA2LjIgNy44IDYuMmguNWM0Mi44LTIuNSA3MS41LTI0LjggNzEuNS00NCAwLTEzLTEzLjQtMjcuMy0zNS4yLTM2QzI5MC42IDMzNS4zIDMwNCAzMjEgMzA0IDMwOHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem04MC0yODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUtpc3NCZWFtID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2tpc3MtYmVhbScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU5N1wiLCBcIk0xNjggMTUyYy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIgNy4yIDUuNiA4LjMgMy41IDEgNy41LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDUuOS00LjUgNS42LTguMy0zLjEtNDIuMS0zMi03MS40LTU1LjgtNzEuNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem01Ni0xNDhjMC0xOS4yLTI4LjgtNDEuNS03MS41LTQ0LTMuOC0uNC03LjQgMi40LTguMiA2LjItLjkgMy44IDEuMSA3LjcgNC43IDkuMmwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy01LjcgMi40LTYgMTIuMiAwIDE0LjhsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtMy42IDEuNS01LjYgNS40LTQuNyA5LjIuOCAzLjYgNC4xIDYuMiA3LjggNi4yaC41YzQyLjgtMi41IDcxLjUtMjQuOCA3MS41LTQ0IDAtMTMtMTMuNC0yNy4zLTM1LjItMzZDMjkwLjYgMzM1LjMgMzA0IDMyMSAzMDQgMzA4em0yNC0xNTZjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uMyAzLjcgMiA3LjIgNS42IDguMyAzLjUgMSA3LjUtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNS45LTQuNSA1LjYtOC4zLTMuMS00Mi4xLTMyLTcxLjQtNTUuOC03MS40elwiXVxufTtcbnZhciBmYUtpc3NXaW5rSGVhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAna2lzcy13aW5rLWhlYXJ0JyxcbiAgaWNvbjogWzUwNCwgNTEyLCBbXSwgXCJmNTk4XCIsIFwiTTMwNCAzMDguNWMwLTE5LjItMjguOC00MS41LTcxLjUtNDQtMy44LS40LTcuNCAyLjQtOC4yIDYuMi0uOSAzLjggMS4xIDcuNyA0LjcgOS4ybDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTUuNyAyLjQtNiAxMi4yIDAgMTQuOGwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy0zLjYgMS41LTUuNiA1LjQtNC43IDkuMi44IDMuNiA0LjEgNi4yIDcuOCA2LjJoLjVjNDIuOC0yLjUgNzEuNS0yNC44IDcxLjUtNDQgMC0xMy0xMy40LTI3LjMtMzUuMi0zNiAyMS43LTkuMSAzNS4xLTIzLjQgMzUuMS0zNi40em03MC41LTgzLjVsOS41IDguNWMzLjggMy4zIDkuMyA0IDEzLjcgMS42IDQuNC0yLjQgNi45LTcuNCA2LjEtMTIuNC00LTI1LjItMzQuMi00Mi4xLTU5LjgtNDIuMXMtNTUuOSAxNi45LTU5LjggNDIuMWMtLjggNSAxLjcgMTAgNi4xIDEyLjQgNS44IDMuMSAxMS4yLjcgMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDB6TTEzNiAyMDguNWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMnptMzY1LjEgMTk0Yy04LTIwLjgtMzEuNS0zMS41LTUzLjEtMjUuOWwtOC40IDIuMi0yLjMtOC40Yy01LjktMjEuNC0yNy0zNi41LTQ5LTMzLTI1LjIgNC00MC42IDI4LjYtMzQgNTIuNmwyMi45IDgyLjZjMS41IDUuMyA3IDguNSAxMi40IDcuMWw4My0yMS41YzI0LjEtNi4zIDM3LjctMzEuOCAyOC41LTU1Ljd6TTMzNCA0MzYuM2MtMjYuMSAxMi41LTU1LjIgMTkuNy04NiAxOS43LTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMGMwIDIyLjEtMy43IDQzLjMtMTAuNCA2My4yIDkgNi40IDE3IDE0LjIgMjIuNiAyMy45IDYuNC4xIDEyLjYgMS40IDE4LjYgMi45IDEwLjktMjcuOSAxNy4xLTU4LjIgMTcuMS05MEM0OTYgMTE5IDM4NSA4IDI0OCA4UzAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OGMzNS40IDAgNjguOS03LjUgOTkuNC0yMC45LTIuNS03LjMgNC4zIDE3LjItMTMuNC00Ni44elwiXVxufTtcbnZhciBmYUxhdWdoID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2xhdWdoJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTk5XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZTNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNFMxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42UzQ0OCAyMDIuNiA0NDggMjU2cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTMyOCAyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0tMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xOTQuNCA2NEgxMzMuNmMtOC4yIDAtMTQuNSA3LTEzLjUgMTUgNy41IDU5LjIgNTguOSAxMDUgMTIxLjEgMTA1aDEzLjZjNjIuMiAwIDExMy42LTQ1LjggMTIxLjEtMTA1IDEtOC01LjMtMTUtMTMuNS0xNXpcIl1cbn07XG52YXIgZmFMYXVnaEJlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnbGF1Z2gtYmVhbScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU5YVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42UzQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRTMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNlM0NDggMjAyLjYgNDQ4IDI1NnMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zMjggMTUyYy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjcgOC42IDEwLjggMTEuOSAxNC45IDQuNWw5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzQuMSA3LjQgMTUuNiA0IDE0LjktNC41LTMuMS00Mi4xLTMyLTcxLjQtNTUuOC03MS40em0tMjAxIDc1LjlsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2M0LjEgNy40IDE1LjYgNCAxNC45LTQuNS0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS42IDguNSAxMC45IDExLjkgMTUuMSA0LjV6TTM2Mi40IDI4OEgxMzMuNmMtOC4yIDAtMTQuNSA3LTEzLjUgMTUgNy41IDU5LjIgNTguOSAxMDUgMTIxLjEgMTA1aDEzLjZjNjIuMiAwIDExMy42LTQ1LjggMTIxLjEtMTA1IDEtOC01LjMtMTUtMTMuNS0xNXpcIl1cbn07XG52YXIgZmFMYXVnaFNxdWludCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdsYXVnaC1zcXVpbnQnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OWJcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTQxLjQgMzg5LjRjLTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjZzLTEwMy42LTIwLjgtMTQxLjQtNTguNlM0OCAzMDkuNCA0OCAyNTZzMjAuOC0xMDMuNiA1OC42LTE0MS40UzE5NC42IDU2IDI0OCA1NnMxMDMuNiAyMC44IDE0MS40IDU4LjZTNDQ4IDIwMi42IDQ0OCAyNTZzLTIwLjggMTAzLjYtNTguNiAxNDEuNHpNMzQzLjYgMTk2bDMzLjYtNDAuM2M4LjYtMTAuMy0zLjgtMjQuOC0xNS40LTE4bC04MCA0OGMtNy44IDQuNy03LjggMTUuOSAwIDIwLjZsODAgNDhjMTEuNSA2LjggMjQtNy42IDE1LjQtMThMMzQzLjYgMTk2em0tMjA5LjQgNTguM2w4MC00OGM3LjgtNC43IDcuOC0xNS45IDAtMjAuNmwtODAtNDhjLTExLjYtNi45LTI0IDcuNy0xNS40IDE4bDMzLjYgNDAuMy0zMy42IDQwLjNjLTguNyAxMC40IDMuOCAyNC44IDE1LjQgMTh6TTM2Mi40IDI4OEgxMzMuNmMtOC4yIDAtMTQuNSA3LTEzLjUgMTUgNy41IDU5LjIgNTguOSAxMDUgMTIxLjEgMTA1aDEzLjZjNjIuMiAwIDExMy42LTQ1LjggMTIxLjEtMTA1IDEtOC01LjMtMTUtMTMuNS0xNXpcIl1cbn07XG52YXIgZmFMYXVnaFdpbmsgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnbGF1Z2gtd2luaycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU5Y1wiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42QzY4LjggMzU5LjYgNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNEMxNDQuNCA3Ni44IDE5NC42IDU2IDI0OCA1NnMxMDMuNiAyMC44IDE0MS40IDU4LjZjMzcuOCAzNy44IDU4LjYgODggNTguNiAxNDEuNHMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zMjggMTY0Yy0yNS43IDAtNTUuOSAxNi45LTU5LjkgNDIuMS0xLjcgMTEuMiAxMS41IDE4LjIgMTkuOCAxMC44bDkuNS04LjVjMTQuOC0xMy4yIDQ2LjItMTMuMiA2MSAwbDkuNSA4LjVjOC41IDcuNCAyMS42LjMgMTkuOC0xMC44LTMuOC0yNS4yLTM0LTQyLjEtNTkuNy00Mi4xem0tMTYwIDYwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTk0LjQgNjRIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJdXG59O1xudmFyIGZhTGVtb24gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnbGVtb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwOTRcIiwgXCJNNDg0LjExMiAyNy44ODlDNDU1Ljk4OS0uMjMzIDQxNi4xMDgtOC4wNTcgMzg3LjA1OSA4Ljg2NSAzNDcuNjA0IDMxLjg0OCAyMjMuNTA0LTQxLjExMSA5MS4xOTYgOTEuMTk3LTQxLjI3NyAyMjMuNjcyIDMxLjkyMyAzNDcuNDcyIDguODY2IDM4Ny4wNThjLTE2LjkyMiAyOS4wNTEtOS4xIDY4LjkzMiAxOS4wMjIgOTcuMDU0IDI4LjEzNSAyOC4xMzUgNjguMDExIDM1LjkzOCA5Ny4wNTcgMTkuMDIxIDM5LjQyMy0yMi45NyAxNjMuNTU3IDQ5Ljk2OSAyOTUuODU4LTgyLjMyOSAxMzIuNDc0LTEzMi40NzcgNTkuMjczLTI1Ni4yNzcgODIuMzMxLTI5NS44NjEgMTYuOTIyLTI5LjA1IDkuMS02OC45MzEtMTkuMDIyLTk3LjA1NHptLTIyLjQwNSA3Mi44OTRjLTM4LjggNjYuNjA5IDQ1LjYgMTY1LjYzNS03NC44NDUgMjg2LjA4LTEyMC40NCAxMjAuNDQzLTIxOS40NzUgMzYuMDQ4LTI4Ni4wNzYgNzQuODQzLTIyLjY3OSAxMy4yMDctNjQuMDM1LTI3LjI0MS01MC40OTMtNTAuNDg4IDM4LjgtNjYuNjA5LTQ1LjYtMTY1LjYzNSA3NC44NDUtMjg2LjA4QzI0NS41NzMgNC43MDIgMzQ0LjYxNiA4OS4wODYgNDExLjIxOSA1MC4yOTJjMjIuNzMtMTMuMjQgNjQuMDA1IDI3LjI4OCA1MC40ODggNTAuNDkxem0tMTY5Ljg2MSA4LjczNmMxLjM3IDEwLjk2LTYuNDA0IDIwLjk1Ny0xNy4zNjUgMjIuMzI3LTU0Ljg0NiA2Ljg1NS0xMzUuNzc5IDg3Ljc4Ny0xNDIuNjM1IDE0Mi42MzUtMS4zNzMgMTAuOTg5LTExLjM5OSAxOC43MzQtMjIuMzI2IDE3LjM2NS0xMC45NjEtMS4zNy0xOC43MzUtMTEuMzY2LTE3LjM2NS0yMi4zMjYgOS4xNjItNzMuMjg2IDEwNC4xNjctMTY4LjIxNSAxNzcuMzY1LTE3Ny4zNjUgMTAuOTUzLTEuMzY4IDIwLjk1NiA2LjQwMyAyMi4zMjYgMTcuMzY0elwiXVxufTtcbnZhciBmYUxpZmVSaW5nID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ2xpZmUtcmluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFjZFwiLCBcIk0yNTYgNTA0YzEzNi45NjcgMCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OHptLTEwMy4zOTgtNzYuNzJsNTMuNDExLTUzLjQxMWMzMS44MDYgMTMuNTA2IDY4LjEyOCAxMy41MjIgOTkuOTc0IDBsNTMuNDExIDUzLjQxMWMtNjMuMjE3IDM4LjMxOS0xNDMuNTc5IDM4LjMxOS0yMDYuNzk2IDB6TTMzNiAyNTZjMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwcy04MC0zNS44ODgtODAtODAgMzUuODg4LTgwIDgwLTgwIDgwIDM1Ljg4OCA4MCA4MHptOTEuMjggMTAzLjM5OGwtNTMuNDExLTUzLjQxMWMxMy41MDUtMzEuODA2IDEzLjUyMi02OC4xMjggMC05OS45NzRsNTMuNDExLTUzLjQxMWMzOC4zMTkgNjMuMjE3IDM4LjMxOSAxNDMuNTc5IDAgMjA2Ljc5NnpNMzU5LjM5NyA4NC43MmwtNTMuNDExIDUzLjQxMWMtMzEuODA2LTEzLjUwNS02OC4xMjgtMTMuNTIyLTk5Ljk3MyAwTDE1Mi42MDIgODQuNzJjNjMuMjE3LTM4LjMxOSAxNDMuNTc5LTM4LjMxOSAyMDYuNzk1IDB6TTg0LjcyIDE1Mi42MDJsNTMuNDExIDUzLjQxMWMtMTMuNTA2IDMxLjgwNi0xMy41MjIgNjguMTI4IDAgOTkuOTc0TDg0LjcyIDM1OS4zOThjLTM4LjMxOS02My4yMTctMzguMzE5LTE0My41NzkgMC0yMDYuNzk2elwiXVxufTtcbnZhciBmYUxpZ2h0YnVsYiA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdsaWdodGJ1bGInLFxuICBpY29uOiBbMzUyLCA1MTIsIFtdLCBcImYwZWJcIiwgXCJNMTc2IDgwYy01Mi45NCAwLTk2IDQzLjA2LTk2IDk2IDAgOC44NCA3LjE2IDE2IDE2IDE2czE2LTcuMTYgMTYtMTZjMC0zNS4zIDI4LjcyLTY0IDY0LTY0IDguODQgMCAxNi03LjE2IDE2LTE2cy03LjE2LTE2LTE2LTE2ek05Ni4wNiA0NTkuMTdjMCAzLjE1LjkzIDYuMjIgMi42OCA4Ljg0bDI0LjUxIDM2Ljg0YzIuOTcgNC40NiA3Ljk3IDcuMTQgMTMuMzIgNy4xNGg3OC44NWM1LjM2IDAgMTAuMzYtMi42OCAxMy4zMi03LjE0bDI0LjUxLTM2Ljg0YzEuNzQtMi42MiAyLjY3LTUuNyAyLjY4LTguODRsLjA1LTQzLjE4SDk2LjAybC4wNCA0My4xOHpNMTc2IDBDNzMuNzIgMCAwIDgyLjk3IDAgMTc2YzAgNDQuMzcgMTYuNDUgODQuODUgNDMuNTYgMTE1Ljc4IDE2LjY0IDE4Ljk5IDQyLjc0IDU4LjggNTIuNDIgOTIuMTZ2LjA2aDQ4di0uMTJjLS4wMS00Ljc3LS43Mi05LjUxLTIuMTUtMTQuMDctNS41OS0xNy44MS0yMi44Mi02NC43Ny02Mi4xNy0xMDkuNjctMjAuNTQtMjMuNDMtMzEuNTItNTMuMTUtMzEuNjEtODQuMTQtLjItNzMuNjQgNTkuNjctMTI4IDEyNy45NS0xMjggNzAuNTggMCAxMjggNTcuNDIgMTI4IDEyOCAwIDMwLjk3LTExLjI0IDYwLjg1LTMxLjY1IDg0LjE0LTM5LjExIDQ0LjYxLTU2LjQyIDkxLjQ3LTYyLjEgMTA5LjQ2YTQ3LjUwNyA0Ny41MDcgMCAwIDAtMi4yMiAxNC4zdi4xaDQ4di0uMDVjOS42OC0zMy4zNyAzNS43OC03My4xOCA1Mi40Mi05Mi4xNkMzMzUuNTUgMjYwLjg1IDM1MiAyMjAuMzcgMzUyIDE3NiAzNTIgNzguOCAyNzMuMiAwIDE3NiAwelwiXVxufTtcbnZhciBmYUxpc3RBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnbGlzdC1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMjJcIiwgXCJNNDY0IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tNiA0MDBINTRhNiA2IDAgMCAxLTYtNlY4NmE2IDYgMCAwIDEgNi02aDQwNGE2IDYgMCAwIDEgNiA2djM0MGE2IDYgMCAwIDEtNiA2em0tNDItOTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgyMDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjAwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ6bTAtOTZ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgyMDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjAwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ6bTAtOTZ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgyMDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjAwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ6bS0yNTIgMTJjMCAxOS44ODItMTYuMTE4IDM2LTM2IDM2cy0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2IDM2IDE2LjExOCAzNiAzNnptMCA5NmMwIDE5Ljg4Mi0xNi4xMTggMzYtMzYgMzZzLTM2LTE2LjExOC0zNi0zNiAxNi4xMTgtMzYgMzYtMzYgMzYgMTYuMTE4IDM2IDM2em0wIDk2YzAgMTkuODgyLTE2LjExOCAzNi0zNiAzNnMtMzYtMTYuMTE4LTM2LTM2IDE2LjExOC0zNiAzNi0zNiAzNiAxNi4xMTggMzYgMzZ6XCJdXG59O1xudmFyIGZhTWFwID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ21hcCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI3OVwiLCBcIk01NjAuMDIgMzJjLTEuOTYgMC0zLjk4LjM3LTUuOTYgMS4xNkwzODQuMDEgOTZIMzg0TDIxMiAzNS4yOEE2NC4yNTIgNjQuMjUyIDAgMCAwIDE5MS43NiAzMmMtNi42OSAwLTEzLjM3IDEuMDUtMTkuODEgMy4xNEwyMC4xMiA4Ny45NUEzMi4wMDYgMzIuMDA2IDAgMCAwIDAgMTE3LjY2djM0Ni4zMkMwIDQ3My4xNyA3LjUzIDQ4MCAxNS45OSA0ODBjMS45NiAwIDMuOTctLjM3IDUuOTYtMS4xNkwxOTIgNDE2bDE3MiA2MC43MWE2My45OCA2My45OCAwIDAgMCA0MC4wNS4xNWwxNTEuODMtNTIuODFBMzEuOTk2IDMxLjk5NiAwIDAgMCA1NzYgMzk0LjM0VjQ4LjAyYzAtOS4xOS03LjUzLTE2LjAyLTE1Ljk4LTE2LjAyek0yMjQgOTAuNDJsMTI4IDQ1LjE5djI4NS45N2wtMTI4LTQ1LjE5VjkwLjQyek00OCA0MTguMDVWMTI5LjA3bDEyOC00NC41M3YyODYuMmwtLjY0LjIzTDQ4IDQxOC4wNXptNDgwLTM1LjEzbC0xMjggNDQuNTNWMTQxLjI2bC42NC0uMjRMNTI4IDkzLjk1djI4OC45N3pcIl1cbn07XG52YXIgZmFNZWggPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnbWVoJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmMTFhXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTggMTQ0SDE2MGMtMTMuMiAwLTI0IDEwLjgtMjQgMjRzMTAuOCAyNCAyNCAyNGgxNzZjMTMuMiAwIDI0LTEwLjggMjQtMjRzLTEwLjgtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhTWVoQmxhbmsgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnbWVoLWJsYW5rJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWE0XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTI4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFNZWhSb2xsaW5nRXllcyA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdtZWgtcm9sbGluZy1leWVzJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWE1XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODgtMzA0Yy0zOS44IDAtNzIgMzIuMi03MiA3MnMzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MnptMCAxMTJjLTIyLjEgMC00MC0xNy45LTQwLTQwIDAtMTMuNiA3LjMtMjUuMSAxNy43LTMyLjMtMSAyLjYtMS43IDUuMy0xLjcgOC4zIDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yLjktLjctNS43LTEuNy04LjMgMTAuNCA3LjIgMTcuNyAxOC43IDE3LjcgMzIuMyAwIDIyLjEtMTcuOSA0MC00MCA0MHptLTEwNC00MGMwLTM5LjgtMzIuMi03Mi03Mi03MnMtNzIgMzIuMi03MiA3MiAzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzJ6bS0xMTIgMGMwLTEzLjYgNy4zLTI1LjEgMTcuNy0zMi4zLTEgMi42LTEuNyA1LjMtMS43IDguMyAwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMi45LS43LTUuNy0xLjctOC4zIDEwLjQgNy4yIDE3LjcgMTguNyAxNy43IDMyLjMgMCAyMi4xLTE3LjkgNDAtNDAgNDBzLTQwLTE3LjktNDAtNDB6bTE5MiAxMjhIMTg0Yy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0aDEyOGMxMy4yIDAgMjQtMTAuOCAyNC0yNHMtMTAuOC0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFNaW51c1NxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdtaW51cy1zcXVhcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNDZcIiwgXCJNMTA4IDI4NGMtNi42IDAtMTItNS40LTEyLTEydi0zMmMwLTYuNiA1LjQtMTIgMTItMTJoMjMyYzYuNiAwIDEyIDUuNCAxMiAxMnYzMmMwIDYuNi01LjQgMTItMTIgMTJIMTA4ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwiXVxufTtcbnZhciBmYU1vbmV5QmlsbEFsdCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLWFsdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjNkMVwiLCBcIk0zMjAgMTQ0Yy01My4wMiAwLTk2IDUwLjE0LTk2IDExMiAwIDYxLjg1IDQyLjk4IDExMiA5NiAxMTIgNTMgMCA5Ni01MC4xMyA5Ni0xMTIgMC02MS44Ni00Mi45OC0xMTItOTYtMTEyem00MCAxNjhjMCA0LjQyLTMuNTggOC04IDhoLTY0Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZ2LTU1LjQ0bC0uNDcuMzFhNy45OTIgNy45OTIgMCAwIDEtMTEuMDktMi4yMmwtOC44OC0xMy4zMWE3Ljk5MiA3Ljk5MiAwIDAgMSAyLjIyLTExLjA5bDE1LjMzLTEwLjIyYTIzLjk5IDIzLjk5IDAgMCAxIDEzLjMxLTQuMDNIMzI4YzQuNDIgMCA4IDMuNTggOCA4djg4aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2ek02MDggNjRIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djMyMGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDU3NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS0xNiAyNzJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRIMTEyYzAtMzUuMzUtMjguNjUtNjQtNjQtNjRWMTc2YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRoNDE2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjR2MTYwelwiXVxufTtcbnZhciBmYU1vb24gPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnbW9vbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE4NlwiLCBcIk0yNzkuMTM1IDUxMmM3OC43NTYgMCAxNTAuOTgyLTM1LjgwNCAxOTguODQ0LTk0Ljc3NSAyOC4yNy0zNC44MzEtMi41NTgtODUuNzIyLTQ2LjI0OS03Ny40MDEtODIuMzQ4IDE1LjY4My0xNTguMjcyLTQ3LjI2OC0xNTguMjcyLTEzMC43OTIgMC00OC40MjQgMjYuMDYtOTIuMjkyIDY3LjQzNC0xMTUuODM2IDM4Ljc0NS0yMi4wNSAyOC45OTktODAuNzg4LTE1LjAyMi04OC45MTlBMjU3LjkzNiAyNTcuOTM2IDAgMCAwIDI3OS4xMzUgMGMtMTQxLjM2IDAtMjU2IDExNC41NzUtMjU2IDI1NiAwIDE0MS4zNiAxMTQuNTc2IDI1NiAyNTYgMjU2em0wLTQ2NGMxMi45ODUgMCAyNS42ODkgMS4yMDEgMzguMDE2IDMuNDc4LTU0Ljc2IDMxLjE2My05MS42OTMgOTAuMDQyLTkxLjY5MyAxNTcuNTU0IDAgMTEzLjg0OCAxMDMuNjQxIDE5OS4yIDIxNS4yNTIgMTc3Ljk0NEM0MDIuNTc0IDQzMy45NjQgMzQ0LjM2NiA0NjQgMjc5LjEzNSA0NjRjLTExNC44NzUgMC0yMDgtOTMuMTI1LTIwOC0yMDhzOTMuMTI1LTIwOCAyMDgtMjA4elwiXVxufTtcbnZhciBmYU5ld3NwYXBlciA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICduZXdzcGFwZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxZWFcIiwgXCJNNTUyIDY0SDExMmMtMjAuODU4IDAtMzguNjQzIDEzLjM3Ny00NS4yNDggMzJIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyNzJjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2aDQ5NmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWODhjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek00OCAzOTJWMTQ0aDE2djI0OGMwIDQuNDExLTMuNTg5IDgtOCA4cy04LTMuNTg5LTgtOHptNDgwIDhIMTExLjQyMmMuMzc0LTIuNjE0LjU3OC01LjI4My41NzgtOFYxMTJoNDE2djI4OHpNMTcyIDI4MGgxMzZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtOTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2OTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMjgtODBoODB2NDBoLTgwdi00MHptLTQwIDE0MHYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMzZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDE3MmMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMTkyIDB2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTA0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzNjRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAtMTQ0di0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEwNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzY0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDcydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEwNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzY0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyelwiXVxufTtcbnZhciBmYU9iamVjdEdyb3VwID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ29iamVjdC1ncm91cCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI0N1wiLCBcIk01MDAgMTI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAzMiAwIDM3LjM3MyAwIDQ0djcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MjU2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMzIwdjEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJWMTI4aDEyem0tNTItNjRoMzJ2MzJoLTMyVjY0ek0zMiA2NGgzMnYzMkgzMlY2NHptMzIgMzg0SDMydi0zMmgzMnYzMnptNDE2IDBoLTMydi0zMmgzMnYzMnptLTQwLTY0aC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkg5NnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3MlYxMjhoMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMzIwdjEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MjU2em0tMzYtMTkyaC04NHYtNTJjMC02LjYyOC01LjM3My0xMi0xMi0xMkgxMDhjLTYuNjI3IDAtMTIgNS4zNzItMTIgMTJ2MTY4YzAgNi42MjggNS4zNzMgMTIgMTIgMTJoODR2NTJjMCA2LjYyOCA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MiAxMi0xMlYyMDRjMC02LjYyOC01LjM3My0xMi0xMi0xMnptLTI2OC0yNGgxNDR2MTEySDEzNlYxNjh6bTI0MCAxNzZIMjMydi0yNGg3NmM2LjYyNyAwIDEyLTUuMzcyIDEyLTEydi03Nmg1NnYxMTJ6XCJdXG59O1xudmFyIGZhT2JqZWN0VW5ncm91cCA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdvYmplY3QtdW5ncm91cCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI0OFwiLCBcIk01NjQgMjI0YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEyaC04OHYtMjRoMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMlY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC03MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkg5NlY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDEyQzUuMzczIDMyIDAgMzcuMzczIDAgNDR2NzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMnYxNjBIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0xMmg4OHYyNGgtMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0xMmgyMjR2MTJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi03MmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0xMlYyMjRoMTJ6TTM1MiA2NGgzMnYzMmgtMzJWNjR6bTAgMjU2aDMydjMyaC0zMnYtMzJ6TTY0IDM1MkgzMnYtMzJoMzJ2MzJ6bTAtMjU2SDMyVjY0aDMydjMyem0zMiAyMTZ2LTEyYzAtNi42MjctNS4zNzMtMTItMTItMTJINzJWMTI4aDEyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDIyNHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjE2MGgtMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZ6bTEyOCAxMzZoLTMydi0zMmgzMnYzMnptMjgwLTY0aC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkgyNTZ2LTEyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEydi0yNGg4OHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEydi04OGg4OHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjE2MHptNDAgNjRoLTMydi0zMmgzMnYzMnptMC0yNTZoLTMydi0zMmgzMnYzMnpcIl1cbn07XG52YXIgZmFQYXBlclBsYW5lID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3BhcGVyLXBsYW5lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWQ4XCIsIFwiTTQ0MCA2LjVMMjQgMjQ2LjRjLTM0LjQgMTkuOS0zMS4xIDcwLjggNS43IDg1LjlMMTQ0IDM3OS42VjQ2NGMwIDQ2LjQgNTkuMiA2NS41IDg2LjYgMjguNmw0My44LTU5LjEgMTExLjkgNDYuMmM1LjkgMi40IDEyLjEgMy42IDE4LjMgMy42IDguMiAwIDE2LjMtMi4xIDIzLjYtNi4yIDEyLjgtNy4yIDIxLjYtMjAgMjMuOS0zNC41bDU5LjQtMzg3LjJjNi4xLTQwLjEtMzYuOS02OC44LTcxLjUtNDguOXpNMTkyIDQ2NHYtNjQuNmwzNi42IDE1LjFMMTkyIDQ2NHptMjEyLjYtMjguN2wtMTUzLjgtNjMuNUwzOTEgMTY5LjVjMTAuNy0xNS41LTkuNS0zMy41LTIzLjctMjEuMkwxNTUuOCAzMzIuNiA0OCAyODggNDY0IDQ4bC01OS40IDM4Ny4zelwiXVxufTtcbnZhciBmYVBhdXNlQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3BhdXNlLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI4YlwiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTk2LTI4MHYxNjBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2em0tMTEyIDB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNmgtNDhjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnpcIl1cbn07XG52YXIgZmFQbGF5Q2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3BsYXktY2lyY2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTQ0XCIsIFwiTTM3MS43IDIzOGwtMTc2LTEwN2MtMTUuOC04LjgtMzUuNyAyLjUtMzUuNyAyMXYyMDhjMCAxOC40IDE5LjggMjkuOCAzNS43IDIxbDE3Ni0xMDFjMTYuNC05LjEgMTYuNC0zMi44IDAtNDJ6TTUwNCAyNTZDNTA0IDExOSAzOTMgOCAyNTYgOFM4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4em0tNDQ4IDBjMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwczIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMFM1NiAzNjYuNSA1NiAyNTZ6XCJdXG59O1xudmFyIGZhUGx1c1NxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdwbHVzLXNxdWFyZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmZVwiLCBcIk0zNTIgMjQwdjMyYzAgNi42LTUuNCAxMi0xMiAxMmgtODh2ODhjMCA2LjYtNS40IDEyLTEyIDEyaC0zMmMtNi42IDAtMTItNS40LTEyLTEydi04OGgtODhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDg4di04OGMwLTYuNiA1LjQtMTIgMTItMTJoMzJjNi42IDAgMTIgNS40IDEyIDEydjg4aDg4YzYuNiAwIDEyIDUuNCAxMiAxMnptOTYtMTYwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIl1cbn07XG52YXIgZmFRdWVzdGlvbkNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdxdWVzdGlvbi1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNTlcIiwgXCJNMjU2IDhDMTE5LjA0MyA4IDggMTE5LjA4MyA4IDI1NmMwIDEzNi45OTcgMTExLjA0MyAyNDggMjQ4IDI0OHMyNDgtMTExLjAwMyAyNDgtMjQ4QzUwNCAxMTkuMDgzIDM5Mi45NTcgOCAyNTYgOHptMCA0NDhjLTExMC41MzIgMC0yMDAtODkuNDMxLTIwMC0yMDAgMC0xMTAuNDk1IDg5LjQ3Mi0yMDAgMjAwLTIwMCAxMTAuNDkxIDAgMjAwIDg5LjQ3MSAyMDAgMjAwIDAgMTEwLjUzLTg5LjQzMSAyMDAtMjAwIDIwMHptMTA3LjI0NC0yNTUuMmMwIDY3LjA1Mi03Mi40MjEgNjguMDg0LTcyLjQyMSA5Mi44NjNWMzAwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQ1LjY0N2MtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOC42NTljMC0zNS43NDUgMjcuMS01MC4wMzQgNDcuNTc5LTYxLjUxNiAxNy41NjEtOS44NDUgMjguMzI0LTE2LjU0MSAyOC4zMjQtMjkuNTc5IDAtMTcuMjQ2LTIxLjk5OS0yOC42OTMtMzkuNzg0LTI4LjY5My0yMy4xODkgMC0zMy44OTQgMTAuOTc3LTQ4Ljk0MiAyOS45NjktNC4wNTcgNS4xMi0xMS40NiA2LjA3MS0xNi42NjYgMi4xMjRsLTI3LjgyNC0yMS4wOThjLTUuMTA3LTMuODcyLTYuMjUxLTExLjA2Ni0yLjY0NC0xNi4zNjNDMTg0Ljg0NiAxMzEuNDkxIDIxNC45NCAxMTIgMjYxLjc5NCAxMTJjNDkuMDcxIDAgMTAxLjQ1IDM4LjMwNCAxMDEuNDUgODguOHpNMjk4IDM2OGMwIDIzLjE1OS0xOC44NDEgNDItNDIgNDJzLTQyLTE4Ljg0MS00Mi00MiAxOC44NDEtNDIgNDItNDIgNDIgMTguODQxIDQyIDQyelwiXVxufTtcbnZhciBmYVJlZ2lzdGVyZWQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAncmVnaXN0ZXJlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI1ZFwiLCBcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTAgNDQ4Yy0xMTAuNTMyIDAtMjAwLTg5LjQ1MS0yMDAtMjAwIDAtMTEwLjUzMSA4OS40NTEtMjAwIDIwMC0yMDAgMTEwLjUzMiAwIDIwMCA4OS40NTEgMjAwIDIwMCAwIDExMC41MzItODkuNDUxIDIwMC0yMDAgMjAwem0xMTAuNDQyLTgxLjc5MWMtNTMuMDQ2LTk2LjI4NC01MC4yNS05MS40NjgtNTMuMjcxLTk2LjA4NSAyNC4yNjctMTMuODc5IDM5LjQ4Mi00MS41NjMgMzkuNDgyLTczLjE3NiAwLTUyLjUwMy0zMC4yNDctODUuMjUyLTEwMS40OTgtODUuMjUyaC03OC42NjdjLTYuNjE3IDAtMTIgNS4zODMtMTIgMTJWMzgwYzAgNi42MTcgNS4zODMgMTIgMTIgMTJoMzguNTY4YzYuNjE3IDAgMTItNS4zODMgMTItMTJ2LTgzLjY2M2gzMS45NThsNDcuNTE1IDg5LjMwM2ExMS45OCAxMS45OCAwIDAgMCAxMC41OTMgNi4zNmg0Mi44MWM5LjE0IDAgMTQuOTE0LTkuNzk5IDEwLjUxLTE3Ljc5MXpNMjU2LjkzMyAyMzkuOTA2aC0zMy44NzV2LTY0LjE0aDI3LjM3N2MzMi40MTcgMCAzOC45MjkgMTIuMTMzIDM4LjkyOSAzMS43MDktLjAwMSAyMC45MTMtMTEuNTE4IDMyLjQzMS0zMi40MzEgMzIuNDMxelwiXVxufTtcbnZhciBmYVNhZENyeSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdzYWQtY3J5JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWIzXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0NCAzODYuNFYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTUxLjRDMzE1LjUgNDQ3IDI4Mi44IDQ1NiAyNDggNDU2cy02Ny41LTktOTYtMjQuNlYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTE0LjRjLTM0LjYtMzYtNTYtODQuNy01Ni0xMzguNCAwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDUzLjctMjEuNCAxMDIuNS01NiAxMzguNHpNMjA1LjggMjM0LjVjNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTQtMjUuMi0zNC4yLTQyLjEtNTkuOC00Mi4xcy01NS45IDE2LjktNTkuOCA0Mi4xYy0uOCA1IDEuNyAxMCA2LjEgMTIuNCA0LjQgMi40IDkuOSAxLjggMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWMyLjUgMi4zIDcuOSA0LjggMTMuNyAxLjZ6TTM0NCAxODBjLTI1LjcgMC01NS45IDE2LjktNTkuOCA0Mi4xLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNSAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjIgOCA0LjcgMTMuNyAxLjYgNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTMuOS0yNS4yLTM0LjEtNDIuMS01OS44LTQyLjF6bS05NiA5MmMtMzAuOSAwLTU2IDI4LjctNTYgNjRzMjUuMSA2NCA1NiA2NCA1Ni0yOC43IDU2LTY0LTI1LjEtNjQtNTYtNjR6XCJdXG59O1xudmFyIGZhU2FkVGVhciA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdzYWQtdGVhcicsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjViNFwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTgtMTUyYy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0YzIzLjggMCA0Ni4zIDEwLjUgNjEuNiAyOC44IDguMSA5LjggMjMuMiAxMS45IDMzLjggMy4xIDEwLjItOC41IDExLjYtMjMuNiAzLjEtMzMuOEMzMzAgMzIwLjggMjk0LjEgMzA0IDI1NiAzMDR6bS04OC02NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bS0xNjUuNiA5OC44QzE1MSAyOTAuMSAxMjYgMzI1LjQgMTI2IDM0Mi45YzAgMjIuNyAxOC44IDQxLjEgNDIgNDEuMXM0Mi0xOC40IDQyLTQxLjFjMC0xNy41LTI1LTUyLjgtMzYuNC02OC4xLTIuOC0zLjctOC40LTMuNy0xMS4yIDB6XCJdXG59O1xudmFyIGZhU2F2ZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdzYXZlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGM3XCIsIFwiTTQzMy45NDEgMTI5Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAzMTYuMTE4IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNjMuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTI3MiA4MHY4MEgxNDRWODBoMTI4em0xMjIgMzUySDU0YTYgNiAwIDAgMS02LTZWODZhNiA2IDAgMCAxIDYtNmg0MnYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE3NmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWODMuODgybDc4LjI0MyA3OC4yNDNhNiA2IDAgMCAxIDEuNzU3IDQuMjQzVjQyNmE2IDYgMCAwIDEtNiA2ek0yMjQgMjMyYy00OC41MjMgMC04OCAzOS40NzctODggODhzMzkuNDc3IDg4IDg4IDg4IDg4LTM5LjQ3NyA4OC04OC0zOS40NzctODgtODgtODh6bTAgMTI4Yy0yMi4wNTYgMC00MC0xNy45NDQtNDAtNDBzMTcuOTQ0LTQwIDQwLTQwIDQwIDE3Ljk0NCA0MCA0MC0xNy45NDQgNDAtNDAgNDB6XCJdXG59O1xudmFyIGZhU2hhcmVTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnc2hhcmUtc3F1YXJlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMTRkXCIsIFwiTTU2MS45MzggMTU4LjA2TDQxNy45NCAxNC4wOTJDMzg3LjkyNi0xNS45MjIgMzM2IDUuMDk3IDMzNiA0OC4wMzJ2NTcuMTk4Yy00Mi40NSAxLjg4LTg0LjAzIDYuNTUtMTIwLjc2IDE3Ljk5LTM1LjE3IDEwLjk1LTYzLjA3IDI3LjU4LTgyLjkxIDQ5LjQyQzEwOC4yMiAxOTkuMiA5NiAyMzIuNiA5NiAyNzEuOTRjMCA2MS42OTcgMzMuMTc4IDExMi40NTUgODQuODcgMTQ0Ljc2IDM3LjU0NiAyMy41MDggODUuMjQ4LTEyLjY1MSA3MS4wMi01NS43NC0xNS41MTUtNDcuMTE5LTE3LjE1Ni03MC45MjMgODQuMTEtNzguNzZWMzM2YzAgNDIuOTkzIDUxLjk2OCA2My45MTMgODEuOTQgMzMuOTRsMTQzLjk5OC0xNDRjMTguNzUtMTguNzQgMTguNzUtNDkuMTQgMC02Ny44OHpNMzg0IDMzNlYyMzIuMTZDMjU1LjMwOSAyMzQuMDgyIDE2Ni40OTIgMjU1LjM1IDIwNi4zMSAzNzYgMTc2Ljc5IDM1Ny41NSAxNDQgMzI0LjA4IDE0NCAyNzEuOTRjMC0xMDkuMzM0IDEyOS4xNC0xMTguOTQ3IDI0MC0xMTkuODVWNDhsMTQ0IDE0NC0xNDQgMTQ0em0yNC43NCA4NC40OTNhODIuNjU4IDgyLjY1OCAwIDAgMCAyMC45NzQtOS4zMDNjNy45NzYtNC45NTIgMTguMjg2LjgyNiAxOC4yODYgMTAuMjE0VjQ2NGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDEzMmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQuNDg2YzAgNC45MTctMi45ODcgOS4zNjktNy41NjkgMTEuMTUyLTEzLjcwMiA1LjMzMS0yNi4zOTYgMTEuNTM3LTM4LjA1IDE4LjU4NWExMi4xMzggMTIuMTM4IDAgMCAxLTYuMjggMS43NzdINTRhNiA2IDAgMCAwLTYgNnYzNDBhNiA2IDAgMCAwIDYgNmgzNDBhNiA2IDAgMCAwIDYtNnYtMjUuOTY2YzAtNS4zNyAzLjU3OS0xMC4wNTkgOC43NC0xMS41NDF6XCJdXG59O1xudmFyIGZhU21pbGUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnc21pbGUnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImYxMThcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tODAtMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem00IDcyLjZjLTIwLjggMjUtNTEuNSAzOS40LTg0IDM5LjRzLTYzLjItMTQuMy04NC0zOS40Yy04LjUtMTAuMi0yMy43LTExLjUtMzMuOC0zLjEtMTAuMiA4LjUtMTEuNSAyMy42LTMuMSAzMy44IDMwIDM2IDc0LjEgNTYuNiAxMjAuOSA1Ni42czkwLjktMjAuNiAxMjAuOS01Ni42YzguNS0xMC4yIDcuMS0yNS4zLTMuMS0zMy44LTEwLjEtOC40LTI1LjMtNy4xLTMzLjggMy4xelwiXVxufTtcbnZhciBmYVNtaWxlQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdzbWlsZS1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWI4XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODQtMTQzLjRjLTIwLjggMjUtNTEuNSAzOS40LTg0IDM5LjRzLTYzLjItMTQuMy04NC0zOS40Yy04LjUtMTAuMi0yMy42LTExLjUtMzMuOC0zLjEtMTAuMiA4LjUtMTEuNSAyMy42LTMuMSAzMy44IDMwIDM2IDc0LjEgNTYuNiAxMjAuOSA1Ni42czkwLjktMjAuNiAxMjAuOS01Ni42YzguNS0xMC4yIDcuMS0yNS4zLTMuMS0zMy44LTEwLjItOC40LTI1LjMtNy4xLTMzLjggMy4xek0xMzYuNSAyMTFjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy40IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTd6TTMyOCAxNTJjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjR6XCJdXG59O1xudmFyIGZhU21pbGVXaW5rID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3NtaWxlLXdpbmsnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY0ZGFcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0xMTcuOC0xNDYuNGMtMTAuMi04LjUtMjUuMy03LjEtMzMuOCAzLjEtMjAuOCAyNS01MS41IDM5LjQtODQgMzkuNHMtNjMuMi0xNC4zLTg0LTM5LjRjLTguNS0xMC4yLTIzLjctMTEuNS0zMy44LTMuMS0xMC4yIDguNS0xMS41IDIzLjYtMy4xIDMzLjggMzAgMzYgNzQuMSA1Ni42IDEyMC45IDU2LjZzOTAuOS0yMC42IDEyMC45LTU2LjZjOC41LTEwLjIgNy4xLTI1LjMtMy4xLTMzLjh6TTE2OCAyNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAtNjBjLTI1LjcgMC01NS45IDE2LjktNTkuOSA0Mi4xLTEuNyAxMS4yIDExLjUgMTguMiAxOS44IDEwLjhsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWM4LjUgNy40IDIxLjYuMyAxOS44LTEwLjgtMy44LTI1LjItMzQtNDIuMS01OS43LTQyLjF6XCJdXG59O1xudmFyIGZhU25vd2ZsYWtlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3Nub3dmbGFrZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjJkY1wiLCBcIk00NDAuMSAzNTUuMmwtMzkuMi0yMyAzNC4xLTkuM2M4LjQtMi4zIDEzLjQtMTEuMSAxMS4xLTE5LjZsLTQuMS0xNS41Yy0yLjItOC41LTEwLjktMTMuNi0xOS4zLTExLjNMMzQzIDI5OC4yIDI3MS4yIDI1Nmw3MS45LTQyLjIgNzkuNyAyMS43YzguNCAyLjMgMTctMi44IDE5LjMtMTEuM2w0LjEtMTUuNWMyLjItOC41LTIuNy0xNy4zLTExLjEtMTkuNmwtMzQuMS05LjMgMzkuMi0yM2M3LjUtNC40IDEwLjEtMTQuMiA1LjgtMjEuOWwtNy45LTEzLjljLTQuMy03LjctMTQtMTAuMy0yMS41LTUuOWwtMzkuMiAyMyA5LjEtMzQuN2MyLjItOC41LTIuNy0xNy4zLTExLjEtMTkuNmwtMTUuMi00LjFjLTguNC0yLjMtMTcgMi44LTE5LjMgMTEuM2wtMjEuMyA4MS03MS45IDQyLjJ2LTg0LjVMMzA2IDcwLjRjNi4xLTYuMiA2LjEtMTYuNCAwLTIyLjZsLTExLjEtMTEuM2MtNi4xLTYuMi0xNi4xLTYuMi0yMi4yIDBsLTI0LjkgMjUuNFYxNmMwLTguOC03LTE2LTE1LjctMTZoLTE1LjdjLTguNyAwLTE1LjcgNy4yLTE1LjcgMTZ2NDYuMWwtMjQuOS0yNS40Yy02LjEtNi4yLTE2LjEtNi4yLTIyLjIgMEwxNDIuMSA0OGMtNi4xIDYuMi02LjEgMTYuNCAwIDIyLjZsNTguMyA1OS4zdjg0LjVsLTcxLjktNDIuMi0yMS4zLTgxYy0yLjItOC41LTEwLjktMTMuNi0xOS4zLTExLjNMNzIuNyA4NGMtOC40IDIuMy0xMy40IDExLjEtMTEuMSAxOS42bDkuMSAzNC43LTM5LjItMjNjLTcuNS00LjQtMTcuMS0xLjgtMjEuNSA1LjlsLTcuOSAxMy45Yy00LjMgNy43LTEuOCAxNy40IDUuOCAyMS45bDM5LjIgMjMtMzQuMSA5LjFjLTguNCAyLjMtMTMuNCAxMS4xLTExLjEgMTkuNkw2IDIyNC4yYzIuMiA4LjUgMTAuOSAxMy42IDE5LjMgMTEuM2w3OS43LTIxLjcgNzEuOSA0Mi4yLTcxLjkgNDIuMi03OS43LTIxLjdjLTguNC0yLjMtMTcgMi44LTE5LjMgMTEuM2wtNC4xIDE1LjVjLTIuMiA4LjUgMi43IDE3LjMgMTEuMSAxOS42bDM0LjEgOS4zLTM5LjIgMjNjLTcuNSA0LjQtMTAuMSAxNC4yLTUuOCAyMS45TDEwIDM5MWM0LjMgNy43IDE0IDEwLjMgMjEuNSA1LjlsMzkuMi0yMy05LjEgMzQuN2MtMi4yIDguNSAyLjcgMTcuMyAxMS4xIDE5LjZsMTUuMiA0LjFjOC40IDIuMyAxNy0yLjggMTkuMy0xMS4zbDIxLjMtODEgNzEuOS00Mi4ydjg0LjVsLTU4LjMgNTkuM2MtNi4xIDYuMi02LjEgMTYuNCAwIDIyLjZsMTEuMSAxMS4zYzYuMSA2LjIgMTYuMSA2LjIgMjIuMiAwbDI0LjktMjUuNFY0OTZjMCA4LjggNyAxNiAxNS43IDE2aDE1LjdjOC43IDAgMTUuNy03LjIgMTUuNy0xNnYtNDYuMWwyNC45IDI1LjRjNi4xIDYuMiAxNi4xIDYuMiAyMi4yIDBsMTEuMS0xMS4zYzYuMS02LjIgNi4xLTE2LjQgMC0yMi42bC01OC4zLTU5LjN2LTg0LjVsNzEuOSA0Mi4yIDIxLjMgODFjMi4yIDguNSAxMC45IDEzLjYgMTkuMyAxMS4zTDM3NSA0MjhjOC40LTIuMyAxMy40LTExLjEgMTEuMS0xOS42bC05LjEtMzQuNyAzOS4yIDIzYzcuNSA0LjQgMTcuMSAxLjggMjEuNS01LjlsNy45LTEzLjljNC42LTcuNSAyLjEtMTcuMy01LjUtMjEuN3pcIl1cbn07XG52YXIgZmFTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGM4XCIsIFwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDQwMEg1NGMtMy4zIDAtNi0yLjctNi02Vjg2YzAtMy4zIDIuNy02IDYtNmgzNDBjMy4zIDAgNiAyLjcgNiA2djM0MGMwIDMuMy0yLjcgNi02IDZ6XCJdXG59O1xudmFyIGZhU3RhciA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdzdGFyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDA1XCIsIFwiTTUyOC4xIDE3MS41TDM4MiAxNTAuMiAzMTYuNyAxNy44Yy0xMS43LTIzLjYtNDUuNi0yMy45LTU3LjQgMEwxOTQgMTUwLjIgNDcuOSAxNzEuNWMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4zIDIzLjIgNDYgNDYuNCAzMy43TDI4OCA0MzkuNmwxMzAuNyA2OC43YzIzLjIgMTIuMiA1MC45LTcuNCA0Ni40LTMzLjdsLTI1LTE0NS41IDEwNS43LTEwM2MxOS0xOC41IDguNS01MC44LTE3LjctNTQuNnpNMzg4LjYgMzEyLjNsMjMuNyAxMzguNEwyODggMzg1LjRsLTEyNC4zIDY1LjMgMjMuNy0xMzguNC0xMDAuNi05OCAxMzktMjAuMiA2Mi4yLTEyNiA2Mi4yIDEyNiAxMzkgMjAuMi0xMDAuNiA5OHpcIl1cbn07XG52YXIgZmFTdGFySGFsZiA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdzdGFyLWhhbGYnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwODlcIiwgXCJNMjg4IDM4NS4zbC0xMjQuMyA2NS40IDIzLjctMTM4LjQtMTAwLjYtOTggMTM5LTIwLjIgNjIuMi0xMjZWMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZ2LTU0LjN6XCJdXG59O1xudmFyIGZhU3RpY2t5Tm90ZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdzdGlja3ktbm90ZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI0OVwiLCBcIk00NDggMzQ4LjEwNlY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTEuOTg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjY4LjExOGE0OCA0OCAwIDAgMCAzMy45NDEtMTQuMDU5bDgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgNDQ4IDM0OC4xMDZ6bS0xMjggODB2LTc2LjExOGg3Ni4xMThMMzIwIDQyOC4xMDZ6TTQwMCA4MHYyMjMuOTg4SDI5NmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djEwNEg0OFY4MGgzNTJ6XCJdXG59O1xudmFyIGZhU3RvcENpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICdzdG9wLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI4ZFwiLCBcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em0yOTYtODB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ6XCJdXG59O1xudmFyIGZhU3VuID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3N1bicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE4NVwiLCBcIk00OTQuMiAyMjEuOWwtNTkuOC00MC41IDEzLjctNzFjMi42LTEzLjItMS42LTI2LjgtMTEuMS0zNi40LTkuNi05LjUtMjMuMi0xMy43LTM2LjItMTEuMWwtNzAuOSAxMy43LTQwLjQtNTkuOWMtMTUuMS0yMi4zLTUxLjktMjIuMy02NyAwbC00MC40IDU5LjktNzAuOC0xMy43Qzk4IDYwLjQgODQuNSA2NC41IDc1IDc0LjFjLTkuNSA5LjYtMTMuNyAyMy4xLTExLjEgMzYuM2wxMy43IDcxLTU5LjggNDAuNUM2LjYgMjI5LjUgMCAyNDIgMCAyNTUuNXM2LjcgMjYgMTcuOCAzMy41bDU5LjggNDAuNS0xMy43IDcxYy0yLjYgMTMuMiAxLjYgMjYuOCAxMS4xIDM2LjMgOS41IDkuNSAyMi45IDEzLjcgMzYuMyAxMS4xbDcwLjgtMTMuNyA0MC40IDU5LjlDMjMwIDUwNS4zIDI0Mi42IDUxMiAyNTYgNTEyczI2LTYuNyAzMy41LTE3LjhsNDAuNC01OS45IDcwLjkgMTMuN2MxMy40IDIuNyAyNi44LTEuNiAzNi4zLTExLjEgOS41LTkuNSAxMy42LTIzLjEgMTEuMS0zNi4zbC0xMy43LTcxIDU5LjgtNDAuNWMxMS4xLTcuNSAxNy44LTIwLjEgMTcuOC0zMy41LS4xLTEzLjYtNi43LTI2LjEtMTcuOS0zMy43em0tMTEyLjkgODUuNmwxNy42IDkxLjItOTEtMTcuNkwyNTYgNDU4bC01MS45LTc3LTkwLjkgMTcuNiAxNy42LTkxLjItNzYuOC01MiA3Ni44LTUyLTE3LjYtOTEuMiA5MSAxNy42TDI1NiA1M2w1MS45IDc2LjkgOTEtMTcuNi0xNy42IDkxLjEgNzYuOCA1Mi03Ni44IDUyLjF6TTI1NiAxNTJjLTU3LjMgMC0xMDQgNDYuNy0xMDQgMTA0czQ2LjcgMTA0IDEwNCAxMDQgMTA0LTQ2LjcgMTA0LTEwNC00Ni43LTEwNC0xMDQtMTA0em0wIDE2MGMtMzAuOSAwLTU2LTI1LjEtNTYtNTZzMjUuMS01NiA1Ni01NiA1NiAyNS4xIDU2IDU2LTI1LjEgNTYtNTYgNTZ6XCJdXG59O1xudmFyIGZhU3VycHJpc2UgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnc3VycHJpc2UnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1YzJcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0wLTE3NmMtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NCA2NC0yOC43IDY0LTY0LTI4LjctNjQtNjQtNjR6bS00OC03MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzJ6bTEyOC0zMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhVGh1bWJzRG93biA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICd0aHVtYnMtZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE2NVwiLCBcIk00NjYuMjcgMjI1LjMxYzQuNjc0LTIyLjY0Ny44NjQtNDQuNTM4LTguOTktNjIuOTkgMi45NTgtMjMuODY4LTQuMDIxLTQ4LjU2NS0xNy4zNC02Ni45OUM0MzguOTg2IDM5LjQyMyA0MDQuMTE3IDAgMzI3IDBjLTcgMC0xNSAuMDEtMjIuMjIuMDFDMjAxLjE5NS4wMSAxNjguOTk3IDQwIDEyOCA0MGgtMTAuODQ1Yy01LjY0LTQuOTc1LTEzLjA0Mi04LTIxLjE1NS04SDMyQzE0LjMyNyAzMiAwIDQ2LjMyNyAwIDY0djI0MGMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoNjRjMTEuODQyIDAgMjIuMTc1LTYuNDM4IDI3LjcwOC0xNmg3LjA1MmMxOS4xNDYgMTYuOTUzIDQ2LjAxMyA2MC42NTMgNjguNzYgODMuNCAxMy42NjcgMTMuNjY3IDEwLjE1MyAxMDguNiA3MS43NiAxMDguNiA1Ny41OCAwIDk1LjI3LTMxLjkzNiA5NS4yNy0xMDQuNzMgMC0xOC40MS0zLjkzLTMzLjczLTguODUtNDYuNTRoMzYuNDhjNDguNjAyIDAgODUuODItNDEuNTY1IDg1LjgyLTg1LjU4IDAtMTkuMTUtNC45Ni0zNC45OS0xMy43My00OS44NHpNNjQgMjk2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6bTMzMC4xOCAxNi43M0gyOTAuMTljMCAzNy44MiAyOC4zNiA1NS4zNyAyOC4zNiA5NC41NCAwIDIzLjc1IDAgNTYuNzMtNDcuMjcgNTYuNzMtMTguOTEtMTguOTEtOS40Ni02Ni4xOC0zNy44Mi05NC41NEMyMDYuOSAzNDIuODkgMTY3LjI4IDI3MiAxMzguOTIgMjcySDEyOFY4NS44M2M1My42MTEgMCAxMDAuMDAxLTM3LjgyIDE3MS42NC0zNy44MmgzNy44MmMzNS41MTIgMCA2MC44MiAxNy4xMiA1My4xMiA2NS45IDE1LjIgOC4xNiAyNi41IDM2LjQ0IDEzLjk0IDU3LjU3IDIxLjU4MSAyMC4zODQgMTguNjk5IDUxLjA2NSA1LjIxIDY1LjYyIDkuNDUgMCAyMi4zNiAxOC45MSAyMi4yNyAzNy44MS0uMDkgMTguOTEtMTYuNzEgMzcuODItMzcuODIgMzcuODJ6XCJdXG59O1xudmFyIGZhVGh1bWJzVXAgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAndGh1bWJzLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTY0XCIsIFwiTTQ2Ni4yNyAyODYuNjlDNDc1LjA0IDI3MS44NCA0ODAgMjU2IDQ4MCAyMzYuODVjMC00NC4wMTUtMzcuMjE4LTg1LjU4LTg1LjgyLTg1LjU4SDM1Ny43YzQuOTItMTIuODEgOC44NS0yOC4xMyA4Ljg1LTQ2LjU0QzM2Ni41NSAzMS45MzYgMzI4Ljg2IDAgMjcxLjI4IDBjLTYxLjYwNyAwLTU4LjA5MyA5NC45MzMtNzEuNzYgMTA4LjYtMjIuNzQ3IDIyLjc0Ny00OS42MTUgNjYuNDQ3LTY4Ljc2IDgzLjRIMzJjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnYyNDBjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDY0YzE0Ljg5MyAwIDI3LjQwOC0xMC4xNzQgMzAuOTc4LTIzLjk1IDQ0LjUwOSAxLjAwMSA3NS4wNiAzOS45NCAxNzcuODAyIDM5Ljk0IDcuMjIgMCAxNS4yMi4wMSAyMi4yMi4wMSA3Ny4xMTcgMCAxMTEuOTg2LTM5LjQyMyAxMTIuOTQtOTUuMzMgMTMuMzE5LTE4LjQyNSAyMC4yOTktNDMuMTIyIDE3LjM0LTY2Ljk5IDkuODU0LTE4LjQ1MiAxMy42NjQtNDAuMzQzIDguOTktNjIuOTl6bS02MS43NSA1My44M2MxMi41NiAyMS4xMyAxLjI2IDQ5LjQxLTEzLjk0IDU3LjU3IDcuNyA0OC43OC0xNy42MDggNjUuOS01My4xMiA2NS45aC0zNy44MmMtNzEuNjM5IDAtMTE4LjAyOS0zNy44Mi0xNzEuNjQtMzcuODJWMjQwaDEwLjkyYzI4LjM2IDAgNjcuOTgtNzAuODkgOTQuNTQtOTcuNDYgMjguMzYtMjguMzYgMTguOTEtNzUuNjMgMzcuODItOTQuNTQgNDcuMjcgMCA0Ny4yNyAzMi45OCA0Ny4yNyA1Ni43MyAwIDM5LjE3LTI4LjM2IDU2LjcyLTI4LjM2IDk0LjU0aDEwMy45OWMyMS4xMSAwIDM3LjczIDE4LjkxIDM3LjgyIDM3LjgyLjA5IDE4LjktMTIuODIgMzcuODEtMjIuMjcgMzcuODEgMTMuNDg5IDE0LjU1NSAxNi4zNzEgNDUuMjM2LTUuMjEgNjUuNjJ6TTg4IDQzMmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRzLTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0elwiXVxufTtcbnZhciBmYVRpbWVzQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3RpbWVzLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1N1wiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTEwMS44LTI2Mi4yTDI5NS42IDI1Nmw2Mi4yIDYyLjJjNC43IDQuNyA0LjcgMTIuMyAwIDE3bC0yMi42IDIyLjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwyNTYgMjk1LjZsLTYyLjIgNjIuMmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwbC0yMi42LTIyLjZjLTQuNy00LjctNC43LTEyLjMgMC0xN2w2Mi4yLTYyLjItNjIuMi02Mi4yYy00LjctNC43LTQuNy0xMi4zIDAtMTdsMjIuNi0yMi42YzQuNy00LjcgMTIuMy00LjcgMTcgMGw2Mi4yIDYyLjIgNjIuMi02Mi4yYzQuNy00LjcgMTIuMy00LjcgMTcgMGwyMi42IDIyLjZjNC43IDQuNyA0LjcgMTIuMyAwIDE3elwiXVxufTtcbnZhciBmYVRpcmVkID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3RpcmVkJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWM4XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTI5LjEtMzAzLjhjLTMuOC00LjQtMTAuMy01LjQtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OGM1LjQgMy4yIDExLjggMS42IDE1LjMtMi41IDMuOC00LjUgMy45LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS4xLS4xLTE1LjV6TTIyMCAyMDhjMC00LjItMi4yLTguMS01LjgtMTAuM2wtODAtNDhjLTUtMy0xMS41LTEuOS0xNS4zIDIuNS0zLjggNC41LTMuOSAxMS0uMSAxNS41bDMzLjYgNDAuMy0zMy42IDQwLjNjLTMuOCA0LjUtMy43IDExIC4xIDE1LjUgMy41IDQuMSA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3ptMjggNjRjLTQ1LjQgMC0xMDAuOSAzOC4zLTEwNy44IDkzLjMtMS41IDExLjggNi45IDIxLjYgMTUuNSAxNy45QzE3OC40IDM3My41IDIxMiAzNjggMjQ4IDM2OHM2OS42IDUuNSA5Mi4zIDE1LjJjOC41IDMuNyAxNy02IDE1LjUtMTcuOS02LjktNTUtNjIuNC05My4zLTEwNy44LTkzLjN6XCJdXG59O1xudmFyIGZhVHJhc2hBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAndHJhc2gtYWx0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMmVkXCIsIFwiTTI2OCA0MTZoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6TTQzMiA4MGgtODIuNDFsLTM0LTU2LjdBNDggNDggMCAwIDAgMjc0LjQxIDBIMTczLjU5YTQ4IDQ4IDAgMCAwLTQxLjE2IDIzLjNMOTguNDEgODBIMTZBMTYgMTYgMCAwIDAgMCA5NnYxNmExNiAxNiAwIDAgMCAxNiAxNmgxNnYzMzZhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOGgxNmExNiAxNiAwIDAgMCAxNi0xNlY5NmExNiAxNiAwIDAgMC0xNi0xNnpNMTcxLjg0IDUwLjkxQTYgNiAwIDAgMSAxNzcgNDhoOTRhNiA2IDAgMCAxIDUuMTUgMi45MUwyOTMuNjEgODBIMTU0LjM5ek0zNjggNDY0SDgwVjEyOGgyODh6bS0yMTItNDhoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6XCJdXG59O1xudmFyIGZhVXNlciA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICd1c2VyJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDA3XCIsIFwiTTMxMy42IDMwNGMtMjguNyAwLTQyLjUgMTYtODkuNiAxNi00Ny4xIDAtNjAuOC0xNi04OS42LTE2QzYwLjIgMzA0IDAgMzY0LjIgMCA0MzguNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yNS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40ek00MDAgNDY0SDQ4di0yNS42YzAtNDcuNiAzOC44LTg2LjQgODYuNC04Ni40IDE0LjYgMCAzOC4zIDE2IDg5LjYgMTYgNTEuNyAwIDc0LjktMTYgODkuNi0xNiA0Ny42IDAgODYuNCAzOC44IDg2LjQgODYuNFY0NjR6TTIyNCAyODhjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRTMzAzLjUgMCAyMjQgMCA4MCA2NC41IDgwIDE0NHM2NC41IDE0NCAxNDQgMTQ0em0wLTI0MGM1Mi45IDAgOTYgNDMuMSA5NiA5NnMtNDMuMSA5Ni05NiA5Ni05Ni00My4xLTk2LTk2IDQzLjEtOTYgOTYtOTZ6XCJdXG59O1xudmFyIGZhVXNlckNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWNpcmNsZScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjJiZFwiLCBcIk0yNDggMTA0Yy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2IDk2LTQzIDk2LTk2LTQzLTk2LTk2LTk2em0wIDE0NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTAtMjQwQzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy00OS43IDAtOTUuMS0xOC4zLTEzMC4xLTQ4LjQgMTQuOS0yMyA0MC40LTM4LjYgNjkuNi0zOS41IDIwLjggNi40IDQwLjYgOS42IDYwLjUgOS42czM5LjctMy4xIDYwLjUtOS42YzI5LjIgMSA1NC43IDE2LjUgNjkuNiAzOS41LTM1IDMwLjEtODAuNCA0OC40LTEzMC4xIDQ4LjR6bTE2Mi43LTg0LjFjLTI0LjQtMzEuNC02Mi4xLTUxLjktMTA1LjEtNTEuOS0xMC4yIDAtMjYgOS42LTU3LjYgOS42LTMxLjUgMC00Ny40LTkuNi01Ny42LTkuNi00Mi45IDAtODAuNiAyMC41LTEwNS4xIDUxLjlDNjEuOSAzMzkuMiA0OCAyOTkuMiA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA0My4yLTEzLjkgODMuMi0zNy4zIDExNS45elwiXVxufTtcbnZhciBmYVdpbmRvd0Nsb3NlID0ge1xuICBwcmVmaXg6ICdmYXInLFxuICBpY29uTmFtZTogJ3dpbmRvdy1jbG9zZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQxMFwiLCBcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDM5NGMwIDMuMy0yLjcgNi02IDZINTRjLTMuMyAwLTYtMi43LTYtNlY4NmMwLTMuMyAyLjctNiA2LTZoNDA0YzMuMyAwIDYgMi43IDYgNnYzNDB6TTM1Ni41IDE5NC42TDI5NS4xIDI1Nmw2MS40IDYxLjRjNC42IDQuNiA0LjYgMTIuMSAwIDE2LjhsLTIyLjMgMjIuM2MtNC42IDQuNi0xMi4xIDQuNi0xNi44IDBMMjU2IDI5NS4xbC02MS40IDYxLjRjLTQuNiA0LjYtMTIuMSA0LjYtMTYuOCAwbC0yMi4zLTIyLjNjLTQuNi00LjYtNC42LTEyLjEgMC0xNi44bDYxLjQtNjEuNC02MS40LTYxLjRjLTQuNi00LjYtNC42LTEyLjEgMC0xNi44bDIyLjMtMjIuM2M0LjYtNC42IDEyLjEtNC42IDE2LjggMGw2MS40IDYxLjQgNjEuNC02MS40YzQuNi00LjYgMTIuMS00LjYgMTYuOCAwbDIyLjMgMjIuM2M0LjcgNC42IDQuNyAxMi4xIDAgMTYuOHpcIl1cbn07XG52YXIgZmFXaW5kb3dNYXhpbWl6ZSA9IHtcbiAgcHJlZml4OiAnZmFyJyxcbiAgaWNvbk5hbWU6ICd3aW5kb3ctbWF4aW1pemUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyZDBcIiwgXCJNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCAzOTRjMCAzLjMtMi43IDYtNiA2SDU0Yy0zLjMgMC02LTIuNy02LTZWMTkyaDQxNnYyMzR6XCJdXG59O1xudmFyIGZhV2luZG93TWluaW1pemUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnd2luZG93LW1pbmltaXplJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmQxXCIsIFwiTTQ4MCA0ODBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYVdpbmRvd1Jlc3RvcmUgPSB7XG4gIHByZWZpeDogJ2ZhcicsXG4gIGljb25OYW1lOiAnd2luZG93LXJlc3RvcmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyZDJcIiwgXCJNNDY0IDBIMTQ0Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MzIwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS05NiA0NjRINDhWMjU2aDMyMHYyMDh6bTk2LTk2aC00OFYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTQ0VjQ4aDMyMHYzMjB6XCJdXG59O1xudmFyIF9pY29uc0NhY2hlID0ge1xuICBmYUFkZHJlc3NCb29rOiBmYUFkZHJlc3NCb29rLFxuICBmYUFkZHJlc3NDYXJkOiBmYUFkZHJlc3NDYXJkLFxuICBmYUFuZ3J5OiBmYUFuZ3J5LFxuICBmYUFycm93QWx0Q2lyY2xlRG93bjogZmFBcnJvd0FsdENpcmNsZURvd24sXG4gIGZhQXJyb3dBbHRDaXJjbGVMZWZ0OiBmYUFycm93QWx0Q2lyY2xlTGVmdCxcbiAgZmFBcnJvd0FsdENpcmNsZVJpZ2h0OiBmYUFycm93QWx0Q2lyY2xlUmlnaHQsXG4gIGZhQXJyb3dBbHRDaXJjbGVVcDogZmFBcnJvd0FsdENpcmNsZVVwLFxuICBmYUJlbGw6IGZhQmVsbCxcbiAgZmFCZWxsU2xhc2g6IGZhQmVsbFNsYXNoLFxuICBmYUJvb2ttYXJrOiBmYUJvb2ttYXJrLFxuICBmYUJ1aWxkaW5nOiBmYUJ1aWxkaW5nLFxuICBmYUNhbGVuZGFyOiBmYUNhbGVuZGFyLFxuICBmYUNhbGVuZGFyQWx0OiBmYUNhbGVuZGFyQWx0LFxuICBmYUNhbGVuZGFyQ2hlY2s6IGZhQ2FsZW5kYXJDaGVjayxcbiAgZmFDYWxlbmRhck1pbnVzOiBmYUNhbGVuZGFyTWludXMsXG4gIGZhQ2FsZW5kYXJQbHVzOiBmYUNhbGVuZGFyUGx1cyxcbiAgZmFDYWxlbmRhclRpbWVzOiBmYUNhbGVuZGFyVGltZXMsXG4gIGZhQ2FyZXRTcXVhcmVEb3duOiBmYUNhcmV0U3F1YXJlRG93bixcbiAgZmFDYXJldFNxdWFyZUxlZnQ6IGZhQ2FyZXRTcXVhcmVMZWZ0LFxuICBmYUNhcmV0U3F1YXJlUmlnaHQ6IGZhQ2FyZXRTcXVhcmVSaWdodCxcbiAgZmFDYXJldFNxdWFyZVVwOiBmYUNhcmV0U3F1YXJlVXAsXG4gIGZhQ2hhcnRCYXI6IGZhQ2hhcnRCYXIsXG4gIGZhQ2hlY2tDaXJjbGU6IGZhQ2hlY2tDaXJjbGUsXG4gIGZhQ2hlY2tTcXVhcmU6IGZhQ2hlY2tTcXVhcmUsXG4gIGZhQ2lyY2xlOiBmYUNpcmNsZSxcbiAgZmFDbGlwYm9hcmQ6IGZhQ2xpcGJvYXJkLFxuICBmYUNsb2NrOiBmYUNsb2NrLFxuICBmYUNsb25lOiBmYUNsb25lLFxuICBmYUNsb3NlZENhcHRpb25pbmc6IGZhQ2xvc2VkQ2FwdGlvbmluZyxcbiAgZmFDb21tZW50OiBmYUNvbW1lbnQsXG4gIGZhQ29tbWVudEFsdDogZmFDb21tZW50QWx0LFxuICBmYUNvbW1lbnREb3RzOiBmYUNvbW1lbnREb3RzLFxuICBmYUNvbW1lbnRzOiBmYUNvbW1lbnRzLFxuICBmYUNvbXBhc3M6IGZhQ29tcGFzcyxcbiAgZmFDb3B5OiBmYUNvcHksXG4gIGZhQ29weXJpZ2h0OiBmYUNvcHlyaWdodCxcbiAgZmFDcmVkaXRDYXJkOiBmYUNyZWRpdENhcmQsXG4gIGZhRGl6enk6IGZhRGl6enksXG4gIGZhRG90Q2lyY2xlOiBmYURvdENpcmNsZSxcbiAgZmFFZGl0OiBmYUVkaXQsXG4gIGZhRW52ZWxvcGU6IGZhRW52ZWxvcGUsXG4gIGZhRW52ZWxvcGVPcGVuOiBmYUVudmVsb3BlT3BlbixcbiAgZmFFeWU6IGZhRXllLFxuICBmYUV5ZVNsYXNoOiBmYUV5ZVNsYXNoLFxuICBmYUZpbGU6IGZhRmlsZSxcbiAgZmFGaWxlQWx0OiBmYUZpbGVBbHQsXG4gIGZhRmlsZUFyY2hpdmU6IGZhRmlsZUFyY2hpdmUsXG4gIGZhRmlsZUF1ZGlvOiBmYUZpbGVBdWRpbyxcbiAgZmFGaWxlQ29kZTogZmFGaWxlQ29kZSxcbiAgZmFGaWxlRXhjZWw6IGZhRmlsZUV4Y2VsLFxuICBmYUZpbGVJbWFnZTogZmFGaWxlSW1hZ2UsXG4gIGZhRmlsZVBkZjogZmFGaWxlUGRmLFxuICBmYUZpbGVQb3dlcnBvaW50OiBmYUZpbGVQb3dlcnBvaW50LFxuICBmYUZpbGVWaWRlbzogZmFGaWxlVmlkZW8sXG4gIGZhRmlsZVdvcmQ6IGZhRmlsZVdvcmQsXG4gIGZhRmxhZzogZmFGbGFnLFxuICBmYUZsdXNoZWQ6IGZhRmx1c2hlZCxcbiAgZmFGb2xkZXI6IGZhRm9sZGVyLFxuICBmYUZvbGRlck9wZW46IGZhRm9sZGVyT3BlbixcbiAgZmFGb250QXdlc29tZUxvZ29GdWxsOiBmYUZvbnRBd2Vzb21lTG9nb0Z1bGwsXG4gIGZhRnJvd246IGZhRnJvd24sXG4gIGZhRnJvd25PcGVuOiBmYUZyb3duT3BlbixcbiAgZmFGdXRib2w6IGZhRnV0Ym9sLFxuICBmYUdlbTogZmFHZW0sXG4gIGZhR3JpbWFjZTogZmFHcmltYWNlLFxuICBmYUdyaW46IGZhR3JpbixcbiAgZmFHcmluQWx0OiBmYUdyaW5BbHQsXG4gIGZhR3JpbkJlYW06IGZhR3JpbkJlYW0sXG4gIGZhR3JpbkJlYW1Td2VhdDogZmFHcmluQmVhbVN3ZWF0LFxuICBmYUdyaW5IZWFydHM6IGZhR3JpbkhlYXJ0cyxcbiAgZmFHcmluU3F1aW50OiBmYUdyaW5TcXVpbnQsXG4gIGZhR3JpblNxdWludFRlYXJzOiBmYUdyaW5TcXVpbnRUZWFycyxcbiAgZmFHcmluU3RhcnM6IGZhR3JpblN0YXJzLFxuICBmYUdyaW5UZWFyczogZmFHcmluVGVhcnMsXG4gIGZhR3JpblRvbmd1ZTogZmFHcmluVG9uZ3VlLFxuICBmYUdyaW5Ub25ndWVTcXVpbnQ6IGZhR3JpblRvbmd1ZVNxdWludCxcbiAgZmFHcmluVG9uZ3VlV2luazogZmFHcmluVG9uZ3VlV2luayxcbiAgZmFHcmluV2luazogZmFHcmluV2luayxcbiAgZmFIYW5kTGl6YXJkOiBmYUhhbmRMaXphcmQsXG4gIGZhSGFuZFBhcGVyOiBmYUhhbmRQYXBlcixcbiAgZmFIYW5kUGVhY2U6IGZhSGFuZFBlYWNlLFxuICBmYUhhbmRQb2ludERvd246IGZhSGFuZFBvaW50RG93bixcbiAgZmFIYW5kUG9pbnRMZWZ0OiBmYUhhbmRQb2ludExlZnQsXG4gIGZhSGFuZFBvaW50UmlnaHQ6IGZhSGFuZFBvaW50UmlnaHQsXG4gIGZhSGFuZFBvaW50VXA6IGZhSGFuZFBvaW50VXAsXG4gIGZhSGFuZFBvaW50ZXI6IGZhSGFuZFBvaW50ZXIsXG4gIGZhSGFuZFJvY2s6IGZhSGFuZFJvY2ssXG4gIGZhSGFuZFNjaXNzb3JzOiBmYUhhbmRTY2lzc29ycyxcbiAgZmFIYW5kU3BvY2s6IGZhSGFuZFNwb2NrLFxuICBmYUhhbmRzaGFrZTogZmFIYW5kc2hha2UsXG4gIGZhSGRkOiBmYUhkZCxcbiAgZmFIZWFydDogZmFIZWFydCxcbiAgZmFIb3NwaXRhbDogZmFIb3NwaXRhbCxcbiAgZmFIb3VyZ2xhc3M6IGZhSG91cmdsYXNzLFxuICBmYUlkQmFkZ2U6IGZhSWRCYWRnZSxcbiAgZmFJZENhcmQ6IGZhSWRDYXJkLFxuICBmYUltYWdlOiBmYUltYWdlLFxuICBmYUltYWdlczogZmFJbWFnZXMsXG4gIGZhS2V5Ym9hcmQ6IGZhS2V5Ym9hcmQsXG4gIGZhS2lzczogZmFLaXNzLFxuICBmYUtpc3NCZWFtOiBmYUtpc3NCZWFtLFxuICBmYUtpc3NXaW5rSGVhcnQ6IGZhS2lzc1dpbmtIZWFydCxcbiAgZmFMYXVnaDogZmFMYXVnaCxcbiAgZmFMYXVnaEJlYW06IGZhTGF1Z2hCZWFtLFxuICBmYUxhdWdoU3F1aW50OiBmYUxhdWdoU3F1aW50LFxuICBmYUxhdWdoV2luazogZmFMYXVnaFdpbmssXG4gIGZhTGVtb246IGZhTGVtb24sXG4gIGZhTGlmZVJpbmc6IGZhTGlmZVJpbmcsXG4gIGZhTGlnaHRidWxiOiBmYUxpZ2h0YnVsYixcbiAgZmFMaXN0QWx0OiBmYUxpc3RBbHQsXG4gIGZhTWFwOiBmYU1hcCxcbiAgZmFNZWg6IGZhTWVoLFxuICBmYU1laEJsYW5rOiBmYU1laEJsYW5rLFxuICBmYU1laFJvbGxpbmdFeWVzOiBmYU1laFJvbGxpbmdFeWVzLFxuICBmYU1pbnVzU3F1YXJlOiBmYU1pbnVzU3F1YXJlLFxuICBmYU1vbmV5QmlsbEFsdDogZmFNb25leUJpbGxBbHQsXG4gIGZhTW9vbjogZmFNb29uLFxuICBmYU5ld3NwYXBlcjogZmFOZXdzcGFwZXIsXG4gIGZhT2JqZWN0R3JvdXA6IGZhT2JqZWN0R3JvdXAsXG4gIGZhT2JqZWN0VW5ncm91cDogZmFPYmplY3RVbmdyb3VwLFxuICBmYVBhcGVyUGxhbmU6IGZhUGFwZXJQbGFuZSxcbiAgZmFQYXVzZUNpcmNsZTogZmFQYXVzZUNpcmNsZSxcbiAgZmFQbGF5Q2lyY2xlOiBmYVBsYXlDaXJjbGUsXG4gIGZhUGx1c1NxdWFyZTogZmFQbHVzU3F1YXJlLFxuICBmYVF1ZXN0aW9uQ2lyY2xlOiBmYVF1ZXN0aW9uQ2lyY2xlLFxuICBmYVJlZ2lzdGVyZWQ6IGZhUmVnaXN0ZXJlZCxcbiAgZmFTYWRDcnk6IGZhU2FkQ3J5LFxuICBmYVNhZFRlYXI6IGZhU2FkVGVhcixcbiAgZmFTYXZlOiBmYVNhdmUsXG4gIGZhU2hhcmVTcXVhcmU6IGZhU2hhcmVTcXVhcmUsXG4gIGZhU21pbGU6IGZhU21pbGUsXG4gIGZhU21pbGVCZWFtOiBmYVNtaWxlQmVhbSxcbiAgZmFTbWlsZVdpbms6IGZhU21pbGVXaW5rLFxuICBmYVNub3dmbGFrZTogZmFTbm93Zmxha2UsXG4gIGZhU3F1YXJlOiBmYVNxdWFyZSxcbiAgZmFTdGFyOiBmYVN0YXIsXG4gIGZhU3RhckhhbGY6IGZhU3RhckhhbGYsXG4gIGZhU3RpY2t5Tm90ZTogZmFTdGlja3lOb3RlLFxuICBmYVN0b3BDaXJjbGU6IGZhU3RvcENpcmNsZSxcbiAgZmFTdW46IGZhU3VuLFxuICBmYVN1cnByaXNlOiBmYVN1cnByaXNlLFxuICBmYVRodW1ic0Rvd246IGZhVGh1bWJzRG93bixcbiAgZmFUaHVtYnNVcDogZmFUaHVtYnNVcCxcbiAgZmFUaW1lc0NpcmNsZTogZmFUaW1lc0NpcmNsZSxcbiAgZmFUaXJlZDogZmFUaXJlZCxcbiAgZmFUcmFzaEFsdDogZmFUcmFzaEFsdCxcbiAgZmFVc2VyOiBmYVVzZXIsXG4gIGZhVXNlckNpcmNsZTogZmFVc2VyQ2lyY2xlLFxuICBmYVdpbmRvd0Nsb3NlOiBmYVdpbmRvd0Nsb3NlLFxuICBmYVdpbmRvd01heGltaXplOiBmYVdpbmRvd01heGltaXplLFxuICBmYVdpbmRvd01pbmltaXplOiBmYVdpbmRvd01pbmltaXplLFxuICBmYVdpbmRvd1Jlc3RvcmU6IGZhV2luZG93UmVzdG9yZVxufTtcblxuZXhwb3J0IHsgX2ljb25zQ2FjaGUgYXMgZmFyLCBwcmVmaXgsIGZhQWRkcmVzc0Jvb2ssIGZhQWRkcmVzc0NhcmQsIGZhQW5ncnksIGZhQXJyb3dBbHRDaXJjbGVEb3duLCBmYUFycm93QWx0Q2lyY2xlTGVmdCwgZmFBcnJvd0FsdENpcmNsZVJpZ2h0LCBmYUFycm93QWx0Q2lyY2xlVXAsIGZhQmVsbCwgZmFCZWxsU2xhc2gsIGZhQm9va21hcmssIGZhQnVpbGRpbmcsIGZhQ2FsZW5kYXIsIGZhQ2FsZW5kYXJBbHQsIGZhQ2FsZW5kYXJDaGVjaywgZmFDYWxlbmRhck1pbnVzLCBmYUNhbGVuZGFyUGx1cywgZmFDYWxlbmRhclRpbWVzLCBmYUNhcmV0U3F1YXJlRG93biwgZmFDYXJldFNxdWFyZUxlZnQsIGZhQ2FyZXRTcXVhcmVSaWdodCwgZmFDYXJldFNxdWFyZVVwLCBmYUNoYXJ0QmFyLCBmYUNoZWNrQ2lyY2xlLCBmYUNoZWNrU3F1YXJlLCBmYUNpcmNsZSwgZmFDbGlwYm9hcmQsIGZhQ2xvY2ssIGZhQ2xvbmUsIGZhQ2xvc2VkQ2FwdGlvbmluZywgZmFDb21tZW50LCBmYUNvbW1lbnRBbHQsIGZhQ29tbWVudERvdHMsIGZhQ29tbWVudHMsIGZhQ29tcGFzcywgZmFDb3B5LCBmYUNvcHlyaWdodCwgZmFDcmVkaXRDYXJkLCBmYURpenp5LCBmYURvdENpcmNsZSwgZmFFZGl0LCBmYUVudmVsb3BlLCBmYUVudmVsb3BlT3BlbiwgZmFFeWUsIGZhRXllU2xhc2gsIGZhRmlsZSwgZmFGaWxlQWx0LCBmYUZpbGVBcmNoaXZlLCBmYUZpbGVBdWRpbywgZmFGaWxlQ29kZSwgZmFGaWxlRXhjZWwsIGZhRmlsZUltYWdlLCBmYUZpbGVQZGYsIGZhRmlsZVBvd2VycG9pbnQsIGZhRmlsZVZpZGVvLCBmYUZpbGVXb3JkLCBmYUZsYWcsIGZhRmx1c2hlZCwgZmFGb2xkZXIsIGZhRm9sZGVyT3BlbiwgZmFGb250QXdlc29tZUxvZ29GdWxsLCBmYUZyb3duLCBmYUZyb3duT3BlbiwgZmFGdXRib2wsIGZhR2VtLCBmYUdyaW1hY2UsIGZhR3JpbiwgZmFHcmluQWx0LCBmYUdyaW5CZWFtLCBmYUdyaW5CZWFtU3dlYXQsIGZhR3JpbkhlYXJ0cywgZmFHcmluU3F1aW50LCBmYUdyaW5TcXVpbnRUZWFycywgZmFHcmluU3RhcnMsIGZhR3JpblRlYXJzLCBmYUdyaW5Ub25ndWUsIGZhR3JpblRvbmd1ZVNxdWludCwgZmFHcmluVG9uZ3VlV2luaywgZmFHcmluV2luaywgZmFIYW5kTGl6YXJkLCBmYUhhbmRQYXBlciwgZmFIYW5kUGVhY2UsIGZhSGFuZFBvaW50RG93biwgZmFIYW5kUG9pbnRMZWZ0LCBmYUhhbmRQb2ludFJpZ2h0LCBmYUhhbmRQb2ludFVwLCBmYUhhbmRQb2ludGVyLCBmYUhhbmRSb2NrLCBmYUhhbmRTY2lzc29ycywgZmFIYW5kU3BvY2ssIGZhSGFuZHNoYWtlLCBmYUhkZCwgZmFIZWFydCwgZmFIb3NwaXRhbCwgZmFIb3VyZ2xhc3MsIGZhSWRCYWRnZSwgZmFJZENhcmQsIGZhSW1hZ2UsIGZhSW1hZ2VzLCBmYUtleWJvYXJkLCBmYUtpc3MsIGZhS2lzc0JlYW0sIGZhS2lzc1dpbmtIZWFydCwgZmFMYXVnaCwgZmFMYXVnaEJlYW0sIGZhTGF1Z2hTcXVpbnQsIGZhTGF1Z2hXaW5rLCBmYUxlbW9uLCBmYUxpZmVSaW5nLCBmYUxpZ2h0YnVsYiwgZmFMaXN0QWx0LCBmYU1hcCwgZmFNZWgsIGZhTWVoQmxhbmssIGZhTWVoUm9sbGluZ0V5ZXMsIGZhTWludXNTcXVhcmUsIGZhTW9uZXlCaWxsQWx0LCBmYU1vb24sIGZhTmV3c3BhcGVyLCBmYU9iamVjdEdyb3VwLCBmYU9iamVjdFVuZ3JvdXAsIGZhUGFwZXJQbGFuZSwgZmFQYXVzZUNpcmNsZSwgZmFQbGF5Q2lyY2xlLCBmYVBsdXNTcXVhcmUsIGZhUXVlc3Rpb25DaXJjbGUsIGZhUmVnaXN0ZXJlZCwgZmFTYWRDcnksIGZhU2FkVGVhciwgZmFTYXZlLCBmYVNoYXJlU3F1YXJlLCBmYVNtaWxlLCBmYVNtaWxlQmVhbSwgZmFTbWlsZVdpbmssIGZhU25vd2ZsYWtlLCBmYVNxdWFyZSwgZmFTdGFyLCBmYVN0YXJIYWxmLCBmYVN0aWNreU5vdGUsIGZhU3RvcENpcmNsZSwgZmFTdW4sIGZhU3VycHJpc2UsIGZhVGh1bWJzRG93biwgZmFUaHVtYnNVcCwgZmFUaW1lc0NpcmNsZSwgZmFUaXJlZCwgZmFUcmFzaEFsdCwgZmFVc2VyLCBmYVVzZXJDaXJjbGUsIGZhV2luZG93Q2xvc2UsIGZhV2luZG93TWF4aW1pemUsIGZhV2luZG93TWluaW1pemUsIGZhV2luZG93UmVzdG9yZSB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@fortawesome/free-regular-svg-icons/index.es.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@fortawesome/free-solid-svg-icons/index.es.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/@fortawesome/free-solid-svg-icons/index.es.js ***!
|
||
\********************************************************************/
|
||
/*! exports provided: fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fas\", function() { return _iconsCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefix\", function() { return prefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAd\", function() { return faAd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAddressBook\", function() { return faAddressBook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAddressCard\", function() { return faAddressCard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAdjust\", function() { return faAdjust; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAirFreshener\", function() { return faAirFreshener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAlignCenter\", function() { return faAlignCenter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAlignJustify\", function() { return faAlignJustify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAlignLeft\", function() { return faAlignLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAlignRight\", function() { return faAlignRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAllergies\", function() { return faAllergies; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAmbulance\", function() { return faAmbulance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAmericanSignLanguageInterpreting\", function() { return faAmericanSignLanguageInterpreting; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAnchor\", function() { return faAnchor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngleDoubleDown\", function() { return faAngleDoubleDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngleDoubleLeft\", function() { return faAngleDoubleLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngleDoubleRight\", function() { return faAngleDoubleRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngleDoubleUp\", function() { return faAngleDoubleUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngleDown\", function() { return faAngleDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngleLeft\", function() { return faAngleLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngleRight\", function() { return faAngleRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngleUp\", function() { return faAngleUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAngry\", function() { return faAngry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAnkh\", function() { return faAnkh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAppleAlt\", function() { return faAppleAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArchive\", function() { return faArchive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArchway\", function() { return faArchway; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowAltCircleDown\", function() { return faArrowAltCircleDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowAltCircleLeft\", function() { return faArrowAltCircleLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowAltCircleRight\", function() { return faArrowAltCircleRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowAltCircleUp\", function() { return faArrowAltCircleUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowCircleDown\", function() { return faArrowCircleDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowCircleLeft\", function() { return faArrowCircleLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowCircleRight\", function() { return faArrowCircleRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowCircleUp\", function() { return faArrowCircleUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowDown\", function() { return faArrowDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowLeft\", function() { return faArrowLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowRight\", function() { return faArrowRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowUp\", function() { return faArrowUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowsAlt\", function() { return faArrowsAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowsAltH\", function() { return faArrowsAltH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faArrowsAltV\", function() { return faArrowsAltV; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAssistiveListeningSystems\", function() { return faAssistiveListeningSystems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAsterisk\", function() { return faAsterisk; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAt\", function() { return faAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAtlas\", function() { return faAtlas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAtom\", function() { return faAtom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAudioDescription\", function() { return faAudioDescription; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faAward\", function() { return faAward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBaby\", function() { return faBaby; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBabyCarriage\", function() { return faBabyCarriage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBackspace\", function() { return faBackspace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBackward\", function() { return faBackward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBacon\", function() { return faBacon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBacteria\", function() { return faBacteria; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBacterium\", function() { return faBacterium; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBahai\", function() { return faBahai; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBalanceScale\", function() { return faBalanceScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBalanceScaleLeft\", function() { return faBalanceScaleLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBalanceScaleRight\", function() { return faBalanceScaleRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBan\", function() { return faBan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBandAid\", function() { return faBandAid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBarcode\", function() { return faBarcode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBars\", function() { return faBars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBaseballBall\", function() { return faBaseballBall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBasketballBall\", function() { return faBasketballBall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBath\", function() { return faBath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBatteryEmpty\", function() { return faBatteryEmpty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBatteryFull\", function() { return faBatteryFull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBatteryHalf\", function() { return faBatteryHalf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBatteryQuarter\", function() { return faBatteryQuarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBatteryThreeQuarters\", function() { return faBatteryThreeQuarters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBed\", function() { return faBed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBeer\", function() { return faBeer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBell\", function() { return faBell; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBellSlash\", function() { return faBellSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBezierCurve\", function() { return faBezierCurve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBible\", function() { return faBible; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBicycle\", function() { return faBicycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBiking\", function() { return faBiking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBinoculars\", function() { return faBinoculars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBiohazard\", function() { return faBiohazard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBirthdayCake\", function() { return faBirthdayCake; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBlender\", function() { return faBlender; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBlenderPhone\", function() { return faBlenderPhone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBlind\", function() { return faBlind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBlog\", function() { return faBlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBold\", function() { return faBold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBolt\", function() { return faBolt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBomb\", function() { return faBomb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBone\", function() { return faBone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBong\", function() { return faBong; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBook\", function() { return faBook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBookDead\", function() { return faBookDead; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBookMedical\", function() { return faBookMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBookOpen\", function() { return faBookOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBookReader\", function() { return faBookReader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBookmark\", function() { return faBookmark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBorderAll\", function() { return faBorderAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBorderNone\", function() { return faBorderNone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBorderStyle\", function() { return faBorderStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBowlingBall\", function() { return faBowlingBall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBox\", function() { return faBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBoxOpen\", function() { return faBoxOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBoxTissue\", function() { return faBoxTissue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBoxes\", function() { return faBoxes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBraille\", function() { return faBraille; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBrain\", function() { return faBrain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBreadSlice\", function() { return faBreadSlice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBriefcase\", function() { return faBriefcase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBriefcaseMedical\", function() { return faBriefcaseMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBroadcastTower\", function() { return faBroadcastTower; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBroom\", function() { return faBroom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBrush\", function() { return faBrush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBug\", function() { return faBug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBuilding\", function() { return faBuilding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBullhorn\", function() { return faBullhorn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBullseye\", function() { return faBullseye; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBurn\", function() { return faBurn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBus\", function() { return faBus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBusAlt\", function() { return faBusAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faBusinessTime\", function() { return faBusinessTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalculator\", function() { return faCalculator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendar\", function() { return faCalendar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarAlt\", function() { return faCalendarAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarCheck\", function() { return faCalendarCheck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarDay\", function() { return faCalendarDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarMinus\", function() { return faCalendarMinus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarPlus\", function() { return faCalendarPlus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarTimes\", function() { return faCalendarTimes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCalendarWeek\", function() { return faCalendarWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCamera\", function() { return faCamera; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCameraRetro\", function() { return faCameraRetro; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCampground\", function() { return faCampground; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCandyCane\", function() { return faCandyCane; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCannabis\", function() { return faCannabis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCapsules\", function() { return faCapsules; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCar\", function() { return faCar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCarAlt\", function() { return faCarAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCarBattery\", function() { return faCarBattery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCarCrash\", function() { return faCarCrash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCarSide\", function() { return faCarSide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaravan\", function() { return faCaravan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretDown\", function() { return faCaretDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretLeft\", function() { return faCaretLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretRight\", function() { return faCaretRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretSquareDown\", function() { return faCaretSquareDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretSquareLeft\", function() { return faCaretSquareLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretSquareRight\", function() { return faCaretSquareRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretSquareUp\", function() { return faCaretSquareUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCaretUp\", function() { return faCaretUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCarrot\", function() { return faCarrot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCartArrowDown\", function() { return faCartArrowDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCartPlus\", function() { return faCartPlus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCashRegister\", function() { return faCashRegister; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCat\", function() { return faCat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCertificate\", function() { return faCertificate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChair\", function() { return faChair; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChalkboard\", function() { return faChalkboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChalkboardTeacher\", function() { return faChalkboardTeacher; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChargingStation\", function() { return faChargingStation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChartArea\", function() { return faChartArea; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChartBar\", function() { return faChartBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChartLine\", function() { return faChartLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChartPie\", function() { return faChartPie; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCheck\", function() { return faCheck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCheckCircle\", function() { return faCheckCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCheckDouble\", function() { return faCheckDouble; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCheckSquare\", function() { return faCheckSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCheese\", function() { return faCheese; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChess\", function() { return faChess; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChessBishop\", function() { return faChessBishop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChessBoard\", function() { return faChessBoard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChessKing\", function() { return faChessKing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChessKnight\", function() { return faChessKnight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChessPawn\", function() { return faChessPawn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChessQueen\", function() { return faChessQueen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChessRook\", function() { return faChessRook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChevronCircleDown\", function() { return faChevronCircleDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChevronCircleLeft\", function() { return faChevronCircleLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChevronCircleRight\", function() { return faChevronCircleRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChevronCircleUp\", function() { return faChevronCircleUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChevronDown\", function() { return faChevronDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChevronLeft\", function() { return faChevronLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChevronRight\", function() { return faChevronRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChevronUp\", function() { return faChevronUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChild\", function() { return faChild; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faChurch\", function() { return faChurch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCircle\", function() { return faCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCircleNotch\", function() { return faCircleNotch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCity\", function() { return faCity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClinicMedical\", function() { return faClinicMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClipboard\", function() { return faClipboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClipboardCheck\", function() { return faClipboardCheck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClipboardList\", function() { return faClipboardList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClock\", function() { return faClock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClone\", function() { return faClone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faClosedCaptioning\", function() { return faClosedCaptioning; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloud\", function() { return faCloud; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudDownloadAlt\", function() { return faCloudDownloadAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudMeatball\", function() { return faCloudMeatball; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudMoon\", function() { return faCloudMoon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudMoonRain\", function() { return faCloudMoonRain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudRain\", function() { return faCloudRain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudShowersHeavy\", function() { return faCloudShowersHeavy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudSun\", function() { return faCloudSun; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudSunRain\", function() { return faCloudSunRain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCloudUploadAlt\", function() { return faCloudUploadAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCocktail\", function() { return faCocktail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCode\", function() { return faCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCodeBranch\", function() { return faCodeBranch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCoffee\", function() { return faCoffee; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCog\", function() { return faCog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCogs\", function() { return faCogs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCoins\", function() { return faCoins; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faColumns\", function() { return faColumns; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faComment\", function() { return faComment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCommentAlt\", function() { return faCommentAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCommentDollar\", function() { return faCommentDollar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCommentDots\", function() { return faCommentDots; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCommentMedical\", function() { return faCommentMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCommentSlash\", function() { return faCommentSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faComments\", function() { return faComments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCommentsDollar\", function() { return faCommentsDollar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCompactDisc\", function() { return faCompactDisc; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCompass\", function() { return faCompass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCompress\", function() { return faCompress; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCompressAlt\", function() { return faCompressAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCompressArrowsAlt\", function() { return faCompressArrowsAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faConciergeBell\", function() { return faConciergeBell; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCookie\", function() { return faCookie; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCookieBite\", function() { return faCookieBite; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCopy\", function() { return faCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCopyright\", function() { return faCopyright; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCouch\", function() { return faCouch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCreditCard\", function() { return faCreditCard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCrop\", function() { return faCrop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCropAlt\", function() { return faCropAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCross\", function() { return faCross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCrosshairs\", function() { return faCrosshairs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCrow\", function() { return faCrow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCrown\", function() { return faCrown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCrutch\", function() { return faCrutch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCube\", function() { return faCube; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCubes\", function() { return faCubes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faCut\", function() { return faCut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDatabase\", function() { return faDatabase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDeaf\", function() { return faDeaf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDemocrat\", function() { return faDemocrat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDesktop\", function() { return faDesktop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDharmachakra\", function() { return faDharmachakra; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiagnoses\", function() { return faDiagnoses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDice\", function() { return faDice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiceD20\", function() { return faDiceD20; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiceD6\", function() { return faDiceD6; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiceFive\", function() { return faDiceFive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiceFour\", function() { return faDiceFour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiceOne\", function() { return faDiceOne; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiceSix\", function() { return faDiceSix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiceThree\", function() { return faDiceThree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDiceTwo\", function() { return faDiceTwo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDigitalTachograph\", function() { return faDigitalTachograph; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDirections\", function() { return faDirections; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDisease\", function() { return faDisease; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDivide\", function() { return faDivide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDizzy\", function() { return faDizzy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDna\", function() { return faDna; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDog\", function() { return faDog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDollarSign\", function() { return faDollarSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDolly\", function() { return faDolly; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDollyFlatbed\", function() { return faDollyFlatbed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDonate\", function() { return faDonate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDoorClosed\", function() { return faDoorClosed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDoorOpen\", function() { return faDoorOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDotCircle\", function() { return faDotCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDove\", function() { return faDove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDownload\", function() { return faDownload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDraftingCompass\", function() { return faDraftingCompass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDragon\", function() { return faDragon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDrawPolygon\", function() { return faDrawPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDrum\", function() { return faDrum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDrumSteelpan\", function() { return faDrumSteelpan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDrumstickBite\", function() { return faDrumstickBite; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDumbbell\", function() { return faDumbbell; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDumpster\", function() { return faDumpster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDumpsterFire\", function() { return faDumpsterFire; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faDungeon\", function() { return faDungeon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEdit\", function() { return faEdit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEgg\", function() { return faEgg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEject\", function() { return faEject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEllipsisH\", function() { return faEllipsisH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEllipsisV\", function() { return faEllipsisV; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEnvelope\", function() { return faEnvelope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEnvelopeOpen\", function() { return faEnvelopeOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEnvelopeOpenText\", function() { return faEnvelopeOpenText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEnvelopeSquare\", function() { return faEnvelopeSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEquals\", function() { return faEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEraser\", function() { return faEraser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEthernet\", function() { return faEthernet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEuroSign\", function() { return faEuroSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExchangeAlt\", function() { return faExchangeAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExclamation\", function() { return faExclamation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExclamationCircle\", function() { return faExclamationCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExclamationTriangle\", function() { return faExclamationTriangle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExpand\", function() { return faExpand; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExpandAlt\", function() { return faExpandAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExpandArrowsAlt\", function() { return faExpandArrowsAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExternalLinkAlt\", function() { return faExternalLinkAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faExternalLinkSquareAlt\", function() { return faExternalLinkSquareAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEye\", function() { return faEye; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEyeDropper\", function() { return faEyeDropper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faEyeSlash\", function() { return faEyeSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFan\", function() { return faFan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFastBackward\", function() { return faFastBackward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFastForward\", function() { return faFastForward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFaucet\", function() { return faFaucet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFax\", function() { return faFax; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFeather\", function() { return faFeather; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFeatherAlt\", function() { return faFeatherAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFemale\", function() { return faFemale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFighterJet\", function() { return faFighterJet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFile\", function() { return faFile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileAlt\", function() { return faFileAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileArchive\", function() { return faFileArchive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileAudio\", function() { return faFileAudio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileCode\", function() { return faFileCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileContract\", function() { return faFileContract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileCsv\", function() { return faFileCsv; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileDownload\", function() { return faFileDownload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileExcel\", function() { return faFileExcel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileExport\", function() { return faFileExport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileImage\", function() { return faFileImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileImport\", function() { return faFileImport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileInvoice\", function() { return faFileInvoice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileInvoiceDollar\", function() { return faFileInvoiceDollar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileMedical\", function() { return faFileMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileMedicalAlt\", function() { return faFileMedicalAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFilePdf\", function() { return faFilePdf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFilePowerpoint\", function() { return faFilePowerpoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFilePrescription\", function() { return faFilePrescription; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileSignature\", function() { return faFileSignature; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileUpload\", function() { return faFileUpload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileVideo\", function() { return faFileVideo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFileWord\", function() { return faFileWord; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFill\", function() { return faFill; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFillDrip\", function() { return faFillDrip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFilm\", function() { return faFilm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFilter\", function() { return faFilter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFingerprint\", function() { return faFingerprint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFire\", function() { return faFire; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFireAlt\", function() { return faFireAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFireExtinguisher\", function() { return faFireExtinguisher; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFirstAid\", function() { return faFirstAid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFish\", function() { return faFish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFistRaised\", function() { return faFistRaised; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFlag\", function() { return faFlag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFlagCheckered\", function() { return faFlagCheckered; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFlagUsa\", function() { return faFlagUsa; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFlask\", function() { return faFlask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFlushed\", function() { return faFlushed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFolder\", function() { return faFolder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFolderMinus\", function() { return faFolderMinus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFolderOpen\", function() { return faFolderOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFolderPlus\", function() { return faFolderPlus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFont\", function() { return faFont; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFontAwesomeLogoFull\", function() { return faFontAwesomeLogoFull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFootballBall\", function() { return faFootballBall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faForward\", function() { return faForward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFrog\", function() { return faFrog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFrown\", function() { return faFrown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFrownOpen\", function() { return faFrownOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFunnelDollar\", function() { return faFunnelDollar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faFutbol\", function() { return faFutbol; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGamepad\", function() { return faGamepad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGasPump\", function() { return faGasPump; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGavel\", function() { return faGavel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGem\", function() { return faGem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGenderless\", function() { return faGenderless; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGhost\", function() { return faGhost; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGift\", function() { return faGift; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGifts\", function() { return faGifts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlassCheers\", function() { return faGlassCheers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlassMartini\", function() { return faGlassMartini; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlassMartiniAlt\", function() { return faGlassMartiniAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlassWhiskey\", function() { return faGlassWhiskey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlasses\", function() { return faGlasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlobe\", function() { return faGlobe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlobeAfrica\", function() { return faGlobeAfrica; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlobeAmericas\", function() { return faGlobeAmericas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlobeAsia\", function() { return faGlobeAsia; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGlobeEurope\", function() { return faGlobeEurope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGolfBall\", function() { return faGolfBall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGopuram\", function() { return faGopuram; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGraduationCap\", function() { return faGraduationCap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGreaterThan\", function() { return faGreaterThan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGreaterThanEqual\", function() { return faGreaterThanEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrimace\", function() { return faGrimace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrin\", function() { return faGrin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinAlt\", function() { return faGrinAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinBeam\", function() { return faGrinBeam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinBeamSweat\", function() { return faGrinBeamSweat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinHearts\", function() { return faGrinHearts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinSquint\", function() { return faGrinSquint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinSquintTears\", function() { return faGrinSquintTears; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinStars\", function() { return faGrinStars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinTears\", function() { return faGrinTears; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinTongue\", function() { return faGrinTongue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinTongueSquint\", function() { return faGrinTongueSquint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinTongueWink\", function() { return faGrinTongueWink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGrinWink\", function() { return faGrinWink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGripHorizontal\", function() { return faGripHorizontal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGripLines\", function() { return faGripLines; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGripLinesVertical\", function() { return faGripLinesVertical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGripVertical\", function() { return faGripVertical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faGuitar\", function() { return faGuitar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHSquare\", function() { return faHSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHamburger\", function() { return faHamburger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHammer\", function() { return faHammer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHamsa\", function() { return faHamsa; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandHolding\", function() { return faHandHolding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandHoldingHeart\", function() { return faHandHoldingHeart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandHoldingMedical\", function() { return faHandHoldingMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandHoldingUsd\", function() { return faHandHoldingUsd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandHoldingWater\", function() { return faHandHoldingWater; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandLizard\", function() { return faHandLizard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandMiddleFinger\", function() { return faHandMiddleFinger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPaper\", function() { return faHandPaper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPeace\", function() { return faHandPeace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointDown\", function() { return faHandPointDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointLeft\", function() { return faHandPointLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointRight\", function() { return faHandPointRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointUp\", function() { return faHandPointUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandPointer\", function() { return faHandPointer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandRock\", function() { return faHandRock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandScissors\", function() { return faHandScissors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandSparkles\", function() { return faHandSparkles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandSpock\", function() { return faHandSpock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHands\", function() { return faHands; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandsHelping\", function() { return faHandsHelping; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandsWash\", function() { return faHandsWash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandshake\", function() { return faHandshake; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandshakeAltSlash\", function() { return faHandshakeAltSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHandshakeSlash\", function() { return faHandshakeSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHanukiah\", function() { return faHanukiah; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHardHat\", function() { return faHardHat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHashtag\", function() { return faHashtag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHatCowboy\", function() { return faHatCowboy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHatCowboySide\", function() { return faHatCowboySide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHatWizard\", function() { return faHatWizard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHdd\", function() { return faHdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeadSideCough\", function() { return faHeadSideCough; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeadSideCoughSlash\", function() { return faHeadSideCoughSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeadSideMask\", function() { return faHeadSideMask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeadSideVirus\", function() { return faHeadSideVirus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeading\", function() { return faHeading; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeadphones\", function() { return faHeadphones; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeadphonesAlt\", function() { return faHeadphonesAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeadset\", function() { return faHeadset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeart\", function() { return faHeart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeartBroken\", function() { return faHeartBroken; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHeartbeat\", function() { return faHeartbeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHelicopter\", function() { return faHelicopter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHighlighter\", function() { return faHighlighter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHiking\", function() { return faHiking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHippo\", function() { return faHippo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHistory\", function() { return faHistory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHockeyPuck\", function() { return faHockeyPuck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHollyBerry\", function() { return faHollyBerry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHome\", function() { return faHome; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHorse\", function() { return faHorse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHorseHead\", function() { return faHorseHead; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHospital\", function() { return faHospital; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHospitalAlt\", function() { return faHospitalAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHospitalSymbol\", function() { return faHospitalSymbol; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHospitalUser\", function() { return faHospitalUser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHotTub\", function() { return faHotTub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHotdog\", function() { return faHotdog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHotel\", function() { return faHotel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHourglass\", function() { return faHourglass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHourglassEnd\", function() { return faHourglassEnd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHourglassHalf\", function() { return faHourglassHalf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHourglassStart\", function() { return faHourglassStart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHouseDamage\", function() { return faHouseDamage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHouseUser\", function() { return faHouseUser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faHryvnia\", function() { return faHryvnia; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faICursor\", function() { return faICursor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIceCream\", function() { return faIceCream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIcicles\", function() { return faIcicles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIcons\", function() { return faIcons; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIdBadge\", function() { return faIdBadge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIdCard\", function() { return faIdCard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIdCardAlt\", function() { return faIdCardAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIgloo\", function() { return faIgloo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faImage\", function() { return faImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faImages\", function() { return faImages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faInbox\", function() { return faInbox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIndent\", function() { return faIndent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faIndustry\", function() { return faIndustry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faInfinity\", function() { return faInfinity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faInfo\", function() { return faInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faInfoCircle\", function() { return faInfoCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faItalic\", function() { return faItalic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faJedi\", function() { return faJedi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faJoint\", function() { return faJoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faJournalWhills\", function() { return faJournalWhills; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKaaba\", function() { return faKaaba; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKey\", function() { return faKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKeyboard\", function() { return faKeyboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKhanda\", function() { return faKhanda; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKiss\", function() { return faKiss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKissBeam\", function() { return faKissBeam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKissWinkHeart\", function() { return faKissWinkHeart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faKiwiBird\", function() { return faKiwiBird; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLandmark\", function() { return faLandmark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLanguage\", function() { return faLanguage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaptop\", function() { return faLaptop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaptopCode\", function() { return faLaptopCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaptopHouse\", function() { return faLaptopHouse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaptopMedical\", function() { return faLaptopMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaugh\", function() { return faLaugh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaughBeam\", function() { return faLaughBeam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaughSquint\", function() { return faLaughSquint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLaughWink\", function() { return faLaughWink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLayerGroup\", function() { return faLayerGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLeaf\", function() { return faLeaf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLemon\", function() { return faLemon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLessThan\", function() { return faLessThan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLessThanEqual\", function() { return faLessThanEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLevelDownAlt\", function() { return faLevelDownAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLevelUpAlt\", function() { return faLevelUpAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLifeRing\", function() { return faLifeRing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLightbulb\", function() { return faLightbulb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLink\", function() { return faLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLiraSign\", function() { return faLiraSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faList\", function() { return faList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faListAlt\", function() { return faListAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faListOl\", function() { return faListOl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faListUl\", function() { return faListUl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLocationArrow\", function() { return faLocationArrow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLock\", function() { return faLock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLockOpen\", function() { return faLockOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLongArrowAltDown\", function() { return faLongArrowAltDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLongArrowAltLeft\", function() { return faLongArrowAltLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLongArrowAltRight\", function() { return faLongArrowAltRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLongArrowAltUp\", function() { return faLongArrowAltUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLowVision\", function() { return faLowVision; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLuggageCart\", function() { return faLuggageCart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLungs\", function() { return faLungs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faLungsVirus\", function() { return faLungsVirus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMagic\", function() { return faMagic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMagnet\", function() { return faMagnet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMailBulk\", function() { return faMailBulk; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMale\", function() { return faMale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMap\", function() { return faMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMapMarked\", function() { return faMapMarked; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMapMarkedAlt\", function() { return faMapMarkedAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMapMarker\", function() { return faMapMarker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMapMarkerAlt\", function() { return faMapMarkerAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMapPin\", function() { return faMapPin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMapSigns\", function() { return faMapSigns; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMarker\", function() { return faMarker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMars\", function() { return faMars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMarsDouble\", function() { return faMarsDouble; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMarsStroke\", function() { return faMarsStroke; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMarsStrokeH\", function() { return faMarsStrokeH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMarsStrokeV\", function() { return faMarsStrokeV; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMask\", function() { return faMask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMedal\", function() { return faMedal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMedkit\", function() { return faMedkit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMeh\", function() { return faMeh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMehBlank\", function() { return faMehBlank; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMehRollingEyes\", function() { return faMehRollingEyes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMemory\", function() { return faMemory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMenorah\", function() { return faMenorah; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMercury\", function() { return faMercury; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMeteor\", function() { return faMeteor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMicrochip\", function() { return faMicrochip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMicrophone\", function() { return faMicrophone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMicrophoneAlt\", function() { return faMicrophoneAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMicrophoneAltSlash\", function() { return faMicrophoneAltSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMicrophoneSlash\", function() { return faMicrophoneSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMicroscope\", function() { return faMicroscope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMinus\", function() { return faMinus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMinusCircle\", function() { return faMinusCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMinusSquare\", function() { return faMinusSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMitten\", function() { return faMitten; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMobile\", function() { return faMobile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMobileAlt\", function() { return faMobileAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoneyBill\", function() { return faMoneyBill; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoneyBillAlt\", function() { return faMoneyBillAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoneyBillWave\", function() { return faMoneyBillWave; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoneyBillWaveAlt\", function() { return faMoneyBillWaveAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoneyCheck\", function() { return faMoneyCheck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoneyCheckAlt\", function() { return faMoneyCheckAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMonument\", function() { return faMonument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMoon\", function() { return faMoon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMortarPestle\", function() { return faMortarPestle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMosque\", function() { return faMosque; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMotorcycle\", function() { return faMotorcycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMountain\", function() { return faMountain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMouse\", function() { return faMouse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMousePointer\", function() { return faMousePointer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMugHot\", function() { return faMugHot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faMusic\", function() { return faMusic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faNetworkWired\", function() { return faNetworkWired; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faNeuter\", function() { return faNeuter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faNewspaper\", function() { return faNewspaper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faNotEqual\", function() { return faNotEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faNotesMedical\", function() { return faNotesMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faObjectGroup\", function() { return faObjectGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faObjectUngroup\", function() { return faObjectUngroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faOilCan\", function() { return faOilCan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faOm\", function() { return faOm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faOtter\", function() { return faOtter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faOutdent\", function() { return faOutdent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPager\", function() { return faPager; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPaintBrush\", function() { return faPaintBrush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPaintRoller\", function() { return faPaintRoller; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPalette\", function() { return faPalette; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPallet\", function() { return faPallet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPaperPlane\", function() { return faPaperPlane; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPaperclip\", function() { return faPaperclip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faParachuteBox\", function() { return faParachuteBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faParagraph\", function() { return faParagraph; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faParking\", function() { return faParking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPassport\", function() { return faPassport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPastafarianism\", function() { return faPastafarianism; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPaste\", function() { return faPaste; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPause\", function() { return faPause; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPauseCircle\", function() { return faPauseCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPaw\", function() { return faPaw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPeace\", function() { return faPeace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPen\", function() { return faPen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPenAlt\", function() { return faPenAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPenFancy\", function() { return faPenFancy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPenNib\", function() { return faPenNib; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPenSquare\", function() { return faPenSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPencilAlt\", function() { return faPencilAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPencilRuler\", function() { return faPencilRuler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPeopleArrows\", function() { return faPeopleArrows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPeopleCarry\", function() { return faPeopleCarry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPepperHot\", function() { return faPepperHot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPercent\", function() { return faPercent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPercentage\", function() { return faPercentage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPersonBooth\", function() { return faPersonBooth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPhone\", function() { return faPhone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPhoneAlt\", function() { return faPhoneAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPhoneSlash\", function() { return faPhoneSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPhoneSquare\", function() { return faPhoneSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPhoneSquareAlt\", function() { return faPhoneSquareAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPhoneVolume\", function() { return faPhoneVolume; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPhotoVideo\", function() { return faPhotoVideo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPiggyBank\", function() { return faPiggyBank; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPills\", function() { return faPills; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPizzaSlice\", function() { return faPizzaSlice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlaceOfWorship\", function() { return faPlaceOfWorship; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlane\", function() { return faPlane; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlaneArrival\", function() { return faPlaneArrival; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlaneDeparture\", function() { return faPlaneDeparture; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlaneSlash\", function() { return faPlaneSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlay\", function() { return faPlay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlayCircle\", function() { return faPlayCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlug\", function() { return faPlug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlus\", function() { return faPlus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlusCircle\", function() { return faPlusCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPlusSquare\", function() { return faPlusSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPodcast\", function() { return faPodcast; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPoll\", function() { return faPoll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPollH\", function() { return faPollH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPoo\", function() { return faPoo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPooStorm\", function() { return faPooStorm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPoop\", function() { return faPoop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPortrait\", function() { return faPortrait; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPoundSign\", function() { return faPoundSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPowerOff\", function() { return faPowerOff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPray\", function() { return faPray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPrayingHands\", function() { return faPrayingHands; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPrescription\", function() { return faPrescription; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPrescriptionBottle\", function() { return faPrescriptionBottle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPrescriptionBottleAlt\", function() { return faPrescriptionBottleAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPrint\", function() { return faPrint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faProcedures\", function() { return faProcedures; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faProjectDiagram\", function() { return faProjectDiagram; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPumpMedical\", function() { return faPumpMedical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPumpSoap\", function() { return faPumpSoap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faPuzzlePiece\", function() { return faPuzzlePiece; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faQrcode\", function() { return faQrcode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faQuestion\", function() { return faQuestion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faQuestionCircle\", function() { return faQuestionCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faQuidditch\", function() { return faQuidditch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faQuoteLeft\", function() { return faQuoteLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faQuoteRight\", function() { return faQuoteRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faQuran\", function() { return faQuran; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRadiation\", function() { return faRadiation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRadiationAlt\", function() { return faRadiationAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRainbow\", function() { return faRainbow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRandom\", function() { return faRandom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faReceipt\", function() { return faReceipt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRecordVinyl\", function() { return faRecordVinyl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRecycle\", function() { return faRecycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRedo\", function() { return faRedo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRedoAlt\", function() { return faRedoAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRegistered\", function() { return faRegistered; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRemoveFormat\", function() { return faRemoveFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faReply\", function() { return faReply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faReplyAll\", function() { return faReplyAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRepublican\", function() { return faRepublican; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRestroom\", function() { return faRestroom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRetweet\", function() { return faRetweet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRibbon\", function() { return faRibbon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRing\", function() { return faRing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRoad\", function() { return faRoad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRobot\", function() { return faRobot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRocket\", function() { return faRocket; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRoute\", function() { return faRoute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRss\", function() { return faRss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRssSquare\", function() { return faRssSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRubleSign\", function() { return faRubleSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRuler\", function() { return faRuler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRulerCombined\", function() { return faRulerCombined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRulerHorizontal\", function() { return faRulerHorizontal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRulerVertical\", function() { return faRulerVertical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRunning\", function() { return faRunning; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faRupeeSign\", function() { return faRupeeSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSadCry\", function() { return faSadCry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSadTear\", function() { return faSadTear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSatellite\", function() { return faSatellite; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSatelliteDish\", function() { return faSatelliteDish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSave\", function() { return faSave; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSchool\", function() { return faSchool; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faScrewdriver\", function() { return faScrewdriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faScroll\", function() { return faScroll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSdCard\", function() { return faSdCard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSearch\", function() { return faSearch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSearchDollar\", function() { return faSearchDollar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSearchLocation\", function() { return faSearchLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSearchMinus\", function() { return faSearchMinus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSearchPlus\", function() { return faSearchPlus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSeedling\", function() { return faSeedling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faServer\", function() { return faServer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShapes\", function() { return faShapes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShare\", function() { return faShare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShareAlt\", function() { return faShareAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShareAltSquare\", function() { return faShareAltSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShareSquare\", function() { return faShareSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShekelSign\", function() { return faShekelSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShieldAlt\", function() { return faShieldAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShieldVirus\", function() { return faShieldVirus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShip\", function() { return faShip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShippingFast\", function() { return faShippingFast; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShoePrints\", function() { return faShoePrints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShoppingBag\", function() { return faShoppingBag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShoppingBasket\", function() { return faShoppingBasket; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShoppingCart\", function() { return faShoppingCart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShower\", function() { return faShower; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faShuttleVan\", function() { return faShuttleVan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSign\", function() { return faSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSignInAlt\", function() { return faSignInAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSignLanguage\", function() { return faSignLanguage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSignOutAlt\", function() { return faSignOutAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSignal\", function() { return faSignal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSignature\", function() { return faSignature; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSimCard\", function() { return faSimCard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSink\", function() { return faSink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSitemap\", function() { return faSitemap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSkating\", function() { return faSkating; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSkiing\", function() { return faSkiing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSkiingNordic\", function() { return faSkiingNordic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSkull\", function() { return faSkull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSkullCrossbones\", function() { return faSkullCrossbones; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSlash\", function() { return faSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSleigh\", function() { return faSleigh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSlidersH\", function() { return faSlidersH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmile\", function() { return faSmile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmileBeam\", function() { return faSmileBeam; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmileWink\", function() { return faSmileWink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmog\", function() { return faSmog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmoking\", function() { return faSmoking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSmokingBan\", function() { return faSmokingBan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSms\", function() { return faSms; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSnowboarding\", function() { return faSnowboarding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSnowflake\", function() { return faSnowflake; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSnowman\", function() { return faSnowman; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSnowplow\", function() { return faSnowplow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSoap\", function() { return faSoap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSocks\", function() { return faSocks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSolarPanel\", function() { return faSolarPanel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSort\", function() { return faSort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortAlphaDown\", function() { return faSortAlphaDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortAlphaDownAlt\", function() { return faSortAlphaDownAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortAlphaUp\", function() { return faSortAlphaUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortAlphaUpAlt\", function() { return faSortAlphaUpAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortAmountDown\", function() { return faSortAmountDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortAmountDownAlt\", function() { return faSortAmountDownAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortAmountUp\", function() { return faSortAmountUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortAmountUpAlt\", function() { return faSortAmountUpAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortDown\", function() { return faSortDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortNumericDown\", function() { return faSortNumericDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortNumericDownAlt\", function() { return faSortNumericDownAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortNumericUp\", function() { return faSortNumericUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortNumericUpAlt\", function() { return faSortNumericUpAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSortUp\", function() { return faSortUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSpa\", function() { return faSpa; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSpaceShuttle\", function() { return faSpaceShuttle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSpellCheck\", function() { return faSpellCheck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSpider\", function() { return faSpider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSpinner\", function() { return faSpinner; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSplotch\", function() { return faSplotch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSprayCan\", function() { return faSprayCan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSquare\", function() { return faSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSquareFull\", function() { return faSquareFull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSquareRootAlt\", function() { return faSquareRootAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStamp\", function() { return faStamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStar\", function() { return faStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStarAndCrescent\", function() { return faStarAndCrescent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStarHalf\", function() { return faStarHalf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStarHalfAlt\", function() { return faStarHalfAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStarOfDavid\", function() { return faStarOfDavid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStarOfLife\", function() { return faStarOfLife; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStepBackward\", function() { return faStepBackward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStepForward\", function() { return faStepForward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStethoscope\", function() { return faStethoscope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStickyNote\", function() { return faStickyNote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStop\", function() { return faStop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStopCircle\", function() { return faStopCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStopwatch\", function() { return faStopwatch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStopwatch20\", function() { return faStopwatch20; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStore\", function() { return faStore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStoreAlt\", function() { return faStoreAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStoreAltSlash\", function() { return faStoreAltSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStoreSlash\", function() { return faStoreSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStream\", function() { return faStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStreetView\", function() { return faStreetView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStrikethrough\", function() { return faStrikethrough; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faStroopwafel\", function() { return faStroopwafel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSubscript\", function() { return faSubscript; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSubway\", function() { return faSubway; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSuitcase\", function() { return faSuitcase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSuitcaseRolling\", function() { return faSuitcaseRolling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSun\", function() { return faSun; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSuperscript\", function() { return faSuperscript; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSurprise\", function() { return faSurprise; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSwatchbook\", function() { return faSwatchbook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSwimmer\", function() { return faSwimmer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSwimmingPool\", function() { return faSwimmingPool; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSynagogue\", function() { return faSynagogue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSync\", function() { return faSync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSyncAlt\", function() { return faSyncAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faSyringe\", function() { return faSyringe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTable\", function() { return faTable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTableTennis\", function() { return faTableTennis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTablet\", function() { return faTablet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTabletAlt\", function() { return faTabletAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTablets\", function() { return faTablets; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTachometerAlt\", function() { return faTachometerAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTag\", function() { return faTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTags\", function() { return faTags; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTape\", function() { return faTape; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTasks\", function() { return faTasks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTaxi\", function() { return faTaxi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTeeth\", function() { return faTeeth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTeethOpen\", function() { return faTeethOpen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTemperatureHigh\", function() { return faTemperatureHigh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTemperatureLow\", function() { return faTemperatureLow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTenge\", function() { return faTenge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTerminal\", function() { return faTerminal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTextHeight\", function() { return faTextHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTextWidth\", function() { return faTextWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTh\", function() { return faTh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThLarge\", function() { return faThLarge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThList\", function() { return faThList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTheaterMasks\", function() { return faTheaterMasks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThermometer\", function() { return faThermometer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThermometerEmpty\", function() { return faThermometerEmpty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThermometerFull\", function() { return faThermometerFull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThermometerHalf\", function() { return faThermometerHalf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThermometerQuarter\", function() { return faThermometerQuarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThermometerThreeQuarters\", function() { return faThermometerThreeQuarters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThumbsDown\", function() { return faThumbsDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThumbsUp\", function() { return faThumbsUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faThumbtack\", function() { return faThumbtack; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTicketAlt\", function() { return faTicketAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTimes\", function() { return faTimes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTimesCircle\", function() { return faTimesCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTint\", function() { return faTint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTintSlash\", function() { return faTintSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTired\", function() { return faTired; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faToggleOff\", function() { return faToggleOff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faToggleOn\", function() { return faToggleOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faToilet\", function() { return faToilet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faToiletPaper\", function() { return faToiletPaper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faToiletPaperSlash\", function() { return faToiletPaperSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faToolbox\", function() { return faToolbox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTools\", function() { return faTools; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTooth\", function() { return faTooth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTorah\", function() { return faTorah; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faToriiGate\", function() { return faToriiGate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTractor\", function() { return faTractor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrademark\", function() { return faTrademark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrafficLight\", function() { return faTrafficLight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrailer\", function() { return faTrailer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrain\", function() { return faTrain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTram\", function() { return faTram; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTransgender\", function() { return faTransgender; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTransgenderAlt\", function() { return faTransgenderAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrash\", function() { return faTrash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrashAlt\", function() { return faTrashAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrashRestore\", function() { return faTrashRestore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrashRestoreAlt\", function() { return faTrashRestoreAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTree\", function() { return faTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTrophy\", function() { return faTrophy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTruck\", function() { return faTruck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTruckLoading\", function() { return faTruckLoading; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTruckMonster\", function() { return faTruckMonster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTruckMoving\", function() { return faTruckMoving; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTruckPickup\", function() { return faTruckPickup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTshirt\", function() { return faTshirt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTty\", function() { return faTty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faTv\", function() { return faTv; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUmbrella\", function() { return faUmbrella; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUmbrellaBeach\", function() { return faUmbrellaBeach; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUnderline\", function() { return faUnderline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUndo\", function() { return faUndo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUndoAlt\", function() { return faUndoAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUniversalAccess\", function() { return faUniversalAccess; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUniversity\", function() { return faUniversity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUnlink\", function() { return faUnlink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUnlock\", function() { return faUnlock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUnlockAlt\", function() { return faUnlockAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUpload\", function() { return faUpload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUser\", function() { return faUser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserAlt\", function() { return faUserAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserAltSlash\", function() { return faUserAltSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserAstronaut\", function() { return faUserAstronaut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserCheck\", function() { return faUserCheck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserCircle\", function() { return faUserCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserClock\", function() { return faUserClock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserCog\", function() { return faUserCog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserEdit\", function() { return faUserEdit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserFriends\", function() { return faUserFriends; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserGraduate\", function() { return faUserGraduate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserInjured\", function() { return faUserInjured; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserLock\", function() { return faUserLock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserMd\", function() { return faUserMd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserMinus\", function() { return faUserMinus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserNinja\", function() { return faUserNinja; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserNurse\", function() { return faUserNurse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserPlus\", function() { return faUserPlus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserSecret\", function() { return faUserSecret; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserShield\", function() { return faUserShield; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserSlash\", function() { return faUserSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserTag\", function() { return faUserTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserTie\", function() { return faUserTie; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUserTimes\", function() { return faUserTimes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUsers\", function() { return faUsers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUsersCog\", function() { return faUsersCog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUsersSlash\", function() { return faUsersSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUtensilSpoon\", function() { return faUtensilSpoon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faUtensils\", function() { return faUtensils; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVectorSquare\", function() { return faVectorSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVenus\", function() { return faVenus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVenusDouble\", function() { return faVenusDouble; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVenusMars\", function() { return faVenusMars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVest\", function() { return faVest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVestPatches\", function() { return faVestPatches; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVial\", function() { return faVial; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVials\", function() { return faVials; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVideo\", function() { return faVideo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVideoSlash\", function() { return faVideoSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVihara\", function() { return faVihara; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVirus\", function() { return faVirus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVirusSlash\", function() { return faVirusSlash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faViruses\", function() { return faViruses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVoicemail\", function() { return faVoicemail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVolleyballBall\", function() { return faVolleyballBall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVolumeDown\", function() { return faVolumeDown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVolumeMute\", function() { return faVolumeMute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVolumeOff\", function() { return faVolumeOff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVolumeUp\", function() { return faVolumeUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVoteYea\", function() { return faVoteYea; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faVrCardboard\", function() { return faVrCardboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWalking\", function() { return faWalking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWallet\", function() { return faWallet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWarehouse\", function() { return faWarehouse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWater\", function() { return faWater; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWaveSquare\", function() { return faWaveSquare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWeight\", function() { return faWeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWeightHanging\", function() { return faWeightHanging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWheelchair\", function() { return faWheelchair; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWifi\", function() { return faWifi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWind\", function() { return faWind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWindowClose\", function() { return faWindowClose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWindowMaximize\", function() { return faWindowMaximize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWindowMinimize\", function() { return faWindowMinimize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWindowRestore\", function() { return faWindowRestore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWineBottle\", function() { return faWineBottle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWineGlass\", function() { return faWineGlass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWineGlassAlt\", function() { return faWineGlassAlt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWonSign\", function() { return faWonSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faWrench\", function() { return faWrench; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faXRay\", function() { return faXRay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faYenSign\", function() { return faYenSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"faYinYang\", function() { return faYinYang; });\n/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fas\";\nvar faAd = {\n prefix: 'fas',\n iconName: 'ad',\n icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n prefix: 'fas',\n iconName: 'adjust',\n icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n prefix: 'fas',\n iconName: 'air-freshener',\n icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n prefix: 'fas',\n iconName: 'allergies',\n icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n prefix: 'fas',\n iconName: 'ambulance',\n icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n prefix: 'fas',\n iconName: 'american-sign-language-interpreting',\n icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n prefix: 'fas',\n iconName: 'angle-double-down',\n icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n prefix: 'fas',\n iconName: 'angle-double-left',\n icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n prefix: 'fas',\n iconName: 'angle-double-right',\n icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n prefix: 'fas',\n iconName: 'angle-double-up',\n icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n prefix: 'fas',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n prefix: 'fas',\n iconName: 'apple-alt',\n icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n prefix: 'fas',\n iconName: 'archive',\n icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-circle-down',\n icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-circle-left',\n icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-circle-right',\n icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-circle-up',\n icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n prefix: 'fas',\n iconName: 'arrows-alt',\n icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n prefix: 'fas',\n iconName: 'arrows-alt-h',\n icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n prefix: 'fas',\n iconName: 'arrows-alt-v',\n icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n prefix: 'fas',\n iconName: 'assistive-listening-systems',\n icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n prefix: 'fas',\n iconName: 'atlas',\n icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n prefix: 'fas',\n iconName: 'backspace',\n icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n prefix: 'fas',\n iconName: 'balance-scale',\n icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n prefix: 'fas',\n iconName: 'balance-scale-left',\n icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n prefix: 'fas',\n iconName: 'balance-scale-right',\n icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n prefix: 'fas',\n iconName: 'band-aid',\n icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n prefix: 'fas',\n iconName: 'baseball-ball',\n icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n prefix: 'fas',\n iconName: 'basketball-ball',\n icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n prefix: 'fas',\n iconName: 'beer',\n icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n prefix: 'fas',\n iconName: 'bible',\n icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n prefix: 'fas',\n iconName: 'biking',\n icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n prefix: 'fas',\n iconName: 'birthday-cake',\n icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n prefix: 'fas',\n iconName: 'blind',\n icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n prefix: 'fas',\n iconName: 'book-dead',\n icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n prefix: 'fas',\n iconName: 'book-reader',\n icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n prefix: 'fas',\n iconName: 'border-style',\n icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n prefix: 'fas',\n iconName: 'boxes',\n icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n prefix: 'fas',\n iconName: 'broadcast-tower',\n icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n prefix: 'fas',\n iconName: 'burn',\n icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n prefix: 'fas',\n iconName: 'bus-alt',\n icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n prefix: 'fas',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n prefix: 'fas',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n prefix: 'fas',\n iconName: 'car-alt',\n icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n prefix: 'fas',\n iconName: 'car-crash',\n icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'fas',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'fas',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'fas',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'fas',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n prefix: 'fas',\n iconName: 'chalkboard-teacher',\n icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n prefix: 'fas',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n prefix: 'fas',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n prefix: 'fas',\n iconName: 'chevron-circle-down',\n icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n prefix: 'fas',\n iconName: 'chevron-circle-left',\n icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n prefix: 'fas',\n iconName: 'chevron-circle-right',\n icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n prefix: 'fas',\n iconName: 'chevron-circle-up',\n icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n prefix: 'fas',\n iconName: 'clinic-medical',\n icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n prefix: 'fas',\n iconName: 'cloud-download-alt',\n icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n prefix: 'fas',\n iconName: 'cloud-upload-alt',\n icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n prefix: 'fas',\n iconName: 'cocktail',\n icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n prefix: 'fas',\n iconName: 'coffee',\n icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n prefix: 'fas',\n iconName: 'cog',\n icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n prefix: 'fas',\n iconName: 'cogs',\n icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n prefix: 'fas',\n iconName: 'columns',\n icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n prefix: 'fas',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n prefix: 'fas',\n iconName: 'compress-alt',\n icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n prefix: 'fas',\n iconName: 'compress-arrows-alt',\n icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n prefix: 'fas',\n iconName: 'concierge-bell',\n icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n prefix: 'fas',\n iconName: 'crop-alt',\n icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n prefix: 'fas',\n iconName: 'cut',\n icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n prefix: 'fas',\n iconName: 'deaf',\n icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n prefix: 'fas',\n iconName: 'diagnoses',\n icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n prefix: 'fas',\n iconName: 'digital-tachograph',\n icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n prefix: 'fas',\n iconName: 'directions',\n icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n prefix: 'fas',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n prefix: 'fas',\n iconName: 'dolly-flatbed',\n icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n prefix: 'fas',\n iconName: 'donate',\n icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n prefix: 'fas',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n prefix: 'fas',\n iconName: 'drafting-compass',\n icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n prefix: 'fas',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n prefix: 'fas',\n iconName: 'ellipsis-h',\n icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n prefix: 'fas',\n iconName: 'ellipsis-v',\n icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n prefix: 'fas',\n iconName: 'envelope-square',\n icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n prefix: 'fas',\n iconName: 'exchange-alt',\n icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n prefix: 'fas',\n iconName: 'exclamation-circle',\n icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationTriangle = {\n prefix: 'fas',\n iconName: 'exclamation-triangle',\n icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n prefix: 'fas',\n iconName: 'expand-alt',\n icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n prefix: 'fas',\n iconName: 'expand-arrows-alt',\n icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n prefix: 'fas',\n iconName: 'external-link-alt',\n icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n prefix: 'fas',\n iconName: 'external-link-square-alt',\n icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n prefix: 'fas',\n iconName: 'fast-backward',\n icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n prefix: 'fas',\n iconName: 'fast-forward',\n icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n prefix: 'fas',\n iconName: 'feather-alt',\n icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n prefix: 'fas',\n iconName: 'female',\n icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n prefix: 'fas',\n iconName: 'fighter-jet',\n icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n prefix: 'fas',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n prefix: 'fas',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n prefix: 'fas',\n iconName: 'file-download',\n icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n prefix: 'fas',\n iconName: 'file-medical-alt',\n icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n prefix: 'fas',\n iconName: 'file-upload',\n icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n prefix: 'fas',\n iconName: 'fire-alt',\n icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n prefix: 'fas',\n iconName: 'first-aid',\n icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n prefix: 'fas',\n iconName: 'fist-raised',\n icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n prefix: 'fas',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fas',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n prefix: 'fas',\n iconName: 'football-ball',\n icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n prefix: 'fas',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n prefix: 'fas',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n prefix: 'fas',\n iconName: 'funnel-dollar',\n icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n prefix: 'fas',\n iconName: 'glass-cheers',\n icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n prefix: 'fas',\n iconName: 'glass-martini',\n icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n prefix: 'fas',\n iconName: 'glass-martini-alt',\n icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n prefix: 'fas',\n iconName: 'glass-whiskey',\n icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n prefix: 'fas',\n iconName: 'globe-africa',\n icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n prefix: 'fas',\n iconName: 'globe-americas',\n icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n prefix: 'fas',\n iconName: 'globe-asia',\n icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n prefix: 'fas',\n iconName: 'globe-europe',\n icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n prefix: 'fas',\n iconName: 'golf-ball',\n icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n prefix: 'fas',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n prefix: 'fas',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n prefix: 'fas',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'fas',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'grin-beam-sweat',\n icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n prefix: 'fas',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n prefix: 'fas',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'fas',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n prefix: 'fas',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n prefix: 'fas',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n prefix: 'fas',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'fas',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n prefix: 'fas',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n prefix: 'fas',\n iconName: 'grip-horizontal',\n icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n prefix: 'fas',\n iconName: 'h-square',\n icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n prefix: 'fas',\n iconName: 'hamburger',\n icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n prefix: 'fas',\n iconName: 'hand-holding-usd',\n icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n prefix: 'fas',\n iconName: 'hand-holding-water',\n icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n prefix: 'fas',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n prefix: 'fas',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n prefix: 'fas',\n iconName: 'hands-helping',\n icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n prefix: 'fas',\n iconName: 'hands-wash',\n icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n prefix: 'fas',\n iconName: 'handshake-alt-slash',\n icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n prefix: 'fas',\n iconName: 'hard-hat',\n icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n prefix: 'fas',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n prefix: 'fas',\n iconName: 'headphones-alt',\n icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n prefix: 'fas',\n iconName: 'heart-broken',\n icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n prefix: 'fas',\n iconName: 'heartbeat',\n icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n prefix: 'fas',\n iconName: 'hiking',\n icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n prefix: 'fas',\n iconName: 'history',\n icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n prefix: 'fas',\n iconName: 'home',\n icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n prefix: 'fas',\n iconName: 'hospital-alt',\n icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n prefix: 'fas',\n iconName: 'hospital-symbol',\n icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n prefix: 'fas',\n iconName: 'hot-tub',\n icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n prefix: 'fas',\n iconName: 'house-damage',\n icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n prefix: 'fas',\n iconName: 'hryvnia',\n icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n prefix: 'fas',\n iconName: 'id-card-alt',\n icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n prefix: 'fas',\n iconName: 'info-circle',\n icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n prefix: 'fas',\n iconName: 'journal-whills',\n icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n prefix: 'fas',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n prefix: 'fas',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'fas',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n prefix: 'fas',\n iconName: 'laptop-house',\n icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n prefix: 'fas',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n prefix: 'fas',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n prefix: 'fas',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n prefix: 'fas',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n prefix: 'fas',\n iconName: 'level-down-alt',\n icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n prefix: 'fas',\n iconName: 'level-up-alt',\n icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n prefix: 'fas',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-down',\n icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-left',\n icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-right',\n icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-up',\n icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n prefix: 'fas',\n iconName: 'low-vision',\n icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n prefix: 'fas',\n iconName: 'luggage-cart',\n icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n prefix: 'fas',\n iconName: 'magic',\n icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n prefix: 'fas',\n iconName: 'mail-bulk',\n icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n prefix: 'fas',\n iconName: 'male',\n icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n prefix: 'fas',\n iconName: 'map-marked',\n icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n prefix: 'fas',\n iconName: 'map-marked-alt',\n icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n prefix: 'fas',\n iconName: 'map-marker',\n icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n prefix: 'fas',\n iconName: 'map-marker-alt',\n icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n prefix: 'fas',\n iconName: 'map-signs',\n icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n prefix: 'fas',\n iconName: 'mars-stroke-h',\n icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n prefix: 'fas',\n iconName: 'mars-stroke-v',\n icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n prefix: 'fas',\n iconName: 'medkit',\n icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n prefix: 'fas',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n prefix: 'fas',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'fas',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n prefix: 'fas',\n iconName: 'microphone-alt',\n icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n prefix: 'fas',\n iconName: 'microphone-alt-slash',\n icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n prefix: 'fas',\n iconName: 'minus-circle',\n icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n prefix: 'fas',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n prefix: 'fas',\n iconName: 'mobile-alt',\n icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'fas',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n prefix: 'fas',\n iconName: 'money-bill-wave-alt',\n icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n prefix: 'fas',\n iconName: 'money-check-alt',\n icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n prefix: 'fas',\n iconName: 'mouse',\n icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n prefix: 'fas',\n iconName: 'mouse-pointer',\n icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n prefix: 'fas',\n iconName: 'paint-brush',\n icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n prefix: 'fas',\n iconName: 'parking',\n icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n prefix: 'fas',\n iconName: 'pastafarianism',\n icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n prefix: 'fas',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n prefix: 'fas',\n iconName: 'pen-alt',\n icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n prefix: 'fas',\n iconName: 'pen-square',\n icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n prefix: 'fas',\n iconName: 'pencil-alt',\n icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n prefix: 'fas',\n iconName: 'pencil-ruler',\n icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n prefix: 'fas',\n iconName: 'people-carry',\n icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n prefix: 'fas',\n iconName: 'percentage',\n icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n prefix: 'fas',\n iconName: 'phone-alt',\n icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n prefix: 'fas',\n iconName: 'phone-square',\n icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n prefix: 'fas',\n iconName: 'phone-square-alt',\n icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n prefix: 'fas',\n iconName: 'photo-video',\n icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n prefix: 'fas',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n prefix: 'fas',\n iconName: 'plus-circle',\n icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n prefix: 'fas',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n prefix: 'fas',\n iconName: 'poll',\n icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n prefix: 'fas',\n iconName: 'poll-h',\n icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n prefix: 'fas',\n iconName: 'portrait',\n icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n prefix: 'fas',\n iconName: 'pound-sign',\n icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n prefix: 'fas',\n iconName: 'pray',\n icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n prefix: 'fas',\n iconName: 'praying-hands',\n icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n prefix: 'fas',\n iconName: 'prescription-bottle-alt',\n icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n prefix: 'fas',\n iconName: 'procedures',\n icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n prefix: 'fas',\n iconName: 'project-diagram',\n icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n prefix: 'fas',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n prefix: 'fas',\n iconName: 'quidditch',\n icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n prefix: 'fas',\n iconName: 'quran',\n icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n prefix: 'fas',\n iconName: 'radiation-alt',\n icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n prefix: 'fas',\n iconName: 'random',\n icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n prefix: 'fas',\n iconName: 'redo',\n icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n prefix: 'fas',\n iconName: 'redo-alt',\n icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n prefix: 'fas',\n iconName: 'remove-format',\n icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n prefix: 'fas',\n iconName: 'rss-square',\n icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n prefix: 'fas',\n iconName: 'running',\n icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n prefix: 'fas',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n prefix: 'fas',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n prefix: 'fas',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n prefix: 'fas',\n iconName: 'search',\n icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n prefix: 'fas',\n iconName: 'search-dollar',\n icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n prefix: 'fas',\n iconName: 'search-location',\n icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n prefix: 'fas',\n iconName: 'search-minus',\n icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n prefix: 'fas',\n iconName: 'search-plus',\n icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n prefix: 'fas',\n iconName: 'share-alt',\n icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n prefix: 'fas',\n iconName: 'share-alt-square',\n icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n prefix: 'fas',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n prefix: 'fas',\n iconName: 'shield-alt',\n icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n prefix: 'fas',\n iconName: 'shipping-fast',\n icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n prefix: 'fas',\n iconName: 'shopping-bag',\n icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n prefix: 'fas',\n iconName: 'shopping-basket',\n icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n prefix: 'fas',\n iconName: 'shopping-cart',\n icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n prefix: 'fas',\n iconName: 'shuttle-van',\n icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n prefix: 'fas',\n iconName: 'sign',\n icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n prefix: 'fas',\n iconName: 'sign-in-alt',\n icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n prefix: 'fas',\n iconName: 'sign-language',\n icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n prefix: 'fas',\n iconName: 'sign-out-alt',\n icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n prefix: 'fas',\n iconName: 'skating',\n icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n prefix: 'fas',\n iconName: 'skiing',\n icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n prefix: 'fas',\n iconName: 'skiing-nordic',\n icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n prefix: 'fas',\n iconName: 'sliders-h',\n icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n prefix: 'fas',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n prefix: 'fas',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n prefix: 'fas',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n prefix: 'fas',\n iconName: 'smoking-ban',\n icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n prefix: 'fas',\n iconName: 'sms',\n icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n prefix: 'fas',\n iconName: 'snowboarding',\n icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n prefix: 'fas',\n iconName: 'sort-alpha-down',\n icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-down-alt',\n icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n prefix: 'fas',\n iconName: 'sort-alpha-up',\n icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-up-alt',\n icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n prefix: 'fas',\n iconName: 'sort-amount-down',\n icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-down-alt',\n icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n prefix: 'fas',\n iconName: 'sort-amount-up',\n icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-up-alt',\n icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n prefix: 'fas',\n iconName: 'sort-numeric-down',\n icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-down-alt',\n icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n prefix: 'fas',\n iconName: 'sort-numeric-up',\n icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-up-alt',\n icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n prefix: 'fas',\n iconName: 'space-shuttle',\n icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n prefix: 'fas',\n iconName: 'square-root-alt',\n icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n prefix: 'fas',\n iconName: 'star-half-alt',\n icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n prefix: 'fas',\n iconName: 'step-backward',\n icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n prefix: 'fas',\n iconName: 'step-forward',\n icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n prefix: 'fas',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n prefix: 'fas',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n prefix: 'fas',\n iconName: 'store-alt',\n icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n prefix: 'fas',\n iconName: 'store-alt-slash',\n icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n prefix: 'fas',\n iconName: 'stream',\n icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n prefix: 'fas',\n iconName: 'subway',\n icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n prefix: 'fas',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n prefix: 'fas',\n iconName: 'swimmer',\n icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n prefix: 'fas',\n iconName: 'swimming-pool',\n icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n prefix: 'fas',\n iconName: 'sync',\n icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n prefix: 'fas',\n iconName: 'sync-alt',\n icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n prefix: 'fas',\n iconName: 'table-tennis',\n icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n prefix: 'fas',\n iconName: 'tablet-alt',\n icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n prefix: 'fas',\n iconName: 'tachometer-alt',\n icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n prefix: 'fas',\n iconName: 'tasks',\n icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n prefix: 'fas',\n iconName: 'tenge',\n icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n prefix: 'fas',\n iconName: 'th',\n icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n prefix: 'fas',\n iconName: 'th-large',\n icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n prefix: 'fas',\n iconName: 'th-list',\n icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n prefix: 'fas',\n iconName: 'theater-masks',\n icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n prefix: 'fas',\n iconName: 'thermometer-empty',\n icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n prefix: 'fas',\n iconName: 'thermometer-full',\n icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n prefix: 'fas',\n iconName: 'thermometer-half',\n icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n prefix: 'fas',\n iconName: 'thermometer-quarter',\n icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n prefix: 'fas',\n iconName: 'thermometer-three-quarters',\n icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n prefix: 'fas',\n iconName: 'ticket-alt',\n icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n prefix: 'fas',\n iconName: 'times',\n icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n prefix: 'fas',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n prefix: 'fas',\n iconName: 'tint',\n icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n prefix: 'fas',\n iconName: 'tint-slash',\n icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n prefix: 'fas',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n prefix: 'fas',\n iconName: 'tools',\n icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n prefix: 'fas',\n iconName: 'torah',\n icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n prefix: 'fas',\n iconName: 'tram',\n icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n prefix: 'fas',\n iconName: 'transgender-alt',\n icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n prefix: 'fas',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n prefix: 'fas',\n iconName: 'trash-restore',\n icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n prefix: 'fas',\n iconName: 'trash-restore-alt',\n icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n prefix: 'fas',\n iconName: 'truck-loading',\n icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n prefix: 'fas',\n iconName: 'tshirt',\n icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n prefix: 'fas',\n iconName: 'undo',\n icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n prefix: 'fas',\n iconName: 'undo-alt',\n icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n prefix: 'fas',\n iconName: 'university',\n icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n prefix: 'fas',\n iconName: 'unlink',\n icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n prefix: 'fas',\n iconName: 'unlock-alt',\n icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n prefix: 'fas',\n iconName: 'user-alt',\n icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n prefix: 'fas',\n iconName: 'user-alt-slash',\n icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n prefix: 'fas',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n prefix: 'fas',\n iconName: 'user-cog',\n icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n prefix: 'fas',\n iconName: 'user-edit',\n icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n prefix: 'fas',\n iconName: 'user-friends',\n icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n prefix: 'fas',\n iconName: 'user-md',\n icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n prefix: 'fas',\n iconName: 'user-times',\n icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n prefix: 'fas',\n iconName: 'users-cog',\n icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n prefix: 'fas',\n iconName: 'utensil-spoon',\n icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n prefix: 'fas',\n iconName: 'volleyball-ball',\n icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n prefix: 'fas',\n iconName: 'volume-down',\n icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n prefix: 'fas',\n iconName: 'volume-mute',\n icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n prefix: 'fas',\n iconName: 'volume-up',\n icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n prefix: 'fas',\n iconName: 'vote-yea',\n icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n prefix: 'fas',\n iconName: 'walking',\n icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n prefix: 'fas',\n iconName: 'weight',\n icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n prefix: 'fas',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n prefix: 'fas',\n iconName: 'wine-glass-alt',\n icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n faAd: faAd,\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAdjust: faAdjust,\n faAirFreshener: faAirFreshener,\n faAlignCenter: faAlignCenter,\n faAlignJustify: faAlignJustify,\n faAlignLeft: faAlignLeft,\n faAlignRight: faAlignRight,\n faAllergies: faAllergies,\n faAmbulance: faAmbulance,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAnchor: faAnchor,\n faAngleDoubleDown: faAngleDoubleDown,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faAngleDoubleRight: faAngleDoubleRight,\n faAngleDoubleUp: faAngleDoubleUp,\n faAngleDown: faAngleDown,\n faAngleLeft: faAngleLeft,\n faAngleRight: faAngleRight,\n faAngleUp: faAngleUp,\n faAngry: faAngry,\n faAnkh: faAnkh,\n faAppleAlt: faAppleAlt,\n faArchive: faArchive,\n faArchway: faArchway,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faArrowCircleDown: faArrowCircleDown,\n faArrowCircleLeft: faArrowCircleLeft,\n faArrowCircleRight: faArrowCircleRight,\n faArrowCircleUp: faArrowCircleUp,\n faArrowDown: faArrowDown,\n faArrowLeft: faArrowLeft,\n faArrowRight: faArrowRight,\n faArrowUp: faArrowUp,\n faArrowsAlt: faArrowsAlt,\n faArrowsAltH: faArrowsAltH,\n faArrowsAltV: faArrowsAltV,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faAsterisk: faAsterisk,\n faAt: faAt,\n faAtlas: faAtlas,\n faAtom: faAtom,\n faAudioDescription: faAudioDescription,\n faAward: faAward,\n faBaby: faBaby,\n faBabyCarriage: faBabyCarriage,\n faBackspace: faBackspace,\n faBackward: faBackward,\n faBacon: faBacon,\n faBacteria: faBacteria,\n faBacterium: faBacterium,\n faBahai: faBahai,\n faBalanceScale: faBalanceScale,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faBalanceScaleRight: faBalanceScaleRight,\n faBan: faBan,\n faBandAid: faBandAid,\n faBarcode: faBarcode,\n faBars: faBars,\n faBaseballBall: faBaseballBall,\n faBasketballBall: faBasketballBall,\n faBath: faBath,\n faBatteryEmpty: faBatteryEmpty,\n faBatteryFull: faBatteryFull,\n faBatteryHalf: faBatteryHalf,\n faBatteryQuarter: faBatteryQuarter,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBed: faBed,\n faBeer: faBeer,\n faBell: faBell,\n faBellSlash: faBellSlash,\n faBezierCurve: faBezierCurve,\n faBible: faBible,\n faBicycle: faBicycle,\n faBiking: faBiking,\n faBinoculars: faBinoculars,\n faBiohazard: faBiohazard,\n faBirthdayCake: faBirthdayCake,\n faBlender: faBlender,\n faBlenderPhone: faBlenderPhone,\n faBlind: faBlind,\n faBlog: faBlog,\n faBold: faBold,\n faBolt: faBolt,\n faBomb: faBomb,\n faBone: faBone,\n faBong: faBong,\n faBook: faBook,\n faBookDead: faBookDead,\n faBookMedical: faBookMedical,\n faBookOpen: faBookOpen,\n faBookReader: faBookReader,\n faBookmark: faBookmark,\n faBorderAll: faBorderAll,\n faBorderNone: faBorderNone,\n faBorderStyle: faBorderStyle,\n faBowlingBall: faBowlingBall,\n faBox: faBox,\n faBoxOpen: faBoxOpen,\n faBoxTissue: faBoxTissue,\n faBoxes: faBoxes,\n faBraille: faBraille,\n faBrain: faBrain,\n faBreadSlice: faBreadSlice,\n faBriefcase: faBriefcase,\n faBriefcaseMedical: faBriefcaseMedical,\n faBroadcastTower: faBroadcastTower,\n faBroom: faBroom,\n faBrush: faBrush,\n faBug: faBug,\n faBuilding: faBuilding,\n faBullhorn: faBullhorn,\n faBullseye: faBullseye,\n faBurn: faBurn,\n faBus: faBus,\n faBusAlt: faBusAlt,\n faBusinessTime: faBusinessTime,\n faCalculator: faCalculator,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarDay: faCalendarDay,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarTimes: faCalendarTimes,\n faCalendarWeek: faCalendarWeek,\n faCamera: faCamera,\n faCameraRetro: faCameraRetro,\n faCampground: faCampground,\n faCandyCane: faCandyCane,\n faCannabis: faCannabis,\n faCapsules: faCapsules,\n faCar: faCar,\n faCarAlt: faCarAlt,\n faCarBattery: faCarBattery,\n faCarCrash: faCarCrash,\n faCarSide: faCarSide,\n faCaravan: faCaravan,\n faCaretDown: faCaretDown,\n faCaretLeft: faCaretLeft,\n faCaretRight: faCaretRight,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faCaretUp: faCaretUp,\n faCarrot: faCarrot,\n faCartArrowDown: faCartArrowDown,\n faCartPlus: faCartPlus,\n faCashRegister: faCashRegister,\n faCat: faCat,\n faCertificate: faCertificate,\n faChair: faChair,\n faChalkboard: faChalkboard,\n faChalkboardTeacher: faChalkboardTeacher,\n faChargingStation: faChargingStation,\n faChartArea: faChartArea,\n faChartBar: faChartBar,\n faChartLine: faChartLine,\n faChartPie: faChartPie,\n faCheck: faCheck,\n faCheckCircle: faCheckCircle,\n faCheckDouble: faCheckDouble,\n faCheckSquare: faCheckSquare,\n faCheese: faCheese,\n faChess: faChess,\n faChessBishop: faChessBishop,\n faChessBoard: faChessBoard,\n faChessKing: faChessKing,\n faChessKnight: faChessKnight,\n faChessPawn: faChessPawn,\n faChessQueen: faChessQueen,\n faChessRook: faChessRook,\n faChevronCircleDown: faChevronCircleDown,\n faChevronCircleLeft: faChevronCircleLeft,\n faChevronCircleRight: faChevronCircleRight,\n faChevronCircleUp: faChevronCircleUp,\n faChevronDown: faChevronDown,\n faChevronLeft: faChevronLeft,\n faChevronRight: faChevronRight,\n faChevronUp: faChevronUp,\n faChild: faChild,\n faChurch: faChurch,\n faCircle: faCircle,\n faCircleNotch: faCircleNotch,\n faCity: faCity,\n faClinicMedical: faClinicMedical,\n faClipboard: faClipboard,\n faClipboardCheck: faClipboardCheck,\n faClipboardList: faClipboardList,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faCloud: faCloud,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faCloudMeatball: faCloudMeatball,\n faCloudMoon: faCloudMoon,\n faCloudMoonRain: faCloudMoonRain,\n faCloudRain: faCloudRain,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faCloudSun: faCloudSun,\n faCloudSunRain: faCloudSunRain,\n faCloudUploadAlt: faCloudUploadAlt,\n faCocktail: faCocktail,\n faCode: faCode,\n faCodeBranch: faCodeBranch,\n faCoffee: faCoffee,\n faCog: faCog,\n faCogs: faCogs,\n faCoins: faCoins,\n faColumns: faColumns,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentDollar: faCommentDollar,\n faCommentDots: faCommentDots,\n faCommentMedical: faCommentMedical,\n faCommentSlash: faCommentSlash,\n faComments: faComments,\n faCommentsDollar: faCommentsDollar,\n faCompactDisc: faCompactDisc,\n faCompass: faCompass,\n faCompress: faCompress,\n faCompressAlt: faCompressAlt,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faConciergeBell: faConciergeBell,\n faCookie: faCookie,\n faCookieBite: faCookieBite,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCouch: faCouch,\n faCreditCard: faCreditCard,\n faCrop: faCrop,\n faCropAlt: faCropAlt,\n faCross: faCross,\n faCrosshairs: faCrosshairs,\n faCrow: faCrow,\n faCrown: faCrown,\n faCrutch: faCrutch,\n faCube: faCube,\n faCubes: faCubes,\n faCut: faCut,\n faDatabase: faDatabase,\n faDeaf: faDeaf,\n faDemocrat: faDemocrat,\n faDesktop: faDesktop,\n faDharmachakra: faDharmachakra,\n faDiagnoses: faDiagnoses,\n faDice: faDice,\n faDiceD20: faDiceD20,\n faDiceD6: faDiceD6,\n faDiceFive: faDiceFive,\n faDiceFour: faDiceFour,\n faDiceOne: faDiceOne,\n faDiceSix: faDiceSix,\n faDiceThree: faDiceThree,\n faDiceTwo: faDiceTwo,\n faDigitalTachograph: faDigitalTachograph,\n faDirections: faDirections,\n faDisease: faDisease,\n faDivide: faDivide,\n faDizzy: faDizzy,\n faDna: faDna,\n faDog: faDog,\n faDollarSign: faDollarSign,\n faDolly: faDolly,\n faDollyFlatbed: faDollyFlatbed,\n faDonate: faDonate,\n faDoorClosed: faDoorClosed,\n faDoorOpen: faDoorOpen,\n faDotCircle: faDotCircle,\n faDove: faDove,\n faDownload: faDownload,\n faDraftingCompass: faDraftingCompass,\n faDragon: faDragon,\n faDrawPolygon: faDrawPolygon,\n faDrum: faDrum,\n faDrumSteelpan: faDrumSteelpan,\n faDrumstickBite: faDrumstickBite,\n faDumbbell: faDumbbell,\n faDumpster: faDumpster,\n faDumpsterFire: faDumpsterFire,\n faDungeon: faDungeon,\n faEdit: faEdit,\n faEgg: faEgg,\n faEject: faEject,\n faEllipsisH: faEllipsisH,\n faEllipsisV: faEllipsisV,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faEnvelopeSquare: faEnvelopeSquare,\n faEquals: faEquals,\n faEraser: faEraser,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faExchangeAlt: faExchangeAlt,\n faExclamation: faExclamation,\n faExclamationCircle: faExclamationCircle,\n faExclamationTriangle: faExclamationTriangle,\n faExpand: faExpand,\n faExpandAlt: faExpandAlt,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faExternalLinkAlt: faExternalLinkAlt,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faEye: faEye,\n faEyeDropper: faEyeDropper,\n faEyeSlash: faEyeSlash,\n faFan: faFan,\n faFastBackward: faFastBackward,\n faFastForward: faFastForward,\n faFaucet: faFaucet,\n faFax: faFax,\n faFeather: faFeather,\n faFeatherAlt: faFeatherAlt,\n faFemale: faFemale,\n faFighterJet: faFighterJet,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCode: faFileCode,\n faFileContract: faFileContract,\n faFileCsv: faFileCsv,\n faFileDownload: faFileDownload,\n faFileExcel: faFileExcel,\n faFileExport: faFileExport,\n faFileImage: faFileImage,\n faFileImport: faFileImport,\n faFileInvoice: faFileInvoice,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faFileMedical: faFileMedical,\n faFileMedicalAlt: faFileMedicalAlt,\n faFilePdf: faFilePdf,\n faFilePowerpoint: faFilePowerpoint,\n faFilePrescription: faFilePrescription,\n faFileSignature: faFileSignature,\n faFileUpload: faFileUpload,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFill: faFill,\n faFillDrip: faFillDrip,\n faFilm: faFilm,\n faFilter: faFilter,\n faFingerprint: faFingerprint,\n faFire: faFire,\n faFireAlt: faFireAlt,\n faFireExtinguisher: faFireExtinguisher,\n faFirstAid: faFirstAid,\n faFish: faFish,\n faFistRaised: faFistRaised,\n faFlag: faFlag,\n faFlagCheckered: faFlagCheckered,\n faFlagUsa: faFlagUsa,\n faFlask: faFlask,\n faFlushed: faFlushed,\n faFolder: faFolder,\n faFolderMinus: faFolderMinus,\n faFolderOpen: faFolderOpen,\n faFolderPlus: faFolderPlus,\n faFont: faFont,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFootballBall: faFootballBall,\n faForward: faForward,\n faFrog: faFrog,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFunnelDollar: faFunnelDollar,\n faFutbol: faFutbol,\n faGamepad: faGamepad,\n faGasPump: faGasPump,\n faGavel: faGavel,\n faGem: faGem,\n faGenderless: faGenderless,\n faGhost: faGhost,\n faGift: faGift,\n faGifts: faGifts,\n faGlassCheers: faGlassCheers,\n faGlassMartini: faGlassMartini,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faGlassWhiskey: faGlassWhiskey,\n faGlasses: faGlasses,\n faGlobe: faGlobe,\n faGlobeAfrica: faGlobeAfrica,\n faGlobeAmericas: faGlobeAmericas,\n faGlobeAsia: faGlobeAsia,\n faGlobeEurope: faGlobeEurope,\n faGolfBall: faGolfBall,\n faGopuram: faGopuram,\n faGraduationCap: faGraduationCap,\n faGreaterThan: faGreaterThan,\n faGreaterThanEqual: faGreaterThanEqual,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faGripHorizontal: faGripHorizontal,\n faGripLines: faGripLines,\n faGripLinesVertical: faGripLinesVertical,\n faGripVertical: faGripVertical,\n faGuitar: faGuitar,\n faHSquare: faHSquare,\n faHamburger: faHamburger,\n faHammer: faHammer,\n faHamsa: faHamsa,\n faHandHolding: faHandHolding,\n faHandHoldingHeart: faHandHoldingHeart,\n faHandHoldingMedical: faHandHoldingMedical,\n faHandHoldingUsd: faHandHoldingUsd,\n faHandHoldingWater: faHandHoldingWater,\n faHandLizard: faHandLizard,\n faHandMiddleFinger: faHandMiddleFinger,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSparkles: faHandSparkles,\n faHandSpock: faHandSpock,\n faHands: faHands,\n faHandsHelping: faHandsHelping,\n faHandsWash: faHandsWash,\n faHandshake: faHandshake,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faHandshakeSlash: faHandshakeSlash,\n faHanukiah: faHanukiah,\n faHardHat: faHardHat,\n faHashtag: faHashtag,\n faHatCowboy: faHatCowboy,\n faHatCowboySide: faHatCowboySide,\n faHatWizard: faHatWizard,\n faHdd: faHdd,\n faHeadSideCough: faHeadSideCough,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faHeadSideMask: faHeadSideMask,\n faHeadSideVirus: faHeadSideVirus,\n faHeading: faHeading,\n faHeadphones: faHeadphones,\n faHeadphonesAlt: faHeadphonesAlt,\n faHeadset: faHeadset,\n faHeart: faHeart,\n faHeartBroken: faHeartBroken,\n faHeartbeat: faHeartbeat,\n faHelicopter: faHelicopter,\n faHighlighter: faHighlighter,\n faHiking: faHiking,\n faHippo: faHippo,\n faHistory: faHistory,\n faHockeyPuck: faHockeyPuck,\n faHollyBerry: faHollyBerry,\n faHome: faHome,\n faHorse: faHorse,\n faHorseHead: faHorseHead,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalSymbol: faHospitalSymbol,\n faHospitalUser: faHospitalUser,\n faHotTub: faHotTub,\n faHotdog: faHotdog,\n faHotel: faHotel,\n faHourglass: faHourglass,\n faHourglassEnd: faHourglassEnd,\n faHourglassHalf: faHourglassHalf,\n faHourglassStart: faHourglassStart,\n faHouseDamage: faHouseDamage,\n faHouseUser: faHouseUser,\n faHryvnia: faHryvnia,\n faICursor: faICursor,\n faIceCream: faIceCream,\n faIcicles: faIcicles,\n faIcons: faIcons,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faIdCardAlt: faIdCardAlt,\n faIgloo: faIgloo,\n faImage: faImage,\n faImages: faImages,\n faInbox: faInbox,\n faIndent: faIndent,\n faIndustry: faIndustry,\n faInfinity: faInfinity,\n faInfo: faInfo,\n faInfoCircle: faInfoCircle,\n faItalic: faItalic,\n faJedi: faJedi,\n faJoint: faJoint,\n faJournalWhills: faJournalWhills,\n faKaaba: faKaaba,\n faKey: faKey,\n faKeyboard: faKeyboard,\n faKhanda: faKhanda,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faKiwiBird: faKiwiBird,\n faLandmark: faLandmark,\n faLanguage: faLanguage,\n faLaptop: faLaptop,\n faLaptopCode: faLaptopCode,\n faLaptopHouse: faLaptopHouse,\n faLaptopMedical: faLaptopMedical,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLayerGroup: faLayerGroup,\n faLeaf: faLeaf,\n faLemon: faLemon,\n faLessThan: faLessThan,\n faLessThanEqual: faLessThanEqual,\n faLevelDownAlt: faLevelDownAlt,\n faLevelUpAlt: faLevelUpAlt,\n faLifeRing: faLifeRing,\n faLightbulb: faLightbulb,\n faLink: faLink,\n faLiraSign: faLiraSign,\n faList: faList,\n faListAlt: faListAlt,\n faListOl: faListOl,\n faListUl: faListUl,\n faLocationArrow: faLocationArrow,\n faLock: faLock,\n faLockOpen: faLockOpen,\n faLongArrowAltDown: faLongArrowAltDown,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faLongArrowAltRight: faLongArrowAltRight,\n faLongArrowAltUp: faLongArrowAltUp,\n faLowVision: faLowVision,\n faLuggageCart: faLuggageCart,\n faLungs: faLungs,\n faLungsVirus: faLungsVirus,\n faMagic: faMagic,\n faMagnet: faMagnet,\n faMailBulk: faMailBulk,\n faMale: faMale,\n faMap: faMap,\n faMapMarked: faMapMarked,\n faMapMarkedAlt: faMapMarkedAlt,\n faMapMarker: faMapMarker,\n faMapMarkerAlt: faMapMarkerAlt,\n faMapPin: faMapPin,\n faMapSigns: faMapSigns,\n faMarker: faMarker,\n faMars: faMars,\n faMarsDouble: faMarsDouble,\n faMarsStroke: faMarsStroke,\n faMarsStrokeH: faMarsStrokeH,\n faMarsStrokeV: faMarsStrokeV,\n faMask: faMask,\n faMedal: faMedal,\n faMedkit: faMedkit,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMemory: faMemory,\n faMenorah: faMenorah,\n faMercury: faMercury,\n faMeteor: faMeteor,\n faMicrochip: faMicrochip,\n faMicrophone: faMicrophone,\n faMicrophoneAlt: faMicrophoneAlt,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faMicrophoneSlash: faMicrophoneSlash,\n faMicroscope: faMicroscope,\n faMinus: faMinus,\n faMinusCircle: faMinusCircle,\n faMinusSquare: faMinusSquare,\n faMitten: faMitten,\n faMobile: faMobile,\n faMobileAlt: faMobileAlt,\n faMoneyBill: faMoneyBill,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoneyBillWave: faMoneyBillWave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faMoneyCheck: faMoneyCheck,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faMonument: faMonument,\n faMoon: faMoon,\n faMortarPestle: faMortarPestle,\n faMosque: faMosque,\n faMotorcycle: faMotorcycle,\n faMountain: faMountain,\n faMouse: faMouse,\n faMousePointer: faMousePointer,\n faMugHot: faMugHot,\n faMusic: faMusic,\n faNetworkWired: faNetworkWired,\n faNeuter: faNeuter,\n faNewspaper: faNewspaper,\n faNotEqual: faNotEqual,\n faNotesMedical: faNotesMedical,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faOilCan: faOilCan,\n faOm: faOm,\n faOtter: faOtter,\n faOutdent: faOutdent,\n faPager: faPager,\n faPaintBrush: faPaintBrush,\n faPaintRoller: faPaintRoller,\n faPalette: faPalette,\n faPallet: faPallet,\n faPaperPlane: faPaperPlane,\n faPaperclip: faPaperclip,\n faParachuteBox: faParachuteBox,\n faParagraph: faParagraph,\n faParking: faParking,\n faPassport: faPassport,\n faPastafarianism: faPastafarianism,\n faPaste: faPaste,\n faPause: faPause,\n faPauseCircle: faPauseCircle,\n faPaw: faPaw,\n faPeace: faPeace,\n faPen: faPen,\n faPenAlt: faPenAlt,\n faPenFancy: faPenFancy,\n faPenNib: faPenNib,\n faPenSquare: faPenSquare,\n faPencilAlt: faPencilAlt,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleCarry: faPeopleCarry,\n faPepperHot: faPepperHot,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faPersonBooth: faPersonBooth,\n faPhone: faPhone,\n faPhoneAlt: faPhoneAlt,\n faPhoneSlash: faPhoneSlash,\n faPhoneSquare: faPhoneSquare,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faPhoneVolume: faPhoneVolume,\n faPhotoVideo: faPhotoVideo,\n faPiggyBank: faPiggyBank,\n faPills: faPills,\n faPizzaSlice: faPizzaSlice,\n faPlaceOfWorship: faPlaceOfWorship,\n faPlane: faPlane,\n faPlaneArrival: faPlaneArrival,\n faPlaneDeparture: faPlaneDeparture,\n faPlaneSlash: faPlaneSlash,\n faPlay: faPlay,\n faPlayCircle: faPlayCircle,\n faPlug: faPlug,\n faPlus: faPlus,\n faPlusCircle: faPlusCircle,\n faPlusSquare: faPlusSquare,\n faPodcast: faPodcast,\n faPoll: faPoll,\n faPollH: faPollH,\n faPoo: faPoo,\n faPooStorm: faPooStorm,\n faPoop: faPoop,\n faPortrait: faPortrait,\n faPoundSign: faPoundSign,\n faPowerOff: faPowerOff,\n faPray: faPray,\n faPrayingHands: faPrayingHands,\n faPrescription: faPrescription,\n faPrescriptionBottle: faPrescriptionBottle,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPrint: faPrint,\n faProcedures: faProcedures,\n faProjectDiagram: faProjectDiagram,\n faPumpMedical: faPumpMedical,\n faPumpSoap: faPumpSoap,\n faPuzzlePiece: faPuzzlePiece,\n faQrcode: faQrcode,\n faQuestion: faQuestion,\n faQuestionCircle: faQuestionCircle,\n faQuidditch: faQuidditch,\n faQuoteLeft: faQuoteLeft,\n faQuoteRight: faQuoteRight,\n faQuran: faQuran,\n faRadiation: faRadiation,\n faRadiationAlt: faRadiationAlt,\n faRainbow: faRainbow,\n faRandom: faRandom,\n faReceipt: faReceipt,\n faRecordVinyl: faRecordVinyl,\n faRecycle: faRecycle,\n faRedo: faRedo,\n faRedoAlt: faRedoAlt,\n faRegistered: faRegistered,\n faRemoveFormat: faRemoveFormat,\n faReply: faReply,\n faReplyAll: faReplyAll,\n faRepublican: faRepublican,\n faRestroom: faRestroom,\n faRetweet: faRetweet,\n faRibbon: faRibbon,\n faRing: faRing,\n faRoad: faRoad,\n faRobot: faRobot,\n faRocket: faRocket,\n faRoute: faRoute,\n faRss: faRss,\n faRssSquare: faRssSquare,\n faRubleSign: faRubleSign,\n faRuler: faRuler,\n faRulerCombined: faRulerCombined,\n faRulerHorizontal: faRulerHorizontal,\n faRulerVertical: faRulerVertical,\n faRunning: faRunning,\n faRupeeSign: faRupeeSign,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSatellite: faSatellite,\n faSatelliteDish: faSatelliteDish,\n faSave: faSave,\n faSchool: faSchool,\n faScrewdriver: faScrewdriver,\n faScroll: faScroll,\n faSdCard: faSdCard,\n faSearch: faSearch,\n faSearchDollar: faSearchDollar,\n faSearchLocation: faSearchLocation,\n faSearchMinus: faSearchMinus,\n faSearchPlus: faSearchPlus,\n faSeedling: faSeedling,\n faServer: faServer,\n faShapes: faShapes,\n faShare: faShare,\n faShareAlt: faShareAlt,\n faShareAltSquare: faShareAltSquare,\n faShareSquare: faShareSquare,\n faShekelSign: faShekelSign,\n faShieldAlt: faShieldAlt,\n faShieldVirus: faShieldVirus,\n faShip: faShip,\n faShippingFast: faShippingFast,\n faShoePrints: faShoePrints,\n faShoppingBag: faShoppingBag,\n faShoppingBasket: faShoppingBasket,\n faShoppingCart: faShoppingCart,\n faShower: faShower,\n faShuttleVan: faShuttleVan,\n faSign: faSign,\n faSignInAlt: faSignInAlt,\n faSignLanguage: faSignLanguage,\n faSignOutAlt: faSignOutAlt,\n faSignal: faSignal,\n faSignature: faSignature,\n faSimCard: faSimCard,\n faSink: faSink,\n faSitemap: faSitemap,\n faSkating: faSkating,\n faSkiing: faSkiing,\n faSkiingNordic: faSkiingNordic,\n faSkull: faSkull,\n faSkullCrossbones: faSkullCrossbones,\n faSlash: faSlash,\n faSleigh: faSleigh,\n faSlidersH: faSlidersH,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmileWink: faSmileWink,\n faSmog: faSmog,\n faSmoking: faSmoking,\n faSmokingBan: faSmokingBan,\n faSms: faSms,\n faSnowboarding: faSnowboarding,\n faSnowflake: faSnowflake,\n faSnowman: faSnowman,\n faSnowplow: faSnowplow,\n faSoap: faSoap,\n faSocks: faSocks,\n faSolarPanel: faSolarPanel,\n faSort: faSort,\n faSortAlphaDown: faSortAlphaDown,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faSortAlphaUp: faSortAlphaUp,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faSortAmountDown: faSortAmountDown,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faSortAmountUp: faSortAmountUp,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faSortDown: faSortDown,\n faSortNumericDown: faSortNumericDown,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faSortNumericUp: faSortNumericUp,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faSortUp: faSortUp,\n faSpa: faSpa,\n faSpaceShuttle: faSpaceShuttle,\n faSpellCheck: faSpellCheck,\n faSpider: faSpider,\n faSpinner: faSpinner,\n faSplotch: faSplotch,\n faSprayCan: faSprayCan,\n faSquare: faSquare,\n faSquareFull: faSquareFull,\n faSquareRootAlt: faSquareRootAlt,\n faStamp: faStamp,\n faStar: faStar,\n faStarAndCrescent: faStarAndCrescent,\n faStarHalf: faStarHalf,\n faStarHalfAlt: faStarHalfAlt,\n faStarOfDavid: faStarOfDavid,\n faStarOfLife: faStarOfLife,\n faStepBackward: faStepBackward,\n faStepForward: faStepForward,\n faStethoscope: faStethoscope,\n faStickyNote: faStickyNote,\n faStop: faStop,\n faStopCircle: faStopCircle,\n faStopwatch: faStopwatch,\n faStopwatch20: faStopwatch20,\n faStore: faStore,\n faStoreAlt: faStoreAlt,\n faStoreAltSlash: faStoreAltSlash,\n faStoreSlash: faStoreSlash,\n faStream: faStream,\n faStreetView: faStreetView,\n faStrikethrough: faStrikethrough,\n faStroopwafel: faStroopwafel,\n faSubscript: faSubscript,\n faSubway: faSubway,\n faSuitcase: faSuitcase,\n faSuitcaseRolling: faSuitcaseRolling,\n faSun: faSun,\n faSuperscript: faSuperscript,\n faSurprise: faSurprise,\n faSwatchbook: faSwatchbook,\n faSwimmer: faSwimmer,\n faSwimmingPool: faSwimmingPool,\n faSynagogue: faSynagogue,\n faSync: faSync,\n faSyncAlt: faSyncAlt,\n faSyringe: faSyringe,\n faTable: faTable,\n faTableTennis: faTableTennis,\n faTablet: faTablet,\n faTabletAlt: faTabletAlt,\n faTablets: faTablets,\n faTachometerAlt: faTachometerAlt,\n faTag: faTag,\n faTags: faTags,\n faTape: faTape,\n faTasks: faTasks,\n faTaxi: faTaxi,\n faTeeth: faTeeth,\n faTeethOpen: faTeethOpen,\n faTemperatureHigh: faTemperatureHigh,\n faTemperatureLow: faTemperatureLow,\n faTenge: faTenge,\n faTerminal: faTerminal,\n faTextHeight: faTextHeight,\n faTextWidth: faTextWidth,\n faTh: faTh,\n faThLarge: faThLarge,\n faThList: faThList,\n faTheaterMasks: faTheaterMasks,\n faThermometer: faThermometer,\n faThermometerEmpty: faThermometerEmpty,\n faThermometerFull: faThermometerFull,\n faThermometerHalf: faThermometerHalf,\n faThermometerQuarter: faThermometerQuarter,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faThumbtack: faThumbtack,\n faTicketAlt: faTicketAlt,\n faTimes: faTimes,\n faTimesCircle: faTimesCircle,\n faTint: faTint,\n faTintSlash: faTintSlash,\n faTired: faTired,\n faToggleOff: faToggleOff,\n faToggleOn: faToggleOn,\n faToilet: faToilet,\n faToiletPaper: faToiletPaper,\n faToiletPaperSlash: faToiletPaperSlash,\n faToolbox: faToolbox,\n faTools: faTools,\n faTooth: faTooth,\n faTorah: faTorah,\n faToriiGate: faToriiGate,\n faTractor: faTractor,\n faTrademark: faTrademark,\n faTrafficLight: faTrafficLight,\n faTrailer: faTrailer,\n faTrain: faTrain,\n faTram: faTram,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faTrash: faTrash,\n faTrashAlt: faTrashAlt,\n faTrashRestore: faTrashRestore,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faTree: faTree,\n faTrophy: faTrophy,\n faTruck: faTruck,\n faTruckLoading: faTruckLoading,\n faTruckMonster: faTruckMonster,\n faTruckMoving: faTruckMoving,\n faTruckPickup: faTruckPickup,\n faTshirt: faTshirt,\n faTty: faTty,\n faTv: faTv,\n faUmbrella: faUmbrella,\n faUmbrellaBeach: faUmbrellaBeach,\n faUnderline: faUnderline,\n faUndo: faUndo,\n faUndoAlt: faUndoAlt,\n faUniversalAccess: faUniversalAccess,\n faUniversity: faUniversity,\n faUnlink: faUnlink,\n faUnlock: faUnlock,\n faUnlockAlt: faUnlockAlt,\n faUpload: faUpload,\n faUser: faUser,\n faUserAlt: faUserAlt,\n faUserAltSlash: faUserAltSlash,\n faUserAstronaut: faUserAstronaut,\n faUserCheck: faUserCheck,\n faUserCircle: faUserCircle,\n faUserClock: faUserClock,\n faUserCog: faUserCog,\n faUserEdit: faUserEdit,\n faUserFriends: faUserFriends,\n faUserGraduate: faUserGraduate,\n faUserInjured: faUserInjured,\n faUserLock: faUserLock,\n faUserMd: faUserMd,\n faUserMinus: faUserMinus,\n faUserNinja: faUserNinja,\n faUserNurse: faUserNurse,\n faUserPlus: faUserPlus,\n faUserSecret: faUserSecret,\n faUserShield: faUserShield,\n faUserSlash: faUserSlash,\n faUserTag: faUserTag,\n faUserTie: faUserTie,\n faUserTimes: faUserTimes,\n faUsers: faUsers,\n faUsersCog: faUsersCog,\n faUsersSlash: faUsersSlash,\n faUtensilSpoon: faUtensilSpoon,\n faUtensils: faUtensils,\n faVectorSquare: faVectorSquare,\n faVenus: faVenus,\n faVenusDouble: faVenusDouble,\n faVenusMars: faVenusMars,\n faVest: faVest,\n faVestPatches: faVestPatches,\n faVial: faVial,\n faVials: faVials,\n faVideo: faVideo,\n faVideoSlash: faVideoSlash,\n faVihara: faVihara,\n faVirus: faVirus,\n faVirusSlash: faVirusSlash,\n faViruses: faViruses,\n faVoicemail: faVoicemail,\n faVolleyballBall: faVolleyballBall,\n faVolumeDown: faVolumeDown,\n faVolumeMute: faVolumeMute,\n faVolumeOff: faVolumeOff,\n faVolumeUp: faVolumeUp,\n faVoteYea: faVoteYea,\n faVrCardboard: faVrCardboard,\n faWalking: faWalking,\n faWallet: faWallet,\n faWarehouse: faWarehouse,\n faWater: faWater,\n faWaveSquare: faWaveSquare,\n faWeight: faWeight,\n faWeightHanging: faWeightHanging,\n faWheelchair: faWheelchair,\n faWifi: faWifi,\n faWind: faWind,\n faWindowClose: faWindowClose,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore,\n faWineBottle: faWineBottle,\n faWineGlass: faWineGlass,\n faWineGlassAlt: faWineGlassAlt,\n faWonSign: faWonSign,\n faWrench: faWrench,\n faXRay: faXRay,\n faYenSign: faYenSign,\n faYinYang: faYinYang\n};\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zL2luZGV4LmVzLmpzP2MwNzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTh0WiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMvaW5kZXguZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuNCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbVxuICogTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSAoSWNvbnM6IENDIEJZIDQuMCwgRm9udHM6IFNJTCBPRkwgMS4xLCBDb2RlOiBNSVQgTGljZW5zZSlcbiAqL1xudmFyIHByZWZpeCA9IFwiZmFzXCI7XG52YXIgZmFBZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY0MVwiLCBcIk0xNTcuNTIgMjcyaDM2Ljk2TDE3NiAyMTguNzggMTU3LjUyIDI3MnpNMzUyIDI1NmMtMTMuMjMgMC0yNCAxMC43Ny0yNCAyNHMxMC43NyAyNCAyNCAyNCAyNC0xMC43NyAyNC0yNC0xMC43Ny0yNC0yNC0yNHpNNDY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjI4OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNTAuNTggMzUyaC0xNi45NGMtNi44MSAwLTEyLjg4LTQuMzItMTUuMTItMTAuNzVMMjExLjE1IDMyMGgtNzAuMjlsLTcuMzggMjEuMjVBMTYgMTYgMCAwIDEgMTE4LjM2IDM1MmgtMTYuOTRjLTExLjAxIDAtMTguNzMtMTAuODUtMTUuMTItMjEuMjVMMTQwIDE3Ni4xMkEyMy45OTUgMjMuOTk1IDAgMCAxIDE2Mi42NyAxNjBoMjYuNjZBMjMuOTkgMjMuOTkgMCAwIDEgMjEyIDE3Ni4xM2w1My42OSAxNTQuNjJjMy42MSAxMC40LTQuMTEgMjEuMjUtMTUuMTEgMjEuMjV6TTQyNCAzMzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTE2Yy00Ljg1IDAtOS4wNC0yLjI3LTExLjk4LTUuNjgtOC42MiAzLjY2LTE4LjA5IDUuNjgtMjguMDIgNS42OC0zOS43IDAtNzItMzIuMy03Mi03MnMzMi4zLTcyIDcyLTcyYzguNDYgMCAxNi40NiAxLjczIDI0IDQuNDJWMTc2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDE2YzguODQgMCAxNiA3LjE2IDE2IDE2djE2MHpcIl1cbn07XG52YXIgZmFBZGRyZXNzQm9vayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhZGRyZXNzLWJvb2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyYjlcIiwgXCJNNDM2IDE2MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjBWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQ4aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMHYtNjRoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMHptLTIyOC0zMmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6bTExMiAyMzYuOGMwIDEwLjYtMTAgMTkuMi0yMi40IDE5LjJIMTE4LjRDMTA2IDM4NCA5NiAzNzUuNCA5NiAzNjQuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpcIl1cbn07XG52YXIgZmFBZGRyZXNzQ2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhZGRyZXNzLWNhcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyYmJcIiwgXCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTM1MiA5NmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6bTExMiAyMzYuOGMwIDEwLjYtMTAgMTkuMi0yMi40IDE5LjJIODYuNEM3NCAzODQgNjQgMzc1LjQgNjQgMzY0Ljh2LTE5LjJjMC0zMS44IDMwLjEtNTcuNiA2Ny4yLTU3LjZoNWMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg1YzM3LjEgMCA2Ny4yIDI1LjggNjcuMiA1Ny42djE5LjJ6TTUxMiAzMTJjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnptMC02NGMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTY0YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJdXG59O1xudmFyIGZhQWRqdXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FkanVzdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA0MlwiLCBcIk04IDI1NmMwIDEzNi45NjYgMTExLjAzMyAyNDggMjQ4IDI0OHMyNDgtMTExLjAzNCAyNDgtMjQ4UzM5Mi45NjYgOCAyNTYgOCA4IDExOS4wMzMgOCAyNTZ6bTI0OCAxODRWNzJjMTAxLjcwNSAwIDE4NCA4Mi4zMTEgMTg0IDE4NCAwIDEwMS43MDUtODIuMzExIDE4NC0xODQgMTg0elwiXVxufTtcbnZhciBmYUFpckZyZXNoZW5lciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhaXItZnJlc2hlbmVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWQwXCIsIFwiTTIyNCAxNjBIOTZDNDMgMTYwIDAgMjAzIDAgMjU2VjQ4MEMwIDQ5Ny42MjUgMTQuMzc1IDUxMiAzMiA1MTJIMjg4QzMwNS42MjUgNTEyIDMyMCA0OTcuNjI1IDMyMCA0ODBWMjU2QzMyMCAyMDMgMjc3IDE2MCAyMjQgMTYwWk0xNjAgNDE2QzExNS44NzUgNDE2IDgwIDM4MC4xMjUgODAgMzM2UzExNS44NzUgMjU2IDE2MCAyNTZTMjQwIDI5MS44NzUgMjQwIDMzNlMyMDQuMTI1IDQxNiAxNjAgNDE2Wk0yMjQgMzJDMjI0IDE0LjM3NSAyMDkuNjI1IDAgMTkyIDBIMTI4QzExMC4zNzUgMCA5NiAxNC4zNzUgOTYgMzJWMTI4SDIyNFYzMlpNMzgxLjc4MSA1MS41NzhDMzgzIDUwLjk2OSAzODQgNDkuMzU5IDM4NCA0OEMzODQgNDYuNjI1IDM4MyA0NS4wMzEgMzgxLjc4MSA0NC40MjJMMzUyIDMyTDMzOS41NjIgMi4yMTlDMzM4Ljk2OSAxIDMzNy4zNzUgMCAzMzYgMFMzMzMuMDMxIDEgMzMyLjQwNiAyLjIxOUwzMjAgMzJMMjkwLjIxOSA0NC40MjJDMjg5IDQ1LjAzMSAyODggNDYuNjI1IDI4OCA0OEMyODggNDkuMzU5IDI4OSA1MC45NjkgMjkwLjIxOSA1MS41NzhMMzIwIDY0TDMzMi40MDYgOTMuNzgxQzMzMy4wMzEgOTUgMzM0LjYyNSA5NiAzMzYgOTZTMzM4Ljk2OSA5NSAzMzkuNTYyIDkzLjc4MUwzNTIgNjRMMzgxLjc4MSA1MS41NzhaTTQ0OCA2NEw0NjAuNDA2IDkzLjc4MUM0NjEuMDMxIDk1IDQ2Mi42MjUgOTYgNDY0IDk2UzQ2Ni45NjkgOTUgNDY3LjU2MiA5My43ODFMNDgwIDY0TDUwOS43ODEgNTEuNTc4QzUxMSA1MC45NjkgNTEyIDQ5LjM1OSA1MTIgNDhDNTEyIDQ2LjYyNSA1MTEgNDUuMDMxIDUwOS43ODEgNDQuNDIyTDQ4MCAzMkw0NjcuNTYyIDIuMjE5QzQ2Ni45NjkgMSA0NjUuMzc1IDAgNDY0IDBTNDYxLjAzMSAxIDQ2MC40MDYgMi4yMTlMNDQ4IDMyTDQxOC4yMTkgNDQuNDIyQzQxNyA0NS4wMzEgNDE2IDQ2LjYyNSA0MTYgNDhDNDE2IDQ5LjM1OSA0MTcgNTAuOTY5IDQxOC4yMTkgNTEuNTc4TDQ0OCA2NFpNNDgwIDIyNEw0NjcuNTYyIDE5NC4yMTlDNDY2Ljk2OSAxOTMgNDY1LjM3NSAxOTIgNDY0IDE5MlM0NjEuMDMxIDE5MyA0NjAuNDA2IDE5NC4yMTlMNDQ4IDIyNEw0MTguMjE5IDIzNi40MjJDNDE3IDIzNy4wMzEgNDE2IDIzOC42MjUgNDE2IDI0MEM0MTYgMjQxLjM1OSA0MTcgMjQyLjk2OSA0MTguMjE5IDI0My41NzhMNDQ4IDI1Nkw0NjAuNDA2IDI4NS43ODFDNDYxLjAzMSAyODcgNDYyLjYyNSAyODggNDY0IDI4OFM0NjYuOTY5IDI4NyA0NjcuNTYyIDI4NS43ODFMNDgwIDI1Nkw1MDkuNzgxIDI0My41NzhDNTExIDI0Mi45NjkgNTEyIDI0MS4zNTkgNTEyIDI0MEM1MTIgMjM4LjYyNSA1MTEgMjM3LjAzMSA1MDkuNzgxIDIzNi40MjJMNDgwIDIyNFpNNDQ1Ljc4MSAxNDcuNTc4QzQ0NyAxNDYuOTY5IDQ0OCAxNDUuMzU5IDQ0OCAxNDRDNDQ4IDE0Mi42MjUgNDQ3IDE0MS4wMzEgNDQ1Ljc4MSAxNDAuNDIyTDQxNiAxMjhMNDAzLjU2MiA5OC4yMTlDNDAyLjk2OSA5NyA0MDEuMzc1IDk2IDQwMCA5NlMzOTcuMDMxIDk3IDM5Ni40MDYgOTguMjE5TDM4NCAxMjhMMzU0LjIxOSAxNDAuNDIyQzM1MyAxNDEuMDMxIDM1MiAxNDIuNjI1IDM1MiAxNDRDMzUyIDE0NS4zNTkgMzUzIDE0Ni45NjkgMzU0LjIxOSAxNDcuNTc4TDM4NCAxNjBMMzk2LjQwNiAxODkuNzgxQzM5Ny4wMzEgMTkxIDM5OC42MjUgMTkyIDQwMCAxOTJTNDAyLjk2OSAxOTEgNDAzLjU2MiAxODkuNzgxTDQxNiAxNjBMNDQ1Ljc4MSAxNDcuNTc4WlwiXVxufTtcbnZhciBmYUFsaWduQ2VudGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsaWduLWNlbnRlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzN1wiLCBcIk00MzIgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMjU2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTEwOC4xIDk2aDIzMS44MUExMi4wOSAxMi4wOSAwIDAgMCAzNTIgODMuOVY0NC4wOUExMi4wOSAxMi4wOSAwIDAgMCAzMzkuOTEgMzJIMTA4LjFBMTIuMDkgMTIuMDkgMCAwIDAgOTYgNDQuMDlWODMuOUExMi4xIDEyLjEgMCAwIDAgMTA4LjEgOTZ6bTIzMS44MSAyNTZBMTIuMDkgMTIuMDkgMCAwIDAgMzUyIDMzOS45di0zOS44MUExMi4wOSAxMi4wOSAwIDAgMCAzMzkuOTEgMjg4SDEwOC4xQTEyLjA5IDEyLjA5IDAgMCAwIDk2IDMwMC4wOXYzOS44MWExMi4xIDEyLjEgMCAwIDAgMTIuMSAxMi4xelwiXVxufTtcbnZhciBmYUFsaWduSnVzdGlmeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbGlnbi1qdXN0aWZ5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDM5XCIsIFwiTTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhQWxpZ25MZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsaWduLWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMzZcIiwgXCJNMTIuODMgMzUyaDI2Mi4zNEExMi44MiAxMi44MiAwIDAgMCAyODggMzM5LjE3di0zOC4zNEExMi44MiAxMi44MiAwIDAgMCAyNzUuMTcgMjg4SDEyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDEyLjgzIDM1MnptMC0yNTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI4OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCAyNzUuMTcgMzJIMTIuODNBMTIuODIgMTIuODIgMCAwIDAgMCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxMi44MyA5NnpNNDMyIDE2MEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDI1NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYUFsaWduUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYWxpZ24tcmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMzhcIiwgXCJNMTYgMjI0aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTQxNiAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0zODRIMTcyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE2MCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxNzIuODMgOTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCA0MzUuMTcgMzJ6bTAgMjU2SDE3Mi44M0ExMi44MiAxMi44MiAwIDAgMCAxNjAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDE3Mi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6XCJdXG59O1xudmFyIGZhQWxsZXJnaWVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsbGVyZ2llcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjQ2MVwiLCBcIk00MTYgMTEyYy0xNy42IDAtMzIgMTQuNC0zMiAzMnY3MmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWNjRjMC0xNy42LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ2MTUyYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOFYzMmMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxODRjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjY0YzAtMTcuNi0xNC40LTMyLTMyLTMyUzk2IDQ2LjQgOTYgNjR2MjQxbC0yMy42LTMyLjVjLTEzLTE3LjktMzgtMjEuOC01NS45LTguOHMtMjEuOCAzOC04LjggNTUuOWwxMjUuNiAxNzIuN2M5IDEyLjQgMjMuNSAxOS44IDM4LjggMTkuOGgxOTcuNmMyMi4zIDAgNDEuNi0xNS4zIDQ2LjctMzdsMjYuNS0xMTIuN2MzLjItMTMuNyA0LjktMjguMyA1LjEtNDIuM1YxNDRjMC0xNy42LTE0LjQtMzItMzItMzJ6TTE3NiA0MTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAxMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMiA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMi0xMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFBbWJ1bGFuY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW1idWxhbmNlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMGY5XCIsIFwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMTQ0LTI0OGMwIDQuNC0zLjYgOC04IDhoLTU2djU2YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtNTZoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDh6bTE3NiAyNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em04MC0yMDhINDE2VjE0NGg0NC4xbDk5LjkgOTkuOVYyNTZ6XCJdXG59O1xudmFyIGZhQW1lcmljYW5TaWduTGFuZ3VhZ2VJbnRlcnByZXRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyYTNcIiwgXCJNMjkwLjU0NyAxODkuMDM5Yy0yMC4yOTUtMTAuMTQ5LTQ0LjE0Ny0xMS4xOTktNjQuNzM5LTMuODkgNDIuNjA2IDAgNzEuMjA4IDIwLjQ3NSA4NS41NzggNTAuNTc2IDguNTc2IDE3Ljg5OS01LjE0OCAzOC4wNzEtMjMuNjE3IDM4LjA3MSAxOC40MjkgMCAzMi4yMTEgMjAuMTM2IDIzLjYxNyAzOC4wNzEtMTQuNzI1IDMwLjg0Ni00Ni4xMjMgNTAuODU0LTgwLjI5OCA1MC44NTQtLjU1NyAwLTk0LjQ3MS04LjYxNS05NC40NzEtOC42MTVsLTY2LjQwNiAzMy4zNDdjLTkuMzg0IDQuNjkzLTE5LjgxNS4zNzktMjMuODk1LTcuNzgxTDEuODYgMjkwLjc0N2MtNC4xNjctOC42MTUtMS4xMTEtMTguODk3IDYuOTQ2LTIzLjYyMWw1OC4wNzItMzMuMDY5TDEwOCAxNTkuODYxYzYuMzktNTcuMjQ1IDM0LjczMS0xMDkuNzY3IDc5Ljc0My0xNDYuNzI2IDExLjM5MS05LjQ0OCAyOC4zNDEtNy43ODEgMzcuNTEgMy42MTMgOS40NDYgMTEuMzk0IDcuNzggMjguMDY3LTMuNjEyIDM3LjUxNi0xMi41MDMgMTAuNTU5LTIzLjYxOCAyMi41MDktMzIuNTA5IDM1LjU3IDIxLjY3Mi0xNC43MjkgNDYuNjc5LTI0LjczMiA3NC4xODYtMjguMDY3IDE0LjcyNS0xLjk0NSAyOC4wNjMgOC4zMzYgMjkuNzMgMjMuMDY1IDEuOTQ1IDE0LjcyOC04LjMzNiAyOC4wNjctMjMuMDYyIDI5LjczNC0xNi4xMTYgMS45NDUtMzEuMTIgNy41MDMtNDQuMTc4IDE1LjI4NCAyNi4xMTQtNS43MTMgNTguNzEyLTMuMTM4IDg4LjA3OSAxMS4xMTUgMTMuMzM2IDYuNjY5IDE4Ljg5MyAyMi41MDkgMTIuMjI0IDM1Ljg0OC02LjM4OSAxMy4wNi0yMi41MDQgMTguNjE3LTM1LjU2NCAxMi4yMjZ6bS0yNy4yMjkgNjkuNDcyYy02LjExMi0xMi41MDUtMTguMzM4LTIwLjI4Ni0zMi4yMzEtMjAuMjg2YTM1LjQ2IDM1LjQ2IDAgMCAwLTM1LjU2NSAzNS41N2MwIDIxLjQyOCAxNy44MDggMzUuNTcgMzUuNTY1IDM1LjU3IDEzLjg5MyAwIDI2LjExOS03Ljc4MSAzMi4yMzEtMjAuMjg2IDQuNDQ2LTkuNDQ5IDEzLjYxNC0xNS4wMDYgMjMuMzM5LTE1LjI4NC05LjcyNS0uMjc3LTE4Ljg5My01LjgzNS0yMy4zMzktMTUuMjg0em0zNzQuODIxLTM3LjIzN2M0LjE2OCA4LjYxNSAxLjExMSAxOC44OTctNi45NDYgMjMuNjIxbC01OC4wNzEgMzMuMDY5TDUzMiAzNTIuMTZjLTYuMzkgNTcuMjQ1LTM0LjczMSAxMDkuNzY3LTc5Ljc0MyAxNDYuNzI2LTEwLjkzMiA5LjExMi0yNy43OTkgOC4xNDQtMzcuNTEtMy42MTMtOS40NDYtMTEuMzk0LTcuNzgtMjguMDY3IDMuNjEzLTM3LjUxNiAxMi41MDMtMTAuNTU5IDIzLjYxNy0yMi41MDkgMzIuNTA4LTM1LjU3LTIxLjY3MiAxNC43MjktNDYuNjc5IDI0LjczMi03NC4xODYgMjguMDY3LTEwLjAyMSAyLjUwNi0yNy41NTItNS42NDMtMjkuNzMtMjMuMDY1LTEuOTQ1LTE0LjcyOCA4LjMzNi0yOC4wNjcgMjMuMDYyLTI5LjczNCAxNi4xMTYtMS45NDYgMzEuMTItNy41MDMgNDQuMTc4LTE1LjI4NC0yNi4xMTQgNS43MTMtNTguNzEyIDMuMTM4LTg4LjA3OS0xMS4xMTUtMTMuMzM2LTYuNjY5LTE4Ljg5My0yMi41MDktMTIuMjI0LTM1Ljg0OCA2LjM4OS0xMy4wNjEgMjIuNTA1LTE4LjYxOSAzNS41NjUtMTIuMjI3IDIwLjI5NSAxMC4xNDkgNDQuMTQ3IDExLjE5OSA2NC43MzkgMy44OS00Mi42MDYgMC03MS4yMDgtMjAuNDc1LTg1LjU3OC01MC41NzYtOC41NzYtMTcuODk5IDUuMTQ4LTM4LjA3MSAyMy42MTctMzguMDcxLTE4LjQyOSAwLTMyLjIxMS0yMC4xMzYtMjMuNjE3LTM4LjA3MSAxNC4wMzMtMjkuMzk2IDQ0LjAzOS01MC44ODcgODEuOTY2LTUwLjg1NGw5Mi44MDMgOC42MTUgNjYuNDA2LTMzLjM0N2M5LjQwOC00LjcwNCAxOS44MjgtLjM1NCAyMy44OTQgNy43ODFsNDQuNDU1IDg4LjkyNnptLTIyOS4yMjctMTguNjE4Yy0xMy44OTMgMC0yNi4xMTkgNy43ODEtMzIuMjMxIDIwLjI4Ni00LjQ0NiA5LjQ0OS0xMy42MTQgMTUuMDA2LTIzLjMzOSAxNS4yODQgOS43MjUuMjc4IDE4Ljg5MyA1LjgzNiAyMy4zMzkgMTUuMjg0IDYuMTEyIDEyLjUwNSAxOC4zMzggMjAuMjg2IDMyLjIzMSAyMC4yODZhMzUuNDYgMzUuNDYgMCAwIDAgMzUuNTY1LTM1LjU3YzAtMjEuNDI5LTE3LjgwOC0zNS41Ny0zNS41NjUtMzUuNTd6XCJdXG59O1xudmFyIGZhQW5jaG9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuY2hvcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjEzZFwiLCBcIk0xMi45NzEgMzUyaDMyLjM5NEM2Ny4xNzIgNDU0LjczNSAxODEuOTQ0IDUxMiAyODggNTEyYzEwNi4yMjkgMCAyMjAuODUzLTU3LjM4IDI0Mi42MzUtMTYwaDMyLjM5NGMxMC42OTEgMCAxNi4wNDUtMTIuOTI2IDguNDg1LTIwLjQ4NWwtNjcuMDI5LTY3LjAyOWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwbC02Ny4wMjkgNjcuMDI5Yy03LjU2IDcuNTYtMi4yMDYgMjAuNDg1IDguNDg1IDIwLjQ4NWgzNS4xNDZjLTIwLjI5IDU0LjMxNy04NC45NjMgODYuNTg4LTE0NC4xMTcgOTQuMDE1VjI1Nmg1MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01MnYtNS40N2MzNy4yODEtMTMuMTc4IDYzLjk5NS00OC43MjUgNjQtOTAuNTE4QzM4NC4wMDUgNDMuNzcyIDM0MS42MDUuNzM4IDI4OS4zNy4wMSAyMzUuNzIzLS43MzkgMTkyIDQyLjUyNSAxOTIgOTZjMCA0MS43OTggMjYuNzE2IDc3LjM1IDY0IDkwLjUzVjE5MmgtNTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1MnYxOTAuMDE1Yy01OC45MzYtNy4zOTktMTIzLjgyLTM5LjY3OS0xNDQuMTE3LTk0LjAxNWgzNS4xNDZjMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4NS0yMC40ODVsLTY3LjAyOS02Ny4wMjljLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw0LjQ4NSAzMzEuNTE1Qy0zLjA3NCAzMzkuMDc0IDIuMjggMzUyIDEyLjk3MSAzNTJ6TTI4OCA2NGMxNy42NDUgMCAzMiAxNC4zNTUgMzIgMzJzLTE0LjM1NSAzMi0zMiAzMi0zMi0xNC4zNTUtMzItMzIgMTQuMzU1LTMyIDMyLTMyelwiXVxufTtcbnZhciBmYUFuZ2xlRG91YmxlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1kb3VibGUtZG93bicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjEwM1wiLCBcIk0xNDMgMjU2LjNMNyAxMjAuM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuNi0yMi42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDk2LjQgOTYuNCA5Ni40LTk2LjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzEzIDg2LjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTEzNiAxMzZjLTkuNCA5LjUtMjQuNiA5LjUtMzQgLjF6bTM0IDE5MmwxMzYtMTM2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0yMi42LTIyLjZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE2MCAzNTIuMWwtOTYuNC05Ni40Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDI3OC4zYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxMzYgMTM2YzkuNCA5LjUgMjQuNiA5LjUgMzQgLjF6XCJdXG59O1xudmFyIGZhQW5nbGVEb3VibGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlLWRvdWJsZS1sZWZ0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTAwXCIsIFwiTTIyMy43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwzMTkuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDM5My43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6bS0xOTIgMzRsMTM2IDEzNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMTI3LjkgMjU2bDk2LjQtOTYuNGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMDEuNyAxMDNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMzYgMTM2Yy05LjUgOS40LTkuNSAyNC42LS4xIDM0elwiXVxufTtcbnZhciBmYUFuZ2xlRG91YmxlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGUtZG91YmxlLXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTAxXCIsIFwiTTIyNC4zIDI3M2wtMTM2IDEzNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjYtMjIuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOTYuNC05Ni40LTk2LjQtOTYuNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMNTQuMyAxMDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTM2IDEzNmM5LjUgOS40IDkuNSAyNC42LjEgMzR6bTE5Mi0zNGwtMTM2LTEzNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTIyLjYgMjIuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsOTYuNCA5Ni40LTk2LjQgOTYuNGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMjIuNiAyMi42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDEzNi0xMzZjOS40LTkuMiA5LjQtMjQuNCAwLTMzLjh6XCJdXG59O1xudmFyIGZhQW5nbGVEb3VibGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1kb3VibGUtdXAnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYxMDJcIiwgXCJNMTc3IDI1NS43bDEzNiAxMzZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTIyLjYgMjIuNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTYwIDM1MS45bC05Ni40IDk2LjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDcgNDI1LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDEzNi0xMzZjOS40LTkuNSAyNC42LTkuNSAzNC0uMXptLTM0LTE5Mkw3IDE5OS43Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwyMi42IDIyLjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsOTYuNC05Ni40IDk2LjQgOTYuNGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTEzNi0xMzZjLTkuMi05LjQtMjQuNC05LjQtMzMuOCAwelwiXVxufTtcbnZhciBmYUFuZ2xlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1kb3duJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMTA3XCIsIFwiTTE0MyAzNTIuM0w3IDIxNi4zYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwyMi42LTIyLjZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsOTYuNCA5Ni40IDk2LjQtOTYuNGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyMi42IDIyLjZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTEzNiAxMzZjLTkuMiA5LjQtMjQuNCA5LjQtMzMuOCAwelwiXVxufTtcbnZhciBmYUFuZ2xlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1sZWZ0JyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMTA0XCIsIFwiTTMxLjcgMjM5bDEzNi0xMzZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuNiAyMi42YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDEyNy45IDI1Nmw5Ni40IDk2LjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjAxLjcgNDA5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMTM2LTEzNmMtOS41LTkuNC05LjUtMjQuNi0uMS0zNHpcIl1cbn07XG52YXIgZmFBbmdsZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlLXJpZ2h0JyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMTA1XCIsIFwiTTIyNC4zIDI3M2wtMTM2IDEzNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjYtMjIuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOTYuNC05Ni40LTk2LjQtOTYuNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMNTQuMyAxMDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTM2IDEzNmM5LjUgOS40IDkuNSAyNC42LjEgMzR6XCJdXG59O1xudmFyIGZhQW5nbGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS11cCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjEwNlwiLCBcIk0xNzcgMTU5LjdsMTM2IDEzNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMjIuNiAyMi42Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxNjAgMjU1LjlsLTk2LjQgOTYuNGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyAzMjkuN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMTM2LTEzNmM5LjQtOS41IDI0LjYtOS41IDM0LS4xelwiXVxufTtcbnZhciBmYUFuZ3J5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ3J5JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTU2XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyNDBjMC05LjMgNC4xLTE3LjUgMTAuNS0yMy40bC0zMS05LjNjLTguNS0yLjUtMTMuMy0xMS41LTEwLjctMTkuOSAyLjUtOC41IDExLjQtMTMuMiAxOS45LTEwLjdsODAgMjRjOC41IDIuNSAxMy4zIDExLjUgMTAuNyAxOS45LTIuMSA2LjktOC40IDExLjQtMTUuMyAxMS40LS41IDAtMS4xLS4yLTEuNy0uMi43IDIuNyAxLjcgNS4zIDEuNyA4LjIgMCAxNy43LTE0LjMgMzItMzIgMzJTMTM2IDI1Ny43IDEzNiAyNDB6bTE2OCAxNTQuMmMtMjcuOC0zMy40LTg0LjItMzMuNC0xMTIuMSAwLTEzLjUgMTYuMy0zOC4yLTQuMi0yNC42LTIwLjUgMjAtMjQgNDkuNC0zNy44IDgwLjYtMzcuOHM2MC42IDEzLjggODAuNiAzNy44YzEzLjggMTYuNS0xMS4xIDM2LjYtMjQuNSAyMC41em03Ni42LTE4Ni45bC0zMSA5LjNjNi4zIDUuOCAxMC41IDE0LjEgMTAuNSAyMy40IDAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMi45LjktNS42IDEuNy04LjItLjYuMS0xLjEuMi0xLjcuMi02LjkgMC0xMy4yLTQuNS0xNS4zLTExLjQtMi41LTguNSAyLjMtMTcuNCAxMC43LTE5LjlsODAtMjRjOC40LTIuNSAxNy40IDIuMyAxOS45IDEwLjcgMi41IDguNS0yLjMgMTcuNC0xMC44IDE5Ljl6XCJdXG59O1xudmFyIGZhQW5raCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmtoJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmNjQ0XCIsIFwiTTI5NiAyNTZoLTQ0LjYyQzI3Mi40NiAyMjIuMDEgMjg4IDE4MS42NSAyODggMTQ0IDI4OCA1NS42MyAyMzAuNjkgMCAxNjAgMFMzMiA1NS42MyAzMiAxNDRjMCAzNy42NSAxNS41NCA3OC4wMSAzNi42MiAxMTJIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2MzJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg5NnYxNTJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGgzMmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjMzNmg5NmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di0zMmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgODBjMjkuNjEgMCA0OCAyNC41MiA0OCA2NCAwIDM0LjY2LTI3LjE0IDc4LjE0LTQ4IDEwMC44Ny0yMC44Ni0yMi43Mi00OC02Ni4yMS00OC0xMDAuODcgMC0zOS40OCAxOC4zOS02NCA0OC02NHpcIl1cbn07XG52YXIgZmFBcHBsZUFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcHBsZS1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1ZDFcIiwgXCJNMzUwLjg1IDEyOWMyNS45NyA0LjY3IDQ3LjI3IDE4LjY3IDYzLjkyIDQyIDE0LjY1IDIwLjY3IDI0LjY0IDQ2LjY3IDI5Ljk2IDc4IDQuNjcgMjguNjcgNC4zMiA1Ny4zMy0xIDg2LTcuOTkgNDcuMzMtMjMuOTcgODctNDcuOTQgMTE5LTI4LjY0IDM4LjY3LTY0LjU5IDU4LTEwNy44NyA1OC0xMC42NiAwLTIyLjMtMy4zMy0zNC45Ni0xMC04LjY2LTUuMzMtMTguMzEtOC0yOC45Ny04cy0yMC4zIDIuNjctMjguOTcgOGMtMTIuNjYgNi42Ny0yNC4zIDEwLTM0Ljk2IDEwLTQzLjI4IDAtNzkuMjMtMTkuMzMtMTA3Ljg3LTU4LTIzLjk3LTMyLTM5Ljk1LTcxLjY3LTQ3Ljk0LTExOS01LjMyLTI4LjY3LTUuNjctNTcuMzMtMS04NiA1LjMyLTMxLjMzIDE1LjMxLTU3LjMzIDI5Ljk2LTc4IDE2LjY1LTIzLjMzIDM3Ljk1LTM3LjMzIDYzLjkyLTQyIDE1Ljk4LTIuNjcgMzcuOTUtLjMzIDY1LjkyIDcgMjMuOTcgNi42NyA0NC4yOCAxNC42NyA2MC45MyAyNCAxNi42NS05LjMzIDM2Ljk2LTE3LjMzIDYwLjkzLTI0IDI3Ljk4LTcuMzMgNDkuOTYtOS42NyA2NS45NC03em0tNTQuOTQtNDFjLTkuMzIgOC42Ny0yMS42NSAxNS0zNi45NiAxOS0xMC42NiAzLjMzLTIyLjMgNS0zNC45NiA1bC0xNC45OC0xYy0xLjMzLTkuMzMtMS4zMy0yMCAwLTMyIDIuNjctMjQgMTAuMzItNDIuMzMgMjIuOTctNTUgOS4zMi04LjY3IDIxLjY1LTE1IDM2Ljk2LTE5IDEwLjY2LTMuMzMgMjIuMy01IDM0Ljk2LTVsMTQuOTggMSAxIDE1YzAgMTIuNjctMS42NyAyNC4zMy00Ljk5IDM1LTMuOTkgMTUuMzMtMTAuMzEgMjcuNjctMTguOTggMzd6XCJdXG59O1xudmFyIGZhQXJjaGl2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcmNoaXZlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTg3XCIsIFwiTTMyIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwSDMydjI4OHptMTYwLTIxMmMwLTYuNiA1LjQtMTIgMTItMTJoMTA0YzYuNiAwIDEyIDUuNCAxMiAxMnY4YzAgNi42LTUuNCAxMi0xMiAxMkgyMDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOHpNNDgwIDMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhQXJjaHdheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcmNod2F5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTU3XCIsIFwiTTU2MCA0NDhoLTE2Vjk2SDMydjM1MkgxNi4wMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZIMTc2YzguODQgMCAxNi03LjE2IDE2LTE2VjMyMGMwLTUzLjAyIDQyLjk4LTk2IDk2LTk2czk2IDQyLjk4IDk2IDk2bC4wMiAxNjB2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZINTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptMC00NDhIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDU0NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFBcnJvd0FsdENpcmNsZURvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctYWx0LWNpcmNsZS1kb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMzU4XCIsIFwiTTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHpNMjEyIDE0MHYxMTZoLTcwLjljLTEwLjcgMC0xNi4xIDEzLTguNSAyMC41bDExNC45IDExNC4zYzQuNyA0LjcgMTIuMiA0LjcgMTYuOSAwbDExNC45LTExNC4zYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVIMzAwVjE0MGMwLTYuNi01LjQtMTItMTItMTJoLTY0Yy02LjYgMC0xMiA1LjQtMTIgMTJ6XCJdXG59O1xudmFyIGZhQXJyb3dBbHRDaXJjbGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWFsdC1jaXJjbGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjM1OVwiLCBcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHptMTE2LTI5MkgyNTZ2LTcwLjljMC0xMC43LTEzLTE2LjEtMjAuNS04LjVMMTIxLjIgMjQ3LjVjLTQuNyA0LjctNC43IDEyLjIgMCAxNi45bDExNC4zIDExNC45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMzAwaDExNmM2LjYgMCAxMi01LjQgMTItMTJ2LTY0YzAtNi42LTUuNC0xMi0xMi0xMnpcIl1cbn07XG52YXIgZmFBcnJvd0FsdENpcmNsZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWFsdC1jaXJjbGUtcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzNWFcIiwgXCJNMjU2IDhjMTM3IDAgMjQ4IDExMSAyNDggMjQ4UzM5MyA1MDQgMjU2IDUwNCA4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHpNMTQwIDMwMGgxMTZ2NzAuOWMwIDEwLjcgMTMgMTYuMSAyMC41IDguNWwxMTQuMy0xMTQuOWM0LjctNC43IDQuNy0xMi4yIDAtMTYuOWwtMTE0LjMtMTE1Yy03LjYtNy42LTIwLjUtMi4yLTIwLjUgOC41VjIxMkgxNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2NGMwIDYuNiA1LjQgMTIgMTIgMTJ6XCJdXG59O1xudmFyIGZhQXJyb3dBbHRDaXJjbGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1hbHQtY2lyY2xlLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMzViXCIsIFwiTTggMjU2QzggMTE5IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTZ6bTI5MiAxMTZWMjU2aDcwLjljMTAuNyAwIDE2LjEtMTMgOC41LTIwLjVMMjY0LjUgMTIxLjJjLTQuNy00LjctMTIuMi00LjctMTYuOSAwbC0xMTUgMTE0LjNjLTcuNiA3LjYtMi4yIDIwLjUgOC41IDIwLjVIMjEydjExNmMwIDYuNiA1LjQgMTIgMTIgMTJoNjRjNi42IDAgMTItNS40IDEyLTEyelwiXVxufTtcbnZhciBmYUFycm93Q2lyY2xlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1jaXJjbGUtZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBhYlwiLCBcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xNDMuNi0yOC45TDI4OCAzMDIuNlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxODIuNmwtNzIuNC03NS41Yy05LjMtOS43LTI0LjgtOS45LTM0LjMtLjRsLTEwLjkgMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDIzOSA0MDQuM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxMzIuNy0xMzIuN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTAuOS0xMWMtOS41LTkuNS0yNS05LjMtMzQuMy40elwiXVxufTtcbnZhciBmYUFycm93Q2lyY2xlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1jaXJjbGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBhOFwiLCBcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHptMjguOS0xNDMuNkwyMDkuNCAyODhIMzkyYzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyMDkuNGw3NS41LTcyLjRjOS43LTkuMyA5LjktMjQuOC40LTM0LjNsLTExLTEwLjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDEwNy43IDIzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTMyLjcgMTMyLjdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMTEtMTAuOWM5LjUtOS41IDkuMy0yNS0uNC0zNC4zelwiXVxufTtcbnZhciBmYUFycm93Q2lyY2xlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctY2lyY2xlLXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGE5XCIsIFwiTTI1NiA4YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OFMzOTMgNTA0IDI1NiA1MDQgOCAzOTMgOCAyNTYgMTE5IDggMjU2IDh6bS0yOC45IDE0My42bDc1LjUgNzIuNEgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE4Mi42bC03NS41IDcyLjRjLTkuNyA5LjMtOS45IDI0LjgtLjQgMzQuM2wxMSAxMC45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDQwNC4zIDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzEuNiAxMDYuM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTExIDEwLjljLTkuNSA5LjYtOS4zIDI1LjEuNCAzNC40elwiXVxufTtcbnZhciBmYUFycm93Q2lyY2xlVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctY2lyY2xlLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGFhXCIsIFwiTTggMjU2QzggMTE5IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTZ6bTE0My42IDI4LjlsNzIuNC03NS41VjM5MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyMDkuNGw3Mi40IDc1LjVjOS4zIDkuNyAyNC44IDkuOSAzNC4zLjRsMTAuOS0xMWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTA3LjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDEwNi4zIDI0MC40Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxMC45IDExYzkuNiA5LjUgMjUuMSA5LjMgMzQuNC0uNHpcIl1cbn07XG52YXIgZmFBcnJvd0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA2M1wiLCBcIk00MTMuMSAyMjIuNWwyMi4yIDIyLjJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjQxIDQ3M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTIuNyAyNzguNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuMi0yMi4yYzkuNS05LjUgMjUtOS4zIDM0LjMuNEwxODQgMzQzLjRWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjR2Mjg3LjRsMTE0LjgtMTIwLjVjOS4zLTkuOCAyNC44LTEwIDM0LjMtLjR6XCJdXG59O1xudmFyIGZhQXJyb3dMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjBcIiwgXCJNMjU3LjUgNDQ1LjFsLTIyLjIgMjIuMmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIwMS40IDQ0LjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuMiAyMi4yYzkuNSA5LjUgOS4zIDI1LS40IDM0LjNMMTM2LjYgMjE2SDQyNGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgxMzYuNmwxMjAuNSAxMTQuOGM5LjggOS4zIDEwIDI0LjguNCAzNC4zelwiXVxufTtcbnZhciBmYUFycm93UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctcmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjFcIiwgXCJNMTkwLjUgNjYuOWwyMi4yLTIyLjJjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMNDQxIDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDYuNiA0NjcuM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjItMjIuMmMtOS41LTkuNS05LjMtMjUgLjQtMzQuM0wzMTEuNCAyOTZIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0di0zMmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgyODcuNEwxOTAuOSAxMDEuMmMtOS44LTkuMy0xMC0yNC44LS40LTM0LjN6XCJdXG59O1xudmFyIGZhQXJyb3dVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA2MlwiLCBcIk0zNC45IDI4OS41bC0yMi4yLTIyLjJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIwNyAzOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxOTQuMyAxOTQuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOUw0MTMgMjg5LjRjLTkuNSA5LjUtMjUgOS4zLTM0LjMtLjRMMjY0IDE2OC42VjQ1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNGgtMzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE2OC42TDY5LjIgMjg5LjFjLTkuMyA5LjgtMjQuOCAxMC0zNC4zLjR6XCJdXG59O1xudmFyIGZhQXJyb3dzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYjJcIiwgXCJNMzUyLjIwMSA0MjUuNzc1bC03OS4xOTYgNzkuMTk2Yy05LjM3MyA5LjM3My0yNC41NjggOS4zNzMtMzMuOTQxIDBsLTc5LjE5Ni03OS4xOTZjLTE1LjExOS0xNS4xMTktNC40MTEtNDAuOTcxIDE2Ljk3MS00MC45N2g1MS4xNjJMMjI4IDI4NEgxMjcuMTk2djUxLjE2MmMwIDIxLjM4Mi0yNS44NTEgMzIuMDktNDAuOTcxIDE2Ljk3MUw3LjAyOSAyNzIuOTM3Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFMODYuMjI1IDE1OS44YzE1LjExOS0xNS4xMTkgNDAuOTcxLTQuNDExIDQwLjk3MSAxNi45NzFWMjI4SDIyOFYxMjcuMTk2aC01MS4yM2MtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNzkuMTk2LTc5LjE5NmM5LjM3My05LjM3MyAyNC41NjgtOS4zNzMgMzMuOTQxIDBsNzkuMTk2IDc5LjE5NmMxNS4xMTkgMTUuMTE5IDQuNDExIDQwLjk3MS0xNi45NzEgNDAuOTcxaC01MS4xNjJWMjI4aDEwMC44MDR2LTUxLjE2MmMwLTIxLjM4MiAyNS44NTEtMzIuMDkgNDAuOTctMTYuOTcxbDc5LjE5NiA3OS4xOTZjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxTDQyNS43NzMgMzUyLjJjLTE1LjExOSAxNS4xMTktNDAuOTcxIDQuNDExLTQwLjk3LTE2Ljk3MVYyODRIMjg0djEwMC44MDRoNTEuMjNjMjEuMzgyIDAgMzIuMDkgMjUuODUxIDE2Ljk3MSA0MC45NzF6XCJdXG59O1xudmFyIGZhQXJyb3dzQWx0SCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtYWx0LWgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzMzdcIiwgXCJNMzc3Ljk0MSAxNjkuOTQxVjIxNkgxMzQuMDU5di00Ni4wNTljMC0yMS4zODItMjUuODUxLTMyLjA5LTQwLjk3MS0xNi45NzFMNy4wMjkgMjM5LjAyOWMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY4IDAgMzMuOTQxbDg2LjA1OSA4Ni4wNTljMTUuMTE5IDE1LjExOSA0MC45NzEgNC40MTEgNDAuOTcxLTE2Ljk3MVYyOTZoMjQzLjg4MnY0Ni4wNTljMCAyMS4zODIgMjUuODUxIDMyLjA5IDQwLjk3MSAxNi45NzFsODYuMDU5LTg2LjA1OWM5LjM3My05LjM3MyA5LjM3My0yNC41NjggMC0zMy45NDFsLTg2LjA1OS04Ni4wNTljLTE1LjExOS0xNS4xMi00MC45NzEtNC40MTItNDAuOTcxIDE2Ljk3elwiXVxufTtcbnZhciBmYUFycm93c0FsdFYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLWFsdC12JyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMzM4XCIsIFwiTTIxNC4wNTkgMzc3Ljk0MUgxNjhWMTM0LjA1OWg0Ni4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFMMTQ0Ljk3MSA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY4LTkuMzczLTMzLjk0MSAwTDI0Ljk3MSA5My4wODhjLTE1LjExOSAxNS4xMTktNC40MTEgNDAuOTcxIDE2Ljk3MSA0MC45NzFIODh2MjQzLjg4Mkg0MS45NDFjLTIxLjM4MiAwLTMyLjA5IDI1Ljg1MS0xNi45NzEgNDAuOTcxbDg2LjA1OSA4Ni4wNTljOS4zNzMgOS4zNzMgMjQuNTY4IDkuMzczIDMzLjk0MSAwbDg2LjA1OS04Ni4wNTljMTUuMTItMTUuMTE5IDQuNDEyLTQwLjk3MS0xNi45Ny00MC45NzF6XCJdXG59O1xudmFyIGZhQXNzaXN0aXZlTGlzdGVuaW5nU3lzdGVtcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyYTJcIiwgXCJNMjE2IDI2MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTQ0LjExMiAzNS44ODgtODAgODAtODBzODAgMzUuODg4IDgwIDgwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtMTMuMjM0LTEwLjc2Ny0yNC0yNC0yNHMtMjQgMTAuNzY2LTI0IDI0em0yNC0xNzZjLTk3LjA0NyAwLTE3NiA3OC45NTMtMTc2IDE3NiAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjgtMTIuNTM2IDI4LTI4YzAtNjYuMTY4IDUzLjgzMi0xMjAgMTIwLTEyMHMxMjAgNTMuODMyIDEyMCAxMjBjMCA3NS4xNjQtNzEuMDA5IDcwLjMxMS03MS45OTcgMTQzLjYyMkwyODggNDA0YzAgMjguNjczLTIzLjMyNyA1Mi01MiA1Mi0xNS40NjQgMC0yOCAxMi41MzYtMjggMjhzMTIuNTM2IDI4IDI4IDI4YzU5LjQ3NSAwIDEwNy44NzYtNDguMzI4IDEwOC0xMDcuNzc0LjU5NS0zNC40MjggNzItNDguMjQgNzItMTQ0LjIyNiAwLTk3LjA0Ny03OC45NTMtMTc2LTE3Ni0xNzZ6bS04MCAyMzZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpNMzIgNDQ4Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTQ4MC0xODcuOTkzYzAtMS41MTgtLjAxMi0zLjAyNS0uMDQ1LTQuNTMxQzUxMC4wNzYgMTQwLjUyNSA0MzYuMTU3IDM4LjQ3IDMyNy45OTQgMS41MTFjLTE0LjYzMy00Ljk5OC0zMC41NDkgMi44MDktMzUuNTUgMTcuNDQyLTUgMTQuNjMzIDIuODEgMzAuNTQ5IDE3LjQ0MiAzNS41NSA4NS45MDYgMjkuMzU0IDE0NC42MSAxMTAuNTEzIDE0Ni4wNzcgMjAxLjk1M2wuMDAzLjE4OGMuMDI2IDEuMTE4LjAzMyAyLjIzNi4wMzMgMy4zNjMgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LjAwMS0xMi41MzYgMjguMDAxLTI4ek0xNTIuOTcxIDQzOS4wMjlsLTgwLTgwTDM5LjAzIDM5Mi45N2w4MCA4MCAzMy45NDEtMzMuOTQxelwiXVxufTtcbnZhciBmYUFzdGVyaXNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FzdGVyaXNrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDY5XCIsIFwiTTQ3OC4yMSAzMzQuMDkzTDMzNiAyNTZsMTQyLjIxLTc4LjA5M2MxMS43OTUtNi40NzcgMTUuOTYxLTIxLjM4NCA5LjIzMi0zMy4wMzdsLTE5LjQ4LTMzLjc0MWMtNi43MjgtMTEuNjUzLTIxLjcyLTE1LjQ5OS0zMy4yMjctOC41MjNMMjk2IDE4Ni43MThsMy40NzUtMTYyLjIwNEMyOTkuNzYzIDExLjA2MSAyODguOTM3IDAgMjc1LjQ4IDBoLTM4Ljk2Yy0xMy40NTYgMC0yNC4yODMgMTEuMDYxLTIzLjk5NCAyNC41MTRMMjE2IDE4Ni43MTggNzcuMjY1IDEwMi42MDdjLTExLjUwNi02Ljk3Ni0yNi40OTktMy4xMy0zMy4yMjcgOC41MjNsLTE5LjQ4IDMzLjc0MWMtNi43MjggMTEuNjUzLTIuNTYyIDI2LjU2IDkuMjMzIDMzLjAzN0wxNzYgMjU2IDMzLjc5IDMzNC4wOTNjLTExLjc5NSA2LjQ3Ny0xNS45NjEgMjEuMzg0LTkuMjMyIDMzLjAzN2wxOS40OCAzMy43NDFjNi43MjggMTEuNjUzIDIxLjcyMSAxNS40OTkgMzMuMjI3IDguNTIzTDIxNiAzMjUuMjgybC0zLjQ3NSAxNjIuMjA0QzIxMi4yMzcgNTAwLjkzOSAyMjMuMDY0IDUxMiAyMzYuNTIgNTEyaDM4Ljk2MWMxMy40NTYgMCAyNC4yODMtMTEuMDYxIDIzLjk5NS0yNC41MTRMMjk2IDMyNS4yODJsMTM4LjczNSA4NC4xMTFjMTEuNTA2IDYuOTc2IDI2LjQ5OSAzLjEzIDMzLjIyNy04LjUyM2wxOS40OC0zMy43NDFjNi43MjgtMTEuNjUzIDIuNTYzLTI2LjU1OS05LjIzMi0zMy4wMzZ6XCJdXG59O1xudmFyIGZhQXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZmFcIiwgXCJNMjU2IDhDMTE4Ljk0MSA4IDggMTE4LjkxOSA4IDI1NmMwIDEzNy4wNTkgMTEwLjkxOSAyNDggMjQ4IDI0OCA0OC4xNTQgMCA5NS4zNDItMTQuMTQgMTM1LjQwOC00MC4yMjMgMTIuMDA1LTcuODE1IDE0LjYyNS0yNC4yODggNS41NTItMzUuMzcybC0xMC4xNzctMTIuNDMzYy03LjY3MS05LjM3MS0yMS4xNzktMTEuNjY3LTMxLjM3My01LjEyOUMzMjUuOTIgNDI5Ljc1NyAyOTEuMzE0IDQ0MCAyNTYgNDQwYy0xMDEuNDU4IDAtMTg0LTgyLjU0Mi0xODQtMTg0UzE1NC41NDIgNzIgMjU2IDcyYzEwMC4xMzkgMCAxODQgNTcuNjE5IDE4NCAxNjAgMCAzOC43ODYtMjEuMDkzIDc5Ljc0Mi01OC4xNyA4My42OTMtMTcuMzQ5LS40NTQtMTYuOTEtMTIuODU3LTEzLjQ3Ni0zMC4wMjRsMjMuNDMzLTEyMS4xMUMzOTQuNjUzIDE0OS43NSAzODMuMzA4IDEzNiAzNjguMjI1IDEzNmgtNDQuOTgxYTEzLjUxOCAxMy41MTggMCAwIDAtMTMuNDMyIDExLjk5M2wtLjAxLjA5MmMtMTQuNjk3LTE3LjkwMS00MC40NDgtMjEuNzc1LTU5Ljk3MS0yMS43NzUtNzQuNTggMC0xMzcuODMxIDYyLjIzNC0xMzcuODMxIDE1MS40NiAwIDY1LjMwMyAzNi43ODUgMTA1Ljg3IDk2IDEwNS44NyAyNi45ODQgMCA1Ny4zNjktMTUuNjM3IDc0Ljk5MS0zOC4zMzMgOS41MjIgMzQuMTA0IDQwLjYxMyAzNC4xMDMgNzAuNzEgMzQuMTAzQzQ2Mi42MDkgMzc5LjQxIDUwNCAzMDcuNzk4IDUwNCAyMzIgNTA0IDk1LjY1MyAzOTQuMDIzIDggMjU2IDh6bS0yMS42OCAzMDQuNDNjLTIyLjI0OSAwLTM2LjA3LTE1LjYyMy0zNi4wNy00MC43NzEgMC00NC45OTMgMzAuNzc5LTcyLjcyOSA1OC42My03Mi43MjkgMjIuMjkyIDAgMzUuNjAxIDE1LjI0MSAzNS42MDEgNDAuNzcgMCA0NS4wNjEtMzMuODc1IDcyLjczLTU4LjE2MSA3Mi43M3pcIl1cbn07XG52YXIgZmFBdGxhcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhdGxhcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjU1OFwiLCBcIk0zMTguMzggMjA4aC0zOS4wOWMtMS40OSAyNy4wMy02LjU0IDUxLjM1LTE0LjIxIDcwLjQxIDI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDF6bTAtMzJjLTUuMjktMzEuMjItMjUuNTktNTcuMTctNTMuMy03MC40MSA3LjY4IDE5LjA2IDEyLjcyIDQzLjM4IDE0LjIxIDcwLjQxaDM5LjA5ek0yMjQgOTcuMzFjLTcuNjkgNy40NS0yMC43NyAzNC40Mi0yMy40MyA3OC42OWg0Ni44N2MtMi42Ny00NC4yNi0xNS43NS03MS4yNC0yMy40NC03OC42OXptLTQxLjA4IDguMjhjLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDFoMzkuMDljMS40OS0yNy4wMyA2LjUzLTUxLjM1IDE0LjIxLTcwLjQxem0wIDE3Mi44MmMtNy42OC0xOS4wNi0xMi43Mi00My4zOC0xNC4yMS03MC40MWgtMzkuMDljNS4yOCAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxek0yNDcuNDMgMjA4aC00Ni44N2MyLjY2IDQ0LjI2IDE1Ljc0IDcxLjI0IDIzLjQzIDc4LjY5IDcuNy03LjQ1IDIwLjc4LTM0LjQzIDIzLjQ0LTc4LjY5ek00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yMjQgNjRjNzAuNjkgMCAxMjggNTcuMzEgMTI4IDEyOHMtNTcuMzEgMTI4LTEyOCAxMjhTOTYgMjYyLjY5IDk2IDE5MiAxNTMuMzEgNjQgMjI0IDY0em0xNjAgMzg0SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODh2NjR6XCJdXG59O1xudmFyIGZhQXRvbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhdG9tJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNWQyXCIsIFwiTTIyMy45OTkwOCwyMjRhMzIsMzIsMCwxLDAsMzIuMDA3ODIsMzJBMzIuMDY0MzEsMzIuMDY0MzEsMCwwLDAsMjIzLjk5OTA4LDIyNFptMjE0LjE3Mi05NmMtMTAuODc3LTE5LjUtNDAuNTA5NzktNTAuNzUtMTE2LjI3NTQ0LTQxLjg3NUMzMDAuMzkxNjgsMzQuODc1LDI2Ny42MzM4NiwwLDIyMy45OTkwOCwwcy03Ni4zOTA2NiwzNC44NzUtOTcuODk2NTMsODYuMTI1QzUwLjMzNjksNzcuMzc1LDIwLjcwNiwxMDguNSw5LjgyOTA3LDEyOC02LjU0OTg0LDE1Ny4zNzUtNS4xNzQ4NCwyMDEuMTI1LDM0Ljk1OCwyNTYtNS4xNzQ4NCwzMTAuODc1LTYuNTQ5ODQsMzU0LjYyNSw5LjgyOTA3LDM4NGMyOS4xMzA4Nyw1Mi4zNzUsMTAxLjY0NjUyLDQzLjYyNSwxMTYuMjczNDgsNDEuODc1QzE0Ny42MDg0Miw0NzcuMTI1LDE4MC4zNjQyOSw1MTIsMjIzLjk5OTA4LDUxMnM3Ni4zOTI2LTM0Ljg3NSw5Ny44OTY1Mi04Ni4xMjVjMTQuNjI4OTEsMS43NSw4Ny4xNDQ1NiwxMC41LDExNi4yNzU0NC00MS44NzVDNDU0LjU1LDM1NC42MjUsNDUzLjE3NSwzMTAuODc1LDQxMy4wNDAxNywyNTYsNDUzLjE3NSwyMDEuMTI1LDQ1NC41NSwxNTcuMzc1LDQzOC4xNzEsMTI4Wk02My4zMzg4NiwzNTJjLTQtNy4yNS0uMTI1LTI0Ljc1LDE1LjAwMzkxLTQ4LjI1LDYuODc2OTUsNi41LDE0LjEyODkxLDEyLjg3NSwyMS44ODA4NywxOS4xMjUsMS42MjUsMTMuNzUsNCwyNy4xMjUsNi43NSw0MC4xMjVDODIuMzQ0NzIsMzYzLjg3NSw2Ny4wOTA4MSwzNTguNjI1LDYzLjMzODg2LDM1MlptMzYuODg0NzgtMTYyLjg3NWMtNy43NTIsNi4yNS0xNS4wMDM5MiwxMi42MjUtMjEuODgwODcsMTkuMTI1LTE1LjEyODkxLTIzLjUtMTkuMDAzOTItNDEtMTUuMDAzOTEtNDguMjUsMy4zNzctNi4xMjUsMTYuMzc4OTEtMTEuNSwzNy44ODQ3OC0xMS41LDEuNzUsMCwzLjg3NS4zNzUsNS43NS4zNzVDMTA0LjA5ODY0LDE2Mi4yNSwxMDEuODQ4NjQsMTc1LjYyNSwxMDAuMjIzNjQsMTg5LjEyNVpNMjIzLjk5OTA4LDY0YzkuNTAxOTUsMCwyMi4yNTU4NiwxMy41LDMzLjg4MjgyLDM3LjI1LTExLjI1MiwzLjc1LTIyLjUwMzkxLDgtMzMuODgyODIsMTIuODc1LTExLjM3Ny00Ljg3NS0yMi42Mjg5Mi05LjEyNS0zMy44ODI4My0xMi44NzVDMjAxLjc0NTE2LDc3LjUsMjE0LjQ5NzEyLDY0LDIyMy45OTkwOCw2NFptMCwzODRjLTkuNTAyLDAtMjIuMjUzOTItMTMuNS0zMy44ODI4My0zNy4yNSwxMS4yNTM5MS0zLjc1LDIyLjUwNTg3LTgsMzMuODgyODMtMTIuODc1QzIzNS4zNzgsNDAyLjc1LDI0Ni42Mjk5NCw0MDcsMjU3Ljg4MTksNDEwLjc1LDI0Ni4yNTQ5NCw0MzQuNSwyMzMuNTAxLDQ0OCwyMjMuOTk5MDgsNDQ4Wm0wLTExMmE4MCw4MCwwLDEsMSw4MC04MEE4MC4wMDAyMyw4MC4wMDAyMywwLDAsMSwyMjMuOTk5MDgsMzM2Wk0zODQuNjU5MywzNTJjLTMuNjI1LDYuNjI1LTE5LjAwMzkyLDExLjg3NS00My42MzQ3OSwxMSwyLjc1Mi0xMyw1LjEyNy0yNi4zNzUsNi43NTItNDAuMTI1LDcuNzUxOTUtNi4yNSwxNS4wMDM5MS0xMi42MjUsMjEuODc4OTEtMTkuMTI1QzM4NC43ODQzLDMyNy4yNSwzODguNjU5MywzNDQuNzUsMzg0LjY1OTMsMzUyWk0zNjkuNjU1MzgsMjA4LjI1Yy02Ljg3NS02LjUtMTQuMTI3LTEyLjg3NS0yMS44Nzg5MS0xOS4xMjUtMS42MjUtMTMuNS0zLjg3NS0yNi44NzUtNi43NTItNDAuMjUsMS44NzUsMCw0LjAwMi0uMzc1LDUuNzUyLS4zNzUsMjEuNTAzOTEsMCwzNC41MDc4Miw1LjM3NSwzNy44ODI4MywxMS41QzM4OC42NTkzLDE2Ny4yNSwzODQuNzg0MywxODQuNzUsMzY5LjY1NTM4LDIwOC4yNVpcIl1cbn07XG52YXIgZmFBdWRpb0Rlc2NyaXB0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2F1ZGlvLWRlc2NyaXB0aW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjllXCIsIFwiTTE2Mi45MjUgMjM4LjcwOWw4LjgyMiAzMC42NTVoLTI1LjYwNmw5LjA0MS0zMC42NTJjMS4yNzctNC40MjEgMi42NTEtOS45OTQgMy44NzItMTUuMjQ1IDEuMjIgNS4yNTEgMi41OTQgMTAuODIzIDMuODcxIDE1LjI0MnptMTY2LjQ3NC0zMi4wOTloLTE0LjUyM3Y5OC43ODFoMTQuNTIzYzI5Ljc3NiAwIDQ2LjE3NS0xNy42NzggNDYuMTc1LTQ5Ljc3NiAwLTMyLjIzOS0xNy40OS00OS4wMDUtNDYuMTc1LTQ5LjAwNXpNNTEyIDExMnYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMjQ1LjQ1OSAzMzYuMTM5bC01Ny4wOTctMTY4QTEyLjAwMSAxMi4wMDEgMCAwIDAgMTc3IDE2MGgtMzUuODk0YTEyLjAwMSAxMi4wMDEgMCAwIDAtMTEuMzYyIDguMTM5bC01Ny4wOTcgMTY4QzcwLjAwMyAzNDMuOTIyIDc1Ljc4OSAzNTIgODQuMDA5IDM1MmgyOS4xMzNhMTIgMTIgMCAwIDAgMTEuNTM1LTguNjkzbDguNTc0LTI5LjkwNmg1MS4zNjdsOC43OTMgMjkuOTc3QTEyIDEyIDAgMCAwIDIwNC45MjYgMzUyaDI5LjE3MmM4LjIyIDAgMTQuMDA2LTguMDc4IDExLjM2MS0xNS44NjF6bTE4NC43MDEtODAuNTI1YzAtNTguOTc3LTM3LjkxOS05NS42MTQtOTguOTYtOTUuNjE0aC01Ny4zNjZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJIMzMxLjJjNjEuMDQxIDAgOTguOTYtMzYuOTMzIDk4Ljk2LTk2LjM4NnpcIl1cbn07XG52YXIgZmFBd2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhd2FyZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU1OVwiLCBcIk05Ny4xMiAzNjIuNjNjLTguNjktOC42OS00LjE2LTYuMjQtMjUuMTItMTEuODUtOS41MS0yLjU1LTE3Ljg3LTcuNDUtMjUuNDMtMTMuMzJMMS4yIDQ0OC43Yy00LjM5IDEwLjc3IDMuODEgMjIuNDcgMTUuNDMgMjIuMDNsNTIuNjktMi4wMUwxMDUuNTYgNTA3YzggOC40NCAyMi4wNCA1LjgxIDI2LjQzLTQuOTZsNTIuMDUtMTI3LjYyYy0xMC44NCA2LjA0LTIyLjg3IDkuNTgtMzUuMzEgOS41OC0xOS41IDAtMzcuODItNy41OS01MS42MS0yMS4zN3pNMzgyLjggNDQ4LjdsLTQ1LjM3LTExMS4yNGMtNy41NiA1Ljg4LTE1LjkyIDEwLjc3LTI1LjQzIDEzLjMyLTIxLjA3IDUuNjQtMTYuNDUgMy4xOC0yNS4xMiAxMS44NS0xMy43OSAxMy43OC0zMi4xMiAyMS4zNy01MS42MiAyMS4zNy0xMi40NCAwLTI0LjQ3LTMuNTUtMzUuMzEtOS41OEwyNTIgNTAyLjA0YzQuMzkgMTAuNzcgMTguNDQgMTMuNCAyNi40MyA0Ljk2bDM2LjI1LTM4LjI4IDUyLjY5IDIuMDFjMTEuNjIuNDQgMTkuODItMTEuMjcgMTUuNDMtMjIuMDN6TTI2MyAzNDBjMTUuMjgtMTUuNTUgMTcuMDMtMTQuMjEgMzguNzktMjAuMTQgMTMuODktMy43OSAyNC43NS0xNC44NCAyOC40Ny0yOC45OCA3LjQ4LTI4LjQgNS41NC0yNC45NyAyNS45NS00NS43NSAxMC4xNy0xMC4zNSAxNC4xNC0yNS40NCAxMC40Mi0zOS41OC03LjQ3LTI4LjM4LTcuNDgtMjQuNDIgMC01Mi44MyAzLjcyLTE0LjE0LS4yNS0yOS4yMy0xMC40Mi0zOS41OC0yMC40MS0yMC43OC0xOC40Ny0xNy4zNi0yNS45NS00NS43NS0zLjcyLTE0LjE0LTE0LjU4LTI1LjE5LTI4LjQ3LTI4Ljk4LTI3Ljg4LTcuNjEtMjQuNTItNS42Mi00NC45NS0yNi40MS0xMC4xNy0xMC4zNS0yNS0xNC40LTM4Ljg5LTEwLjYxLTI3Ljg3IDcuNi0yMy45OCA3LjYxLTUxLjkgMC0xMy44OS0zLjc5LTI4LjcyLjI1LTM4Ljg5IDEwLjYxLTIwLjQxIDIwLjc4LTE3LjA1IDE4LjgtNDQuOTQgMjYuNDEtMTMuODkgMy43OS0yNC43NSAxNC44NC0yOC40NyAyOC45OC03LjQ3IDI4LjM5LTUuNTQgMjQuOTctMjUuOTUgNDUuNzUtMTAuMTcgMTAuMzUtMTQuMTUgMjUuNDQtMTAuNDIgMzkuNTggNy40NyAyOC4zNiA3LjQ4IDI0LjQgMCA1Mi44Mi0zLjcyIDE0LjE0LjI1IDI5LjIzIDEwLjQyIDM5LjU5IDIwLjQxIDIwLjc4IDE4LjQ3IDE3LjM1IDI1Ljk1IDQ1Ljc1IDMuNzIgMTQuMTQgMTQuNTggMjUuMTkgMjguNDcgMjguOThDMTA0LjYgMzI1Ljk2IDEwNi4yNyAzMjUgMTIxIDM0MGMxMy4yMyAxMy40NyAzMy44NCAxNS44OCA0OS43NCA1LjgyYTM5LjY3NiAzOS42NzYgMCAwIDEgNDIuNTMgMGMxNS44OSAxMC4wNiAzNi41IDcuNjUgNDkuNzMtNS44MnpNOTcuNjYgMTc1Ljk2YzAtNTMuMDMgNDIuMjQtOTYuMDIgOTQuMzQtOTYuMDJzOTQuMzQgNDIuOTkgOTQuMzQgOTYuMDItNDIuMjQgOTYuMDItOTQuMzQgOTYuMDItOTQuMzQtNDIuOTktOTQuMzQtOTYuMDJ6XCJdXG59O1xudmFyIGZhQmFieSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWJ5JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNzdjXCIsIFwiTTE5MiAxNjBjNDQuMiAwIDgwLTM1LjggODAtODBTMjM2LjIgMCAxOTIgMHMtODAgMzUuOC04MCA4MCAzNS44IDgwIDgwIDgwem0tNTMuNCAyNDguOGwyNS42LTMyLTYxLjUtNTEuMkw1Ni44IDM4M2MtMTEuNCAxNC4yLTExLjcgMzQuNC0uOCA0OWw0OCA2NGM3LjkgMTAuNSAxOS45IDE2IDMyIDE2IDguMyAwIDE2LjgtMi42IDI0LTggMTcuNy0xMy4yIDIxLjItMzguMyA4LTU2bC0yOS40LTM5LjJ6bTE0Mi43LTgzLjJsLTYxLjUgNTEuMiAyNS42IDMyTDIxNiA0NDhjLTEzLjIgMTcuNy05LjcgNDIuOCA4IDU2IDcuMiA1LjQgMTUuNiA4IDI0IDggMTIuMiAwIDI0LjItNS41IDMyLTE2bDQ4LTY0YzEwLjktMTQuNiAxMC42LTM0LjgtLjgtNDlsLTQ1LjktNTcuNHpNMzc2LjcgMTQ1Yy0xMi43LTE4LjEtMzcuNi0yMi40LTU1LjctOS44bC00MC42IDI4LjVjLTUyLjcgMzctMTI0LjIgMzctMTc2LjggMEw2MyAxMzUuM0M0NC45IDEyMi42IDIwIDEyNyA3LjMgMTQ1LTUuNCAxNjMuMS0xIDE4OCAxNyAyMDAuN2w0MC42IDI4LjVjMTcgMTEuOSAzNS40IDIwLjkgNTQuNCAyNy45VjI4OGgxNjB2LTMwLjhjMTktNyAzNy40LTE2IDU0LjQtMjcuOWw0MC42LTI4LjVjMTguMS0xMi44IDIyLjQtMzcuNyA5LjctNTUuOHpcIl1cbn07XG52YXIgZmFCYWJ5Q2FycmlhZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFieS1jYXJyaWFnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc3ZFwiLCBcIk0xNDQuOCAxN2MtMTEuMy0xNy44LTM3LjItMjIuOC01NC05LjRDMzUuMyA1MS45IDAgMTE4IDAgMTkyaDI1NkwxNDQuOCAxN3pNNDk2IDk2aC00OGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NjRIMGMwIDUwLjYgMjMgOTYuNCA2MC4zIDEzMC43QzI1LjcgMzYzLjYgMCAzOTQuNyAwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtOC45LTEuOC0xNy4yLTQuNC0yNS4yIDIxLjYgNS45IDQ0LjYgOS4yIDY4LjQgOS4yczQ2LjktMy4zIDY4LjQtOS4yYy0yLjcgOC00LjQgMTYuMy00LjQgMjUuMiAwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzcuMy0yNS43LTY4LjQtNjAuMy03Ny4zQzQyNSAzMjAuNCA0NDggMjc0LjYgNDQ4IDIyNHYtNjRoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTgwIDQ2NGMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6bTMyMC0zMmMwIDE3LjYtMTQuNCAzMi0zMiAzMnMtMzItMTQuNC0zMi0zMiAxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzJ6XCJdXG59O1xudmFyIGZhQmFja3NwYWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY2tzcGFjZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU1YVwiLCBcIk01NzYgNjRIMjA1LjI2QTYzLjk3IDYzLjk3IDAgMCAwIDE2MCA4Mi43NUw5LjM3IDIzMy4zN2MtMTIuNSAxMi41LTEyLjUgMzIuNzYgMCA0NS4yNUwxNjAgNDI5LjI1YzEyIDEyIDI4LjI4IDE4Ljc1IDQ1LjI1IDE4Ljc1SDU3NmMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0VjEyOGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tODQuNjkgMjU0LjA2YzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNsLTIyLjYyIDIyLjYyYy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwTDM4NCAzMDEuMjVsLTYyLjA2IDYyLjA2Yy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwbC0yMi42Mi0yMi42MmMtNi4yNS02LjI1LTYuMjUtMTYuMzggMC0yMi42M0wzMzguNzUgMjU2bC02Mi4wNi02Mi4wNmMtNi4yNS02LjI1LTYuMjUtMTYuMzggMC0yMi42M2wyMi42Mi0yMi42MmM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwTDM4NCAyMTAuNzVsNjIuMDYtNjIuMDZjNi4yNS02LjI1IDE2LjM4LTYuMjUgMjIuNjMgMGwyMi42MiAyMi42MmM2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzTDQyOS4yNSAyNTZsNjIuMDYgNjIuMDZ6XCJdXG59O1xudmFyIGZhQmFja3dhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFja3dhcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNGFcIiwgXCJNMTEuNSAyODAuNmwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yem0yNTYgMGwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yelwiXVxufTtcbnZhciBmYUJhY29uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY29uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmN2U1XCIsIFwiTTIxOC45MiAzMzYuMzljMzQuODktMzQuODkgNDQuMi01OS43IDU0LjA1LTg2IDEwLjYxLTI4LjI5IDIxLjU5LTU3LjU0IDYxLjM3LTk3LjM0czY5LjA1LTUwLjc3IDk3LjM1LTYxLjM4YzIzLjg4LTkgNDYuNjQtMTcuNjggNzYuNzktNDUuMzdMNDcwLjgxIDguOTFhMzEgMzEgMCAwIDAtNDAuMTgtMi44M2MtMTMuNjQgMTAuMS0yNS4xNSAxNC4zOS00MSAyMC4zQzI0NyA3OS41MiAyMDkuMjYgMTkxLjI5IDIwMC42NSAyMTQuMWMtMjkuNzUgNzguODMtODkuNTUgOTQuNjgtOTguNzIgOTguMDktMjQuODYgOS4yNi01NC43MyAyMC4zOC05MS4wNyA1MC4zNkMtMyAzNzQtMy42MyAzOTUgOS4wNyA0MDcuNjFsMzUuNzYgMzUuNTFDODAgNDEwLjUyIDEwNyA0MDAuMTUgMTMzIDM5MC4zOWMyNi4yNy05Ljg0IDUxLjA2LTE5LjEyIDg1LjkyLTU0em0zNDgtMjMybC0zNS43NS0zNS41MWMtMzUuMTkgMzIuNjMtNjIuMTggNDMtODguMjUgNTIuNzktMjYuMjYgOS44NS01MS4wNiAxOS4xNi04NS45NSA1NHMtNDQuMTkgNTkuNjktNTQgODZDMjkyLjMzIDI5MCAyODEuMzQgMzE5LjIyIDI0MS41NSAzNTlzLTY5IDUwLjczLTk3LjMgNjEuMzJjLTIzLjg2IDktNDYuNjEgMTcuNjYtNzYuNzIgNDUuMzNsMzcuNjggMzcuNDNhMzEgMzEgMCAwIDAgNDAuMTggMi44MmMxMy42LTEwLjA2IDI1LjA5LTE0LjM0IDQwLjk0LTIwLjI0IDE0Mi4yLTUzIDE4MC0xNjQuMSAxODguOTQtMTg3LjY5QzQwNSAyMTkuMTggNDY0LjggMjAzLjMgNDc0IDE5OS44NmMyNC44Ny05LjI3IDU0Ljc0LTIwLjQgOTEuMTEtNTAuNDEgMTMuODktMTEuNCAxNC41Mi0zMi40NSAxLjgyLTQ1LjA1elwiXVxufTtcbnZhciBmYUJhY3RlcmlhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY3RlcmlhJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDU5XCIsIFwiTTI3Mi4zNSwyMjYuNEExNy43MSwxNy43MSwwLDAsMCwyODEuNDYsMjAzbC00LTkuMDhhMTIxLjI5LDEyMS4yOSwwLDAsMSwxMi4zNi0zLjA4QTgzLjM0LDgzLjM0LDAsMCwwLDMyMy41NywxNzdsMTAsOWExNy43NiwxNy43NiwwLDEsMCwyMy45Mi0yNi4yN2wtOS43Mi04Ljc2YTgzLjEyLDgzLjEyLDAsMCwwLDExLjY1LTQ4LjE4bDExLjg1LTMuNTFhMTcuNzMsMTcuNzMsMCwxLDAtMTAuMTUtMzRsLTExLjM0LDMuMzZhODQsODQsMCwwLDAtMzYuMzgtMzUuNTdsMi44NC0xMC44NWExNy44LDE3LjgsMCwwLDAtMzQuNDctOC45M2wtMi44MiwxMC43OGE4My4yNSw4My4yNSwwLDAsMC0xNi43NCwxLjFDMjUwLjgzLDI3LDI0MCwzMC4yMiwyMjkuMSwzMy4zOWwtMy4zOC05LjQ2YTE3LjgsMTcuOCwwLDAsMC0zMy41NiwxMS44OWwzLjQ5LDkuOGEyODYuNzQsMjg2Ljc0LDAsMCwwLTQzLjk0LDIzLjU3bC02LjMyLTguNDNhMTcuOSwxNy45LDAsMCwwLTI0Ljk0LTMuNkExNy42OSwxNy42OSwwLDAsMCwxMTYuODQsODJsNi40NSw4LjYxYTI4Ni41OSwyODYuNTksMCwwLDAtMzQuOTUsMzUuMzNsLTguODItNi40MmExNy44NCwxNy44NCwwLDAsMC0yNC44OSwzLjg2LDE3LjY2LDE3LjY2LDAsMCwwLDMuODgsMjQuNzdsOC44OCw2LjQ3YTI4Ni42LDI4Ni42LDAsMCwwLTIzLDQzLjkxbC0xMC40OC0zLjU5YTE3LjczLDE3LjczLDAsMSwwLTExLjU5LDMzLjUyTDMyLjY3LDIzMmMtMi43OSwxMC01Ljc5LDE5Ljg0LTcuNTIsMzAuMjJhODMuMTYsODMuMTYsMCwwLDAtLjgyLDE5bC0xMS41OCwzLjQzYTE3LjczLDE3LjczLDAsMSwwLDEwLjEzLDM0bDExLjI3LTMuMzNhODMuNTEsODMuNTEsMCwwLDAsMzYuMzksMzUuNDNsLTIuODgsMTEuMDZhMTcuODEsMTcuODEsMCwwLDAsMzQuNDgsOC45MmwyLjg3LTExYzEsMCwyLjA3LjI2LDMuMS4yNmE4My4zOSw4My4zOSwwLDAsMCw0NS42NS0xMy44OGw4LjU5LDguOGExNy43NywxNy43NywwLDAsMCwyNS41Ni0yNC43bC05LjE0LTkuMzdhODMuNDEsODMuNDEsMCwwLDAsMTIuMDgtMzEuMDUsMTE5LjA4LDExOS4wOCwwLDAsMSwzLjg3LTE1LjUzbDksNC4yMmExNy43NCwxNy43NCwwLDEsMCwxNS4xNS0zMi4wOWwtOC44LTQuMTFjLjY3LTEsMS4yLTIuMDgsMS45LTMuMDVhMTE5Ljg5LDExOS44OSwwLDAsMSw3Ljg3LTkuNDEsMTIxLjczLDEyMS43MywwLDAsMSwxMS42NS0xMS40LDExOS40OSwxMTkuNDksMCwwLDEsOS45NC03LjgyYzEuMTItLjc3LDIuMzItMS40MiwzLjQ3LTIuMTVsMy45Miw4Ljg1YTE3Ljg2LDE3Ljg2LDAsMCwwLDE2LjMyLDEwLjU4QTE4LjE0LDE4LjE0LDAsMCwwLDI3Mi4zNSwyMjYuNFpNMTI4LDI1NmEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSwxMjgsMjU2Wm04MC05NmExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSwyMDgsMTYwWm00MzEuMjYsNDUuM2ExNy43OSwxNy43OSwwLDAsMC0xNy4wNi0xMi42OSwxNy41NSwxNy41NSwwLDAsMC01LjA4Ljc0bC0xMS4yNywzLjMzYTgzLjYxLDgzLjYxLDAsMCwwLTM2LjM5LTM1LjQzbDIuODgtMTEuMDZhMTcuODEsMTcuODEsMCwwLDAtMzQuNDgtOC45MWwtMi44NywxMWMtMSwwLTIuMDctLjI2LTMuMS0uMjZhODMuMzIsODMuMzIsMCwwLDAtNDUuNjUsMTMuODlsLTguNTktOC44MWExNy43NywxNy43NywwLDAsMC0yNS41NiwyNC43bDkuMTQsOS4zN2E4My4yOCw4My4yOCwwLDAsMC0xMi4wOCwzMS4wNiwxMTkuMzQsMTE5LjM0LDAsMCwxLTMuODcsMTUuNTJsLTktNC4yMmExNy43NCwxNy43NCwwLDEsMC0xNS4xNSwzMi4wOWw4LjgsNC4xMWMtLjY3LDEtMS4yLDIuMDgtMS44OSwzLjA1YTExNy43MSwxMTcuNzEsMCwwLDEtNy45NCw5LjQ3LDExOSwxMTksMCwwLDEtMTEuNTcsMTEuMzMsMTIxLjU5LDEyMS41OSwwLDAsMS0xMCw3LjgzYy0xLjEyLjc3LTIuMzIsMS40Mi0zLjQ3LDIuMTVsLTMuOTItOC44NWExNy44NiwxNy44NiwwLDAsMC0xNi4zMi0xMC41OCwxOC4xNCwxOC4xNCwwLDAsMC03LjE4LDEuNUExNy43MSwxNy43MSwwLDAsMCwzNTguNTQsMzA5bDQsOS4wOGExMTguNzEsMTE4LjcxLDAsMCwxLTEyLjM2LDMuMDgsODMuMzQsODMuMzQsMCwwLDAtMzMuNzcsMTMuOWwtMTAtOWExNy43NywxNy43NywwLDEsMC0yMy45MiwyNi4yOGw5LjcyLDguNzVhODMuMTIsODMuMTIsMCwwLDAtMTEuNjUsNDguMThsLTExLjg2LDMuNTFhMTcuNzMsMTcuNzMsMCwxLDAsMTAuMTYsMzRsMTEuMzQtMy4zNkE4NCw4NCwwLDAsMCwzMjYuNjEsNDc5bC0yLjg0LDEwLjg1YTE3LjgsMTcuOCwwLDAsMCwzNC40Nyw4LjkzTDM2MS4wNiw0ODhhODMuMyw4My4zLDAsMCwwLDE2Ljc0LTEuMWMxMS4zNy0xLjg5LDIyLjI0LTUuMDcsMzMuMS04LjI0bDMuMzgsOS40NmExNy44LDE3LjgsMCwwLDAsMzMuNTYtMTEuODlsLTMuNDktOS43OWEyODcuNjYsMjg3LjY2LDAsMCwwLDQzLjk0LTIzLjU4bDYuMzIsOC40M2ExNy44OCwxNy44OCwwLDAsMCwyNC45MywzLjZBMTcuNjcsMTcuNjcsMCwwLDAsNTIzLjE2LDQzMGwtNi40NS04LjYxYTI4Ny4zNywyODcuMzcsMCwwLDAsMzQuOTUtMzUuMzRsOC44Miw2LjQyYTE3Ljc2LDE3Ljc2LDAsMSwwLDIxLTI4LjYzbC04Ljg4LTYuNDZhMjg3LjE3LDI4Ny4xNywwLDAsMCwyMy00My45MmwxMC40OCwzLjU5YTE3LjczLDE3LjczLDAsMSwwLDExLjU5LTMzLjUyTDYwNy4zMywyODBjMi43OS0xMCw1Ljc5LTE5Ljg0LDcuNTItMzAuMjFhODMuMjcsODMuMjcsMCwwLDAsLjgyLTE5LjA1bDExLjU4LTMuNDNBMTcuNywxNy43LDAsMCwwLDYzOS4yNiwyMDUuM1pNNDE2LDQxNmEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSw0MTYsNDE2WlwiXVxufTtcbnZhciBmYUJhY3Rlcml1bSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWN0ZXJpdW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNWFcIiwgXCJNNTExLDEwMi45M0EyMy43NiwyMy43NiwwLDAsMCw0ODEuNDcsODdsLTE1LjEyLDQuNDhhMTExLjg1LDExMS44NSwwLDAsMC00OC41LTQ3LjQybDMuNzktMTQuNDdhMjMuNzQsMjMuNzQsMCwwLDAtNDYtMTEuOTFsLTMuNzYsMTQuMzdhMTExLjk0LDExMS45NCwwLDAsMC0yMi4zMywxLjQ3LDM4Ni43NCwzODYuNzQsMCwwLDAtNDQuMzMsMTAuNDFsLTQuMy0xMmEyMy43NCwyMy43NCwwLDAsMC00NC43NSwxNS44NWw0LjMsMTIuMDVhMzgzLjQsMzgzLjQsMCwwLDAtNTguNjksMzEuODNsLTgtMTAuNjNhMjMuODUsMjMuODUsMCwwLDAtMzMuMjQtNC44LDIzLjU3LDIzLjU3LDAsMCwwLTQuODMsMzMuMDlsOCwxMC42M2EzODYuMTQsMzg2LjE0LDAsMCwwLTQ2LjcsNDcuNDRsLTExLThhMjMuNjgsMjMuNjgsMCwxLDAtMjgsMzguMTdsMTEuMDksOC4wNmEzODMuNDUsMzgzLjQ1LDAsMCwwLTMwLjkyLDU4Ljc1bC0xMi45My00LjQzYTIzLjY1LDIzLjY1LDAsMSwwLTE1LjQ3LDQ0LjY5bDEzLDQuNDhhMzg1LjgxLDM4NS44MSwwLDAsMC05LjMsNDAuNTNBMTExLjU4LDExMS41OCwwLDAsMCwzMi40NCwzNzVMMTcsMzc5LjU2YTIzLjY0LDIzLjY0LDAsMCwwLDEzLjUxLDQ1LjMxbDE1LTQuNDRhMTExLjQ5LDExMS40OSwwLDAsMCw0OC41Myw0Ny4yNGwtMy44NSwxNC43NWEyMy42NiwyMy42NiwwLDAsMCwxNywyOC44MywyNC43LDI0LjcsMCwwLDAsNiwuNzUsMjMuNzMsMjMuNzMsMCwwLDAsMjMtMTcuN0wxNDAsNDc5LjY3YzEuMzcuMDUsMi43Ny4zNSw0LjEzLjM1QTExMS4yMiwxMTEuMjIsMCwwLDAsMjA1LDQ2MS41bDExLjQ1LDExLjc0YTIzLjcsMjMuNywwLDAsMCwzNC4wOC0zMi45M2wtMTIuMTktMTIuNWExMTEsMTExLDAsMCwwLDE2LjExLTQxLjQsMTU4LjY5LDE1OC42OSwwLDAsMSw1LjE2LTIwLjcxbDEyLDUuNjRhMjMuNjYsMjMuNjYsMCwxLDAsMjAuMTktNDIuNzlsLTExLjcyLTUuNDljLjg5LTEuMzIsMS41OS0yLjc3LDIuNTItNC4wNmExNTcuODYsMTU3Ljg2LDAsMCwxLDEwLjQ2LTEyLjQ5LDE1OS41LDE1OS41LDAsMCwxLDE1LjU5LTE1LjI4LDE2Mi4xOCwxNjIuMTgsMCwwLDEsMTMuMjMtMTAuNGMxLjUtMSwzLjEtMS44OSw0LjYzLTIuODdsNS4yMywxMS44YTIzLjc0LDIzLjc0LDAsMCwwLDQzLjQ4LTE5LjA4bC01LjM2LTEyLjExYTE1OC44NywxNTguODcsMCwwLDEsMTYuNDktNC4xLDExMSwxMTEsMCwwLDAsNDUtMTguNTRsMTMuMzMsMTJhMjMuNjksMjMuNjksMCwxLDAsMzEuODgtMzVsLTEyLjk0LTExLjY3QTExMC44MywxMTAuODMsMCwwLDAsNDc5LjIxLDEzN0w0OTUsMTMyLjMyQTIzLjYxLDIzLjYxLDAsMCwwLDUxMSwxMDIuOTNaTTE2MCwzNjhhNDgsNDgsMCwxLDEsNDgtNDhBNDgsNDgsMCwwLDEsMTYwLDM2OFptODAtMTM2YTI0LDI0LDAsMSwxLDI0LTI0QTI0LDI0LDAsMCwxLDI0MCwyMzJaXCJdXG59O1xudmFyIGZhQmFoYWkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFoYWknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NjZcIiwgXCJNNDk2LjI1IDIwMi41MmwtMTEwLTE1LjQ0IDQxLjgyLTEwNC4zNGM2LjY3LTE2LjY0LTExLjYtMzIuMTgtMjYuNTktMjIuNjNMMzA3LjQ0IDEyMCAyNzMuMzUgMTIuODJDMjcwLjY0IDQuMjcgMjYzLjMyIDAgMjU2IDBjLTcuMzIgMC0xNC42NCA0LjI3LTE3LjM1IDEyLjgybC0zNC4wOSAxMDcuMTktOTQuMDQtNTkuODljLTE0Ljk5LTkuNTUtMzMuMjUgNS45OS0yNi41OSAyMi42M2w0MS44MiAxMDQuMzQtMTEwIDE1LjQzYy0xNy41NCAyLjQ2LTIxLjY4IDI2LjI3LTYuMDMgMzQuNjdsOTguMTYgNTIuNjYtNzQuNDggODMuNTRjLTEwLjkyIDEyLjI1LTEuNzIgMzAuOTMgMTMuMjkgMzAuOTMgMS4zMSAwIDIuNjctLjE0IDQuMDctLjQ1bDEwOC41Ny0yMy42NS00LjExIDExMi41NWMtLjQzIDExLjY1IDguODcgMTkuMjIgMTguNDEgMTkuMjIgNS4xNSAwIDEwLjM5LTIuMjEgMTQuMi03LjE4bDY4LjE4LTg4LjkgNjguMTggODguOWMzLjgxIDQuOTcgOS4wNCA3LjE4IDE0LjIgNy4xOCA5LjU0IDAgMTguODQtNy41NyAxOC40MS0xOS4yMmwtNC4xMS0xMTIuNTUgMTA4LjU3IDIzLjY1YzE3LjM2IDMuNzYgMjkuMjEtMTcuMiAxNy4zNS0zMC40OWwtNzQuNDgtODMuNTQgOTguMTYtNTIuNjZjMTUuNjQtOC4zOSAxMS41LTMyLjItNi4wNC0zNC42NnpNMzM4LjUxIDMxMS42OGwtNTEuODktMTEuMyAxLjk3IDUzLjc5TDI1NiAzMTEuNjhsLTMyLjU5IDQyLjQ5IDEuOTYtNTMuNzktNTEuODkgMTEuMyAzNS42LTM5LjkzLTQ2LjkyLTI1LjE3IDUyLjU3LTcuMzgtMTkuOTktNDkuODcgNDQuOTUgMjguNjJMMjU2IDE2Ni43MmwxNi4yOSA1MS4yMyA0NC45NS0yOC42Mi0xOS45OSA0OS44NyA1Mi41NyA3LjM4LTQ2LjkyIDI1LjE3IDM1LjYxIDM5LjkzelwiXVxufTtcbnZhciBmYUJhbGFuY2VTY2FsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWxhbmNlLXNjYWxlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjRlXCIsIFwiTTI1NiAzMzZoLS4wMmMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMEMtMi4wNiAzMjguNzUuMDIgMzIwLjMzLjAyIDMzNkgwYzAgNDQuMTggNTcuMzEgODAgMTI4IDgwczEyOC0zNS44MiAxMjgtODB6TTEyOCAxNzZsNzIgMTQ0SDU2bDcyLTE0NHptNTExLjk4IDE2MGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMzIwbDcyLTE0NCA3MiAxNDRINDQwem04OCAxMjhIMzUyVjE1My4yNWMyMy41MS0xMC4yOSA0MS4xNi0zMS40OCA0Ni4zOS01Ny4yNUg1MjhjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzgzLjY0QzM2OS4wNCAxMi42OCAzNDYuMDkgMCAzMjAgMHMtNDkuMDQgMTIuNjgtNjMuNjQgMzJIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxMjkuNjFjNS4yMyAyNS43NiAyMi44NyA0Ni45NiA0Ni4zOSA1Ny4yNVY0NDhIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUJhbGFuY2VTY2FsZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFsYW5jZS1zY2FsZS1sZWZ0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTE1XCIsIFwiTTUyOCA0NDhIMzUyVjE1My4yNWMyMC40Mi04Ljk0IDM2LjEtMjYuMjIgNDMuMzgtNDcuNDdsMTMyLTQ0LjI2YzguMzgtMi44MSAxMi44OS0xMS44OCAxMC4wOC0yMC4yNmwtMTAuMTctMzAuMzRDNTI0LjQ4IDIuNTQgNTE1LjQxLTEuOTcgNTA3LjAzLjg0TDM4OS4xMSA0MC4zN0MzNzUuMyAxNi4zNiAzNDkuNjkgMCAzMjAgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MCAwIDMuNDMuNTkgNi43MSAxLjAxIDEwLjAzbC0xMjguMzkgNDMuMDVjLTguMzggMi44MS0xMi44OSAxMS44OC0xMC4wOCAyMC4yNmwxMC4xNyAzMC4zNGMyLjgxIDguMzggMTEuODggMTIuODkgMjAuMjYgMTAuMDhsMTQyLjA1LTQ3LjYzYzQuMDcgMi43NyA4LjQzIDUuMTIgMTIuOTkgNy4xMlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMtLjAxLTguODQtNy4xNy0xNi0xNi4wMS0xNnptMTExLjk4LTE0NGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMjg4bDcyLTE0NCA3MiAxNDRINDQwem0tMjY5LjA3LTM3LjUxYy0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDQyNC43NS4wMiA0MTYuMzMuMDIgNDMySDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MXpNNTYgNDE2bDcyLTE0NCA3MiAxNDRINTZ6XCJdXG59O1xudmFyIGZhQmFsYW5jZVNjYWxlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFsYW5jZS1zY2FsZS1yaWdodCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUxNlwiLCBcIk05NiA0NjR2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2VjE1My4yNWM0LjU2LTIgOC45Mi00LjM1IDEyLjk5LTcuMTJsMTQyLjA1IDQ3LjYzYzguMzggMi44MSAxNy40NS0xLjcxIDIwLjI2LTEwLjA4bDEwLjE3LTMwLjM0YzIuODEtOC4zOC0xLjcxLTE3LjQ1LTEwLjA4LTIwLjI2bC0xMjguNC00My4wNWMuNDItMy4zMiAxLjAxLTYuNiAxLjAxLTEwLjAzIDAtNDQuMTgtMzUuODItODAtODAtODAtMjkuNjkgMC01NS4zIDE2LjM2LTY5LjExIDQwLjM3TDEzMi45Ni44M2MtOC4zOC0yLjgxLTE3LjQ1IDEuNzEtMjAuMjYgMTAuMDhsLTEwLjE3IDMwLjM0Yy0yLjgxIDguMzggMS43MSAxNy40NSAxMC4wOCAyMC4yNmwxMzIgNDQuMjZjNy4yOCAyMS4yNSAyMi45NiAzOC41NCA0My4zOCA0Ny40N1Y0NDhIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnpNMCAzMDRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTUuNjcgMi4wOC03LjI1LTg1LjA1LTE4MS41MS0xNy42OC0zNS4zNi02OC4yMi0zNS4yOS04NS44NyAwQy0xLjMyIDI5NS4yNy4wMiAyODcuODIuMDIgMzA0SDB6bTU2LTE2bDcyLTE0NCA3MiAxNDRINTZ6bTMyOC4wMiAxNDRIMzg0YzAgNDQuMTggNTcuMzEgODAgMTI4IDgwczEyOC0zNS44MiAxMjgtODBoLS4wMmMwLTE1LjY3IDIuMDgtNy4yNS04NS4wNS0xODEuNTEtMTcuNjgtMzUuMzYtNjguMjItMzUuMjktODUuODcgMC04Ni4zOCAxNzIuNzgtODUuMDQgMTY1LjMzLTg1LjA0IDE4MS41MXpNNDQwIDQxNmw3Mi0xNDQgNzIgMTQ0SDQ0MHpcIl1cbn07XG52YXIgZmFCYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDVlXCIsIFwiTTI1NiA4QzExOS4wMzQgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzNCAyNDggMjQ4IDI0OCAyNDgtMTExLjAzNCAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMTMwLjEwOCAxMTcuODkyYzY1LjQ0OCA2NS40NDggNzAgMTY1LjQ4MSAyMC42NzcgMjM1LjYzN0wxNTAuNDcgMTA1LjIxNmM3MC4yMDQtNDkuMzU2IDE3MC4yMjYtNDQuNzM1IDIzNS42MzggMjAuNjc2ek0xMjUuODkyIDM4Ni4xMDhjLTY1LjQ0OC02NS40NDgtNzAtMTY1LjQ4MS0yMC42NzctMjM1LjYzN0wzNjEuNTMgNDA2Ljc4NGMtNzAuMjAzIDQ5LjM1Ni0xNzAuMjI2IDQ0LjczNi0yMzUuNjM4LTIwLjY3NnpcIl1cbn07XG52YXIgZmFCYW5kQWlkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhbmQtYWlkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDYyXCIsIFwiTTAgMTYwdjE5MmMwIDM1LjMgMjguNyA2NCA2NCA2NGg5NlY5Nkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTU3Ni02NGgtOTZ2MzIwaDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NHpNMTkyIDQxNmgyNTZWOTZIMTkydjMyMHptMTc2LTIzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTAgOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0tOTYtOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0wIDk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFCYXJjb2RlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhcmNvZGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMmFcIiwgXCJNMCA0NDhWNjRoMTh2Mzg0SDB6bTI2Ljg1Ny0uMjczVjY0SDM2djM4My43MjdoLTkuMTQzem0yNy4xNDMgMFY2NGg4Ljg1N3YzODMuNzI3SDU0em00NC44NTcgMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMzYgMFY2NGgxNy43MTR2MzgzLjcyN2gtMTcuNzE0em00NC44NTcgMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMTggMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMTggMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMzUuNzE1IDBWNjRoMTh2MzgzLjcyN2gtMTh6bTQ0Ljg1NyAwVjY0aDE4djM4My43MjdoLTE4em0zNS45OTkgMFY2NGgxOC4wMDF2MzgzLjcyN2gtMTguMDAxem0zNi4wMDEgMFY2NGgxOC4wMDF2MzgzLjcyN2gtMTguMDAxem0yNi44NTcgMFY2NGgxOHYzODMuNzI3aC0xOHptNDUuMTQzIDBWNjRoMjYuODU3djM4My43MjdoLTI2Ljg1N3ptMzUuNzE0IDBWNjRoOS4xNDN2MzgzLjcyN0g0NzZ6bTE4IC4yNzNWNjRoMTh2Mzg0aC0xOHpcIl1cbn07XG52YXIgZmFCYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhcnMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwYzlcIiwgXCJNMTYgMTMyaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZIMTZDNy4xNjMgNjAgMCA2Ny4xNjMgMCA3NnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2elwiXVxufTtcbnZhciBmYUJhc2ViYWxsQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXNlYmFsbC1iYWxsJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNDMzXCIsIFwiTTM2OC41IDM2My45bDI4LjgtMTMuOWMxMS4xIDIyLjkgMjYgNDMuMiA0NC4xIDYwLjkgMzQtNDIuNSA1NC41LTk2LjMgNTQuNS0xNTQuOSAwLTU4LjUtMjAuNC0xMTIuMi01NC4yLTE1NC42LTE3LjggMTcuMy0zMi42IDM3LjEtNDMuNiA1OS41bC0yOC43LTE0LjFjMTIuOC0yNiAzMC00OSA1MC44LTY5QzM3NS42IDM0LjcgMzE1IDggMjQ4IDggMTgxLjEgOCAxMjAuNSAzNC42IDc1LjkgNzcuN2MyMC43IDE5LjkgMzcuOSA0Mi45IDUwLjcgNjguOGwtMjguNyAxNC4xYy0xMS0yMi4zLTI1LjctNDIuMS00My41LTU5LjRDMjAuNCAxNDMuNyAwIDE5Ny40IDAgMjU2YzAgNTguNiAyMC40IDExMi4zIDU0LjQgMTU0LjcgMTguMi0xNy43IDMzLjItMzggNDQuMy02MWwyOC44IDEzLjljLTEyLjkgMjYuNy0zMC4zIDUwLjMtNTEuNSA3MC43IDQ0LjUgNDMuMSAxMDUuMSA2OS43IDE3MiA2OS43IDY2LjggMCAxMjcuMy0yNi41IDE3MS45LTY5LjUtMjEuMS0yMC40LTM4LjUtNDMuOS01MS40LTcwLjZ6bS0yMjguMy0zMmwtMzAuNS05LjhjMTQuOS00Ni40IDEyLjctOTMuOC0uNi0xMzRsMzAuNC0xMGMxNSA0NS42IDE4IDk5LjkuNyAxNTMuOHptMjE2LjMtMTUzLjRsMzAuNCAxMGMtMTMuMiA0MC4xLTE1LjUgODcuNS0uNiAxMzRsLTMwLjUgOS44Yy0xNy4zLTU0LTE0LjMtMTA4LjMuNy0xNTMuOHpcIl1cbn07XG52YXIgZmFCYXNrZXRiYWxsQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXNrZXRiYWxsLWJhbGwnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY0MzRcIiwgXCJNMjEyLjMgMTAuM2MtNDMuOCA2LjMtODYuMiAyNC4xLTEyMi4yIDUzLjhsNzcuNCA3Ny40YzI3LjgtMzUuOCA0My4zLTgxLjIgNDQuOC0xMzEuMnpNMjQ4IDIyMkw0MDUuOSA2NC4xYy00Mi40LTM1LTkzLjYtNTMuNS0xNDUuNS01Ni4xLTEuMiA2My45LTIxLjUgMTIyLjMtNTguNyAxNjcuN0wyNDggMjIyek01Ni4xIDk4LjFjLTI5LjcgMzYtNDcuNSA3OC40LTUzLjggMTIyLjIgNTAtMS41IDk1LjUtMTcgMTMxLjItNDQuOEw1Ni4xIDk4LjF6bTI3Mi4yIDIwNC4yYzQ1LjMtMzcuMSAxMDMuNy01Ny40IDE2Ny43LTU4LjctMi42LTUxLjktMjEuMS0xMDMuMS01Ni4xLTE0NS41TDI4MiAyNTZsNDYuMyA0Ni4zek0yNDggMjkwTDkwLjEgNDQ3LjljNDIuNCAzNC45IDkzLjYgNTMuNSAxNDUuNSA1Ni4xIDEuMy02NCAyMS42LTEyMi40IDU4LjctMTY3LjdMMjQ4IDI5MHptMTkxLjkgMTIzLjljMjkuNy0zNiA0Ny41LTc4LjQgNTMuOC0xMjIuMi01MC4xIDEuNi05NS41IDE3LjEtMTMxLjIgNDQuOGw3Ny40IDc3LjR6TTE2Ny43IDIwOS43QzEyMi4zIDI0Ni45IDYzLjkgMjY3LjMgMCAyNjguNGMyLjYgNTEuOSAyMS4xIDEwMy4xIDU2LjEgMTQ1LjVMMjE0IDI1NmwtNDYuMy00Ni4zem0xMTYgMjkyYzQzLjgtNi4zIDg2LjItMjQuMSAxMjIuMi01My44bC03Ny40LTc3LjRjLTI3LjcgMzUuNy00My4yIDgxLjItNDQuOCAxMzEuMnpcIl1cbn07XG52YXIgZmFCYXRoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhdGgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyY2RcIiwgXCJNMzIsMzg0YTk1LjQsOTUuNCwwLDAsMCwzMiw3MS4wOVY0OTZhMTYsMTYsMCwwLDAsMTYsMTZoMzJhMTYsMTYsMCwwLDAsMTYtMTZWNDgwSDM4NHYxNmExNiwxNiwwLDAsMCwxNiwxNmgzMmExNiwxNiwwLDAsMCwxNi0xNlY0NTUuMDlBOTUuNCw5NS40LDAsMCwwLDQ4MCwzODRWMzM2SDMyWk00OTYsMjU2SDgwVjY5LjI1YTIxLjI2LDIxLjI2LDAsMCwxLDM2LjI4LTE1bDE5LjI3LDE5LjI2Yy0xMy4xMywyOS44OC03LjYxLDU5LjExLDguNjIsNzkuNzNsLS4xNy4xN0ExNiwxNiwwLDAsMCwxNDQsMTc2bDExLjMxLDExLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBMMjgzLjMxLDgxLjk0YTE2LDE2LDAsMCwwLDAtMjIuNjNMMjcyLDQ4YTE2LDE2LDAsMCwwLTIyLjYyLDBsLS4xNy4xN2MtMjAuNjItMTYuMjMtNDkuODMtMjEuNzUtNzkuNzMtOC42MkwxNTAuMjIsMjAuMjhBNjkuMjUsNjkuMjUsMCwwLDAsMzIsNjkuMjVWMjU2SDE2QTE2LDE2LDAsMCwwLDAsMjcydjE2YTE2LDE2LDAsMCwwLDE2LDE2SDQ5NmExNiwxNiwwLDAsMCwxNi0xNlYyNzJBMTYsMTYsMCwwLDAsNDk2LDI1NlpcIl1cbn07XG52YXIgZmFCYXR0ZXJ5RW1wdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS1lbXB0eScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI0NFwiLCBcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUJhdHRlcnlGdWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhdHRlcnktZnVsbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI0MFwiLCBcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tNDggOTZIOTZ2MTI4aDQxNlYxOTJ6XCJdXG59O1xudmFyIGZhQmF0dGVyeUhhbGYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS1oYWxmJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjQyXCIsIFwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0yNDAgOTZIOTZ2MTI4aDIyNFYxOTJ6XCJdXG59O1xudmFyIGZhQmF0dGVyeVF1YXJ0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS1xdWFydGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjQzXCIsIFwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0zMzYgOTZIOTZ2MTI4aDEyOFYxOTJ6XCJdXG59O1xudmFyIGZhQmF0dGVyeVRocmVlUXVhcnRlcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS10aHJlZS1xdWFydGVycycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI0MVwiLCBcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tMTQ0IDk2SDk2djEyOGgzMjBWMTkyelwiXVxufTtcbnZhciBmYUJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyMzZcIiwgXCJNMTc2IDI1NmM0NC4xMSAwIDgwLTM1Ljg5IDgwLTgwcy0zNS44OS04MC04MC04MC04MCAzNS44OS04MCA4MCAzNS44OSA4MCA4MCA4MHptMzUyLTEyOEgzMDRjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NEg2NFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDY0IDAgNzEuMTYgMCA4MHYzNTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4aDUxMnY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNDBjMC02MS44Ni01MC4xNC0xMTItMTEyLTExMnpcIl1cbn07XG52YXIgZmFCZWVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JlZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwZmNcIiwgXCJNMzY4IDk2aC00OFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di00Mi4xMWw4MC42MDYtMzUuOTc3QzQyOS4zOTYgMzY1LjA2MyA0NDggMzM2LjM4OCA0NDggMzA0Ljg2VjE3NmMwLTQ0LjExMi0zNS44ODgtODAtODAtODB6bTE2IDIwOC44NmExNi4wMTggMTYuMDE4IDAgMCAxLTkuNDc5IDE0LjYxMUwzMjAgMzQzLjgwNVYxNjBoNDhjOC44MjIgMCAxNiA3LjE3OCAxNiAxNnYxMjguODZ6TTIwOCAzODRjLTguODM2IDAtMTYtNy4xNjQtMTYtMTZWMTQ0YzAtOC44MzYgNy4xNjQtMTYgMTYtMTZzMTYgNy4xNjQgMTYgMTZ2MjI0YzAgOC44MzYtNy4xNjQgMTYtMTYgMTZ6bS05NiAwYy04LjgzNiAwLTE2LTcuMTY0LTE2LTE2VjE0NGMwLTguODM2IDcuMTY0LTE2IDE2LTE2czE2IDcuMTY0IDE2IDE2djIyNGMwIDguODM2LTcuMTY0IDE2LTE2IDE2elwiXVxufTtcbnZhciBmYUJlbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVsbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmM1wiLCBcIk0yMjQgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMTYwLjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6bTIxNS4zOS0xNDkuNzFjLTE5LjMyLTIwLjc2LTU1LjQ3LTUxLjk5LTU1LjQ3LTE1NC4yOSAwLTc3LjctNTQuNDgtMTM5LjktMTI3Ljk0LTE1NS4xNlYzMmMwLTE3LjY3LTE0LjMyLTMyLTMxLjk4LTMycy0zMS45OCAxNC4zMy0zMS45OCAzMnYyMC44NEMxMTguNTYgNjguMSA2NC4wOCAxMzAuMyA2NC4wOCAyMDhjMCAxMDIuMy0zNi4xNSAxMzMuNTMtNTUuNDcgMTU0LjI5LTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDM4My44YzE5LjEyIDAgMzItMTUuNiAzMi4xLTMyIC4wNS03LjU1LTIuNjEtMTUuMjctOC42MS0yMS43MXpcIl1cbn07XG52YXIgZmFCZWxsU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVsbC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjFmNlwiLCBcIk02MzMuODIgNDU4LjFsLTkwLjYyLTcwLjA1Yy4xOS0xLjM4LjgtMi42Ni44LTQuMDYuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzEtMTkuMzItMjAuNzYtNTUuNDctNTEuOTktNTUuNDctMTU0LjI5IDAtNzcuNy01NC40OC0xMzkuOS0xMjcuOTQtMTU1LjE2VjMyYzAtMTcuNjctMTQuMzItMzItMzEuOTgtMzJzLTMxLjk4IDE0LjMzLTMxLjk4IDMydjIwLjg0Yy00MC4zMyA4LjM4LTc0LjY2IDMxLjA3LTk3LjU5IDYyLjU3TDQ1LjQ3IDMuMzdDMzguNDktMi4wNSAyOC40My0uOCAyMy4wMSA2LjE4TDMuMzcgMzEuNDVDLTIuMDUgMzguNDItLjggNDguNDcgNi4xOCA1My45bDU4OC4zNSA0NTQuNzNjNi45OCA1LjQzIDE3LjAzIDQuMTcgMjIuNDYtMi44MWwxOS42NC0yNS4yN2M1LjQyLTYuOTcgNC4xNy0xNy4wMi0yLjgxLTIyLjQ1ek0xNTcuMjMgMjUxLjU0Yy04LjYxIDY3Ljk2LTM2LjQxIDkzLjMzLTUyLjYyIDExMC43NS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgyNDEuOTJMMTU3LjIzIDI1MS41NHpNMzIwIDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDI1Ni4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0elwiXVxufTtcbnZhciBmYUJlemllckN1cnZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jlemllci1jdXJ2ZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU1YlwiLCBcIk0zNjggMzJoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0yMDggODhoLTg0Ljc1QzExMy43NSA2NC41NiA5MC44NCA0OCA2NCA0OCAyOC42NiA0OCAwIDc2LjY1IDAgMTEyczI4LjY2IDY0IDY0IDY0YzI2Ljg0IDAgNDkuNzUtMTYuNTYgNTkuMjUtNDBoNzkuNzNjLTU1LjM3IDMyLjUyLTk1Ljg2IDg3LjMyLTEwOS41NCAxNTJoNDkuNGMxMS4zLTQxLjYxIDM2Ljc3LTc3LjIxIDcxLjA0LTEwMS41Ni0zLjctOC4wOC01Ljg4LTE2Ljk5LTUuODgtMjYuNDRWODh6bS00OCAyMzJINjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek01NzYgNDhjLTI2Ljg0IDAtNDkuNzUgMTYuNTYtNTkuMjUgNDBINDMydjcyYzAgOS40NS0yLjE5IDE4LjM2LTUuODggMjYuNDQgMzQuMjcgMjQuMzUgNTkuNzQgNTkuOTUgNzEuMDQgMTAxLjU2aDQ5LjRjLTEzLjY4LTY0LjY4LTU0LjE3LTExOS40OC0xMDkuNTQtMTUyaDc5LjczYzkuNSAyMy40NCAzMi40MSA0MCA1OS4yNSA0MCAzNS4zNCAwIDY0LTI4LjY1IDY0LTY0cy0yOC42Ni02NC02NC02NHptMCAyNzJoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFCaWJsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaWJsZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjY0N1wiLCBcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0xNDQgMTQ0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDQ4VjgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djQ4aDQ4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2aC00OHYxMTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYxOTJoLTQ4Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTIzNi44IDMwNEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh2NjR6XCJdXG59O1xudmFyIGZhQmljeWNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaWN5Y2xlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjA2XCIsIFwiTTUxMi41MDkgMTkyLjAwMWMtMTYuMzczLS4wNjQtMzIuMDMgMi45NTUtNDYuNDM2IDguNDk1bC03Ny42OC0xMjUuMTUzQTI0IDI0IDAgMCAwIDM2OC4wMDEgNjRoLTY0Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djE2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNTAuNjQ5bDE0Ljg5NiAyNEgyNTYuMDAydi0xNmMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC04Ny40NTljLTEzLjQ0MSAwLTI0Ljc3NyAxMC45OTktMjQuNTM2IDI0LjQzNy4yMzIgMTMuMDQ0IDEwLjg3NiAyMy41NjMgMjMuOTk1IDIzLjU2M2g0OC43MjZsLTI5LjQxNyA0Ny41MmMtMTMuNDMzLTQuODMtMjcuOTA0LTcuNDgzLTQyLjk5Mi03LjUyQzU4LjA5NCAxOTEuODMuNDEyIDI0OS4wMTIuMDAyIDMxOS4yMzYtLjQxMyAzOTAuMjc5IDU3LjA1NSA0NDggMTI4LjAwMiA0NDhjNTkuNjQyIDAgMTA5Ljc1OC00MC43OTMgMTIzLjk2Ny05Nmg1Mi4wMzNhMjQgMjQgMCAwIDAgMjAuNDA2LTExLjM2N0w0MTAuMzcgMjAxLjc3bDE0LjkzOCAyNC4wNjdjLTI1LjQ1NSAyMy40NDgtNDEuMzg1IDU3LjA4MS00MS4zMDcgOTQuNDM3LjE0NSA2OC44MzMgNTcuODk5IDEyNy4wNTEgMTI2LjcyOSAxMjcuNzE5IDcwLjYwNi42ODUgMTI4LjE4MS01NS44MDMgMTI5LjI1NS0xMjUuOTk2IDEuMDg2LTcwLjk0MS01Ni41MjYtMTI5LjcyLTEyNy40NzYtMTI5Ljk5NnpNMTg2Ljc1IDI2NS43NzJjOS43MjcgMTAuNTI5IDE2LjY3MyAyMy42NjEgMTkuNjQyIDM4LjIyOGgtNDMuMzA2bDIzLjY2NC0zOC4yMjh6TTEyOC4wMDIgNDAwYy00NC4xMTIgMC04MC0zNS44ODgtODAtODBzMzUuODg4LTgwIDgwLTgwYzUuODY5IDAgMTEuNTg2LjY1MyAxNy4wOTkgMS44NTlsLTQ1LjUwNSA3My41MDlDODkuNzE1IDMzMS4zMjcgMTAxLjIxMyAzNTIgMTIwLjAwMiAzNTJoODEuM2MtMTIuMzcgMjguMjI1LTQwLjU2MiA0OC03My4zIDQ4em0xNjIuNjMtOTZoLTM1LjYyNGMtMy45Ni0zMS43NTYtMTkuNTU2LTU5Ljg5NC00Mi4zODMtODAuMDI2TDIzNy4zNzEgMTg0aDEyNy41NDdsLTc0LjI4NiAxMjB6bTIxNy4wNTcgOTUuODg2Yy00MS4wMzYtMi4xNjUtNzQuMDQ5LTM1LjY5Mi03NS42MjctNzYuNzU1LS44MTItMjEuMTIxIDYuNjMzLTQwLjUxOCAxOS4zMzUtNTUuMjYzbDQ0LjQzMyA3MS41ODZjNC42NiA3LjUwOCAxNC41MjQgOS44MTYgMjIuMDMyIDUuMTU2bDEzLjU5NC04LjQzN2M3LjUwOC00LjY2IDkuODE3LTE0LjUyNCA1LjE1Ni0yMi4wMzJsLTQ0LjQ2OC03MS42NDNhNzkuOTAxIDc5LjkwMSAwIDAgMSAxOS44NTgtMi40OTdjNDQuMTEyIDAgODAgMzUuODg4IDgwIDgwLS4wMDEgNDUuNTQtMzguMjUyIDgyLjMxNi04NC4zMTMgNzkuODg1elwiXVxufTtcbnZhciBmYUJpa2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaWtpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4NGFcIiwgXCJNNDAwIDk2YTQ4IDQ4IDAgMSAwLTQ4LTQ4IDQ4IDQ4IDAgMCAwIDQ4IDQ4em0tNCAxMjFhMzEuOSAzMS45IDAgMCAwIDIwIDdoNjRhMzIgMzIgMCAwIDAgMC02NGgtNTIuNzhMMzU2IDEwM2EzMS45NCAzMS45NCAwIDAgMC00MC44MS42OGwtMTEyIDk2YTMyIDMyIDAgMCAwIDMuMDggNTAuOTJMMjg4IDMwNS4xMlY0MTZhMzIgMzIgMCAwIDAgNjQgMFYyODhhMzIgMzIgMCAwIDAtMTQuMjUtMjYuNjJsLTQxLjM2LTI3LjU3IDU4LjI1LTQ5Ljkyem0xMTYgMzlhMTI4IDEyOCAwIDEgMCAxMjggMTI4IDEyOCAxMjggMCAwIDAtMTI4LTEyOHptMCAxOTJhNjQgNjQgMCAxIDEgNjQtNjQgNjQgNjQgMCAwIDEtNjQgNjR6TTEyOCAyNTZhMTI4IDEyOCAwIDEgMCAxMjggMTI4IDEyOCAxMjggMCAwIDAtMTI4LTEyOHptMCAxOTJhNjQgNjQgMCAxIDEgNjQtNjQgNjQgNjQgMCAwIDEtNjQgNjR6XCJdXG59O1xudmFyIGZhQmlub2N1bGFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaW5vY3VsYXJzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWU1XCIsIFwiTTQxNiA0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtNjRjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDk2VjQ4ek02My45MSAxNTkuOTlDNjEuNCAyNTMuODQgMy40NiAyNzQuMjIgMCA0MDR2NDRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI4OGgzMlYxMjhIOTUuODRjLTE3LjYzIDAtMzEuNDUgMTQuMzctMzEuOTMgMzEuOTl6bTM4NC4xOCAwYy0uNDgtMTcuNjItMTQuMy0zMS45OS0zMS45My0zMS45OUgzMjB2MTYwaDMydjE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQ0Yy0zLjQ2LTEyOS43OC02MS40LTE1MC4xNi02My45MS0yNDQuMDF6TTE3NiAzMmgtNjRjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDk2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2em00OCAyNTZoNjRWMTI4aC02NHYxNjB6XCJdXG59O1xudmFyIGZhQmlvaGF6YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jpb2hhemFyZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc4MFwiLCBcIk0yODcuOSAxMTJjMTguNiAwIDM2LjIgMy44IDUyLjggOS42IDEzLjMtMTAuMyAyMy42LTI0LjMgMjkuNS00MC43LTI1LjItMTAuOS01My0xNy04Mi4yLTE3LTI5LjEgMC01Ni45IDYtODIuMSAxNi45IDUuOSAxNi40IDE2LjIgMzAuNCAyOS41IDQwLjcgMTYuNS01LjcgMzQtOS41IDUyLjUtOS41ek0xNjMuNiA0MzguN2MxMi0xMS44IDIwLjQtMjYuNCAyNC41LTQyLjQtMzIuOS0yNi40LTU0LjgtNjUuMy01OC45LTEwOS42LTguNS0yLjgtMTcuMi00LjYtMjYuNC00LjYtNy42IDAtMTUuMiAxLTIyLjUgMy4xIDQuMSA2Mi44IDM1LjggMTE4IDgzLjMgMTUzLjV6bTIyNC4yLTQyLjZjNC4xIDE2IDEyLjUgMzAuNyAyNC41IDQyLjUgNDcuNC0zNS41IDc5LjEtOTAuNyA4My0xNTMuNS03LjItMi0xNC43LTMtMjIuMi0zLTkuMiAwLTE4IDEuOS0yNi42IDQuNy00LjEgNDQuMi0yNiA4Mi45LTU4LjcgMTA5LjN6bTExMy41LTIwNWMtMTcuNi0xMC40LTM2LjMtMTYuNi01NS4zLTE5LjkgNi0xNy43IDEwLTM2LjQgMTAtNTYuMiAwLTQxLTE0LjUtODAuOC00MS0xMTIuMi0yLjUtMy02LjYtMy43LTEwLTEuOC0zLjMgMS45LTQuOCA2LTMuNiA5LjcgNC41IDEzLjggNi42IDI2LjMgNi42IDM4LjUgMCA2Ny44LTUzLjggMTIyLjktMTIwIDEyMi45UzE2OCAxMTcgMTY4IDQ5LjJjMC0xMi4xIDIuMi0yNC43IDYuNi0zOC41IDEuMi0zLjctLjMtNy44LTMuNi05LjctMy40LTEuOS03LjUtMS4yLTEwIDEuOEMxMzQuNiAzNC4yIDEyMCA3NCAxMjAgMTE1YzAgMTkuOCAzLjkgMzguNSAxMCA1Ni4yLTE4LjkgMy4zLTM3LjcgOS41LTU1LjMgMTkuOS0zNC42IDIwLjUtNjEgNTMuMy03NC4zIDkyLjQtMS4zIDMuNy4yIDcuNyAzLjUgOS44IDMuMyAyIDcuNSAxLjMgMTAtMS42IDkuNC0xMC44IDE5LTE5LjEgMjkuMi0yNS4xIDU3LjMtMzMuOSAxMzAuOC0xMy43IDE2My45IDQ1IDMzLjEgNTguNyAxMy40IDEzNC00My45IDE2Ny45LTEwLjIgNi4xLTIyIDEwLjQtMzUuOCAxMy40LTMuNy44LTYuNCA0LjItNi40IDguMS4xIDQgMi43IDcuMyA2LjUgOCAzOS43IDcuOCA4MC42LjggMTE1LjItMTkuNyAxOC0xMC42IDMyLjktMjQuNSA0NS4zLTQwLjEgMTIuNCAxNS42IDI3LjMgMjkuNSA0NS4zIDQwLjEgMzQuNiAyMC41IDc1LjUgMjcuNSAxMTUuMiAxOS43IDMuOC0uNyA2LjQtNCA2LjUtOCAwLTMuOS0yLjYtNy4zLTYuNC04LjEtMTMuOS0yLjktMjUuNi03LjMtMzUuOC0xMy40LTU3LjMtMzMuOS03Ny0xMDkuMi00My45LTE2Ny45czEwNi42LTc4LjkgMTYzLjktNDVjMTAuMiA2LjEgMTkuOCAxNC4zIDI5LjIgMjUuMSAyLjUgMi45IDYuNyAzLjYgMTAgMS42czQuOC02LjEgMy41LTkuOGMtMTMuMS0zOS4xLTM5LjUtNzItNzQuMS05Mi40em0tMjEzLjQgMTI5Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFCaXJ0aGRheUNha2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmlydGhkYXktY2FrZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFmZFwiLCBcIk00NDggMzg0Yy0yOC4wMiAwLTMxLjI2LTMyLTc0LjUtMzItNDMuNDMgMC00Ni44MjUgMzItNzQuNzUgMzItMjcuNjk1IDAtMzEuNDU0LTMyLTc0Ljc1LTMyLTQyLjg0MiAwLTQ3LjIxOCAzMi03NC41IDMyLTI4LjE0OCAwLTMxLjIwMi0zMi03NC43NS0zMi00My41NDcgMC00Ni42NTMgMzItNzQuNzUgMzJ2LTgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDE2VjExMmg2NHYxNDRoNjRWMTEyaDY0djE0NGg2NFYxMTJoNjR2MTQ0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djgwem0wIDEyOEgwdi05NmM0My4zNTYgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuOTUxIDAgMzEuMjUzIDMyIDc0Ljc1IDMyIDQyLjg0MyAwIDQ3LjIxNy0zMiA3NC41LTMyIDI4LjE0OCAwIDMxLjIwMSAzMiA3NC43NSAzMiA0My4zNTcgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuNDg4IDAgMzEuMjUyIDMyIDc0LjUgMzJ2OTZ6TTk2IDk2Yy0xNy43NSAwLTMyLTE0LjI1LTMyLTMyIDAtMzEgMzItMjMgMzItNjQgMTIgMCAzMiAyOS41IDMyIDU2cy0xNC4yNSA0MC0zMiA0MHptMTI4IDBjLTE3Ljc1IDAtMzItMTQuMjUtMzItMzIgMC0zMSAzMi0yMyAzMi02NCAxMiAwIDMyIDI5LjUgMzIgNTZzLTE0LjI1IDQwLTMyIDQwem0xMjggMGMtMTcuNzUgMC0zMi0xNC4yNS0zMi0zMiAwLTMxIDMyLTIzIDMyLTY0IDEyIDAgMzIgMjkuNSAzMiA1NnMtMTQuMjUgNDAtMzIgNDB6XCJdXG59O1xudmFyIGZhQmxlbmRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdibGVuZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTE3XCIsIFwiTTQxNiAzODRIMTYwYy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzIwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS0xMjggOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTQwLTQxNmgxNjYuNTRMNTEyIDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2MTYwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMTAzLjI3bDguNzMgOTZoMjU2bDE3LjQ2LTY0SDMyOGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExNC4xOGwxNy40Ni02NEgzMjhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNDAuMzZsMTcuNDYtNjRIMzI4Yy00LjQyIDAtOC0zLjU4LTgtOFY3MmMwLTQuNDIgMy41OC04IDgtOHpNNjQgMTkyVjY0aDY5LjgybDExLjY0IDEyOEg2NHpcIl1cbn07XG52YXIgZmFCbGVuZGVyUGhvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmxlbmRlci1waG9uZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjZiNlwiLCBcIk0zOTIgNjRoMTY2LjU0TDU3NiAwSDE5MnYzNTJoMjg4bDE3LjQ2LTY0SDM5MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExNC4xOGwxNy40Ni02NEgzOTJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNDAuMzZsMTcuNDYtNjRIMzkyYy00LjQyIDAtOC0zLjU4LTgtOFY3MmMwLTQuNDIgMy41OC04IDgtOHpNMTU4LjggMzM1LjAxbC0yNS43OC02My4yNmMtMi43OC02LjgxLTkuOC0xMC45OS0xNy4yNC0xMC4yNmwtNDUuMDMgNC40MmMtMTcuMjgtNDYuOTQtMTcuNjUtOTkuNzggMC0xNDcuNzJsNDUuMDMgNC40MmM3LjQzLjczIDE0LjQ2LTMuNDYgMTcuMjQtMTAuMjZsMjUuNzgtNjMuMjZjMy4wMi03LjM5LjItMTUuODUtNi42OC0yMC4wN2wtMzkuMjgtMjQuMUM5OC41MS0zLjg3IDgwLjA5LS41IDY4Ljk1IDExLjk3Yy05Mi41NyAxMDMuNi05MiAyNTkuNTUgMi4xIDM2Mi40OSA5Ljg3IDEwLjggMjkuMTIgMTIuNDggNDEuNjUgNC44bDM5LjQxLTI0LjE4YzYuODktNC4yMiA5LjctMTIuNjcgNi42OS0yMC4wN3pNNDgwIDM4NEgxOTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0zNS4zNS0yOC42NS02NC02NC02NHptLTE0NCA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFCbGluZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdibGluZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjI5ZFwiLCBcIk0zODAuMTUgNTEwLjgzN2E4IDggMCAwIDEtMTAuOTg5LTIuNjg3bC0xMjUuMzMtMjA2LjQyN2EzMS45MjMgMzEuOTIzIDAgMCAwIDEyLjk1OC05LjQ4NWwxMjYuMDQ4IDIwNy42MDhhOCA4IDAgMCAxLTIuNjg3IDEwLjk5MXpNMTQyLjgwMyAzMTQuMzM4bC0zMi41NCA4OS40ODUgMzYuMTIgODguMjg1YzYuNjkzIDE2LjM2IDI1LjM3NyAyNC4xOTIgNDEuNzMzIDE3LjUwMSAxNi4zNTctNi42OTIgMjQuMTkzLTI1LjM3NiAxNy41MDEtNDEuNzM0bC02Mi44MTQtMTUzLjUzN3pNOTYgODhjMjQuMzAxIDAgNDQtMTkuNjk5IDQ0LTQ0UzEyMC4zMDEgMCA5NiAwIDUyIDE5LjY5OSA1MiA0NHMxOS42OTkgNDQgNDQgNDR6bTE1NC44MzcgMTY5LjEyOGwtMTIwLTE1MmMtNC43MzMtNS45OTUtMTEuNzUtOS4xMDgtMTguODM3LTkuMTEyVjk2SDgwdi4wMjZjLTcuMTQ2LjAwMy0xNC4yMTcgMy4xNjEtMTguOTQ0IDkuMjRMMCAxODMuNzY2djk1LjY5NGMwIDEzLjQ1NSAxMS4wMTEgMjQuNzkxIDI0LjQ2NCAyNC41MzZDMzcuNTA1IDMwMy43NDggNDggMjkzLjEgNDggMjgwdi03OS43NjZsMTYtMjAuNTcxdjE0MC42OThMOS45MjcgNDY5LjA1NWMtNi4wNCAxNi42MDkgMi41MjggMzQuOTY5IDE5LjEzOCA0MS4wMDkgMTYuNjAyIDYuMDM5IDM0Ljk2OC0yLjUyNCA0MS4wMDktMTkuMTM4TDEzNiAzMDkuNjM4VjIwMi40NDFsLTMxLjQwNi0zOS44MTZhNCA0IDAgMSAxIDYuMjY5LTQuOTcxbDEwMi4zIDEyOS4yMTdjOS4xNDUgMTEuNTg0IDI0LjM2OCAxMS4zMzkgMzMuNzA4IDMuOTY1IDEwLjQxLTguMjE2IDEyLjE1OS0yMy4zMzQgMy45NjYtMzMuNzA4elwiXVxufTtcbnZhciBmYUJsb2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmxvZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc4MVwiLCBcIk0xNzIuMiAyMjYuOGMtMTQuNi0yLjktMjguMiA4LjktMjguMiAyMy44VjMwMWMwIDEwLjIgNy4xIDE4LjQgMTYuNyAyMiAxOC4yIDYuOCAzMS4zIDI0LjQgMzEuMyA0NSAwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0OGMwIDg5LjUgODIuMSAxNjAuMiAxNzUgMTQwLjcgNTQuNC0xMS40IDk4LjMtNTUuNCAxMDkuNy0xMDkuNyAxNy40LTgyLjktMzctMTU3LjItMTEyLjUtMTcyLjJ6TTIwOSAwYy05LjItLjUtMTcgNi44LTE3IDE2djMxLjZjMCA4LjUgNi42IDE1LjUgMTUgMTUuOSAxMjkuNCA3IDIzMy40IDExMiAyNDAuOSAyNDEuNS41IDguNCA3LjUgMTUgMTUuOSAxNWgzMi4xYzkuMiAwIDE2LjUtNy44IDE2LTE3QzUwMy40IDEzOS44IDM3Mi4yIDguNiAyMDkgMHptLjMgOTZjLTkuMy0uNy0xNy4zIDYuNy0xNy4zIDE2LjF2MzIuMWMwIDguNCA2LjUgMTUuMyAxNC44IDE1LjkgNzYuOCA2LjMgMTM4IDY4LjIgMTQ0LjkgMTQ1LjIuOCA4LjMgNy42IDE0LjcgMTUuOSAxNC43aDMyLjJjOS4zIDAgMTYuOC04IDE2LjEtMTcuMy04LjQtMTEwLjEtOTYuNS0xOTguMi0yMDYuNi0yMDYuN3pcIl1cbn07XG52YXIgZmFCb2xkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbGQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwMzJcIiwgXCJNMzMzLjQ5IDIzOGExMjIgMTIyIDAgMCAwIDI3LTY1LjIxQzM2Ny44NyA5Ni40OSAzMDggMzIgMjMzLjQyIDMySDM0YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMxLjg3djI4OEgzNGExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmgyMDkuMzJjNzAuOCAwIDEzNC4xNC01MS43NSAxNDEtMTIyLjQgNC43NC00OC40NS0xNi4zOS05Mi4wNi01MC44My0xMTkuNnpNMTQ1LjY2IDExMmg4Ny43NmE0OCA0OCAwIDAgMSAwIDk2aC04Ny43NnptODcuNzYgMjg4aC04Ny43NlYyODhoODcuNzZhNTYgNTYgMCAwIDEgMCAxMTJ6XCJdXG59O1xudmFyIGZhQm9sdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib2x0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMGU3XCIsIFwiTTI5NiAxNjBIMTgwLjZsNDIuNi0xMjkuOEMyMjcuMiAxNSAyMTUuNyAwIDIwMCAwSDU2QzQ0IDAgMzMuOCA4LjkgMzIuMiAyMC44bC0zMiAyNDBDLTEuNyAyNzUuMiA5LjUgMjg4IDI0IDI4OGgxMTguN0w5Ni42IDQ4Mi41Yy0zLjYgMTUuMiA4IDI5LjUgMjMuMyAyOS41IDguNCAwIDE2LjQtNC40IDIwLjgtMTJsMTc2LTMwNGM5LjMtMTUuOS0yLjItMzYtMjAuNy0zNnpcIl1cbn07XG52YXIgZmFCb21iID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbWInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZTJcIiwgXCJNNDQwLjUgODguNWwtNTIgNTJMNDE1IDE2N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTcuNCAxNy40YzExLjggMjYuMSAxOC40IDU1LjEgMTguNCA4NS42IDAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFMwIDQxOC45IDAgMzA0IDkzLjEgOTYgMjA4IDk2YzMwLjUgMCA1OS41IDYuNiA4NS42IDE4LjRMMzExIDk3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDI2LjUgMjYuNSA1Mi01MiAxNy4xIDE3ek01MDAgNjBoLTI0Yy02LjYgMC0xMiA1LjQtMTIgMTJzNS40IDEyIDEyIDEyaDI0YzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEyek00NDAgMGMtNi42IDAtMTIgNS40LTEyIDEydjI0YzAgNi42IDUuNCAxMiAxMiAxMnMxMi01LjQgMTItMTJWMTJjMC02LjYtNS40LTEyLTEyLTEyem0zMy45IDU1bDE3LTE3YzQuNy00LjcgNC43LTEyLjMgMC0xNy00LjctNC43LTEyLjMtNC43LTE3IDBsLTE3IDE3Yy00LjcgNC43LTQuNyAxMi4zIDAgMTcgNC44IDQuNyAxMi40IDQuNyAxNyAwem0tNjcuOCAwYzQuNyA0LjcgMTIuMyA0LjcgMTcgMCA0LjctNC43IDQuNy0xMi4zIDAtMTdsLTE3LTE3Yy00LjctNC43LTEyLjMtNC43LTE3IDAtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE3IDE3em02Ny44IDM0Yy00LjctNC43LTEyLjMtNC43LTE3IDAtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE3IDE3YzQuNyA0LjcgMTIuMyA0LjcgMTcgMCA0LjctNC43IDQuNy0xMi4zIDAtMTdsLTE3LTE3ek0xMTIgMjcyYzAtMzUuMyAyOC43LTY0IDY0LTY0IDguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2Yy01Mi45IDAtOTYgNDMuMS05NiA5NiAwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2elwiXVxufTtcbnZhciBmYUJvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9uZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVkN1wiLCBcIk01OTguODggMjQ0LjU2YzI1LjItMTIuNiA0MS4xMi0zOC4zNiA0MS4xMi02Ni41M3YtNy42NEM2NDAgMTI5LjMgNjA2LjcgOTYgNTY1LjYxIDk2Yy0zMi4wMiAwLTYwLjQ0IDIwLjQ5LTcwLjU3IDUwLjg2LTcuNjggMjMuMDMtMTEuNiA0NS4xNC0zOC4xMSA0NS4xNEgxODMuMDZjLTI3LjM4IDAtMzEuNTgtMjUuNTQtMzguMTEtNDUuMTRDMTM0LjgzIDExNi40OSAxMDYuNCA5NiA3NC4zOSA5NiAzMy4zIDk2IDAgMTI5LjMgMCAxNzAuMzl2Ny42NGMwIDI4LjE3IDE1LjkyIDUzLjkzIDQxLjEyIDY2LjUzIDkuNDMgNC43MSA5LjQzIDE4LjE3IDAgMjIuODhDMTUuOTIgMjgwLjA0IDAgMzA1LjggMCAzMzMuOTd2Ny42NEMwIDM4Mi43IDMzLjMgNDE2IDc0LjM4IDQxNmMzMi4wMiAwIDYwLjQ0LTIwLjQ5IDcwLjU3LTUwLjg2IDcuNjgtMjMuMDMgMTEuNi00NS4xNCAzOC4xMS00NS4xNGgyNzMuODdjMjcuMzggMCAzMS41OCAyNS41NCAzOC4xMSA0NS4xNEM1MDUuMTcgMzk1LjUxIDUzMy42IDQxNiA1NjUuNjEgNDE2YzQxLjA4IDAgNzQuMzgtMzMuMyA3NC4zOC03NC4zOXYtNy42NGMwLTI4LjE4LTE1LjkyLTUzLjkzLTQxLjEyLTY2LjUzLTkuNDItNC43MS05LjQyLTE4LjE3LjAxLTIyLjg4elwiXVxufTtcbnZhciBmYUJvbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9uZycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjU1Y1wiLCBcIk0zMDIuNSA1MTJjMjMuMTggMCA0NC40My0xMi41OCA1Ni0zMi42NkMzNzQuNjkgNDUxLjI2IDM4NCA0MTguNzUgMzg0IDM4NGMwLTM2LjEyLTEwLjA4LTY5LjgxLTI3LjQ0LTk4LjYyTDQwMCAyNDEuOTRsOS4zOCA5LjM4YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMTEuMy0xMS4zMmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC01Mi42OS01Mi42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMTEuMzEgMTEuMzFjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsOS4zOCA5LjM4LTM5LjQxIDM5LjQxYy0xMS41Ni0xMS4zNy0yNC41My0yMS4zMy0zOC42NS0yOS41MVY2My43NGwxNS45Ny0uMDJjOC44Mi0uMDEgMTUuOTctNy4xNiAxNS45OC0xNS45OGwuMDQtMzEuNzJDMzIwIDcuMTcgMzEyLjgyLS4wMSAzMDMuOTcgMEw4MC4wMy4yNmMtOC44Mi4wMS0xNS45NyA3LjE2LTE1Ljk4IDE1Ljk4bC0uMDQgMzEuNzNjLS4wMSA4Ljg1IDcuMTcgMTYuMDIgMTYuMDIgMTYuMDFMOTYgNjMuOTZ2MTUzLjkzQzM4LjY3IDI1MS4xIDAgMzEyLjk3IDAgMzg0YzAgMzQuNzUgOS4zMSA2Ny4yNyAyNS41IDk1LjM0QzM3LjA4IDQ5OS40MiA1OC4zMyA1MTIgODEuNSA1MTJoMjIxek0xMjAuMDYgMjU5LjQzTDE0NCAyNDUuNTZWNjMuOTFsOTYtLjExdjE4MS43NmwyMy45NCAxMy44N2MyNC44MSAxNC4zNyA0NC4xMiAzNS43MyA1Ni41NiA2MC41N2gtMjU3YzEyLjQ1LTI0Ljg0IDMxLjc1LTQ2LjIgNTYuNTYtNjAuNTd6XCJdXG59O1xudmFyIGZhQm9vayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDJkXCIsIFwiTTQ0OCAzNjBWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIOTZDNDMgMCAwIDQzIDAgOTZ2MzIwYzAgNTMgNDMgOTYgOTYgOTZoMzI4YzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNmMwLTcuNS0zLjUtMTQuMy04LjktMTguNy00LjItMTUuNC00LjItNTkuMyAwLTc0LjcgNS40LTQuMyA4LjktMTEuMSA4LjktMTguNnpNMTI4IDEzNGMwLTMuMyAyLjctNiA2LTZoMjEyYzMuMyAwIDYgMi43IDYgNnYyMGMwIDMuMy0yLjcgNi02IDZIMTM0Yy0zLjMgMC02LTIuNy02LTZ2LTIwem0wIDY0YzAtMy4zIDIuNy02IDYtNmgyMTJjMy4zIDAgNiAyLjcgNiA2djIwYzAgMy4zLTIuNyA2LTYgNkgxMzRjLTMuMyAwLTYtMi43LTYtNnYtMjB6bTI1My40IDI1MEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzIgMC0xNy42IDE0LjQtMzIgMzItMzJoMjg1LjRjLTEuOSAxNy4xLTEuOSA0Ni45IDAgNjR6XCJdXG59O1xudmFyIGZhQm9va0RlYWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1kZWFkJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNmI3XCIsIFwiTTI3MiAxMzZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnptMTc2IDIyMi40VjI1LjZjMC0xNi05LjYtMjUuNi0yNS42LTI1LjZIOTZDNDEuNiAwIDAgNDEuNiAwIDk2djMyMGMwIDU0LjQgNDEuNiA5NiA5NiA5NmgzMjYuNGMxMi44IDAgMjUuNi05LjYgMjUuNi0yNS42di0xNmMwLTYuNC0zLjItMTIuOC05LjYtMTkuMi0zLjItMTYtMy4yLTYwLjggMC03My42IDYuNC0zLjIgOS42LTkuNiA5LjYtMTkuMnpNMjQwIDU2YzQ0LjIgMCA4MCAyOC43IDgwIDY0IDAgMjAuOS0xMi43IDM5LjItMzIgNTAuOVYxODRjMCA4LjgtNy4yIDE2LTE2IDE2aC02NGMtOC44IDAtMTYtNy4yLTE2LTE2di0xMy4xYy0xOS4zLTExLjctMzItMzAtMzItNTAuOSAwLTM1LjMgMzUuOC02NCA4MC02NHpNMTI0LjggMjIzLjNsNi4zLTE0LjdjMS43LTQuMSA2LjQtNS45IDEwLjUtNC4ybDk4LjMgNDIuMSA5OC40LTQyLjFjNC4xLTEuNyA4LjguMSAxMC41IDQuMmw2LjMgMTQuN2MxLjcgNC4xLS4xIDguOC00LjIgMTAuNUwyODAuNiAyNjRsNzAuMyAzMC4xYzQuMSAxLjcgNS45IDYuNCA0LjIgMTAuNWwtNi4zIDE0LjdjLTEuNyA0LjEtNi40IDUuOS0xMC41IDQuMkwyNDAgMjgxLjRsLTk4LjMgNDIuMmMtNC4xIDEuNy04LjgtLjEtMTAuNS00LjJsLTYuMy0xNC43Yy0xLjctNC4xLjEtOC44IDQuMi0xMC41bDcwLjQtMzAuMS03MC41LTMwLjNjLTQuMS0xLjctNS45LTYuNC00LjItMTAuNXptMjU2IDIyNC43SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHpNMjA4IDEzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2elwiXVxufTtcbnZhciBmYUJvb2tNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stbWVkaWNhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdlNlwiLCBcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2cTAtOS42LTkuNi0xOS4yYy0zLjItMTYtMy4yLTYwLjggMC03My42cTkuNi00LjggOS42LTE5LjJ6TTE0NCAxNjhhOCA4IDAgMCAxIDgtOGg1NnYtNTZhOCA4IDAgMCAxIDgtOGg0OGE4IDggMCAwIDEgOCA4djU2aDU2YTggOCAwIDAgMSA4IDh2NDhhOCA4IDAgMCAxLTggOGgtNTZ2NTZhOCA4IDAgMCAxLTggOGgtNDhhOCA4IDAgMCAxLTgtOHYtNTZoLTU2YTggOCAwIDAgMS04LTh6bTIzNi44IDI4MEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh6XCJdXG59O1xudmFyIGZhQm9va09wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTE4XCIsIFwiTTU0Mi4yMiAzMi4wNWMtNTQuOCAzLjExLTE2My43MiAxNC40My0yMzAuOTYgNTUuNTktNC42NCAyLjg0LTcuMjcgNy44OS03LjI3IDEzLjE3djM2My44N2MwIDExLjU1IDEyLjYzIDE4Ljg1IDIzLjI4IDEzLjQ5IDY5LjE4LTM0LjgyIDE2OS4yMy00NC4zMiAyMTguNy00Ni45MiAxNi44OS0uODkgMzAuMDItMTQuNDMgMzAuMDItMzAuNjZWNjIuNzVjLjAxLTE3LjcxLTE1LjM1LTMxLjc0LTMzLjc3LTMwLjd6TTI2NC43MyA4Ny42NEMxOTcuNSA0Ni40OCA4OC41OCAzNS4xNyAzMy43OCAzMi4wNSAxNS4zNiAzMS4wMSAwIDQ1LjA0IDAgNjIuNzVWNDAwLjZjMCAxNi4yNCAxMy4xMyAyOS43OCAzMC4wMiAzMC42NiA0OS40OSAyLjYgMTQ5LjU5IDEyLjExIDIxOC43NyA0Ni45NSAxMC42MiA1LjM1IDIzLjIxLTEuOTQgMjMuMjEtMTMuNDZWMTAwLjYzYzAtNS4yOS0yLjYyLTEwLjE0LTcuMjctMTIuOTl6XCJdXG59O1xudmFyIGZhQm9va1JlYWRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLXJlYWRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVkYVwiLCBcIk0zNTIgOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTYgNDIuOTggOTYgOTYgOTYgOTYtNDIuOTggOTYtOTZ6TTIzMy41OSAyNDEuMWMtNTkuMzMtMzYuMzItMTU1LjQzLTQ2LjMtMjAzLjc5LTQ5LjA1QzEzLjU1IDE5MS4xMyAwIDIwMy41MSAwIDIxOS4xNHYyMjIuOGMwIDE0LjMzIDExLjU5IDI2LjI4IDI2LjQ5IDI3LjA1IDQzLjY2IDIuMjkgMTMxLjk5IDEwLjY4IDE5My4wNCA0MS40MyA5LjM3IDQuNzIgMjAuNDgtMS43MSAyMC40OC0xMS44N1YyNTIuNTZjLS4wMS00LjY3LTIuMzItOC45NS02LjQyLTExLjQ2em0yNDguNjEtNDkuMDVjLTQ4LjM1IDIuNzQtMTQ0LjQ2IDEyLjczLTIwMy43OCA0OS4wNS00LjEgMi41MS02LjQxIDYuOTYtNi40MSAxMS42M3YyNDUuNzljMCAxMC4xOSAxMS4xNCAxNi42MyAyMC41NCAxMS45IDYxLjA0LTMwLjcyIDE0OS4zMi0zOS4xMSAxOTIuOTctNDEuNCAxNC45LS43OCAyNi40OS0xMi43MyAyNi40OS0yNy4wNlYyMTkuMTRjLS4wMS0xNS42My0xMy41Ni0yOC4wMS0yOS44MS0yNy4wOXpcIl1cbn07XG52YXIgZmFCb29rbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rbWFyaycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjAyZVwiLCBcIk0wIDUxMlY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyODhjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHY0NjRMMTkyIDQwMCAwIDUxMnpcIl1cbn07XG52YXIgZmFCb3JkZXJBbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9yZGVyLWFsbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjg0Y1wiLCBcIk00MTYgMzJIMzJBMzIgMzIgMCAwIDAgMCA2NHYzODRhMzIgMzIgMCAwIDAgMzIgMzJoMzg0YTMyIDMyIDAgMCAwIDMyLTMyVjY0YTMyIDMyIDAgMCAwLTMyLTMyem0tMzIgNjR2MTI4SDI1NlY5NnptLTE5MiAwdjEyOEg2NFY5NnpNNjQgNDE2VjI4OGgxMjh2MTI4em0xOTIgMFYyODhoMTI4djEyOHpcIl1cbn07XG52YXIgZmFCb3JkZXJOb25lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvcmRlci1ub25lJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmODUwXCIsIFwiTTI0MCAyMjRoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yODggMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAxOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMjQwIDMyMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tOTYgMjg4aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTM4NGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNNDggMjI0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYUJvcmRlclN0eWxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvcmRlci1zdHlsZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjg1M1wiLCBcIk0yNDAgNDE2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE5MiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDk2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0yODhoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC05NkgzMkEzMiAzMiAwIDAgMCAwIDY0djQwMGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY5NmgzNjhhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhQm93bGluZ0JhbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm93bGluZy1iYWxsJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNDM2XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEyMCAxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem02NC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptNDggMTQ0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFCb3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDY2XCIsIFwiTTUwOS41IDE4NC42TDQ1OC45IDMyLjhDNDUyLjQgMTMuMiA0MzQuMSAwIDQxMy40IDBIMjcydjE5MmgyMzguN2MtLjQtMi41LS40LTUtMS4yLTcuNHpNMjQwIDBIOTguNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44TDIuNSAxODQuNmMtLjggMi40LS44IDQuOS0xLjIgNy40SDI0MFYwek0wIDIyNHYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjIyNEgwelwiXVxufTtcbnZhciBmYUJveE9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94LW9wZW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0OWVcIiwgXCJNNDI1LjcgMjU2Yy0xNi45IDAtMzIuOC05LTQxLjQtMjMuNEwzMjAgMTI2bC02NC4yIDEwNi42Yy04LjcgMTQuNS0yNC42IDIzLjUtNDEuNSAyMy41LTQuNSAwLTktLjYtMTMuMy0xLjlMNjQgMjE1djE3OGMwIDE0LjcgMTAgMjcuNSAyNC4yIDMxbDIxNi4yIDU0LjFjMTAuMiAyLjUgMjAuOSAyLjUgMzEgMEw1NTEuOCA0MjRjMTQuMi0zLjYgMjQuMi0xNi40IDI0LjItMzFWMjE1bC0xMzcgMzkuMWMtNC4zIDEuMy04LjggMS45LTEzLjMgMS45em0yMTIuNi0xMTIuMkw1ODYuOCA0MWMtMy4xLTYuMi05LjgtOS44LTE2LjctOC45TDMyMCA2NGw5MS43IDE1Mi4xYzMuOCA2LjMgMTEuNCA5LjMgMTguNSA3LjNsMTk3LjktNTYuNWM5LjktMi45IDE0LjctMTMuOSAxMC4yLTIzLjF6TTUzLjIgNDFMMS43IDE0My44Yy00LjYgOS4yLjMgMjAuMiAxMC4xIDIzbDE5Ny45IDU2LjVjNy4xIDIgMTQuNy0xIDE4LjUtNy4zTDMyMCA2NCA2OS44IDMyLjFjLTYuOS0uOC0xMy41IDIuNy0xNi42IDguOXpcIl1cbn07XG52YXIgZmFCb3hUaXNzdWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94LXRpc3N1ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTA1YlwiLCBcIk0zODMuODgsMjg3LjgybDY0LTE5MkgzMzguNDdhNzAuMiw3MC4yLDAsMCwxLTY2LjU5LTQ4LDcwLjIxLDcwLjIxLDAsMCwwLTY2LjYtNDhINjMuODhsNjQsMjg4Wm0tMzg0LDE5MmEzMiwzMiwwLDAsMCwzMiwzMmg0NDhhMzIsMzIsMCwwLDAsMzItMzJ2LTY0SC0uMTJabTQ4MC0yNTZINDM4Ljk0bC0yMS4zMyw2NGgxNC4yN2ExNiwxNiwwLDAsMSwwLDMyaC0zNTJhMTYsMTYsMCwxLDEsMC0zMkg5NS4wOWwtMTQuMjItNjRoLTQ5YTMyLDMyLDAsMCwwLTMyLDMydjEyOGg1MTJ2LTEyOEEzMiwzMiwwLDAsMCw0NzkuODgsMjIzLjgyWlwiXVxufTtcbnZhciBmYUJveGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JveGVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDY4XCIsIFwiTTU2MCAyODhoLTgwdjk2bC0zMi0yMS4zLTMyIDIxLjN2LTk2aC04MGMtOC44IDAtMTYgNy4yLTE2IDE2djE5MmMwIDguOCA3LjIgMTYgMTYgMTZoMjI0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2em0tMzg0LTY0aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC04MHY5NmwtMzItMjEuM0wyNTYgOTZWMGgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2em02NCA2NGgtODB2OTZsLTMyLTIxLjNMOTYgMzg0di05NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE5MmMwIDguOCA3LjIgMTYgMTYgMTZoMjI0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUJyYWlsbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJhaWxsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjJhMVwiLCBcIk0xMjggMjU2YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NFMwIDI5MS4zNDYgMCAyNTZzMjguNjU0LTY0IDY0LTY0IDY0IDI4LjY1NCA2NCA2NHpNNjQgMzg0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyQzI4LjY1NCAzMiAwIDYwLjY1NCAwIDk2czI4LjY1NCA2NCA2NCA2NCA2NC0yOC42NTQgNjQtNjQtMjguNjU0LTY0LTY0LTY0em0xNjAgMTkyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAgMTYwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6bTIyNCAxOTJjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMCAxNjBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHMyOC42NTQgNjQgNjQgNjQgNjQtMjguNjU0IDY0LTY0LTI4LjY1NC02NC02NC02NHptMTYwIDE5MmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wIDE2MGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wLTMyMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUJyYWluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyYWluJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNWRjXCIsIFwiTTIwOCAwYy0yOS45IDAtNTQuNyAyMC41LTYxLjggNDguMi0uOCAwLTEuNC0uMi0yLjItLjItMzUuMyAwLTY0IDI4LjctNjQgNjQgMCA0LjguNiA5LjUgMS43IDE0QzUyLjUgMTM4IDMyIDE2Ni42IDMyIDIwMGMwIDEyLjYgMy4yIDI0LjMgOC4zIDM0LjlDMTYuMyAyNDguNyAwIDI3NC4zIDAgMzA0YzAgMzMuMyAyMC40IDYxLjkgNDkuNCA3My45LS45IDQuNi0xLjQgOS4zLTEuNCAxNC4xIDAgMzkuOCAzMi4yIDcyIDcyIDcyIDQuMSAwIDguMS0uNSAxMi0xLjIgOS42IDI4LjUgMzYuMiA0OS4yIDY4IDQ5LjIgMzkuOCAwIDcyLTMyLjIgNzItNzJWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6bTM2OCAzMDRjMC0yOS43LTE2LjMtNTUuMy00MC4zLTY5LjEgNS4yLTEwLjYgOC4zLTIyLjMgOC4zLTM0LjkgMC0zMy40LTIwLjUtNjItNDkuNy03NCAxLTQuNSAxLjctOS4yIDEuNy0xNCAwLTM1LjMtMjguNy02NC02NC02NC0uOCAwLTEuNS4yLTIuMi4yQzQyMi43IDIwLjUgMzk3LjkgMCAzNjggMGMtMzUuMyAwLTY0IDI4LjYtNjQgNjR2Mzc2YzAgMzkuOCAzMi4yIDcyIDcyIDcyIDMxLjggMCA1OC40LTIwLjcgNjgtNDkuMiAzLjkuNyA3LjkgMS4yIDEyIDEuMiAzOS44IDAgNzItMzIuMiA3Mi03MiAwLTQuOC0uNS05LjUtMS40LTE0LjEgMjktMTIgNDkuNC00MC42IDQ5LjQtNzMuOXpcIl1cbn07XG52YXIgZmFCcmVhZFNsaWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyZWFkLXNsaWNlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmN2VjXCIsIFwiTTI4OCAwQzEwOCAwIDAgOTMuNCAwIDE2OS4xNCAwIDE5OS40NCAyNC4yNCAyMjQgNjQgMjI0djI1NmMwIDE3LjY3IDE2LjEyIDMyIDM2IDMyaDM3NmMxOS44OCAwIDM2LTE0LjMzIDM2LTMyVjIyNGMzOS43NiAwIDY0LTI0LjU2IDY0LTU0Ljg2QzU3NiA5My40IDQ2OCAwIDI4OCAwelwiXVxufTtcbnZhciBmYUJyaWVmY2FzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmllZmNhc2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYjFcIiwgXCJNMzIwIDMzNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di00OEgwdjE0NGMwIDI1LjYgMjIuNCA0OCA0OCA0OGg0MTZjMjUuNiAwIDQ4LTIyLjQgNDgtNDhWMjg4SDMyMHY0OHptMTQ0LTIwOGgtODBWODBjMC0yNS42LTIyLjQtNDgtNDgtNDhIMTc2Yy0yNS42IDAtNDggMjIuNC00OCA0OHY0OEg0OGMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2ODBoNTEydi04MGMwLTI1LjYtMjIuNC00OC00OC00OHptLTE0NCAwSDE5MlY5NmgxMjh2MzJ6XCJdXG59O1xudmFyIGZhQnJpZWZjYXNlTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmllZmNhc2UtbWVkaWNhbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ2OVwiLCBcIk00NjQgMTI4aC04MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djQ4SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYyODhjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDk2aDEyOHYzMkgxOTJWOTZ6bTE2MCAyNDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4elwiXVxufTtcbnZhciBmYUJyb2FkY2FzdFRvd2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jyb2FkY2FzdC10b3dlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUxOVwiLCBcIk0xNTAuOTQgMTkyaDMzLjczYzExLjAxIDAgMTguNjEtMTAuODMgMTQuODYtMjEuMTgtNC45My0xMy41OC03LjU1LTI3Ljk4LTcuNTUtNDIuODJzMi42Mi0yOS4yNCA3LjU1LTQyLjgyQzIwMy4yOSA3NC44MyAxOTUuNjggNjQgMTg0LjY3IDY0aC0zMy43M2MtNy4wMSAwLTEzLjQ2IDQuNDktMTUuNDEgMTEuMjNDMTMwLjY0IDkyLjIxIDEyOCAxMDkuODggMTI4IDEyOGMwIDE4LjEyIDIuNjQgMzUuNzkgNy41NCA1Mi43NiAxLjk0IDYuNzQgOC4zOSAxMS4yNCAxNS40IDExLjI0ek04OS45MiAyMy4zNEM5NS41NiAxMi43MiA4Ny45NyAwIDc1Ljk2IDBINDAuNjNjLTYuMjcgMC0xMi4xNCAzLjU5LTE0Ljc0IDkuMzFDOS40IDQ1LjU0IDAgODUuNjUgMCAxMjhjMCAyNC43NSAzLjEyIDY4LjMzIDI2LjY5IDExOC44NiAyLjYyIDUuNjMgOC40MiA5LjE0IDE0LjYxIDkuMTRoMzQuODRjMTIuMDIgMCAxOS42MS0xMi43NCAxMy45NS0yMy4zNy00OS43OC05My4zMi0xNi43MS0xNzguMTUtLjE3LTIwOS4yOXpNNjE0LjA2IDkuMjlDNjExLjQ2IDMuNTggNjA1LjYgMCA1OTkuMzMgMGgtMzUuNDJjLTExLjk4IDAtMTkuNjYgMTIuNjYtMTQuMDIgMjMuMjUgMTguMjcgMzQuMjkgNDguNDIgMTE5LjQyLjI4IDIwOS4yMy01LjcyIDEwLjY4IDEuOCAyMy41MiAxMy45MSAyMy41MmgzNS4yM2M2LjI3IDAgMTIuMTMtMy41OCAxNC43My05LjI5QzYzMC41NyAyMTAuNDggNjQwIDE3MC4zNiA2NDAgMTI4cy05LjQyLTgyLjQ4LTI1Ljk0LTExOC43MXpNNDg5LjA2IDY0aC0zMy43M2MtMTEuMDEgMC0xOC42MSAxMC44My0xNC44NiAyMS4xOCA0LjkzIDEzLjU4IDcuNTUgMjcuOTggNy41NSA0Mi44MnMtMi42MiAyOS4yNC03LjU1IDQyLjgyYy0zLjc2IDEwLjM1IDMuODUgMjEuMTggMTQuODYgMjEuMThoMzMuNzNjNy4wMiAwIDEzLjQ2LTQuNDkgMTUuNDEtMTEuMjQgNC45LTE2Ljk3IDcuNTMtMzQuNjQgNy41My01Mi43NiAwLTE4LjEyLTIuNjQtMzUuNzktNy41NC01Mi43Ni0xLjk0LTYuNzUtOC4zOS0xMS4yNC0xNS40LTExLjI0em0tMTE2LjMgMTAwLjEyYzcuMDUtMTAuMjkgMTEuMi0yMi43MSAxMS4yLTM2LjEyIDAtMzUuMzUtMjguNjMtNjQtNjMuOTYtNjQtMzUuMzIgMC02My45NiAyOC42NS02My45NiA2NCAwIDEzLjQxIDQuMTUgMjUuODMgMTEuMiAzNi4xMmwtMTMwLjUgMzEzLjQxYy0zLjQgOC4xNS40NiAxNy41MiA4LjYxIDIwLjkybDI5LjUxIDEyLjMxYzguMTUgMy40IDE3LjUyLS40NiAyMC45MS04LjYxTDI0NC45NiAzODRoMTUwLjA3bDQ5LjIgMTE4LjE1YzMuNCA4LjE2IDEyLjc2IDEyLjAxIDIwLjkxIDguNjFsMjkuNTEtMTIuMzFjOC4xNS0zLjQgMTItMTIuNzcgOC42MS0yMC45MmwtMTMwLjUtMzEzLjQxek0yNzEuNjIgMzIwTDMyMCAyMDMuODEgMzY4LjM4IDMyMGgtOTYuNzZ6XCJdXG59O1xudmFyIGZhQnJvb20gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJvb20nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MWFcIiwgXCJNMjU2LjQ3IDIxNi43N2w4Ni43MyAxMDkuMThzLTE2LjYgMTAyLjM2LTc2LjU3IDE1MC4xMkMyMDYuNjYgNTIzLjg1IDAgNTEwLjE5IDAgNTEwLjE5czMuOC0yMy4xNCAxMS01NS40M2w5NC42Mi0xMTIuMTdjMy45Ny00LjctLjg3LTExLjYyLTYuNjUtOS41bC02MC40IDIyLjA5YzE0LjQ0LTQxLjY2IDMyLjcyLTgwLjA0IDU0LjYtOTcuNDcgNTkuOTctNDcuNzYgMTYzLjMtNDAuOTQgMTYzLjMtNDAuOTR6TTYzNi41MyAzMS4wM2wtMTkuODYtMjVjLTUuNDktNi45LTE1LjUyLTguMDUtMjIuNDEtMi41NmwtMjMyLjQ4IDE3Ny44LTM0LjE0LTQyLjk3Yy01LjA5LTYuNDEtMTUuMTQtNS4yMS0xOC41OSAyLjIxbC0yNS4zMyA1NC41NSA4Ni43MyAxMDkuMTggNTguOC0xMi40NWM4LTEuNjkgMTEuNDItMTEuMiA2LjM0LTE3LjZsLTM0LjA5LTQyLjkyIDIzMi40OC0xNzcuOGM2Ljg5LTUuNDggOC4wNC0xNS41MyAyLjU1LTIyLjQ0elwiXVxufTtcbnZhciBmYUJydXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JydXNoJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTVkXCIsIFwiTTM1MiAwSDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjIyNGgzODRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMCAzMjBjMCAzNS4zNSAyOC42NiA2NCA2NCA2NGg2NHY2NGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0czY0LTI4LjY1IDY0LTY0di02NGg2NGMzNS4zNCAwIDY0LTI4LjY1IDY0LTY0di0zMkgwdjMyem0xOTIgMTA0YzEzLjI1IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHMtMjQtMTAuNzUtMjQtMjRjMC0xMy4yNiAxMC43NS0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFCdWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVnJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTg4XCIsIFwiTTUxMS45ODggMjg4LjljLS40NzggMTcuNDMtMTUuMjE3IDMxLjEtMzIuNjUzIDMxLjFINDI0djE2YzAgMjEuODY0LTQuODgyIDQyLjU4NC0xMy42IDYxLjE0NWw2MC4yMjggNjAuMjI4YzEyLjQ5NiAxMi40OTcgMTIuNDk2IDMyLjc1OCAwIDQ1LjI1NS0xMi40OTggMTIuNDk3LTMyLjc1OSAxMi40OTYtNDUuMjU2IDBsLTU0LjczNi01NC43MzZDMzQ1Ljg4NiA0NjcuOTY1IDMxNC4zNTEgNDgwIDI4MCA0ODBWMjM2YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0NGMtMzQuMzUxIDAtNjUuODg2LTEyLjAzNS05MC42MzYtMzIuMTA4bC01NC43MzYgNTQuNzM2Yy0xMi40OTggMTIuNDk3LTMyLjc1OSAxMi40OTYtNDUuMjU2IDAtMTIuNDk2LTEyLjQ5Ny0xMi40OTYtMzIuNzU4IDAtNDUuMjU1bDYwLjIyOC02MC4yMjhDOTIuODgyIDM3OC41ODQgODggMzU3Ljg2NCA4OCAzMzZ2LTE2SDMyLjY2NkMxNS4yMyAzMjAgLjQ5MSAzMDYuMzMuMDEzIDI4OC45LS40ODQgMjcwLjgxNiAxNC4wMjggMjU2IDMyIDI1Nmg1NnYtNTguNzQ1bC00Ni42MjgtNDYuNjI4Yy0xMi40OTYtMTIuNDk3LTEyLjQ5Ni0zMi43NTggMC00NS4yNTUgMTIuNDk4LTEyLjQ5NyAzMi43NTgtMTIuNDk3IDQ1LjI1NiAwTDE0MS4yNTUgMTYwaDIyOS40ODlsNTQuNjI3LTU0LjYyN2MxMi40OTgtMTIuNDk3IDMyLjc1OC0xMi40OTcgNDUuMjU2IDAgMTIuNDk2IDEyLjQ5NyAxMi40OTYgMzIuNzU4IDAgNDUuMjU1TDQyNCAxOTcuMjU1VjI1Nmg1NmMxNy45NzIgMCAzMi40ODQgMTQuODE2IDMxLjk4OCAzMi45ek0yNTcgMGMtNjEuODU2IDAtMTEyIDUwLjE0NC0xMTIgMTEyaDIyNEMzNjkgNTAuMTQ0IDMxOC44NTYgMCAyNTcgMHpcIl1cbn07XG52YXIgZmFCdWlsZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFhZFwiLCBcIk00MzYgNDgwaC0yMFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINTZDNDIuNzQ1IDAgMzIgMTAuNzQ1IDMyIDI0djQ1NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMGg0NDh2LTIwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6TTEyOCA3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJWNzZ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MHptNTIgMTQ4aC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTc2IDE2MGgtNjR2LTg0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4NHptNjQtMTcyYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6bTAtOTZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHptMC05NmMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMlY3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6XCJdXG59O1xudmFyIGZhQnVsbGhvcm4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVsbGhvcm4nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwYTFcIiwgXCJNNTc2IDI0MGMwLTIzLjYzLTEyLjk1LTQ0LjA0LTMyLTU1LjEyVjMyLjAxQzU0NCAyMy4yNiA1MzcuMDIgMCA1MTIgMGMtNy4xMiAwLTE0LjE5IDIuMzgtMTkuOTggNy4wMmwtODUuMDMgNjguMDNDMzY0LjI4IDEwOS4xOSAzMTAuNjYgMTI4IDI1NiAxMjhINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2OTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMy43Yy0xLjM5IDEwLjQ4LTIuMTggMjEuMTQtMi4xOCAzMiAwIDM5Ljc3IDkuMjYgNzcuMzUgMjUuNTYgMTEwLjk0IDUuMTkgMTAuNjkgMTYuNTIgMTcuMDYgMjguNCAxNy4wNmg3NC4yOGMyNi4wNSAwIDQxLjY5LTI5Ljg0IDI1LjktNTAuNTYtMTYuNC0yMS41Mi0yNi4xNS00OC4zNi0yNi4xNS03Ny40NCAwLTExLjExIDEuNjItMjEuNzkgNC40MS0zMkgyNTZjNTQuNjYgMCAxMDguMjggMTguODEgMTUwLjk4IDUyLjk1bDg1LjAzIDY4LjAzYTMyLjAyMyAzMi4wMjMgMCAwIDAgMTkuOTggNy4wMmMyNC45MiAwIDMyLTIyLjc4IDMyLTMyVjI5NS4xM0M1NjMuMDUgMjg0LjA0IDU3NiAyNjMuNjMgNTc2IDI0MHptLTk2IDE0MS40MmwtMzMuMDUtMjYuNDRDMzkyLjk1IDMxMS43OCAzMjUuMTIgMjg4IDI1NiAyODh2LTk2YzY5LjEyIDAgMTM2Ljk1LTIzLjc4IDE5MC45NS02Ni45OEw0ODAgOTguNTh2MjgyLjg0elwiXVxufTtcbnZhciBmYUJ1bGxzZXllID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1bGxzZXllJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmMTQwXCIsIFwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDMyYy0xMDEuNjkgMC0xODQtODIuMjktMTg0LTE4NCAwLTEwMS42OSA4Mi4yOS0xODQgMTg0LTE4NCAxMDEuNjkgMCAxODQgODIuMjkgMTg0IDE4NCAwIDEwMS42OS04Mi4yOSAxODQtMTg0IDE4NHptMC0zMTJjLTcwLjY5IDAtMTI4IDU3LjMxLTEyOCAxMjhzNTcuMzEgMTI4IDEyOCAxMjggMTI4LTU3LjMxIDEyOC0xMjgtNTcuMzEtMTI4LTEyOC0xMjh6bTAgMTkyYy0zNS4yOSAwLTY0LTI4LjcxLTY0LTY0czI4LjcxLTY0IDY0LTY0IDY0IDI4LjcxIDY0IDY0LTI4LjcxIDY0LTY0IDY0elwiXVxufTtcbnZhciBmYUJ1cm4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVybicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjQ2YVwiLCBcIk0xOTIgMEM3OS43IDEwMS4zIDAgMjIwLjkgMCAzMDAuNSAwIDQyNSA3OSA1MTIgMTkyIDUxMnMxOTItODcgMTkyLTIxMS41YzAtNzkuOS04MC4yLTE5OS42LTE5Mi0zMDAuNXptMCA0NDhjLTU2LjUgMC05Ni0zOS05Ni05NC44IDAtMTMuNSA0LjYtNjEuNSA5Ni0xNjEuMiA5MS40IDk5LjcgOTYgMTQ3LjcgOTYgMTYxLjIgMCA1NS44LTM5LjUgOTQuOC05NiA5NC44elwiXVxufTtcbnZhciBmYUJ1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyMDdcIiwgXCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTExMiA0MDBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE2LTExMmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxMjhjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgyNTZjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnYxMjhjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgxMjh6bTI3MiAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhQnVzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1cy1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NWVcIiwgXCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTE2MCA3MmMwLTQuNDIgMy41OC04IDgtOGgxNzZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhIMTY4Yy00LjQyIDAtOC0zLjU4LTgtOFY3MnptLTQ4IDMyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTI4LTExMkgxMjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJ2LTk2YzAtMTcuNjcgMTQuMzMtMzIgMzItMzJoMTEydjE2MHptMzIgMFYxMjhoMTEyYzE3LjY3IDAgMzIgMTQuMzMgMzIgMzJ2OTZjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgyNzJ6bTEyOCAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhQnVzaW5lc3NUaW1lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1c2luZXNzLXRpbWUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2NGFcIiwgXCJNNDk2IDIyNGMtNzkuNTkgMC0xNDQgNjQuNDEtMTQ0IDE0NHM2NC40MSAxNDQgMTQ0IDE0NCAxNDQtNjQuNDEgMTQ0LTE0NC02NC40MS0xNDQtMTQ0LTE0NHptNjQgMTUwLjI5YzAgNS4zNC00LjM3IDkuNzEtOS43MSA5LjcxaC02MC41N2MtNS4zNCAwLTkuNzEtNC4zNy05LjcxLTkuNzF2LTc2LjU3YzAtNS4zNCA0LjM3LTkuNzEgOS43MS05LjcxaDEyLjU3YzUuMzQgMCA5LjcxIDQuMzcgOS43MSA5LjcxVjM1MmgzOC4yOWM1LjM0IDAgOS43MSA0LjM3IDkuNzEgOS43MXYxMi41OHpNNDk2IDE5MmM1LjQgMCAxMC43Mi4zMyAxNiAuODFWMTQ0YzAtMjUuNi0yMi40LTQ4LTQ4LTQ4aC04MFY0OGMwLTI1LjYtMjIuNC00OC00OC00OEgxNzZjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djQ4SDQ4Yy0yNS42IDAtNDggMjIuNC00OCA0OHY4MGgzOTUuMTJjMjguNi0yMC4wOSA2My4zNS0zMiAxMDAuODgtMzJ6TTMyMCA5NkgxOTJWNjRoMTI4djMyem02LjgyIDIyNEgyMDhjLTguODQgMC0xNi03LjE2LTE2LTE2di00OEgwdjE0NGMwIDI1LjYgMjIuNCA0OCA0OCA0OGgyOTEuNDNDMzI3LjEgNDIzLjk2IDMyMCAzOTYuODIgMzIwIDM2OGMwLTE2LjY2IDIuNDgtMzIuNzIgNi44Mi00OHpcIl1cbn07XG52YXIgZmFDYWxjdWxhdG9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGN1bGF0b3InLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxZWNcIiwgXCJNNDAwIDBINDhDMjIuNCAwIDAgMjIuNCAwIDQ4djQxNmMwIDI1LjYgMjIuNCA0OCA0OCA0OGgzNTJjMjUuNiAwIDQ4LTIyLjQgNDgtNDhWNDhjMC0yNS42LTIyLjQtNDgtNDgtNDh6TTEyOCA0MzUuMmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0xMjggMTI4YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMTI4IDEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOFYyNjguOGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MTY2LjR6bTAtMjU2YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOEg3Ni44Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjhWNzYuOEM2NCA3MC40IDcwLjQgNjQgNzYuOCA2NGgyOTQuNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MTAyLjR6XCJdXG59O1xudmFyIGZhQ2FsZW5kYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxMzNcIiwgXCJNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem00MzYtNDR2LTM2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00OFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJIMTYwVjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1Mkg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDI0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIl1cbn07XG52YXIgZmFDYWxlbmRhckFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNzNcIiwgXCJNMCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE5MkgwdjI3MnptMzIwLTE5NmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bTAgMTI4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHpNMTkyIDI2OGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bTAgMTI4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHpNNjQgMjY4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwem0wIDEyOGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkg3NmMtNi42IDAtMTItNS40LTEyLTEydi00MHpNNDAwIDY0aC00OFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTYwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OGg0NDh2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUNhbGVuZGFyQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItY2hlY2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzRcIiwgXCJNNDM2IDE2MEgxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMzZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0OFYxMmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NTJoMTI4VjEyYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY1Mmg0OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM2YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNjBjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYyMDRjMC02LjYyNyA1LjM3My0xMiAxMi0xMnptMzMzLjI5NiA5NS45NDdsLTI4LjE2OS0yOC4zOThjLTQuNjY3LTQuNzA1LTEyLjI2NS00LjczNi0xNi45Ny0uMDY4TDE5NC4xMiAzNjQuNjY1bC00NS45OC00Ni4zNTJjLTQuNjY3LTQuNzA1LTEyLjI2Ni00LjczNi0xNi45NzEtLjA2OGwtMjguMzk3IDI4LjE3Yy00LjcwNSA0LjY2Ny00LjczNiAxMi4yNjUtLjA2OCAxNi45N2w4Mi42MDEgODMuMjY5YzQuNjY3IDQuNzA1IDEyLjI2NSA0LjczNiAxNi45Ny4wNjhsMTQyLjk1My0xNDEuODA1YzQuNzA1LTQuNjY3IDQuNzM2LTEyLjI2NS4wNjgtMTYuOTd6XCJdXG59O1xudmFyIGZhQ2FsZW5kYXJEYXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItZGF5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzgzXCIsIFwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoOTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2di05NnpNNDAwIDY0aC00OFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTYwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OGg0NDh2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUNhbGVuZGFyTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItbWludXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzJcIiwgXCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0zMDQgMTkyYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDEzMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgxODR6XCJdXG59O1xudmFyIGZhQ2FsZW5kYXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLXBsdXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzFcIiwgXCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0zMTYgMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNjB2LTYwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2MGgtNjBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNjB2NjBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNjBoNjBjNi42IDAgMTItNS40IDEyLTEydi00MHpcIl1cbn07XG52YXIgZmFDYWxlbmRhclRpbWVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLXRpbWVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjczXCIsIFwiTTQzNiAxNjBIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHYzNmMwIDYuNi01LjQgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42IDAgMTIgNS40IDEyIDEydjI2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjA0YzAtNi42IDUuNC0xMiAxMi0xMnptMjU3LjMgMTYwbDQ4LjEtNDguMWM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTI4LjMtMjguM2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDIyNCAzMDYuN2wtNDguMS00OC4xYy00LjctNC43LTEyLjMtNC43LTE3IDBsLTI4LjMgMjguM2MtNC43IDQuNy00LjcgMTIuMyAwIDE3bDQ4LjEgNDguMS00OC4xIDQ4LjFjLTQuNyA0LjctNC43IDEyLjMgMCAxN2wyOC4zIDI4LjNjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDQ4LjEtNDguMSA0OC4xIDQ4LjFjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDI4LjMtMjguM2M0LjctNC43IDQuNy0xMi4zIDAtMTdMMjY5LjMgMzUyelwiXVxufTtcbnZhciBmYUNhbGVuZGFyV2VlayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci13ZWVrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzg0XCIsIFwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnYtNjR6TTQwMCA2NGgtNDhWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2MFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhoNDQ4di00OGMwLTI2LjUtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFDYW1lcmEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtZXJhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDMwXCIsIFwiTTUxMiAxNDR2Mjg4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhoODhsMTIuMy0zMi45YzctMTguNyAyNC45LTMxLjEgNDQuOS0zMS4xaDEyNS41YzIwIDAgMzcuOSAxMi40IDQ0LjkgMzEuMUwzNzYgOTZoODhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTM3NiAyODhjMC02Ni4yLTUzLjgtMTIwLTEyMC0xMjBzLTEyMCA1My44LTEyMCAxMjAgNTMuOCAxMjAgMTIwIDEyMCAxMjAtNTMuOCAxMjAtMTIwem0tMzIgMGMwIDQ4LjUtMzkuNSA4OC04OCA4OHMtODgtMzkuNS04OC04OCAzOS41LTg4IDg4LTg4IDg4IDM5LjUgODggODh6XCJdXG59O1xudmFyIGZhQ2FtZXJhUmV0cm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtZXJhLXJldHJvJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDgzXCIsIFwiTTQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHptMCAzMmgxMDZjMy4zIDAgNiAyLjcgNiA2djIwYzAgMy4zLTIuNyA2LTYgNkgzOGMtMy4zIDAtNi0yLjctNi02VjgwYzAtOC44IDcuMi0xNiAxNi0xNnptNDI2IDk2SDM4Yy0zLjMgMC02LTIuNy02LTZ2LTM2YzAtMy4zIDIuNy02IDYtNmgxMzhsMzAuMi00NS4zYzEuMS0xLjcgMy0yLjcgNS0yLjdINDY0YzguOCAwIDE2IDcuMiAxNiAxNnY3NGMwIDMuMy0yLjcgNi02IDZ6TTI1NiA0MjRjLTY2LjIgMC0xMjAtNTMuOC0xMjAtMTIwczUzLjgtMTIwIDEyMC0xMjAgMTIwIDUzLjggMTIwIDEyMC01My44IDEyMC0xMjAgMTIwem0wLTIwOGMtNDguNSAwLTg4IDM5LjUtODggODhzMzkuNSA4OCA4OCA4OCA4OC0zOS41IDg4LTg4LTM5LjUtODgtODgtODh6bS00OCAxMDRjLTguOCAwLTE2LTcuMi0xNi0xNiAwLTM1LjMgMjguNy02NCA2NC02NCA4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMTcuNiAwLTMyIDE0LjQtMzIgMzIgMCA4LjgtNy4yIDE2LTE2IDE2elwiXVxufTtcbnZhciBmYUNhbXBncm91bmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtcGdyb3VuZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZiYlwiLCBcIk02MjQgNDQ4aC0yNC42OEwzNTkuNTQgMTE3Ljc1bDUzLjQxLTczLjU1YzUuMTktNy4xNSAzLjYxLTE3LjE2LTMuNTQtMjIuMzVsLTI1LjktMTguNzljLTcuMTUtNS4xOS0xNy4xNS0zLjYxLTIyLjM1IDMuNTVMMzIwIDYzLjMgMjc4LjgzIDYuNmMtNS4xOS03LjE1LTE1LjItOC43NC0yMi4zNS0zLjU1bC0yNS44OCAxOC44Yy03LjE1IDUuMTktOC43NCAxNS4yLTMuNTQgMjIuMzVsNTMuNDEgNzMuNTVMNDAuNjggNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek0zMjAgMjg4bDExNi4zNiAxNjBIMjAzLjY0TDMyMCAyODh6XCJdXG59O1xudmFyIGZhQ2FuZHlDYW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbmR5LWNhbmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ODZcIiwgXCJNNDk3LjUgOTJDNDY5LjYgMzMuMSA0MTEuOCAwIDM1Mi40IDBjLTI3LjkgMC01Ni4yIDcuMy04MS44IDIyLjZMMjQzLjEgMzljLTE1LjIgOS4xLTIwLjEgMjguNy0xMSA0My45bDMyLjggNTQuOWM2IDEwIDE2LjYgMTUuNiAyNy41IDE1LjYgNS42IDAgMTEuMi0xLjUgMTYuNC00LjVsMjcuNS0xNi40YzUuMS0zLjEgMTAuOC00LjUgMTYuNC00LjUgMTAuOSAwIDIxLjUgNS42IDI3LjUgMTUuNiA5LjEgMTUuMSA0LjEgMzQuOC0xMSA0My45TDE1LjYgMzk3LjZjLTE1LjIgOS4xLTIwLjEgMjguNy0xMSA0My45bDMyLjggNTQuOWM2IDEwIDE2LjYgMTUuNiAyNy41IDE1LjYgNS42IDAgMTEuMi0xLjUgMTYuNC00LjVMNDI4LjYgMzAxYzcxLjctNDIuOSAxMDQuNi0xMzMuNSA2OC45LTIwOXptLTE3Ny43IDEzbC0yLjUgMS41TDI5Ni44IDQ1YzkuNy00LjcgMTkuOC04LjEgMzAuMy0xMC4ybDIwLjYgNjEuOGMtOS44LjgtMTkuNCAzLjMtMjcuOSA4LjR6TTE0NS45IDQzMS44bC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6bTEwNy41LTYzLjlsLTYwLjUtMzguNSAzMC44LTE4LjMgNjAuNSAzOC41LTMwLjggMTguM3pNMzY0LjMgMzAybC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6bTIwLjQtMTk3LjNsNDYtNDZjOC40IDYuNSAxNiAxNC4xIDIyLjYgMjIuNkw0MDcuNiAxMjdjLTUuNy05LjMtMTMuNy0xNi45LTIyLjktMjIuM3ptODIuMSAxMDcuOGwtNTkuNS0xOS44YzMuMi01LjMgNS44LTEwLjkgNy40LTE3LjEgMS4xLTQuNSAxLjctOS4xIDEuOC0xMy42bDYwLjQgMjAuMWMtMi4xIDEwLjQtNS41IDIwLjYtMTAuMSAzMC40elwiXVxufTtcbnZhciBmYUNhbm5hYmlzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhbm5hYmlzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTVmXCIsIFwiTTUwMy40NyAzNjAuMjVjLTEuNTYtLjgyLTMyLjM5LTE2Ljg5LTc2Ljc4LTI1LjgxIDY0LjI1LTc1LjEyIDg0LjA1LTE2MS42NyA4NC45My0xNjUuNjQgMS4xOC01LjMzLS40NC0xMC45LTQuMy0xNC43Ny0zLjAzLTMuMDQtNy4xMi00LjctMTEuMzItNC43LTEuMTQgMC0yLjI5LjEyLTMuNDQuMzgtMy44OC44NS04Ni41NCAxOS41OS0xNjAuNTggNzkuNzYuMDEtMS40Ni4wMS0yLjkzLjAxLTQuNCAwLTExOC43OS01OS45OC0yMTMuNzItNjIuNTMtMjE3LjdBMTUuOTczIDE1Ljk3MyAwIDAgMCAyNTYgMGMtNS40NSAwLTEwLjUzIDIuNzgtMTMuNDcgNy4zNy0yLjU1IDMuOTgtNjIuNTMgOTguOTEtNjIuNTMgMjE3LjcgMCAxLjQ3LjAxIDIuOTQuMDEgNC40LTc0LjAzLTYwLjE2LTE1Ni42OS03OC45LTE2MC41OC03OS43Ni0xLjE0LS4yNS0yLjI5LS4zOC0zLjQ0LS4zOC00LjIgMC04LjI5IDEuNjYtMTEuMzIgNC43QTE1Ljk4NiAxNS45ODYgMCAwIDAgLjM4IDE2OC44Yy44OCAzLjk3IDIwLjY4IDkwLjUyIDg0LjkzIDE2NS42NC00NC4zOSA4LjkyLTc1LjIxIDI0Ljk5LTc2Ljc4IDI1LjgxYTE2LjAwMyAxNi4wMDMgMCAwIDAtLjAyIDI4LjI5YzIuNDUgMS4yOSA2MC43NiAzMS43MiAxMzMuNDkgMzEuNzIgNi4xNCAwIDExLjk2LS4xIDE3LjUtLjMxLTExLjM3IDIyLjIzLTE2LjUyIDM4LjMxLTE2LjgxIDM5LjIyLTEuOCA1LjY4LS4yOSAxMS44OSAzLjkxIDE2LjExYTE2LjAxOSAxNi4wMTkgMCAwIDAgMTYuMSAzLjk5YzEuODMtLjU3IDM3LjcyLTExLjk5IDc3LjMtMzkuMjlWNTA0YzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04di02NC4wMWMzOS41OCAyNy4zIDc1LjQ3IDM4LjcxIDc3LjMgMzkuMjlhMTYuMDE5IDE2LjAxOSAwIDAgMCAxNi4xLTMuOTljNC4yLTQuMjIgNS43MS0xMC40MyAzLjkxLTE2LjExLS4yOS0uOTEtNS40NS0xNi45OS0xNi44MS0zOS4yMiA1LjU0LjIxIDExLjM3LjMxIDE3LjUuMzEgNzIuNzIgMCAxMzEuMDQtMzAuNDMgMTMzLjQ5LTMxLjcyIDUuMjQtMi43OCA4LjUyLTguMjIgOC41MS0xNC4xNS0uMDEtNS45NC0zLjI5LTExLjM5LTguNTMtMTQuMTV6XCJdXG59O1xudmFyIGZhQ2Fwc3VsZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2Fwc3VsZXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0NmJcIiwgXCJNNTU1LjMgMzAwLjFMNDI0LjIgMTEyLjhDNDAxLjkgODEgMzY2LjQgNjQgMzMwLjQgNjRjLTIyLjYgMC00NS41IDYuNy02NS41IDIwLjctMTkuNyAxMy44LTMzLjcgMzIuOC00MS41IDUzLjhDMjIwLjUgNzkuMiAxNzIgMzIgMTEyIDMyIDUwLjEgMzIgMCA4Mi4xIDAgMTQ0djIyNGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyVjIxOC45YzMuMyA4LjYgNy4zIDE3LjEgMTIuOCAyNUwzNjggNDMxLjJjMjIuMiAzMS44IDU3LjcgNDguOCA5My44IDQ4LjggMjIuNyAwIDQ1LjUtNi43IDY1LjUtMjAuNyA1MS43LTM2LjIgNjQuMi0xMDcuNSAyOC0xNTkuMnpNMTYwIDI1Nkg2NFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxMTJ6bTE5NC44IDQ0LjlsLTY1LjYtOTMuN2MtNy43LTExLTEwLjctMjQuNC04LjMtMzcuNiAyLjMtMTMuMiA5LjctMjQuOCAyMC43LTMyLjUgOC41LTYgMTguNS05LjEgMjguOC05LjEgMTYuNSAwIDMxLjkgOCA0MS4zIDIxLjVsNjUuNiA5My43LTgyLjUgNTcuN3pcIl1cbn07XG52YXIgZmFDYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWI5XCIsIFwiTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwiXVxufTtcbnZhciBmYUNhckFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXItYWx0JyxcbiAgaWNvbjogWzQ4MCwgNTEyLCBbXSwgXCJmNWRlXCIsIFwiTTQzOC42NiAyMTIuMzNsLTExLjI0LTI4LjEtMTkuOTMtNDkuODNDMzkwLjM4IDkxLjYzIDM0OS41NyA2NCAzMDMuNSA2NGgtMTI3Yy00Ni4wNiAwLTg2Ljg4IDI3LjYzLTEwMy45OSA3MC40bC0xOS45MyA0OS44My0xMS4yNCAyOC4xQzE3LjIyIDIyMS41IDAgMjQ0LjY2IDAgMjcydjQ4YzAgMTYuMTIgNi4xNiAzMC42NyAxNiA0MS45M1Y0MTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgyNTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi01NC4wN2M5Ljg0LTExLjI1IDE2LTI1LjggMTYtNDEuOTN2LTQ4YzAtMjcuMzQtMTcuMjItNTAuNS00MS4zNC01OS42N3ptLTMwNi43My01NC4xNmM3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM2OCAyMDhIMTEybDE5LjkzLTQ5Ljgzek04MCAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNjAuOCAyNTYgODAgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzODAuOCAyNTYgNDAwIDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwiXVxufTtcbnZhciBmYUNhckJhdHRlcnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyLWJhdHRlcnknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1ZGZcIiwgXCJNNDgwIDEyOGgtMzJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OEgxOTJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIODBjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjI1NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE2MGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xOTIgMjY0YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2em0yNTYgMGMwIDQuNDItMy41OCA4LTggOGgtNDB2NDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNDBoLTQwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoNDB2LTQwYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djQwaDQwYzQuNDIgMCA4IDMuNTggOCA4djE2elwiXVxufTtcbnZhciBmYUNhckNyYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci1jcmFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVlMVwiLCBcIk0xNDMuMjUgMjIwLjgxbC0xMi40MiA0Ni4zN2MtMy4wMSAxMS4yNS0zLjYzIDIyLjg5LTIuNDEgMzQuMzlsLTM1LjIgMjguOThjLTYuNTcgNS40MS0xNi4zMS0uNDMtMTQuNjItOC43N2wxNS40NC03Ni42OGMxLjA2LTUuMjYtMi42Ni0xMC4yOC04LTEwLjc5bC03Ny44Ni03LjU1Yy04LjQ3LS44Mi0xMS4yMy0xMS44My00LjE0LTE2LjU0bDY1LjE1LTQzLjNjNC40Ni0yLjk3IDUuMzgtOS4xNSAxLjk4LTEzLjI5TDIxLjQ2IDkzLjIyYy01LjQxLTYuNTcuNDMtMTYuMyA4Ljc4LTE0LjYybDc2LjY4IDE1LjQ0YzUuMjYgMS4wNiAxMC4yOC0yLjY2IDEwLjgtOGw3LjU1LTc3Ljg2Yy44Mi04LjQ4IDExLjgzLTExLjIzIDE2LjU1LTQuMTRsNDMuMyA2NS4xNGMyLjk3IDQuNDYgOS4xNSA1LjM4IDEzLjI5IDEuOThsNjAuNC00OS43MWM2LjU3LTUuNDEgMTYuMy40MyAxNC42MiA4Ljc3TDI2Mi4xIDg2LjM4Yy0yLjcxIDMuMDUtNS40MyA2LjA5LTcuOTEgOS40bC0zMi4xNSA0Mi45Ny0xMC43MSAxNC4zMmMtMzIuNzMgOC43Ni01OS4xOCAzNC41My02OC4wOCA2Ny43NHptNDk0LjU3IDEzMi41MWwtMTIuNDIgNDYuMzZjLTMuMTMgMTEuNjgtOS4zOCAyMS42MS0xNy41NSAyOS4zNmE2Ni44NzYgNjYuODc2IDAgMCAxLTguNzYgN2wtMTMuOTkgNTIuMjNjLTEuMTQgNC4yNy0zLjEgOC4xLTUuNjUgMTEuMzgtNy42NyA5Ljg0LTIwLjc0IDE0LjY4LTMzLjU0IDExLjI1TDUxNSA1MDIuNjJjLTE3LjA3LTQuNTctMjcuMi0yMi4xMi0yMi42My0zOS4xOWw4LjI4LTMwLjkxLTI0Ny4yOC02Ni4yNi04LjI4IDMwLjkxYy00LjU3IDE3LjA3LTIyLjEyIDI3LjItMzkuMTkgMjIuNjNsLTMwLjkxLTguMjhjLTEyLjgtMy40My0yMS43LTE0LjE2LTIzLjQyLTI2LjUxLS41Ny00LjEyLS4zNS04LjQyLjc5LTEyLjY4bDEzLjk5LTUyLjIzYTY2LjYyIDY2LjYyIDAgMCAxLTQuMDktMTAuNDVjLTMuMi0xMC43OS0zLjY1LTIyLjUyLS41Mi0zNC4ybDEyLjQyLTQ2LjM3YzUuMzEtMTkuOCAxOS4zNi0zNC44MyAzNi44OS00Mi4yMWE2NC4zMzYgNjQuMzM2IDAgMCAxIDE4LjQ5LTQuNzJsMTguMTMtMjQuMjMgMzIuMTUtNDIuOTdjMy40NS00LjYxIDcuMTktOC45IDExLjItMTIuODQgOC03Ljg5IDE3LjAzLTE0LjQ0IDI2Ljc0LTE5LjUxIDQuODYtMi41NCA5Ljg5LTQuNzEgMTUuMDUtNi40OSAxMC4zMy0zLjU4IDIxLjE5LTUuNjMgMzIuMjQtNi4wNCAxMS4wNS0uNDEgMjIuMzEuODIgMzMuNDMgMy44bDEyMi42OCAzMi44N2MxMS4xMiAyLjk4IDIxLjQ4IDcuNTQgMzAuODUgMTMuNDNhMTExLjExIDExMS4xMSAwIDAgMSAzNC42OSAzNC41YzguODIgMTMuODggMTQuNjQgMjkuODQgMTYuNjggNDYuOTlsNi4zNiA1My4yOSAzLjU5IDMwLjA1YTY0LjQ5IDY0LjQ5IDAgMCAxIDIyLjc0IDI5LjkzYzQuMzkgMTEuODggNS4yOSAyNS4xOSAxLjc1IDM4LjM5ek0yNTUuNTggMjM0LjM0Yy0xOC41NS00Ljk3LTM0LjIxIDQuMDQtMzkuMTcgMjIuNTMtNC45NiAxOC40OSA0LjExIDM0LjEyIDIyLjY1IDM5LjA5IDE4LjU1IDQuOTcgNDUuNTQgMTUuNTEgNTAuNDktMi45OCA0Ljk2LTE4LjQ5LTE1LjQzLTUzLjY3LTMzLjk3LTU4LjY0em0yOTAuNjEgMjguMTdsLTYuMzYtNTMuMjljLS41OC00Ljg3LTEuODktOS41My0zLjgyLTEzLjg2LTUuOC0xMi45OS0xNy4yLTIzLjAxLTMxLjQyLTI2LjgybC0xMjIuNjgtMzIuODdhNDguMDA4IDQ4LjAwOCAwIDAgMC01MC44NiAxNy42MWwtMzIuMTUgNDIuOTcgMTcyIDQ2LjA4IDc1LjI5IDIwLjE4em0xOC40OSA1NC42NWMtMTguNTUtNC45Ny01My44IDE1LjMxLTU4Ljc1IDMzLjc5LTQuOTUgMTguNDkgMjMuNjkgMjIuODYgNDIuMjQgMjcuODMgMTguNTUgNC45NyAzNC4yMS00LjA0IDM5LjE3LTIyLjUzIDQuOTUtMTguNDgtNC4xMS0zNC4xMi0yMi42Ni0zOS4wOXpcIl1cbn07XG52YXIgZmFDYXJTaWRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci1zaWRlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWU0XCIsIFwiTTU0NCAxOTJoLTE2TDQxOS4yMiA1Ni4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAzMkgxNTUuMzNjLTI2LjE3IDAtNDkuNyAxNS45My01OS40MiA0MC4yM0w0OCAxOTQuMjZDMjAuNDQgMjAxLjQgMCAyMjYuMjEgMCAyNTZ2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoMTI4YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTgwYzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCA0MzJjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6bTcyLTI0MEgxMTYuOTNsMzguNC05NkgyMzJ2OTZ6bTQ4IDBWOTZoODkuMjRsNzYuOCA5NkgyODB6bTIwMCAyNDBjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6XCJdXG59O1xudmFyIGZhQ2FyYXZhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJhdmFuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmOGZmXCIsIFwiTTQxNiwyMDhhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDE2LDIwOFpNNjI0LDMyMEg1NzZWMTYwQTE2MCwxNjAsMCwwLDAsNDE2LDBINjRBNjQsNjQsMCwwLDAsMCw2NFYzMjBhNjQsNjQsMCwwLDAsNjQsNjRIOTZhOTYsOTYsMCwwLDAsMTkyLDBINjI0YTE2LDE2LDAsMCwwLDE2LTE2VjMzNkExNiwxNiwwLDAsMCw2MjQsMzIwWk0xOTIsNDMyYTQ4LDQ4LDAsMSwxLDQ4LTQ4QTQ4LjA1LDQ4LjA1LDAsMCwxLDE5Miw0MzJabTY0LTI0MGEzMiwzMiwwLDAsMS0zMiwzMkg5NmEzMiwzMiwwLDAsMS0zMi0zMlYxMjhBMzIsMzIsMCwwLDEsOTYsOTZIMjI0YTMyLDMyLDAsMCwxLDMyLDMyWk00NDgsMzIwSDMyMFYxMjhhMzIsMzIsMCwwLDEsMzItMzJoNjRhMzIsMzIsMCwwLDEsMzIsMzJaXCJdXG59O1xudmFyIGZhQ2FyZXREb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmV0LWRvd24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwZDdcIiwgXCJNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyelwiXVxufTtcbnZhciBmYUNhcmV0TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1sZWZ0JyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmMGQ5XCIsIFwiTTE5MiAxMjcuMzM4djI1Ny4zMjRjMCAxNy44MTgtMjEuNTQzIDI2Ljc0MS0zNC4xNDIgMTQuMTQyTDI5LjE5NiAyNzAuMTQyYy03LjgxLTcuODEtNy44MS0yMC40NzQgMC0yOC4yODRsMTI4LjY2Mi0xMjguNjYyYzEyLjU5OS0xMi42IDM0LjE0Mi0zLjY3NiAzNC4xNDIgMTQuMTQyelwiXVxufTtcbnZhciBmYUNhcmV0UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyZXQtcmlnaHQnLFxuICBpY29uOiBbMTkyLCA1MTIsIFtdLCBcImYwZGFcIiwgXCJNMCAzODQuNjYyVjEyNy4zMzhjMC0xNy44MTggMjEuNTQzLTI2Ljc0MSAzNC4xNDItMTQuMTQybDEyOC42NjIgMTI4LjY2MmM3LjgxIDcuODEgNy44MSAyMC40NzQgMCAyOC4yODRMMzQuMTQyIDM5OC44MDRDMjEuNTQzIDQxMS40MDQgMCA0MDIuNDggMCAzODQuNjYyelwiXVxufTtcbnZhciBmYUNhcmV0U3F1YXJlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1zcXVhcmUtZG93bicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjE1MFwiLCBcIk00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTkyLjUgMjIwLjVsMTIzIDEyM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTIzLTEyM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDEwMWMtMTAuNyAwLTE2LjEgMTIuOS04LjUgMjAuNXpcIl1cbn07XG52YXIgZmFDYXJldFNxdWFyZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyZXQtc3F1YXJlLWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxOTFcIiwgXCJNNDAwIDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0yNTkuNTE1IDEyNC40ODVsLTEyMy4wMyAxMjMuMDNjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwxMjMuMDI5IDEyMy4wMjljNy41NiA3LjU2IDIwLjQ4NSAyLjIwNiAyMC40ODUtOC40ODVWMTMyLjk3MWMuMDAxLTEwLjY5MS0xMi45MjUtMTYuMDQ1LTIwLjQ4NC04LjQ4NnpcIl1cbn07XG52YXIgZmFDYXJldFNxdWFyZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmV0LXNxdWFyZS1yaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjE1MlwiLCBcIk00OCAzMmgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4em0xNDAuNDg1IDM1NS41MTVsMTIzLjAyOS0xMjMuMDI5YzQuNjg2LTQuNjg2IDQuNjg2LTEyLjI4NCAwLTE2Ljk3MWwtMTIzLjAyOS0xMjMuMDNjLTcuNTYtNy41Ni0yMC40ODUtMi4yMDYtMjAuNDg1IDguNDg1djI0Ni4wNTljMCAxMC42OTEgMTIuOTI2IDE2LjA0NSAyMC40ODUgOC40ODZ6XCJdXG59O1xudmFyIGZhQ2FyZXRTcXVhcmVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1zcXVhcmUtdXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNTFcIiwgXCJNMCA0MzJWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OHptMzU1LjUxNS0xNDAuNDg1bC0xMjMuMDMtMTIzLjAzYy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMOTIuNDg1IDI5MS41MTVjLTcuNTYgNy41Ni0yLjIwNiAyMC40ODUgOC40ODUgMjAuNDg1aDI0Ni4wNTljMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4Ni0yMC40ODV6XCJdXG59O1xudmFyIGZhQ2FyZXRVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC11cCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjBkOFwiLCBcIk0yODguNjYyIDM1MkgzMS4zMzhjLTE3LjgxOCAwLTI2Ljc0MS0yMS41NDMtMTQuMTQyLTM0LjE0MmwxMjguNjYyLTEyOC42NjJjNy44MS03LjgxIDIwLjQ3NC03LjgxIDI4LjI4NCAwbDEyOC42NjIgMTI4LjY2MmMxMi42IDEyLjU5OSAzLjY3NiAzNC4xNDItMTQuMTQyIDM0LjE0MnpcIl1cbn07XG52YXIgZmFDYXJyb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2Fycm90JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzg3XCIsIFwiTTI5OC4yIDE1Ni42Yy01Mi43LTI1LjctMTE0LjUtMTAuNS0xNTAuMiAzMi44bDU1LjIgNTUuMmM2LjMgNi4zIDYuMyAxNi40IDAgMjIuNi0zLjEgMy4xLTcuMiA0LjctMTEuMyA0LjdzLTguMi0xLjYtMTEuMy00LjdMMTMwLjQgMjE3IDIuMyA0NzkuN2MtMi45IDYtMy4xIDEzLjMgMCAxOS43IDUuNCAxMS4xIDE4LjkgMTUuNyAzMCAxMC4zbDEzMy42LTY1LjItNDkuMi00OS4yYy02LjMtNi4yLTYuMy0xNi40IDAtMjIuNiA2LjMtNi4yIDE2LjQtNi4yIDIyLjYgMGw1NyA1NyAxMDItNDkuOGMyNC0xMS43IDQ0LjUtMzEuMyA1Ny4xLTU3LjEgMzAuMS02MS43IDQuNS0xMzYuMS01Ny4yLTE2Ni4yem05Mi4xLTM0LjlDNDA5LjggODEgMzk5LjcgMzIuOSAzNjAgMGMtNTAuMyA0MS43LTUyLjUgMTA3LjUtNy45IDE1MS45bDggOGM0NC40IDQ0LjYgMTEwLjMgNDIuNCAxNTEuOS03LjktMzIuOS0zOS43LTgxLTQ5LjgtMTIxLjctMzAuM3pcIl1cbn07XG52YXIgZmFDYXJ0QXJyb3dEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcnQtYXJyb3ctZG93bicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjIxOFwiLCBcIk01MDQuNzE3IDMyMEgyMTEuNTcybDYuNTQ1IDMyaDI2OC40MThjMTUuNDAxIDAgMjYuODE2IDE0LjMwMSAyMy40MDMgMjkuMzE5bC01LjUxNyAyNC4yNzZDNTIzLjExMiA0MTQuNjY4IDUzNiA0MzMuODI4IDUzNiA0NTZjMCAzMS4yMDItMjUuNTE5IDU2LjQ0NC01Ni44MjQgNTUuOTk0LTI5LjgyMy0uNDI5LTU0LjM1LTI0LjYzMS01NS4xNTUtNTQuNDQ3LS40NC0xNi4yODcgNi4wODUtMzEuMDQ5IDE2LjgwMy00MS41NDhIMjMxLjE3NkMyNDEuNTUzIDQyNi4xNjUgMjQ4IDQ0MC4zMjYgMjQ4IDQ1NmMwIDMxLjgxMy0yNi41MjggNTcuNDMxLTU4LjY3IDU1LjkzOC0yOC41NC0xLjMyNS01MS43NTEtMjQuMzg1LTUzLjI1MS01Mi45MTctMS4xNTgtMjIuMDM0IDEwLjQzNi00MS40NTUgMjguMDUxLTUxLjU4Nkw5My44ODMgNjRIMjRDMTAuNzQ1IDY0IDAgNTMuMjU1IDAgNDBWMjRDMCAxMC43NDUgMTAuNzQ1IDAgMjQgMGgxMDIuNTI5YzExLjQwMSAwIDIxLjIyOCA4LjAyMSAyMy41MTMgMTkuMTlMMTU5LjIwOCA2NEg1NTEuOTljMTUuNDAxIDAgMjYuODE2IDE0LjMwMSAyMy40MDMgMjkuMzE5bC00Ny4yNzMgMjA4QzUyNS42MzcgMzEyLjI0NiA1MTUuOTIzIDMyMCA1MDQuNzE3IDMyMHpNNDAzLjAyOSAxOTJIMzYwdi02MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY2MGgtNDMuMDI5Yy0xMC42OTEgMC0xNi4wNDUgMTIuOTI2LTguNDg1IDIwLjQ4NWw2Ny4wMjkgNjcuMDI5YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw2Ny4wMjktNjcuMDI5YzcuNTU5LTcuNTU5IDIuMjA1LTIwLjQ4NS04LjQ4Ni0yMC40ODV6XCJdXG59O1xudmFyIGZhQ2FydFBsdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FydC1wbHVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjE3XCIsIFwiTTUwNC43MTcgMzIwSDIxMS41NzJsNi41NDUgMzJoMjY4LjQxOGMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTUuNTE3IDI0LjI3NkM1MjMuMTEyIDQxNC42NjggNTM2IDQzMy44MjggNTM2IDQ1NmMwIDMxLjIwMi0yNS41MTkgNTYuNDQ0LTU2LjgyNCA1NS45OTQtMjkuODIzLS40MjktNTQuMzUtMjQuNjMxLTU1LjE1NS01NC40NDctLjQ0LTE2LjI4NyA2LjA4NS0zMS4wNDkgMTYuODAzLTQxLjU0OEgyMzEuMTc2QzI0MS41NTMgNDI2LjE2NSAyNDggNDQwLjMyNiAyNDggNDU2YzAgMzEuODEzLTI2LjUyOCA1Ny40MzEtNTguNjcgNTUuOTM4LTI4LjU0LTEuMzI1LTUxLjc1MS0yNC4zODUtNTMuMjUxLTUyLjkxNy0xLjE1OC0yMi4wMzQgMTAuNDM2LTQxLjQ1NSAyOC4wNTEtNTEuNTg2TDkzLjg4MyA2NEgyNEMxMC43NDUgNjQgMCA1My4yNTUgMCA0MFYyNEMwIDEwLjc0NSAxMC43NDUgMCAyNCAwaDEwMi41MjljMTEuNDAxIDAgMjEuMjI4IDguMDIxIDIzLjUxMyAxOS4xOUwxNTkuMjA4IDY0SDU1MS45OWMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTQ3LjI3MyAyMDhDNTI1LjYzNyAzMTIuMjQ2IDUxNS45MjMgMzIwIDUwNC43MTcgMzIwek00MDggMTY4aC00OHYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNmgtMTZjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2NDBoLTQ4Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djE2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNDh2NDBjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di00MGg0OGM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di0xNmMwLTguODM3LTcuMTYzLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUNhc2hSZWdpc3RlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXNoLXJlZ2lzdGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzg4XCIsIFwiTTUxMS4xIDM3OC44bC0yNi43LTE2MGMtMi42LTE1LjQtMTUuOS0yNi43LTMxLjYtMjYuN0gyMDh2LTY0aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZ2NjRINTkuMWMtMTUuNiAwLTI5IDExLjMtMzEuNiAyNi43TC44IDM3OC43Yy0uNiAzLjUtLjkgNy0uOSAxMC41VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTkwLjdjLjEtMy41LS4yLTctLjgtMTAuNXpNMjgwIDI0OGMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZ6bS0zMiA2NGgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZ6bS0zMi04MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZ6TTgwIDgwVjQ4aDE5MnYzMkg4MHptNDAgMjAwaC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNnptMTYgNjR2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2em0yMTYgMTEyYzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE3NmM0LjQgMCA4IDMuNiA4IDh2MTZ6bTI0LTExMmMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZ6bTQ4LTgwYzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNnpcIl1cbn07XG52YXIgZmFDYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2F0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNmJlXCIsIFwiTTI5MC41OSAxOTJjLTIwLjE4IDAtMTA2LjgyIDEuOTgtMTYyLjU5IDg1Ljk1VjE5MmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2LTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzJjMTcuNjQgMCAzMiAxNC4zNiAzMiAzMnYyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMTc2YzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0zMmwxMjgtOTZ2MTQ0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjI4OS44NmMtMTAuMjkgMi42Ny0yMC44OSA0LjU0LTMyIDQuNTQtNjEuODEgMC0xMTMuNTItNDQuMDUtMTI1LjQxLTEwMi40ek00NDggOTZoLTY0bC02NC02NHYxMzQuNGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2VjMybC02NCA2NHptLTcyIDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptODAgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJdXG59O1xudmFyIGZhQ2VydGlmaWNhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2VydGlmaWNhdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYTNcIiwgXCJNNDU4LjYyMiAyNTUuOTJsNDUuOTg1LTQ1LjAwNWMxMy43MDgtMTIuOTc3IDcuMzE2LTM2LjAzOS0xMC42NjQtNDAuMzM5bC02Mi42NS0xNS45OSAxNy42NjEtNjIuMDE1YzQuOTkxLTE3LjgzOC0xMS44MjktMzQuNjYzLTI5LjY2MS0yOS42NzFsLTYxLjk5NCAxNy42NjctMTUuOTg0LTYyLjY3MUMzMzcuMDg1LjE5NyAzMTMuNzY1LTYuMjc2IDMwMC45OSA3LjIyOEwyNTYgNTMuNTcgMjExLjAxMSA3LjIyOWMtMTIuNjMtMTMuMzUxLTM2LjA0Ny03LjIzNC00MC4zMjUgMTAuNjY4bC0xNS45ODQgNjIuNjcxLTYxLjk5NS0xNy42NjdDNzQuODcgNTcuOTA3IDU4LjA1NiA3NC43MzggNjMuMDQ2IDkyLjU3MmwxNy42NjEgNjIuMDE1LTYyLjY1IDE1Ljk5Qy4wNjkgMTc0Ljg3OC02LjMxIDE5Ny45NDQgNy4zOTIgMjEwLjkxNWw0NS45ODUgNDUuMDA1LTQ1Ljk4NSA0NS4wMDRjLTEzLjcwOCAxMi45NzctNy4zMTYgMzYuMDM5IDEwLjY2NCA0MC4zMzlsNjIuNjUgMTUuOTktMTcuNjYxIDYyLjAxNWMtNC45OTEgMTcuODM4IDExLjgyOSAzNC42NjMgMjkuNjYxIDI5LjY3MWw2MS45OTQtMTcuNjY3IDE1Ljk4NCA2Mi42NzFjNC40MzkgMTguNTc1IDI3LjY5NiAyNC4wMTggNDAuMzI1IDEwLjY2OEwyNTYgNDU4LjYxbDQ0Ljk4OSA0Ni4wMDFjMTIuNSAxMy40ODggMzUuOTg3IDcuNDg2IDQwLjMyNS0xMC42NjhsMTUuOTg0LTYyLjY3MSA2MS45OTQgMTcuNjY3YzE3LjgzNiA0Ljk5NCAzNC42NTEtMTEuODM3IDI5LjY2MS0yOS42NzFsLTE3LjY2MS02Mi4wMTUgNjIuNjUtMTUuOTljMTcuOTg3LTQuMzAyIDI0LjM2Ni0yNy4zNjcgMTAuNjY0LTQwLjMzOWwtNDUuOTg0LTQ1LjAwNHpcIl1cbn07XG52YXIgZmFDaGFpciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFpcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjZjMFwiLCBcIk0xMTIgMTI4YzAtMjkuNSAxNi4yLTU1IDQwLTY4LjlWMjU2aDQ4VjQ4aDQ4djIwOGg0OFY1OS4xYzIzLjggMTMuOSA0MCAzOS40IDQwIDY4Ljl2MTI4aDQ4VjEyOEMzODQgNTcuMyAzMjYuNyAwIDI1NiAwaC02NEMxMjEuMyAwIDY0IDU3LjMgNjQgMTI4djEyOGg0OHptMzM0LjMgMjEzLjlsLTEwLjctMzJjLTQuNC0xMy4xLTE2LjYtMjEuOS0zMC40LTIxLjlINDIuN2MtMTMuOCAwLTI2IDguOC0zMC40IDIxLjlsLTEwLjcgMzJDLTUuMiAzNjIuNiAxMC4yIDM4NCAzMiAzODR2MTEyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzg0aDI1NnYxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMjEuOCAwIDM3LjItMjEuNCAzMC4zLTQyLjF6XCJdXG59O1xudmFyIGZhQ2hhbGtib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFsa2JvYXJkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTFiXCIsIFwiTTk2IDY0aDQ0OHYzNTJoNjRWNDBjMC0yMi4wNi0xNy45NC00MC00MC00MEg3MkM0OS45NCAwIDMyIDE3Ljk0IDMyIDQwdjM3Nmg2NFY2NHptNTI4IDM4NEg0ODB2LTY0SDI4OHY2NEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFDaGFsa2JvYXJkVGVhY2hlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFsa2JvYXJkLXRlYWNoZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MWNcIiwgXCJNMjA4IDM1MmMtMi4zOSAwLTQuNzguMzUtNy4wNiAxLjA5QzE4Ny45OCAzNTcuMyAxNzQuMzUgMzYwIDE2MCAzNjBjLTE0LjM1IDAtMjcuOTgtMi43LTQwLjk1LTYuOTEtMi4yOC0uNzQtNC42Ni0xLjA5LTcuMDUtMS4wOUM0OS45NCAzNTItLjMzIDQwMi40OCAwIDQ2NC42Mi4xNCA0OTAuODggMjEuNzMgNTEyIDQ4IDUxMmgyMjRjMjYuMjcgMCA0Ny44Ni0yMS4xMiA0OC00Ny4zOC4zMy02Mi4xNC00OS45NC0xMTIuNjItMTEyLTExMi42MnptLTQ4LTMyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZzLTQyLjk4LTk2LTk2LTk2LTk2IDQyLjk4LTk2IDk2IDQyLjk4IDk2IDk2IDk2ek01OTIgMEgyMDhjLTI2LjQ3IDAtNDggMjIuMjUtNDggNDkuNTlWOTZjMjMuNDIgMCA0NS4xIDYuNzggNjQgMTcuOFY2NGgzNTJ2Mjg4aC02NHYtNjRIMzg0djY0aC03Ni4yNGMxOS4xIDE2LjY5IDMzLjEyIDM4LjczIDM5LjY5IDY0SDU5MmMyNi40NyAwIDQ4LTIyLjI1IDQ4LTQ5LjU5VjQ5LjU5QzY0MCAyMi4yNSA2MTguNDcgMCA1OTIgMHpcIl1cbn07XG52YXIgZmFDaGFyZ2luZ1N0YXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcmdpbmctc3RhdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjVlN1wiLCBcIk0zMzYgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0yMDgtMzIwVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2cy0xNiA3LjE2LTE2IDE2djQ4aC0zMlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNnMtMTYgNy4xNi0xNiAxNnY0OGgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgMzUuNzYgMjMuNjIgNjUuNjkgNTYgNzUuOTN2MTE4LjQ5YzAgMTMuOTUtOS41IDI2LjkyLTIzLjI2IDI5LjE5QzQzMS4yMiA0MDIuNSA0MTYgMzg4Ljk5IDQxNiAzNzJ2LTI4YzAtNDguNi0zOS40LTg4LTg4LTg4aC04VjY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRIOTZDNjAuNjUgMCAzMiAyOC42NSAzMiA2NHYzNTJoMjg4VjMwNGg4YzIyLjA5IDAgNDAgMTcuOTEgNDAgNDB2MjQuNjFjMCAzOS42NyAyOC45MiA3NS4xNiA2OC40MSA3OS4wMUM0ODEuNzEgNDUyLjA1IDUyMCA0MTYuNDEgNTIwIDM3MlYyNTEuOTNjMzIuMzgtMTAuMjQgNTYtNDAuMTcgNTYtNzUuOTN2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNnptLTI4My45MSA0Ny43NmwtOTMuNyAxMzljLTIuMiAzLjMzLTYuMjEgNS4yNC0xMC4zOSA1LjI0LTcuNjcgMC0xMy40Ny02LjI4LTExLjY3LTEyLjkyTDE2Ny4zNSAyMjRIMTA4Yy03LjI1IDAtMTIuODUtNS41OS0xMS44OS0xMS44OWwxNi0xMDdDMTEyLjkgOTkuOSAxMTcuOTggOTYgMTI0IDk2aDY4YzcuODggMCAxMy42MiA2LjU0IDExLjYgMTMuMjFMMTkyIDE2MGg1Ny43YzkuMjQgMCAxNS4wMSA4Ljc4IDEwLjM5IDE1Ljc2elwiXVxufTtcbnZhciBmYUNoYXJ0QXJlYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFydC1hcmVhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWZlXCIsIFwiTTUwMCAzODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyVjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MzA4aDQzNnpNMzcyLjcgMTU5LjVMMjg4IDIxNmwtODUuMy0xMTMuN2MtNS4xLTYuOC0xNS41LTYuMy0xOS45IDFMOTYgMjQ4djEwNGgzODRsLTg5LjktMTg3LjhjLTMuMi02LjUtMTEuNC04LjctMTcuNC00Ljd6XCJdXG59O1xudmFyIGZhQ2hhcnRCYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtYmFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDgwXCIsIFwiTTMzMi44IDMyMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxNzIuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bTk2IDBoMzguNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWNzYuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYyMzAuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bS0yODggMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOHYtNzAuNGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHY3MC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxMDguOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxOTguNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFDaGFydExpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtbGluZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjIwMVwiLCBcIk00OTYgMzg0SDY0VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgNjQgMCA3MS4xNiAwIDgwdjMzNmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTQ2NCA5NkgzNDUuOTRjLTIxLjM4IDAtMzIuMDkgMjUuODUtMTYuOTcgNDAuOTdsMzIuNCAzMi40TDI4OCAyNDIuNzVsLTczLjM3LTczLjM3Yy0xMi41LTEyLjUtMzIuNzYtMTIuNS00NS4yNSAwbC02OC42OSA2OC42OWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MiAyMi42MmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwTDE5MiAyMzcuMjVsNzMuMzcgNzMuMzdjMTIuNSAxMi41IDMyLjc2IDEyLjUgNDUuMjUgMGw5Ni05NiAzMi40IDMyLjRjMTUuMTIgMTUuMTIgNDAuOTcgNC40MSA0MC45Ny0xNi45N1YxMTJjLjAxLTguODQtNy4xNS0xNi0xNS45OS0xNnpcIl1cbn07XG52YXIgZmFDaGFydFBpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFydC1waWUnLFxuICBpY29uOiBbNTQ0LCA1MTIsIFtdLCBcImYyMDBcIiwgXCJNNTI3Ljc5IDI4OEgyOTAuNWwxNTguMDMgMTU4LjAzYzYuMDQgNi4wNCAxNS45OCA2LjUzIDIyLjE5LjY4IDM4LjctMzYuNDYgNjUuMzItODUuNjEgNzMuMTMtMTQwLjg2IDEuMzQtOS40Ni02LjUxLTE3Ljg1LTE2LjA2LTE3Ljg1em0tMTUuODMtNjQuOEM1MDMuNzIgMTAzLjc0IDQwOC4yNiA4LjI4IDI4OC44LjA0IDI3OS42OC0uNTkgMjcyIDcuMSAyNzIgMTYuMjRWMjQwaDIyMy43N2M5LjE0IDAgMTYuODItNy42OCAxNi4xOS0xNi44ek0yMjQgMjg4VjUwLjcxYzAtOS41NS04LjM5LTE3LjQtMTcuODQtMTYuMDZDODYuOTkgNTEuNDktNC4xIDE1NS42LjE0IDI4MC4zNyA0LjUgNDA4LjUxIDExNC44MyA1MTMuNTkgMjQzLjAzIDUxMS45OGM1MC40LS42MyA5Ni45Ny0xNi44NyAxMzUuMjYtNDQuMDMgNy45LTUuNiA4LjQyLTE3LjIzIDEuNTctMjQuMDhMMjI0IDI4OHpcIl1cbn07XG52YXIgZmFDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVjaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwY1wiLCBcIk0xNzMuODk4IDQzOS40MDRsLTE2Ni40LTE2Ni40Yy05Ljk5Ny05Ljk5Ny05Ljk5Ny0yNi4yMDYgMC0zNi4yMDRsMzYuMjAzLTM2LjIwNGM5Ljk5Ny05Ljk5OCAyNi4yMDctOS45OTggMzYuMjA0IDBMMTkyIDMxMi42OSA0MzIuMDk1IDcyLjU5NmM5Ljk5Ny05Ljk5NyAyNi4yMDctOS45OTcgMzYuMjA0IDBsMzYuMjAzIDM2LjIwNGM5Ljk5NyA5Ljk5NyA5Ljk5NyAyNi4yMDYgMCAzNi4yMDRsLTI5NC40IDI5NC40MDFjLTkuOTk4IDkuOTk3LTI2LjIwNyA5Ljk5Ny0zNi4yMDQtLjAwMXpcIl1cbn07XG52YXIgZmFDaGVja0NpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVjay1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNThcIiwgXCJNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6TTIyNy4zMTQgMzg3LjMxNGwxODQtMTg0YzYuMjQ4LTYuMjQ4IDYuMjQ4LTE2LjM3OSAwLTIyLjYyN2wtMjIuNjI3LTIyLjYyN2MtNi4yNDgtNi4yNDktMTYuMzc5LTYuMjQ5LTIyLjYyOCAwTDIxNiAzMDguMTE4bC03MC4wNTktNzAuMDU5Yy02LjI0OC02LjI0OC0xNi4zNzktNi4yNDgtMjIuNjI4IDBsLTIyLjYyNyAyMi42MjdjLTYuMjQ4IDYuMjQ4LTYuMjQ4IDE2LjM3OSAwIDIyLjYyN2wxMDQgMTA0YzYuMjQ5IDYuMjQ5IDE2LjM3OSA2LjI0OSAyMi42MjguMDAxelwiXVxufTtcbnZhciBmYUNoZWNrRG91YmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZWNrLWRvdWJsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU2MFwiLCBcIk01MDUgMTc0LjhsLTM5LjYtMzkuNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTkyIDM3NC43IDgwLjYgMjYzLjJjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzAyLjljLTkuNCA5LjQtOS40IDI0LjYgMCAzNEwxNzUgNTA1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI5Ni0yOTYuMmM5LjQtOS41IDkuNC0yNC43LjEtMzR6bS0zMjQuMyAxMDZjNi4yIDYuMyAxNi40IDYuMyAyMi42IDBsMjA4LTIwOC4yYzYuMi02LjMgNi4yLTE2LjQgMC0yMi42TDM2Ni4xIDQuN2MtNi4yLTYuMy0xNi40LTYuMy0yMi42IDBMMTkyIDE1Ni4ybC01NS40LTU1LjVjLTYuMi02LjMtMTYuNC02LjMtMjIuNiAwTDY4LjcgMTQ2Yy02LjIgNi4zLTYuMiAxNi40IDAgMjIuNmwxMTIgMTEyLjJ6XCJdXG59O1xudmFyIGZhQ2hlY2tTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlY2stc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTRhXCIsIFwiTTQwMCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHptLTIwNC42ODYtOTguMDU5bDE4NC0xODRjNi4yNDgtNi4yNDggNi4yNDgtMTYuMzc5IDAtMjIuNjI3bC0yMi42MjctMjIuNjI3Yy02LjI0OC02LjI0OC0xNi4zNzktNi4yNDktMjIuNjI4IDBMMTg0IDMwMi43NDVsLTcwLjA1OS03MC4wNTljLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OC0yMi42MjggMGwtMjIuNjI3IDIyLjYyN2MtNi4yNDggNi4yNDgtNi4yNDggMTYuMzc5IDAgMjIuNjI3bDEwNCAxMDRjNi4yNDkgNi4yNSAxNi4zNzkgNi4yNSAyMi42MjguMDAxelwiXVxufTtcbnZhciBmYUNoZWVzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVlc2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ZWZcIiwgXCJNMCAyODh2MTYwYTMyIDMyIDAgMCAwIDMyIDMyaDQ0OGEzMiAzMiAwIDAgMCAzMi0zMlYyODh6TTI5OS44MyAzMmEzMiAzMiAwIDAgMC0yMS4xMyA3TDAgMjU2aDUxMmMwLTExOS44OS05NC0yMTcuOC0yMTIuMTctMjI0elwiXVxufTtcbnZhciBmYUNoZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDM5XCIsIFwiTTc0IDIwOEg2NGExNiAxNiAwIDAgMC0xNiAxNnYxNmExNiAxNiAwIDAgMCAxNiAxNmgxNS45NEE1MzUuNzggNTM1Ljc4IDAgMCAxIDY0IDM4NGgxMjhhNTM1Ljc4IDUzNS43OCAwIDAgMS0xNS45NC0xMjhIMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0xNmExNiAxNiAwIDAgMC0xNi0xNmgtMTBsMzMuODktOTAuMzhhMTYgMTYgMCAwIDAtMTUtMjEuNjJIMTQ0VjY0aDI0YTggOCAwIDAgMCA4LThWNDBhOCA4IDAgMCAwLTgtOGgtMjRWOGE4IDggMCAwIDAtOC04aC0xNmE4IDggMCAwIDAtOCA4djI0SDg4YTggOCAwIDAgMC04IDh2MTZhOCA4IDAgMCAwIDggOGgyNHYzMkg1NS4wOWExNiAxNiAwIDAgMC0xNSAyMS42MnptMTczLjE2IDI1MS41OEwyMjQgNDQ4di0xNmExNiAxNiAwIDAgMC0xNi0xNkg0OGExNiAxNiAwIDAgMC0xNiAxNnYxNkw4Ljg1IDQ1OS41OEExNiAxNiAwIDAgMCAwIDQ3My44OVY0OTZhMTYgMTYgMCAwIDAgMTYgMTZoMjI0YTE2IDE2IDAgMCAwIDE2LTE2di0yMi4xMWExNiAxNiAwIDAgMC04Ljg0LTE0LjMxem05Mi43Ny0xNTcuNzhsLTMuMjkgODIuMmgxMjYuNzJsLTMuMjktODIuMjEgMjQuNi0yMC43OUEzMiAzMiAwIDAgMCA0OTYgMjU2LjU0VjE5OGE2IDYgMCAwIDAtNi02aC0yNi4zOGE2IDYgMCAwIDAtNiA2djI2aC0yNC43MXYtMjZhNiA2IDAgMCAwLTYtNkgzNzMuMWE2IDYgMCAwIDAtNiA2djI2aC0yNC43MXYtMjZhNiA2IDAgMCAwLTYtNkgzMTBhNiA2IDAgMCAwLTYgNnY1OC42YTMyIDMyIDAgMCAwIDExLjM2IDI0LjR6TTM4NCAzMDRhMTYgMTYgMCAwIDEgMzIgMHYzMmgtMzJ6bTExOS4xNiAxNTUuNThMNDgwIDQ0OHYtMTZhMTYgMTYgMCAwIDAtMTYtMTZIMzM2YTE2IDE2IDAgMCAwLTE2IDE2djE2bC0yMy4xNSAxMS41OGExNiAxNiAwIDAgMC04Ljg1IDE0LjMxVjQ5NmExNiAxNiAwIDAgMCAxNiAxNmgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTIyLjExYTE2IDE2IDAgMCAwLTguODQtMTQuMzF6XCJdXG59O1xudmFyIGZhQ2hlc3NCaXNob3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3MtYmlzaG9wJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmNDNhXCIsIFwiTTggMjg3Ljg4YzAgNTEuNjQgMjIuMTQgNzMuODMgNTYgODQuNlY0MTZoMTkydi00My41MmMzMy44Ni0xMC43NyA1Ni0zMyA1Ni04NC42IDAtMzAuNjEtMTAuNzMtNjcuMS0yNi42OS0xMDIuNTZMMTg1IDI4NS42NWE4IDggMCAwIDEtMTEuMzEgMGwtMTEuMzEtMTEuMzFhOCA4IDAgMCAxIDAtMTEuMzFMMjcwLjI3IDE1NS4xYy0yMC44LTM3LjkxLTQ2LjQ3LTcyLjEtNzAuODctOTIuNTlDMjEzLjQgNTkuMDkgMjI0IDQ3LjA1IDIyNCAzMmEzMiAzMiAwIDAgMC0zMi0zMmgtNjRhMzIgMzIgMCAwIDAtMzIgMzJjMCAxNSAxMC42IDI3LjA5IDI0LjYgMzAuNTFDNjcuODEgMTA2LjggOCAyMTQuNSA4IDI4Ny44OHpNMzA0IDQ0OEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYUNoZXNzQm9hcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3MtYm9hcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0M2NcIiwgXCJNMjU1LjkuMmgtNjR2NjRoNjR6TTAgNjQuMTd2NjRoNjR2LTY0ek0xMjggLjJINjR2NjRoNjR6bTY0IDI1NS45djY0aDY0di02NHpNMCAxOTIuMTJ2NjRoNjR2LTY0ek0zODMuODUuMmgtNjR2NjRoNjR6bTEyOCAwaC02NHY2NGg2NHpNMTI4IDI1Ni4xSDY0djY0aDY0ek01MTEuOCA0NDh2LTY0aC02NHY2NHptMC0xMjh2LTY0aC02NHY2NHpNMzgzLjg1IDUxMmg2NHYtNjRoLTY0em0xMjgtMzE5Ljg4di02NGgtNjR2NjR6TTEyOCA1MTJoNjR2LTY0aC02NHpNMCA1MTJoNjR2LTY0SDB6bTI1NS45IDBoNjR2LTY0aC02NHpNMCAzMjAuMDd2NjRoNjR2LTY0em0zMTkuODgtMTkxLjkydi02NGgtNjR2NjR6bS02NCAxMjhoNjR2LTY0aC02NHptLTY0IDEyOHY2NGg2NHYtNjR6bTEyOC02NGg2NHYtNjRoLTY0em0wLTEyNy45NWg2NHYtNjRoLTY0em0wIDE5MS45M3Y2NGg2NHYtNjR6TTY0IDM4NC4wNXY2NGg2NHYtNjR6bTEyOC0yNTUuOXYtNjRoLTY0djY0em0xOTEuOTIgMjU1LjloNjR2LTY0aC02NHptLTEyOC0xOTEuOTN2LTY0aC02NHY2NHptMTI4LTEyNy45NXY2NGg2NHYtNjR6bS0xMjggMjU1Ljl2NjRoNjR2LTY0em0tNjQtMTI3Ljk1SDEyOHY2NGg2NHptMTkxLjkyIDY0aDY0di02NGgtNjR6TTEyOCAxMjguMTVINjR2NjRoNjR6bTAgMTkxLjkydjY0aDY0di02NHpcIl1cbn07XG52YXIgZmFDaGVzc0tpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3Mta2luZycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjQzZlwiLCBcIk00MDAgNDQ4SDQ4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE2LTI4OEgyNTZ2LTQ4aDQwYTggOCAwIDAgMCA4LThWNTZhOCA4IDAgMCAwLTgtOGgtNDBWOGE4IDggMCAwIDAtOC04aC00OGE4IDggMCAwIDAtOCA4djQwaC00MGE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDhoNDB2NDhIMzJhMzIgMzIgMCAwIDAtMzAuNTIgNDEuNTRMNzQuNTYgNDE2aDI5OC44OGw3My4wOC0yMTQuNDZBMzIgMzIgMCAwIDAgNDE2IDE2MHpcIl1cbn07XG52YXIgZmFDaGVzc0tuaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1rbmlnaHQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY0NDFcIiwgXCJNMTkgMjcyLjQ3bDQwLjYzIDE4LjA2YTMyIDMyIDAgMCAwIDI0Ljg4LjQ3bDEyLjc4LTUuMTJhMzIgMzIgMCAwIDAgMTguNzYtMjAuNWw5LjIyLTMwLjY1YTI0IDI0IDAgMCAxIDEyLjU1LTE1LjY1TDE1OS45NCAyMDh2NTAuMzNhNDggNDggMCAwIDEtMjYuNTMgNDIuOTRsLTU3LjIyIDI4LjY1QTgwIDgwIDAgMCAwIDMyIDQwMS40OFY0MTZoMzE5Ljg2VjIyNGMwLTEwNi04NS45Mi0xOTItMTkxLjkyLTE5MkgxMkExMiAxMiAwIDAgMCAwIDQ0YTE2LjkgMTYuOSAwIDAgMCAxLjc5IDcuNThMMTYgODBsLTkgOWEyNCAyNCAwIDAgMC03IDE3djEzNy4yMWEzMiAzMiAwIDAgMCAxOSAyOS4yNnpNNTIgMTI4YTIwIDIwIDAgMSAxLTIwIDIwIDIwIDIwIDAgMCAxIDIwLTIwem0zMTYgMzIwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhQ2hlc3NQYXduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzLXBhd24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImY0NDNcIiwgXCJNMTA1LjEgMjI0SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE2djUuNDljMCA0NC00LjE0IDg2LjYtMjQgMTIyLjUxaDE3NmMtMTkuODktMzUuOTEtMjQtNzguNTEtMjQtMTIyLjUxVjI4OGgxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI1LjFjMjkuMzktMTguMzggNDkuMS01MC43OCA0OS4xLTg4YTEwNCAxMDQgMCAwIDAtMjA4IDBjMCAzNy4yMiAxOS43MSA2OS42MiA0OS4xIDg4ek0zMDQgNDQ4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhQ2hlc3NRdWVlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1xdWVlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ0NVwiLCBcIk0yNTYgMTEyYTU2IDU2IDAgMSAwLTU2LTU2IDU2IDU2IDAgMCAwIDU2IDU2em0xNzYgMzM2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTcyLjg3LTI2My44NGwtMjguNTEtMTUuOTJjLTcuNDQtNS0xNi45MS0yLjQ2LTIyLjI5IDQuNjhhNDcuNTkgNDcuNTkgMCAwIDEtNDcuMjMgMTguMjNDMzgzLjcgMTg2Ljg2IDM2OCAxNjQuOTMgMzY4IDE0MS40YTEzLjQgMTMuNCAwIDAgMC0xMy40LTEzLjRoLTM4Ljc3Yy02IDAtMTEuNjEgNC0xMi44NiA5LjkxYTQ4IDQ4IDAgMCAxLTkzLjk0IDBjLTEuMjUtNS45Mi02LjgyLTkuOTEtMTIuODYtOS45MUgxNTcuNGExMy40IDEzLjQgMCAwIDAtMTMuNCAxMy40YzAgMjUuNjktMTkgNDguNzUtNDQuNjcgNTAuNDlhNDcuNSA0Ny41IDAgMCAxLTQxLjU0LTE5LjE1Yy01LjI4LTcuMDktMTQuNzMtOS40NS0yMi4wOS00LjU0bC0yOC41NyAxNmExNiAxNiAwIDAgMC01LjQ0IDIwLjQ3TDEwNC4yNCA0MTZoMzAzLjUybDEwMi41NS0yMTEuMzdhMTYgMTYgMCAwIDAtNS40NC0yMC40N3pcIl1cbn07XG52YXIgZmFDaGVzc1Jvb2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3Mtcm9vaycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjQ0N1wiLCBcIk0zNjggMzJoLTU2YTE2IDE2IDAgMCAwLTE2IDE2djQ4aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNmgtODBhMTYgMTYgMCAwIDAtMTYgMTZ2NDhIODguMVY0OGExNiAxNiAwIDAgMC0xNi0xNkgxNkExNiAxNiAwIDAgMCAwIDQ4djE3Nmw2NCAzMmMwIDQ4LjMzLTEuNTQgOTUtMTMuMjEgMTYwaDI4Mi40MkMzMjEuNTQgMzUxIDMyMCAzMDMuNzIgMzIwIDI1Nmw2NC0zMlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNMjI0IDMyMGgtNjR2LTY0YTMyIDMyIDAgMCAxIDY0IDB6bTE0NCAxMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzUyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFDaGV2cm9uQ2lyY2xlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWNpcmNsZS1kb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTNhXCIsIFwiTTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHpNMjczIDM2OS45bDEzNS41LTEzNS41YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0xNy0xN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMjU2IDI4NS4xIDE1NC40IDE4My41Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMTcgMTdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDIzOSAzNjkuOWM5LjQgOS40IDI0LjYgOS40IDM0IDB6XCJdXG59O1xudmFyIGZhQ2hldnJvbkNpcmNsZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hldnJvbi1jaXJjbGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEzN1wiLCBcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHpNMTQyLjEgMjczbDEzNS41IDEzNS41YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDE3LTE3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDIyNi45IDI1NmwxMDEuNi0xMDEuNmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTctMTdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE0Mi4xIDIzOWMtOS40IDkuNC05LjQgMjQuNiAwIDM0elwiXVxufTtcbnZhciBmYUNoZXZyb25DaXJjbGVSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWNpcmNsZS1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEzOFwiLCBcIk0yNTYgOGMxMzcgMCAyNDggMTExIDI0OCAyNDhTMzkzIDUwNCAyNTYgNTA0IDggMzkzIDggMjU2IDExOSA4IDI1NiA4em0xMTMuOSAyMzFMMjM0LjQgMTAzLjVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xNyAxN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlMMjg1LjEgMjU2IDE4My41IDM1Ny42Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxNyAxN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMEwzNjkuOSAyNzNjOS40LTkuNCA5LjQtMjQuNiAwLTM0elwiXVxufTtcbnZhciBmYUNoZXZyb25DaXJjbGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWNpcmNsZS11cCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEzOVwiLCBcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0yMzEtMTEzLjlMMTAzLjUgMjc3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI1NiAyMjYuOWwxMDEuNiAxMDEuNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxNy0xN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTQyLjFjLTkuNC05LjQtMjQuNi05LjQtMzQgMHpcIl1cbn07XG52YXIgZmFDaGV2cm9uRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNzhcIiwgXCJNMjA3LjAyOSAzODEuNDc2TDEyLjY4NiAxODcuMTMyYy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMjIuNjY3LTIyLjY2N2M5LjM1Ny05LjM1NyAyNC41MjItOS4zNzUgMzMuOTAxLS4wNEwyMjQgMjg0LjUwNWwxNTQuNzQ1LTE1NC4wMjFjOS4zNzktOS4zMzUgMjQuNTQ0LTkuMzE3IDMzLjkwMS4wNGwyMi42NjcgMjIuNjY3YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MUwyNDAuOTcxIDM4MS40NzZjLTkuMzczIDkuMzcyLTI0LjU2OSA5LjM3Mi0zMy45NDIgMHpcIl1cbn07XG52YXIgZmFDaGV2cm9uTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWxlZnQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwNTNcIiwgXCJNMzQuNTIgMjM5LjAzTDIyOC44NyA0NC42OWM5LjM3LTkuMzcgMjQuNTctOS4zNyAzMy45NCAwbDIyLjY3IDIyLjY3YzkuMzYgOS4zNiA5LjM3IDI0LjUyLjA0IDMzLjlMMTMxLjQ5IDI1NmwxNTQuMDIgMTU0Ljc1YzkuMzQgOS4zOCA5LjMyIDI0LjU0LS4wNCAzMy45bC0yMi42NyAyMi42N2MtOS4zNyA5LjM3LTI0LjU3IDkuMzctMzMuOTQgMEwzNC41MiAyNzIuOTdjLTkuMzctOS4zNy05LjM3LTI0LjU3IDAtMzMuOTR6XCJdXG59O1xudmFyIGZhQ2hldnJvblJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXZyb24tcmlnaHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwNTRcIiwgXCJNMjg1LjQ3NiAyNzIuOTcxTDkxLjEzMiA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBsLTIyLjY2Ny0yMi42NjdjLTkuMzU3LTkuMzU3LTkuMzc1LTI0LjUyMi0uMDQtMzMuOTAxTDE4OC41MDUgMjU2IDM0LjQ4NCAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI4NS40NzUgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OC4wMDEgMzMuOTQxelwiXVxufTtcbnZhciBmYUNoZXZyb25VcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDc3XCIsIFwiTTI0MC45NzEgMTMwLjUyNGwxOTQuMzQzIDE5NC4zNDNjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxbC0yMi42NjcgMjIuNjY3Yy05LjM1NyA5LjM1Ny0yNC41MjIgOS4zNzUtMzMuOTAxLjA0TDIyNCAyMjcuNDk1IDY5LjI1NSAzODEuNTE2Yy05LjM3OSA5LjMzNS0yNC41NDQgOS4zMTctMzMuOTAxLS4wNGwtMjIuNjY3LTIyLjY2N2MtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDIwNy4wMyAxMzAuNTI1YzkuMzcyLTkuMzczIDI0LjU2OC05LjM3MyAzMy45NDEtLjAwMXpcIl1cbn07XG52YXIgZmFDaGlsZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGlsZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFhZVwiLCBcIk0xMjAgNzJjMC0zOS43NjUgMzIuMjM1LTcyIDcyLTcyczcyIDMyLjIzNSA3MiA3MmMwIDM5Ljc2NC0zMi4yMzUgNzItNzIgNzJzLTcyLTMyLjIzNi03Mi03MnptMjU0LjYyNyAxLjM3M2MtMTIuNDk2LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NCAwTDI0Mi43NDUgMTYwSDE0MS4yNTRMNTQuNjI3IDczLjM3M2MtMTIuNDk2LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NCAwLTEyLjQ5NyAxMi40OTctMTIuNDk3IDMyLjc1OCAwIDQ1LjI1NUwxMDQgMjEzLjI1NFY0ODBjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDE2YzE3LjY3MyAwIDMyLTE0LjMyNyAzMi0zMlYzNjhoMTZ2MTEyYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmgxNmMxNy42NzMgMCAzMi0xNC4zMjcgMzItMzJWMjEzLjI1NGw5NC42MjctOTQuNjI3YzEyLjQ5Ny0xMi40OTcgMTIuNDk3LTMyLjc1NyAwLTQ1LjI1NHpcIl1cbn07XG52YXIgZmFDaHVyY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2h1cmNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTFkXCIsIFwiTTQ2NC40NiAyNDYuNjhMMzUyIDE3OS4yVjEyOGg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djUxLjJsLTExMi40NiA2Ny40OEEzMS45OTcgMzEuOTk3IDAgMCAwIDE2MCAyNzQuMTJWNTEyaDk2di05NmMwLTM1LjM1IDI4LjY1LTY0IDY0LTY0czY0IDI4LjY1IDY0IDY0djk2aDk2VjI3NC4xMmMwLTExLjI0LTUuOS0yMS42Ni0xNS41NC0yNy40NHpNMCAzOTUuOTZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDExMlYzMjBMMTkuMzkgMzY2LjU0QTMyLjAyNCAzMi4wMjQgMCAwIDAgMCAzOTUuOTZ6bTYyMC42MS0yOS40Mkw1MTIgMzIwdjE5MmgxMTJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzk1Ljk2YzAtMTIuOC03LjYzLTI0LjM3LTE5LjM5LTI5LjQyelwiXVxufTtcbnZhciBmYUNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMTFcIiwgXCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHpcIl1cbn07XG52YXIgZmFDaXJjbGVOb3RjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtbm90Y2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxY2VcIiwgXCJNMjg4IDM5LjA1NnYxNi42NTljMCAxMC44MDQgNy4yODEgMjAuMTU5IDE3LjY4NiAyMy4wNjZDMzgzLjIwNCAxMDAuNDM0IDQ0MCAxNzEuNTE4IDQ0MCAyNTZjMCAxMDEuNjg5LTgyLjI5NSAxODQtMTg0IDE4NC0xMDEuNjg5IDAtMTg0LTgyLjI5NS0xODQtMTg0IDAtODQuNDcgNTYuNzg2LTE1NS41NjQgMTM0LjMxMi0xNzcuMjE5QzIxNi43MTkgNzUuODc0IDIyNCA2Ni41MTcgMjI0IDU1LjcxMlYzOS4wNjRjMC0xNS43MDktMTQuODM0LTI3LjE1My0zMC4wNDYtMjMuMjM0Qzg2LjYwMyA0My40ODIgNy4zOTQgMTQxLjIwNiA4LjAwMyAyNTcuMzMyYy43MiAxMzcuMDUyIDExMS40NzcgMjQ2Ljk1NiAyNDguNTMxIDI0Ni42NjdDMzkzLjI1NSA1MDMuNzExIDUwNCAzOTIuNzg4IDUwNCAyNTZjMC0xMTUuNjMzLTc5LjE0LTIxMi43NzktMTg2LjIxMS0yNDAuMjM2QzMwMi42NzggMTEuODg5IDI4OCAyMy40NTYgMjg4IDM5LjA1NnpcIl1cbn07XG52YXIgZmFDaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpdHknLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2NGZcIiwgXCJNNjE2IDE5Mkg0ODBWMjRjMC0xMy4yNi0xMC43NC0yNC0yNC0yNEgzMTJjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2NzJoLTY0VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBoLTY0VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY4MEgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYzNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyMTZjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpNMTI4IDQwNGMwIDYuNjMtNS4zNyAxMi0xMiAxMkg3NmMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEySDc2Yy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJINzZjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMTI4IDE5MmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMTYwIDk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJWNzZjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTE2MCAyODhjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6XCJdXG59O1xudmFyIGZhQ2xpbmljTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbGluaWMtbWVkaWNhbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjdmMlwiLCBcIk0yODggMTE1TDY5LjQ3IDMwNy43MWMtMS42MiAxLjQ2LTMuNjkgMi4xNC01LjQ3IDMuMzVWNDk2YTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlYzMTEuMWMtMS43LTEuMTYtMy43Mi0xLjgyLTUuMjYtMy4yem05NiAyNjFhOCA4IDAgMCAxLTggOGgtNTZ2NTZhOCA4IDAgMCAxLTggOGgtNDhhOCA4IDAgMCAxLTgtOHYtNTZoLTU2YTggOCAwIDAgMS04LTh2LTQ4YTggOCAwIDAgMSA4LThoNTZ2LTU2YTggOCAwIDAgMSA4LThoNDhhOCA4IDAgMCAxIDggOHY1Nmg1NmE4IDggMCAwIDEgOCA4em0xODYuNjktMTM5LjcybC0yNTUuOTQtMjI2YTM5Ljg1IDM5Ljg1IDAgMCAwLTUzLjQ1IDBsLTI1NiAyMjZhMTYgMTYgMCAwIDAtMS4yMSAyMi42TDI1LjUgMjgyLjdhMTYgMTYgMCAwIDAgMjIuNiAxLjIxTDI3Ny40MiA4MS42M2ExNiAxNiAwIDAgMSAyMS4xNyAwTDUyNy45MSAyODMuOWExNiAxNiAwIDAgMCAyMi42LTEuMjFsMjEuNC0yMy44MmExNiAxNiAwIDAgMC0xLjIyLTIyLjU5elwiXVxufTtcbnZhciBmYUNsaXBib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbGlwYm9hcmQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYzMjhcIiwgXCJNMzg0IDExMnYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg4MGMwLTM1LjI5IDI4LjcxLTY0IDY0LTY0czY0IDI4LjcxIDY0IDY0aDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh6TTE5MiA0MGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0bTk2IDExNHYtMjBhNiA2IDAgMCAwLTYtNkgxMDJhNiA2IDAgMCAwLTYgNnYyMGE2IDYgMCAwIDAgNiA2aDE4MGE2IDYgMCAwIDAgNi02elwiXVxufTtcbnZhciBmYUNsaXBib2FyZENoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NsaXBib2FyZC1jaGVjaycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjQ2Y1wiLCBcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0xMjEuMiAyMzEuOGwtMTQzIDE0MS44Yy00LjcgNC43LTEyLjMgNC42LTE3LS4xbC04Mi42LTgzLjNjLTQuNy00LjctNC42LTEyLjMuMS0xN0w5OS4xIDI4NWM0LjctNC43IDEyLjMtNC42IDE3IC4xbDQ2IDQ2LjQgMTA2LTEwNS4yYzQuNy00LjcgMTIuMy00LjYgMTcgLjFsMjguMiAyOC40YzQuNyA0LjggNC42IDEyLjMtLjEgMTd6XCJdXG59O1xudmFyIGZhQ2xpcGJvYXJkTGlzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbGlwYm9hcmQtbGlzdCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjQ2ZFwiLCBcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05NiA0MjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0em0wLTk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjQtMTAuNyAyNC0yNCAyNHptMC05NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6bTk2LTE5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyOCAzNjhjMCA0LjQtMy42IDgtOCA4SDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJdXG59O1xudmFyIGZhQ2xvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMTdcIiwgXCJNMjU2LDhDMTE5LDgsOCwxMTksOCwyNTZTMTE5LDUwNCwyNTYsNTA0LDUwNCwzOTMsNTA0LDI1NiwzOTMsOCwyNTYsOFptOTIuNDksMzEzaDBsLTIwLDI1YTE2LDE2LDAsMCwxLTIyLjQ5LDIuNWgwbC02Ny00OS43MmE0MCw0MCwwLDAsMS0xNS0zMS4yM1YxMTJhMTYsMTYsMCwwLDEsMTYtMTZoMzJhMTYsMTYsMCwwLDEsMTYsMTZWMjU2bDU4LDQyLjVBMTYsMTYsMCwwLDEsMzQ4LjQ5LDMyMVpcIl1cbn07XG52YXIgZmFDbG9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG9uZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI0ZFwiLCBcIk00NjQgMGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDE3NmMtMjYuNTEgMC00OC0yMS40OS00OC00OFY0OGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDI4OE0xNzYgNDE2Yy00NC4xMTIgMC04MC0zNS44ODgtODAtODBWMTI4SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDI4OGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di00OEgxNzZ6XCJdXG59O1xudmFyIGZhQ2xvc2VkQ2FwdGlvbmluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG9zZWQtY2FwdGlvbmluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjIwYVwiLCBcIk00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxOC4xIDI4Ny43YzIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS41IDI3LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjgtMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdsLTE3LjUgMzAuNWMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMi4xIDQ4IDUxLjEgNzAuNSA5Mi4zIDMyLjZ6bTE5MC40IDBjMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjUgMjcuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjUgNTYuOS0xNzIuNyAzMi4xLTE3Mi43LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN0w0MjAgMjIyLjJjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIgMCA0OCA1MSA3MC41IDkyLjIgMzIuNnpcIl1cbn07XG52YXIgZmFDbG91ZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjBjMlwiLCBcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6XCJdXG59O1xudmFyIGZhQ2xvdWREb3dubG9hZEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1kb3dubG9hZC1hbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzODFcIiwgXCJNNTM3LjYgMjI2LjZjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjYgMC01My00My05Ni05Ni05Ni0xOS43IDAtMzguMSA2LTUzLjMgMTYuMkMzNjcgNjQuMiAzMTUuMyAzMiAyNTYgMzJjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwIDAgMi43LjEgNS40LjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGgzNjhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjggMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40em0tMTMyLjkgODguN0wyOTkuMyA0MjAuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBMMTcxLjMgMzE1LjNjLTEwLjEtMTAuMS0yLjktMjcuMyAxMS4zLTI3LjNIMjQ4VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djExMmg2NS40YzE0LjIgMCAyMS40IDE3LjIgMTEuMyAyNy4zelwiXVxufTtcbnZhciBmYUNsb3VkTWVhdGJhbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtbWVhdGJhbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3M2JcIiwgXCJNNDggMzUyYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4IDQ4LTIxLjUgNDgtNDgtMjEuNS00OC00OC00OHptNDE2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em0tMTE5IDExLjFjNC42LTE0LjUgMS42LTMwLjgtOS44LTQyLjMtMTEuNS0xMS41LTI3LjgtMTQuNC00Mi4zLTkuOS03LTEzLjUtMjAuNy0yMy0zNi45LTIzcy0yOS45IDkuNS0zNi45IDIzYy0xNC41LTQuNi0zMC44LTEuNi00Mi4zIDkuOS0xMS41IDExLjUtMTQuNCAyNy44LTkuOSA0Mi4zLTEzLjUgNy0yMyAyMC43LTIzIDM2LjlzOS41IDI5LjkgMjMgMzYuOWMtNC42IDE0LjUtMS42IDMwLjggOS45IDQyLjMgOC4yIDguMiAxOC45IDEyLjMgMjkuNyAxMi4zIDQuMyAwIDguNS0xLjEgMTIuNi0yLjUgNyAxMy41IDIwLjcgMjMgMzYuOSAyM3MyOS45LTkuNSAzNi45LTIzYzQuMSAxLjMgOC4zIDIuNSAxMi42IDIuNSAxMC44IDAgMjEuNS00LjEgMjkuNy0xMi4zIDExLjUtMTEuNSAxNC40LTI3LjggOS44LTQyLjMgMTMuNS03IDIzLTIwLjcgMjMtMzYuOXMtOS41LTI5LjktMjMtMzYuOXpNNTEyIDIyNGMwLTUzLTQzLTk2LTk2LTk2LS42IDAtMS4xLjItMS42LjIgMS4xLTUuMiAxLjYtMTAuNiAxLjYtMTYuMiAwLTQ0LjItMzUuOC04MC04MC04MC0yNC42IDAtNDYuMyAxMS4zLTYxIDI4LjhDMjU2LjQgMjQuOCAyMTkuMyAwIDE3NiAwIDExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjMuOCAxNC4zIDIuMSAyMS4yQzI3LjggMTQ1LjggMCAxODEuNSAwIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQzLjRjMy42LTggOC40LTE1LjQgMTQuOC0yMS44IDEzLjUtMTMuNSAzMS41LTIxLjEgNTAuOC0yMS4zIDEzLjUtMTMuMiAzMS43LTIwLjkgNTEtMjAuOXMzNy41IDcuNyA1MSAyMC45YzE5LjMuMiAzNy4zIDcuOCA1MC44IDIxLjMgNi40IDYuNCAxMS4zIDEzLjggMTQuOCAyMS44SDQxNmM1MyAwIDk2LTQzIDk2LTk2elwiXVxufTtcbnZhciBmYUNsb3VkTW9vbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1tb29uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNmMzXCIsIFwiTTM0Mi44IDM1Mi43YzUuNy05LjYgOS4yLTIwLjcgOS4yLTMyLjcgMC0zNS4zLTI4LjctNjQtNjQtNjQtMTcuMiAwLTMyLjggNi45LTQ0LjMgMTcuOS0xNi4zLTI5LjYtNDcuNS00OS45LTgzLjctNDkuOS01MyAwLTk2IDQzLTk2IDk2IDAgMiAuNSAzLjguNiA1LjdDMjcuMSAzMzguOCAwIDM3NC4xIDAgNDE2YzAgNTMgNDMgOTYgOTYgOTZoMjQwYzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtNDEuOS0zMi4zLTc1LjgtNzMuMi03OS4zem0yMjIuNS01NC4zYy05My4xIDE3LjctMTc4LjUtNTMuNy0xNzguNS0xNDcuNyAwLTU0LjIgMjktMTA0IDc2LjEtMTMwLjggNy4zLTQuMSA1LjQtMTUuMS0yLjgtMTYuN0M0NDguNCAxLjEgNDM2LjcgMCA0MjUgMCAzMTkuMSAwIDIzMy4xIDg1LjkgMjMzLjEgMTkyYzAgOC41LjcgMTYuOCAxLjggMjUgNS45IDQuMyAxMS42IDguOSAxNi43IDE0LjIgMTEuNC00LjcgMjMuNy03LjIgMzYuNC03LjIgNTIuOSAwIDk2IDQzLjEgOTYgOTYgMCAzLjYtLjIgNy4yLS42IDEwLjcgMjMuNiAxMC44IDQyLjQgMjkuNSA1My41IDUyLjYgNTQuNC0zLjQgMTAzLjctMjkuMyAxMzcuMS03MC40IDUuMy02LjUtLjUtMTYuMS04LjctMTQuNXpcIl1cbn07XG52YXIgZmFDbG91ZE1vb25SYWluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLW1vb24tcmFpbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjczY1wiLCBcIk0zNTAuNSAyMjUuNWMtNi45LTM3LjItMzkuMy02NS41LTc4LjUtNjUuNS0xMi4zIDAtMjMuOSAzLTM0LjMgOC0xNy40LTI0LjEtNDUuNi00MC03Ny43LTQwLTUzIDAtOTYgNDMtOTYgOTYgMCAuNS4yIDEuMS4yIDEuNkMyNy42IDIzMi45IDAgMjY1LjIgMCAzMDRjMCA0NC4yIDM1LjggODAgODAgODBoMjU2YzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtMzkuMi0yOC4yLTcxLjctNjUuNS03OC41em0yMTcuNC0xLjdjLTcwLjQgMTMuMy0xMzUtNDAuMy0xMzUtMTEwLjggMC00MC42IDIxLjktNzggNTcuNS05OC4xIDUuNS0zLjEgNC4xLTExLjQtMi4xLTEyLjVDNDc5LjYuOCA0NzAuNyAwIDQ2MS44IDBjLTc3LjkgMC0xNDEuMSA2MS4yLTE0NC40IDEzNy45IDI2LjcgMTEuOSA0OC4yIDMzLjggNTguOSA2MS43IDM3LjEgMTQuMyA2NCA0Ny40IDcwLjIgODYuOCA1LjEuNSAxMCAxLjUgMTUuMiAxLjUgNDQuNyAwIDg1LjYtMjAuMiAxMTIuNi01My4zIDQuMi00LjgtLjItMTItNi40LTEwLjh6TTM2NC41IDQxOC4xYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHpcIl1cbn07XG52YXIgZmFDbG91ZFJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtcmFpbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjczZFwiLCBcIk00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMSAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6TTg4IDM3NC4yYy0xMi44IDQ0LjQtNDAgNTYuNC00MCA4Ny43IDAgMjcuNyAyMS41IDUwLjEgNDggNTAuMXM0OC0yMi40IDQ4LTUwLjFjMC0zMS40LTI3LjItNDMuMS00MC04Ny43LTIuMi04LjEtMTMuNS04LjUtMTYgMHptMTYwIDBjLTEyLjggNDQuNC00MCA1Ni40LTQwIDg3LjcgMCAyNy43IDIxLjUgNTAuMSA0OCA1MC4xczQ4LTIyLjQgNDgtNTAuMWMwLTMxLjQtMjcuMi00My4xLTQwLTg3LjctMi4yLTguMS0xMy41LTguNS0xNiAwem0xNjAgMGMtMTIuOCA0NC40LTQwIDU2LjQtNDAgODcuNyAwIDI3LjcgMjEuNSA1MC4xIDQ4IDUwLjFzNDgtMjIuNCA0OC01MC4xYzAtMzEuNC0yNy4yLTQzLjEtNDAtODcuNy0yLjItOC4xLTEzLjUtOC41LTE2IDB6XCJdXG59O1xudmFyIGZhQ2xvdWRTaG93ZXJzSGVhdnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc2hvd2Vycy1oZWF2eScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc0MFwiLCBcIk0xODMuOSAzNzAuMWMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em05NiAwYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6bS0xOTIgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0zODQgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44ek00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMiAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6XCJdXG59O1xudmFyIGZhQ2xvdWRTdW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc3VuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmM0XCIsIFwiTTU3NS4yIDMyNS43Yy4yLTEuOS44LTMuNy44LTUuNiAwLTM1LjMtMjguNy02NC02NC02NC0xMi42IDAtMjQuMiAzLjgtMzQuMSAxMC0xNy42LTM4LjgtNTYuNS02Ni0xMDEuOS02Ni02MS44IDAtMTEyIDUwLjEtMTEyIDExMiAwIDMgLjcgNS44LjkgOC43LTQ5LjYgMy43LTg4LjkgNDQuNy04OC45IDk1LjMgMCA1MyA0MyA5NiA5NiA5NmgyNzJjNTMgMCA5Ni00MyA5Ni05NiAwLTQyLjEtMjcuMi03Ny40LTY0LjgtOTAuNHptLTQzMC40LTIyLjZjLTQzLjctNDMuNy00My43LTExNC43IDAtMTU4LjMgNDMuNy00My43IDExNC43LTQzLjcgMTU4LjQgMCA5LjcgOS43IDE2LjkgMjAuOSAyMi4zIDMyLjcgOS44LTMuNyAyMC4xLTYgMzAuNy03LjVMMzg2IDgxLjFjNC0xMS45LTcuMy0yMy4xLTE5LjItMTkuMkwyNzkgOTEuMiAyMzcuNSA4LjRDMjMyLTIuOCAyMTYtMi44IDIxMC40IDguNEwxNjkgOTEuMiA4MS4xIDYxLjlDNjkuMyA1OCA1OCA2OS4zIDYxLjkgODEuMWwyOS4zIDg3LjgtODIuOCA0MS41Yy0xMS4yIDUuNi0xMS4yIDIxLjUgMCAyNy4xbDgyLjggNDEuNC0yOS4zIDg3LjhjLTQgMTEuOSA3LjMgMjMuMSAxOS4yIDE5LjJsNzYuMS0yNS4zYzYuMS0xMi40IDE0LTIzLjcgMjMuNi0zMy41LTEzLjEtNS40LTI1LjQtMTMuNC0zNi0yNHptLTQuOC03OS4yYzAgNDAuOCAyOS4zIDc0LjggNjcuOSA4Mi4zIDgtNC43IDE2LjMtOC44IDI1LjItMTEuNyA1LjQtNDQuMyAzMS04Mi41IDY3LjQtMTA1QzI4Ny4zIDE2MC40IDI1OCAxNDAgMjI0IDE0MGMtNDYuMyAwLTg0IDM3LjYtODQgODMuOXpcIl1cbn07XG52YXIgZmFDbG91ZFN1blJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc3VuLXJhaW4nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY3NDNcIiwgXCJNNTEwLjUgMjI1LjVjLTYuOS0zNy4yLTM5LjMtNjUuNS03OC41LTY1LjUtMTIuMyAwLTIzLjkgMy0zNC4zIDgtMTcuNC0yNC4xLTQ1LjYtNDAtNzcuNy00MC01MyAwLTk2IDQzLTk2IDk2IDAgLjUuMiAxLjEuMiAxLjZDMTg3LjYgMjMzIDE2MCAyNjUuMiAxNjAgMzA0YzAgNDQuMiAzNS44IDgwIDgwIDgwaDI1NmM0NC4yIDAgODAtMzUuOCA4MC04MCAwLTM5LjItMjguMi03MS43LTY1LjUtNzguNXptLTM4Ni40IDM0LjRjLTM3LjQtMzcuNC0zNy40LTk4LjMgMC0xMzUuOCAzNC42LTM0LjYgODkuMS0zNi44IDEyNi43LTcuNCAyMC0xMi45IDQzLjYtMjAuNyA2OS4yLTIwLjcuNyAwIDEuMy4yIDIgLjJsOC45LTI2LjdjMy40LTEwLjItNi4zLTE5LjgtMTYuNS0xNi40bC03NS4zIDI1LjEtMzUuNS03MWMtNC44LTkuNi0xOC41LTkuNi0yMy4zIDBsLTM1LjUgNzEtNzUuMy0yNS4xYy0xMC4yLTMuNC0xOS44IDYuMy0xNi40IDE2LjVsMjUuMSA3NS4zLTcxIDM1LjVjLTkuNiA0LjgtOS42IDE4LjUgMCAyMy4zbDcxIDM1LjUtMjUuMSA3NS4zYy0zLjQgMTAuMiA2LjMgMTkuOCAxNi41IDE2LjVsNTkuMi0xOS43Yy0uMi0yLjQtLjctNC43LS43LTcuMiAwLTEyLjUgMi4zLTI0LjUgNi4yLTM1LjktMy42LTIuNy03LjEtNS4yLTEwLjItOC4zem02OS44LTU4YzQuMy0yNC41IDE1LjgtNDYuNCAzMS45LTY0LTkuOC02LjItMjEuNC05LjktMzMuOC05LjktMzUuMyAwLTY0IDI4LjctNjQgNjQgMCAxOC43IDguMiAzNS40IDIxLjEgNDcuMSAxMS4zLTE1LjkgMjYuNi0yOC45IDQ0LjgtMzcuMnptMzMwLjYgMjE2LjJjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44elwiXVxufTtcbnZhciBmYUNsb3VkVXBsb2FkQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLXVwbG9hZC1hbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzODJcIiwgXCJNNTM3LjYgMjI2LjZjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjYgMC01My00My05Ni05Ni05Ni0xOS43IDAtMzguMSA2LTUzLjMgMTYuMkMzNjcgNjQuMiAzMTUuMyAzMiAyNTYgMzJjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwIDAgMi43LjEgNS40LjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGgzNjhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjggMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40ek0zOTMuNCAyODhIMzI4djExMmMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMjg4aC02NS40Yy0xNC4zIDAtMjEuNC0xNy4yLTExLjMtMjcuM2wxMDUuNC0xMDUuNGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGwxMDUuNCAxMDUuNGMxMC4xIDEwLjEgMi45IDI3LjMtMTEuMyAyNy4zelwiXVxufTtcbnZhciBmYUNvY2t0YWlsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvY2t0YWlsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTYxXCIsIFwiTTI5NiA0NjRoLTU2VjMzOC43OGwxNjguNzQtMTY4LjczYzE1LjUyLTE1LjUyIDQuNTMtNDIuMDUtMTcuNDItNDIuMDVIMjQuNjhjLTIxLjk1IDAtMzIuOTQgMjYuNTMtMTcuNDIgNDIuMDVMMTc2IDMzOC43OFY0NjRoLTU2Yy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDI0MGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwek00MzIgMGMtNjIuNjEgMC0xMTUuMzUgNDAuMi0xMzUuMTggOTZoNTIuNTRjMTYuNjUtMjguNTUgNDcuMjctNDggODIuNjQtNDggNTIuOTMgMCA5NiA0My4wNiA5NiA5NnMtNDMuMDcgOTYtOTYgOTZjLTE0LjA0IDAtMjcuMjktMy4yLTM5LjMyLTguNjRsLTM1LjI2IDM1LjI2QzM3OS4yMyAyNzkuOTIgNDA0LjU5IDI4OCA0MzIgMjg4Yzc5LjUzIDAgMTQ0LTY0LjQ3IDE0NC0xNDRTNTExLjUzIDAgNDMyIDB6XCJdXG59O1xudmFyIGZhQ29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMTIxXCIsIFwiTTI3OC45IDUxMS41bC02MS0xNy43Yy02LjQtMS44LTEwLTguNS04LjItMTQuOUwzNDYuMiA4LjdjMS44LTYuNCA4LjUtMTAgMTQuOS04LjJsNjEgMTcuN2M2LjQgMS44IDEwIDguNSA4LjIgMTQuOUwyOTMuOCA1MDMuM2MtMS45IDYuNC04LjUgMTAuMS0xNC45IDguMnptLTExNC0xMTIuMmw0My41LTQ2LjRjNC42LTQuOSA0LjMtMTIuNy0uOC0xNy4yTDExNyAyNTZsOTAuNi03OS43YzUuMS00LjUgNS41LTEyLjMuOC0xNy4ybC00My41LTQ2LjRjLTQuNS00LjgtMTIuMS01LjEtMTctLjVMMy44IDI0Ny4yYy01LjEgNC43LTUuMSAxMi44IDAgMTcuNWwxNDQuMSAxMzUuMWM0LjkgNC42IDEyLjUgNC40IDE3LS41em0zMjcuMi42bDE0NC4xLTEzNS4xYzUuMS00LjcgNS4xLTEyLjggMC0xNy41TDQ5Mi4xIDExMi4xYy00LjgtNC41LTEyLjQtNC4zLTE3IC41TDQzMS42IDE1OWMtNC42IDQuOS00LjMgMTIuNy44IDE3LjJMNTIzIDI1NmwtOTAuNiA3OS43Yy01LjEgNC41LTUuNSAxMi4zLS44IDE3LjJsNDMuNSA0Ni40YzQuNSA0LjkgMTIuMSA1LjEgMTcgLjZ6XCJdXG59O1xudmFyIGZhQ29kZUJyYW5jaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlLWJyYW5jaCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjEyNlwiLCBcIk0zODQgMTQ0YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgMzYuNCAyNC4zIDY3LjEgNTcuNSA3Ni44LS42IDE2LjEtNC4yIDI4LjUtMTEgMzYuOS0xNS40IDE5LjItNDkuMyAyMi40LTg1LjIgMjUuNy0yOC4yIDIuNi01Ny40IDUuNC04MS4zIDE2Ljl2LTE0NGMzMi41LTEwLjIgNTYtNDAuNSA1Ni03Ni4zIDAtNDQuMi0zNS44LTgwLTgwLTgwUzAgMzUuOCAwIDgwYzAgMzUuOCAyMy41IDY2LjEgNTYgNzYuM3YxOTkuM0MyMy41IDM2NS45IDAgMzk2LjIgMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTM0LTIxLjItNjMuMS01MS4yLTc0LjYgMy4xLTUuMiA3LjgtOS44IDE0LjktMTMuNCAxNi4yLTguMiA0MC40LTEwLjQgNjYuMS0xMi44IDQyLjItMy45IDkwLTguNCAxMTguMi00My40IDE0LTE3LjQgMjEuMS0zOS44IDIxLjYtNjcuOSAzMS42LTEwLjggNTQuNC00MC43IDU0LjQtNzUuOXpNODAgNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTYtMTYtNy4yLTE2LTE2IDcuMi0xNiAxNi0xNnptMCAzODRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMjI0LTMyMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTYgNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYUNvZmZlZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2ZmZWUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYwZjRcIiwgXCJNMTkyIDM4NGgxOTJjNTMgMCA5Ni00MyA5Ni05NmgzMmM3MC42IDAgMTI4LTU3LjQgMTI4LTEyOFM1ODIuNiAzMiA1MTIgMzJIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyMzJjMCA1MyA0MyA5NiA5NiA5NnpNNTEyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0aC0zMlY5NmgzMnptNDcuNyAzODRINDguM2MtNDcuNiAwLTYxLTY0LTM2LTY0aDU4My4zYzI1IDAgMTEuOCA2NC0zNS45IDY0elwiXVxufTtcbnZhciBmYUNvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMTNcIiwgXCJNNDg3LjQgMzE1LjdsLTQyLjYtMjQuNmM0LjMtMjMuMiA0LjMtNDcgMC03MC4ybDQyLjYtMjQuNmM0LjktMi44IDcuMS04LjYgNS41LTE0LTExLjEtMzUuNi0zMC02Ny44LTU0LjctOTQuNi0zLjgtNC4xLTEwLTUuMS0xNC44LTIuM0wzODAuOCAxMTBjLTE3LjktMTUuNC0zOC41LTI3LjMtNjAuOC0zNS4xVjI1LjhjMC01LjYtMy45LTEwLjUtOS40LTExLjctMzYuNy04LjItNzQuMy03LjgtMTA5LjIgMC01LjUgMS4yLTkuNCA2LjEtOS40IDExLjdWNzVjLTIyLjIgNy45LTQyLjggMTkuOC02MC44IDM1LjFMODguNyA4NS41Yy00LjktMi44LTExLTEuOS0xNC44IDIuMy0yNC43IDI2LjctNDMuNiA1OC45LTU0LjcgOTQuNi0xLjcgNS40LjYgMTEuMiA1LjUgMTRMNjcuMyAyMjFjLTQuMyAyMy4yLTQuMyA0NyAwIDcwLjJsLTQyLjYgMjQuNmMtNC45IDIuOC03LjEgOC42LTUuNSAxNCAxMS4xIDM1LjYgMzAgNjcuOCA1NC43IDk0LjYgMy44IDQuMSAxMCA1LjEgMTQuOCAyLjNsNDIuNi0yNC42YzE3LjkgMTUuNCAzOC41IDI3LjMgNjAuOCAzNS4xdjQ5LjJjMCA1LjYgMy45IDEwLjUgOS40IDExLjcgMzYuNyA4LjIgNzQuMyA3LjggMTA5LjIgMCA1LjUtMS4yIDkuNC02LjEgOS40LTExLjd2LTQ5LjJjMjIuMi03LjkgNDIuOC0xOS44IDYwLjgtMzUuMWw0Mi42IDI0LjZjNC45IDIuOCAxMSAxLjkgMTQuOC0yLjMgMjQuNy0yNi43IDQzLjYtNTguOSA1NC43LTk0LjYgMS41LTUuNS0uNy0xMS4zLTUuNi0xNC4xek0yNTYgMzM2Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFDb2dzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvZ3MnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYwODVcIiwgXCJNNTEyLjEgMTkxbC04LjIgMTQuM2MtMyA1LjMtOS40IDcuNS0xNS4xIDUuNC0xMS44LTQuNC0yMi42LTEwLjctMzIuMS0xOC42LTQuNi0zLjgtNS44LTEwLjUtMi44LTE1LjdsOC4yLTE0LjNjLTYuOS04LTEyLjMtMTcuMy0xNS45LTI3LjRoLTE2LjVjLTYgMC0xMS4yLTQuMy0xMi4yLTEwLjMtMi0xMi0yLjEtMjQuNiAwLTM3LjEgMS02IDYuMi0xMC40IDEyLjItMTAuNGgxNi41YzMuNi0xMC4xIDktMTkuNCAxNS45LTI3LjRsLTguMi0xNC4zYy0zLTUuMi0xLjktMTEuOSAyLjgtMTUuNyA5LjUtNy45IDIwLjQtMTQuMiAzMi4xLTE4LjYgNS43LTIuMSAxMi4xLjEgMTUuMSA1LjRsOC4yIDE0LjNjMTAuNS0xLjkgMjEuMi0xLjkgMzEuNyAwTDU1MiA2LjNjMy01LjMgOS40LTcuNSAxNS4xLTUuNCAxMS44IDQuNCAyMi42IDEwLjcgMzIuMSAxOC42IDQuNiAzLjggNS44IDEwLjUgMi44IDE1LjdsLTguMiAxNC4zYzYuOSA4IDEyLjMgMTcuMyAxNS45IDI3LjRoMTYuNWM2IDAgMTEuMiA0LjMgMTIuMiAxMC4zIDIgMTIgMi4xIDI0LjYgMCAzNy4xLTEgNi02LjIgMTAuNC0xMi4yIDEwLjRoLTE2LjVjLTMuNiAxMC4xLTkgMTkuNC0xNS45IDI3LjRsOC4yIDE0LjNjMyA1LjIgMS45IDExLjktMi44IDE1LjctOS41IDcuOS0yMC40IDE0LjItMzIuMSAxOC42LTUuNyAyLjEtMTIuMS0uMS0xNS4xLTUuNGwtOC4yLTE0LjNjLTEwLjQgMS45LTIxLjIgMS45LTMxLjcgMHptLTEwLjUtNTguOGMzOC41IDI5LjYgODIuNC0xNC4zIDUyLjgtNTIuOC0zOC41LTI5LjctODIuNCAxNC4zLTUyLjggNTIuOHpNMzg2LjMgMjg2LjFsMzMuNyAxNi44YzEwLjEgNS44IDE0LjUgMTguMSAxMC41IDI5LjEtOC45IDI0LjItMjYuNCA0Ni40LTQyLjYgNjUuOC03LjQgOC45LTIwLjIgMTEuMS0zMC4zIDUuM2wtMjkuMS0xNi44Yy0xNiAxMy43LTM0LjYgMjQuNi01NC45IDMxLjd2MzMuNmMwIDExLjYtOC4zIDIxLjYtMTkuNyAyMy42LTI0LjYgNC4yLTUwLjQgNC40LTc1LjkgMC0xMS41LTItMjAtMTEuOS0yMC0yMy42VjQxOGMtMjAuMy03LjItMzguOS0xOC01NC45LTMxLjdMNzQgNDAzYy0xMCA1LjgtMjIuOSAzLjYtMzAuMy01LjMtMTYuMi0xOS40LTMzLjMtNDEuNi00Mi4yLTY1LjctNC0xMC45LjQtMjMuMiAxMC41LTI5LjFsMzMuMy0xNi44Yy0zLjktMjAuOS0zLjktNDIuNCAwLTYzLjRMMTIgMjA1LjhjLTEwLjEtNS44LTE0LjYtMTguMS0xMC41LTI5IDguOS0yNC4yIDI2LTQ2LjQgNDIuMi02NS44IDcuNC04LjkgMjAuMi0xMS4xIDMwLjMtNS4zbDI5LjEgMTYuOGMxNi0xMy43IDM0LjYtMjQuNiA1NC45LTMxLjdWNTcuMWMwLTExLjUgOC4yLTIxLjUgMTkuNi0yMy41IDI0LjYtNC4yIDUwLjUtNC40IDc2LS4xIDExLjUgMiAyMCAxMS45IDIwIDIzLjZ2MzMuNmMyMC4zIDcuMiAzOC45IDE4IDU0LjkgMzEuN2wyOS4xLTE2LjhjMTAtNS44IDIyLjktMy42IDMwLjMgNS4zIDE2LjIgMTkuNCAzMy4yIDQxLjYgNDIuMSA2NS44IDQgMTAuOS4xIDIzLjItMTAgMjkuMWwtMzMuNyAxNi44YzMuOSAyMSAzLjkgNDIuNSAwIDYzLjV6bS0xMTcuNiAyMS4xYzU5LjItNzctMjguNy0xNjQuOS0xMDUuNy0xMDUuNy01OS4yIDc3IDI4LjcgMTY0LjkgMTA1LjcgMTA1Ljd6bTI0My40IDE4Mi43bC04LjIgMTQuM2MtMyA1LjMtOS40IDcuNS0xNS4xIDUuNC0xMS44LTQuNC0yMi42LTEwLjctMzIuMS0xOC42LTQuNi0zLjgtNS44LTEwLjUtMi44LTE1LjdsOC4yLTE0LjNjLTYuOS04LTEyLjMtMTcuMy0xNS45LTI3LjRoLTE2LjVjLTYgMC0xMS4yLTQuMy0xMi4yLTEwLjMtMi0xMi0yLjEtMjQuNiAwLTM3LjEgMS02IDYuMi0xMC40IDEyLjItMTAuNGgxNi41YzMuNi0xMC4xIDktMTkuNCAxNS45LTI3LjRsLTguMi0xNC4zYy0zLTUuMi0xLjktMTEuOSAyLjgtMTUuNyA5LjUtNy45IDIwLjQtMTQuMiAzMi4xLTE4LjYgNS43LTIuMSAxMi4xLjEgMTUuMSA1LjRsOC4yIDE0LjNjMTAuNS0xLjkgMjEuMi0xLjkgMzEuNyAwbDguMi0xNC4zYzMtNS4zIDkuNC03LjUgMTUuMS01LjQgMTEuOCA0LjQgMjIuNiAxMC43IDMyLjEgMTguNiA0LjYgMy44IDUuOCAxMC41IDIuOCAxNS43bC04LjIgMTQuM2M2LjkgOCAxMi4zIDE3LjMgMTUuOSAyNy40aDE2LjVjNiAwIDExLjIgNC4zIDEyLjIgMTAuMyAyIDEyIDIuMSAyNC42IDAgMzcuMS0xIDYtNi4yIDEwLjQtMTIuMiAxMC40aC0xNi41Yy0zLjYgMTAuMS05IDE5LjQtMTUuOSAyNy40bDguMiAxNC4zYzMgNS4yIDEuOSAxMS45LTIuOCAxNS43LTkuNSA3LjktMjAuNCAxNC4yLTMyLjEgMTguNi01LjcgMi4xLTEyLjEtLjEtMTUuMS01LjRsLTguMi0xNC4zYy0xMC40IDEuOS0yMS4yIDEuOS0zMS43IDB6TTUwMS42IDQzMWMzOC41IDI5LjYgODIuNC0xNC4zIDUyLjgtNTIuOC0zOC41LTI5LjYtODIuNCAxNC4zLTUyLjggNTIuOHpcIl1cbn07XG52YXIgZmFDb2lucyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2lucycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjUxZVwiLCBcIk0wIDQwNS4zVjQ0OGMwIDM1LjMgODYgNjQgMTkyIDY0czE5Mi0yOC43IDE5Mi02NHYtNDIuN0MzNDIuNyA0MzQuNCAyNjcuMiA0NDggMTkyIDQ0OFM0MS4zIDQzNC40IDAgNDA1LjN6TTMyMCAxMjhjMTA2IDAgMTkyLTI4LjcgMTkyLTY0UzQyNiAwIDMyMCAwIDEyOCAyOC43IDEyOCA2NHM4NiA2NCAxOTIgNjR6TTAgMzAwLjRWMzUyYzAgMzUuMyA4NiA2NCAxOTIgNjRzMTkyLTI4LjcgMTkyLTY0di01MS42Yy00MS4zIDM0LTExNi45IDUxLjYtMTkyIDUxLjZTNDEuMyAzMzQuNCAwIDMwMC40em00MTYgMTFjNTcuMy0xMS4xIDk2LTMxLjcgOTYtNTUuNHYtNDIuN2MtMjMuMiAxNi40LTU3LjMgMjcuNi05NiAzNC41djYzLjZ6TTE5MiAxNjBDODYgMTYwIDAgMTk1LjggMCAyNDBzODYgODAgMTkyIDgwIDE5Mi0zNS44IDE5Mi04MC04Ni04MC0xOTItODB6bTIxOS4zIDU2LjNjNjAtMTAuOCAxMDAuNy0zMiAxMDAuNy01Ni4zdi00Mi43Yy0zNS41IDI1LjEtOTYuNSAzOC42LTE2MC43IDQxLjggMjkuNSAxNC4zIDUxLjIgMzMuNSA2MCA1Ny4yelwiXVxufTtcbnZhciBmYUNvbHVtbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29sdW1ucycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBkYlwiLCBcIk00NjQgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTIyNCA0MTZINjRWMTYwaDE2MHYyNTZ6bTIyNCAwSDI4OFYxNjBoMTYwdjI1NnpcIl1cbn07XG52YXIgZmFDb21tZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbW1lbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNzVcIiwgXCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjdTNC44IDQ4MCA4IDQ4MGM2Ni4zIDAgMTE2LTMxLjggMTQwLjYtNTEuNCAzMi43IDEyLjMgNjkgMTkuNCAxMDcuNCAxOS40IDE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJ6XCJdXG59O1xudmFyIGZhQ29tbWVudEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50LWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI3YVwiLCBcIk00NDggMEg2NEMyOC43IDAgMCAyOC43IDAgNjR2Mjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djg0YzAgOS44IDExLjIgMTUuNSAxOS4xIDkuN0wzMDQgNDE2aDE0NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHpcIl1cbn07XG52YXIgZmFDb21tZW50RG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbW1lbnQtZG9sbGFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjUxXCIsIFwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NS4wMSA1Ny4wMiAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjUuOTcgMi4yIDQ2Ni41QTcuOTk1IDcuOTk1IDAgMCAwIDggNDgwYzY2LjI2IDAgMTE1Ljk5LTMxLjc1IDE0MC42LTUxLjM4QzE4MS4yOSA0NDAuOTMgMjE3LjU5IDQ0OCAyNTYgNDQ4YzE0MS4zOCAwIDI1Ni05My4xMiAyNTYtMjA4UzM5Ny4zOCAzMiAyNTYgMzJ6bTI0IDMwMi40NFYzNTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTE2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTcuNzNjLTExLjQyLTEuMzUtMjIuMjgtNS4xOS0zMS43OC0xMS40Ni02LjIyLTQuMTEtNi44Mi0xMy4xMS0xLjU1LTE4LjM4bDE3LjUyLTE3LjUyYzMuNzQtMy43NCA5LjMxLTQuMjQgMTQuMTEtMi4wMyAzLjE4IDEuNDYgNi42NiAyLjIyIDEwLjI2IDIuMjJoMzIuNzhjNC42NiAwIDguNDQtMy43OCA4LjQ0LTguNDIgMC0zLjc1LTIuNTItNy4wOC02LjEyLTguMTFsLTUwLjA3LTE0LjNjLTIyLjI1LTYuMzUtNDAuMDEtMjQuNzEtNDIuOTEtNDcuNjctNC4wNS0zMi4wNyAxOS4wMy01OS40MyA0OS4zMi02My4wNVYxMjhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTcuNzNjMTEuNDIgMS4zNSAyMi4yOCA1LjE5IDMxLjc4IDExLjQ2IDYuMjIgNC4xMSA2LjgyIDEzLjExIDEuNTUgMTguMzhsLTE3LjUyIDE3LjUyYy0zLjc0IDMuNzQtOS4zMSA0LjI0LTE0LjExIDIuMDNhMjQuNTE2IDI0LjUxNiAwIDAgMC0xMC4yNi0yLjIyaC0zMi43OGMtNC42NiAwLTguNDQgMy43OC04LjQ0IDguNDIgMCAzLjc1IDIuNTIgNy4wOCA2LjEyIDguMTFsNTAuMDcgMTQuM2MyMi4yNSA2LjM2IDQwLjAxIDI0LjcxIDQyLjkxIDQ3LjY3IDQuMDUgMzIuMDYtMTkuMDMgNTkuNDItNDkuMzIgNjMuMDR6XCJdXG59O1xudmFyIGZhQ29tbWVudERvdHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1kb3RzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNGFkXCIsIFwiTTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDkuNiAyMS40IDk1IDU3IDEzMC43QzQ0LjUgNDIxLjEgMi43IDQ2NiAyLjIgNDY2LjVjLTIuMiAyLjMtMi44IDUuNy0xLjUgOC43UzQuOCA0ODAgOCA0ODBjNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyek0xMjggMjcyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhQ29tbWVudE1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1tZWRpY2FsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2Y1XCIsIFwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NSA1NyAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjYgMi4yIDQ2Ni41QTggOCAwIDAgMCA4IDQ4MGM2Ni4yNiAwIDExNi0zMS43NSAxNDAuNi01MS4zOEEzMDQuNjYgMzA0LjY2IDAgMCAwIDI1NiA0NDhjMTQxLjM5IDAgMjU2LTkzLjEyIDI1Ni0yMDhTMzk3LjM5IDMyIDI1NiAzMnptOTYgMjMyYTggOCAwIDAgMS04IDhoLTU2djU2YTggOCAwIDAgMS04IDhoLTQ4YTggOCAwIDAgMS04LTh2LTU2aC01NmE4IDggMCAwIDEtOC04di00OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHpcIl1cbn07XG52YXIgZmFDb21tZW50U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRiM1wiLCBcIk02NCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjctMTIuNiA1MC4zLTU0LjMgOTUuMi01NC44IDk1LjgtMi4yIDIuMy0yLjggNS43LTEuNSA4LjcgMS4zIDIuOSA0LjEgNC44IDcuMyA0LjggNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAyNy40IDAgNTMuNy0zLjYgNzguNC0xMEw3Mi45IDE4Ni40Yy01LjYgMTcuMS04LjkgMzUtOC45IDUzLjZ6bTU2OS44IDIxOC4xbC0xMTQuNC04OC40QzU1NC42IDMzNC4xIDU3NiAyODkuMiA1NzYgMjQwYzAtMTE0LjktMTE0LjYtMjA4LTI1Ni0yMDgtNjUuMSAwLTEyNC4yIDIwLjEtMTY5LjQgNTIuN0w0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNGw1ODguNCA0NTQuN2M3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNC02LjggNC4xLTE2LjktMi45LTIyLjN6XCJdXG59O1xudmFyIGZhQ29tbWVudHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudHMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwODZcIiwgXCJNNDE2IDE5MmMwLTg4LjQtOTMuMS0xNjAtMjA4LTE2MFMwIDEwMy42IDAgMTkyYzAgMzQuMyAxNC4xIDY1LjkgMzggOTItMTMuNCAzMC4yLTM1LjUgNTQuMi0zNS44IDU0LjUtMi4yIDIuMy0yLjggNS43LTEuNSA4LjdTNC44IDM1MiA4IDM1MmMzNi42IDAgNjYuOS0xMi4zIDg4LjctMjUgMzIuMiAxNS43IDcwLjMgMjUgMTExLjMgMjUgMTE0LjkgMCAyMDgtNzEuNiAyMDgtMTYwem0xMjIgMjIwYzIzLjktMjYgMzgtNTcuNyAzOC05MiAwLTY2LjktNTMuNS0xMjQuMi0xMjkuMy0xNDguMS45IDYuNiAxLjMgMTMuMyAxLjMgMjAuMSAwIDEwNS45LTEwNy43IDE5Mi0yNDAgMTkyLTEwLjggMC0yMS4zLS44LTMxLjctMS45QzIwNy44IDQzOS42IDI4MS44IDQ4MCAzNjggNDgwYzQxIDAgNzkuMS05LjIgMTExLjMtMjUgMjEuOCAxMi43IDUyLjEgMjUgODguNyAyNSAzLjIgMCA2LjEtMS45IDcuMy00LjggMS4zLTIuOS43LTYuMy0xLjUtOC43LS4zLS4zLTIyLjQtMjQuMi0zNS44LTU0LjV6XCJdXG59O1xudmFyIGZhQ29tbWVudHNEb2xsYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudHMtZG9sbGFyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNjUzXCIsIFwiTTQxNiAxOTJjMC04OC4zNy05My4xMi0xNjAtMjA4LTE2MFMwIDEwMy42MyAwIDE5MmMwIDM0LjI3IDE0LjEzIDY1Ljk1IDM3Ljk3IDkxLjk4QzI0LjYxIDMxNC4yMiAyLjUyIDMzOC4xNiAyLjIgMzM4LjVBNy45OTUgNy45OTUgMCAwIDAgOCAzNTJjMzYuNTggMCA2Ni45My0xMi4yNSA4OC43My0yNC45OEMxMjguOTMgMzQyLjc2IDE2Ny4wMiAzNTIgMjA4IDM1MmMxMTQuODggMCAyMDgtNzEuNjMgMjA4LTE2MHptLTIyNCA5NnYtMTYuMjljLTExLjI5LS41OC0yMi4yNy00LjUyLTMxLjM3LTExLjM1LTMuOS0yLjkzLTQuMS04Ljc3LS41Ny0xMi4xNGwxMS43NS0xMS4yMWMyLjc3LTIuNjQgNi44OS0yLjc2IDEwLjEzLS43MyAzLjg3IDIuNDIgOC4yNiAzLjcyIDEyLjgyIDMuNzJoMjguMTFjNi41IDAgMTEuOC01LjkyIDExLjgtMTMuMTkgMC01Ljk1LTMuNjEtMTEuMTktOC43Ny0xMi43M2wtNDUtMTMuNWMtMTguNTktNS41OC0zMS41OC0yMy40Mi0zMS41OC00My4zOSAwLTI0LjUyIDE5LjA1LTQ0LjQ0IDQyLjY3LTQ1LjA3Vjk2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDdWMjg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh6bTM0Ni4wMSAxMjMuOTlDNTYxLjg3IDM4NS45NiA1NzYgMzU0LjI3IDU3NiAzMjBjMC02Ni45NC01My40OS0xMjQuMi0xMjkuMzMtMTQ4LjA3Ljg2IDYuNiAxLjMzIDEzLjI5IDEuMzMgMjAuMDcgMCAxMDUuODctMTA3LjY2IDE5Mi0yNDAgMTkyLTEwLjc4IDAtMjEuMzItLjc3LTMxLjczLTEuODhDMjA3LjggNDM5LjYzIDI4MS43NyA0ODAgMzY4IDQ4MGM0MC45OCAwIDc5LjA3LTkuMjQgMTExLjI3LTI0Ljk4QzUwMS4wNyA0NjcuNzUgNTMxLjQyIDQ4MCA1NjggNDgwYzMuMiAwIDYuMDktMS45MSA3LjM0LTQuODQgMS4yNy0yLjk0LjY2LTYuMzQtMS41NS04LjY3LS4zMS0uMzMtMjIuNDItMjQuMjQtMzUuNzgtNTQuNXpcIl1cbn07XG52YXIgZmFDb21wYWN0RGlzYyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wYWN0LWRpc2MnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1MWZcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODggMjU2SDU2YzAtMTA1LjkgODYuMS0xOTIgMTkyLTE5MnYzMmMtODguMiAwLTE2MCA3MS44LTE2MCAxNjB6bTE2MCA5NmMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05NiA5NiA0MyA5NiA5Ni00MyA5Ni05NiA5NnptMC0xMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUNvbXBhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tcGFzcycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjE0ZVwiLCBcIk0yMjUuMzggMjMzLjM3Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1IDEyLjQ5IDEyLjUgMzIuNzYgMTIuNSA0NS4yNSAwIDEyLjUtMTIuNSAxMi41LTMyLjc2IDAtNDUuMjUtMTIuNS0xMi40OS0zMi43Ni0xMi40OS00NS4yNSAwek0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0xMjYuMTQgMTQ4LjA1TDMwOC4xNyAzMDAuNGEzMS45MzggMzEuOTM4IDAgMCAxLTE1Ljc3IDE1Ljc3bC0xNDQuMzQgNjUuOTdjLTE2LjY1IDcuNjEtMzMuODEtOS41NS0yNi4yLTI2LjJsNjUuOTgtMTQ0LjM1YTMxLjkzOCAzMS45MzggMCAwIDEgMTUuNzctMTUuNzdsMTQ0LjM0LTY1Ljk3YzE2LjY1LTcuNiAzMy44IDkuNTUgMjYuMTkgMjYuMnpcIl1cbn07XG52YXIgZmFDb21wcmVzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wcmVzcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA2NlwiLCBcIk00MzYgMTkySDMxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY4NGg4NGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyem0tMjc2LTI0VjQ0YzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY4NEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgxMjRjMTMuMyAwIDI0LTEwLjcgMjQtMjR6bTAgMzAwVjM0NGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg4NHY4NGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0xOTIgMHYtODRoODRjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJIMzEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxMjRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnpcIl1cbn07XG52YXIgZmFDb21wcmVzc0FsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wcmVzcy1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY0MjJcIiwgXCJNNC42ODYgNDI3LjMxNEwxMDQgMzI4bC0zMi45MjItMzEuMDI5QzU1Ljk1OCAyODEuODUxIDY2LjY2NiAyNTYgODguMDQ4IDI1NmgxMTJDMjEzLjMwMyAyNTYgMjI0IDI2Ni43NDUgMjI0IDI4MHYxMTJjMCAyMS4zODItMjUuODAzIDMyLjA5LTQwLjkyMiAxNi45NzFMMTUyIDM3NmwtOTkuMzE0IDk5LjMxNGMtNi4yNDggNi4yNDgtMTYuMzc5IDYuMjQ4LTIyLjYyNyAwTDQuNjg2IDQ0OS45NDFjLTYuMjQ4LTYuMjQ4LTYuMjQ4LTE2LjM3OSAwLTIyLjYyN3pNNDQzLjMxNCA4NC42ODZMMzQ0IDE4NGwzMi45MjIgMzEuMDI5YzE1LjEyIDE1LjEyIDQuNDEyIDQwLjk3MS0xNi45NyA0MC45NzFoLTExMkMyMzQuNjk3IDI1NiAyMjQgMjQ1LjI1NSAyMjQgMjMyVjEyMGMwLTIxLjM4MiAyNS44MDMtMzIuMDkgNDAuOTIyLTE2Ljk3MUwyOTYgMTM2bDk5LjMxNC05OS4zMTRjNi4yNDgtNi4yNDggMTYuMzc5LTYuMjQ4IDIyLjYyNyAwbDI1LjM3MyAyNS4zNzNjNi4yNDggNi4yNDggNi4yNDggMTYuMzc5IDAgMjIuNjI3elwiXVxufTtcbnZhciBmYUNvbXByZXNzQXJyb3dzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbXByZXNzLWFycm93cy1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3OGNcIiwgXCJNMjAwIDI4OEg4OGMtMjEuNCAwLTMyLjEgMjUuOC0xNyA0MWwzMi45IDMxLTk5LjIgOTkuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsMjUuNCAyNS40YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwTDE1MiA0MDhsMzEuMSAzM2MxNS4xIDE1LjEgNDAuOSA0LjQgNDAuOS0xN1YzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTExMi02NGgxMTJjMjEuNCAwIDMyLjEtMjUuOSAxNy00MWwtMzMtMzEgOTkuMy05OS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42TDQ4MS45IDQuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMzYwIDEwNGwtMzEuMS0zM0MzMTMuOCA1NS45IDI4OCA2Ni42IDI4OCA4OHYxMTJjMCAxMy4zIDEwLjcgMjQgMjQgMjR6bTk2IDEzNmwzMy0zMS4xYzE1LjEtMTUuMSA0LjQtNDAuOS0xNy00MC45SDMxMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTEyYzAgMjEuNCAyNS45IDMyLjEgNDEgMTdsMzEtMzIuOSA5OS4zIDk5LjNjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMjUuNC0yNS40YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42TDQwOCAzNjB6TTE4MyA3MS4xTDE1MiAxMDQgNTIuNyA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQuNyAzMC4xYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNkwxMDQgMTUybC0zMyAzMS4xQzU1LjkgMTk4LjIgNjYuNiAyMjQgODggMjI0aDExMmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY4OGMwLTIxLjMtMjUuOS0zMi00MS0xNi45elwiXVxufTtcbnZhciBmYUNvbmNpZXJnZUJlbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29uY2llcmdlLWJlbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjJcIiwgXCJNMjg4IDEzMC41NFYxMTJoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNnYxOC41NEMxMTUuNDkgMTQ2LjExIDMyIDIzOS4xOCAzMiAzNTJoNDQ4YzAtMTEyLjgyLTgzLjQ5LTIwNS44OS0xOTItMjIxLjQ2ek00OTYgMzg0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUNvb2tpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb29raWUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjNcIiwgXCJNNTEwLjM3IDI1NC43OWwtMTIuMDgtNzYuMjZhMTMyLjQ5MyAxMzIuNDkzIDAgMCAwLTM3LjE2LTcyLjk1bC01NC43Ni01NC43NWMtMTkuNzMtMTkuNzItNDUuMTgtMzIuNy03Mi43MS0zNy4wNWwtNzYuNy0xMi4xNWMtMjcuNTEtNC4zNi01NS42OS4xMS04MC41MiAxMi43NkwxMDcuMzIgNDkuNmExMzIuMjUgMTMyLjI1IDAgMCAwLTU3Ljc5IDU3LjhsLTM1LjEgNjguODhhMTMyLjYwMiAxMzIuNjAyIDAgMCAwLTEyLjgyIDgwLjk0bDEyLjA4IDc2LjI3YTEzMi40OTMgMTMyLjQ5MyAwIDAgMCAzNy4xNiA3Mi45NWw1NC43NiA1NC43NWExMzIuMDg3IDEzMi4wODcgMCAwIDAgNzIuNzEgMzcuMDVsNzYuNyAxMi4xNGMyNy41MSA0LjM2IDU1LjY5LS4xMSA4MC41Mi0xMi43NWw2OS4xMi0zNS4yMWExMzIuMzAyIDEzMi4zMDIgMCAwIDAgNTcuNzktNTcuOGwzNS4xLTY4Ljg3YzEyLjcxLTI0Ljk2IDE3LjItNTMuMyAxMi44Mi04MC45NnpNMTc2IDM2OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMzItMTYwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xNjAgMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYUNvb2tpZUJpdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29va2llLWJpdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjRcIiwgXCJNNTEwLjUyIDI1NS44MmMtNjkuOTctLjg1LTEyNi40Ny01Ny42OS0xMjYuNDctMTI3Ljg2LTcwLjE3IDAtMTI3LTU2LjQ5LTEyNy44Ni0xMjYuNDUtMjcuMjYtNC4xNC01NS4xMy4zLTc5LjcyIDEyLjgybC02OS4xMyAzNS4yMmExMzIuMjIxIDEzMi4yMjEgMCAwIDAtNTcuNzkgNTcuODFsLTM1LjEgNjguODhhMTMyLjY0NSAxMzIuNjQ1IDAgMCAwLTEyLjgyIDgwLjk1bDEyLjA4IDc2LjI3YTEzMi41MjEgMTMyLjUyMSAwIDAgMCAzNy4xNiA3Mi45Nmw1NC43NyA1NC43NmExMzIuMDM2IDEzMi4wMzYgMCAwIDAgNzIuNzEgMzcuMDZsNzYuNzEgMTIuMTVjMjcuNTEgNC4zNiA1NS43LS4xMSA4MC41My0xMi43Nmw2OS4xMy0zNS4yMWExMzIuMjczIDEzMi4yNzMgMCAwIDAgNTcuNzktNTcuODFsMzUuMS02OC44OGMxMi41Ni0yNC42NCAxNy4wMS01Mi41OCAxMi45MS03OS45MXpNMTc2IDM2OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMzItMTYwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xNjAgMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYUNvcHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29weScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjNVwiLCBcIk0zMjAgNDQ4djQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjEyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoNzJ2Mjk2YzAgMzAuODc5IDI1LjEyMSA1NiA1NiA1NmgxNjh6bTAtMzQ0VjBIMTUyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MzY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjEyOEgzNDRjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xMjAuOTcxLTMxLjAyOUwzNzUuMDI5IDcuMDI5QTI0IDI0IDAgMCAwIDM1OC4wNTkgMEgzNTJ2OTZoOTZ2LTYuMDU5YTI0IDI0IDAgMCAwLTcuMDI5LTE2Ljk3elwiXVxufTtcbnZhciBmYUNvcHlyaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb3B5cmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZjlcIiwgXCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0xMTcuMTM0IDM0Ni43NTNjLTEuNTkyIDEuODY3LTM5Ljc3NiA0NS43MzEtMTA5Ljg1MSA0NS43MzEtODQuNjkyIDAtMTQ0LjQ4NC02My4yNi0xNDQuNDg0LTE0NS41NjcgMC04MS4zMDMgNjIuMDA0LTE0My40MDEgMTQzLjc2Mi0xNDMuNDAxIDY2Ljk1NyAwIDEwMS45NjUgMzcuMzE1IDEwMy40MjIgMzguOTA0YTEyIDEyIDAgMCAxIDEuMjM4IDE0LjYyM2wtMjIuMzggMzQuNjU1Yy00LjA0OSA2LjI2Ny0xMi43NzQgNy4zNTEtMTguMjM0IDIuMjk1LS4yMzMtLjIxNC0yNi41MjktMjMuODgtNjEuODgtMjMuODgtNDYuMTE2IDAtNzMuOTE2IDMzLjU3NS03My45MTYgNzYuMDgyIDAgMzkuNjAyIDI1LjUxNCA3OS42OTIgNzQuMjc3IDc5LjY5MiAzOC42OTcgMCA2NS4yOC0yOC4zMzggNjUuNTQ0LTI4LjYyNSA1LjEzMi01LjU2NSAxNC4wNTktNS4wMzMgMTguNTA4IDEuMDUzbDI0LjU0NyAzMy41NzJhMTIuMDAxIDEyLjAwMSAwIDAgMS0uNTUzIDE0Ljg2NnpcIl1cbn07XG52YXIgZmFDb3VjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb3VjaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRiOFwiLCBcIk0xNjAgMjI0djY0aDMyMHYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoMzJjMC01My00My05Ni05Ni05NkgxNjBjLTUzIDAtOTYgNDMtOTYgOTZoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjR6bTQxNi0zMmgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2SDEyOHYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMjMuNiAxMyA0NCAzMiA1NS4xVjQzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzODR2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMTEuMWMxOS0xMS4xIDMyLTMxLjUgMzItNTUuMSAwLTM1LjMtMjguNy02NC02NC02NHpcIl1cbn07XG52YXIgZmFDcmVkaXRDYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NyZWRpdC1jYXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDlkXCIsIFwiTTAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZIMHYxNzZ6bTE5Mi02OGMwLTYuNiA1LjQtMTIgMTItMTJoMTM2YzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjA0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwem0tMTI4IDBjMC02LjYgNS40LTEyIDEyLTEyaDcyYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6TTU3NiA4MHY0OEgwVjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpcIl1cbn07XG52YXIgZmFDcm9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3AnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMjVcIiwgXCJNNDg4IDM1MmgtNDBWMTA5LjI1bDU5LjMxLTU5LjMxYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMNDg0LjY5IDQuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMNDAyLjc1IDY0SDE5MnY5NmgxMTQuNzVMMTYwIDMwNi43NVYyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0SDg4Qzc0Ljc1IDAgNjQgMTAuNzQgNjQgMjR2NDBIMjRDMTAuNzUgNjQgMCA3NC43NCAwIDg4djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDB2MjY0YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoMjMydi05NkgyMDUuMjVMMzUyIDIwNS4yNVY0ODhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0OGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00MGg0MGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwiXVxufTtcbnZhciBmYUNyb3BBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3JvcC1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjVcIiwgXCJNNDg4IDM1MmgtNDBWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgxOTJ2OTZoMTYwdjMyOGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQ4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTQwaDQwYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTQ4YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTE2MCAyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0SDg4Qzc0Ljc1IDAgNjQgMTAuNzQgNjQgMjR2NDBIMjRDMTAuNzUgNjQgMCA3NC43NCAwIDg4djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDB2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjI0di05NkgxNjBWMjR6XCJdXG59O1xudmFyIGZhQ3Jvc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3Jvc3MnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY2NTRcIiwgXCJNMzUyIDEyOGgtOTZWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NnYyMjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1Nmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUNyb3NzaGFpcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3Jvc3NoYWlycycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1YlwiLCBcIk01MDAgMjI0aC0zMC4zNjRDNDU1LjcyNCAxMzAuMzI1IDM4MS42NzUgNTYuMjc2IDI4OCA0Mi4zNjRWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzAuMzY0QzEzMC4zMjUgNTYuMjc2IDU2LjI3NiAxMzAuMzI1IDQyLjM2NCAyMjRIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzMC4zNjRDNTYuMjc2IDM4MS42NzUgMTMwLjMyNSA0NTUuNzI0IDIyNCA0NjkuNjM2VjUwMGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTMwLjM2NEMzODEuNjc1IDQ1NS43MjQgNDU1LjcyNCAzODEuNjc1IDQ2OS42MzYgMjg4SDUwMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyek0yODggNDA0LjYzNFYzNjRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDAuNjM0QzE2NS44MjYgMzkyLjIzMiAxMTkuNzgzIDM0Ni4yNDMgMTA3LjM2NiAyODhIMTQ4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwLjYzNEMxMTkuNzY4IDE2NS44MjYgMTY1Ljc1NyAxMTkuNzgzIDIyNCAxMDcuMzY2VjE0OGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwLjYzNEMzNDYuMTc0IDExOS43NjggMzkyLjIxNyAxNjUuNzU3IDQwNC42MzQgMjI0SDM2NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwLjYzNEMzOTIuMjMyIDM0Ni4xNzQgMzQ2LjI0MyAzOTIuMjE3IDI4OCA0MDQuNjM0ek0yODggMjU2YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnMtMzItMTQuMzI3LTMyLTMyYzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ6XCJdXG59O1xudmFyIGZhQ3JvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjcm93JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTIwXCIsIFwiTTU0NCAzMmgtMTYuMzZDNTEzLjA0IDEyLjY4IDQ5MC4wOSAwIDQ2NCAwYy00NC4xOCAwLTgwIDM1LjgyLTgwIDgwdjIwLjk4TDEyLjA5IDM5My41N0EzMC4yMTYgMzAuMjE2IDAgMCAwIDAgNDE3Ljc0YzAgMjIuNDYgMjMuNjQgMzcuMDcgNDMuNzMgMjcuMDNMMTY1LjI3IDM4NGg5Ni40OWw0NC40MSAxMjAuMWMyLjI3IDYuMjMgOS4xNSA5LjQ0IDE1LjM4IDcuMTdsMjIuNTUtOC4yMWM2LjIzLTIuMjcgOS40NC05LjE1IDcuMTctMTUuMzhMMzEyLjk0IDM4NEgzNTJjMS45MSAwIDMuNzYtLjIzIDUuNjYtLjI5bDQ0LjUxIDEyMC4zOGMyLjI3IDYuMjMgOS4xNSA5LjQ0IDE1LjM4IDcuMTdsMjIuNTUtOC4yMWM2LjIzLTIuMjcgOS40NC05LjE1IDcuMTctMTUuMzhsLTQxLjI0LTExMS41M0M0ODUuNzQgMzUyLjggNTQ0IDI3OS4yNiA1NDQgMTkydi04MGw5Ni0xNmMwLTM1LjM1LTQyLjk4LTY0LTk2LTY0em0tODAgNzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYUNyb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3duJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTIxXCIsIFwiTTUyOCA0NDhIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQxNmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptNjQtMzIwYy0yNi41IDAtNDggMjEuNS00OCA0OCAwIDcuMSAxLjYgMTMuNyA0LjQgMTkuOEw0NzYgMjM5LjJjLTE1LjQgOS4yLTM1LjMgNC00NC4yLTExLjZMMzUwLjMgODVDMzYxIDc2LjIgMzY4IDYzIDM2OCA0OGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OGMwIDE1IDcgMjguMiAxNy43IDM3bC04MS41IDE0Mi42Yy04LjkgMTUuNi0yOC45IDIwLjgtNDQuMiAxMS42bC03Mi4zLTQzLjRjMi43LTYgNC40LTEyLjcgNC40LTE5LjggMC0yNi41LTIxLjUtNDgtNDgtNDhTMCAxNDkuNSAwIDE3NnMyMS41IDQ4IDQ4IDQ4YzIuNiAwIDUuMi0uNCA3LjctLjhMMTI4IDQxNmgzODRsNzIuMy0xOTIuOGMyLjUuNCA1LjEuOCA3LjcuOCAyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFDcnV0Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3J1dGNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2Y3XCIsIFwiTTUwNy4zMSAxODUuNzFsLTE4MS0xODFhMTYgMTYgMCAwIDAtMjIuNjIgMEwyODEgMjcuMzFhMTYgMTYgMCAwIDAgMCAyMi42M2wxODEgMTgxYTE2IDE2IDAgMCAwIDIyLjYzIDBsMjIuNjItMjIuNjNhMTYgMTYgMCAwIDAgLjA2LTIyLjZ6bS0xNzkuNTQgNjYuNDFsLTY3Ljg5LTY3Ljg5IDU1LjEtNTUuMS00NS4yNS00NS4yNS0xMDkuNjcgMTA5LjY3YTk2LjA4IDk2LjA4IDAgMCAwLTI1LjY3IDQ2LjI5TDEwNi42NSAzNjAuMWwtMTAyIDEwMmExNiAxNiAwIDAgMCAwIDIyLjYzbDIyLjYyIDIyLjYyYTE2IDE2IDAgMCAwIDIyLjYzIDBsMTAyLTEwMiAxMjAuMjUtMjcuNzVhOTUuODggOTUuODggMCAwIDAgNDYuMjktMjUuNjVsMTA5LjY4LTEwOS42OEwzODIuODcgMTk3em0tNTQuNTcgNTQuNTdhMzIgMzIgMCAwIDEtMTUuNDUgOC41NGwtNzkuMyAxOC4zMiAxOC4zLTc5LjNhMzIuMjIgMzIuMjIgMCAwIDEgOC41Ni0xNS40NWw5LjMxLTkuMzEgNjcuODkgNjcuODl6XCJdXG59O1xudmFyIGZhQ3ViZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjdWJlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWIyXCIsIFwiTTIzOS4xIDYuM2wtMjA4IDc4Yy0xOC43IDctMzEuMSAyNS0zMS4xIDQ1djIyNS4xYzAgMTguMiAxMC4zIDM0LjggMjYuNSA0Mi45bDIwOCAxMDRjMTMuNSA2LjggMjkuNCA2LjggNDIuOSAwbDIwOC0xMDRjMTYuMy04LjEgMjYuNS0yNC44IDI2LjUtNDIuOVYxMjkuM2MwLTIwLTEyLjQtMzcuOS0zMS4xLTQ0LjlsLTIwOC03OEMyNjIgMi4yIDI1MCAyLjIgMjM5LjEgNi4zek0yNTYgNjguNGwxOTIgNzJ2MS4xbC0xOTIgNzgtMTkyLTc4di0xLjFsMTkyLTcyem0zMiAzNTZWMjc1LjVsMTYwLTY1djEzMy45bC0xNjAgODB6XCJdXG59O1xudmFyIGZhQ3ViZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3ViZXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxYjNcIiwgXCJNNDg4LjYgMjUwLjJMMzkyIDIxNFYxMDUuNWMwLTE1LTkuMy0yOC40LTIzLjQtMzMuN2wtMTAwLTM3LjVjLTguMS0zLjEtMTcuMS0zLjEtMjUuMyAwbC0xMDAgMzcuNWMtMTQuMSA1LjMtMjMuNCAxOC43LTIzLjQgMzMuN1YyMTRsLTk2LjYgMzYuMkM5LjMgMjU1LjUgMCAyNjguOSAwIDI4My45VjM5NGMwIDEzLjYgNy43IDI2LjEgMTkuOSAzMi4ybDEwMCA1MGMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAzLjktNTIgMTAzLjkgNTJjMTAuMSA1LjEgMjIuMSA1LjEgMzIuMiAwbDEwMC01MGMxMi4yLTYuMSAxOS45LTE4LjYgMTkuOS0zMi4yVjI4My45YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43ek0zNTggMjE0LjhsLTg1IDMxLjl2LTY4LjJsODUtMzd2NzMuM3pNMTU0IDEwNC4xbDEwMi0zOC4yIDEwMiAzOC4ydi42bC0xMDIgNDEuNC0xMDItNDEuNHYtLjZ6bTg0IDI5MS4xbC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnptMjQwIDExMmwtODUgNDIuNXYtNzkuMWw4NS0zOC44djc1LjR6bTAtMTEybC0xMDIgNDEuNC0xMDItNDEuNHYtLjZsMTAyLTM4LjIgMTAyIDM4LjJ2LjZ6XCJdXG59O1xudmFyIGZhQ3V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2N1dCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjNFwiLCBcIk0yNzguMDYgMjU2TDQ0NC40OCA4OS41N2M0LjY5LTQuNjkgNC42OS0xMi4yOSAwLTE2Ljk3LTMyLjgtMzIuOC04NS45OS0zMi44LTExOC43OSAwTDIxMC4xOCAxODguMTJsLTI0Ljg2LTI0Ljg2YzQuMzEtMTAuOTIgNi42OC0yMi44MSA2LjY4LTM1LjI2IDAtNTMuMDItNDIuOTgtOTYtOTYtOTZTMCA3NC45OCAwIDEyOHM0Mi45OCA5NiA5NiA5NmM0LjU0IDAgOC45OS0uMzIgMTMuMzYtLjkzTDE0Mi4yOSAyNTZsLTMyLjkzIDMyLjkzYy00LjM3LS42MS04LjgzLS45My0xMy4zNi0uOTMtNTMuMDIgMC05NiA0Mi45OC05NiA5NnM0Mi45OCA5NiA5NiA5NiA5Ni00Mi45OCA5Ni05NmMwLTEyLjQ1LTIuMzctMjQuMzQtNi42OC0zNS4yNmwyNC44Ni0yNC44NkwzMjUuNjkgNDM5LjRjMzIuOCAzMi44IDg1Ljk5IDMyLjggMTE4Ljc5IDAgNC42OS00LjY4IDQuNjktMTIuMjggMC0xNi45N0wyNzguMDYgMjU2ek05NiAxNjBjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6bTAgMjU2Yy0xNy42NCAwLTMyLTE0LjM2LTMyLTMyczE0LjM2LTMyIDMyLTMyIDMyIDE0LjM2IDMyIDMyLTE0LjM2IDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURhdGFiYXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RhdGFiYXNlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMWMwXCIsIFwiTTQ0OCA3My4xNDN2NDUuNzE0QzQ0OCAxNTkuMTQzIDM0Ny42NjcgMTkyIDIyNCAxOTJTMCAxNTkuMTQzIDAgMTE4Ljg1N1Y3My4xNDNDMCAzMi44NTcgMTAwLjMzMyAwIDIyNCAwczIyNCAzMi44NTcgMjI0IDczLjE0M3pNNDQ4IDE3NnYxMDIuODU3QzQ0OCAzMTkuMTQzIDM0Ny42NjcgMzUyIDIyNCAzNTJTMCAzMTkuMTQzIDAgMjc4Ljg1N1YxNzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMjA5LjE0MyA0NDggMTc2em0wIDE2MHYxMDIuODU3QzQ0OCA0NzkuMTQzIDM0Ny42NjcgNTEyIDIyNCA1MTJTMCA0NzkuMTQzIDAgNDM4Ljg1N1YzMzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMzY5LjE0MyA0NDggMzM2elwiXVxufTtcbnZhciBmYURlYWYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGVhZicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJhNFwiLCBcIk0yMTYgMjYwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtNDQuMTEyIDM1Ljg4OC04MCA4MC04MHM4MCAzNS44ODggODAgODBjMCAxNS40NjQtMTIuNTM2IDI4LTI4IDI4cy0yOC0xMi41MzYtMjgtMjhjMC0xMy4yMzQtMTAuNzY3LTI0LTI0LTI0cy0yNCAxMC43NjYtMjQgMjR6bTI0LTE3NmMtOTcuMDQ3IDAtMTc2IDc4Ljk1My0xNzYgMTc2IDAgMTUuNDY0IDEyLjUzNiAyOCAyOCAyOHMyOC0xMi41MzYgMjgtMjhjMC02Ni4xNjggNTMuODMyLTEyMCAxMjAtMTIwczEyMCA1My44MzIgMTIwIDEyMGMwIDc1LjE2NC03MS4wMDkgNzAuMzExLTcxLjk5NyAxNDMuNjIyTDI4OCA0MDRjMCAyOC42NzMtMjMuMzI3IDUyLTUyIDUyLTE1LjQ2NCAwLTI4IDEyLjUzNi0yOCAyOHMxMi41MzYgMjggMjggMjhjNTkuNDc1IDAgMTA3Ljg3Ni00OC4zMjggMTA4LTEwNy43NzQuNTk1LTM0LjQyOCA3Mi00OC4yNCA3Mi0xNDQuMjI2IDAtOTcuMDQ3LTc4Ljk1My0xNzYtMTc2LTE3NnptMjY4LjQ4NS01Mi4yMDFMNDgwLjIgMy41MTVjLTQuNjg3LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwzNzYuMiA5MC41NDRjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwyOC4yODUgMjguMjg1YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NyAwbDg3LjAzLTg3LjAyOWM0LjY4Ny00LjY4OCA0LjY4Ny0xMi4yODYgMC0xNi45NzJ6TTE2OC45NyAzMTQuNzQ1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcgMEwzLjUxNSA0NjMuMjNjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MUwzMS44IDUwOC40ODVjNC42ODcgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwTDE5Ny4yNTYgMzYwYzQuNjg2LTQuNjg2IDQuNjg2LTEyLjI4NCAwLTE2Ljk3MWwtMjguMjg2LTI4LjI4NHpcIl1cbn07XG52YXIgZmFEZW1vY3JhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkZW1vY3JhdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjc0N1wiLCBcIk02MzcuMyAyNTYuOWwtMTkuNi0yOS40Yy0yOC4yLTQyLjMtNzUuMy02Ny41LTEyNi4xLTY3LjVIMjU2bC04MS4yLTgxLjJjMjAuMS0yMC4xIDIyLjYtNTEuMSA3LjUtNzMuOS0zLjQtNS4yLTEwLjgtNS45LTE1LjItMS41bC00MS44IDQxLjhMODIuNCAyLjRjLTMuNi0zLjYtOS42LTMtMTIuNCAxLjItMTIuMyAxOC42LTEwLjMgNDQgNi4xIDYwLjQgMy4zIDMuMyA3LjMgNS4zIDExLjMgNy41LTIuMiAxLjctNC43IDMuMS02LjQgNS40TDYuNCAxNzYuMmMtNy4zIDkuNy04LjQgMjIuNy0zIDMzLjVsMTQuMyAyOC42YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdoMzFjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTM4IDIxMmw1NCAxMDhoMzUydi03Ny44YzE2LjIgMTIuMiAxOC4zIDE3LjYgNDAuMSA1MC4zIDQuOSA3LjQgMTQuOCA5LjMgMjIuMiA0LjRsMjYuNi0xNy43YzcuMy01IDkuMy0xNC45IDQuNC0yMi4zem0tMzQxLjEtMTMuNmwtMTYuNSAxNi4xIDMuOSAyMi43Yy43IDQuMS0zLjYgNy4yLTcuMiA1LjNMMjU2IDI3Ni43bC0yMC40IDEwLjdjLTMuNiAxLjktNy45LTEuMi03LjItNS4zbDMuOS0yMi43LTE2LjUtMTYuMWMtMy0yLjktMS4zLTcuOSAyLjgtOC41bDIyLjgtMy4zIDEwLjItMjAuN2MxLjgtMy43IDcuMS0zLjcgOSAwbDEwLjIgMjAuNyAyMi44IDMuM2M0IC42IDUuNiA1LjYgMi42IDguNXptMTEyIDBsLTE2LjUgMTYuMSAzLjkgMjIuN2MuNyA0LjEtMy42IDcuMi03LjIgNS4zTDM2OCAyNzYuN2wtMjAuNCAxMC43Yy0zLjYgMS45LTcuOS0xLjItNy4yLTUuM2wzLjktMjIuNy0xNi41LTE2LjFjLTMtMi45LTEuMy03LjkgMi44LTguNWwyMi44LTMuMyAxMC4yLTIwLjdjMS44LTMuNyA3LjEtMy43IDkgMGwxMC4yIDIwLjcgMjIuOCAzLjNjNCAuNiA1LjYgNS42IDIuNiA4LjV6bTExMiAwbC0xNi41IDE2LjEgMy45IDIyLjdjLjcgNC4xLTMuNiA3LjItNy4yIDUuM0w0ODAgMjc2LjdsLTIwLjQgMTAuN2MtMy42IDEuOS03LjktMS4yLTcuMi01LjNsMy45LTIyLjctMTYuNS0xNi4xYy0zLTIuOS0xLjMtNy45IDIuOC04LjVsMjIuOC0zLjMgMTAuMi0yMC43YzEuOC0zLjcgNy4xLTMuNyA5IDBsMTAuMiAyMC43IDIyLjggMy4zYzQgLjYgNS42IDUuNiAyLjYgOC41ek0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwaDE2MHY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2VjM1MkgxOTJ2MTQ0elwiXVxufTtcbnZhciBmYURlc2t0b3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGVza3RvcCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjEwOFwiLCBcIk01MjggMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2MzIwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDE5MmwtMTYgNDhoLTcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDI3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtNzJsLTE2LTQ4aDE5MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHptLTE2IDM1Mkg2NFY2NGg0NDh2Mjg4elwiXVxufTtcbnZhciBmYURoYXJtYWNoYWtyYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaGFybWFjaGFrcmEnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NTVcIiwgXCJNNDk1IDIyNS4wNmwtMTcuMjIgMS4wOGMtNS4yNy0zOS40OS0yMC43OS03NS42NC00My44Ni0xMDUuODRsMTIuOTUtMTEuNDNjNi45Mi02LjExIDcuMjUtMTYuNzkuNzMtMjMuMzFMNDI2LjQ0IDY0LjRjLTYuNTMtNi41My0xNy4yMS02LjE5LTIzLjMxLjczTDM5MS43IDc4LjA3Yy0zMC4yLTIzLjA2LTY2LjM1LTM4LjU4LTEwNS44My00My44NkwyODYuOTQgMTdjLjU4LTkuMjEtNi43NC0xNy0xNS45Ny0xN2gtMjkuOTRjLTkuMjMgMC0xNi41NCA3Ljc5LTE1Ljk3IDE3bDEuMDggMTcuMjJjLTM5LjQ5IDUuMjctNzUuNjQgMjAuNzktMTA1LjgzIDQzLjg2bC0xMS40My0xMi45NWMtNi4xMS02LjkyLTE2Ljc5LTcuMjUtMjMuMzEtLjczTDY0LjQgODUuNTZjLTYuNTMgNi41My02LjE5IDE3LjIxLjczIDIzLjMxbDEyLjk1IDExLjQzYy0yMy4wNiAzMC4yLTM4LjU4IDY2LjM1LTQzLjg2IDEwNS44NEwxNyAyMjUuMDZjLTkuMjEtLjU4LTE3IDYuNzQtMTcgMTUuOTd2MjkuOTRjMCA5LjIzIDcuNzkgMTYuNTQgMTcgMTUuOTdsMTcuMjItMS4wOGM1LjI3IDM5LjQ5IDIwLjc5IDc1LjY0IDQzLjg2IDEwNS44M2wtMTIuOTUgMTEuNDNjLTYuOTIgNi4xMS03LjI1IDE2Ljc5LS43MyAyMy4zMWwyMS4xNyAyMS4xN2M2LjUzIDYuNTMgMTcuMjEgNi4xOSAyMy4zMS0uNzNsMTEuNDMtMTIuOTVjMzAuMiAyMy4wNiA2Ni4zNSAzOC41OCAxMDUuODQgNDMuODZMMjI1LjA2IDQ5NWMtLjU4IDkuMjEgNi43NCAxNyAxNS45NyAxN2gyOS45NGM5LjIzIDAgMTYuNTQtNy43OSAxNS45Ny0xN2wtMS4wOC0xNy4yMmMzOS40OS01LjI3IDc1LjY0LTIwLjc5IDEwNS44NC00My44NmwxMS40MyAxMi45NWM2LjExIDYuOTIgMTYuNzkgNy4yNSAyMy4zMS43M2wyMS4xNy0yMS4xN2M2LjUzLTYuNTMgNi4xOS0xNy4yMS0uNzMtMjMuMzFsLTEyLjk1LTExLjQzYzIzLjA2LTMwLjIgMzguNTgtNjYuMzUgNDMuODYtMTA1LjgzbDE3LjIyIDEuMDhjOS4yMS41OCAxNy02Ljc0IDE3LTE1Ljk3di0yOS45NGMtLjAxLTkuMjMtNy44LTE2LjU0LTE3LjAxLTE1Ljk3ek0yODEuODQgOTguNjFjMjQuODEgNC4wNyA0Ny42MyAxMy42NiA2Ny4yMyAyNy43OGwtNDIuNjIgNDguMjljLTguNzMtNS40NC0xOC4zMi05LjU0LTI4LjYyLTExLjk1bDQuMDEtNjQuMTJ6bS01MS42OCAwbDQuMDEgNjQuMTJjLTEwLjI5IDIuNDEtMTkuODkgNi41Mi0yOC42MiAxMS45NWwtNDIuNjItNDguMjljMTkuNi0xNC4xMiA0Mi40Mi0yMy43MSA2Ny4yMy0yNy43OHptLTEwMy43NyA2NC4zM2w0OC4zIDQyLjYxYy01LjQ0IDguNzMtOS41NCAxOC4zMy0xMS45NiAyOC42MmwtNjQuMTItNC4wMWM0LjA3LTI0LjgxIDEzLjY2LTQ3LjYyIDI3Ljc4LTY3LjIyem0tMjcuNzggMTE4LjlsNjQuMTItNC4wMWMyLjQxIDEwLjI5IDYuNTIgMTkuODkgMTEuOTUgMjguNjJsLTQ4LjI5IDQyLjYyYy0xNC4xMi0xOS42LTIzLjcxLTQyLjQyLTI3Ljc4LTY3LjIzem0xMzEuNTUgMTMxLjU1Yy0yNC44MS00LjA3LTQ3LjYzLTEzLjY2LTY3LjIzLTI3Ljc4bDQyLjYxLTQ4LjNjOC43MyA1LjQ0IDE4LjMzIDkuNTQgMjguNjIgMTEuOTZsLTQgNjQuMTJ6TTI1NiAyODhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTI1Ljg0IDEyNS4zOWwtNC4wMS02NC4xMmMxMC4yOS0yLjQxIDE5Ljg5LTYuNTIgMjguNjItMTEuOTZsNDIuNjEgNDguM2MtMTkuNiAxNC4xMi00Mi40MSAyMy43MS02Ny4yMiAyNy43OHptMTAzLjc3LTY0LjMzbC00OC4yOS00Mi42MmM1LjQ0LTguNzMgOS41NC0xOC4zMiAxMS45NS0yOC42Mmw2NC4xMiA0LjAxYy00LjA3IDI0LjgyLTEzLjY2IDQ3LjY0LTI3Ljc4IDY3LjIzem0tMzYuMzQtMTE0Ljg5Yy0yLjQxLTEwLjI5LTYuNTItMTkuODktMTEuOTYtMjguNjJsNDguMy00Mi42MWMxNC4xMiAxOS42IDIzLjcxIDQyLjQyIDI3Ljc4IDY3LjIzbC02NC4xMiA0elwiXVxufTtcbnZhciBmYURpYWdub3NlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWFnbm9zZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0NzBcIiwgXCJNNDk2IDI1NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2em0tMTc2LTgwYzQ4LjUgMCA4OC0zOS41IDg4LTg4UzM2OC41IDAgMzIwIDBzLTg4IDM5LjUtODggODggMzkuNSA4OCA4OCA4OHpNNTkuOCAzNjRjMTAuMiAxNS4zIDI5LjMgMTcuOCA0Mi45IDkuOCAxNi4yLTkuNiA1Ni4yLTMxLjcgMTA1LjMtNDguNlY0MTZoMjI0di05MC43YzQ5LjEgMTYuOCA4OS4xIDM5IDEwNS4zIDQ4LjYgMTMuNiA4IDMyLjcgNS4zIDQyLjktOS44bDE3LjgtMjYuN2M4LjgtMTMuMiA3LjYtMzQuNi0xMC00NS4xLTExLjktNy4xLTI5LjctMTctNTEuMS0yNy40LTI4LjEgNDYuMS05OS40IDE3LjgtODcuNy0zNS4xQzQwOS4zIDIxNy4yIDM2NS4xIDIwOCAzMjAgMjA4Yy01NyAwLTExMi45IDE0LjUtMTYwIDMyLjItLjIgNDAuMi00Ny42IDYzLjMtNzkuMiAzNi0xMS4yIDYtMjEuMyAxMS42LTI4LjcgMTYtMTcuNiAxMC41LTE4LjggMzEuOC0xMCA0NS4xTDU5LjggMzY0ek0zNjggMzQ0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptLTk2LTk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptLTE2MCA4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6bTUxMiAxOTJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYURpY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUyMlwiLCBcIk01OTIgMTkySDQ3My4yNmMxMi42OSAyOS41OSA3LjEyIDY1LjItMTcgODkuMzJMMzIwIDQxNy41OFY0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyMjRjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyNDBjMC0yNi41MS0yMS40OS00OC00OC00OHpNNDgwIDM3NmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bS00Ni4zNy0xODYuN0wyNTguNyAxNC4zN2MtMTkuMTYtMTkuMTYtNTAuMjMtMTkuMTYtNjkuMzkgMEwxNC4zNyAxODkuM2MtMTkuMTYgMTkuMTYtMTkuMTYgNTAuMjMgMCA2OS4zOUwxODkuMyA0MzMuNjNjMTkuMTYgMTkuMTYgNTAuMjMgMTkuMTYgNjkuMzkgMEw0MzMuNjMgMjU4LjdjMTkuMTYtMTkuMTcgMTkuMTYtNTAuMjQgMC02OS40ek05NiAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0xMjggMTI4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptMC0xMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0wLTEyOGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTEyOCAxMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYURpY2VEMjAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1kMjAnLFxuICBpY29uOiBbNDgwLCA1MTIsIFtdLCBcImY2Y2ZcIiwgXCJNMTA2Ljc1IDIxNS4wNkwxLjIgMzcwLjk1Yy0zLjA4IDUgLjEgMTEuNSA1LjkzIDEyLjE0bDIwOC4yNiAyMi4wNy0xMDguNjQtMTkwLjF6TTcuNDEgMzE1LjQzTDgyLjcgMTkzLjA4IDYuMDYgMTQ3LjFjLTIuNjctMS42LTYuMDYuMzItNi4wNiAzLjQzdjE2Mi44MWMwIDQuMDMgNS4yOSA1LjUzIDcuNDEgMi4wOXpNMTguMjUgNDIzLjZsMTk0LjQgODcuNjZjNS4zIDIuNDUgMTEuMzUtMS40MyAxMS4zNS03LjI2di02NS42N2wtMjAzLjU1LTIyLjNjLTQuNDUtLjUtNi4yMyA1LjU5LTIuMiA3LjU3em04MS4yMi0yNTcuNzhMMTc5LjQgMjIuODhjNC4zNC03LjA2LTMuNTktMTUuMjUtMTAuNzgtMTEuMTRMMTcuODEgMTEwLjM1Yy0yLjQ3IDEuNjItMi4zOSA1LjI2LjEzIDYuNzhsODEuNTMgNDguNjl6TTI0MCAxNzZoMTA5LjIxTDI1My42MyA3LjYyQzI1MC41IDIuNTQgMjQ1LjI1IDAgMjQwIDBzLTEwLjUgMi41NC0xMy42MyA3LjYyTDEzMC43OSAxNzZIMjQwem0yMzMuOTQtMjguOWwtNzYuNjQgNDUuOTkgNzUuMjkgMTIyLjM1YzIuMTEgMy40NCA3LjQxIDEuOTQgNy40MS0yLjFWMTUwLjUzYzAtMy4xMS0zLjM5LTUuMDMtNi4wNi0zLjQzem0tOTMuNDEgMTguNzJsODEuNTMtNDguN2MyLjUzLTEuNTIgMi42LTUuMTYuMTMtNi43OGwtMTUwLjgxLTk4LjZjLTcuMTktNC4xMS0xNS4xMiA0LjA4LTEwLjc4IDExLjE0bDc5LjkzIDE0Mi45NHptNzkuMDIgMjUwLjIxTDI1NiA0MzguMzJ2NjUuNjdjMCA1Ljg0IDYuMDUgOS43MSAxMS4zNSA3LjI2bDE5NC40LTg3LjY2YzQuMDMtMS45NyAyLjI1LTguMDYtMi4yLTcuNTZ6bS04Ni4zLTIwMC45N2wtMTA4LjYzIDE5MC4xIDIwOC4yNi0yMi4wN2M1LjgzLS42NSA5LjAxLTcuMTQgNS45My0xMi4xNEwzNzMuMjUgMjE1LjA2ek0yNDAgMjA4SDEzOS41N0wyNDAgMzgzLjc1IDM0MC40MyAyMDhIMjQwelwiXVxufTtcbnZhciBmYURpY2VENiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWNlLWQ2JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNmQxXCIsIFwiTTQyMi4xOSAxMDkuOTVMMjU2LjIxIDkuMDdjLTE5LjkxLTEyLjEtNDQuNTItMTIuMS02NC40MyAwTDI1LjgxIDEwOS45NWMtNS4zMiAzLjIzLTUuMjkgMTEuMjcuMDYgMTQuNDZMMjI0IDI0Mi41NWwxOTguMTQtMTE4LjE0YzUuMzUtMy4xOSA1LjM4LTExLjIyLjA1LTE0LjQ2em0xMy44NCA0NC42M0wyNDAgMjcxLjQ2djIyMy44MmMwIDEyLjg4IDEzLjM5IDIwLjkxIDI0LjA1IDE0LjQzbDE1Mi4xNi05Mi40OGMxOS42OC0xMS45NiAzMS43OS0zMy45NCAzMS43OS01Ny43di0xOTcuN2MwLTYuNDEtNi42NC0xMC40My0xMS45Ny03LjI1ek0wIDE2MS44M3YxOTcuN2MwIDIzLjc3IDEyLjExIDQ1Ljc0IDMxLjc5IDU3LjdsMTUyLjE2IDkyLjQ3YzEwLjY3IDYuNDggMjQuMDUtMS41NCAyNC4wNS0xNC40M1YyNzEuNDZMMTEuOTcgMTU0LjU4QzYuNjQgMTUxLjQgMCAxNTUuNDIgMCAxNjEuODN6XCJdXG59O1xudmFyIGZhRGljZUZpdmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1maXZlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTIzXCIsIFwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem05NiA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhRGljZUZvdXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1mb3VyJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTI0XCIsIFwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE5MiAxOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpY2VPbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1vbmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MjVcIiwgXCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0yMjQgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpY2VTaXggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1zaXgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MjZcIiwgXCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xOTIgMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpY2VUaHJlZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWNlLXRocmVlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTI3XCIsIFwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpY2VUd28gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS10d28nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MjhcIiwgXCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xOTIgMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpZ2l0YWxUYWNob2dyYXBoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpZ2l0YWwtdGFjaG9ncmFwaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU2NlwiLCBcIk02MDggOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMwNCAzNTJjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di04YzAtNC40MiAzLjU4LTggOC04aDIyNGM0LjQyIDAgOCAzLjU4IDggOHY4ek03MiAyODh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDgwYy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNDAtNjRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di00OGMwLTguODQgNy4xNi0xNiAxNi0xNmgyMDhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NDh6bTI3MiAxMjhjMCA0LjQyLTMuNTggOC04IDhIMzQ0Yy00LjQyIDAtOC0zLjU4LTgtOHYtOGMwLTQuNDIgMy41OC04IDgtOGgyMjRjNC40MiAwIDggMy41OCA4IDh2OHpcIl1cbn07XG52YXIgZmFEaXJlY3Rpb25zID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpcmVjdGlvbnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1ZWJcIiwgXCJNNTAyLjYxIDIzMy4zMkwyNzguNjggOS4zOWMtMTIuNTItMTIuNTItMzIuODMtMTIuNTItNDUuMzYgMEw5LjM5IDIzMy4zMmMtMTIuNTIgMTIuNTMtMTIuNTIgMzIuODMgMCA0NS4zNmwyMjMuOTMgMjIzLjkzYzEyLjUyIDEyLjUzIDMyLjgzIDEyLjUzIDQ1LjM2IDBsMjIzLjkzLTIyMy45M2MxMi41Mi0xMi41MyAxMi41Mi0zMi44MyAwLTQ1LjM2em0tMTAwLjk4IDEyLjU2bC04NC4yMSA3Ny43M2MtNS4xMiA0LjczLTEzLjQzIDEuMS0xMy40My01Ljg4VjI2NGgtOTZ2NjRjMCA0LjQyLTMuNTggOC04IDhoLTMyYy00LjQyIDAtOC0zLjU4LTgtOHYtODBjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgxMTJ2LTUzLjczYzAtNi45NyA4LjMtMTAuNjEgMTMuNDMtNS44OGw4NC4yMSA3Ny43M2MzLjQzIDMuMTcgMy40MyA4LjU5IDAgMTEuNzZ6XCJdXG59O1xudmFyIGZhRGlzZWFzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaXNlYXNlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2ZhXCIsIFwiTTQ3Mi4yOSAxOTUuOWwtNjcuMDYtMjNjLTE5LjI4LTYuNi0zMy41NC0yMC45Mi0zOC4xNC0zOC4zMWwtMTYtNjAuNDVjLTExLjU4LTQzLjc3LTc2LjU3LTU3LjEzLTExMC0yMi42MkwxOTUgOTkuMjRjLTEzLjI2IDEzLjcxLTMzLjU0IDIwLjkzLTU0LjIgMTkuMzFsLTcxLjktNS42MmMtNTItNC4wNy04Ni45MyA0NC44OS01OSA4Mi44NGwzOC41NCA1Mi40MmMxMS4wOCAxNS4wNyAxMi44MiAzMy44NiA0LjY0IDUwLjI0bC0yOC40MyA1N0M0IDM5Ni42NyA0Ny40NiA0NDAuMjkgOTguMTEgNDI5LjIzbDcwLTE1LjI4YzIwLjExLTQuMzkgNDEuNDUgMCA1Ny4wNyAxMS43M2w1NC4zMiA0MC44M2MzOS4zMiAyOS41NiAxMDEgNy41NyAxMDQuNDUtMzcuMjJsNC43LTYxLjg2YzEuMzUtMTcuOCAxMi44LTMzLjg3IDMwLjYzLTQzbDYyLTMxLjc0YzQ0Ljg0LTIyLjk2IDM5LjU1LTgwLjE3LTguOTktOTYuNzl6TTE2MCAyNTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTEyOCA5NmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMTYtMTI4YTE2IDE2IDAgMSAxIDE2LTE2IDE2IDE2IDAgMCAxLTE2IDE2elwiXVxufTtcbnZhciBmYURpdmlkZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaXZpZGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MjlcIiwgXCJNMjI0IDM1MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NCA2NC0yOC42NSA2NC02NC0yOC42NS02NC02NC02NHptMC0xOTJjMzUuMzUgMCA2NC0yOC42NSA2NC02NHMtMjguNjUtNjQtNjQtNjQtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bTE5MiA0OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYURpenp5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Rpenp5JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTY3XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS05NiAyMDYuNmwtMjguNyAyOC43Yy0xNC44IDE0LjgtMzcuOC03LjUtMjIuNi0yMi42bDI4LjctMjguNy0yOC43LTI4LjdjLTE1LTE1IDcuNy0zNy42IDIyLjYtMjIuNmwyOC43IDI4LjcgMjguNy0yOC43YzE1LTE1IDM3LjYgNy43IDIyLjYgMjIuNkwxNzQuNiAxOTJsMjguNyAyOC43YzE1LjIgMTUuMi03LjkgMzcuNC0yMi42IDIyLjZMMTUyIDIxNC42ek0yNDggNDE2Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptMTQ3LjMtMTk1LjNjMTUuMiAxNS4yLTcuOSAzNy40LTIyLjYgMjIuNkwzNDQgMjE0LjZsLTI4LjcgMjguN2MtMTQuOCAxNC44LTM3LjgtNy41LTIyLjYtMjIuNmwyOC43LTI4LjctMjguNy0yOC43Yy0xNS0xNSA3LjctMzcuNiAyMi42LTIyLjZsMjguNyAyOC43IDI4LjctMjguN2MxNS0xNSAzNy42IDcuNyAyMi42IDIyLjZMMzY2LjYgMTkybDI4LjcgMjguN3pcIl1cbn07XG52YXIgZmFEbmEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG5hJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNDcxXCIsIFwiTS4xIDQ5NC4xYy0xLjEgOS41IDYuMyAxNy44IDE1LjkgMTcuOGwzMi4zLjFjOC4xIDAgMTQuOS01LjkgMTYtMTMuOS43LTQuOSAxLjgtMTEuMSAzLjQtMTguMUgzODBjMS42IDYuOSAyLjkgMTMuMiAzLjUgMTguMSAxLjEgOCA3LjkgMTQgMTYgMTMuOWwzMi4zLS4xYzkuNiAwIDE3LjEtOC4zIDE1LjktMTcuOC00LjYtMzcuOS0yNS42LTEyOS0xMTguOS0yMDcuNy0xNy42IDEyLjQtMzcuMSAyNC4yLTU4LjUgMzUuNCA2LjIgNC42IDExLjQgOS40IDE3IDE0LjJIMTU5LjdjMjEuMy0xOC4xIDQ3LTM1LjYgNzguNy01MS40QzQxMC41IDE5OS4xIDQ0Mi4xIDY1LjggNDQ3LjkgMTcuOSA0NDkgOC40IDQ0MS42LjEgNDMyIC4xTDM5OS42IDBjLTguMSAwLTE0LjkgNS45LTE2IDEzLjktLjcgNC45LTEuOCAxMS4xLTMuNCAxOC4xSDY3LjhjLTEuNi03LTIuNy0xMy4xLTMuNC0xOC4xLTEuMS04LTcuOS0xNC0xNi0xMy45TDE2LjEuMUM2LjUuMS0xIDguNC4xIDE3LjkgNS4zIDYwLjggMzEuNCAxNzEuOCAxNjAgMjU2IDMxLjUgMzQwLjIgNS4zIDQ1MS4yLjEgNDk0LjF6TTIyNCAyMTkuNmMtMjUuMS0xMy43LTQ2LjQtMjguNC02NC4zLTQzLjZoMTI4LjVjLTE3LjggMTUuMi0zOS4xIDMwLTY0LjIgNDMuNnpNMzU1LjEgOTZjLTUuOCAxMC40LTEyLjggMjEuMS0yMSAzMkgxMTRjLTguMy0xMC45LTE1LjMtMjEuNi0yMS0zMmgyNjIuMXpNOTIuOSA0MTZjNS44LTEwLjQgMTIuOC0yMS4xIDIxLTMyaDIxOS40YzguMyAxMC45IDE1LjQgMjEuNiAyMS4yIDMySDkyLjl6XCJdXG59O1xudmFyIGZhRG9nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvZycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjZkM1wiLCBcIk0yOTguMDYsMjI0LDQ0OCwyNzcuNTVWNDk2YTE2LDE2LDAsMCwxLTE2LDE2SDM2OGExNiwxNiwwLDAsMS0xNi0xNlYzODRIMTkyVjQ5NmExNiwxNiwwLDAsMS0xNiwxNkgxMTJhMTYsMTYsMCwwLDEtMTYtMTZWMjgyLjA5QzU4Ljg0LDI2OC44NCwzMiwyMzMuNjYsMzIsMTkyYTMyLDMyLDAsMCwxLDY0LDAsMzIuMDYsMzIuMDYsMCwwLDAsMzIsMzJaTTU0NCwxMTJ2MzJhNjQsNjQsMCwwLDEtNjQsNjRINDQ4djM1LjU4TDMyMCwxOTcuODdWNDhjMC0xNC4yNSwxNy4yMi0yMS4zOSwyNy4zMS0xMS4zMUwzNzQuNTksNjRoNTMuNjNjMTAuOTEsMCwyMy43NSw3LjkyLDI4LjYyLDE3LjY5TDQ2NCw5Nmg2NEExNiwxNiwwLDAsMSw1NDQsMTEyWm0tMTEyLDBhMTYsMTYsMCwxLDAtMTYsMTZBMTYsMTYsMCwwLDAsNDMyLDExMlpcIl1cbn07XG52YXIgZmFEb2xsYXJTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvbGxhci1zaWduJyxcbiAgaWNvbjogWzI4OCwgNTEyLCBbXSwgXCJmMTU1XCIsIFwiTTIwOS4yIDIzMy40bC0xMDgtMzEuNkM4OC43IDE5OC4yIDgwIDE4Ni41IDgwIDE3My41YzAtMTYuMyAxMy4yLTI5LjUgMjkuNS0yOS41aDY2LjNjMTIuMiAwIDI0LjIgMy43IDM0LjIgMTAuNSA2LjEgNC4xIDE0LjMgMy4xIDE5LjUtMmwzNC44LTM0YzcuMS02LjkgNi4xLTE4LjQtMS44LTI0LjVDMjM4IDc0LjggMjA3LjQgNjQuMSAxNzYgNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4aC0yLjVDNDUuOCA2NC01LjQgMTE4LjcuNSAxODMuNmM0LjIgNDYuMSAzOS40IDgzLjYgODMuOCA5Ni42bDEwMi41IDMwYzEyLjUgMy43IDIxLjIgMTUuMyAyMS4yIDI4LjMgMCAxNi4zLTEzLjIgMjkuNS0yOS41IDI5LjVoLTY2LjNDMTAwIDM2OCA4OCAzNjQuMyA3OCAzNTcuNWMtNi4xLTQuMS0xNC4zLTMuMS0xOS41IDJsLTM0LjggMzRjLTcuMSA2LjktNi4xIDE4LjQgMS44IDI0LjUgMjQuNSAxOS4yIDU1LjEgMjkuOSA4Ni41IDMwdjQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQ4LjJjNDYuNi0uOSA5MC4zLTI4LjYgMTA1LjctNzIuNyAyMS41LTYxLjYtMTQuNi0xMjQuOC03Mi41LTE0MS43elwiXVxufTtcbnZhciBmYURvbGx5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvbGx5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDcyXCIsIFwiTTI5NC4yIDI3Ny43YzE4IDUgMzQuNyAxMy40IDQ5LjUgMjQuN2wxNjEuNS01My44YzguNC0yLjggMTIuOS0xMS45IDEwLjEtMjAuMkw0NTQuOSA0Ny4yYy0yLjgtOC40LTExLjktMTIuOS0yMC4yLTEwLjFsLTYxLjEgMjAuNCAzMy4xIDk5LjRMMzQ2IDE3N2wtMzMuMS05OS40LTYxLjYgMjAuNWMtOC40IDIuOC0xMi45IDExLjktMTAuMSAyMC4ybDUzIDE1OS40em0yODEgNDguN0w1NjUgMjk2Yy0yLjgtOC40LTExLjktMTIuOS0yMC4yLTEwLjFsLTIxMy41IDcxLjJjLTE3LjItMjItNDMuNi0zNi40LTczLjUtMzdMMTU4LjQgMjEuOUMxNTQgOC44IDE0MS44IDAgMTI4IDBIMTZDNy4yIDAgMCA3LjIgMCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoODguOWw5Mi4yIDI3Ni43Yy0yNi4xIDIwLjQtNDEuNyA1My42LTM2IDkwLjUgNi4xIDM5LjQgMzcuOSA3Mi4zIDc3LjMgNzkuMiA2MC4yIDEwLjcgMTEyLjMtMzQuOCAxMTMuNC05Mi42bDIxMy4zLTcxLjJjOC4zLTIuOCAxMi45LTExLjggMTAuMS0yMC4yek0yNTYgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFEb2xseUZsYXRiZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG9sbHktZmxhdGJlZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ3NFwiLCBcIk0yMDggMzIwaDM4NGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDQ0OHYxMjhsLTQ4LTMyLTQ4IDMyVjMySDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djI1NmMwIDguOCA3LjIgMTYgMTYgMTZ6bTQxNiA2NEgxMjhWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDE2QzcuMiAwIDAgNy4yIDAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djM2OGMwIDguOCA3LjIgMTYgMTYgMTZoODIuOWMtMS44IDUtMi45IDEwLjQtMi45IDE2IDAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS4yLTExLTIuOS0xNkg0NTFjLTEuOCA1LTIuOSAxMC40LTIuOSAxNiAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEuMi0xMS0yLjktMTZINjI0YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYURvbmF0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb25hdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0YjlcIiwgXCJNMjU2IDQxNmMxMTQuOSAwIDIwOC05My4xIDIwOC0yMDhTMzcwLjkgMCAyNTYgMCA0OCA5My4xIDQ4IDIwOHM5My4xIDIwOCAyMDggMjA4ek0yMzMuOCA5Ny40VjgwLjZjMC05LjIgNy40LTE2LjYgMTYuNi0xNi42aDExLjFjOS4yIDAgMTYuNiA3LjQgMTYuNiAxNi42djE3YzE1LjUuOCAzMC41IDYuMSA0MyAxNS40IDUuNiA0LjEgNi4yIDEyLjMgMS4yIDE3LjFMMzA2IDE0NS42Yy0zLjggMy43LTkuNSAzLjgtMTQgMS01LjQtMy40LTExLjQtNS4xLTE3LjgtNS4xaC0zOC45Yy05IDAtMTYuMyA4LjItMTYuMyAxOC4zIDAgOC4yIDUgMTUuNSAxMi4xIDE3LjZsNjIuMyAxOC43YzI1LjcgNy43IDQzLjcgMzIuNCA0My43IDYwLjEgMCAzNC0yNi40IDYxLjUtNTkuMSA2Mi40djE2LjhjMCA5LjItNy40IDE2LjYtMTYuNiAxNi42aC0xMS4xYy05LjIgMC0xNi42LTcuNC0xNi42LTE2LjZ2LTE3Yy0xNS41LS44LTMwLjUtNi4xLTQzLTE1LjQtNS42LTQuMS02LjItMTIuMy0xLjItMTcuMWwxNi4zLTE1LjVjMy44LTMuNyA5LjUtMy44IDE0LTEgNS40IDMuNCAxMS40IDUuMSAxNy44IDUuMWgzOC45YzkgMCAxNi4zLTguMiAxNi4zLTE4LjMgMC04LjItNS0xNS41LTEyLjEtMTcuNmwtNjIuMy0xOC43Yy0yNS43LTcuNy00My43LTMyLjQtNDMuNy02MC4xLjEtMzQgMjYuNC02MS41IDU5LjEtNjIuNHpNNDgwIDM1MmgtMzIuNWMtMTkuNiAyNi00NC42IDQ3LjctNzMgNjRoNjMuOGM1LjMgMCA5LjYgMy42IDkuNiA4djE2YzAgNC40LTQuMyA4LTkuNiA4SDczLjZjLTUuMyAwLTkuNi0zLjYtOS42LTh2LTE2YzAtNC40IDQuMy04IDkuNi04aDYzLjhjLTI4LjQtMTYuMy01My4zLTM4LTczLTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYURvb3JDbG9zZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG9vci1jbG9zZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MmFcIiwgXCJNNjI0IDQ0OEg1MTJWNTAuOEM1MTIgMjIuNzggNDkwLjQ3IDAgNDY0IDBIMTc1Ljk5Yy0yNi40NyAwLTQ4IDIyLjc4LTQ4IDUwLjhWNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00MTUuOTkgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyYy4wMSAxNy42Ny0xNC4zMiAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFEb29yT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb29yLW9wZW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MmJcIiwgXCJNNjI0IDQ0OGgtODBWMTEzLjQ1QzU0NCA4Ni4xOSA1MjIuNDcgNjQgNDk2IDY0SDM4NHY2NGg5NnYzODRoMTQ0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMzEyLjI0IDEuMDFsLTE5MiA0OS43NEMxMDUuOTkgNTQuNDQgOTYgNjcuNyA5NiA4Mi45MlY0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMzNlYzMy4xOGMwLTIxLjU4LTE5LjU2LTM3LjQxLTM5Ljc2LTMyLjE3ek0yNjQgMjg4Yy0xMy4yNSAwLTI0LTE0LjMzLTI0LTMyczEwLjc1LTMyIDI0LTMyIDI0IDE0LjMzIDI0IDMyLTEwLjc1IDMyLTI0IDMyelwiXVxufTtcbnZhciBmYURvdENpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3QtY2lyY2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTkyXCIsIFwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptODAgMjQ4YzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6XCJdXG59O1xudmFyIGZhRG92ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3ZlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNGJhXCIsIFwiTTI4OCAxNjcuMnYtMjguMWMtMjguMi0zNi4zLTQ3LjEtNzkuMy01NC4xLTEyNS4yLTIuMS0xMy41LTE5LTE4LjgtMjcuOC04LjMtMjEuMSAyNC45LTM3LjcgNTQuMS00OC45IDg2LjUgMzQuMiAzOC4zIDgwIDY0LjYgMTMwLjggNzUuMXpNNDAwIDY0Yy00NC4yIDAtODAgMzUuOS04MCA4MC4xdjU5LjRDMjE1LjYgMTk3LjMgMTI3IDEzMyA4NyA0MS44Yy01LjUtMTIuNS0yMy4yLTEzLjItMjktLjlDNDEuNCA3NiAzMiAxMTUuMiAzMiAxNTYuNmMwIDcwLjggMzQuMSAxMzYuOSA4NS4xIDE4NS45IDEzLjIgMTIuNyAyNi4xIDIzLjIgMzguOSAzMi44bC0xNDMuOSAzNkMxLjQgNDE0LTMuNCA0MjYuNCAyLjYgNDM1LjcgMjAgNDYyLjYgNjMgNTA4LjIgMTU1LjggNTEyYzggLjMgMTYtMi42IDIyLjEtNy45bDY1LjItNTYuMUgzMjBjODguNCAwIDE2MC03MS41IDE2MC0xNTkuOVYxMjhsMzItNjRINDAwem0wIDk2LjFjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFEb3dubG9hZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3dubG9hZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAxOVwiLCBcIk0yMTYgMGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYxNjhoODcuN2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwyNjkuNyAzNzguM2MtNy41IDcuNS0xOS44IDcuNS0yNy4zIDBMOTAuMSAyMjYuMWMtMTIuNi0xMi42LTMuNy0zNC4xIDE0LjEtMzQuMUgxOTJWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTI5NiAzNzZ2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTQ2LjdsNDkgNDljMjAuMSAyMC4xIDUyLjUgMjAuMSA3Mi42IDBsNDktNDlINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIl1cbn07XG52YXIgZmFEcmFmdGluZ0NvbXBhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJhZnRpbmctY29tcGFzcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU2OFwiLCBcIk00NTcuMDEgMzQ0LjQyYy0yNS4wNSAyMC4zMy01Mi42MyAzNy4xOC04Mi41NCA0OS4wNWw1NC4zOCA5NC4xOSA1My45NSAyMy4wNGM5LjgxIDQuMTkgMjAuODktMi4yMSAyMi4xNy0xMi44bDcuMDItNTguMjUtNTQuOTgtOTUuMjN6bTQyLjQ5LTk0LjU2YzQuODYtNy42NyAxLjg5LTE3Ljk5LTYuMDUtMjIuMzlsLTI4LjA3LTE1LjU3Yy03LjQ4LTQuMTUtMTYuNjEtMS40Ni0yMS4yNiA1LjcyQzQwMy4wMSAyODEuMTUgMzMyLjI1IDMyMCAyNTYgMzIwYy0yMy45MyAwLTQ3LjIzLTQuMjUtNjkuNDEtMTEuNTNsNjcuMzYtMTE2LjY4Yy43LjAyIDEuMzQuMjEgMi4wNC4yMXMxLjM1LS4xOSAyLjA0LS4yMWw1MS4wOSA4OC41YzMxLjIzLTguOTYgNTkuNTYtMjUuNzUgODIuNjEtNDguOTJsLTUxLjc5LTg5LjcxQzM0Ny4zOSAxMjguMDMgMzUyIDExMi42MyAzNTIgOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZjMCAxNi42MyA0LjYxIDMyLjAzIDEyLjA1IDQ1LjY2bC02OC4zIDExOC4zMWMtMTIuNTUtMTEuNjEtMjMuOTYtMjQuNTktMzMuNjgtMzktNC43OS03LjEtMTMuOTctOS42Mi0yMS4zOC01LjMzbC0yNy43NSAxNi4wN2MtNy44NSA0LjU0LTEwLjYzIDE0LjktNS42NCAyMi40NyAxNS41NyAyMy42NCAzNC42OSA0NC4yMSA1NS45OCA2Mi4wMkwwIDQzOS42Nmw3LjAyIDU4LjI1YzEuMjggMTAuNTkgMTIuMzYgMTYuOTkgMjIuMTcgMTIuOGw1My45NS0yMy4wNCA3MC44LTEyMi42M0MxODYuMTMgMzc3LjI4IDIyMC42MiAzODQgMjU2IDM4NGM5OS4wNSAwIDE5MC44OC01MS4wMSAyNDMuNS0xMzQuMTR6TTI1NiA2NGMxNy42NyAwIDMyIDE0LjMzIDMyIDMycy0xNC4zMyAzMi0zMiAzMi0zMi0xNC4zMy0zMi0zMiAxNC4zMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFEcmFnb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJhZ29uJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmQ1XCIsIFwiTTE4LjMyIDI1NS43OEwxOTIgMjIzLjk2bC05MS4yOCA2OC42OWMtMTAuMDggMTAuMDgtMi45NCAyNy4zMSAxMS4zMSAyNy4zMWgyMjIuN2MtOS40NC0yNi40LTE0LjczLTU0LjQ3LTE0LjczLTgzLjM4di00Mi4yN2wtMTE5LjczLTg3LjZjLTIzLjgyLTE1Ljg4LTU1LjI5LTE0LjAxLTc3LjA2IDQuNTlMNS44MSAyMjcuNjRjLTEyLjM4IDEwLjMzLTMuNDUgMzAuNDIgMTIuNTEgMjguMTR6bTU1Ni44NyAzNC4xbC0xMDAuNjYtNTAuMzFBNDcuOTkyIDQ3Ljk5MiAwIDAgMSA0NDggMTk2LjY1di0zNi42OWg2NGwyOC4wOSAyMi42M2M2IDYgMTQuMTQgOS4zNyAyMi42MyA5LjM3aDMwLjk3YTMyIDMyIDAgMCAwIDI4LjYyLTE3LjY5bDE0LjMxLTI4LjYyYTMyLjAwNSAzMi4wMDUgMCAwIDAtMy4wMi0zMy41MWwtNzQuNTMtOTkuMzhDNTUzLjAyIDQuNyA1NDMuNTQgMCA1MzMuNDcgMEgyOTYuMDJjLTcuMTMgMC0xMC43IDguNTctNS42NiAxMy42MUwzNTIgNjMuOTYgMjkyLjQyIDg4LjhjLTUuOSAyLjk1LTUuOSAxMS4zNiAwIDE0LjMxTDM1MiAxMjcuOTZ2MTA4LjYyYzAgNzIuMDggMzYuMDMgMTM5LjM5IDk2IDE3OS4zOC0xOTUuNTkgNi44MS0zNDQuNTYgNDEuMDEtNDM0LjEgNjAuOTFDNS43OCA0NzguNjcgMCA0ODUuODggMCA0OTQuMiAwIDUwNCA3Ljk1IDUxMiAxNy43NiA1MTJoNDk5LjA4YzYzLjI5LjAxIDExOS42MS00Ny41NiAxMjIuOTktMTEwLjc2IDIuNTItNDcuMjgtMjIuNzMtOTAuNC02NC42NC0xMTEuMzZ6TTQ4OS4xOCA2Ni4yNWw0NS42NSAxMS40MWMtMi43NSAxMC45MS0xMi40NyAxOC44OS0yNC4xMyAxOC4yNi0xMi45Ni0uNzEtMjUuODUtMTIuNTMtMjEuNTItMjkuNjd6XCJdXG59O1xudmFyIGZhRHJhd1BvbHlnb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJhdy1wb2x5Z29uJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNWVlXCIsIFwiTTM4NCAzNTJjLS4zNSAwLS42Ny4xLTEuMDIuMWwtMzkuMi02NS4zMmM1LjA3LTkuMTcgOC4yMi0xOS41NiA4LjIyLTMwLjc4cy0zLjE0LTIxLjYxLTguMjItMzAuNzhsMzkuMi02NS4zMmMuMzUuMDEuNjcuMSAxLjAyLjEgMzUuMzUgMCA2NC0yOC42NSA2NC02NHMtMjguNjUtNjQtNjQtNjRjLTIzLjYzIDAtNDQuMDQgMTIuOTUtNTUuMTIgMzJIMTE5LjEyQzEwOC4wNCA0NC45NSA4Ny42MyAzMiA2NCAzMiAyOC42NSAzMiAwIDYwLjY1IDAgOTZjMCAyMy42MyAxMi45NSA0NC4wNCAzMiA1NS4xMnYyMDkuNzVDMTIuOTUgMzcxLjk2IDAgMzkyLjM3IDAgNDE2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjQgMjMuNjMgMCA0NC4wNC0xMi45NSA1NS4xMi0zMmgyMDkuNzVjMTEuMDkgMTkuMDUgMzEuNDkgMzIgNTUuMTIgMzIgMzUuMzUgMCA2NC0yOC42NSA2NC02NCAuMDEtMzUuMzUtMjguNjQtNjQtNjMuOTktNjR6bS0yODggOC44OFYxNTEuMTJBNjMuODI1IDYzLjgyNSAwIDAgMCAxMTkuMTIgMTI4aDIwOC4zNmwtMzguNDYgNjQuMWMtLjM1LS4wMS0uNjctLjEtMS4wMi0uMS0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0czI4LjY1IDY0IDY0IDY0Yy4zNSAwIC42Ny0uMSAxLjAyLS4xbDM4LjQ2IDY0LjFIMTE5LjEyQTYzLjc0OCA2My43NDggMCAwIDAgOTYgMzYwLjg4ek0yNzIgMjU2YzAtOC44MiA3LjE4LTE2IDE2LTE2czE2IDcuMTggMTYgMTYtNy4xOCAxNi0xNiAxNi0xNi03LjE4LTE2LTE2ek00MDAgOTZjMCA4LjgyLTcuMTggMTYtMTYgMTZzLTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNiAxNiA3LjE4IDE2IDE2ek02NCA4MGM4LjgyIDAgMTYgNy4xOCAxNiAxNnMtNy4xOCAxNi0xNiAxNi0xNi03LjE4LTE2LTE2IDcuMTgtMTYgMTYtMTZ6TTQ4IDQxNmMwLTguODIgNy4xOC0xNiAxNi0xNnMxNiA3LjE4IDE2IDE2LTcuMTggMTYtMTYgMTYtMTYtNy4xOC0xNi0xNnptMzM2IDE2Yy04LjgyIDAtMTYtNy4xOC0xNi0xNnM3LjE4LTE2IDE2LTE2IDE2IDcuMTggMTYgMTYtNy4xOCAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFEcnVtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RydW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjlcIiwgXCJNNDMxLjM0IDEyMi4wNWw3My41My00Ny40MmExNiAxNiAwIDAgMCA0LjQ0LTIyLjE5bC04Ljg3LTEzLjMxYTE2IDE2IDAgMCAwLTIyLjE5LTQuNDRsLTExMC4wNiA3MUMzMTguNDMgOTYuOTEgMjcxLjIyIDk2IDI1NiA5NiAyMTkuNTUgOTYgMCAxMDAuNTUgMCAyMDguMTV2MTYwLjIzYzAgMzAuMjcgMjcuNSA1Ny42OCA3MiA3Ny44NnYtMTAxLjlhMjQgMjQgMCAxIDEgNDggMHYxMTguOTNjMzMuMDUgOS4xMSA3MS4wNyAxNS4wNiAxMTIgMTYuNzNWMzc2LjM5YTI0IDI0IDAgMSAxIDQ4IDBWNDgwYzQwLjkzLTEuNjcgNzguOTUtNy42MiAxMTItMTYuNzNWMzQ0LjM0YTI0IDI0IDAgMSAxIDQ4IDB2MTAxLjljNDQuNS0yMC4xOCA3Mi00Ny41OSA3Mi03Ny44NlYyMDguMTVjMC00My4zMi0zNS43Ni02OS43Ni04MC42Ni04Ni4xek0yNTYgMjcyLjI0Yy0xMTQuODggMC0yMDgtMjguNjktMjA4LTY0LjA5czkzLjEyLTY0LjA4IDIwOC02NC4wOGMxNy4xNSAwIDMzLjczLjcxIDQ5LjY4IDEuOTFsLTcyLjgxIDQ3YTE2IDE2IDAgMCAwLTQuNDMgMjIuMTlsOC44NyAxMy4zMWExNiAxNiAwIDAgMCAyMi4xOSA0LjQ0bDExOC42NC03Ni41MkM0MzAuMDkgMTY4IDQ2NCAxODYuODQgNDY0IDIwOC4xNWMwIDM1LjQtOTMuMTMgNjQuMDktMjA4IDY0LjA5elwiXVxufTtcbnZhciBmYURydW1TdGVlbHBhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkcnVtLXN0ZWVscGFuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTZhXCIsIFwiTTI4OCAzMkMxMjguOTQgMzIgMCA4OS4zMSAwIDE2MHYxOTJjMCA3MC42OSAxMjguOTQgMTI4IDI4OCAxMjhzMjg4LTU3LjMxIDI4OC0xMjhWMTYwYzAtNzAuNjktMTI4Ljk0LTEyOC0yODgtMTI4em0tODIuOTkgMTU4LjM2Yy00LjQ1IDE2LjYxLTE0LjU0IDMwLjU3LTI4LjMxIDQwLjQ4QzEwMC4yMyAyMTcuNDYgNDggMTkwLjc4IDQ4IDE2MGMwLTMwLjE2IDUwLjExLTU2LjM5IDEyNC4wNC03MC4wM2wyNS42IDQ0LjM0YzkuODYgMTcuMDkgMTIuNDggMzYuOTkgNy4zNyA1Ni4wNXpNMjg4IDI0MGMtMjEuMDggMC00MS40MS0xLTYwLjg5LTIuNyA4LjA2LTI2LjEzIDMyLjE1LTQ1LjMgNjAuODktNDUuM3M1Mi44MyAxOS4xNyA2MC44OSA0NS4zQzMyOS40MSAyMzkgMzA5LjA4IDI0MCAyODggMjQwem02NC0xNDRjMCAzNS4yOS0yOC43MSA2NC02NCA2NHMtNjQtMjguNzEtNjQtNjRWODIuOTZjMjAuNC0xLjg4IDQxLjgtMi45NiA2NC0yLjk2czQzLjYgMS4wOCA2NCAyLjk2Vjk2em00Ni45MyAxMzQuOWMtMTMuODEtOS45MS0yMy45NC0yMy45LTI4LjQtNDAuNTQtNS4xMS0xOS4wNi0yLjQ5LTM4Ljk2IDcuMzgtNTYuMDRsMjUuNjUtNDQuNDJDNDc3LjcyIDEwMy41IDUyOCAxMjkuNzkgNTI4IDE2MGMwIDMwLjgzLTUyLjQgNTcuNTQtMTI5LjA3IDcwLjl6XCJdXG59O1xudmFyIGZhRHJ1bXN0aWNrQml0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkcnVtc3RpY2stYml0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZkN1wiLCBcIk00NjIuOCA0OS41N2ExNjkuNDQgMTY5LjQ0IDAgMCAwLTIzOS41IDBDMTg3LjgyIDg1IDE2MC4xMyAxMjggMTYwLjEzIDE5MnY4NS44M2wtNDAuNjIgNDAuNTljLTkuNyA5LjY5LTI0IDExLjA3LTM2Ljc4IDZhNjAuMzMgNjAuMzMgMCAwIDAtNjUgOTguNzJDMzMgNDM4LjM5IDU0LjI0IDQ0Mi43IDczLjg1IDQzOC4yMWMtNC41IDE5LjYtLjE4IDQwLjgzIDE1LjEgNTYuMWE2MC4zNSA2MC4zNSAwIDAgMCA5OC44LTY1Yy01LjA5LTEyLjczLTMuNzItMjcgNi0zNi43NUwyMzQuMzYgMzUyaDg1Ljg5YTE4Ny44NyAxODcuODcgMCAwIDAgNjEuODktMTBjLTM5LjY0LTQzLjg5LTM5LjgzLTExMC4yMyAxLjA1LTE1MS4wNyAzNC4zOC0zNC4zNiA4Ni43Ni0zOS40NiAxMjguNzQtMTYuOCAxLjMtNDQuOTYtMTQuODEtOTAuMjgtNDkuMTMtMTI0LjU2elwiXVxufTtcbnZhciBmYUR1bWJiZWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2R1bWJiZWxsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDRiXCIsIFwiTTEwNCA5Nkg1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTA0SDhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMjR2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHptNTI4IDEyOGgtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0aC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjcyYzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI4OGgyNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHpNNDU2IDMyaC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTY4SDI1NlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyODhoMTI4djE2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFEdW1wc3RlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkdW1wc3RlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc5M1wiLCBcIk01NjAgMTYwYzEwLjQgMCAxOC05LjggMTUuNS0xOS45bC0yNC05NkM1NDkuNyAzNyA1NDMuMyAzMiA1MzYgMzJoLTk4LjlsMjUuNiAxMjhINTYwek0yNzIgMzJIMTcxLjVsLTI1LjYgMTI4SDI3MlYzMnptMTMyLjUgMEgzMDR2MTI4aDEyNi4xTDQwNC41IDMyek0xNiAxNjBoOTcuM2wyNS42LTEyOEg0MGMtNy4zIDAtMTMuNyA1LTE1LjUgMTIuMWwtMjQgOTZDLTIgMTUwLjIgNS42IDE2MCAxNiAxNjB6bTU0NCA2NGgtMjBsNC0zMkgzMmw0IDMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDI4bDIwIDE2MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzMjB2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZsMjAtMTYwaDI4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUR1bXBzdGVyRmlyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkdW1wc3Rlci1maXJlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzk0XCIsIFwiTTQxOC43IDEwNC4xbC4yLS4yLTE0LjQtNzJIMzA0djEyOGg2MC44YzE2LjItMTkuMyAzNC4yLTM4LjIgNTMuOS01NS44ek0yNzIgMzJIMTcxLjVsLTI1LjYgMTI4SDI3MlYzMnptMTg5LjMgNzIuMWMxOC4yIDE2LjMgMzUuNSAzMy43IDUxLjEgNTEuNSA1LjctNS42IDExLjQtMTEuMSAxNy4zLTE2LjNsMjEuMy0xOSAyMS4zIDE5YzEuMS45IDIuMSAyLjEgMy4xIDMuMS0uMS0uOC4yLTEuNSAwLTIuM2wtMjQtOTZDNTQ5LjcgMzcgNTQzLjMgMzIgNTM2IDMyaC05OC45bDEyLjMgNjEuNSAxMS45IDEwLjZ6TTE2IDE2MGg5Ny4zbDI1LjYtMTI4SDQwYy03LjMgMC0xMy43IDUtMTUuNSAxMi4xbC0yNCA5NkMtMiAxNTAuMiA1LjYgMTYwIDE2IDE2MHptMzI0LjYgMzJIMzJsNCAzMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgyOGwyMCAxNjB2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMjA4LjhjLTMwLjItMzMuNy00OC44LTc3LjktNDguOC0xMjYuNCAwLTM1LjkgMTkuOS04Mi45IDUyLjYtMTI5LjZ6bTIxMC41LTI4LjhjLTE0LjkgMTMuMy0yOC4zIDI3LjItNDAuMiA0MS4yLTE5LjUtMjUuOC00My42LTUyLTcxLTc2LjQtNzAuMiA2Mi43LTEyMCAxNDQuMy0xMjAgMTkzLjYgMCA4Ny41IDcxLjYgMTU4LjQgMTYwIDE1OC40czE2MC03MC45IDE2MC0xNTguNGMuMS0zNi42LTM3LTExMi4yLTg4LjgtMTU4LjR6bS0xOC42IDIyOS40Yy0xNC43IDEwLjctMzIuOSAxNy01Mi41IDE3LTQ5IDAtODguOS0zMy41LTg4LjktODggMC0yNy4xIDE2LjUtNTEgNDkuNC05MS45IDQuNyA1LjYgNjcuMSA4OC4xIDY3LjEgODguMWwzOS44LTQ3YzIuOCA0LjggNS40IDkuNSA3LjcgMTQgMTguNiAzNi43IDEwLjggODMuNi0yMi42IDEwNy44elwiXVxufTtcbnZhciBmYUR1bmdlb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHVuZ2VvbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZkOVwiLCBcIk0xMjguNzMgMTk1LjMybC04Mi44MS01MS43NmMtOC4wNC01LjAyLTE4Ljk5LTIuMTctMjIuOTMgNi40NUEyNTQuMTkgMjU0LjE5IDAgMCAwIC41NCAyMzkuMjhDLS4wNSAyNDguMzcgNy41OSAyNTYgMTYuNjkgMjU2aDk3LjEzYzcuOTYgMCAxNC4wOC02LjI1IDE1LjAxLTE0LjE2IDEuMDktOS4zMyAzLjI0LTE4LjMzIDYuMjQtMjYuOTQgMi41Ni03LjM0LjI1LTE1LjQ2LTYuMzQtMTkuNTh6TTMxOS4wMyA4QzI5OC44NiAyLjgyIDI3Ny43NyAwIDI1NiAwcy00Mi44NiAyLjgyLTYzLjAzIDhjLTkuMTcgMi4zNS0xMy45MSAxMi42LTEwLjM5IDIxLjM5bDM3LjQ3IDEwNC4wM0ExNi4wMDMgMTYuMDAzIDAgMCAwIDIzNS4xIDE0NGg0MS44YzYuNzUgMCAxMi43Ny00LjIzIDE1LjA1LTEwLjU4bDM3LjQ3LTEwNC4wM2MzLjUyLTguNzktMS4yMi0xOS4wMy0xMC4zOS0yMS4zOXpNMTEyIDI4OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0wIDEyOEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em03Ny4zMS0yODMuNjdsLTM2LjMyLTkwLjhjLTMuNTMtOC44My0xNC4xMy0xMi45OS0yMi40Mi04LjMxYTI1Ny4zMDggMjU3LjMwOCAwIDAgMC03MS42MSA1OS44OWMtNi4wNiA3LjMyLTMuODUgMTguNDggNC4yMiAyMy41Mmw4Mi45MyA1MS44M2M2LjUxIDQuMDcgMTQuNjYgMi42MiAyMC4xMS0yLjc5IDUuMTgtNS4xNSAxMC43OS05Ljg1IDE2Ljc5LTE0LjA1IDYuMjgtNC40MSA5LjE1LTEyLjE3IDYuMy0xOS4yOXpNMzk4LjE4IDI1Nmg5Ny4xM2M5LjEgMCAxNi43NC03LjYzIDE2LjE1LTE2LjcyYTI1NC4xMzUgMjU0LjEzNSAwIDAgMC0yMi40NS04OS4yN2MtMy45NC04LjYyLTE0Ljg5LTExLjQ3LTIyLjkzLTYuNDVsLTgyLjgxIDUxLjc2Yy02LjU5IDQuMTItOC45IDEyLjI0LTYuMzQgMTkuNTggMy4wMSA4LjYxIDUuMTUgMTcuNjIgNi4yNCAyNi45NC45MyA3LjkxIDcuMDUgMTQuMTYgMTUuMDEgMTQuMTZ6bTU0Ljg1LTE2Mi44OWEyNTcuMzA4IDI1Ny4zMDggMCAwIDAtNzEuNjEtNTkuODljLTguMjgtNC42OC0xOC44OC0uNTItMjIuNDIgOC4zMWwtMzYuMzIgOTAuOGMtMi44NSA3LjEyLjAyIDE0Ljg4IDYuMyAxOS4yOCA2IDQuMiAxMS42MSA4LjkgMTYuNzkgMTQuMDUgNS40NCA1LjQxIDEzLjYgNi44NiAyMC4xMSAyLjc5bDgyLjkzLTUxLjgzYzguMDctNS4wMyAxMC4yOS0xNi4xOSA0LjIyLTIzLjUxek00OTYgMjg4aC05NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0wIDEyOGgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpNMjQwIDE3Ny42MlY0NzJjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LThWMTc3LjYyYy01LjIzLS44OS0xMC41Mi0xLjYyLTE2LTEuNjJzLTEwLjc3LjczLTE2IDEuNjJ6bS02NCA0MS41MVY0NzJjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LThWMTg5LjM2Yy0xMi43OCA3LjQ1LTIzLjg0IDE3LjQ3LTMyIDI5Ljc3em0xMjgtMjkuNzdWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjIxOS4xM2MtOC4xNi0xMi4zLTE5LjIyLTIyLjMyLTMyLTI5Ljc3elwiXVxufTtcbnZhciBmYUVkaXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWRpdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA0NFwiLCBcIk00MDIuNiA4My4ybDkwLjIgOTAuMmMzLjggMy44IDMuOCAxMCAwIDEzLjhMMjc0LjQgNDA1LjZsLTkyLjggMTAuM2MtMTIuNCAxLjQtMjIuOS05LjEtMjEuNS0yMS41bDEwLjMtOTIuOEwzODguOCA4My4yYzMuOC0zLjggMTAtMy44IDEzLjggMHptMTYyLTIyLjlsLTQ4LjgtNDguOGMtMTUuMi0xNS4yLTM5LjktMTUuMi01NS4yIDBsLTM1LjQgMzUuNGMtMy44IDMuOC0zLjggMTAgMCAxMy44bDkwLjIgOTAuMmMzLjggMy44IDEwIDMuOCAxMy44IDBsMzUuNC0zNS40YzE1LjItMTUuMyAxNS4yLTQwIDAtNTUuMnpNMzg0IDM0Ni4yVjQ0OEg2NFYxMjhoMjI5LjhjMy4yIDAgNi4yLTEuMyA4LjUtMy41bDQwLTQwYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDYuMmMwLTEwLjctMTIuOS0xNi0yMC41LTguNWwtNDAgNDBjLTIuMiAyLjMtMy41IDUuMy0zLjUgOC41elwiXVxufTtcbnZhciBmYUVnZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlZ2cnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3ZmJcIiwgXCJNMTkyIDBDODYgMCAwIDIxNCAwIDMyMHM4NiAxOTIgMTkyIDE5MiAxOTItODYgMTkyLTE5MlMyOTggMCAxOTIgMHpcIl1cbn07XG52YXIgZmFFamVjdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlamVjdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA1MlwiLCBcIk00NDggMzg0djY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMkgzMmMtMTcuNjczIDAtMzItMTQuMzI3LTMyLTMydi02NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoMzg0YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnpNNDguMDUzIDMyMGgzNTEuODg2YzQxLjY1MSAwIDYzLjU4MS00OS42NzQgMzUuMzgzLTgwLjQzNUwyNTkuMzgzIDQ3LjU1OGMtMTkuMDE0LTIwLjc0My01MS43NTEtMjAuNzQ0LTcwLjc2NyAwTDEyLjY3IDIzOS41NjVDLTE1LjQ3NSAyNzAuMjY4IDYuMzI0IDMyMCA0OC4wNTMgMzIwelwiXVxufTtcbnZhciBmYUVsbGlwc2lzSCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbGxpcHNpcy1oJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTQxXCIsIFwiTTMyOCAyNTZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyem0xMDQtNzJjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0tMzUyIDBjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyelwiXVxufTtcbnZhciBmYUVsbGlwc2lzViA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbGxpcHNpcy12JyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmMTQyXCIsIFwiTTk2IDE4NGMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3Mi03Mi0zMi4yLTcyLTcyIDMyLjItNzIgNzItNzJ6TTI0IDgwYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzJTMTM1LjggOCA5NiA4IDI0IDQwLjIgMjQgODB6bTAgMzUyYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03Mi03MiAzMi4yLTcyIDcyelwiXVxufTtcbnZhciBmYUVudmVsb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VudmVsb3BlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGUwXCIsIFwiTTUwMi4zIDE5MC44YzMuOS0zLjEgOS43LS4yIDkuNyA0LjdWNDAwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTUuNmMwLTUgNS43LTcuOCA5LjctNC43IDIyLjQgMTcuNCA1Mi4xIDM5LjUgMTU0LjEgMTEzLjYgMjEuMSAxNS40IDU2LjcgNDcuOCA5Mi4yIDQ3LjYgMzUuNy4zIDcyLTMyLjggOTIuMy00Ny42IDEwMi03NC4xIDEzMS42LTk2LjMgMTU0LTExMy43ek0yNTYgMzIwYzIzLjIuNCA1Ni42LTI5LjIgNzMuNC00MS40IDEzMi43LTk2LjMgMTQyLjgtMTA0LjcgMTczLjQtMTI4LjcgNS44LTQuNSA5LjItMTEuNSA5LjItMTguOXYtMTljMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MTljMCA3LjQgMy40IDE0LjMgOS4yIDE4LjkgMzAuNiAyMy45IDQwLjcgMzIuNCAxNzMuNCAxMjguNyAxNi44IDEyLjIgNTAuMiA0MS44IDczLjQgNDEuNHpcIl1cbn07XG52YXIgZmFFbnZlbG9wZU9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZW52ZWxvcGUtb3BlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJiNlwiLCBcIk01MTIgNDY0YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMjAwLjcyNGE0OCA0OCAwIDAgMSAxOC4zODctMzcuNzc2YzI0LjkxMy0xOS41MjkgNDUuNTAxLTM1LjM2NSAxNjQuMi0xMjEuNTExQzE5OS40MTIgMjkuMTcgMjMyLjc5Ny0uMzQ3IDI1NiAuMDAzYzIzLjE5OC0uMzU0IDU2LjU5NiAyOS4xNzIgNzMuNDEzIDQxLjQzMyAxMTguNjg3IDg2LjEzNyAxMzkuMzAzIDEwMS45OTUgMTY0LjIgMTIxLjUxMkE0OCA0OCAwIDAgMSA1MTIgMjAwLjcyNFY0NjR6bS02NS42NjYtMTk2LjYwNWMtMi41NjMtMy43MjgtNy43LTQuNTk1LTExLjMzOS0xLjkwNy0yMi44NDUgMTYuODczLTU1LjQ2MiA0MC43MDUtMTA1LjU4MiA3Ny4wNzktMTYuODI1IDEyLjI2Ni01MC4yMSA0MS43ODEtNzMuNDEzIDQxLjQzLTIzLjIxMS4zNDQtNTYuNTU5LTI5LjE0My03My40MTMtNDEuNDMtNTAuMTE0LTM2LjM3LTgyLjczNC02MC4yMDQtMTA1LjU4Mi03Ny4wNzktMy42MzktMi42ODgtOC43NzYtMS44MjEtMTEuMzM5IDEuOTA3bC05LjA3MiAxMy4xOTZhNy45OTggNy45OTggMCAwIDAgMS44MzkgMTAuOTY3YzIyLjg4NyAxNi44OTkgNTUuNDU0IDQwLjY5IDEwNS4zMDMgNzYuODY4IDIwLjI3NCAxNC43ODEgNTYuNTI0IDQ3LjgxMyA5Mi4yNjQgNDcuNTczIDM1LjcyNC4yNDIgNzEuOTYxLTMyLjc3MSA5Mi4yNjMtNDcuNTczIDQ5Ljg1LTM2LjE3OSA4Mi40MTgtNTkuOTcgMTA1LjMwMy03Ni44NjhhNy45OTggNy45OTggMCAwIDAgMS44MzktMTAuOTY3bC05LjA3MS0xMy4xOTZ6XCJdXG59O1xudmFyIGZhRW52ZWxvcGVPcGVuVGV4dCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbnZlbG9wZS1vcGVuLXRleHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NThcIiwgXCJNMTc2IDIxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bS0xNiA4MGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZ6bTk2IDEyMS4xM2MtMTYuNDIgMC0zMi44NC01LjA2LTQ2Ljg2LTE1LjE5TDAgMjUwLjg2VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI1MC44NkwzMDIuODYgNDAxLjk0Yy0xNC4wMiAxMC4xMi0zMC40NCAxNS4xOS00Ni44NiAxNS4xOXptMjM3LjYxLTI1NC4xOGMtOC44NS02Ljk0LTE3LjI0LTEzLjQ3LTI5LjYxLTIyLjgxVjk2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTc3LjU1Yy0zLjA0LTIuMi01Ljg3LTQuMjYtOS4wNC02LjU2QzMxMi42IDI5LjE3IDI3OS4yLS4zNSAyNTYgMGMtMjMuMi0uMzUtNTYuNTkgMjkuMTctNzMuNDEgNDEuNDQtMy4xNyAyLjMtNiA0LjM2LTkuMDQgNi41Nkg5NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0NC4xNGMtMTIuMzcgOS4zMy0yMC43NiAxNS44Ny0yOS42MSAyMi44MUE0Ny45OTUgNDcuOTk1IDAgMCAwIDAgMjAwLjcydjEwLjY1bDk2IDY5LjM1Vjk2aDMyMHYxODQuNzJsOTYtNjkuMzV2LTEwLjY1YzAtMTQuNzQtNi43OC0yOC42Ny0xOC4zOS0zNy43N3pcIl1cbn07XG52YXIgZmFFbnZlbG9wZVNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbnZlbG9wZS1zcXVhcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxOTlcIiwgXCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0xNzguMTE3IDI2Mi4xMDRDODcuNDI5IDE5Ni4yODcgODguMzUzIDE5Ni4xMjEgNjQgMTc3LjE2N1YxNTJjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDI3MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjUuMTY3Yy0yNC4zNzEgMTguOTY5LTIzLjQzNCAxOS4xMjQtMTE0LjExNyA4NC45MzgtMTAuNSA3LjY1NS0zMS4zOTIgMjYuMTItNDUuODgzIDI1Ljg5NC0xNC41MDMuMjE4LTM1LjM2Ny0xOC4yMjctNDUuODgzLTI1Ljg5NXpNMzg0IDIxNy43NzVWMzYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEg4OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjIxNy43NzVjMTMuOTU4IDEwLjc5NCAzMy4zMjkgMjUuMjM2IDk1LjMwMyA3MC4yMTQgMTQuMTYyIDEwLjM0MSAzNy45NzUgMzIuMTQ1IDY0LjY5NCAzMi4wMSAyNi44ODcuMTM0IDUxLjAzNy0yMi4wNDEgNjQuNzItMzIuMDI1IDYxLjk1OC00NC45NjUgODEuMzI1LTU5LjQwNiA5NS4yODMtNzAuMTk5elwiXVxufTtcbnZhciBmYUVxdWFscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlcXVhbHMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MmNcIiwgXCJNNDE2IDMwNEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wLTE5MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUVyYXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlcmFzZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMmRcIiwgXCJNNDk3Ljk0MSAyNzMuOTQxYzE4Ljc0NS0xOC43NDUgMTguNzQ1LTQ5LjEzNyAwLTY3Ljg4MmwtMTYwLTE2MGMtMTguNzQ1LTE4Ljc0NS00OS4xMzYtMTguNzQ2LTY3Ljg4MyAwbC0yNTYgMjU2Yy0xOC43NDUgMTguNzQ1LTE4Ljc0NSA0OS4xMzcgMCA2Ny44ODJsOTYgOTZBNDguMDA0IDQ4LjAwNCAwIDAgMCAxNDQgNDgwaDM1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDM1NS44ODNsMTQyLjA1OC0xNDIuMDU5em0tMzAyLjYyNy02Mi42MjdsMTM3LjM3MyAxMzcuMzczTDI2NS4zNzMgNDE2SDE1MC42MjhsLTgwLTgwIDEyNC42ODYtMTI0LjY4NnpcIl1cbn07XG52YXIgZmFFdGhlcm5ldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdldGhlcm5ldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc5NlwiLCBcIk00OTYgMTkyaC00OHYtNDhjMC04LjgtNy4yLTE2LTE2LTE2aC00OFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ2NDhIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djIyNGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzIwaDMydjEyOGg2NFYzMjBoMzJ2MTI4aDY0VjMyMGgzMnYxMjhoNjRWMzIwaDMydjEyOGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFFdXJvU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdldXJvLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYxNTNcIiwgXCJNMzEwLjcwNiA0MTMuNzY1Yy0xLjMxNC02LjYzLTcuODM1LTEwLjg3Mi0xNC40MjQtOS4zNjktMTAuNjkyIDIuNDM5LTI3LjQyMiA1LjQxMy00NS40MjYgNS40MTMtNTYuNzYzIDAtMTAxLjkyOS0zNC43OS0xMjEuNDYxLTg1LjQ0OWgxMTMuNjg5YTEyIDEyIDAgMCAwIDExLjcwOC05LjM2OWw2LjM3My0yOC4zNmMxLjY4Ni03LjUwMi00LjAxOS0xNC42MzEtMTEuNzA4LTE0LjYzMUgxMTUuMjJjLTEuMjEtMTQuMzI4LTEuNDE0LTI4LjI4Ny4xMzctNDIuMjQ1SDI2MS45NWExMiAxMiAwIDAgMCAxMS43MjMtOS40MzRsNi41MTItMjkuNzU1YzEuNjM4LTcuNDg0LTQuMDYxLTE0LjU2Ni0xMS43MjMtMTQuNTY2SDEzMC4xODRjMjAuNjMzLTQ0Ljk5MSA2Mi42OS03NS4wMyAxMTcuNjE5LTc1LjAzIDE0LjQ4NiAwIDI4LjU2NCAyLjI1IDM3Ljg1MSA0LjE0NSA2LjIxNiAxLjI2OCAxMi4zNDctMi40OTggMTQuMDAyLTguNjIzbDExLjk5MS00NC4zNjhjMS44MjItNi43NDEtMi40NjUtMTMuNjE2LTkuMzI2LTE0LjkxN0MyOTAuMjE3IDM0LjkxMiAyNzAuNzEgMzIgMjQ5LjYzNSAzMiAxNTIuNDUxIDMyIDc0LjAzIDkyLjI1MiA0NS4wNzUgMTc2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI5Ljc1NWMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIxLjU2OWMtMS4wMDkgMTMuNjA3LTEuMTgxIDI5LjI4Ny0uMTgxIDQyLjI0NUgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOC4zNmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwLjExNEM2Ny4xMzkgNDE0LjY5MiAxNDUuMjY0IDQ4MCAyNDkuNjM1IDQ4MGMyNi4zMDEgMCA0OC41NjItNC41NDQgNjEuMTAxLTcuNzg4IDYuMTY3LTEuNTk1IDEwLjAyNy03LjcwOCA4Ljc4OC0xMy45NTdsLTguODE4LTQ0LjQ5elwiXVxufTtcbnZhciBmYUV4Y2hhbmdlQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V4Y2hhbmdlLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjM2MlwiLCBcIk0wIDE2OHYtMTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDM2MFY4MGMwLTIxLjM2NyAyNS44OTktMzIuMDQyIDQwLjk3MS0xNi45NzFsODAgODBjOS4zNzIgOS4zNzMgOS4zNzIgMjQuNTY5IDAgMzMuOTQxbC04MCA4MEM0MDkuOTU2IDI3MS45ODIgMzg0IDI2MS40NTYgMzg0IDI0MHYtNDhIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHptNDg4IDE1MkgxMjh2LTQ4YzAtMjEuMzE0LTI1Ljg2Mi0zMi4wOC00MC45NzEtMTYuOTcxbC04MCA4MGMtOS4zNzIgOS4zNzMtOS4zNzIgMjQuNTY5IDAgMzMuOTQxbDgwIDgwQzEwMi4wNTcgNDYzLjk5NyAxMjggNDUzLjQzNyAxMjggNDMydi00OGgzNjBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXhjbGFtYXRpb24nLFxuICBpY29uOiBbMTkyLCA1MTIsIFtdLCBcImYxMmFcIiwgXCJNMTc2IDQzMmMwIDQ0LjExMi0zNS44ODggODAtODAgODBzLTgwLTM1Ljg4OC04MC04MCAzNS44ODgtODAgODAtODAgODAgMzUuODg4IDgwIDgwek0yNS4yNiAyNS4xOTlsMTMuNiAyNzJDMzkuNDk5IDMwOS45NzIgNTAuMDQxIDMyMCA2Mi44MyAzMjBoNjYuMzRjMTIuNzg5IDAgMjMuMzMxLTEwLjAyOCAyMy45Ny0yMi44MDFsMTMuNi0yNzJDMTY3LjQyNSAxMS40OSAxNTYuNDk2IDAgMTQyLjc3IDBINDkuMjNDMzUuNTA0IDAgMjQuNTc1IDExLjQ5IDI1LjI2IDI1LjE5OXpcIl1cbn07XG52YXIgZmFFeGNsYW1hdGlvbkNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleGNsYW1hdGlvbi1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNmFcIiwgXCJNNTA0IDI1NmMwIDEzNi45OTctMTExLjA0MyAyNDgtMjQ4IDI0OFM4IDM5Mi45OTcgOCAyNTZDOCAxMTkuMDgzIDExOS4wNDMgOCAyNTYgOHMyNDggMTExLjA4MyAyNDggMjQ4em0tMjQ4IDUwYy0yNS40MDUgMC00NiAyMC41OTUtNDYgNDZzMjAuNTk1IDQ2IDQ2IDQ2IDQ2LTIwLjU5NSA0Ni00Ni0yMC41OTUtNDYtNDYtNDZ6bS00My42NzMtMTY1LjM0Nmw3LjQxOCAxMzZjLjM0NyA2LjM2NCA1LjYwOSAxMS4zNDYgMTEuOTgyIDExLjM0Nmg0OC41NDZjNi4zNzMgMCAxMS42MzUtNC45ODIgMTEuOTgyLTExLjM0Nmw3LjQxOC0xMzZjLjM3NS02Ljg3NC01LjA5OC0xMi42NTQtMTEuOTgyLTEyLjY1NGgtNjMuMzgzYy02Ljg4NCAwLTEyLjM1NiA1Ljc4LTExLjk4MSAxMi42NTR6XCJdXG59O1xudmFyIGZhRXhjbGFtYXRpb25UcmlhbmdsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleGNsYW1hdGlvbi10cmlhbmdsZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3MVwiLCBcIk01NjkuNTE3IDQ0MC4wMTNDNTg3Ljk3NSA0NzIuMDA3IDU2NC44MDYgNTEyIDUyNy45NCA1MTJINDguMDU0Yy0zNi45MzcgMC01OS45OTktNDAuMDU1LTQxLjU3Ny03MS45ODdMMjQ2LjQyMyAyMy45ODVjMTguNDY3LTMyLjAwOSA2NC43Mi0zMS45NTEgODMuMTU0IDBsMjM5Ljk0IDQxNi4wMjh6TTI4OCAzNTRjLTI1LjQwNSAwLTQ2IDIwLjU5NS00NiA0NnMyMC41OTUgNDYgNDYgNDYgNDYtMjAuNTk1IDQ2LTQ2LTIwLjU5NS00Ni00Ni00NnptLTQzLjY3My0xNjUuMzQ2bDcuNDE4IDEzNmMuMzQ3IDYuMzY0IDUuNjA5IDExLjM0NiAxMS45ODIgMTEuMzQ2aDQ4LjU0NmM2LjM3MyAwIDExLjYzNS00Ljk4MiAxMS45ODItMTEuMzQ2bDcuNDE4LTEzNmMuMzc1LTYuODc0LTUuMDk4LTEyLjY1NC0xMS45ODItMTIuNjU0aC02My4zODNjLTYuODg0IDAtMTIuMzU2IDUuNzgtMTEuOTgxIDEyLjY1NHpcIl1cbn07XG52YXIgZmFFeHBhbmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXhwYW5kJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDY1XCIsIFwiTTAgMTgwVjU2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDEyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDY0djg0YzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyek0yODggNDR2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDg0djg0YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzAwYy02LjYgMC0xMiA1LjQtMTIgMTJ6bTE0OCAyNzZoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2ODRoLTg0Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDEyNGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzMzJjMC02LjYtNS40LTEyLTEyLTEyek0xNjAgNDY4di00MGMwLTYuNi01LjQtMTItMTItMTJINjR2LTg0YzAtNi42LTUuNC0xMi0xMi0xMkgxMmMtNi42IDAtMTIgNS40LTEyIDEydjEyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMjRjNi42IDAgMTItNS40IDEyLTEyelwiXVxufTtcbnZhciBmYUV4cGFuZEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleHBhbmQtYWx0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNDI0XCIsIFwiTTIxMi42ODYgMzE1LjMxNEwxMjAgNDA4bDMyLjkyMiAzMS4wMjljMTUuMTIgMTUuMTIgNC40MTIgNDAuOTcxLTE2Ljk3IDQwLjk3MWgtMTEyQzEwLjY5NyA0ODAgMCA0NjkuMjU1IDAgNDU2VjM0NGMwLTIxLjM4MiAyNS44MDMtMzIuMDkgNDAuOTIyLTE2Ljk3MUw3MiAzNjBsOTIuNjg2LTkyLjY4NmM2LjI0OC02LjI0OCAxNi4zNzktNi4yNDggMjIuNjI3IDBsMjUuMzczIDI1LjM3M2M2LjI0OSA2LjI0OCA2LjI0OSAxNi4zNzggMCAyMi42Mjd6bTIyLjYyOC0xMTguNjI4TDMyOCAxMDRsLTMyLjkyMi0zMS4wMjlDMjc5Ljk1OCA1Ny44NTEgMjkwLjY2NiAzMiAzMTIuMDQ4IDMyaDExMkM0MzcuMzAzIDMyIDQ0OCA0Mi43NDUgNDQ4IDU2djExMmMwIDIxLjM4Mi0yNS44MDMgMzIuMDktNDAuOTIyIDE2Ljk3MUwzNzYgMTUybC05Mi42ODYgOTIuNjg2Yy02LjI0OCA2LjI0OC0xNi4zNzkgNi4yNDgtMjIuNjI3IDBsLTI1LjM3My0yNS4zNzNjLTYuMjQ5LTYuMjQ4LTYuMjQ5LTE2LjM3OCAwLTIyLjYyN3pcIl1cbn07XG52YXIgZmFFeHBhbmRBcnJvd3NBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXhwYW5kLWFycm93cy1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYzMWVcIiwgXCJNNDQ4IDM0NHYxMTJhMjMuOTQgMjMuOTQgMCAwIDEtMjQgMjRIMzEyYy0yMS4zOSAwLTMyLjA5LTI1LjktMTctNDFsMzYuMi0zNi4yTDIyNCAyOTUuNiAxMTYuNzcgNDAyLjkgMTUzIDQzOWMxNS4wOSAxNS4xIDQuMzkgNDEtMTcgNDFIMjRhMjMuOTQgMjMuOTQgMCAwIDEtMjQtMjRWMzQ0YzAtMjEuNCAyNS44OS0zMi4xIDQxLTE3bDM2LjE5IDM2LjJMMTg0LjQ2IDI1NiA3Ny4xOCAxNDguNyA0MSAxODVjLTE1LjEgMTUuMS00MSA0LjQtNDEtMTdWNTZhMjMuOTQgMjMuOTQgMCAwIDEgMjQtMjRoMTEyYzIxLjM5IDAgMzIuMDkgMjUuOSAxNyA0MWwtMzYuMiAzNi4yTDIyNCAyMTYuNGwxMDcuMjMtMTA3LjNMMjk1IDczYy0xNS4wOS0xNS4xLTQuMzktNDEgMTctNDFoMTEyYTIzLjk0IDIzLjk0IDAgMCAxIDI0IDI0djExMmMwIDIxLjQtMjUuODkgMzIuMS00MSAxN2wtMzYuMTktMzYuMkwyNjMuNTQgMjU2bDEwNy4yOCAxMDcuM0w0MDcgMzI3LjFjMTUuMS0xNS4yIDQxLTQuNSA0MSAxNi45elwiXVxufTtcbnZhciBmYUV4dGVybmFsTGlua0FsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleHRlcm5hbC1saW5rLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjM1ZFwiLCBcIk00MzIsMzIwSDQwMGExNiwxNiwwLDAsMC0xNiwxNlY0NDhINjRWMTI4SDIwOGExNiwxNiwwLDAsMCwxNi0xNlY4MGExNiwxNiwwLDAsMC0xNi0xNkg0OEE0OCw0OCwwLDAsMCwwLDExMlY0NjRhNDgsNDgsMCwwLDAsNDgsNDhINDAwYTQ4LDQ4LDAsMCwwLDQ4LTQ4VjMzNkExNiwxNiwwLDAsMCw0MzIsMzIwWk00ODgsMGgtMTI4Yy0yMS4zNywwLTMyLjA1LDI1LjkxLTE3LDQxbDM1LjczLDM1LjczTDEzNSwzMjAuMzdhMjQsMjQsMCwwLDAsMCwzNEwxNTcuNjcsMzc3YTI0LDI0LDAsMCwwLDM0LDBMNDM1LjI4LDEzMy4zMiw0NzEsMTY5YzE1LDE1LDQxLDQuNSw0MS0xN1YyNEEyNCwyNCwwLDAsMCw0ODgsMFpcIl1cbn07XG52YXIgZmFFeHRlcm5hbExpbmtTcXVhcmVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMzYwXCIsIFwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4em0tODggMTZIMjQ4LjAyOWMtMjEuMzEzIDAtMzIuMDggMjUuODYxLTE2Ljk3MSA0MC45NzFsMzEuOTg0IDMxLjk4N0w2Ny41MTUgMzY0LjQ4NWMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDMxLjAyOSAzMS4wMjljNC42ODcgNC42ODYgMTIuMjg1IDQuNjg2IDE2Ljk3MSAwbDE5NS41MjYtMTk1LjUyNiAzMS45ODggMzEuOTkxQzM1OC4wNTggMjYzLjk3NyAzODQgMjUzLjQyNSAzODQgMjMxLjk3OVYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0elwiXVxufTtcbnZhciBmYUV5ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleWUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwNmVcIiwgXCJNNTcyLjUyIDI0MS40QzUxOC4yOSAxMzUuNTkgNDEwLjkzIDY0IDI4OCA2NFM1Ny42OCAxMzUuNjQgMy40OCAyNDEuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM1Ny43MSAzNzYuNDEgMTY1LjA3IDQ0OCAyODggNDQ4czIzMC4zMi03MS42NCAyODQuNTItMTc3LjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTl6TTI4OCA0MDBhMTQ0IDE0NCAwIDEgMSAxNDQtMTQ0IDE0My45MyAxNDMuOTMgMCAwIDEtMTQ0IDE0NHptMC0yNDBhOTUuMzEgOTUuMzEgMCAwIDAtMjUuMzEgMy43OSA0Ny44NSA0Ny44NSAwIDAgMS02Ni45IDY2LjlBOTUuNzggOTUuNzggMCAxIDAgMjg4IDE2MHpcIl1cbn07XG52YXIgZmFFeWVEcm9wcGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V5ZS1kcm9wcGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWZiXCIsIFwiTTUwLjc1IDMzMy4yNWMtMTIgMTItMTguNzUgMjguMjgtMTguNzUgNDUuMjZWNDI0TDAgNDgwbDMyIDMyIDU2LTMyaDQ1LjQ5YzE2Ljk3IDAgMzMuMjUtNi43NCA0NS4yNS0xOC43NGwxMjYuNjQtMTI2LjYyLTEyOC0xMjhMNTAuNzUgMzMzLjI1ek00ODMuODggMjguMTJjLTM3LjQ3LTM3LjUtOTguMjgtMzcuNS0xMzUuNzUgMGwtNzcuMDkgNzcuMDktMTMuMS0xMy4xYy05LjQ0LTkuNDQtMjQuNjUtOS4zMS0zMy45NCAwbC00MC45NyA0MC45N2MtOS4zNyA5LjM3LTkuMzcgMjQuNTcgMCAzMy45NGwxNjEuOTQgMTYxLjk0YzkuNDQgOS40NCAyNC42NSA5LjMxIDMzLjk0IDBMNDE5Ljg4IDI4OGM5LjM3LTkuMzcgOS4zNy0yNC41NyAwLTMzLjk0bC0xMy4xLTEzLjEgNzcuMDktNzcuMDljMzcuNTEtMzcuNDggMzcuNTEtOTguMjYuMDEtMTM1Ljc1elwiXVxufTtcbnZhciBmYUV5ZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V5ZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjA3MFwiLCBcIk0zMjAgNDAwYy03NS44NSAwLTEzNy4yNS01OC43MS0xNDIuOS0xMzMuMTFMNzIuMiAxODUuODJjLTEzLjc5IDE3LjMtMjYuNDggMzUuNTktMzYuNzIgNTUuNTlhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM4OS43MSAzNzYuNDEgMTk3LjA3IDQ0OCAzMjAgNDQ4YzI2LjkxIDAgNTIuODctNCA3Ny44OS0xMC40NkwzNDYgMzk3LjM5YTE0NC4xMyAxNDQuMTMgMCAwIDEtMjYgMi42MXptMzEzLjgyIDU4LjFsLTExMC41NS04NS40NGEzMzEuMjUgMzMxLjI1IDAgMCAwIDgxLjI1LTEwMi4wNyAzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5QzU1MC4yOSAxMzUuNTkgNDQyLjkzIDY0IDMyMCA2NGEzMDguMTUgMzA4LjE1IDAgMCAwLTE0Ny4zMiAzNy43TDQ1LjQ2IDMuMzdBMTYgMTYgMCAwIDAgMjMgNi4xOEwzLjM3IDMxLjQ1QTE2IDE2IDAgMCAwIDYuMTggNTMuOWw1ODguMzYgNDU0LjczYTE2IDE2IDAgMCAwIDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdhMTYgMTYgMCAwIDAtMi44Mi0yMi40NXptLTE4My43Mi0xNDJsLTM5LjMtMzAuMzhBOTQuNzUgOTQuNzUgMCAwIDAgNDE2IDI1NmE5NC43NiA5NC43NiAwIDAgMC0xMjEuMzEtOTIuMjFBNDcuNjUgNDcuNjUgMCAwIDEgMzA0IDE5MmE0Ni42NCA0Ni42NCAwIDAgMS0xLjU0IDEwbC03My42MS01Ni44OUExNDIuMzEgMTQyLjMxIDAgMCAxIDMyMCAxMTJhMTQzLjkyIDE0My45MiAwIDAgMSAxNDQgMTQ0YzAgMjEuNjMtNS4yOSA0MS43OS0xMy45IDYwLjExelwiXVxufTtcbnZhciBmYUZhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4NjNcIiwgXCJNMzUyLjU3IDEyOGMtMjguMDkgMC01NC4wOSA0LjUyLTc3LjA2IDEyLjg2bDEyLjQxLTEyMy4xMUMyODkgNy4zMSAyNzkuODEtMS4xOCAyNjkuMzMuMTMgMTg5LjYzIDEwLjEzIDEyOCA3Ny42NCAxMjggMTU5LjQzYzAgMjguMDkgNC41MiA1NC4wOSAxMi44NiA3Ny4wNkwxNy43NSAyMjQuMDhDNy4zMSAyMjMtMS4xOCAyMzIuMTkuMTMgMjQyLjY3YzEwIDc5LjcgNzcuNTEgMTQxLjMzIDE1OS4zIDE0MS4zMyAyOC4wOSAwIDU0LjA5LTQuNTIgNzcuMDYtMTIuODZsLTEyLjQxIDEyMy4xMWMtMS4wNSAxMC40MyA4LjExIDE4LjkzIDE4LjU5IDE3LjYyIDc5LjctMTAgMTQxLjMzLTc3LjUxIDE0MS4zMy0xNTkuMyAwLTI4LjA5LTQuNTItNTQuMDktMTIuODYtNzcuMDZsMTIzLjExIDEyLjQxYzEwLjQ0IDEuMDUgMTguOTMtOC4xMSAxNy42Mi0xOC41OS0xMC03OS43LTc3LjUxLTE0MS4zMy0xNTkuMy0xNDEuMzN6TTI1NiAyODhhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6XCJdXG59O1xudmFyIGZhRmFzdEJhY2t3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zhc3QtYmFja3dhcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNDlcIiwgXCJNMCA0MzZWNzZjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYxNTEuOUwyMzUuNSA3MS40QzI1Ni4xIDU0LjMgMjg4IDY4LjYgMjg4IDk2djEzMS45TDQ1OS41IDcxLjRDNDgwLjEgNTQuMyA1MTIgNjguNiA1MTIgOTZ2MzIwYzAgMjcuNC0zMS45IDQxLjctNTIuNSAyNC42TDI4OCAyODUuM1Y0MTZjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMNjQgMjg1LjNWNDM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyelwiXVxufTtcbnZhciBmYUZhc3RGb3J3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zhc3QtZm9yd2FyZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1MFwiLCBcIk01MTIgNzZ2MzYwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlYyODQuMUwyNzYuNSA0NDAuNmMtMjAuNiAxNy4yLTUyLjUgMi44LTUyLjUtMjQuNlYyODQuMUw1Mi41IDQ0MC42QzMxLjkgNDU3LjggMCA0NDMuNCAwIDQxNlY5NmMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwyMjQgMjI2LjhWOTZjMC0yNy40IDMxLjktNDEuNyA1Mi41LTI0LjZMNDQ4IDIyNi44Vjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJdXG59O1xudmFyIGZhRmF1Y2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhdWNldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTAwNVwiLCBcIk0zNTIsMjU2SDMxMy4zOWMtMTUuNzEtMTMuNDQtMzUuNDYtMjMuMDctNTcuMzktMjhWMTgwLjQ0bC0zMi0zLjM4LTMyLDMuMzhWMjI4Yy0yMS45Myw1LTQxLjY4LDE0LjYtNTcuMzksMjhIMTZBMTYsMTYsMCwwLDAsMCwyNzJ2OTZhMTYsMTYsMCwwLDAsMTYsMTZoOTIuNzlDMTI5LjM4LDQyMS43MywxNzMsNDQ4LDIyNCw0NDhzOTQuNjItMjYuMjcsMTE1LjIxLTY0SDM1MmEzMiwzMiwwLDAsMSwzMiwzMiwzMiwzMiwwLDAsMCwzMiwzMmg2NGEzMiwzMiwwLDAsMCwzMi0zMkExNjAsMTYwLDAsMCwwLDM1MiwyNTZaTTgxLjU5LDE1OS45MWwxNDIuNDEtMTUsMTQyLjQxLDE1YzkuNDIsMSwxNy41OS02LjgxLDE3LjU5LTE2LjhWMTEyLjg5YzAtMTAtOC4xNy0xNy44LTE3LjU5LTE2LjgxTDI1NiwxMDcuNzRWODBhMTYsMTYsMCwwLDAtMTYtMTZIMjA4YTE2LDE2LDAsMCwwLTE2LDE2djI3Ljc0TDgxLjU5LDk2LjA4QzcyLjE3LDk1LjA5LDY0LDEwMi45LDY0LDExMi44OXYzMC4yMkM2NCwxNTMuMSw3Mi4xNywxNjAuOTEsODEuNTksMTU5LjkxWlwiXVxufTtcbnZhciBmYUZheCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYXgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxYWNcIiwgXCJNNDgwIDE2MFY3Ny4yNWEzMiAzMiAwIDAgMC05LjM4LTIyLjYzTDQyNS4zNyA5LjM3QTMyIDMyIDAgMCAwIDQwMi43NSAwSDE2MGEzMiAzMiAwIDAgMC0zMiAzMnY0NDhhMzIgMzIgMCAwIDAgMzIgMzJoMzIwYTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNMjg4IDQzMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0wLTEyOGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0xMjggMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTEySDE5MlY2NGgxNjB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoNDh6TTY0IDEyOEgzMmEzMiAzMiAwIDAgMC0zMiAzMnYzMjBhMzIgMzIgMCAwIDAgMzIgMzJoMzJhMzIgMzIgMCAwIDAgMzItMzJWMTYwYTMyIDMyIDAgMCAwLTMyLTMyelwiXVxufTtcbnZhciBmYUZlYXRoZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmVhdGhlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjUyZFwiLCBcIk00NjcuMTQgNDQuODRjLTYyLjU1LTYyLjQ4LTE2MS42Ny02NC43OC0yNTIuMjggMjUuNzMtNzguNjEgNzguNTItNjAuOTggNjAuOTItODUuNzUgODUuNjYtNjAuNDYgNjAuMzktNzAuMzkgMTUwLjgzLTYzLjY0IDIxMS4xN2wxNzguNDQtMTc4LjI1YzYuMjYtNi4yNSAxNi40LTYuMjUgMjIuNjUgMHM2LjI1IDE2LjM4IDAgMjIuNjNMNy4wNCA0NzEuMDNjLTkuMzggOS4zNy05LjM4IDI0LjU3IDAgMzMuOTQgOS4zOCA5LjM3IDI0LjYgOS4zNyAzMy45OCAwbDY2LjEtNjYuMDNDMTU5LjQyIDQ1NC42NSAyNzkgNDU3LjExIDM1My45NSAzODRoLTk4LjE5bDE0Ny41Ny00OS4xNGM0OS45OS00OS45MyAzNi4zOC0zNi4xOCA0Ni4zMS00Ni44NmgtOTcuNzhsMTMxLjU0LTQzLjhjNDUuNDQtNzQuNDYgMzQuMzEtMTQ4Ljg0LTE2LjI2LTE5OS4zNnpcIl1cbn07XG52YXIgZmFGZWF0aGVyQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZlYXRoZXItYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTZiXCIsIFwiTTUxMiAwQzQ2MC4yMiAzLjU2IDk2LjQ0IDM4LjIgNzEuMDEgMjg3LjYxYy0zLjA5IDI2LjY2LTQuODQgNTMuNDQtNS45OSA4MC4yNGwxNzguODctMTc4LjY5YzYuMjUtNi4yNSAxNi40LTYuMjUgMjIuNjUgMHM2LjI1IDE2LjM4IDAgMjIuNjNMNy4wNCA0NzEuMDNjLTkuMzggOS4zNy05LjM4IDI0LjU3IDAgMzMuOTQgOS4zOCA5LjM3IDI0LjU5IDkuMzcgMzMuOTggMGw1Ny4xMy01Ny4wN2M0Mi4wOS0uMTQgODQuMTUtMi41MyAxMjUuOTYtNy4zNiA1My40OC01LjQ0IDk3LjAyLTI2LjQ3IDEzMi41OC01Ni41NEgyNTUuNzRsMTQ2Ljc5LTQ4Ljg4YzExLjI1LTE0Ljg5IDIxLjM3LTMwLjcxIDMwLjQ1LTQ3LjEyaC04MS4xNGwxMDYuNTQtNTMuMjFDNTAwLjI5IDEzMi44NiA1MTAuMTkgMjYuMjYgNTEyIDB6XCJdXG59O1xudmFyIGZhRmVtYWxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZlbWFsZScsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjE4MlwiLCBcIk0xMjggMGMzNS4zNDYgMCA2NCAyOC42NTQgNjQgNjRzLTI4LjY1NCA2NC02NCA2NGMtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0UzkyLjY1NCAwIDEyOCAwbTExOS4yODMgMzU0LjE3OWwtNDgtMTkyQTI0IDI0IDAgMCAwIDE3NiAxNDRoLTExLjM2Yy0yMi43MTEgMTAuNDQzLTQ5LjU5IDEwLjg5NC03My4yOCAwSDgwYTI0IDI0IDAgMCAwLTIzLjI4MyAxOC4xNzlsLTQ4IDE5MkM0LjkzNSAzNjkuMzA1IDE2LjM4MyAzODQgMzIgMzg0aDU2djEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM4NGg1NmMxNS41OTEgMCAyNy4wNzEtMTQuNjcxIDIzLjI4My0yOS44MjF6XCJdXG59O1xudmFyIGZhRmlnaHRlckpldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWdodGVyLWpldCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjBmYlwiLCBcIk01NDQgMjI0bC0xMjgtMTYtNDgtMTZoLTI0TDIyNy4xNTggNDRoMzkuNTA5QzI3OC4zMzMgNDQgMjg4IDQxLjM3NSAyODggMzhzLTkuNjY3LTYtMjEuMzMzLTZIMTUydjEyaDE2djE2NGgtNDhsLTY2LjY2Ny04MEgxOC42NjdMOCAxMzguNjY3VjIwOGg4djE2aDQ4djIuNjY2bC02NCA4djQyLjY2N2w2NCA4VjI4OEgxNnYxNkg4djY5LjMzM0wxOC42NjcgMzg0aDM0LjY2N0wxMjAgMzA0aDQ4djE2NGgtMTZ2MTJoMTE0LjY2N2MxMS42NjcgMCAyMS4zMzMtMi42MjUgMjEuMzMzLTZzLTkuNjY3LTYtMjEuMzMzLTZoLTM5LjUwOUwzNDQgMzIwaDI0bDQ4LTE2IDEyOC0xNmM5Ni0yMS4zMzMgOTYtMjYuNTgzIDk2LTMyIDAtNS40MTcgMC0xMC42NjctOTYtMzJ6XCJdXG59O1xudmFyIGZhRmlsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMTViXCIsIFwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptMTYwLTE0LjF2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwiXVxufTtcbnZhciBmYUZpbGVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1hbHQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxNWNcIiwgXCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02NCAyMzZjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEydjh6bTAtNjRjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEydjh6bTAtNzJ2OGMwIDYuNi01LjQgMTItMTIgMTJIMTA4Yy02LjYgMC0xMi01LjQtMTItMTJ2LThjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTk2LTExNC4xdjYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIl1cbn07XG52YXIgZmFGaWxlQXJjaGl2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWFyY2hpdmUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzZcIiwgXCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45ek0xMjguNCAzMzZjLTE3LjkgMC0zMi40IDEyLjEtMzIuNCAyNyAwIDE1IDE0LjYgMjcgMzIuNSAyN3MzMi40LTEyLjEgMzIuNC0yNy0xNC42LTI3LTMyLjUtMjd6TTIyNCAxMzZWMGgtNjMuNnYzMmgtMzJWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNOTUuOSAzMmgzMnYzMmgtMzJ6bTMyLjMgMzg0Yy0zMy4yIDAtNTgtMzAuNC01MS40LTYyLjlMOTYuNCAyNTZ2LTMyaDMydi0zMmgtMzJ2LTMyaDMydi0zMmgtMzJWOTZoMzJWNjRoMzJ2MzJoLTMydjMyaDMydjMyaC0zMnYzMmgzMnYzMmgtMzJ2MzJoMjIuMWM1LjcgMCAxMC43IDQuMSAxMS44IDkuN2wxNy4zIDg3LjdjNi40IDMyLjQtMTguNCA2Mi42LTUxLjQgNjIuNnpcIl1cbn07XG52YXIgZmFGaWxlQXVkaW8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1hdWRpbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjN1wiLCBcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bS02NCAyNjhjMCAxMC43LTEyLjkgMTYtMjAuNSA4LjVMMTA0IDM3Nkg3NmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoMjhsMzUuNS0zNi41YzcuNi03LjYgMjAuNS0yLjIgMjAuNSA4LjV2MTM2em0zMy4yLTQ3LjZjOS4xLTkuMyA5LjEtMjQuMSAwLTMzLjQtMjIuMS0yMi44IDEyLjItNTYuMiAzNC40LTMzLjUgMjcuMiAyNy45IDI3LjIgNzIuNCAwIDEwMC40LTIxLjggMjIuMy01Ni45LTEwLjQtMzQuNC0zMy41em04Ni0xMTcuMWM1NC40IDU1LjkgNTQuNCAxNDQuOCAwIDIwMC44LTIxLjggMjIuNC01Ny0xMC4zLTM0LjQtMzMuNSAzNi4yLTM3LjIgMzYuMy05Ni41IDAtMTMzLjgtMjIuMS0yMi44IDEyLjMtNTYuMyAzNC40LTMzLjV6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJdXG59O1xudmFyIGZhRmlsZUNvZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jb2RlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWM5XCIsIFwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWM2LjM2NSAwIDEyLjQ3IDIuNTI5IDE2Ljk3MSA3LjAyOWw5Ny45NDEgOTcuOTQxQTI0LjAwNSAyNC4wMDUgMCAwIDEgMzg0IDEyMS45NDF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHpNMTIzLjIwNiA0MDAuNTA1YTUuNCA1LjQgMCAwIDEtNy42MzMuMjQ2bC02NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgMC03Ljg3OWw2NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgNy42MzMuMjQ2bDE5LjU3OSAyMC44ODVhNS40IDUuNCAwIDAgMS0uMzcyIDcuNzQ3TDEwMS42NSAzMzZsNDAuNzYzIDM1Ljg3NGE1LjQgNS40IDAgMCAxIC4zNzIgNy43NDdsLTE5LjU3OSAyMC44ODR6bTUxLjI5NSA1MC40NzlsLTI3LjQ1My03Ljk3YTUuNDAyIDUuNDAyIDAgMCAxLTMuNjgxLTYuNjkybDYxLjQ0LTIxMS42MjZhNS40MDIgNS40MDIgMCAwIDEgNi42OTItMy42ODFsMjcuNDUyIDcuOTdhNS40IDUuNCAwIDAgMSAzLjY4IDYuNjkybC02MS40NCAyMTEuNjI2YTUuMzk3IDUuMzk3IDAgMCAxLTYuNjkgMy42ODF6bTE2MC43OTItMTExLjA0NWwtNjQuODY2IDYwLjgxMmE1LjQgNS40IDAgMCAxLTcuNjMzLS4yNDZsLTE5LjU4LTIwLjg4NWE1LjQgNS40IDAgMCAxIC4zNzItNy43NDdMMjg0LjM1IDMzNmwtNDAuNzYzLTM1Ljg3NGE1LjQgNS40IDAgMCAxLS4zNzItNy43NDdsMTkuNTgtMjAuODg1YTUuNCA1LjQgMCAwIDEgNy42MzMtLjI0Nmw2NC44NjYgNjAuODEyYTUuNCA1LjQgMCAwIDEtLjAwMSA3Ljg3OXpcIl1cbn07XG52YXIgZmFGaWxlQ29udHJhY3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jb250cmFjdCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU2Y1wiLCBcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTY0IDcyYzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOFY3MnptMCA2NGMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2em0xOTIuODEgMjQ4SDMwNGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNmgtNDcuMTljLTE2LjQ1IDAtMzEuMjctOS4xNC0zOC42NC0yMy44Ni0yLjk1LTUuOTItOC4wOS02LjUyLTEwLjE3LTYuNTJzLTcuMjIuNTktMTAuMDIgNi4xOWwtNy42NyAxNS4zNGExNS45ODYgMTUuOTg2IDAgMCAxLTE0LjMxIDguODRjLS4zOCAwLS43NS0uMDItMS4xNC0uMDUtNi40NS0uNDUtMTItNC43NS0xNC4wMy0xMC44OUwxNDQgMzU0LjU5bC0xMC42MSAzMS44OGMtNS44OSAxNy42Ni0yMi4zOCAyOS41My00MSAyOS41M0g4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgxMi4zOWM0LjgzIDAgOS4xMS0zLjA4IDEwLjY0LTcuNjZsMTguMTktNTQuNjRjMy4zLTkuODEgMTIuNDQtMTYuNDEgMjIuNzgtMTYuNDFzMTkuNDggNi41OSAyMi43NyAxNi40MWwxMy44OCA0MS42NGMxOS43Ny0xNi4xOSA1NC4wNS05LjcgNjYgMTQuMTYgMi4wMiA0LjA2IDUuOTYgNi41IDEwLjE2IDYuNXpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwiXVxufTtcbnZhciBmYUZpbGVDc3YgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jc3YnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY2ZGRcIiwgXCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0tOTYgMTQ0YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg4YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDhjNC40MiAwIDggMy41OCA4IDh2MTZ6bTQ0LjI3IDEwNEgxNjBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMi4yN2M1Ljk1IDAgMTAuNDEtMy41IDEwLjQxLTYuNjIgMC0xLjMtLjc1LTIuNjYtMi4xMi0zLjg0bC0yMS44OS0xOC43N2MtOC40Ny03LjIyLTEzLjMzLTE3LjQ4LTEzLjMzLTI4LjE0IDAtMjEuMyAxOS4wMi0zOC42MiA0Mi40MS0zOC42MkgyMDBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTEyLjI3Yy01Ljk1IDAtMTAuNDEgMy41LTEwLjQxIDYuNjIgMCAxLjMuNzUgMi42NiAyLjEyIDMuODRsMjEuODkgMTguNzdjOC40NyA3LjIyIDEzLjMzIDE3LjQ4IDEzLjMzIDI4LjE0LjAxIDIxLjI5LTE5IDM4LjYyLTQyLjM5IDM4LjYyek0yNTYgMjY0djIwLjhjMCAyMC4yNyA1LjcgNDAuMTcgMTYgNTYuODggMTAuMy0xNi43IDE2LTM2LjYxIDE2LTU2Ljg4VjI2NGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYyMC44YzAgMzUuNDgtMTIuODggNjguODktMzYuMjggOTQuMDktMy4wMiAzLjI1LTcuMjcgNS4xMS0xMS43MiA1LjExcy04LjctMS44Ni0xMS43Mi01LjExYy0yMy40LTI1LjItMzYuMjgtNTguNjEtMzYuMjgtOTQuMDlWMjY0YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4em0xMjEtMTU5TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJdXG59O1xudmFyIGZhRmlsZURvd25sb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtZG93bmxvYWQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1NmRcIiwgXCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em03Ni40NSAyMTEuMzZsLTk2LjQyIDk1LjdjLTYuNjUgNi42MS0xNy4zOSA2LjYxLTI0LjA0IDBsLTk2LjQyLTk1LjdDNzMuNDIgMzM3LjI5IDgwLjU0IDMyMCA5NC44MiAzMjBIMTYwdi04MGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY4MGg2NS4xOGMxNC4yOCAwIDIxLjQgMTcuMjkgMTEuMjcgMjcuMzZ6TTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpcIl1cbn07XG52YXIgZmFGaWxlRXhjZWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1leGNlbCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjM1wiLCBcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTYwLjEgMTA2LjVMMjI0IDMzNmw2MC4xIDkzLjVjNS4xIDgtLjYgMTguNS0xMC4xIDE4LjVoLTM0LjljLTQuNCAwLTguNS0yLjQtMTAuNi02LjNDMjA4LjkgNDA1LjUgMTkyIDM3MyAxOTIgMzczYy02LjQgMTQuOC0xMCAyMC0zNi42IDY4LjgtMi4xIDMuOS02LjEgNi4zLTEwLjUgNi4zSDExMGMtOS41IDAtMTUuMi0xMC41LTEwLjEtMTguNWw2MC4zLTkzLjUtNjAuMy05My41Yy01LjItOCAuNi0xOC41IDEwLjEtMTguNWgzNC44YzQuNCAwIDguNSAyLjQgMTAuNiA2LjMgMjYuMSA0OC44IDIwIDMzLjYgMzYuNiA2OC41IDAgMCA2LjEtMTEuNyAzNi42LTY4LjUgMi4xLTMuOSA2LjItNi4zIDEwLjYtNi4zSDI3NGM5LjUtLjEgMTUuMiAxMC40IDEwLjEgMTguNHpNMzg0IDEyMS45djYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIl1cbn07XG52YXIgZmFGaWxlRXhwb3J0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtZXhwb3J0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTZlXCIsIFwiTTM4NCAxMjEuOWMwLTYuMy0yLjUtMTIuNC03LTE2LjlMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHpNNTcxIDMwOGwtOTUuNy05Ni40Yy0xMC4xLTEwLjEtMjcuNC0zLTI3LjQgMTEuM1YyODhoLTY0djY0aDY0djY1LjJjMCAxNC4zIDE3LjMgMjEuNCAyNy40IDExLjNMNTcxIDMzMmM2LjYtNi42IDYuNi0xNy40IDAtMjR6bS0zNzkgMjh2LTMyYzAtOC44IDcuMi0xNiAxNi0xNmgxNzZWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzNTJIMjA4Yy04LjggMC0xNi03LjItMTYtMTZ6XCJdXG59O1xudmFyIGZhRmlsZUltYWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtaW1hZ2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzVcIiwgXCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YTI0IDI0IDAgMCAxIDE2Ljk3IDcuMDI5bDk3Ljk0MSA5Ny45NDFhMjQuMDAyIDI0LjAwMiAwIDAgMSA3LjAzIDE2Ljk3MXpNMjQ4IDE2MGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djQ2NGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxNjBIMjQ4em0tMTM1LjQ1NSAxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4cy0yMS40OSA0OC00OCA0OC00OC0yMS40OS00OC00OCAyMS40OTEtNDggNDgtNDh6bTIwOCAyNDBoLTI1NmwuNDg1LTQ4LjQ4NUwxMDQuNTQ1IDMyOGM0LjY4Ni00LjY4NiAxMS43OTktNC4yMDEgMTYuNDg1LjQ4NUwxNjAuNTQ1IDM2OCAyNjQuMDYgMjY0LjQ4NWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMzIwLjU0NSAzMDR2MTEyelwiXVxufTtcbnZhciBmYUZpbGVJbXBvcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1pbXBvcnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NmZcIiwgXCJNMTYgMjg4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDExMnYtNjR6bTQ4OS0xODNMNDA3LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gzODR2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDE1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjY0aDEyOHYtNjUuMmMwLTE0LjMgMTcuMy0yMS40IDI3LjQtMTEuM0wzNzkgMzA4YzYuNiA2LjcgNi42IDE3LjQgMCAyNGwtOTUuNyA5Ni40Yy0xMC4xIDEwLjEtMjcuNCAzLTI3LjQtMTEuM1YzNTJIMTI4djEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDM3NmMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6XCJdXG59O1xudmFyIGZhRmlsZUludm9pY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1pbnZvaWNlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTcwXCIsIFwiTTI4OCAyNTZIOTZ2NjRoMTkydi02NHptODktMTUxTDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTI1NiAzMDRjMCA0LjQyLTMuNTggOC04IDhoLTgwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtMjAwdjk2YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtOTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2elwiXVxufTtcbnZhciBmYUZpbGVJbnZvaWNlRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtaW52b2ljZS1kb2xsYXInLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1NzFcIiwgXCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTY0IDcyYzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOFY3MnptMCA4MHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04em0xNDQgMjYzLjg4VjQ0MGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0yNC4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMjMyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djI0LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6XCJdXG59O1xudmFyIGZhRmlsZU1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1tZWRpY2FsJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDc3XCIsIFwiTTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02NCAxNjB2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4elwiXVxufTtcbnZhciBmYUZpbGVNZWRpY2FsQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtbWVkaWNhbC1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY0NzhcIiwgXCJNMjg4IDEzNlYwSDg4Qzc0LjcgMCA2NCAxMC43IDY0IDI0djIzMkg4Yy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4aDE0MC45YzMgMCA1LjggMS43IDcuMiA0LjRsMTkuOSAzOS44IDU2LjgtMTEzLjdjMi45LTUuOSAxMS40LTUuOSAxNC4zIDBsMzQuNyA2OS41SDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmgtODkuOUwyNDAgMjc1LjhsLTU2LjggMTEzLjdjLTIuOSA1LjktMTEuNCA1LjktMTQuMyAwTDEzNC4xIDMyMEg2NHYxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgzMTJjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xNTMtMzFMMzQzLjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gzMjB2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpcIl1cbn07XG52YXIgZmFGaWxlUGRmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtcGRmJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWMxXCIsIFwiTTE4MS45IDI1Ni4xYy01LTE2LTQuOS00Ni45LTItNDYuOSA4LjQgMCA3LjYgMzYuOSAyIDQ2Ljl6bS0xLjcgNDcuMmMtNy43IDIwLjItMTcuMyA0My4zLTI4LjQgNjIuNyAxOC4zLTcgMzktMTcuMiA2Mi45LTIxLjktMTIuNy05LjYtMjQuOS0yMy40LTM0LjUtNDAuOHpNODYuMSA0MjguMWMwIC44IDEzLjItNS40IDM0LjktNDAuMi02LjcgNi4zLTI5LjEgMjQuNS0zNC45IDQwLjJ6TTI0OCAxNjBoMTM2djMyOGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMjRDMCAxMC43IDEwLjcgMCAyNCAwaDIwMHYxMzZjMCAxMy4yIDEwLjggMjQgMjQgMjR6bS04IDE3MS44Yy0yMC0xMi4yLTMzLjMtMjktNDIuNy01My44IDQuNS0xOC41IDExLjYtNDYuNiA2LjItNjQuMi00LjctMjkuNC00Mi40LTI2LjUtNDcuOC02LjgtNSAxOC4zLS40IDQ0LjEgOC4xIDc3LTExLjYgMjcuNi0yOC43IDY0LjYtNDAuOCA4NS44LS4xIDAtLjEuMS0uMi4xLTI3LjEgMTMuOS03My42IDQ0LjUtNTQuNSA2OCA1LjYgNi45IDE2IDEwIDIxLjUgMTAgMTcuOSAwIDM1LjctMTggNjEuMS02MS44IDI1LjgtOC41IDU0LjEtMTkuMSA3OS0yMy4yIDIxLjcgMTEuOCA0Ny4xIDE5LjUgNjQgMTkuNSAyOS4yIDAgMzEuMi0zMiAxOS43LTQzLjQtMTMuOS0xMy42LTU0LjMtOS43LTczLjYtNy4yek0zNzcgMTA1TDI3OSA3Yy00LjUtNC41LTEwLjYtNy0xNy03aC02djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS03NC4xIDI1NS4zYzQuMS0yLjctMi41LTExLjktNDIuOC05IDM3LjEgMTUuOCA0Mi44IDkgNDIuOCA5elwiXVxufTtcbnZhciBmYUZpbGVQb3dlcnBvaW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtcG93ZXJwb2ludCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjNFwiLCBcIk0xOTMuNyAyNzEuMmM4LjggMCAxNS41IDIuNyAyMC4zIDguMSA5LjYgMTAuOSA5LjggMzIuNy0uMiA0NC4xLTQuOSA1LjYtMTEuOSA4LjUtMjEuMSA4LjVoLTI2Ljl2LTYwLjdoMjcuOXpNMzc3IDEwNUwyNzkgN2MtNC41LTQuNS0xMC42LTctMTctN2gtNnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTUzIDE2NS4yYzAgOTAuMy04OC44IDc3LjYtMTExLjEgNzcuNlY0MzZjMCA2LjYtNS40IDEyLTEyIDEyaC0zMC44Yy02LjYgMC0xMi01LjQtMTItMTJWMjM2LjJjMC02LjYgNS40LTEyIDEyLTEyaDgxYzQ0LjUgMCA3Mi45IDMyLjggNzIuOSA3N3pcIl1cbn07XG52YXIgZmFGaWxlUHJlc2NyaXB0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtcHJlc2NyaXB0aW9uJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTcyXCIsIFwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjguNTMgMTc5LjQ4bDExLjMxIDExLjMxYzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNsLTI5LjkgMjkuOUwzMDQgNDA5LjM4YzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwTDI0MCA0MTMuMjVsLTMwLjA2IDMwLjA2Yy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwTDE3NiA0MzJjLTYuMjUtNi4yNS02LjI1LTE2LjM4IDAtMjIuNjNsMzAuMDYtMzAuMDZMMTQ2Ljc0IDMyMEgxMjh2NDhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIOTZjLTguODQgMC0xNi03LjE2LTE2LTE2VjIwOGMwLTguODQgNy4xNi0xNiAxNi0xNmg4MGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0IDAgMjQuMjItMTMuNjIgNDUuMDUtMzMuNDYgNTUuOTJMMjQwIDM0NS4zOGwyOS45LTI5LjljNi4yNS02LjI1IDE2LjM4LTYuMjUgMjIuNjMgMHpNMTc2IDI3MmgtNDh2LTMyaDQ4YzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2em0yMDgtMTUwLjF2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwiXVxufTtcbnZhciBmYUZpbGVTaWduYXR1cmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1zaWduYXR1cmUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1NzNcIiwgXCJNMjE4LjE3IDQyNC4xNGMtMi45NS01LjkyLTguMDktNi41Mi0xMC4xNy02LjUycy03LjIyLjU5LTEwLjAyIDYuMTlsLTcuNjcgMTUuMzRjLTYuMzcgMTIuNzgtMjUuMDMgMTEuMzctMjkuNDgtMi4wOUwxNDQgMzg2LjU5bC0xMC42MSAzMS44OGMtNS44OSAxNy42Ni0yMi4zOCAyOS41My00MSAyOS41M0g4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgxMi4zOWM0LjgzIDAgOS4xMS0zLjA4IDEwLjY0LTcuNjZsMTguMTktNTQuNjRjMy4zLTkuODEgMTIuNDQtMTYuNDEgMjIuNzgtMTYuNDFzMTkuNDggNi41OSAyMi43NyAxNi40MWwxMy44OCA0MS42NGMxOS43NS0xNi4xOSA1NC4wNi05LjcgNjYgMTQuMTYgMS44OSAzLjc4IDUuNDkgNS45NSA5LjM2IDYuMjZ2LTgyLjEybDEyOC0xMjcuMDlWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtNDBsLTEyOC0uMTFjLTE2LjEyLS4zMS0zMC41OC05LjI4LTM3LjgzLTIzLjc1ek0zODQgMTIxLjljMC02LjMtMi41LTEyLjQtNy0xNi45TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMXptLTk2IDIyNS4wNlY0MTZoNjguOTlsMTYxLjY4LTE2Mi43OC02Ny44OC02Ny44OEwyODggMzQ2Ljk2em0yODAuNTQtMTc5LjYzbC0zMS44Ny0zMS44N2MtOS45NC05Ljk0LTI2LjA3LTkuOTQtMzYuMDEgMGwtMjcuMjUgMjcuMjUgNjcuODggNjcuODggMjcuMjUtMjcuMjVjOS45NS05Ljk0IDkuOTUtMjYuMDcgMC0zNi4wMXpcIl1cbn07XG52YXIgZmFGaWxlVXBsb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtdXBsb2FkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTc0XCIsIFwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjUuMTggMjE2LjAxSDIyNHY4MGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di04MEg5NC44MmMtMTQuMjggMC0yMS40MS0xNy4yOS0xMS4yNy0yNy4zNmw5Ni40Mi05NS43YzYuNjUtNi42MSAxNy4zOS02LjYxIDI0LjA0IDBsOTYuNDIgOTUuN2MxMC4xNSAxMC4wNyAzLjAzIDI3LjM2LTExLjI1IDI3LjM2ek0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJdXG59O1xudmFyIGZhRmlsZVZpZGVvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtdmlkZW8nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzhcIiwgXCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YzYuMzY1IDAgMTIuNDcgMi41MjkgMTYuOTcxIDcuMDI5bDk3Ljk0MSA5Ny45NDFBMjQuMDA1IDI0LjAwNSAwIDAgMSAzODQgMTIxLjk0MXpNMjI0IDEzNlYwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2NDY0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em05NiAxNDQuMDE2djExMS45NjNjMCAyMS40NDUtMjUuOTQzIDMxLjk5OC00MC45NzEgMTYuOTcxTDIyNCAzNTMuOTQxVjM5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIODhjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyODBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzguMDU5bDU1LjAyOS01NS4wMTNjMTUuMDExLTE1LjAxIDQwLjk3MS00LjQ5MSA0MC45NzEgMTYuOTd6XCJdXG59O1xudmFyIGZhRmlsZVdvcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS13b3JkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWMyXCIsIFwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNTcuMSAxMjBIMzA1YzcuNyAwIDEzLjQgNy4xIDExLjcgMTQuN2wtMzggMTY4Yy0xLjIgNS41LTYuMSA5LjMtMTEuNyA5LjNoLTM4Yy01LjUgMC0xMC4zLTMuOC0xMS42LTkuMS0yNS44LTEwMy41LTIwLjgtODEuMi0yNS42LTExMC41aC0uNWMtMS4xIDE0LjMtMi40IDE3LjQtMjUuNiAxMTAuNS0xLjMgNS4zLTYuMSA5LjEtMTEuNiA5LjFIMTE3Yy01LjYgMC0xMC41LTMuOS0xMS43LTkuNGwtMzcuOC0xNjhjLTEuNy03LjUgNC0xNC42IDExLjctMTQuNmgyNC41YzUuNyAwIDEwLjcgNCAxMS44IDkuNyAxNS42IDc4IDIwLjEgMTA5LjUgMjEgMTIyLjIgMS42LTEwLjIgNy4zLTMyLjcgMjkuNC0xMjIuNyAxLjMtNS40IDYuMS05LjEgMTEuNy05LjFoMjkuMWM1LjYgMCAxMC40IDMuOCAxMS43IDkuMiAyNCAxMDAuNCAyOC44IDEyNCAyOS42IDEyOS40LS4yLTExLjItMi42LTE3LjggMjEuNi0xMjkuMiAxLTUuNiA1LjktOS41IDExLjUtOS41ek0zODQgMTIxLjl2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwiXVxufTtcbnZhciBmYUZpbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU3NVwiLCBcIk01MDIuNjMgMjE3LjA2TDI5NC45NCA5LjM3QzI4OC42OSAzLjEyIDI4MC41IDAgMjcyLjMxIDBzLTE2LjM4IDMuMTItMjIuNjIgOS4zN2wtODEuNTggODEuNThMODEuOTMgNC43N2MtNi4yNC02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwzNi42OSAyNy4zOGMtNi4yNCA2LjI1LTYuMjQgMTYuMzggMCAyMi42M2w4Ni4xOSA4Ni4xOC05NC43NiA5NC43NmMtMzcuNDkgMzcuNDktMzcuNDkgOTguMjYgMCAxMzUuNzVsMTE3LjE5IDExNy4xOWMxOC43NSAxOC43NCA0My4zMSAyOC4xMiA2Ny44NyAyOC4xMiAyNC41NyAwIDQ5LjEzLTkuMzcgNjcuODgtMjguMTJsMjIxLjU3LTIyMS41N2MxMi40OS0xMi41IDEyLjQ5LTMyLjc2IDAtNDUuMjZ6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYxIDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMCAxMi40OS0xMi40OSAxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42MS01OC42IDU4Ljk1LTU4Ljk1IDE2Mi40NSAxNjIuNDQtNDguMzUgNDguMzR6XCJdXG59O1xudmFyIGZhRmlsbERyaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbC1kcmlwJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTc2XCIsIFwiTTUxMiAzMjBzLTY0IDkyLjY1LTY0IDEyOGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0czY0LTI4LjY1IDY0LTY0LTY0LTEyOC02NC0xMjh6bS05LjM3LTEwMi45NEwyOTQuOTQgOS4zN0MyODguNjkgMy4xMiAyODAuNSAwIDI3Mi4zMSAwcy0xNi4zOCAzLjEyLTIyLjYyIDkuMzdsLTgxLjU4IDgxLjU4TDgxLjkzIDQuNzZjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYyIDBMMzYuNjkgMjcuMzhjLTYuMjQgNi4yNS02LjI0IDE2LjM4IDAgMjIuNjJsODYuMTkgODYuMTgtOTQuNzYgOTQuNzZjLTM3LjQ5IDM3LjQ4LTM3LjQ5IDk4LjI2IDAgMTM1Ljc1bDExNy4xOSAxMTcuMTljMTguNzQgMTguNzQgNDMuMzEgMjguMTIgNjcuODcgMjguMTIgMjQuNTcgMCA0OS4xMy05LjM3IDY3Ljg3LTI4LjEybDIyMS41Ny0yMjEuNTdjMTIuNS0xMi41IDEyLjUtMzIuNzUuMDEtNDUuMjV6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYgNTguNmMxMi40OSAxMi40OSAzMi43NSAxMi40OSA0NS4yNCAwczEyLjQ5LTMyLjc1IDAtNDUuMjRsLTU4LjYtNTguNiA1OC45NS01OC45NSAxNjIuNDQgMTYyLjQ0LTQ4LjM0IDQ4LjM0elwiXVxufTtcbnZhciBmYUZpbG0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwOFwiLCBcIk00ODggNjRoLTh2MjBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEyVjY0SDk2djIwYzAgNi42LTUuNCAxMi0xMiAxMkg0NGMtNi42IDAtMTItNS40LTEyLTEyVjY0aC04QzEwLjcgNjQgMCA3NC43IDAgODh2MzM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2LTIwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjBoMzIwdi0yMGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjIwaDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTk2IDM3MmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMjcyIDIwOGMwIDYuNi01LjQgMTItMTIgMTJIMTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTk2YzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjk2em0wLTE2OGMwIDYuNi01LjQgMTItMTIgMTJIMTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTk2YzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjk2em0xMTIgMTUyYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwiXVxufTtcbnZhciBmYUZpbHRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWx0ZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYjBcIiwgXCJNNDg3Ljk3NiAwSDI0LjAyOEMyLjcxIDAtOC4wNDcgMjUuODY2IDcuMDU4IDQwLjk3MUwxOTIgMjI1Ljk0MVY0MzJjMCA3LjgzMSAzLjgyMSAxNS4xNyAxMC4yMzcgMTkuNjYybDgwIDU1Ljk4QzI5OC4wMiA1MTguNjkgMzIwIDUwNy40OTMgMzIwIDQ4Ny45OFYyMjUuOTQxbDE4NC45NDctMTg0Ljk3QzUyMC4wMjEgMjUuODk2IDUwOS4zMzggMCA0ODcuOTc2IDB6XCJdXG59O1xudmFyIGZhRmluZ2VycHJpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmluZ2VycHJpbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NzdcIiwgXCJNMjU2LjEyIDI0NS45NmMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNCAxLjE0IDcyLjI1LTguMTQgMTQxLjktMjcuNyAyMTEuNTUtMi43MyA5LjcyIDIuMTUgMzAuNDkgMjMuMTIgMzAuNDkgMTAuNDggMCAyMC4xMS02LjkyIDIzLjA5LTE3LjUyIDEzLjUzLTQ3LjkxIDMxLjA0LTEyNS40MSAyOS40OC0yMjQuNTIuMDEtMTMuMjUtMTAuNzMtMjQtMjMuOTktMjR6bS0uODYtODEuNzNDMTk0IDE2NC4xNiAxNTEuMjUgMjExLjMgMTUyLjEgMjY1LjMyYy43NSA0Ny45NC0zLjc1IDk1LjkxLTEzLjM3IDE0Mi41NS0yLjY5IDEyLjk4IDUuNjcgMjUuNjkgMTguNjQgMjguMzYgMTMuMDUgMi42NyAyNS42Ny01LjY2IDI4LjM2LTE4LjY0IDEwLjM0LTUwLjA5IDE1LjE3LTEwMS41OCAxNC4zNy0xNTMuMDItLjQxLTI1Ljk1IDE5LjkyLTUyLjQ5IDU0LjQ1LTUyLjM0IDMxLjMxLjQ3IDU3LjE1IDI1LjM0IDU3LjYyIDU1LjQ3Ljc3IDQ4LjA1LTIuODEgOTYuMzMtMTAuNjEgMTQzLjU1LTIuMTcgMTMuMDYgNi42OSAyNS40MiAxOS43NiAyNy41OCAxOS45NyAzLjMzIDI2LjgxLTE1LjEgMjcuNTgtMTkuNzcgOC4yOC01MC4wMyAxMi4wNi0xMDEuMjEgMTEuMjctMTUyLjExLS44OC01NS44LTQ3Ljk0LTEwMS44OC0xMDQuOTEtMTAyLjcyem0tMTEwLjY5LTE5Ljc4Yy0xMC4zLTguMzQtMjUuMzctNi44LTMzLjc2IDMuNDgtMjUuNjIgMzEuNS0zOS4zOSA3MS4yOC0zOC43NSAxMTIgLjU5IDM3LjU4LTIuNDcgNzUuMjctOS4xMSAxMTIuMDUtMi4zNCAxMy4wNSA2LjMxIDI1LjUzIDE5LjM2IDI3Ljg5IDIwLjExIDMuNSAyNy4wNy0xNC44MSAyNy44OS0xOS4zNiA3LjE5LTM5Ljg0IDEwLjUtODAuNjYgOS44Ni0xMjEuMzMtLjQ3LTI5Ljg4IDkuMi01Ny44OCAyOC04MC45NyA4LjM1LTEwLjI4IDYuNzktMjUuMzktMy40OS0zMy43NnptMTA5LjQ3LTYyLjMzYy0xNS40MS0uNDEtMzAuODcgMS40NC00NS43OCA0Ljk3LTEyLjg5IDMuMDYtMjAuODcgMTUuOTgtMTcuODMgMjguODkgMy4wNiAxMi44OSAxNiAyMC44MyAyOC44OSAxNy44MyAxMS4wNS0yLjYxIDIyLjQ3LTMuNzcgMzQtMy42OSA3NS40MyAxLjEzIDEzNy43MyA2MS41IDEzOC44OCAxMzQuNTguNTkgMzcuODgtMS4yOCA3Ni4xMS01LjU4IDExMy42My0xLjUgMTMuMTcgNy45NSAyNS4wOCAyMS4xMSAyNi41OCAxNi43MiAxLjk1IDI1LjUxLTExLjg4IDI2LjU4LTIxLjExYTkyOS4wNiA5MjkuMDYgMCAwIDAgNS44OS0xMTkuODVjLTEuNTYtOTguNzUtODUuMDctMTgwLjMzLTE4Ni4xNi0xODEuODN6bTI1Mi4wNyAxMjEuNDVjLTIuODYtMTIuOTItMTUuNTEtMjEuMi0yOC42MS0xOC4yNy0xMi45NCAyLjg2LTIxLjEyIDE1LjY2LTE4LjI2IDI4LjYxIDQuNzEgMjEuNDEgNC45MSAzNy40MSA0LjcgNjEuNi0uMTEgMTMuMjcgMTAuNTUgMjQuMDkgMjMuOCAyNC4yaC4yYzEzLjE3IDAgMjMuODktMTAuNjEgMjQtMjMuOC4xOC0yMi4xOC40LTQ0LjExLTUuODMtNzIuMzR6bS00MC4xMi05MC43MkM0MTcuMjkgNDMuNDYgMzM3LjYgMS4yOSAyNTIuODEuMDIgMTgzLjAyLS44MiAxMTguNDcgMjQuOTEgNzAuNDYgNzIuOTQgMjQuMDkgMTE5LjM3LS45IDE4MS4wNC4xNCAyNDYuNjVsLS4xMiAyMS40N2MtLjM5IDEzLjI1IDEwLjAzIDI0LjMxIDIzLjI4IDI0LjY5LjIzLjAyLjQ4LjAyLjcyLjAyIDEyLjkyIDAgMjMuNTktMTAuMyAyMy45Ny0yMy4zbC4xNi0yMy42NGMtLjgzLTUyLjUgMTkuMTYtMTAxLjg2IDU2LjI4LTEzOSAzOC43Ni0zOC44IDkxLjM0LTU5LjY3IDE0Ny42OC01OC44NiA2OS40NSAxLjAzIDEzNC43MyAzNS41NiAxNzQuNjIgOTIuMzkgNy42MSAxMC44NiAyMi41NiAxMy40NSAzMy40MiA1Ljg2IDEwLjg0LTcuNjIgMTMuNDYtMjIuNTkgNS44NC0zMy40M3pcIl1cbn07XG52YXIgZmFGaXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpcmUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwNmRcIiwgXCJNMjE2IDIzLjg2YzAtMjMuOC0zMC42NS0zMi43Ny00NC4xNS0xMy4wNEM0OCAxOTEuODUgMjI0IDIwMCAyMjQgMjg4YzAgMzUuNjMtMjkuMTEgNjQuNDYtNjQuODUgNjMuOTktMzUuMTctLjQ1LTYzLjE1LTI5Ljc3LTYzLjE1LTY0Ljk0di04NS41MWMwLTIxLjctMjYuNDctMzIuMjMtNDEuNDMtMTYuNUMyNy44IDIxMy4xNiAwIDI2MS4zMyAwIDMyMGMwIDEwNS44NyA4Ni4xMyAxOTIgMTkyIDE5MnMxOTItODYuMTMgMTkyLTE5MmMwLTE3MC4yOS0xNjgtMTkzLTE2OC0yOTYuMTR6XCJdXG59O1xudmFyIGZhRmlyZUFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaXJlLWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdlNFwiLCBcIk0zMjMuNTYgNTEuMmMtMjAuOCAxOS4zLTM5LjU4IDM5LjU5LTU2LjIyIDU5Ljk3QzI0MC4wOCA3My42MiAyMDYuMjggMzUuNTMgMTY4IDAgNjkuNzQgOTEuMTcgMCAyMDkuOTYgMCAyODEuNiAwIDQwOC44NSAxMDAuMjkgNTEyIDIyNCA1MTJzMjI0LTEwMy4xNSAyMjQtMjMwLjRjMC01My4yNy01MS45OC0xNjMuMTQtMTI0LjQ0LTIzMC40em0tMTkuNDcgMzQwLjY1QzI4Mi40MyA0MDcuMDEgMjU1LjcyIDQxNiAyMjYuODYgNDE2IDE1NC43MSA0MTYgOTYgMzY4LjI2IDk2IDI5MC43NWMwLTM4LjYxIDI0LjMxLTcyLjYzIDcyLjc5LTEzMC43NSA2LjkzIDcuOTggOTguODMgMTI1LjM0IDk4LjgzIDEyNS4zNGw1OC42My02Ni44OGM0LjE0IDYuODUgNy45MSAxMy41NSAxMS4yNyAxOS45NyAyNy4zNSA1Mi4xOSAxNS44MSAxMTguOTctMzMuNDMgMTUzLjQyelwiXVxufTtcbnZhciBmYUZpcmVFeHRpbmd1aXNoZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlyZS1leHRpbmd1aXNoZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxMzRcIiwgXCJNNDM0LjAyNyAyNi4zMjlsLTE2OCAyOEMyNTQuNjkzIDU2LjIxOCAyNTYgNjcuOCAyNTYgNzJoLTU4LjMzMkMyMDguMzUzIDM2LjEwOCAxODEuNDQ2IDAgMTQ0IDBjLTM5LjQzNSAwLTY2LjM2OCAzOS42NzYtNTIuMjI4IDc2LjIwMy01Mi4wMzkgMTMuMDUxLTc1LjM4MSA1NC4yMTMtOTAuMDQ5IDkwLjg4NC00LjkyMyAxMi4zMDcgMS4wNjMgMjYuMjc0IDEzLjM3IDMxLjE5NyAxMi4zMTcgNC45MjYgMjYuMjc5LTEuMDc1IDMxLjE5Ni0xMy4zN0M3NS4wNTggMTEyLjk5IDEwNi45NjQgMTIwIDE2OCAxMjB2MjcuMDc2Yy00MS41NDMgMTAuODYyLTcyIDQ5LjIzNS03MiA5NC4xMjlWNDg4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0MGMwLTQ0LjczMS0zMC41OTYtODIuMzEyLTcyLTkyLjk3VjEyMGg0MGMwIDIuOTc0LTEuNzAzIDE1LjcxNiAxMC4wMjcgMTcuNjcxbDE2OCAyOEM0NDEuMzQyIDE2Ni44OSA0NDggMTYxLjI1IDQ0OCAxNTMuODM0VjM4LjE2NmMwLTcuNDE2LTYuNjU4LTEzLjA1Ni0xMy45NzMtMTEuODM3ek0xNDQgNzJjLTguODIyIDAtMTYtNy4xNzgtMTYtMTZzNy4xNzgtMTYgMTYtMTYgMTYgNy4xNzggMTYgMTYtNy4xNzggMTYtMTYgMTZ6XCJdXG59O1xudmFyIGZhRmlyc3RBaWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlyc3QtYWlkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDc5XCIsIFwiTTAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4VjMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTEyOCA0MDBoMzIwVjMySDEyOHY0NDh6bTY0LTI0OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDh6TTUyOCAzMmgtNDh2NDQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUZpc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlzaCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjU3OFwiLCBcIk0zMjcuMSA5NmMtODkuOTcgMC0xNjguNTQgNTQuNzctMjEyLjI3IDEwMS42M0wyNy41IDEzMS41OGMtMTIuMTMtOS4xOC0zMC4yNC42LTI3LjE0IDE0LjY2TDI0LjU0IDI1NiAuMzUgMzY1Ljc3Yy0zLjEgMTQuMDYgMTUuMDEgMjMuODMgMjcuMTQgMTQuNjZsODcuMzMtNjYuMDVDMTU4LjU1IDM2MS4yMyAyMzcuMTMgNDE2IDMyNy4xIDQxNiA0NjQuNTYgNDE2IDU3NiAyODggNTc2IDI1NlM0NjQuNTYgOTYgMzI3LjEgOTZ6bTg3LjQzIDE4NGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0IDEzLjI2IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIl1cbn07XG52YXIgZmFGaXN0UmFpc2VkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zpc3QtcmFpc2VkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNmRlXCIsIFwiTTI1NS45OCAxNjBWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDYuOTNjNS4wMi0xLjc4IDEwLjM0LTIuOTMgMTUuOTctMi45M2g0OC4wM3ptMTI4IDk1Ljk5Yy0uMDEtMzUuMzQtMjguNjYtNjMuOTktNjMuOTktNjMuOTlIMjA3Ljg1Yy04Ljc4IDAtMTUuOSA3LjA3LTE1LjkgMTUuODV2LjU2YzAgMjYuMjcgMjEuMyA0Ny41OSA0Ny41NyA0Ny41OWgzNS4yNmM5LjY4IDAgMTMuMiAzLjU4IDEzLjIgOHYxNi4yYzAgNC4yOS0zLjU5IDcuNzgtNy44OCA4LTQ0LjUyIDIuMjgtNjQuMTYgMjQuNzEtOTYuMDUgNzIuNTVsLTYuMzEgOS40N2E3Ljk5NCA3Ljk5NCAwIDAgMS0xMS4wOSAyLjIybC0xMy4zMS04Ljg4YTcuOTk0IDcuOTk0IDAgMCAxLTIuMjItMTEuMDlsNi4zMS05LjQ3YzE1LjczLTIzLjYgMzAuMi00My4yNiA0Ny4zMS01OC4wOC0xNy4yNy01LjUxLTMxLjQtMTguMTItMzguODctMzQuNDUtNi41OSAzLjQxLTEzLjk2IDUuNTItMjEuODcgNS41MmgtMzJjLTEyLjM0IDAtMjMuNDktNC44MS0zMi0xMi40OEM3MS40OCAyNTEuMTkgNjAuMzMgMjU2IDQ4IDI1NkgxNmMtNS42NCAwLTEwLjk3LTEuMTUtMTYtMi45NXY3Ny45M2MwIDMzLjk1IDEzLjQ4IDY2LjUgMzcuNDkgOTAuNTFMNjMuOTkgNDQ4djY0aDI1NS45OHYtNjMuOTZsMzUuOTEtMzUuOTJBOTYuMDM1IDk2LjAzNSAwIDAgMCAzODQgMzQ0LjIxbC0uMDItODguMjJ6bS0zMi4wMS05MC4wOVY0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmgzMmMxMS4yOCAwIDIxLjk0IDIuMzEgMzIgNS45ek0xNiAyMjRoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MTI4YzAgOC44NCA3LjE2IDE2IDE2IDE2em05NS45OSAwaDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTYwYzAgOC44NCA3LjE2IDE2IDE2IDE2elwiXVxufTtcbnZhciBmYUZsYWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmxhZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyNFwiLCBcIk0zNDkuNTY1IDk4Ljc4M0MyOTUuOTc4IDk4Ljc4MyAyNTEuNzIxIDY0IDE4NC4zNDggNjRjLTI0Ljk1NSAwLTQ3LjMwOSA0LjM4NC02OC4wNDUgMTIuMDEzYTU1Ljk0NyA1NS45NDcgMCAwIDAgMy41ODYtMjMuNTYyQzExOC4xMTcgMjQuMDE1IDk0LjgwNiAxLjIwNiA2Ni4zMzguMDQ4IDM0LjM0NS0xLjI1NCA4IDI0LjI5NiA4IDU2YzAgMTkuMDI2IDkuNDk3IDM1LjgyNSAyNCA0NS45NDVWNDg4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTk0LjRjMjguMzExLTEyLjA2NCA2My41ODItMjIuMTIyIDExNC40MzUtMjIuMTIyIDUzLjU4OCAwIDk3Ljg0NCAzNC43ODMgMTY1LjIxNyAzNC43ODMgNDguMTY5IDAgODYuNjY3LTE2LjI5NCAxMjIuNTA1LTQwLjg1OEM1MDYuODQgMzU5LjQ1MiA1MTIgMzQ5LjU3MSA1MTIgMzM5LjA0NXYtMjQzLjFjMC0yMy4zOTMtMjQuMjY5LTM4Ljg3LTQ1LjQ4NS0yOS4wMTYtMzQuMzM4IDE1Ljk0OC03Ni40NTQgMzEuODU0LTExNi45NSAzMS44NTR6XCJdXG59O1xudmFyIGZhRmxhZ0NoZWNrZXJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmbGFnLWNoZWNrZXJlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjExZVwiLCBcIk0yNDMuMiAxODkuOVYyNThjMjYuMSA1LjkgNDkuMyAxNS42IDczLjYgMjIuM3YtNjguMmMtMjYtNS44LTQ5LjQtMTUuNS03My42LTIyLjJ6bTIyMy4zLTEyM2MtMzQuMyAxNS45LTc2LjUgMzEuOS0xMTcgMzEuOUMyOTYgOTguOCAyNTEuNyA2NCAxODQuMyA2NGMtMjUgMC00Ny4zIDQuNC02OCAxMiAyLjgtNy4zIDQuMS0xNS4yIDMuNi0yMy42QzExOC4xIDI0IDk0LjggMS4yIDY2LjMgMCAzNC4zLTEuMyA4IDI0LjMgOCA1NmMwIDE5IDkuNSAzNS44IDI0IDQ1LjlWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0di05NC40YzI4LjMtMTIuMSA2My42LTIyLjEgMTE0LjQtMjIuMSA1My42IDAgOTcuOCAzNC44IDE2NS4yIDM0LjggNDguMiAwIDg2LjctMTYuMyAxMjIuNS00MC45IDguNy02IDEzLjgtMTUuOCAxMy44LTI2LjRWOTUuOWMuMS0yMy4zLTI0LjItMzguOC00NS40LTI5ek0xNjkuNiAzMjUuNWMtMjUuOCAyLjctNTAgOC4yLTczLjYgMTYuNnYtNzAuNWMyNi4yLTkuMyA0Ny41LTE1IDczLjYtMTcuNHpNNDY0IDE5MWMtMjMuNiA5LjgtNDYuMyAxOS41LTczLjYgMjMuOVYyODZjMjQuOC0zLjQgNTEuNC0xMS44IDczLjYtMjZ2NzAuNWMtMjUuMSAxNi4xLTQ4LjUgMjQuNy03My42IDI3LjFWMjg2Yy0yNyAzLjctNDcuOSAxLjUtNzMuNi01LjZ2NjcuNGMtMjMuOS03LjQtNDcuMy0xNi43LTczLjYtMjEuM1YyNThjLTE5LjctNC40LTQwLjgtNi44LTczLjYtMy44di03MGMtMjIuNCAzLjEtNDQuNiAxMC4yLTczLjYgMjAuOXYtNzAuNWMzMy4yLTEyLjIgNTAuMS0xOS44IDczLjYtMjJ2NzEuNmMyNy0zLjcgNDguNC0xLjMgNzMuNiA1Ljd2LTY3LjRjMjMuNyA3LjQgNDcuMiAxNi43IDczLjYgMjEuM3Y2OC40YzIzLjcgNS4zIDQ3LjYgNi45IDczLjYgMi43VjE0M2MyNy00LjggNTIuMy0xMy42IDczLjYtMjIuNXpcIl1cbn07XG52YXIgZmFGbGFnVXNhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZsYWctdXNhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzRkXCIsIFwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMydjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyQzY0IDE0LjMgNDkuNyAwIDMyIDB6bTI2Ny45IDMwMy42Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xVjM4NGMxODUuNy05Mi4yIDIyMS43IDUzLjMgMzk3LjUtMjMuMSAxMS40LTUgMTguNS0xNi41IDE4LjUtMjguOHYtMzZjLTQzLjYgMTcuMy04MC4yIDI0LjEtMTEyLjEgMjQuMS0zNy40LS4xLTY4LjktOC40LTEwMC0xNi42em0wLTk2Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xdjYxLjVjOTQuOC0zNy42IDE1NC42LTIyLjcgMjEyLjEtNy42IDU3LjIgMTUuMSAxMTEuNyAyOC44IDIwMy45LTExLjFWMjAwYy00My42IDE3LjMtODAuMiAyNC4xLTExMi4xIDI0LjEtMzcuNCAwLTY4LjktOC4zLTEwMC0xNi41em05LjUtMTI1LjljNTEuOCAxNS42IDk3LjQgMjkgMjAyLjYtMjAuMVYzMC44YzAtMjUuMS0yNi44LTM4LjEtNDkuNC0yNi42QzI5MS4zIDkxLjUgMzA1LjQtNjIuMiA5NiAzMi40djE1MS45Yzk0LjgtMzcuNSAxNTQuNi0yMi43IDIxMi4xLTcuNiA1Ny4yIDE1IDExMS43IDI4LjcgMjAzLjktMTEuMVY5Ni43Yy01My42IDIzLjUtOTMuMyAzMS40LTEyNi4xIDMxLjRzLTU5LTcuOC04NS43LTE1LjljLTQtMS4yLTguMS0yLjQtMTIuMS0zLjVWNzUuNWM3LjIgMiAxNC4zIDQuMSAyMS4zIDYuMnpNMTYwIDEyOC4xYy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNTUuOGMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2em02NCA0Ny45Yy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTAtNTUuOWMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2elwiXVxufTtcbnZhciBmYUZsYXNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZsYXNrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGMzXCIsIFwiTTQzNy4yIDQwMy41TDMyMCAyMTVWNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2MTUxTDEwLjggNDAzLjVDLTE4LjUgNDUwLjYgMTUuMyA1MTIgNzAuOSA1MTJoMzA2LjJjNTUuNyAwIDg5LjQtNjEuNSA2MC4xLTEwOC41ek0xMzcuOSAzMjBsNDguMi03Ny42YzMuNy01LjIgNS44LTExLjYgNS44LTE4LjRWNjRoNjR2MTYwYzAgNi45IDIuMiAxMy4yIDUuOCAxOC40bDQ4LjIgNzcuNmgtMTcyelwiXVxufTtcbnZhciBmYUZsdXNoZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmx1c2hlZCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU3OVwiLCBcIk0zNDQgMjAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptLTE5MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODAgMjI0YzAtMzkuOCAzMi4yLTcyIDcyLTcyczcyIDMyLjIgNzIgNzItMzIuMiA3Mi03MiA3Mi03Mi0zMi4yLTcyLTcyem0yMzIgMTc2SDE4NGMtMjEuMiAwLTIxLjItMzIgMC0zMmgxMjhjMjEuMiAwIDIxLjIgMzIgMCAzMnptMzItMTA0Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyIDcyIDMyLjIgNzIgNzItMzIuMiA3Mi03MiA3MnpcIl1cbn07XG52YXIgZmFGb2xkZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9sZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDdiXCIsIFwiTTQ2NCAxMjhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE3NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUZvbGRlck1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci1taW51cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY1ZFwiLCBcIk00NjQgMTI4SDI3MmwtNjQtNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNzZjMC0yNi41MS0yMS40OS00OC00OC00OHptLTk2IDE2OGMwIDguODQtNy4xNiAxNi0xNiAxNkgxNjBjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNmMwLTguODQgNy4xNi0xNiAxNi0xNmgxOTJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTZ6XCJdXG59O1xudmFyIGZhRm9sZGVyT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb2xkZXItb3BlbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3Y1wiLCBcIk01NzIuNjk0IDI5Mi4wOTNMNTAwLjI3IDQxNi4yNDhBNjMuOTk3IDYzLjk5NyAwIDAgMSA0NDQuOTg5IDQ0OEg0NS4wMjVjLTE4LjUyMyAwLTMwLjA2NC0yMC4wOTMtMjAuNzMxLTM2LjA5M2w3Mi40MjQtMTI0LjE1NUE2NCA2NCAwIDAgMSAxNTIgMjU2aDM5OS45NjRjMTguNTIzIDAgMzAuMDY0IDIwLjA5MyAyMC43MyAzNi4wOTN6TTE1MiAyMjRoMzI4di00OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyNzguMDQ2bDY5LjA3Ny0xMTguNDE4Qzg2LjIxNCAyNDIuMjUgMTE3Ljk4OSAyMjQgMTUyIDIyNHpcIl1cbn07XG52YXIgZmFGb2xkZXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci1wbHVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjVlXCIsIFwiTTQ2NCwxMjhIMjcyTDIwOCw2NEg0OEE0OCw0OCwwLDAsMCwwLDExMlY0MDBhNDgsNDgsMCwwLDAsNDgsNDhINDY0YTQ4LDQ4LDAsMCwwLDQ4LTQ4VjE3NkE0OCw0OCwwLDAsMCw0NjQsMTI4Wk0zNTkuNSwyOTZhMTYsMTYsMCwwLDEtMTYsMTZoLTY0djY0YTE2LDE2LDAsMCwxLTE2LDE2aC0xNmExNiwxNiwwLDAsMS0xNi0xNlYzMTJoLTY0YTE2LDE2LDAsMCwxLTE2LTE2VjI4MGExNiwxNiwwLDAsMSwxNi0xNmg2NFYyMDBhMTYsMTYsMCwwLDEsMTYtMTZoMTZhMTYsMTYsMCwwLDEsMTYsMTZ2NjRoNjRhMTYsMTYsMCwwLDEsMTYsMTZaXCJdXG59O1xudmFyIGZhRm9udCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb250JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDMxXCIsIFwiTTQzMiA0MTZoLTIzLjQxTDI3Ny44OCA1My42OUEzMiAzMiAwIDAgMCAyNDcuNTggMzJoLTQ3LjE2YTMyIDMyIDAgMCAwLTMwLjMgMjEuNjlMMzkuNDEgNDE2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTE5LjU4bDIzLjMtNjRoMTUyLjU2bDIzLjMgNjRIMzA0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTE3Ni44NSAyNzJMMjI0IDE0Mi41MSAyNzEuMTUgMjcyelwiXVxufTtcbnZhciBmYUZvbnRBd2Vzb21lTG9nb0Z1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9udC1hd2Vzb21lLWxvZ28tZnVsbCcsXG4gIGljb246IFszOTkyLCA1MTIsIFtcIkZvbnQgQXdlc29tZVwiXSwgXCJmNGU2XCIsIFwiTTQ1NC42IDBINTcuNEMyNS45IDAgMCAyNS45IDAgNTcuNHYzOTcuM0MwIDQ4Ni4xIDI1LjkgNTEyIDU3LjQgNTEyaDM5Ny4zYzMxLjQgMCA1Ny40LTI1LjkgNTcuNC01Ny40VjU3LjRDNTEyIDI1LjkgNDg2LjEgMCA0NTQuNiAwem0tNTguOSAzMjQuOWMwIDQuOC00LjEgNi45LTguOSA4LjktMTkuMiA4LjEtMzkuNyAxNS43LTYxLjUgMTUuNy00MC41IDAtNjguNy00NC44LTE2My4yIDIuNXY1MS44YzAgMzAuMy00NS43IDMwLjItNDUuNyAwdi0yNTBjLTktNy0xNS0xNy45LTE1LTMwLjMgMC0yMSAxNy4xLTM4LjIgMzguMi0zOC4yIDIxIDAgMzguMiAxNy4xIDM4LjIgMzguMiAwIDEyLjItNS44IDIzLjItMTQuOSAzMC4ydjIxYzM3LjEtMTIgNjUuNS0zNC40IDE0Ni4xLTMuNCAyNi42IDExLjQgNjguNy0xNS43IDc2LjUtMTUuNyA1LjUgMCAxMC4zIDQuMSAxMC4zIDguOXYxNjAuNHptNDMyLjktMTc0LjJoLTEzN3Y3MC4xSDgyNWMzOS44IDAgNDAuNCA2Mi4yIDAgNjIuMkg2OTEuNnYxMDUuNmMwIDQ1LjUtNzAuNyA0Ni40LTcwLjcgMFYxMjguM2MwLTIyIDE4LTM5LjggMzkuOC0zOS44aDE2Ny44YzM5LjYgMCA0MC41IDYyLjIuMSA2Mi4yem0xOTEuMSAyMy40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTY5LjkgMCAxNjkuOS0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS42IDAtODIuMS0xMzkuOCAwLTEzOS44IDgyLjUgMCA4Mi40IDEzOS44IDAgMTM5Ljh6bTM3Mi40IDUzLjRjLTE3LjUgMC0zMS40LTEzLjktMzEuNC0zMS40di0xMTdjMC02Mi40LTcyLjYtNTIuNS05OS4xLTE2LjR2MTMzLjRjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjNDMuMy01MS42IDE2Mi40LTYwLjQgMTYyLjQgMzkuM3YxNDEuNWMuMyAzMC40LTMxLjUgMzEuNC0zMS43IDMxLjR6bTE3OS43IDIuOWMtNDQuMyAwLTY4LjMtMjIuOS02OC4zLTY1LjhWMjM1LjJIMTQ4OGMtMzUuNiAwLTM2LjctNTUuMyAwLTU1LjNoMTUuNXYtMzcuM2MwLTQxLjMgNjMuOC00Mi4xIDYzLjggMHYzNy41aDI0LjljMzUuNCAwIDM1LjcgNTUuMyAwIDU1LjNoLTI0Ljl2MTA4LjVjMCAyOS42IDI2LjEgMjYuMyAyNy40IDI2LjMgMzEuNCAwIDUyLjYgNTYuMy0yMi45IDU2LjN6TTE5OTIgMTIzYy0xOS41LTUwLjItOTUuNS01MC0xMTQuNSAwLTEwNy4zIDI3NS43LTk5LjUgMjUyLjctOTkuNSAyNjIuOCAwIDQyLjggNTguMyA1MS4yIDcyLjEgMTQuNGwxMy41LTM1LjlIMjAwNmwxMyAzNS45YzE0LjIgMzcuNyA3Mi4xIDI3LjIgNzIuMS0xNC40IDAtMTAuMSA1LjMgNi44LTk5LjEtMjYyLjh6bS0xMDguOSAxNzkuMWw1MS43LTE0Mi45IDUxLjggMTQyLjloLTEwMy41em01OTEuMy04NS42bC01My43IDE3Ni4zYy0xMi40IDQxLjItNzIgNDEtODQgMGwtNDIuMy0xMzUuOS00Mi4zIDEzNS45Yy0xMi40IDQwLjktNzIgNDEuMi04NC41IDBsLTU0LjItMTc2LjNjLTEyLjUtMzkuNCA0OS44LTU2LjEgNjAuMi0xNi45TDIyMTMgMzQybDQ1LjMtMTM5LjVjMTAuOS0zMi43IDU5LjYtMzQuNyA3MS4yIDBsNDUuMyAxMzkuNSAzOS4zLTE0Mi40YzEwLjMtMzguMyA3Mi42LTIzLjggNjAuMyAxNi45em0yNzUuNCA3NS4xYzAtNDIuNC0zMy45LTExNy41LTExOS41LTExNy41LTczLjIgMC0xMjQuNCA1Ni4zLTEyNC40IDEyNiAwIDc3LjIgNTUuMyAxMjYuNCAxMjguNSAxMjYuNCAzMS43IDAgOTMtMTEuNSA5My0zOS44IDAtMTguMy0yMS4xLTMxLjUtMzkuMy0yMi40LTQ5LjQgMjYuMi0xMDkgOC40LTExNS45LTQzLjhoMTQ4LjNjMTYuMyAwIDI5LjMtMTMuNCAyOS4zLTI4Ljl6TTI1NzEgMjc3LjdjOS41LTczLjQgMTEzLjktNjguNiAxMTguNiAwSDI1NzF6bTMxNi43IDE0OC44Yy0zMS40IDAtODEuNi0xMC41LTk2LjYtMzEuOS0xMi40LTE3IDIuNS0zOS44IDIxLjgtMzkuOCAxNi4zIDAgMzYuOCAyMi45IDc3LjcgMjIuOSAyNy40IDAgNDAuNC0xMSA0MC40LTI1LjggMC0zOS44LTE0Mi45LTcuNC0xNDIuOS0xMDIgMC00MC40IDM1LjMtNzUuNyA5OC42LTc1LjcgMzEuNCAwIDc0LjEgOS45IDg3LjYgMjkuNCAxMC44IDE0LjgtMS40IDM2LjItMjAuOSAzNi4yLTE1LjEgMC0yNi43LTE3LjMtNjYuMi0xNy4zLTIyLjkgMC0zNy44IDEwLjUtMzcuOCAyMy44IDAgMzUuOSAxNDIuNCA2IDE0Mi40IDEwMy4xLS4xIDQzLjctMzcuNCA3Ny4xLTEwNC4xIDc3LjF6bTI2Ni44LTI1Mi40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTcwLjEgMCAxNjkuNi0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS44IDAtODItMTM5LjggMC0xMzkuOCA4Mi41IDAgODIuNCAxMzkuOCAwIDEzOS44em00NzYuOSAyMlYyNjguN2MwLTUzLjgtNjEuNC00NS44LTg1LjctMTAuNXYxMzRjMCA0MS4zLTYzLjggNDIuMS02My44IDBWMjY4LjdjMC01Mi4xLTU5LjUtNDcuNC04NS43LTEwLjF2MTMzLjZjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjOS45LTE0LjQgNDEuOC0zNy4zIDc4LjYtMzcuMyAzNS4zIDAgNTcuNyAxNi40IDY2LjcgNDMuOCAxMy45LTIxLjggNDUuOC00My44IDgyLjYtNDMuOCA0NC4zIDAgNzAuNyAyMy40IDcwLjcgNzIuN3YxNDUuM2MuNSAxNy4zLTEzLjUgMzEuNC0zMS45IDMxLjQgMy41LjEtMzEuMyAxLjEtMzEuMy0zMS4zek0zOTkyIDI5MS42YzAtNDIuNC0zMi40LTExNy41LTExNy45LTExNy41LTczLjIgMC0xMjcuNSA1Ni4zLTEyNy41IDEyNiAwIDc3LjIgNTguMyAxMjYuNCAxMzEuNiAxMjYuNCAzMS43IDAgOTEuNS0xMS41IDkxLjUtMzkuOCAwLTE4LjMtMjEuMS0zMS41LTM5LjMtMjIuNC00OS40IDI2LjItMTEwLjUgOC40LTExNy41LTQzLjhoMTQ5LjhjMTYuMyAwIDI5LjEtMTMuNCAyOS4zLTI4Ljl6bS0xODAuNS0xMy45YzkuNy03NC40IDExNS45LTY4LjMgMTIwLjEgMGgtMTIwLjF6XCJdXG59O1xudmFyIGZhRm9vdGJhbGxCYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zvb3RiYWxsLWJhbGwnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY0NGVcIiwgXCJNNDgxLjUgNjAuM2MtNC44LTE4LjItMTkuMS0zMi41LTM3LjMtMzcuNEM0MjAuMyAxNi41IDM4MyA4LjkgMzM5LjQgOEw0OTYgMTY0LjhjLS44LTQzLjUtOC4yLTgwLjYtMTQuNS0xMDQuNXptLTQ2NyAzOTEuNGM0LjggMTguMiAxOS4xIDMyLjUgMzcuMyAzNy40IDIzLjkgNi40IDYxLjIgMTQgMTA0LjggMTQuOUwwIDM0Ny4yYy44IDQzLjUgOC4yIDgwLjYgMTQuNSAxMDQuNXpNNC4yIDI4My40TDIyMC40IDUwMGMxMzIuNS0xOS40IDI0OC44LTExOC43IDI3MS41LTI3MS40TDI3NS42IDEyQzE0My4xIDMxLjQgMjYuOCAxMzAuNyA0LjIgMjgzLjR6bTMxNy4zLTEyMy42YzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMTEuMyAxMS4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTI4LjMgMjguMyAyOC4zIDI4LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0yOC4zLTI4LjMtMjIuNiAyMi43IDI4LjMgMjguM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBMMjQ4IDI3OC42bC0yMi42IDIyLjYgMjguMyAyOC4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtMjguMy0yOC4zLTI4LjMgMjguM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtMTEuMy0xMS4zYy0zLjEtMy4xLTMuMS04LjIgMC0xMS4zbDI4LjMtMjguMy0yOC4zLTI4LjJjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDIyLjYtMjIuNi0yOC4zLTI4LjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDIyLjYtMjIuNi0yOC4zLTI4LjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDI4LjMtMjguNXpcIl1cbn07XG52YXIgZmFGb3J3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvcndhcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNGVcIiwgXCJNNTAwLjUgMjMxLjRsLTE5Mi0xNjBDMjg3LjkgNTQuMyAyNTYgNjguNiAyNTYgOTZ2MzIwYzAgMjcuNCAzMS45IDQxLjggNTIuNSAyNC42bDE5Mi0xNjBjMTUuMy0xMi44IDE1LjMtMzYuNCAwLTQ5LjJ6bS0yNTYgMGwtMTkyLTE2MEMzMS45IDU0LjMgMCA2OC42IDAgOTZ2MzIwYzAgMjcuNCAzMS45IDQxLjggNTIuNSAyNC42bDE5Mi0xNjBjMTUuMy0xMi44IDE1LjMtMzYuNCAwLTQ5LjJ6XCJdXG59O1xudmFyIGZhRnJvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmcm9nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTJlXCIsIFwiTTQ0Ni41MyA5Ny40M0M0MzkuNjcgNjAuMjMgNDA3LjE5IDMyIDM2OCAzMmMtMzkuMjMgMC03MS43MiAyOC4yOS03OC41NCA2NS41NEMxMjYuNzUgMTEyLjk2LS41IDI1MC4xMiAwIDQxNi45OC4xMSA0NTEuOSAyOS4wOCA0ODAgNjQgNDgwaDMwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC03OS40OWwzNS44LTQ4LjMzYzI0LjE0LTM2LjIzIDEwLjM1LTg4LjI4LTMzLjcxLTEwNi42LTIzLjg5LTkuOTMtNTEuNTUtNC42NS03Mi4yNCAxMC44OGwtMzIuNzYgMjQuNTljLTcuMDYgNS4zMS0xNy4wOSAzLjkxLTIyLjQxLTMuMTktNS4zLTcuMDgtMy44OC0xNy4xMSAzLjE5LTIyLjQxbDM0Ljc4LTI2LjA5YzM2Ljg0LTI3LjY2IDg4LjI4LTI3LjYyIDEyNS4xMyAwIDEwLjg3IDguMTUgNDUuODcgMzkuMDYgNDAuOCA5My4yMUw0NjkuNjIgNDgwSDU2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01My42M2wtOTguNTItMTA0LjY4IDE1NC40NC04Ni42NUE1OC4xNiA1OC4xNiAwIDAgMCA1NzYgMTg5Ljk0YzAtMjEuNC0xMS43Mi00MC45NS0zMC40OC01MS4yMy00MC41Ni0yMi4yMi05OC45OS00MS4yOC05OC45OS00MS4yOHpNMzY4IDEzNmMtMTMuMjYgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc0LTI0IDI0LTI0IDEzLjI1IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIl1cbn07XG52YXIgZmFGcm93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmcm93bicsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjExOVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0tMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNzAuMiAyMTguMkMzMTUuOCAzNjcuNCAyODIuOSAzNTIgMjQ4IDM1MnMtNjcuOCAxNS40LTkwLjIgNDIuMmMtMTMuNSAxNi4zLTM4LjEtNC4yLTI0LjYtMjAuNUMxNjEuNyAzMzkuNiAyMDMuNiAzMjAgMjQ4IDMyMHM4Ni4zIDE5LjYgMTE0LjcgNTMuOGMxMy42IDE2LjItMTEgMzYuNy0yNC41IDIwLjR6XCJdXG59O1xudmFyIGZhRnJvd25PcGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zyb3duLW9wZW4nLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1N2FcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTM2IDIwOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptMTg3LjMgMTgzLjNjLTMxLjItOS42LTU5LjQtMTUuMy03NS4zLTE1LjNzLTQ0LjEgNS43LTc1LjMgMTUuM2MtMTEuNSAzLjUtMjIuNS02LjMtMjAuNS0xOC4xIDctNDAgNjAuMS02MS4yIDk1LjgtNjEuMnM4OC44IDIxLjMgOTUuOCA2MS4yYzIgMTEuOS05LjEgMjEuNi0yMC41IDE4LjF6TTMyOCAyNDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYUZ1bm5lbERvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmdW5uZWwtZG9sbGFyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjYyXCIsIFwiTTQzMy40NiAxNjUuOTRsMTAxLjItMTExLjg3QzU1NC42MSAzNC4xMiA1NDAuNDggMCA1MTIuMjYgMEgzMS43NEMzLjUyIDAtMTAuNjEgMzQuMTIgOS4zNCA1NC4wN0wxOTIgMjU2djE1NS45MmMwIDEyLjU5IDUuOTMgMjQuNDQgMTYgMzJsNzkuOTkgNjBjMjAuODYgMTUuNjQgNDguNDcgNi45NyA1OS4yMi0xMy41N0MzMTAuOCA0NTUuMzggMjg4IDQwNi4zNSAyODggMzUyYzAtODkuNzkgNjIuMDUtMTY1LjE3IDE0NS40Ni0xODYuMDZ6TTQ4MCAxOTJjLTg4LjM3IDAtMTYwIDcxLjYzLTE2MCAxNjBzNzEuNjMgMTYwIDE2MCAxNjAgMTYwLTcxLjYzIDE2MC0xNjAtNzEuNjMtMTYwLTE2MC0xNjB6bTE2IDIzOS44OFY0NDhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTYuMjljLTExLjI5LS41OC0yMi4yNy00LjUyLTMxLjM3LTExLjM1LTMuOS0yLjkzLTQuMS04Ljc3LS41Ny0xMi4xNGwxMS43NS0xMS4yMWMyLjc3LTIuNjQgNi44OS0yLjc2IDEwLjEzLS43MyAzLjg3IDIuNDIgOC4yNiAzLjcyIDEyLjgyIDMuNzJoMjguMTFjNi41IDAgMTEuOC01LjkyIDExLjgtMTMuMTkgMC01Ljk1LTMuNjEtMTEuMTktOC43Ny0xMi43M2wtNDUtMTMuNWMtMTguNTktNS41OC0zMS41OC0yMy40Mi0zMS41OC00My4zOSAwLTI0LjUyIDE5LjA1LTQ0LjQ0IDQyLjY3LTQ1LjA3VjI1NmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNi4yOWMxMS4yOS41OCAyMi4yNyA0LjUxIDMxLjM3IDExLjM1IDMuOSAyLjkzIDQuMSA4Ljc3LjU3IDEyLjE0bC0xMS43NSAxMS4yMWMtMi43NyAyLjY0LTYuODkgMi43Ni0xMC4xMy43My0zLjg3LTIuNDMtOC4yNi0zLjcyLTEyLjgyLTMuNzJoLTI4LjExYy02LjUgMC0xMS44IDUuOTItMTEuOCAxMy4xOSAwIDUuOTUgMy42MSAxMS4xOSA4Ljc3IDEyLjczbDQ1IDEzLjVjMTguNTkgNS41OCAzMS41OCAyMy40MiAzMS41OCA0My4zOSAwIDI0LjUzLTE5LjA0IDQ0LjQ0LTQyLjY3IDQ1LjA3elwiXVxufTtcbnZhciBmYUZ1dGJvbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmdXRib2wnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZTNcIiwgXCJNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6bS00OCAwbC0uMDAzLS4yODItMjYuMDY0IDIyLjc0MS02Mi42NzktNTguNSAxNi40NTQtODQuMzU1IDM0LjMwMyAzLjA3MmMtMjQuODg5LTM0LjIxNi02MC4wMDQtNjAuMDg5LTEwMC43MDktNzMuMTQxbDEzLjY1MSAzMS45MzlMMjU2IDEzOWwtNzQuOTUzLTQxLjUyNSAxMy42NTEtMzEuOTM5Yy00MC42MzEgMTMuMDI4LTc1Ljc4IDM4Ljg3LTEwMC43MDkgNzMuMTQxbDM0LjU2NS0zLjA3MyAxNi4xOTIgODQuMzU1LTYyLjY3OCA1OC41LTI2LjA2NC0yMi43NDEtLjAwMy4yODJjMCA0My4wMTUgMTMuNDk3IDgzLjk1MiAzOC40NzIgMTE3Ljk5MWw3LjcwNC0zMy44OTcgODUuMTM4IDEwLjQ0NyAzNi4zMDEgNzcuODI2LTI5LjkwMiAxNy43ODZjNDAuMjAyIDEzLjEyMiA4NC4yOSAxMy4xNDggMTI0LjU3MiAwbC0yOS45MDItMTcuNzg2IDM2LjMwMS03Ny44MjYgODUuMTM4LTEwLjQ0NyA3LjcwNCAzMy44OTdDNDQyLjUwMyAzMzkuOTUyIDQ1NiAyOTkuMDE1IDQ1NiAyNTZ6bS0yNDguMTAyIDY5LjU3MWwtMjkuODk0LTkxLjMxMkwyNTYgMTc3LjczMmw3Ny45OTYgNTYuNTI3LTI5LjYyMiA5MS4zMTJoLTk2LjQ3NnpcIl1cbn07XG52YXIgZmFHYW1lcGFkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhbWVwYWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYxMWJcIiwgXCJNNDgwLjA3IDk2SDE2MGExNjAgMTYwIDAgMSAwIDExNC4yNCAyNzJoOTEuNTJBMTYwIDE2MCAwIDEgMCA0ODAuMDcgOTZ6TTI0OCAyNjhhMTIgMTIgMCAwIDEtMTIgMTJoLTUydjUyYTEyIDEyIDAgMCAxLTEyIDEyaC0yNGExMiAxMiAwIDAgMS0xMi0xMnYtNTJIODRhMTIgMTIgMCAwIDEtMTItMTJ2LTI0YTEyIDEyIDAgMCAxIDEyLTEyaDUydi01MmExMiAxMiAwIDAgMSAxMi0xMmgyNGExMiAxMiAwIDAgMSAxMiAxMnY1Mmg1MmExMiAxMiAwIDAgMSAxMiAxMnptMjE2IDc2YTQwIDQwIDAgMSAxIDQwLTQwIDQwIDQwIDAgMCAxLTQwIDQwem02NC05NmE0MCA0MCAwIDEgMSA0MC00MCA0MCA0MCAwIDAgMS00MCA0MHpcIl1cbn07XG52YXIgZmFHYXNQdW1wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhcy1wdW1wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTJmXCIsIFwiTTMzNiA0NDhIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzIwYzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em0xNTcuMi0zNDAuN2wtODEtODFjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xMS4zIDExLjNjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42TDQxNiA5Ny45VjE2MGMwIDI4LjEgMjAuOSA1MS4zIDQ4IDU1LjJWMzc2YzAgMTMuMi0xMC44IDI0LTI0IDI0cy0yNC0xMC44LTI0LTI0di0zMmMwLTQ4LjYtMzkuNC04OC04OC04OGgtOFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg5NkM2MC43IDAgMzIgMjguNyAzMiA2NHYzNTJoMjg4VjMwNGg4YzIyLjEgMCA0MCAxNy45IDQwIDQwdjI3LjhjMCAzNy43IDI3IDcyIDY0LjUgNzUuOSA0MyA0LjMgNzkuNS0yOS41IDc5LjUtNzEuN1YxNTIuNmMwLTE3LTYuOC0zMy4zLTE4LjgtNDUuM3pNMjU2IDE5Mkg5NlY2NGgxNjB2MTI4elwiXVxufTtcbnZhciBmYUdhdmVsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhdmVsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGUzXCIsIFwiTTUwNC45NzEgMTk5LjM2MmwtMjIuNjI3LTIyLjYyN2MtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwbC01LjY1NyA1LjY1N0wzMjkuNjA4IDY5LjI1NWw1LjY1Ny01LjY1N2M5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMMzEyLjYzOCA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwTDE1NC4yNDYgMTMxLjQ4Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsNS42NTctNS42NTcgMzkuNTk4IDM5LjU5OC04MS4wNCA4MS4wNC01LjY1Ny01LjY1N2MtMTIuNDk3LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NSAwTDkuMzczIDQxMi4xMThjLTEyLjQ5NyAxMi40OTctMTIuNDk3IDMyLjc1OCAwIDQ1LjI1NWw0NS4yNTUgNDUuMjU1YzEyLjQ5NyAxMi40OTcgMzIuNzU4IDEyLjQ5NyA0NS4yNTUgMGwxMTQuNzQ1LTExNC43NDVjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU4IDAtNDUuMjU1bC01LjY1Ny01LjY1NyA4MS4wNC04MS4wNCAzOS41OTggMzkuNTk4LTUuNjU3IDUuNjU3Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsMTI0LjQ1MS0xMjQuNDUxYzkuMzcyLTkuMzcyIDkuMzcyLTI0LjU2OCAwLTMzLjk0MXpcIl1cbn07XG52YXIgZmFHZW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2VtJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmM2E1XCIsIFwiTTQ4NS41IDBMNTc2IDE2MEg0NzQuOUw0MDUuNyAwaDc5Ljh6bS0xMjggMGw2OS4yIDE2MEgxNDkuM0wyMTguNSAwaDEzOXptLTI2NyAwaDc5LjhsLTY5LjIgMTYwSDBMOTAuNSAwek0wIDE5MmgxMDAuN2wxMjMgMjUxLjdjMS41IDMuMS0yLjcgNS45LTUgMy4zTDAgMTkyem0xNDguMiAwaDI3OS42bC0xMzcgMzE4LjJjLTEgMi40LTQuNSAyLjQtNS41IDBMMTQ4LjIgMTkyem0yMDQuMSAyNTEuN2wxMjMtMjUxLjdINTc2TDM1Ny4zIDQ0Ni45Yy0yLjMgMi43LTYuNS0uMS01LTMuMnpcIl1cbn07XG52YXIgZmFHZW5kZXJsZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dlbmRlcmxlc3MnLFxuICBpY29uOiBbMjg4LCA1MTIsIFtdLCBcImYyMmRcIiwgXCJNMTQ0IDE3NmM0NC4xIDAgODAgMzUuOSA4MCA4MHMtMzUuOSA4MC04MCA4MC04MC0zNS45LTgwLTgwIDM1LjktODAgODAtODBtMC02NEM2NC41IDExMiAwIDE3Ni41IDAgMjU2czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NC02NC41LTE0NC0xNDQtMTQ0elwiXVxufTtcbnZhciBmYUdob3N0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dob3N0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNmUyXCIsIFwiTTE4Ni4xLjA5QzgxLjAxIDMuMjQgMCA5NC45MiAwIDIwMC4wNXYyNjMuOTJjMCAxNC4yNiAxNy4yMyAyMS4zOSAyNy4zMSAxMS4zMWwyNC45Mi0xOC41M2M2LjY2LTQuOTUgMTYtMy45OSAyMS41MSAyLjIxbDQyLjk1IDQ4LjM1YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNDAuNzItNDUuODVjNi4zNy03LjE3IDE3LjU2LTcuMTcgMjMuOTIgMGw0MC43MiA0NS44NWM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDQyLjk1LTQ4LjM1YzUuNTEtNi4yIDE0Ljg1LTcuMTcgMjEuNTEtMi4yMWwyNC45MiAxOC41M2MxMC4wOCAxMC4wOCAyNy4zMSAyLjk0IDI3LjMxLTExLjMxVjE5MkMzODQgODQgMjk0LjgzLTMuMTcgMTg2LjEuMDl6TTEyOCAyMjRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTEyOCAwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYUdpZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2lmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA2YlwiLCBcIk0zMiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTYwVjMyMEgzMnYxMjh6bTI1NiAzMmgxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzIwSDI4OHYxNjB6bTE5Mi0zMjBoLTQyLjFjNi4yLTEyLjEgMTAuMS0yNS41IDEwLjEtNDAgMC00OC41LTM5LjUtODgtODgtODgtNDEuNiAwLTY4LjUgMjEuMy0xMDMgNjguMy0zNC41LTQ3LTYxLjQtNjguMy0xMDMtNjguMy00OC41IDAtODggMzkuNS04OCA4OCAwIDE0LjUgMy44IDI3LjkgMTAuMSA0MEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODBjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMzI2LjEgMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGMxOS45IDAgMzQuNiAzLjMgODYuMSA4MGgtODYuMXptMjA2LjEgMGgtODYuMWM1MS40LTc2LjUgNjUuNy04MCA4Ni4xLTgwIDIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwelwiXVxufTtcbnZhciBmYUdpZnRzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dpZnRzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzljXCIsIFwiTTI0MC42IDE5NC4xYzEuOS0zMC44IDE3LjMtNjEuMiA0NC03OS44QzI3OS40IDEwMy41IDI2OC43IDk2IDI1NiA5NmgtMjkuNGwzMC43LTIyYzcuMi01LjEgOC45LTE1LjEgMy43LTIyLjNsLTkuMy0xM2MtNS4xLTcuMi0xNS4xLTguOS0yMi4zLTMuN2wtMzIgMjIuOSAxMS41LTMwLjZjMy4xLTguMy0xLjEtMTcuNS05LjQtMjAuNmwtMTUtNS42Yy04LjMtMy4xLTE3LjUgMS4xLTIwLjYgOS40bC0xOS45IDUzLTE5LjktNTMuMUMxMjEgMi4xIDExMS44LTIuMSAxMDMuNSAxbC0xNSA1LjZDODAuMiA5LjcgNzYgMTkgNzkuMiAyNy4ybDExLjUgMzAuNkw1OC42IDM1Yy03LjItNS4xLTE3LjItMy41LTIyLjMgMy43bC05LjMgMTNjLTUuMSA3LjItMy41IDE3LjIgMy43IDIyLjNsMzAuNyAyMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2OC45Yy01LjUtOS41LTguOS0yMC4zLTguOS0zMlYyNTZjMC0yOS45IDIwLjgtNTUgNDguNi02MS45ek0yMjQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2MFYzODRIMjI0djk2em0yMjQgMzJoMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMydi05Nkg0NDh2MTI4em0xNjAtMjg4aC0yMC40YzIuNi03LjYgNC40LTE1LjUgNC40LTIzLjggMC0zNS41LTI3LTcyLjItNzIuMS03Mi4yLTQ4LjEgMC03NS45IDQ3LjctODcuOSA3NS4zLTEyLjEtMjcuNi0zOS45LTc1LjMtODcuOS03NS4zLTQ1LjEgMC03Mi4xIDM2LjctNzIuMSA3Mi4yIDAgOC4zIDEuNyAxNi4yIDQuNCAyMy44SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoMTkyVjIyNGgxNS4zbC43LS4yLjcuMkg0NDh2MTI4aDE5MnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0yNzIgMGMtMi43LTEuNC01LjEtMy03LjItNC44LTcuMy02LjQtOC44LTEzLjgtOC44LTE5IDAtOS43IDYuNC0yNC4yIDI0LjEtMjQuMiAxOC43IDAgMzUuNiAyNy40IDQ0LjUgNDhIMzM2em0xOTkuMi00LjhjLTIuMSAxLjgtNC41IDMuNC03LjIgNC44aC01Mi42YzguOC0yMC4zIDI1LjgtNDggNDQuNS00OCAxNy43IDAgMjQuMSAxNC41IDI0LjEgMjQuMiAwIDUuMi0xLjUgMTIuNi04LjggMTl6XCJdXG59O1xudmFyIGZhR2xhc3NDaGVlcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3MtY2hlZXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzlmXCIsIFwiTTYzOS40IDQzMy42Yy04LjQtMjAuNC0zMS44LTMwLjEtNTIuMi0yMS42bC0yMi4xIDkuMi0zOC43LTEwMS45YzQ3LjktMzUgNjQuOC0xMDAuMyAzNC41LTE1Mi44TDQ3NC4zIDE2Yy04LTEzLjktMjUuMS0xOS43LTQwLTEzLjZMMzIwIDQ5LjggMjA1LjcgMi40Yy0xNC45LTYuMi0zMi0uMy00MCAxMy42TDc5LjEgMTY2LjVDNDguOSAyMTkgNjUuNyAyODQuMyAxMTMuNiAzMTkuMkw3NC45IDQyMS4xbC0yMi4xLTkuMmMtMjAuNC04LjUtNDMuNyAxLjItNTIuMiAyMS42LTEuNyA0LjEuMiA4LjggNC4zIDEwLjVsMTYyLjMgNjcuNGM0LjEgMS43IDguNy0uMiAxMC40LTQuMyA4LjQtMjAuNC0xLjItNDMuOC0yMS42LTUyLjNsLTIyLjEtOS4yTDE3My4zIDM0MmM0LjQuNSA4LjggMS4zIDEzLjEgMS4zIDUxLjcgMCA5OS40LTMzLjEgMTEzLjQtODUuM2wyMC4yLTc1LjQgMjAuMiA3NS40YzE0IDUyLjIgNjEuNyA4NS4zIDExMy40IDg1LjMgNC4zIDAgOC43LS44IDEzLjEtMS4zTDUwNiA0NDUuNmwtMjIuMSA5LjJjLTIwLjQgOC41LTMwLjEgMzEuOS0yMS42IDUyLjMgMS43IDQuMSA2LjQgNiAxMC40IDQuM0w2MzUuMSA0NDRjNC0xLjcgNi02LjMgNC4zLTEwLjR6TTI3NS45IDE2Mi4xbC0xMTIuMS00Ni41IDM2LjUtNjMuNCA5NC41IDM5LjItMTguOSA3MC43em04OC4yIDBsLTE4LjktNzAuNyA5NC41LTM5LjIgMzYuNSA2My40LTExMi4xIDQ2LjV6XCJdXG59O1xudmFyIGZhR2xhc3NNYXJ0aW5pID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dsYXNzLW1hcnRpbmknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMDBcIiwgXCJNNTAyLjA1IDU3LjZDNTIzLjMgMzYuMzQgNTA4LjI1IDAgNDc4LjIgMEgzMy44QzMuNzUgMC0xMS4zIDM2LjM0IDkuOTUgNTcuNkwyMjQgMjcxLjY0VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDBoLTU2VjI3MS42NEw1MDIuMDUgNTcuNnpcIl1cbn07XG52YXIgZmFHbGFzc01hcnRpbmlBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3MtbWFydGluaS1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1N2JcIiwgXCJNNTAyLjA1IDU3LjZDNTIzLjMgMzYuMzQgNTA4LjI1IDAgNDc4LjIgMEgzMy44QzMuNzUgMC0xMS4zIDM2LjM0IDkuOTUgNTcuNkwyMjQgMjcxLjY0VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDBoLTU2VjI3MS42NEw1MDIuMDUgNTcuNnpNNDQzLjc3IDQ4bC00OCA0OEgxMTYuMjRsLTQ4LTQ4aDM3NS41M3pcIl1cbn07XG52YXIgZmFHbGFzc1doaXNrZXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3Mtd2hpc2tleScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhMFwiLCBcIk00ODAgMzJIMzJDMTIuNSAzMi0yLjQgNDkuMi4zIDY4LjVsNTYgMzU2LjVjNC41IDMxLjUgMzEuNSA1NC45IDYzLjQgNTQuOWgyNzNjMzEuOCAwIDU4LjktMjMuNCA2My40LTU0LjlsNTUuNi0zNTYuNUM1MTQuNCA0OS4yIDQ5OS41IDMyIDQ4MCAzMnptLTM3LjQgNjRsLTMwIDE5MmgtMzEzTDY5LjQgOTZoMzczLjJ6XCJdXG59O1xudmFyIGZhR2xhc3NlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnbGFzc2VzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTMwXCIsIFwiTTU3NC4xIDI4MC4zN0w1MjguNzUgOTguNjZjLTUuOTEtMjMuNy0yMS41OS00NC4wNS00My01NS44MS0yMS40NC0xMS43My00Ni45Ny0xNC4xMS03MC4xOS02LjMzbC0xNS4yNSA1LjA4Yy04LjM5IDIuNzktMTIuOTIgMTEuODYtMTAuMTIgMjAuMjRsNS4wNiAxNS4xOGMyLjc5IDguMzggMTEuODUgMTIuOTEgMjAuMjMgMTAuMTJsMTMuMTgtNC4zOWMxMC44Ny0zLjYyIDIzLTMuNTcgMzMuMTYgMS43MyAxMC4yOSA1LjM3IDE3LjU3IDE0LjU2IDIwLjM3IDI1LjgybDM4LjQ2IDE1My44MmMtMjIuMTktNi44MS00OS43OS0xMi40Ni04MS4yLTEyLjQ2LTM0Ljc3IDAtNzMuOTggNy4wMi0xMTQuODUgMjYuNzRoLTczLjE4Yy00MC44Ny0xOS43NC04MC4wOC0yNi43NS0xMTQuODYtMjYuNzUtMzEuNDIgMC01OS4wMiA1LjY1LTgxLjIxIDEyLjQ2bDM4LjQ2LTE1My44M2MyLjc5LTExLjI1IDEwLjA5LTIwLjQ1IDIwLjM4LTI1LjgxIDEwLjE2LTUuMyAyMi4yOC01LjM1IDMzLjE1LTEuNzNsMTMuMTcgNC4zOWM4LjM4IDIuNzkgMTcuNDQtMS43NCAyMC4yMy0xMC4xMmw1LjA2LTE1LjE4YzIuOC04LjM4LTEuNzMtMTcuNDUtMTAuMTItMjAuMjRsLTE1LjI1LTUuMDhjLTIzLjIyLTcuNzgtNDguNzUtNS40MS03MC4xOSA2LjMzLTIxLjQxIDExLjc3LTM3LjA5IDMyLjExLTQzIDU1LjhMMS45IDI4MC4zN0E2NC4yMTggNjQuMjE4IDAgMCAwIDAgMjk1Ljg2djcwLjI1QzAgNDI5LjAxIDUxLjU4IDQ4MCAxMTUuMiA0ODBoMzcuMTJjNjAuMjggMCAxMTAuMzctNDUuOTQgMTE0Ljg4LTEwNS4zN2wyLjkzLTM4LjYzaDM1Ljc1bDIuOTMgMzguNjNDMzEzLjMxIDQzNC4wNiAzNjMuNCA0ODAgNDIzLjY4IDQ4MGgzNy4xMmM2My42MiAwIDExNS4yLTUwLjk5IDExNS4yLTExMy44OHYtNzAuMjVjMC01LjIzLS42NC0xMC40My0xLjktMTUuNXptLTM3MC43MiA4OS40MmMtMS45NyAyNS45MS0yNC40IDQ2LjIxLTUxLjA2IDQ2LjIxSDExNS4yQzg2Ljk3IDQxNiA2NCAzOTMuNjIgNjQgMzY2LjExdi0zNy41NGMxOC4xMi02LjQ5IDQzLjQyLTEyLjkyIDcyLjU4LTEyLjkyIDIzLjg2IDAgNDcuMjYgNC4zMyA2OS45MyAxMi45MmwtMy4xMyA0MS4yMnpNNTEyIDM2Ni4xMmMwIDI3LjUxLTIyLjk3IDQ5Ljg4LTUxLjIgNDkuODhoLTM3LjEyYy0yNi42NyAwLTQ5LjEtMjAuMy01MS4wNi00Ni4yMWwtMy4xMy00MS4yMmMyMi42Ny04LjU5IDQ2LjA4LTEyLjkyIDY5Ljk1LTEyLjkyIDI5LjEyIDAgNTQuNDMgNi40NCA3Mi41NSAxMi45M3YzNy41NHpcIl1cbn07XG52YXIgZmFHbG9iZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnbG9iZScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjBhY1wiLCBcIk0zMzYuNSAxNjBDMzIyIDcwLjcgMjg3LjggOCAyNDggOHMtNzQgNjIuNy04OC41IDE1MmgxNzd6TTE1MiAyNTZjMCAyMi4yIDEuMiA0My41IDMuMyA2NGgxODUuM2MyLjEtMjAuNSAzLjMtNDEuOCAzLjMtNjRzLTEuMi00My41LTMuMy02NEgxNTUuM2MtMi4xIDIwLjUtMy4zIDQxLjgtMy4zIDY0em0zMjQuNy05NmMtMjguNi02Ny45LTg2LjUtMTIwLjQtMTU4LTE0MS42IDI0LjQgMzMuOCA0MS4yIDg0LjcgNTAgMTQxLjZoMTA4ek0xNzcuMiAxOC40QzEwNS44IDM5LjYgNDcuOCA5Mi4xIDE5LjMgMTYwaDEwOGM4LjctNTYuOSAyNS41LTEwNy44IDQ5LjktMTQxLjZ6TTQ4Ny40IDE5MkgzNzIuN2MyLjEgMjEgMy4zIDQyLjUgMy4zIDY0cy0xLjIgNDMtMy4zIDY0aDExNC42YzUuNS0yMC41IDguNi00MS44IDguNi02NHMtMy4xLTQzLjUtOC41LTY0ek0xMjAgMjU2YzAtMjEuNSAxLjItNDMgMy4zLTY0SDguNkMzLjIgMjEyLjUgMCAyMzMuOCAwIDI1NnMzLjIgNDMuNSA4LjYgNjRoMTE0LjZjLTItMjEtMy4yLTQyLjUtMy4yLTY0em0zOS41IDk2YzE0LjUgODkuMyA0OC43IDE1MiA4OC41IDE1MnM3NC02Mi43IDg4LjUtMTUyaC0xNzd6bTE1OS4zIDE0MS42YzcxLjQtMjEuMiAxMjkuNC03My43IDE1OC0xNDEuNmgtMTA4Yy04LjggNTYuOS0yNS42IDEwNy44LTUwIDE0MS42ek0xOS4zIDM1MmMyOC42IDY3LjkgODYuNSAxMjAuNCAxNTggMTQxLjYtMjQuNC0zMy44LTQxLjItODQuNy01MC0xNDEuNmgtMTA4elwiXVxufTtcbnZhciBmYUdsb2JlQWZyaWNhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dsb2JlLWFmcmljYScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU3Y1wiLCBcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0xNjAgMjE1LjV2Ni45M2MwIDUuODctMy4zMiAxMS4yNC04LjU3IDEzLjg2bC0xNS4zOSA3LjdhMTUuNDg1IDE1LjQ4NSAwIDAgMS0xNS41My0uOTdsLTE4LjIxLTEyLjE0YTE1LjUyIDE1LjUyIDAgMCAwLTEzLjUtMS44MWwtMi42NS44OGMtOS43IDMuMjMtMTMuNjYgMTQuNzktNy45OSAyMy4zbDEzLjI0IDE5Ljg2YzIuODcgNC4zMSA3LjcxIDYuOSAxMi44OSA2LjloOC4yMWM4LjU2IDAgMTUuNSA2Ljk0IDE1LjUgMTUuNXYxMS4zNGMwIDMuMzUtMS4wOSA2LjYyLTMuMSA5LjNsLTE4Ljc0IDI0Ljk4Yy0xLjQyIDEuOS0yLjM5IDQuMS0yLjgzIDYuNDNsLTQuMyAyMi44M2MtLjYyIDMuMjktMi4yOSA2LjI5LTQuNzYgOC41NmExNTkuNjA4IDE1OS42MDggMCAwIDAtMjUgMjkuMTZsLTEzLjAzIDE5LjU1YTI3Ljc1NiAyNy43NTYgMCAwIDEtMjMuMDkgMTIuMzZjLTEwLjUxIDAtMjAuMTItNS45NC0yNC44Mi0xNS4zNGE3OC45MDIgNzguOTAyIDAgMCAxLTguMzMtMzUuMjlWMzY3LjVjMC04LjU2LTYuOTQtMTUuNS0xNS41LTE1LjVoLTI1Ljg4Yy0xNC40OSAwLTI4LjM4LTUuNzYtMzguNjMtMTZhNTQuNjU5IDU0LjY1OSAwIDAgMS0xNi0zOC42M3YtMTQuMDZjMC0xNy4xOSA4LjEtMzMuMzggMjEuODUtNDMuN2wyNy41OC0yMC42OWE1NC42NjMgNTQuNjYzIDAgMCAxIDMyLjc4LTEwLjkzaC44OWM4LjQ4IDAgMTYuODUgMS45NyAyNC40MyA1Ljc3bDE0LjcyIDcuMzZjMy42OCAxLjg0IDcuOTMgMi4xNCAxMS44My44NGw0Ny4zMS0xNS43N2M2LjMzLTIuMTEgMTAuNi04LjAzIDEwLjYtMTQuNyAwLTguNTYtNi45NC0xNS41LTE1LjUtMTUuNWgtMTAuMDljLTQuMTEgMC04LjA1LTEuNjMtMTAuOTYtNC41NGwtNi45Mi02LjkyYTE1LjQ5MyAxNS40OTMgMCAwIDAtMTAuOTYtNC41NEgxOTkuNWMtOC41NiAwLTE1LjUtNi45NC0xNS41LTE1LjV2LTQuNGMwLTcuMTEgNC44NC0xMy4zMSAxMS43NC0xNS4wNGwxNC40NS0zLjYxYzMuNzQtLjk0IDctMy4yMyA5LjE0LTYuNDRsOC4wOC0xMi4xMWMyLjg3LTQuMzEgNy43MS02LjkgMTIuODktNi45aDI0LjIxYzguNTYgMCAxNS41LTYuOTQgMTUuNS0xNS41di0yMS43QzM1OS4yMyA3MS42MyA0MjIuODYgMTMxLjAyIDQ0MS45MyAyMDhINDIzLjVjLTguNTYgMC0xNS41IDYuOTQtMTUuNSAxNS41elwiXVxufTtcbnZhciBmYUdsb2JlQW1lcmljYXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xvYmUtYW1lcmljYXMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1N2RcIiwgXCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptODIuMjkgMzU3LjZjLTMuOSAzLjg4LTcuOTkgNy45NS0xMS4zMSAxMS4yOC0yLjk5IDMtNS4xIDYuNy02LjE3IDEwLjcxLTEuNTEgNS42Ni0yLjczIDExLjM4LTQuNzcgMTYuODdsLTE3LjM5IDQ2Ljg1Yy0xMy43NiAzLTI4IDQuNjktNDIuNjUgNC42OXYtMjcuMzhjMS42OS0xMi42Mi03LjY0LTM2LjI2LTIyLjYzLTUxLjI1LTYtNi05LjM3LTE0LjE0LTkuMzctMjIuNjN2LTMyLjAxYzAtMTEuNjQtNi4yNy0yMi4zNC0xNi40Ni0yNy45Ny0xNC4zNy03Ljk1LTM0LjgxLTE5LjA2LTQ4LjgxLTI2LjExLTExLjQ4LTUuNzgtMjIuMS0xMy4xNC0zMS42NS0yMS43NWwtLjgtLjcyYTExNC43OTIgMTE0Ljc5MiAwIDAgMS0xOC4wNi0yMC43NGMtOS4zOC0xMy43Ny0yNC42Ni0zNi40Mi0zNC41OS01MS4xNCAyMC40Ny00NS41IDU3LjM2LTgyLjA0IDEwMy4yLTEwMS44OWwyNC4wMSAxMi4wMUMyMDMuNDggODkuNzQgMjE2IDgyLjAxIDIxNiA3MC4xMXYtMTEuM2M3Ljk5LTEuMjkgMTYuMTItMi4xMSAyNC4zOS0yLjQybDI4LjMgMjguM2M2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzTDI2NCAxMTJsLTEwLjM0IDEwLjM0Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNC42OSA0LjY5YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtOCA4YTguMDA4IDguMDA4IDAgMCAxLTUuNjYgMi4zNGgtOC45OWMtMi4wOCAwLTQuMDguODEtNS41OCAyLjI3bC05LjkyIDkuNjVhOC4wMDggOC4wMDggMCAwIDAtMS41OCA5LjMxbDE1LjU5IDMxLjE5YzIuNjYgNS4zMi0xLjIxIDExLjU4LTcuMTUgMTEuNThoLTUuNjRjLTEuOTMgMC0zLjc5LS43LTUuMjQtMS45NmwtOS4yOC04LjA2YTE2LjAxNyAxNi4wMTcgMCAwIDAtMTUuNTUtMy4xbC0zMS4xNyAxMC4zOWExMS45NSAxMS45NSAwIDAgMC04LjE3IDExLjM0YzAgNC41MyAyLjU2IDguNjYgNi42MSAxMC42OWwxMS4wOCA1LjU0YzkuNDEgNC43MSAxOS43OSA3LjE2IDMwLjMxIDcuMTZzMjIuNTkgMjcuMjkgMzIgMzJoNjYuNzVjOC40OSAwIDE2LjYyIDMuMzcgMjIuNjMgOS4zN2wxMy42OSAxMy42OWEzMC41MDMgMzAuNTAzIDAgMCAxIDguOTMgMjEuNTcgNDYuNTM2IDQ2LjUzNiAwIDAgMS0xMy43MiAzMi45OHpNNDE3IDI3NC4yNWMtNS43OS0xLjQ1LTEwLjg0LTUtMTQuMTUtOS45N2wtMTcuOTgtMjYuOTdhMjMuOTcgMjMuOTcgMCAwIDEgMC0yNi42MmwxOS41OS0yOS4zOGMyLjMyLTMuNDcgNS41LTYuMjkgOS4yNC04LjE1bDEyLjk4LTYuNDlDNDQwLjIgMTkzLjU5IDQ0OCAyMjMuODcgNDQ4IDI1NmMwIDguNjctLjc0IDE3LjE2LTEuODIgMjUuNTRMNDE3IDI3NC4yNXpcIl1cbn07XG52YXIgZmFHbG9iZUFzaWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xvYmUtYXNpYScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU3ZVwiLCBcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0tMTEuMzQgMjQwLjIzYy0yLjg5IDQuODItOC4xIDcuNzctMTMuNzIgNy43N2gtLjMxYy00LjI0IDAtOC4zMSAxLjY5LTExLjMxIDQuNjlsLTUuNjYgNS42NmMtMy4xMiAzLjEyLTMuMTIgOC4xOSAwIDExLjMxbDUuNjYgNS42NmMzIDMgNC42OSA3LjA3IDQuNjkgMTEuMzFWMzA0YzAgOC44NC03LjE2IDE2LTE2IDE2aC02LjExYy02LjA2IDAtMTEuNi0zLjQyLTE0LjMxLTguODVsLTIyLjYyLTQ1LjIzYy0yLjQ0LTQuODgtOC45NS01Ljk0LTEyLjgxLTIuMDhsLTE5LjQ3IDE5LjQ2Yy0zIDMtNy4wNyA0LjY5LTExLjMxIDQuNjlINTAuODFDNDkuMTIgMjc3LjU1IDQ4IDI2Ni45MiA0OCAyNTZjMC0xMTAuMjggODkuNzItMjAwIDIwMC0yMDAgMjEuNTEgMCA0Mi4yIDMuNTEgNjEuNjMgOS44MmwtNTAuMTYgMzguNTNjLTUuMTEgMy40MS00LjYzIDExLjA2Ljg2IDEzLjgxbDEwLjgzIDUuNDFjNS40MiAyLjcxIDguODQgOC4yNSA4Ljg0IDE0LjMxVjIxNmMwIDQuNDItMy41OCA4LTggOGgtMy4wNmMtMy4wMyAwLTUuOC0xLjcxLTcuMTUtNC40Mi0xLjU2LTMuMTItNS45Ni0zLjI5LTcuNzYtLjNsLTE3LjM3IDI4Ljk1ek00MDggMzU4LjQzYzAgNC4yNC0xLjY5IDguMzEtNC42OSAxMS4zMWwtOS41NyA5LjU3Yy0zIDMtNy4wNyA0LjY5LTExLjMxIDQuNjloLTE1LjE2Yy00LjI0IDAtOC4zMS0xLjY5LTExLjMxLTQuNjlsLTEzLjAxLTEzLjAxYTI2Ljc2NyAyNi43NjcgMCAwIDAtMjUuNDItNy4wNGwtMjEuMjcgNS4zMmMtMS4yNy4zMi0yLjU3LjQ4LTMuODguNDhoLTEwLjM0Yy00LjI0IDAtOC4zMS0xLjY5LTExLjMxLTQuNjlsLTExLjkxLTExLjkxYTguMDA4IDguMDA4IDAgMCAxLTIuMzQtNS42NnYtMTAuMmMwLTMuMjcgMS45OS02LjIxIDUuMDMtNy40M2wzOS4zNC0xNS43NGMxLjk4LS43OSAzLjg2LTEuODIgNS41OS0zLjA1bDIzLjcxLTE2Ljg5YTcuOTc4IDcuOTc4IDAgMCAxIDQuNjQtMS40OGgxMi4wOWMzLjIzIDAgNi4xNSAxLjk0IDcuMzkgNC45M2w1LjM1IDEyLjg1YTQgNCAwIDAgMCAzLjY5IDIuNDZoMy44YzEuNzggMCAzLjM1LTEuMTggMy44NC0yLjg4bDQuMi0xNC40N2MuNS0xLjcxIDIuMDYtMi44OCAzLjg0LTIuODhoNi4wNmMyLjIxIDAgNCAxLjc5IDQgNHYxMi45M2MwIDIuMTIuODQgNC4xNiAyLjM0IDUuNjZsMTEuOTEgMTEuOTFjMyAzIDQuNjkgNy4wNyA0LjY5IDExLjMxdjI0LjZ6XCJdXG59O1xudmFyIGZhR2xvYmVFdXJvcGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xvYmUtZXVyb3BlJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmN2EyXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTIwMCAyNDhjMCAyMi41LTMuOSA0NC4yLTEwLjggNjQuNGgtMjAuM2MtNC4zIDAtOC40LTEuNy0xMS40LTQuOGwtMzItMzIuNmMtNC41LTQuNi00LjUtMTIuMS4xLTE2LjdsMTIuNS0xMi41di04LjdjMC0zLTEuMi01LjktMy4zLThsLTkuNC05LjRjLTIuMS0yLjEtNS0zLjMtOC0zLjNoLTE2Yy02LjIgMC0xMS4zLTUuMS0xMS4zLTExLjMgMC0zIDEuMi01LjkgMy4zLThsOS40LTkuNGMyLjEtMi4xIDUtMy4zIDgtMy4zaDMyYzYuMiAwIDExLjMtNS4xIDExLjMtMTEuM3YtOS40YzAtNi4yLTUuMS0xMS4zLTExLjMtMTEuM2gtMzYuN2MtOC44IDAtMTYgNy4yLTE2IDE2djQuNWMwIDYuOS00LjQgMTMtMTAuOSAxNS4ybC0zMS42IDEwLjVjLTMuMyAxLjEtNS41IDQuMS01LjUgNy42djIuMmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThzLTMuNi04LTgtOEgyNDdjLTMgMC01LjggMS43LTcuMiA0LjRsLTkuNCAxOC43Yy0yLjcgNS40LTguMiA4LjgtMTQuMyA4LjhIMTk0Yy04LjggMC0xNi03LjItMTYtMTZWMTk5YzAtNC4yIDEuNy04LjMgNC43LTExLjNsMjAuMS0yMC4xYzQuNi00LjYgNy4yLTEwLjkgNy4yLTE3LjUgMC0zLjQgMi4yLTYuNSA1LjUtNy42bDQwLTEzLjNjMS43LS42IDMuMi0xLjUgNC40LTIuN2wyNi44LTI2LjhjMi4xLTIuMSAzLjMtNSAzLjMtOCAwLTYuMi01LjEtMTEuMy0xMS4zLTExLjNIMjU4bC0xNiAxNnY4YzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOHYtMjBjMC0yLjUgMS4yLTQuOSAzLjItNi40bDI4LjktMjEuN2MxLjktLjEgMy44LS4zIDUuNy0uM0MzNTguMyA1NiA0NDggMTQ1LjcgNDQ4IDI1NnpNMTMwLjEgMTQ5LjFjMC0zIDEuMi01LjkgMy4zLThsMjUuNC0yNS40YzIuMS0yLjEgNS0zLjMgOC0zLjMgNi4yIDAgMTEuMyA1LjEgMTEuMyAxMS4zdjE2YzAgMy0xLjIgNS45LTMuMyA4bC05LjQgOS40Yy0yLjEgMi4xLTUgMy4zLTggMy4zaC0xNmMtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zem0xMjggMzA2LjR2LTcuMWMwLTguOC03LjItMTYtMTYtMTZoLTIwLjJjLTEwLjggMC0yNi43LTUuMy0zNS40LTExLjhsLTIyLjItMTYuN2MtMTEuNS04LjYtMTguMi0yMi4xLTE4LjItMzYuNHYtMjMuOWMwLTE2IDguNC0zMC44IDIyLjEtMzlsNDIuOS0yNS43YzcuMS00LjIgMTUuMi02LjUgMjMuNC02LjVoMzEuMmMxMC45IDAgMjEuNCAzLjkgMjkuNiAxMC45bDQzLjIgMzcuMWgxOC4zYzguNSAwIDE2LjYgMy40IDIyLjYgOS40bDE3LjMgMTcuM2MzLjQgMy40IDguMSA1LjMgMTIuOSA1LjNINDIzYy0zMi40IDU4LjktOTMuOCA5OS41LTE2NC45IDEwMy4xelwiXVxufTtcbnZhciBmYUdvbGZCYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dvbGYtYmFsbCcsXG4gIGljb246IFs0MTYsIDUxMiwgW10sIFwiZjQ1MFwiLCBcIk05NiA0MTZoMjI0YzAgMTcuNy0xNC4zIDMyLTMyIDMyaC0xNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MjBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi0yMGMwLTE3LjctMTQuMy0zMi0zMi0zMmgtMTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0zMjAtMjA4YzAgNzQuMi0zOSAxMzkuMi05Ny41IDE3NmgtMjIxQzM5IDM0Ny4yIDAgMjgyLjIgMCAyMDggMCA5My4xIDkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4em0tMTgwLjEgNDMuOWMxOC4zIDAgMzMuMS0xNC44IDMzLjEtMzMuMSAwLTE0LjQtOS4zLTI2LjMtMjIuMS0zMC45IDkuNiAyNi44LTE1LjYgNTEuMy00MS45IDQxLjkgNC42IDEyLjggMTYuNSAyMi4xIDMwLjkgMjIuMXptNDkuMSA0Ni45YzAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xIDE4LjMgMCAzMy4xLTE0LjkgMzMuMS0zMy4xem02NC02NGMwLTE0LjQtOS4zLTI2LjMtMjIuMS0zMC45IDkuNiAyNi44LTE1LjYgNTEuMy00MS45IDQxLjkgNC42IDEyLjggMTYuNSAyMi4xIDMwLjkgMjIuMSAxOC4zIDAgMzMuMS0xNC45IDMzLjEtMzMuMXpcIl1cbn07XG52YXIgZmFHb3B1cmFtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dvcHVyYW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NjRcIiwgXCJNNDk2IDM1MmgtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNmgtMTZ2LTgwYzAtOC44LTcuMi0xNi0xNi0xNmgtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTZoLTY0VjE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE2aC02NFYxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxNmgtNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2Uzk2IDcuMiA5NiAxNnYxMTJIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY4MEg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djExMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djEyOGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzUyaDMyVjIyNGgzMnYtOTZoMzJ2OTZoLTMydjEyOGgtMzJ2MTYwaDgwdi04MGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2djgwaDgwVjM1MmgtMzJWMjI0aC0zMnYtOTZoMzJ2OTZoMzJ2MTI4aDMydjE2MGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNnpNMjMyIDE3NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djQ4aC00OHptNTYgMTc2aC02NHYtNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnpcIl1cbn07XG52YXIgZmFHcmFkdWF0aW9uQ2FwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyYWR1YXRpb24tY2FwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMTlkXCIsIFwiTTYyMi4zNCAxNTMuMkwzNDMuNCA2Ny41Yy0xNS4yLTQuNjctMzEuNi00LjY3LTQ2Ljc5IDBMMTcuNjYgMTUzLjJjLTIzLjU0IDcuMjMtMjMuNTQgMzguMzYgMCA0NS41OWw0OC42MyAxNC45NGMtMTAuNjcgMTMuMTktMTcuMjMgMjkuMjgtMTcuODggNDYuOUMzOC43OCAyNjYuMTUgMzIgMjc2LjExIDMyIDI4OGMwIDEwLjc4IDUuNjggMTkuODUgMTMuODYgMjUuNjVMMjAuMzMgNDI4LjUzQzE4LjExIDQzOC41MiAyNS43MSA0NDggMzUuOTQgNDQ4aDU2LjExYzEwLjI0IDAgMTcuODQtOS40OCAxNS42Mi0xOS40N0w4Mi4xNCAzMTMuNjVDOTAuMzIgMzA3Ljg1IDk2IDI5OC43OCA5NiAyODhjMC0xMS41Ny02LjQ3LTIxLjI1LTE1LjY2LTI2Ljg3Ljc2LTE1LjAyIDguNDQtMjguMyAyMC42OS0zNi43MkwyOTYuNiAyODQuNWM5LjA2IDIuNzggMjYuNDQgNi4yNSA0Ni43OSAwbDI3OC45NS04NS43YzIzLjU1LTcuMjQgMjMuNTUtMzguMzYgMC00NS42ek0zNTIuNzkgMzE1LjA5Yy0yOC41MyA4Ljc2LTUyLjg0IDMuOTItNjUuNTkgMGwtMTQ1LjAyLTQ0LjU1TDEyOCAzODRjMCAzNS4zNSA4NS45NiA2NCAxOTIgNjRzMTkyLTI4LjY1IDE5Mi02NGwtMTQuMTgtMTEzLjQ3LTE0NS4wMyA0NC41NnpcIl1cbn07XG52YXIgZmFHcmVhdGVyVGhhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmVhdGVyLXRoYW4nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1MzFcIiwgXCJNMzY1LjUyIDIwOS44NUw1OS4yMiA2Ny4wMWMtMTYuMDYtNy40OS0zNS4xNS0uNTQtNDIuNjQgMTUuNTJMMy4wMSAxMTEuNjFjLTcuNDkgMTYuMDYtLjU0IDM1LjE1IDE1LjUyIDQyLjY0TDIzNi45NiAyNTYuMSAxOC40OSAzNTcuOTlDMi40NyAzNjUuNDYtNC40NiAzODQuNSAzLjAxIDQwMC41MmwxMy41MiAyOUMyNCA0NDUuNTQgNDMuMDQgNDUyLjQ3IDU5LjA2IDQ0NWwzMDYuNDctMTQyLjkxYTMyLjAwMyAzMi4wMDMgMCAwIDAgMTguNDgtMjl2LTM0LjIzYy0uMDEtMTIuNDUtNy4yMS0yMy43Ni0xOC40OS0yOS4wMXpcIl1cbn07XG52YXIgZmFHcmVhdGVyVGhhbkVxdWFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyZWF0ZXItdGhhbi1lcXVhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUzMlwiLCBcIk01NS4yMiAxMDcuNjlsMTc1LjU2IDY4LjA5LTE3NS40NCA2OC4wNWMtMTguMzkgNi4wMy0yNy44OCAyNC4zOS0yMS4yIDQxbDEyLjA5IDMwLjA4YzYuNjggMTYuNjEgMjYuOTkgMjUuMTkgNDUuMzggMTkuMTVMMzkzLjAyIDIxNC4yYzEzLjc3LTQuNTIgMjIuOTgtMTYuNjEgMjIuOTgtMzAuMTd2LTE1Ljk2YzAtMTMuNTYtOS4yMS0yNS42NS0yMi45OC0zMC4xN0w5MS4zIDE3LjkyYy0xOC4yOS02LTM4LjUxIDIuNTMtNDUuMTUgMTkuMDZMMzQuMTIgNjYuOWMtNi42NCAxNi41MyAyLjgxIDM0Ljc5IDIxLjEgNDAuNzl6TTQyNCA0MDBIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2NDhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0MDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFHcmltYWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW1hY2UnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1N2ZcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTQ0IDQwMGgtOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ2LThoNDB2NDB6bTAtNTZoLTQwdi04YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDh2NDB6bS04LTEzNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptNzIgMTkyaC00OHYtNDBoNDh2NDB6bTAtNTZoLTQ4di00MGg0OHY0MHptNjQgNTZoLTQ4di00MGg0OHY0MHptMC01NmgtNDh2LTQwaDQ4djQwem02NCA1NmgtNDh2LTQwaDQ4djQwem0wLTU2aC00OHYtNDBoNDh2NDB6bS04LTEwNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTY0IDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmgtOHYtNDBoNDB2OHptMC0yNGgtNDB2LTQwaDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OHpcIl1cbn07XG52YXIgZmFHcmluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW4nLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODBcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptODAgMjU2Yy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuMy0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIl1cbn07XG52YXIgZmFHcmluQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW4tYWx0JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTgxXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTYzLjcgMTI4LjdjNy42LTExLjQgMjQuNy0xMS43IDMyLjcgMCAxMi40IDE4LjQgMTUuMSAzNi45IDE1LjcgNTUuMy0uNSAxOC40LTMuMyAzNi45LTE1LjcgNTUuMy03LjYgMTEuNC0yNC43IDExLjctMzIuNyAwLTEyLjQtMTguNC0xNS4xLTM2LjktMTUuNy01NS4zLjUtMTguNCAzLjMtMzYuOSAxNS43LTU1LjN6bS0xNjAgMGM3LjYtMTEuNCAyNC43LTExLjcgMzIuNyAwIDEyLjQgMTguNCAxNS4xIDM2LjkgMTUuNyA1NS4zLS41IDE4LjQtMy4zIDM2LjktMTUuNyA1NS4zLTcuNiAxMS40LTI0LjcgMTEuNy0zMi43IDAtMTIuNC0xOC40LTE1LjEtMzYuOS0xNS43LTU1LjMuNS0xOC40IDMuMy0zNi45IDE1LjctNTUuM3pNMjQ4IDQzMmMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjggOS4zLTIxLjYgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJdXG59O1xudmFyIGZhR3JpbkJlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3Jpbi1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTgyXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE0NGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy4zLTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptLTE2MCAwYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em04MCAyODBjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS45IDkuNC0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwiXVxufTtcbnZhciBmYUdyaW5CZWFtU3dlYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3Jpbi1iZWFtLXN3ZWF0JyxcbiAgaWNvbjogWzUwNCwgNTEyLCBbXSwgXCJmNTgzXCIsIFwiTTQ1NiAxMjhjMjYuNSAwIDQ4LTIxIDQ4LTQ3IDAtMjAtMjguNS02MC40LTQxLjYtNzcuOC0zLjItNC4zLTkuNi00LjMtMTIuOCAwQzQzNi41IDIwLjYgNDA4IDYxIDQwOCA4MWMwIDI2IDIxLjUgNDcgNDggNDd6bTAgMzJjLTQ0LjEgMC04MC0zNS40LTgwLTc5IDAtNC40LjMtMTQuMiA4LjEtMzIuMkMzNDUgMjMuMSAyOTguMyA4IDI0OCA4IDExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhjMC0zNS4xLTcuNC02OC40LTIwLjUtOTguNi02LjMgMS41LTEyLjcgMi42LTE5LjUgMi42em0tMTI4LThjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTItMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em0tMTYwIDBjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTItMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em04MCAyODBjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMiAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwiXVxufTtcbnZhciBmYUdyaW5IZWFydHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3Jpbi1oZWFydHMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODRcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTAuNCAxODMuNmM2LjctMTcuNiAyNi43LTI2LjcgNDQuOS0yMS45bDcuMSAxLjkgMi03LjFjNS0xOC4xIDIyLjgtMzAuOSA0MS41LTI3LjkgMjEuNCAzLjQgMzQuNCAyNC4yIDI4LjggNDQuNUwxOTUuMyAyNDNjLTEuMiA0LjUtNS45IDcuMi0xMC41IDZsLTcwLjItMTguMmMtMjAuNC01LjQtMzEuOS0yNy0yNC4yLTQ3LjJ6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xMzMuNC0yMDEuM2wtNzAuMiAxOC4yYy00LjUgMS4yLTkuMi0xLjUtMTAuNS02TDI4MS4zIDE3M2MtNS42LTIwLjMgNy40LTQxLjEgMjguOC00NC41IDE4LjYtMyAzNi40IDkuOCA0MS41IDI3LjlsMiA3LjEgNy4xLTEuOWMxOC4yLTQuNyAzOC4yIDQuMyA0NC45IDIxLjkgNy43IDIwLjMtMy44IDQxLjktMjQuMiA0Ny4yelwiXVxufTtcbnZhciBmYUdyaW5TcXVpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3Jpbi1zcXVpbnQnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODVcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMzMuOCAxODkuN2w4MC00OGMxMS42LTYuOSAyNCA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjctNC43LTcuNy0xNS45IDAtMjAuNnptLTE2My0zMGMtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjggNC43IDcuOCAxNS45IDAgMjAuNmwtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjN6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS45IDkuNC0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMiAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwiXVxufTtcbnZhciBmYUdyaW5TcXVpbnRUZWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXNxdWludC10ZWFycycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU4NlwiLCBcIk00MDkuNiAxMTEuOWMyMi42LTMuMiA3My41LTEyIDg4LjMtMjYuOCAxOS4yLTE5LjIgMTguOS01MC42LS43LTcwLjJTNDQ2LTUgNDI2LjkgMTQuMmMtMTQuOCAxNC44LTIzLjUgNjUuNy0yNi44IDg4LjMtLjggNS41IDMuOSAxMC4yIDkuNSA5LjR6TTEwMi40IDQwMC4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em0zMTEuNy0yNTYuNWMtMzMgMy45LTQ4LjYtMjUuMS00NS43LTQ1LjcgMy40LTI0IDcuNC00Mi4xIDExLjUtNTYuNUMyODUuMS0xMy40IDE2MS44LS41IDgwLjYgODAuNi0uNSAxNjEuNy0xMy40IDI4NSA0MS40IDM3OS45YzE0LjQtNC4xIDMyLjQtOCA1Ni41LTExLjUgMzMuMi0zLjkgNDguNiAyNS4yIDQ1LjcgNDUuNy0zLjQgMjQtNy40IDQyLjEtMTEuNSA1Ni41IDk0LjggNTQuOCAyMTguMSA0MS45IDI5OS4zLTM5LjJzOTQtMjA0LjQgMzkuMi0yOTkuM2MtMTQuNCA0LjEtMzIuNSA4LTU2LjUgMTEuNXpNMjU1LjcgMTA2YzMuMy0xMy4yIDIyLjQtMTEuNSAyMy42IDEuOGw0LjggNTIuMyA1Mi4zIDQuOGMxMy40IDEuMiAxNC45IDIwLjMgMS44IDIzLjZsLTkwLjUgMjIuNmMtOC45IDIuMi0xNi43LTUuOS0xNC41LTE0LjVsMjIuNS05MC42em0tOTAuOSAyMzAuM0wxNjAgMjg0bC01Mi4zLTQuOGMtMTMuNC0xLjItMTQuOS0yMC4zLTEuOC0yMy42bDkwLjUtMjIuNmM4LjgtMi4yIDE2LjcgNS44IDE0LjUgMTQuNUwxODguMyAzMzhjLTMuMSAxMy4yLTIyLjIgMTEuNy0yMy41LTEuN3ptMjE1LjcgNDQuMmMtMjkuMyAyOS4zLTc1LjcgNTAuNC0xMTYuNyA1MC40LTE4LjkgMC0zNi42LTQuNS01MS0xNC43LTkuOC02LjktOC43LTIxLjggMi0yNy4yIDI4LjMtMTQuNiA2My45LTQyLjQgOTcuOC03Ni4zczYxLjctNjkuNiA3Ni4zLTk3LjhjNS40LTEwLjUgMjAuMi0xMS45IDI3LjMtMiAzMi4zIDQ1LjMgNy4xIDEyNC43LTM1LjcgMTY3LjZ6XCJdXG59O1xudmFyIGZhR3JpblN0YXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW4tc3RhcnMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODdcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTQuNiAxNjguOWwzNC45LTUgMTUuNS0zMS42YzIuOS01LjggMTEtNS44IDEzLjkgMGwxNS41IDMxLjYgMzQuOSA1YzYuMiAxIDguOSA4LjYgNC4zIDEzLjJsLTI1LjQgMjQuNiA2IDM0LjljMSA2LjItNS4zIDExLTExIDcuOUwxNTIgMjMzLjNsLTMxLjMgMTYuM2MtNS43IDMuMS0xMi0xLjctMTEtNy45bDYtMzQuOS0yNS40LTI0LjZjLTQuNi00LjctMS45LTEyLjMgNC4zLTEzLjN6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xNTcuNy0yNDkuOWwtMjUuNCAyNC42IDYgMzQuOWMxIDYuMi01LjMgMTEtMTEgNy45TDM0NCAyMzMuM2wtMzEuMyAxNi4zYy01LjcgMy4xLTEyLTEuNy0xMS03LjlsNi0zNC45LTI1LjQtMjQuNmMtNC41LTQuNi0xLjktMTIuMiA0LjMtMTMuMmwzNC45LTUgMTUuNS0zMS42YzIuOS01LjggMTEtNS44IDEzLjkgMGwxNS41IDMxLjYgMzQuOSA1YzYuMy45IDkgOC41IDQuNCAxMy4xelwiXVxufTtcbnZhciBmYUdyaW5UZWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXRlYXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTg4XCIsIFwiTTEwMi40IDI1Ni4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em01MjMuNCAyNi44Yy0xNC44LTE0LjgtNjUuNy0yMy41LTg4LjMtMjYuOC01LjUtLjgtMTAuMyAzLjktOS41IDkuNSAzLjIgMjIuNiAxMiA3My41IDI2LjggODguMyAxOS4yIDE5LjIgNTAuNiAxOC45IDcwLjItLjdzMjAtNTEuMi44LTcwLjN6bS0xMjkuNC0xMi44Yy0zLjgtMjYuNiAxOS4xLTQ5LjUgNDUuNy00NS43IDguOSAxLjMgMTYuOCAyLjcgMjQuMyA0LjFDNTUyLjcgMTA0LjUgNDQ3LjcgOCAzMjAgOFM4Ny4zIDEwNC41IDczLjYgMjI4LjVjNy41LTEuNCAxNS40LTIuOCAyNC4zLTQuMSAzMy4yLTMuOSA0OC42IDI1LjMgNDUuNyA0NS43LTExLjggODIuMy0yOS45IDEwMC40LTM1LjggMTA2LjQtLjkuOS0yIDEuNi0zIDIuNSA0Mi43IDc0LjYgMTIzIDEyNSAyMTUuMiAxMjVzMTcyLjUtNTAuNCAyMTUuMi0xMjUuMWMtMS0uOS0yLjEtMS41LTMtMi41LTUuOS01LjktMjQtMjQtMzUuOC0xMDYuM3pNNDAwIDE1MmMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bS0xNjAgMGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bTgwIDI4MGMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjcgOS4yLTIxLjYgMjAuNy0xNy45QzIyNy4xIDMzMC41IDI3MiAzMzYgMzIwIDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJdXG59O1xudmFyIGZhR3JpblRvbmd1ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXRvbmd1ZScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4OVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NmMwIDEwNi4zIDY3IDE5Ni43IDE2MSAyMzItNS42LTEyLjItOS0yNS43LTktNDB2LTQ1LjVjLTI0LjctMTYuMi00My41LTM4LjEtNDcuOC02My44LTItMTEuOCA5LjMtMjEuNSAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjYgMjIuNiA2LjEgMjAuNyAxNy45LTQuMyAyNS43LTIzLjEgNDcuNi00Ny44IDYzLjhWNDQ4YzAgMTQuMy0zLjQgMjcuOC05IDQwIDk0LTM1LjMgMTYxLTEyNS43IDE2MS0yMzJDNDk2IDExOSAzODUgOCAyNDggOHptLTgwIDIzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptLTM0LjkgMTM0LjZjLTE0LjQtNi41LTMxLjEgMi4yLTM0LjYgMTcuNmwtMS44IDcuOGMtMi4xIDkuMi0xNS4yIDkuMi0xNy4zIDBsLTEuOC03LjhjLTMuNS0xNS40LTIwLjItMjQuMS0zNC42LTE3LjYtLjkuNC4zLS4yLTE4LjkgOS40djYzYzAgMzUuMiAyOCA2NC41IDYzLjEgNjQuOSAzNS43LjUgNjQuOS0yOC40IDY0LjktNjR2LTY0Yy0xOS41LTkuNi0xOC4yLTguOS0xOS05LjN6XCJdXG59O1xudmFyIGZhR3JpblRvbmd1ZVNxdWludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXRvbmd1ZS1zcXVpbnQnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OGFcIiwgXCJNMjkzLjEgMzc0LjZjLTE0LjQtNi41LTMxLjEgMi4yLTM0LjYgMTcuNmwtMS44IDcuOGMtMi4xIDkuMi0xNS4yIDkuMi0xNy4zIDBsLTEuOC03LjhjLTMuNS0xNS40LTIwLjItMjQuMS0zNC42LTE3LjYtLjkuNC4zLS4yLTE4LjkgOS40djYzYzAgMzUuMiAyOCA2NC41IDYzLjEgNjQuOSAzNS43LjUgNjQuOS0yOC40IDY0LjktNjR2LTY0Yy0xOS41LTkuNi0xOC4yLTguOS0xOS05LjN6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tMzMuOCAyMTAuM2wtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjNjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy43IDQuNyA3LjcgMTUuOSAwIDIwLjZ6bTE2MyAzMGM4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy44LTQuNy03LjgtMTUuOSAwLTIwLjZsODAtNDhjMTEuNy02LjkgMjMuOSA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zelwiXVxufTtcbnZhciBmYUdyaW5Ub25ndWVXaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW4tdG9uZ3VlLXdpbmsnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OGJcIiwgXCJNMzQ0IDE4NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMy0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tNTYgMjI1bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMTEyIDIzM2MtOC41IDcuNC0yMS42LjMtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzIwOCAxOTcgMjEyIDIyMi4yYzEuNiAxMS4xLTExLjYgMTguMi0yMCAxMC44em0xNTIgMzljLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em0tNTAuOSAxMDIuNmMtMTQuNC02LjUtMzEuMSAyLjItMzQuNiAxNy42bC0xLjggNy44Yy0yLjEgOS4yLTE1LjIgOS4yLTE3LjMgMGwtMS44LTcuOGMtMy41LTE1LjQtMjAuMi0yNC4xLTM0LjYtMTcuNi0uOS40LjMtLjItMTguOSA5LjR2NjNjMCAzNS4yIDI4IDY0LjUgNjMuMSA2NC45IDM1LjcuNSA2NC45LTI4LjQgNjQuOS02NHYtNjRjLTE5LjUtOS42LTE4LjItOC45LTE5LTkuM3pcIl1cbn07XG52YXIgZmFHcmluV2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXdpbmsnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OGNcIiwgXCJNMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnptMjAwLTQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMnptMTY4IDI1bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIzM2MtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzM4NCAxOTcgMzg4IDIyMi4yYzEuNiAxMS0xMS41IDE4LjItMjAgMTAuOHptLTI0My4xIDg3LjhDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuMy0zLjcgMjIuNiA2IDIwLjcgMTcuOS05LjIgNTUtODMuMiA5My4zLTE0My44IDkzLjNzLTEzNC41LTM4LjMtMTQzLjgtOTMuM2MtMi0xMS45IDkuMy0yMS42IDIwLjctMTcuOXpcIl1cbn07XG52YXIgZmFHcmlwSG9yaXpvbnRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmlwLWhvcml6b250YWwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1OGRcIiwgXCJNOTYgMjg4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMTYwIDBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMTYwIDBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNOTYgOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUdyaXBMaW5lcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmlwLWxpbmVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2E0XCIsIFwiTTQ5NiAyODhIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em0wLTEyOEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhR3JpcExpbmVzVmVydGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JpcC1saW5lcy12ZXJ0aWNhbCcsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjdhNVwiLCBcIk05NiA0OTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2NDgwYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ6bTEyOCAwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0ODBjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnpcIl1cbn07XG52YXIgZmFHcmlwVmVydGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JpcC12ZXJ0aWNhbCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjU4ZVwiLCBcIk05NiAzMkgzMkMxNC4zMyAzMiAwIDQ2LjMzIDAgNjR2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwSDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0yODggMzJoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUd1aXRhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdndWl0YXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3YTZcIiwgXCJNNTAyLjYzIDM5TDQ3MyA5LjM3YTMyIDMyIDAgMCAwLTQ1LjI2IDBMMzgxLjQ2IDU1LjdhMzUuMTQgMzUuMTQgMCAwIDAtOC41MyAxMy43OUwzNjAuNzcgMTA2bC03Ni4yNiA3Ni4yNmMtMTIuMTYtOC43Ni0yNS41LTE1Ljc0LTQwLjEtMTkuMTQtMzMuNDUtNy43OC02Ny0uODgtODkuODggMjJhODIuNDUgODIuNDUgMCAwIDAtMjAuMjQgMzMuNDdjLTYgMTguNTYtMjMuMjEgMzIuNjktNDIuMTUgMzQuNDYtMjMuNyAyLjI3LTQ1LjczIDExLjQ1LTYyLjYxIDI4LjQ0Qy0xNi4xMSAzMjctNy45IDQwOSA0Ny41OCA0NjQuNDVTMTg1IDUyOCAyMzAuNTYgNDgyLjUyYzE3LTE2Ljg4IDI2LjE2LTM4LjkgMjguNDUtNjIuNzEgMS43Ni0xOC44NSAxNS44OS0zNi4xMyAzNC40My00Mi4xNGE4Mi42IDgyLjYgMCAwIDAgMzMuNDgtMjAuMjVjMjIuODctMjIuODggMjkuNzQtNTYuMzYgMjItODkuNzUtMy4zOS0xNC42NC0xMC4zNy0yOC0xOS4xNi00MC4yTDQwNiAxNTEuMjNsMzYuNDgtMTIuMTZhMzUuMTQgMzUuMTQgMCAwIDAgMTMuNzktOC41M2w0Ni4zMy00Ni4zMmEzMiAzMiAwIDAgMCAuMDMtNDUuMjJ6TTIwOCAzNTJhNDggNDggMCAxIDEgNDgtNDggNDggNDggMCAwIDEtNDggNDh6XCJdXG59O1xudmFyIGZhSFNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoLXNxdWFyZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmZFwiLCBcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTExMiA0OGgtMzJjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2ODBIMTYwdi04MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0zMmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYyMjRjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di04MGgxMjh2ODBjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjE0NGMwLTguODM3LTcuMTYzLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUhhbWJ1cmdlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW1idXJnZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4MDVcIiwgXCJNNDY0IDI1Nkg0OGE0OCA0OCAwIDAgMCAwIDk2aDQxNmE0OCA0OCAwIDAgMCAwLTk2em0xNiAxMjhIMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MTZhNjQgNjQgMCAwIDAgNjQgNjRoMzUyYTY0IDY0IDAgMCAwIDY0LTY0di0xNmExNiAxNiAwIDAgMC0xNi0xNnpNNTguNjQgMjI0aDM5NC43MmMzNC41NyAwIDU0LjYyLTQzLjkgMzQuODItNzUuODhDNDQ4IDgzLjIgMzU5LjU1IDMyLjEgMjU2IDMyYy0xMDMuNTQuMS0xOTIgNTEuMi0yMzIuMTggMTE2LjExQzQgMTgwLjA5IDI0LjA3IDIyNCA1OC42NCAyMjR6TTM4NCAxMTJhMTYgMTYgMCAxIDEtMTYgMTYgMTYgMTYgMCAwIDEgMTYtMTZ6TTI1NiA4MGExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnptLTEyOCAzMmExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnpcIl1cbn07XG52YXIgZmFIYW1tZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFtbWVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNmUzXCIsIFwiTTU3MS4zMSAxOTMuOTRsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0xMS4zMSAxMS4zMS0yOC45LTI4LjljNS42My0yMS4zMS4zNi00NC45LTE2LjM1LTYxLjYxbC00NS4yNS00NS4yNWMtNjIuNDgtNjIuNDgtMTYzLjc5LTYyLjQ4LTIyNi4yOCAwbDkwLjUxIDQ1LjI1djE4Ljc1YzAgMTYuOTcgNi43NCAzMy4yNSAxOC43NSA0NS4yNWw0OS4xNCA0OS4xNGMxNi43MSAxNi43MSA0MC4zIDIxLjk4IDYxLjYxIDE2LjM1bDI4LjkgMjguOS0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDkwLjUxLTkwLjUxYzYuMjMtNi4yNCA2LjIzLTE2LjM3LS4wMi0yMi42MnptLTI4Ni43Mi0xNS4yYy0zLjctMy43LTYuODQtNy43OS05Ljg1LTExLjk1TDE5LjY0IDQwNC45NmMtMjUuNTcgMjMuODgtMjYuMjYgNjQuMTktMS41MyA4OC45M3M2NS4wNSAyNC4wNSA4OC45My0xLjUzbDIzOC4xMy0yNTUuMDdjLTMuOTYtMi45MS03LjktNS44Ny0xMS40NC05LjQxbC00OS4xNC00OS4xNHpcIl1cbn07XG52YXIgZmFIYW1zYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW1zYScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY2NVwiLCBcIk01MDkuMzQgMzA3LjI1QzUwNC4yOCAyOTUuNTYgNDkyLjc1IDI4OCA0ODAgMjg4aC02NFY4MGMwLTIyLTE4LTQwLTQwLTQwcy00MCAxOC00MCA0MHYxMzRjMCA1LjUyLTQuNDggMTAtMTAgMTBoLTIwYy01LjUyIDAtMTAtNC40OC0xMC0xMFY0MGMwLTIyLTE4LTQwLTQwLTQwcy00MCAxOC00MCA0MHYxNzRjMCA1LjUyLTQuNDggMTAtMTAgMTBoLTIwYy01LjUyIDAtMTAtNC40OC0xMC0xMFY4MGMwLTIyLTE4LTQwLTQwLTQwUzk2IDU4IDk2IDgwdjIwOEgzMmMtMTIuNzUgMC0yNC4yOCA3LjU2LTI5LjM0IDE5LjI1YTMxLjk2NiAzMS45NjYgMCAwIDAgNS45NCAzNC41OGwxMDIuNjkgMTEwLjAzQzE0Ni45NyA0OTAuMDggMTk5LjY5IDUxMiAyNTYgNTEyczEwOS4wMy0yMS45MiAxNDQuNzItNjAuMTRMNTAzLjQgMzQxLjgzYTMxLjk2NiAzMS45NjYgMCAwIDAgNS45NC0zNC41OHpNMjU2IDQxNmMtNTMuMDIgMC05Ni02NC05Ni02NHM0Mi45OC02NCA5Ni02NCA5NiA2NCA5NiA2NC00Mi45OCA2NC05NiA2NHptMC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFIYW5kSG9sZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmcnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0YmRcIiwgXCJNNTY1LjMgMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYgMEw0MzAuMyA0MDJjLTExLjMgOS4xLTI1LjQgMTQtNDAgMTRIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDc4LjNjMTUuOSAwIDMwLjctMTAuOSAzMy4zLTI2LjYgMy4zLTIwLTEyLjEtMzcuNC0zMS42LTM3LjRIMTkyYy0yNyAwLTUzLjEgOS4zLTc0LjEgMjYuM0w3MS40IDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmgzNTYuOGMxNC41IDAgMjguNi00LjkgNDAtMTRMNTY0IDM3N2MxNS4yLTEyLjEgMTYuNC0zNS4zIDEuMy00OC45elwiXVxufTtcbnZhciBmYUhhbmRIb2xkaW5nSGVhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1ob2xkaW5nLWhlYXJ0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNGJlXCIsIFwiTTI3NS4zIDI1MC41YzcgNy40IDE4LjQgNy40IDI1LjUgMGwxMDguOS0xMTQuMmMzMS42LTMzLjIgMjkuOC04OC4yLTUuNi0xMTguOC0zMC44LTI2LjctNzYuNy0yMS45LTEwNC45IDcuN0wyODggMzYuOWwtMTEuMS0xMS42QzI0OC43LTQuNCAyMDIuOC05LjIgMTcyIDE3LjVjLTM1LjMgMzAuNi0zNy4yIDg1LjYtNS42IDExOC44bDEwOC45IDExNC4yem0yOTAgNzcuNmMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiAwTDQzMC4zIDQwMmMtMTEuMyA5LjEtMjUuNCAxNC00MCAxNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNzguM2MxNS45IDAgMzAuNy0xMC45IDMzLjMtMjYuNiAzLjMtMjAtMTIuMS0zNy40LTMxLjYtMzcuNEgxOTJjLTI3IDAtNTMuMSA5LjMtNzQuMSAyNi4zTDcxLjQgMzg0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDM1Ni44YzE0LjUgMCAyOC42LTQuOSA0MC0xNEw1NjQgMzc3YzE1LjItMTIuMSAxNi40LTM1LjMgMS4zLTQ4Ljl6XCJdXG59O1xudmFyIGZhSGFuZEhvbGRpbmdNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtaG9sZGluZy1tZWRpY2FsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlMDVjXCIsIFwiTTE1OS44OCwxNzUuODJoNjR2NjRhMTYsMTYsMCwwLDAsMTYsMTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZ2LTY0aDY0YTE2LDE2LDAsMCwwLDE2LTE2di02NGExNiwxNiwwLDAsMC0xNi0xNmgtNjR2LTY0YTE2LDE2LDAsMCwwLTE2LTE2aC02NGExNiwxNiwwLDAsMC0xNiwxNnY2NGgtNjRhMTYsMTYsMCwwLDAtMTYsMTZ2NjRBMTYsMTYsMCwwLDAsMTU5Ljg4LDE3NS44MlpNNTY4LjA3LDMzNi4xM2EzOS45MSwzOS45MSwwLDAsMC01NS45My04LjQ3TDM5Mi40Nyw0MTUuODRIMjcxLjg2YTE2LDE2LDAsMCwxLDAtMzJIMzUwLjFjMTYsMCwzMC43NS0xMC44NywzMy4zNy0yNi42MWEzMi4wNiwzMi4wNiwwLDAsMC0zMS42Mi0zNy4zOGgtMTYwYTExNy43LDExNy43LDAsMCwwLTc0LjEyLDI2LjI1bC00Ni41LDM3Ljc0SDE1Ljg3YTE2LjExLDE2LjExLDAsMCwwLTE2LDE2djk2YTE2LjExLDE2LjExLDAsMCwwLDE2LDE2aDM0N2ExMDQuOCwxMDQuOCwwLDAsMCw2MS43LTIwLjI3TDU1OS42LDM5MkE0MCw0MCwwLDAsMCw1NjguMDcsMzM2LjEzWlwiXVxufTtcbnZhciBmYUhhbmRIb2xkaW5nVXNkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtaG9sZGluZy11c2QnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0YzBcIiwgXCJNMjcxLjA2LDE0NC4zbDU0LjI3LDE0LjNhOC41OSw4LjU5LDAsMCwxLDYuNjMsOC4xYzAsNC42LTQuMDksOC40LTkuMTIsOC40aC0zNS42YTMwLDMwLDAsMCwxLTExLjE5LTIuMmMtNS4yNC0yLjItMTEuMjgtMS43LTE1LjMsMmwtMTksMTcuNWExMS42OCwxMS42OCwwLDAsMC0yLjI1LDIuNjYsMTEuNDIsMTEuNDIsMCwwLDAsMy44OCwxNS43NCw4My43Nyw4My43NywwLDAsMCwzNC41MSwxMS41VjI0MGMwLDguOCw3LjgzLDE2LDE3LjM3LDE2aDE3LjM3YzkuNTUsMCwxNy4zOC03LjIsMTcuMzgtMTZWMjIyLjRjMzIuOTMtMy42LDU3Ljg0LTMxLDUzLjUtNjMtMy4xNS0yMy0yMi40Ni00MS4zLTQ2LjU2LTQ3LjdMMjgyLjY4LDk3LjRhOC41OSw4LjU5LDAsMCwxLTYuNjMtOC4xYzAtNC42LDQuMDktOC40LDkuMTItOC40aDM1LjZBMzAsMzAsMCwwLDEsMzMyLDgzLjFjNS4yMywyLjIsMTEuMjgsMS43LDE1LjMtMmwxOS0xNy41QTExLjMxLDExLjMxLDAsMCwwLDM2OC40Nyw2MWExMS40MywxMS40MywwLDAsMC0zLjg0LTE1Ljc4LDgzLjgyLDgzLjgyLDAsMCwwLTM0LjUyLTExLjVWMTZjMC04LjgtNy44Mi0xNi0xNy4zNy0xNkgyOTUuMzdDMjg1LjgyLDAsMjc4LDcuMiwyNzgsMTZWMzMuNmMtMzIuODksMy42LTU3Ljg1LDMxLTUzLjUxLDYzQzIyNy42MywxMTkuNiwyNDcsMTM3LjksMjcxLjA2LDE0NC4zWk01NjUuMjcsMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYsMEw0MzAuMjcsNDAyYTYzLjY0LDYzLjY0LDAsMCwxLTQwLDE0SDI3MmExNiwxNiwwLDAsMSwwLTMyaDc4LjI5YzE1LjksMCwzMC43MS0xMC45LDMzLjI1LTI2LjZhMzEuMiwzMS4yLDAsMCwwLC40Ni01LjQ2QTMyLDMyLDAsMCwwLDM1MiwzMjBIMTkyYTExNy42NiwxMTcuNjYsMCwwLDAtNzQuMSwyNi4yOUw3MS40LDM4NEgxNkExNiwxNiwwLDAsMCwwLDQwMHY5NmExNiwxNiwwLDAsMCwxNiwxNkgzNzIuNzdhNjQsNjQsMCwwLDAsNDAtMTRMNTY0LDM3N2EzMiwzMiwwLDAsMCwxLjI4LTQ4LjlaXCJdXG59O1xudmFyIGZhSGFuZEhvbGRpbmdXYXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmctd2F0ZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0YzFcIiwgXCJNMjg4IDI1NmM1MyAwIDk2LTQyLjEgOTYtOTQgMC00MC01Ny4xLTEyMC43LTgzLjItMTU1LjYtNi40LTguNS0xOS4yLTguNS0yNS42IDBDMjQ5LjEgNDEuMyAxOTIgMTIyIDE5MiAxNjJjMCA1MS45IDQzIDk0IDk2IDk0em0yNzcuMyA3Mi4xYy0xMS44LTEwLjctMzAuMi0xMC00Mi42IDBMNDMwLjMgNDAyYy0xMS4zIDkuMS0yNS40IDE0LTQwIDE0SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg3OC4zYzE1LjkgMCAzMC43LTEwLjkgMzMuMy0yNi42IDMuMy0yMC0xMi4xLTM3LjQtMzEuNi0zNy40SDE5MmMtMjcgMC01My4xIDkuMy03NC4xIDI2LjNMNzEuNCAzODRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzU2LjhjMTQuNSAwIDI4LjYtNC45IDQwLTE0TDU2NCAzNzdjMTUuMi0xMi4xIDE2LjQtMzUuMyAxLjMtNDguOXpcIl1cbn07XG52YXIgZmFIYW5kTGl6YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtbGl6YXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjU4XCIsIFwiTTM4NCA0ODBoMTkyVjM2My43NzhhOTUuOTk4IDk1Ljk5OCAwIDAgMC0xNC44MzMtNTEuMjYzTDM5OC4xMjcgNTQuMzY4QTQ4IDQ4IDAgMCAwIDM1Ny41NDQgMzJIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2MTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2aDIyOS45ODFjMTIuODQ0IDAgMjEuNTU2IDEzLjA2NyAxNi42MTUgMjQuOTIzbC0yMS40MSA1MS4zODVBMzIgMzIgMCAwIDEgMjUxLjY0OCAyMjRIMTI4Yy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjR2OGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTQ3LjQwNmE0Ny45OTUgNDcuOTk1IDAgMCAxIDI1LjY5MiA3LjQ1NWwxMTEuNzQ4IDcwLjgxMUEyNC4wMDEgMjQuMDAxIDAgMCAxIDM4NCA0MTguNTM5VjQ4MHpcIl1cbn07XG52YXIgZmFIYW5kTWlkZGxlRmluZ2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtbWlkZGxlLWZpbmdlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjgwNlwiLCBcIk00NzkuOTMgMzE3LjEyYTM3LjMzIDM3LjMzIDAgMCAwLTI4LjI4LTM2LjE5TDQxNiAyNzJ2LTQ5LjU5YzAtMTEuNDQtOS42OS0yMS4yOS0yMy4xNS0yMy41NGwtMzguNC02LjRDMzM2LjYzIDE4OS41IDMyMCAyMDAuODYgMzIwIDIxNnYzMmE4IDggMCAwIDEtMTYgMFY1MGMwLTI2LjI4LTIwLjI1LTQ5LjItNDYuNTItNTBBNDggNDggMCAwIDAgMjA4IDQ4djIwMGE4IDggMCAwIDEtMTYgMHYtMzJjMC0xNS4xNS0xNi42My0yNi41MS0zNC40NS0yMy41NGwtMzAuNjggNS4xMmMtMTggMy0zMC44NyAxNi4xMi0zMC44NyAzMS4zOFYzNzZhOCA4IDAgMCAxLTE2IDB2LTc2bC0yNy4zNiAxNUEzNy4zNCAzNy4zNCAwIDAgMCAzMiAzNDguNHY3My40N2EzNy4zMSAzNy4zMSAwIDAgMCAxMC45MyAyNi4zOWwzMC45MyAzMC45M0ExMTIgMTEyIDAgMCAwIDE1My4wNSA1MTJoMjE1QTExMiAxMTIgMCAwIDAgNDgwIDQwMHpcIl1cbn07XG52YXIgZmFIYW5kUGFwZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1wYXBlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI1NlwiLCBcIk00MDguNzgxIDEyOC4wMDdDMzg2LjM1NiAxMjcuNTc4IDM2OCAxNDYuMzYgMzY4IDE2OC43OVYyNTZoLThWNzkuNzljMC0yMi40My0xOC4zNTYtNDEuMjEyLTQwLjc4MS00MC43ODNDMjk3LjQ4OCAzOS40MjMgMjgwIDU3LjE2OSAyODAgNzl2MTc3aC04VjQwLjc5QzI3MiAxOC4zNiAyNTMuNjQ0LS40MjIgMjMxLjIxOS4wMDcgMjA5LjQ4OC40MjMgMTkyIDE4LjE2OSAxOTIgNDB2MjE2aC04VjgwLjc5YzAtMjIuNDMtMTguMzU2LTQxLjIxMi00MC43ODEtNDAuNzgzQzEyMS40ODggNDAuNDIzIDEwNCA1OC4xNjkgMTA0IDgwdjIzNS45OTJsLTMxLjY0OC00My41MTljLTEyLjk5My0xNy44NjYtMzguMDA5LTIxLjgxNy01NS44NzctOC44MjMtMTcuODY1IDEyLjk5NC0yMS44MTUgMzguMDEtOC44MjIgNTUuODc3bDEyNS42MDEgMTcyLjcwNUE0OCA0OCAwIDAgMCAxNzIuMDczIDUxMmgxOTcuNTljMjIuMjc0IDAgNDEuNjIyLTE1LjMyNCA0Ni43MjQtMzcuMDA2bDI2LjUwOC0xMTIuNjZhMTkyLjAxMSAxOTIuMDExIDAgMCAwIDUuMTA0LTQzLjk3NVYxNjhjLjAwMS0yMS44MzEtMTcuNDg3LTM5LjU3Ny0zOS4yMTgtMzkuOTkzelwiXVxufTtcbnZhciBmYUhhbmRQZWFjZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBlYWNlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjViXCIsIFwiTTQwOCAyMTZjLTIyLjA5MiAwLTQwIDE3LjkwOS00MCA0MGgtOHYtMzJjMC0yMi4wOTEtMTcuOTA4LTQwLTQwLTQwcy00MCAxNy45MDktNDAgNDB2MzJoLThWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHMtNDggMjEuNDktNDggNDh2MjA4aC0xMy41NzJMOTIuNjg4IDc4LjQ0OUM4Mi45OTQgNTMuNzc0IDU1LjEzNCA0MS42MyAzMC40NjEgNTEuMzI0IDUuNzg3IDYxLjAxNy02LjM1NiA4OC44NzcgMy4zMzcgMTEzLjU1MWw3NC43NjUgMTkwLjM0Mi0zMS4wOSAyNC44NzJjLTE1LjM4MSAxMi4zMDYtMTkuNTE1IDMzLjk3OC05Ljc0MSA1MS4wODFsNjQgMTEyQTM5Ljk5OCAzOS45OTggMCAwIDAgMTM2IDUxMmgyNDBjMTguNTYyIDAgMzQuNjg2LTEyLjc3IDM4LjkzNy0zMC44MzhsMzItMTM2QTM5Ljk3IDM5Ljk3IDAgMCAwIDQ0OCAzMzZ2LTgwYzAtMjIuMDkxLTE3LjkwOC00MC00MC00MHpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnREb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtcG9pbnQtZG93bicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjBhN1wiLCBcIk05MS44MjYgNDY3LjJWMzE3Ljk2NmMtOC4yNDggNS44NDEtMTYuNTU4IDEwLjU3LTI0LjkxOCAxNC4xNTNDMzUuMDk4IDM0NS43NTItLjAxNCAzMjIuMjIyIDAgMjg4Yy4wMDgtMTguNjE2IDEwLjg5Ny0zMi4yMDMgMjkuMDkyLTQwIDI4LjI4Ni0xMi4xMjIgNjQuMzI5LTc4LjY0OCA3Ny4zMjMtMTA3LjUzNCA3Ljk1Ni0xNy44NTcgMjUuNDc5LTI4LjQ1MyA0My44NDUtMjguNDY0bC4wMDEtLjAwMmgxNzEuNTI2YzExLjgxMiAwIDIxLjg5NyA4LjU5NiAyMy43MDMgMjAuMjY5IDcuMjUgNDYuODM3IDM4LjQ4MyA2MS43NiAzOC4zMTUgMTIzLjczMS0uMDA3IDIuNzI0LjE5NSAxMy4yNTQuMTk1IDE2IDAgNTAuNjU0LTIyLjEyMiA4MS41NzQtNzEuMjYzIDcyLjYtOS4yOTcgMTguNTk3LTM5LjQ4NiAzMC43MzgtNjIuMzE1IDE2LjQ1LTIxLjE3NyAyNC42NDUtNTMuODk2IDIyLjYzOS03MC45NDQgNi4yOTlWNDY3LjJjMCAyNC4xNS0yMC4yMDEgNDQuOC00My44MjYgNDQuOC0yMy4yODMgMC00My44MjYtMjEuMzUtNDMuODI2LTQ0Ljh6TTExMiA3MlYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR6bTIxMi0yNGMwLTExLjA0Ni04Ljk1NC0yMC0yMC0yMHMtMjAgOC45NTQtMjAgMjAgOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjB6XCJdXG59O1xudmFyIGZhSGFuZFBvaW50TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LWxlZnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYTVcIiwgXCJNNDQuOCAxNTUuODI2aDE0OS4yMzRjLTUuODQxLTguMjQ4LTEwLjU3LTE2LjU1OC0xNC4xNTMtMjQuOTE4QzE2Ni4yNDggOTkuMDk4IDE4OS43NzggNjMuOTg2IDIyNCA2NGMxOC42MTYuMDA4IDMyLjIwMyAxMC44OTcgNDAgMjkuMDkyIDEyLjEyMiAyOC4yODYgNzguNjQ4IDY0LjMyOSAxMDcuNTM0IDc3LjMyMyAxNy44NTcgNy45NTYgMjguNDUzIDI1LjQ3OSAyOC40NjQgNDMuODQ1bC4wMDIuMDAxdjE3MS41MjZjMCAxMS44MTItOC41OTYgMjEuODk3LTIwLjI2OSAyMy43MDMtNDYuODM3IDcuMjUtNjEuNzYgMzguNDgzLTEyMy43MzEgMzguMzE1LTIuNzI0LS4wMDctMTMuMjU0LjE5NS0xNiAuMTk1LTUwLjY1NCAwLTgxLjU3NC0yMi4xMjItNzIuNi03MS4yNjMtMTguNTk3LTkuMjk3LTMwLjczOC0zOS40ODYtMTYuNDUtNjIuMzE1LTI0LjY0NS0yMS4xNzctMjIuNjM5LTUzLjg5Ni02LjI5OS03MC45NDRINDQuOGMtMjQuMTUgMC00NC44LTIwLjIwMS00NC44LTQzLjgyNiAwLTIzLjI4MyAyMS4zNS00My44MjYgNDQuOC00My44MjZ6TTQ0MCAxNzZoNDhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQ4Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMjQgMjEyYzExLjA0NiAwIDIwLTguOTU0IDIwLTIwcy04Ljk1NC0yMC0yMC0yMC0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMHpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGE0XCIsIFwiTTUxMiAxOTkuNjUyYzAgMjMuNjI1LTIwLjY1IDQzLjgyNi00NC44IDQzLjgyNmgtOTkuODUxYzE2LjM0IDE3LjA0OCAxOC4zNDYgNDkuNzY2LTYuMjk5IDcwLjk0NCAxNC4yODggMjIuODI5IDIuMTQ3IDUzLjAxNy0xNi40NSA2Mi4zMTVDMzUzLjU3NCA0MjUuODc4IDMyMi42NTQgNDQ4IDI3MiA0NDhjLTIuNzQ2IDAtMTMuMjc2LS4yMDMtMTYtLjE5NS02MS45NzEuMTY4LTc2Ljg5NC0zMS4wNjUtMTIzLjczMS0zOC4zMTVDMTIwLjU5NiA0MDcuNjgzIDExMiAzOTcuNTk5IDExMiAzODUuNzg2VjIxNC4yNjFsLjAwMi0uMDAxYy4wMTEtMTguMzY2IDEwLjYwNy0zNS44ODkgMjguNDY0LTQzLjg0NSAyOC44ODYtMTIuOTk0IDk1LjQxMy00OS4wMzggMTA3LjUzNC03Ny4zMjMgNy43OTctMTguMTk0IDIxLjM4NC0yOS4wODQgNDAtMjkuMDkyIDM0LjIyMi0uMDE0IDU3Ljc1MiAzNS4wOTggNDQuMTE5IDY2LjkwOC0zLjU4MyA4LjM1OS04LjMxMiAxNi42Ny0xNC4xNTMgMjQuOTE4SDQ2Ny4yYzIzLjQ1IDAgNDQuOCAyMC41NDMgNDQuOCA0My44MjZ6TTk2IDIwMHYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGg0OGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6TTY4IDM2OGMwLTExLjA0Ni04Ljk1NC0yMC0yMC0yMHMtMjAgOC45NTQtMjAgMjAgOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjB6XCJdXG59O1xudmFyIGZhSGFuZFBvaW50VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1wb2ludC11cCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjBhNlwiLCBcIk0xMzUuNjUyIDBjMjMuNjI1IDAgNDMuODI2IDIwLjY1IDQzLjgyNiA0NC44djk5Ljg1MWMxNy4wNDgtMTYuMzQgNDkuNzY2LTE4LjM0NiA3MC45NDQgNi4yOTkgMjIuODI5LTE0LjI4OCA1My4wMTctMi4xNDcgNjIuMzE1IDE2LjQ1QzM2MS44NzggMTU4LjQyNiAzODQgMTg5LjM0NiAzODQgMjQwYzAgMi43NDYtLjIwMyAxMy4yNzYtLjE5NSAxNiAuMTY4IDYxLjk3MS0zMS4wNjUgNzYuODk0LTM4LjMxNSAxMjMuNzMxQzM0My42ODMgMzkxLjQwNCAzMzMuNTk5IDQwMCAzMjEuNzg2IDQwMEgxNTAuMjYxbC0uMDAxLS4wMDJjLTE4LjM2Ni0uMDExLTM1Ljg4OS0xMC42MDctNDMuODQ1LTI4LjQ2NEM5My40MjEgMzQyLjY0OCA1Ny4zNzcgMjc2LjEyMiAyOS4wOTIgMjY0IDEwLjg5NyAyNTYuMjAzLjAwOCAyNDIuNjE2IDAgMjI0Yy0uMDE0LTM0LjIyMiAzNS4wOTgtNTcuNzUyIDY2LjkwOC00NC4xMTkgOC4zNTkgMy41ODMgMTYuNjcgOC4zMTIgMjQuOTE4IDE0LjE1M1Y0NC44YzAtMjMuNDUgMjAuNTQzLTQ0LjggNDMuODI2LTQ0Ljh6TTEzNiA0MTZoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTQ4YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMTY4IDI4Yy0xMS4wNDYgMC0yMCA4Ljk1NC0yMCAyMHM4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMC04Ljk1NC0yMC0yMC0yMHpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50ZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNWFcIiwgXCJNNDQ4IDI0MHY5NmMwIDMuMDg0LS4zNTYgNi4xNTktMS4wNjMgOS4xNjJsLTMyIDEzNkM0MTAuNjg2IDQ5OS4yMyAzOTQuNTYyIDUxMiAzNzYgNTEySDE2OGE0MC4wMDQgNDAuMDA0IDAgMCAxLTMyLjM1LTE2LjQ3M2wtMTI3Ljk5Ny0xNzZjLTEyLjk5My0xNy44NjYtOS4wNDMtNDIuODgzIDguODIyLTU1Ljg3NiAxNy44NjctMTIuOTk0IDQyLjg4NC05LjA0MyA1NS44NzcgOC44MjNMMTA0IDMxNS45OTJWNDBjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHYyMDBoOHYtNDBjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHY0MGg4di0yNGMwLTIyLjA5MSAxNy45MDgtNDAgNDAtNDBzNDAgMTcuOTA5IDQwIDQwdjI0aDhjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHptLTI1NiA4MGgtOHY5Nmg4di05NnptODggMGgtOHY5Nmg4di05NnptODggMGgtOHY5Nmg4di05NnpcIl1cbn07XG52YXIgZmFIYW5kUm9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXJvY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNTVcIiwgXCJNNDY0LjggODBjLTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDhoLThWOTYuOGMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOC0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4djMyaC04VjgwLjhjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjgtMjYuOS0uNC00OC44IDIxLjItNDguOCA0OHY0OGgtOFY5Ni44YzAtMjYuMy0yMC45LTQ4LjMtNDcuMi00OC44LTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDh2MTM2bC04LTcuMXYtNDguMWMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOEMyMS45IDEyNy42IDAgMTQ5LjIgMCAxNzZ2NjYuNGMwIDI3LjQgMTEuNyA1My41IDMyLjIgNzEuOGwxMTEuNyA5OS4zYzEwLjIgOS4xIDE2LjEgMjIuMiAxNi4xIDM1Ljl2Ni43YzAgMTMuMyAxMC43IDI0IDI0IDI0aDI0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMi45YzAtMTIuOCAyLjYtMjUuNSA3LjUtMzcuM2w0OS0xMTYuM2M1LTExLjggNy41LTI0LjUgNy41LTM3LjNWMTI4LjhjMC0yNi4zLTIwLjktNDguNC00Ny4yLTQ4Ljh6XCJdXG59O1xudmFyIGZhSGFuZFNjaXNzb3JzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtc2Npc3NvcnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNTdcIiwgXCJNMjE2IDQ0MGMwLTIyLjA5MiAxNy45MDktNDAgNDAtNDB2LThoLTMyYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDBzMTcuOTA5LTQwIDQwLTQwaDMydi04SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4aDIwOHYtMTMuNTcybC0xNzcuNTUxLTY5Ljc0Yy0yNC42NzQtOS42OTQtMzYuODE4LTM3LjU1NS0yNy4xMjUtNjIuMjI4IDkuNjkzLTI0LjY3NCAzNy41NTQtMzYuODE3IDYyLjIyOC0yNy4xMjRsMTkwLjM0MiA3NC43NjUgMjQuODcyLTMxLjA5YzEyLjMwNi0xNS4zODEgMzMuOTc4LTE5LjUxNSA1MS4wODEtOS43NDFsMTEyIDY0QTQwLjAwMiA0MC4wMDIgMCAwIDEgNTEyIDE2OHYyNDBjMCAxOC41NjItMTIuNzcgMzQuNjg2LTMwLjgzOCAzOC45MzdsLTEzNiAzMkEzOS45ODIgMzkuOTgyIDAgMCAxIDMzNiA0ODBoLTgwYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDB6XCJdXG59O1xudmFyIGZhSGFuZFNwYXJrbGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtc3BhcmtsZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNWRcIiwgXCJNMTA2LjY2LDE3MC42NGwuMDksMCw0OS41NS0yMC42NWE3LjMyLDcuMzIsMCwwLDAsMy42OC02aDBhNy4yOSw3LjI5LDAsMCwwLTMuNjgtNmwtNDkuNTctMjAuNjctLjA3LDBMODYsNjcuNjhhNi42Niw2LjY2LDAsMCwwLTExLjkyLDBsLTIwLjcsNDkuNjMtLjA1LDBMMy43LDEzOEE3LjI5LDcuMjksMCwwLDAsMCwxNDRIMGE3LjMyLDcuMzIsMCwwLDAsMy42OCw2TDUzLjI3LDE3MC42bC4wNywwTDc0LDIyMC4yNmE2LjY1LDYuNjUsMCwwLDAsMTEuOTIsMGwyMC42OS00OS42MlpNNDcxLjM4LDQ2Ny40MWwtMS0uNDItMS0uNWEzOC42NywzOC42NywwLDAsMSwwLTY5LjE0bDEtLjQ5LDEtLjQzLDM3LjQ5LTE1LjYzLDE1LjYzLTM3LjQ4LjQxLTEsLjQ3LS45NWMzLjg1LTcuNzQsMTAuNTgtMTMuNjMsMTguMzUtMTcuMzQsMC0xLjMzLjI1LTIuNjkuMjctNFYxNDRhMzIsMzIsMCwwLDAtNjQsMHY3MmE4LDgsMCwwLDEtOCw4SDQ1NmE4LDgsMCwwLDEtOC04VjY0YTMyLDMyLDAsMCwwLTY0LDBWMjE2YTgsOCwwLDAsMS04LDhIMzYwYTgsOCwwLDAsMS04LThWMzJhMzIsMzIsMCwwLDAtNjQsMFYyMTZhOCw4LDAsMCwxLTgsOEgyNjRhOCw4LDAsMCwxLTgtOFY2NGEzMiwzMiwwLDAsMC02NCwwdjI0MWwtMjMuNTktMzIuNDlhNDAsNDAsMCwwLDAtNjQuNzEsNDcuMDlMMjI5LjMsNDkyLjIxQTQ4LjA3LDQ4LjA3LDAsMCwwLDI2OC4wOSw1MTJINDY1LjdjMTkuMjQsMCwzNS42NS0xMS43Myw0My4yNC0yOC43OWwtLjA3LS4xN1pNMzQ5Ljc5LDMzOS41MiwzMjAsMzUxLjkzbC0xMi40MiwyOS43OGE0LDQsMCwwLDEtNy4xNSwwTDI4OCwzNTEuOTNsLTI5Ljc5LTEyLjQxYTQsNCwwLDAsMSwwLTcuMTZMMjg4LDMxOS45NGwxMi40Mi0yOS43OGE0LDQsMCwwLDEsNy4xNSwwTDMyMCwzMTkuOTRsMjkuNzksMTIuNDJhNCw0LDAsMCwxLDAsNy4xNlpNNjQwLDQzMS45MWE3LjI4LDcuMjgsMCwwLDAtMy42OC02bC00OS41Ny0yMC42Ny0uMDcsMEw1NjYsMzU1LjYzYTYuNjYsNi42NiwwLDAsMC0xMS45MiwwbC0yMC43LDQ5LjYzLS4wNSwwTDQ4My43LDQyNmE3LjI4LDcuMjgsMCwwLDAtMy42OCw2aDBhNy4yOSw3LjI5LDAsMCwwLDMuNjgsNS45NWw0OS41NywyMC42Ny4wNywwTDU1NCw1MDguMjFhNi42NSw2LjY1LDAsMCwwLDExLjkyLDBsMjAuNjktNDkuNjJoMGwuMDksMCw0OS41NS0yMC42NmE3LjI5LDcuMjksMCwwLDAsMy42OC01Ljk1aDBaXCJdXG59O1xudmFyIGZhSGFuZFNwb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtc3BvY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNTlcIiwgXCJNNTEwLjkwMDUsMTQ1LjI3MDI3LDQ0Mi42MDQsNDMyLjA5MzkxQTEwMy45OTUwNywxMDMuOTk1MDcsMCwwLDEsMzQxLjQzNzQ1LDUxMkgyMTQuMDc0YTEzNS45Njk2OCwxMzUuOTY5NjgsMCwwLDEtOTMuMTg0ODktMzYuOTUyOTFMMTIuNTkwNzIsMzczLjEyNzIzYTM5Ljk5MiwzOS45OTIsMCwwLDEsNTQuODEyMi01OC4yNDk4OGw2MC41OTM0Miw1Ny4wMjUyOHYwYTI4My4yNDg0OSwyODMuMjQ4NDksMCwwLDAtMTEuNjcwMy04MC40NjczNEw3My42MzcyNiwxNDcuMzYwMTFhNDAuMDA1NzUsNDAuMDA1NzUsMCwxLDEsNzYuNzE4MzMtMjIuNzE4N2wzNy4xNTQ1OCwxMjUuMzk0NzdhOC4zMzExMyw4LjMzMTEzLDAsMCwwLDE2LjA1NjU2LTQuNDQxNEwxNTMuMjYxODMsNDkuOTU0MDZBMzkuOTk2MzgsMzkuOTk2MzgsMCwxLDEsMjMwLjczMDE1LDMwLjAxNjZsNTYuMDk0OTEsMjE4LjE1ODI1YTEwLjQyMDQ3LDEwLjQyMDQ3LDAsMCwwLDIwLjMwMDE4LS41MDFMMzQ0LjgwNzY2LDYzLjk2OTY2YTQwLjA1Miw0MC4wNTIsMCwwLDEsNTEuMzAyNDUtMzAuMDg5M2MxOS44NjA3Myw2LjI5OTgsMzAuODYyNjIsMjcuNjczNzgsMjYuNjc1NjQsNDguMDg0ODdsLTMzLjgzODY5LDE2NC45NjZhNy41NTE3Miw3LjU1MTcyLDAsMCwwLDE0Ljc0NDA2LDMuMjY2NmwyOS4zOTczLTEyMy40NTg3NGEzOS45OTQxNCwzOS45OTQxNCwwLDEsMSw3Ny44MTIwOCwxOC41MzEyMVpcIl1cbn07XG52YXIgZmFIYW5kcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRjMlwiLCBcIk0yMDQuOCAyMzAuNGMtMTAuNi0xNC4xLTMwLjctMTctNDQuOC02LjQtMTQuMSAxMC42LTE3IDMwLjctNi40IDQ0LjhsMzguMSA1MC44YzQuOCA2LjQgNC4xIDE1LjMtMS41IDIwLjlsLTEyLjggMTIuOGMtNi43IDYuNy0xNy42IDYuMi0yMy42LTEuMUw2NCAyNDQuNFY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDc4LjMgMCA5NnYyMTguNGMwIDEwLjkgMy43IDIxLjUgMTAuNSAzMGwxMDQuMSAxMzQuM2M1IDYuNSA4LjQgMTMuOSAxMC40IDIxLjcgMS44IDYuOSA4LjEgMTEuNiAxNS4zIDExLjZIMjcyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMC0yNy43LTktNTQuNi0yNS42LTc2LjhsLTU3LjYtNzYuOHpNNjA4IDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxNDguNGwtODkuOCAxMDcuOGMtNiA3LjItMTcgNy43LTIzLjYgMS4xbC0xMi44LTEyLjhjLTUuNi01LjYtNi4zLTE0LjUtMS41LTIwLjlsMzguMS01MC44YzEwLjYtMTQuMSA3LjctMzQuMi02LjQtNDQuOC0xNC4xLTEwLjYtMzQuMi03LjctNDQuOCA2LjRsLTU3LjYgNzYuOEMzNjEgMzI5LjQgMzUyIDM1Ni4zIDM1MiAzODR2MTEyYzAgOC44IDcuMiAxNiAxNiAxNmgxMzEuN2M3LjEgMCAxMy41LTQuNyAxNS4zLTExLjYgMi03LjggNS40LTE1LjIgMTAuNC0yMS43bDEwNC4xLTEzNC4zYzYuOC04LjUgMTAuNS0xOS4xIDEwLjUtMzBWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhSGFuZHNIZWxwaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWhlbHBpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0YzRcIiwgXCJNNDg4IDE5MkgzMzZ2NTZjMCAzOS43LTMyLjMgNzItNzIgNzJzLTcyLTMyLjMtNzItNzJWMTI2LjRsLTY0LjkgMzlDMTA3LjggMTc2LjkgOTYgMTk3LjggOTYgMjIwLjJ2NDcuM2wtODAgNDYuMkMuNyAzMjIuNS00LjYgMzQyLjEgNC4zIDM1Ny40bDgwIDEzOC42YzguOCAxNS4zIDI4LjQgMjAuNSA0My43IDExLjdMMjMxLjQgNDQ4SDM2OGMzNS4zIDAgNjQtMjguNyA2NC02NGgxNmMxNy43IDAgMzItMTQuMyAzMi0zMnYtNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTE0Ny43LTM3LjRMNTU1LjcgMTZDNTQ2LjkuNyA1MjcuMy00LjUgNTEyIDQuM0w0MDguNiA2NEgzMDYuNGMtMTIgMC0yMy43IDMuNC0zMy45IDkuN0wyMzkgOTQuNmMtOS40IDUuOC0xNSAxNi4xLTE1IDI3LjFWMjQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDB2LTg4aDE4NGMzMC45IDAgNTYgMjUuMSA1NiA1NnYyOC41bDgwLTQ2LjJjMTUuMy04LjkgMjAuNS0yOC40IDExLjctNDMuN3pcIl1cbn07XG52YXIgZmFIYW5kc1dhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHMtd2FzaCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA1ZVwiLCBcIk00OTYsMjI0YTQ4LDQ4LDAsMSwwLTQ4LTQ4QTQ4LDQ4LDAsMCwwLDQ5NiwyMjRaTTMxMS40NywxNzguNDVBNTYuNzcsNTYuNzcsMCwwLDEsMzI4LDE3NmE1Niw1NiwwLDAsMSwxOSwzLjQ5bDE1LjM1LTQ4LjYxQTI0LDI0LDAsMCwwLDM0Miw5OS43NGMtMTEuNTMtMS4zNS0yMi4yMSw2LjQ0LTI1LjcxLDE3LjUxbC0yMC45LDY2LjE3Wk05My42NSwzODYuMzNjLjgtLjE5LDEuNTQtLjU0LDIuMzUtLjcxVjM1OS45M2ExNTYsMTU2LDAsMCwxLDEwNy4wNi0xNDhsNzMuNy0yMi43NkwzMTAuOTIsODEuMDVhMjQsMjQsMCwwLDAtMjAuMzMtMzEuMTFjLTExLjUzLTEuMzQtMjIuMjIsNi40NS0yNS43MiwxNy41MkwyMzEuNDIsMTczLjg4YTgsOCwwLDAsMS0xNS4yNi00LjgzTDI1OS41MywzMS4yNkEyNCwyNCwwLDAsMCwyMzkuMi4xNUMyMjcuNjctMS4xOSwyMTcsNi42LDIxMy40OSwxNy42NkwxNjUuNTYsMTY5LjM3YTgsOCwwLDEsMS0xNS4yNi00LjgybDM4LjU2LTEyMmEyNCwyNCwwLDAsMC0yMC4zMy0zMS4xMUMxNTcsMTAsMTQ2LjMyLDE3LjgzLDE0Mi44MiwyOC45bC02MCwxODkuODVMODAuNzYsMTY4LjdBMjQsMjQsMCwwLDAsNTYuOSwxNDQuNTVjLTEzLjIzLS4wNS0yNC43MiwxMC41NC0yNC45LDIzLjg2VjI4MS4xNEExMjMuNjksMTIzLjY5LDAsMCwwLDkzLjY1LDM4Ni4zM1pNNTE5LjEsMzM2SDM2MGE4LDgsMCwwLDEsMC0xNkg0ODhhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTA5LjM1LDI3OS44NCw0OTguNzEsMjcyLDQ4Ny4xLDI3MkgyODhsNDcuMDktMTcuMDZhMjQsMjQsMCwwLDAtMTQuMTgtNDUuODhMMjEzLjE5LDI0Mi4zMUExMjMuODgsMTIzLjg4LDAsMCwwLDEyOCwzNjB2MjUuNjVhNzkuNzgsNzkuNzgsMCwwLDEsNTgsMTA4LjYzQTExOC45LDExOC45LDAsMCwwLDI0OCw1MTJINDU2YTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzQ3Ny4zNSw0NzEuODQsNDY2LjcxLDQ2NCw0NTUuMSw0NjRIMzYwYTgsOCwwLDAsMSwwLTE2SDQ4OGEyNCwyNCwwLDAsMCwyMy41NC0yOC43NkM1MDkuMzUsNDA3Ljg0LDQ5OC43MSw0MDAsNDg3LjEsNDAwSDM2MGE4LDgsMCwwLDEsMC0xNkg1MjBhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTQxLjM1LDM0My44NCw1MzAuNzEsMzM2LDUxOS4xLDMzNlpNNDE2LDY0YTMyLDMyLDAsMSwwLTMyLTMyQTMyLDMyLDAsMCwwLDQxNiw2NFpNMTEyLDQxNmE0OCw0OCwwLDEsMCw0OCw0OEE0OCw0OCwwLDAsMCwxMTIsNDE2WlwiXVxufTtcbnZhciBmYUhhbmRzaGFrZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kc2hha2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyYjVcIiwgXCJNNDM0LjcgNjRoLTg1LjljLTggMC0xNS43IDMtMjEuNiA4LjRsLTk4LjMgOTBjLS4xLjEtLjIuMy0uMy40LTE2LjYgMTUuNi0xNi4zIDQwLjUtMi4xIDU2IDEyLjcgMTMuOSAzOS40IDE3LjYgNTYuMSAyLjcuMS0uMS4zLS4xLjQtLjJsNzkuOS03My4yYzYuNS01LjkgMTYuNy01LjUgMjIuNiAxIDYgNi41IDUuNSAxNi42LTEgMjIuNmwtMjYuMSAyMy45TDUwNCAzMTMuOGMyLjkgMi40IDUuNSA1IDcuOSA3LjdWMTI4bC01NC42LTU0LjZjLTUuOS02LTE0LjEtOS40LTIyLjYtOS40ek01NDQgMTI4LjJ2MjIzLjljMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRWMTI4LjJoLTk2em00OCAyMjMuOWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0wIDM4NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjguMkgwVjM4NHptNDgtNjMuOWM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTZjMC04LjkgNy4yLTE2IDE2LTE2em00MzUuOSAxOC42TDMzNC42IDIxNy41bC0zMCAyNy41Yy0yOS43IDI3LjEtNzUuMiAyNC41LTEwMS43LTQuNC0yNi45LTI5LjQtMjQuOC03NC45IDQuNC0xMDEuN0wyODkuMSA2NGgtODMuOGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRMMTI4IDEyOHYyMjMuOWgxOC4zbDkwLjUgODEuOWMyNy40IDIyLjMgNjcuNyAxOC4xIDkwLTkuM2wuMi0uMiAxNy45IDE1LjVjMTUuOSAxMyAzOS40IDEwLjUgNTIuMy01LjRsMzEuNC0zOC42IDUuNCA0LjRjMTMuNyAxMS4xIDMzLjkgOS4xIDQ1LTQuN2w5LjUtMTEuN2MxMS4yLTEzLjggOS4xLTMzLjktNC42LTQ1LjF6XCJdXG59O1xudmFyIGZhSGFuZHNoYWtlQWx0U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLWFsdC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA1ZlwiLCBcIk0zNTguNTksMTk1LjYsNTA0LjIsMzEzLjhhNjMuNCw2My40LDAsMCwxLDIyLjIxLDM3LjkxSDYyNGExNi4wNSwxNi4wNSwwLDAsMCwxNi0xNlYxNDMuOTFBMTYsMTYsMCwwLDAsNjI0LDEyOEg1MTJMNDU3LjQxLDczLjQxQTMyLDMyLDAsMCwwLDQzNC44LDY0SDM0OC45MWEzMiwzMiwwLDAsMC0yMS42MSw4LjQxbC04OC4xMiw4MC42OC0yNS42OS0xOS44NUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxbC0yMC4zNCwyMC4zTDQ1LjQ3LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM4LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTksNTMuOTFMNTk0LjU0LDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVMMzAzLjQsMjAyLjcybDMyLjY5LTI5LjkyLDI3LTI0LjdhMTYsMTYsMCwwLDEsMjEuNjEsMjMuNjFaTTE2LDEyOEExNi4wNSwxNi4wNSwwLDAsMCwwLDE0NFYzMzUuOTFhMTYsMTYsMCwwLDAsMTYsMTZIMTQ2LjNsOTAuNSw4MS44OWE2NCw2NCwwLDAsMCw5MC05LjNsLjItLjIsMTcuOTEsMTUuNWEzNy4xNiwzNy4xNiwwLDAsMCw1Mi4yOS01LjM5bDguOC0xMC44MkwyMy41NiwxMjhaXCJdXG59O1xudmFyIGZhSGFuZHNoYWtlU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDYwXCIsIFwiTTAsMTI4LjIxVjM4NEg2NGEzMiwzMiwwLDAsMCwzMi0zMlYxODRMMjMuODMsMTI4LjIxWk00OCwzMjAuMWExNiwxNiwwLDEsMS0xNiwxNkExNiwxNiwwLDAsMSw0OCwzMjAuMVptODAsMzEuODFoMTguM2w5MC41LDgxLjg5YTY0LDY0LDAsMCwwLDkwLTkuM2wuMi0uMiwxNy45MSwxNS41YTM3LjE2LDM3LjE2LDAsMCwwLDUyLjI5LTUuMzlsOC44LTEwLjgyTDEyOCwyMDguNzJabTQxNi0yMjMuN1YzNTIuMWEzMiwzMiwwLDAsMCwzMiwzMmg2NFYxMjguMjFaTTU5MiwzNTIuMWExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSw1OTIsMzUyLjFaTTMwMy4zMywyMDIuNjdsNTkuNTgtNTQuNTdhMTYsMTYsMCwwLDEsMjEuNTksMjMuNjFMMzU4LjQxLDE5NS42LDUwNCwzMTMuOGE3My4wOCw3My4wOCwwLDAsMSw3LjkxLDcuN1YxMjhMNDU3LjMsNzMuNDFBMzEuNzYsMzEuNzYsMCwwLDAsNDM0LjcsNjRIMzQ4LjhhMzEuOTMsMzEuOTMsMCwwLDAtMjEuNiw4LjQxbC04OC4wNyw4MC42NC0yNS42NC0xOS44MUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxTDE2Mi4zNiw5My43Miw0NS40NywzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zOCwzMS40NkExNiwxNiwwLDAsMCw2LjE5LDUzLjkxTDU5NC41Myw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MmwxOS42NS0yNS4yN2ExNiwxNiwwLDAsMC0yLjgyLTIyLjQ1WlwiXVxufTtcbnZhciBmYUhhbnVraWFoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbnVraWFoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmU2XCIsIFwiTTIzMiAxNjBjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em0tNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTIyNCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTg4IDhjMC00LjQyLTMuNTgtOC04LThoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4em0tNDQwLThjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em01MjAgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDM1MlYxMjhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxOTJIOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxMTJjMCA1My4wMiA0Mi45OCA5NiA5NiA5NmgxOTJ2NjRIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2SDM1MnYtNjRoMTkyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2em0tMTYtMzJjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M2MDggNDggNjA4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1OTQuNzUgMTI4IDYwOCAxMjh6bS01NzYgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzMyIDQ4IDMyIDQ4IDggODYuNjEgOCAxMDEuMzMgMTguNzUgMTI4IDMyIDEyOHptMjg4LTQ4YzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMzIwIDAgMzIwIDBzLTI0IDM4LjYxLTI0IDUzLjMzUzMwNi43NSA4MCAzMjAgODB6bS0yMDggNDhjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1MxMTIgNDggMTEyIDQ4cy0yNCAzOC42MS0yNCA1My4zM1M5OC43NSAxMjggMTEyIDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzE3NiA0OCAxNzYgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzE2Mi43NSAxMjggMTc2IDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzI0MCA0OCAyNDAgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzIyNi43NSAxMjggMjQwIDEyOHptMTYwIDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0MDAgNDggNDAwIDQ4cy0yNCAzOC42MS0yNCA1My4zM1MzODYuNzUgMTI4IDQwMCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0NjQgNDggNDY0IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M0NTAuNzUgMTI4IDQ2NCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M1MjggNDggNTI4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1MTQuNzUgMTI4IDUyOCAxMjh6XCJdXG59O1xudmFyIGZhSGFyZEhhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXJkLWhhdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjgwN1wiLCBcIk00ODAgMjg4YzAtODAuMjUtNDkuMjgtMTQ4LjkyLTExOS4xOS0xNzcuNjJMMzIwIDE5MlY4MGExNiAxNiAwIDAgMC0xNi0xNmgtOTZhMTYgMTYgMCAwIDAtMTYgMTZ2MTEybC00MC44MS04MS42MkM4MS4yOCAxMzkuMDggMzIgMjA3Ljc1IDMyIDI4OHY2NGg0NDh6bTE2IDk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQ4MGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhSGFzaHRhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXNodGFnJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjkyXCIsIFwiTTQ0MC42NjcgMTgyLjEwOWw3LjE0My00MGMxLjMxMy03LjM1NS00LjM0Mi0xNC4xMDktMTEuODEzLTE0LjEwOWgtNzQuODFsMTQuNjIzLTgxLjg5MUMzNzcuMTIzIDM4Ljc1NCAzNzEuNDY4IDMyIDM2My45OTcgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMjk2LjE3NSAxMjhIMTk3LjU0bDE0LjYyMy04MS44OTFDMjEzLjQ3NyAzOC43NTQgMjA3LjgyMiAzMiAyMDAuMzUgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMTMyLjUyOCAxMjhINTMuNDMyYTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDMzMuMTYzIDE4NS4yNDYgMzguODE4IDE5MiA0Ni4yODkgMTkyaDc0LjgxTDk4LjI0MiAzMjBIMTkuMTQ2YTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDLTEuMTIzIDM3Ny4yNDYgNC41MzIgMzg0IDEyLjAwMyAzODRoNzQuODFMNzIuMTkgNDY1Ljg5MUM3MC44NzcgNDczLjI0NiA3Ni41MzIgNDgwIDg0LjAwMyA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwxNTEuODI2IDM4NGg5OC42MzRsLTE0LjYyMyA4MS44OTFDMjM0LjUyMyA0NzMuMjQ2IDI0MC4xNzggNDgwIDI0Ny42NSA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwzMTUuNDcyIDM4NGg3OS4wOTZhMTIgMTIgMCAwIDAgMTEuODEzLTkuODkxbDcuMTQzLTQwYzEuMzEzLTcuMzU1LTQuMzQyLTE0LjEwOS0xMS44MTMtMTQuMTA5aC03NC44MWwyMi44NTctMTI4aDc5LjA5NmExMiAxMiAwIDAgMCAxMS44MTMtOS44OTF6TTI2MS44ODkgMzIwaC05OC42MzRsMjIuODU3LTEyOGg5OC42MzRsLTIyLjg1NyAxMjh6XCJdXG59O1xudmFyIGZhSGF0Q293Ym95ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhdC1jb3dib3knLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4YzBcIiwgXCJNNDkwIDI5Ni45QzQ4MC41MSAyMzkuNTEgNDUwLjUxIDY0IDM5Mi4zIDY0Yy0xNCAwLTI2LjQ5IDUuOTMtMzcgMTRhNTguMjEgNTguMjEgMCAwIDEtNzAuNTggMGMtMTAuNTEtOC0yMy0xNC0zNy0xNC01OC4yIDAtODguMiAxNzUuNDctOTcuNzEgMjMyLjg4QzE4OC44MSAzMDkuNDcgMjQzLjczIDMyMCAzMjAgMzIwczEzMS4yMy0xMC41MSAxNzAtMjMuMXptMTQyLjktMzcuMThhMTYgMTYgMCAwIDAtMTkuNzUgMS41Yy0xIC45LTEwMS4yNyA5MC43OC0yOTMuMTYgOTAuNzgtMTkwLjgyIDAtMjkyLjIyLTg5Ljk0LTI5My4yNC05MC44NEExNiAxNiAwIDAgMCAxIDI3OC41M0MxLjczIDI4MC41NSA3OC4zMiA0ODAgMzIwIDQ4MHMzMTguMjctMTk5LjQ1IDMxOS0yMDEuNDdhMTYgMTYgMCAwIDAtNi4wOS0xOC44MXpcIl1cbn07XG52YXIgZmFIYXRDb3dib3lTaWRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhdC1jb3dib3ktc2lkZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjhjMVwiLCBcIk0yNjAuOCAyOTEuMDZjLTI4LjYzLTIyLjk0LTYyLTM1LjA2LTk2LjQtMzUuMDZDODcgMjU2IDIxLjQ3IDMxOC43MiAxLjQzIDQxMi4wNmMtMy41NSAxNi42LS40MyAzMy44MyA4LjU3IDQ3LjNDMTguNzUgNDcyLjQ3IDMxLjgzIDQ4MCA0NS44OCA0ODBINTkyYy0xMDMuMjEgMC0xNTUtMzcuMDctMjMzLjE5LTEwNC40NnptMjM0LjY1LTE4LjI5TDQ2OC40IDExNi4yQTY0IDY0IDAgMCAwIDM5MiA2NC40MUwyMDAuODUgMTA1YTY0IDY0IDAgMCAwLTUwLjM1IDU1Ljc5TDE0My42MSAyMjZjNi45LS44MyAxMy43LTIgMjAuNzktMiA0MS43OSAwIDgyIDE0LjU1IDExNy4yOSA0Mi44Mmw5OCA4NC40OEM0NTAuNzYgNDEyLjU0IDQ5NC45IDQ0OCA1OTIgNDQ4YTQ4IDQ4IDAgMCAwIDQ4LTQ4YzAtMjUuMzktMjkuNi0xMTkuMzMtMTQ0LjU1LTEyNy4yM3pcIl1cbn07XG52YXIgZmFIYXRXaXphcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGF0LXdpemFyZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZlOFwiLCBcIk00OTYgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tMzA0LTY0bC02NC0zMiA2NC0zMiAzMi02NCAzMiA2NCA2NCAzMi02NCAzMi0xNiAzMmgyMDhsLTg2LjQxLTIwMS42M2E2My45NTUgNjMuOTU1IDAgMCAxLTEuODktNDUuNDVMNDE2IDAgMjI4LjQyIDEwNy4xOWExMjcuOTg5IDEyNy45ODkgMCAwIDAtNTMuNDYgNTkuMTVMNjQgNDE2aDE0NGwtMTYtMzJ6bTY0LTIyNGwxNi0zMiAxNiAzMiAzMiAxNi0zMiAxNi0xNiAzMi0xNi0zMi0zMi0xNiAzMi0xNnpcIl1cbn07XG52YXIgZmFIZGQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGRkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMGEwXCIsIFwiTTU3NiAzMDR2OTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OHYtOTZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTQ4LTgwYTc5LjU1NyA3OS41NTcgMCAwIDEgMzAuNzc3IDYuMTY1TDQ2Mi4yNSA4NS4zNzRBNDguMDAzIDQ4LjAwMyAwIDAgMCA0MjIuMzExIDY0SDE1My42ODlhNDggNDggMCAwIDAtMzkuOTM4IDIxLjM3NEwxNy4yMjMgMjMwLjE2NUE3OS41NTcgNzkuNTU3IDAgMCAxIDQ4IDIyNGg0ODB6bS00OCA5NmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0tOTYgMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUhlYWRTaWRlQ291Z2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLWNvdWdoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDYxXCIsIFwiTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFpNNTUyLDQxNmEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw1NTIsNDE2Wm0tNjQtNTZhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNDg4LDM2MFpNNjE2LDQ2NGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsNDY0Wm0wLTEwNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWm0tNjQtNDBhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNTUyLDMyMFptLTc0Ljc4LTQ1Yy0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkM4NiwwLDAsODYsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMGEzMiwzMiwwLDAsMSwwLTY0aDk2VjMyMGgzMkEzMiwzMiwwLDAsMCw0NzcuMjIsMjc1Wk0yODgsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDI4OCwyMjRaXCJdXG59O1xudmFyIGZhSGVhZFNpZGVDb3VnaFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWQtc2lkZS1jb3VnaC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2MlwiLCBcIk00NTQuMTEsMzE5LjIxYzE5LjU2LTMuODEsMzEuNjItMjUsMjMuMTEtNDQuMjEtMjEtNDcuMTItNDguNS0xNTEuNzUtNzMuMTItMTg2Ljc1QTIwOC4xMywyMDguMTMsMCwwLDAsMjM0LjEsMEgxOTJBMTkwLjY0LDE5MC42NCwwLDAsMCw4NC4xOCwzMy4zTDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTMxMy4zOSwyMTAuNDUsMjYzLjYxLDE3MmM1Ljg4LTcuMTQsMTQuNDMtMTIsMjQuMzYtMTJhMzIuMDYsMzIuMDYsMCwwLDEsMzIsMzJDMzIwLDE5OSwzMTcuMjQsMjA1LjE3LDMxMy4zOSwyMTAuNDVaTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFptLTY0LDY0YTI0LDI0LDAsMSwwLTI0LTI0QTI0LDI0LDAsMCwwLDU1MiwzNjhaTTI4OCwzODRhMzIsMzIsMCwwLDEsMzItMzJoMTkuNTRMMjAuNzMsMTA1LjU5QTE5MC44NiwxOTAuODYsMCwwLDAsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMEEzMiwzMiwwLDAsMSwyODgsMzg0Wm0zMjgtMjRhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNjE2LDM2MFpcIl1cbn07XG52YXIgZmFIZWFkU2lkZU1hc2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLW1hc2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNjNcIiwgXCJNLjE1LDE4NC40MkMtMi4xNywyNDQuMjEsMjMsMjk4LjA2LDY0LDMzNC44OFY1MTJIMjI0VjMxNi41MUwzLjY3LDE1Ni4yNUExODIuMjgsMTgyLjI4LDAsMCwwLC4xNSwxODQuNDJaTTUwOS4yMiwyNzVjLTIxLTQ3LjEyLTQ4LjUtMTUxLjc1LTczLjEyLTE4Ni43NUEyMDguMTEsMjA4LjExLDAsMCwwLDI2Ni4xMSwwSDIwMEMxMTcsMCw0Mi40OCw1MC41NywxMy4yNSwxMjMuNjVMMjM5LjIxLDI4OEg1MTEuNzZBMzEuMzUsMzEuMzUsMCwwLDAsNTA5LjIyLDI3NVpNMzIwLDIyNGEzMiwzMiwwLDEsMSwzMi0zMkEzMi4wNywzMi4wNywwLDAsMSwzMjAsMjI0Wm0xNiwxNDRINDk2bDE2LTQ4SDI1NlY1MTJINDAxLjg4YTY0LDY0LDAsMCwwLDYwLjcxLTQzLjc2TDQ2NCw0NjRIMzM2YTE2LDE2LDAsMCwxLDAtMzJINDc0LjY3bDEwLjY3LTMySDMzNmExNiwxNiwwLDAsMSwwLTMyWlwiXVxufTtcbnZhciBmYUhlYWRTaWRlVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLXZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDY0XCIsIFwiTTI3MiwyNDBhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjcyLDI0MFptLTY0LTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDIwOCwxNzZabTMwMS4yLDk5Yy0yMC45My00Ny4xMi00OC40My0xNTEuNzMtNzMuMDctMTg2Ljc1QTIwNy45LDIwNy45LDAsMCwwLDI2Ni4wOSwwSDE5MkM4NiwwLDAsODYsMCwxOTJBMTkxLjIzLDE5MS4yMywwLDAsMCw2NCwzMzQuODFWNTEySDMyMFY0NDhoNjRhNjQsNjQsMCwwLDAsNjQtNjRWMzIwSDQ4MEEzMiwzMiwwLDAsMCw1MDkuMiwyNzVaTTM2OCwyNDBIMzU1Ljg4Yy0yOC41MSwwLTQyLjc5LDM0LjQ3LTIyLjYzLDU0LjYzbDguNTgsOC41N2ExNiwxNiwwLDEsMS0yMi42MywyMi42M2wtOC41Ny04LjU4QzI5MC40NywyOTcuMDksMjU2LDMxMS4zNywyNTYsMzM5Ljg4VjM1MmExNiwxNiwwLDAsMS0zMiwwVjMzOS44OGMwLTI4LjUxLTM0LjQ3LTQyLjc5LTU0LjYzLTIyLjYzbC04LjU3LDguNThhMTYsMTYsMCwwLDEtMjIuNjMtMjIuNjNsOC41OC04LjU3YzIwLjE2LTIwLjE2LDUuODgtNTQuNjMtMjIuNjMtNTQuNjNIMTEyYTE2LDE2LDAsMCwxLDAtMzJoMTIuMTJjMjguNTEsMCw0Mi43OS0zNC40NywyMi42My01NC42M2wtOC41OC04LjU3YTE2LDE2LDAsMCwxLDIyLjYzLTIyLjYzbDguNTcsOC41OGMyMC4xNiwyMC4xNiw1NC42Myw1Ljg4LDU0LjYzLTIyLjYzVjk2YTE2LDE2LDAsMCwxLDMyLDB2MTIuMTJjMCwyOC41MSwzNC40Nyw0Mi43OSw1NC42MywyMi42M2w4LjU3LTguNThhMTYsMTYsMCwwLDEsMjIuNjMsMjIuNjNsLTguNTgsOC41N0MzMTMuMDksMTczLjUzLDMyNy4zNywyMDgsMzU1Ljg4LDIwOEgzNjhhMTYsMTYsMCwwLDEsMCwzMlpcIl1cbn07XG52YXIgZmFIZWFkaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZGNcIiwgXCJNNDQ4IDk2djMyMGgzMmExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgzMjBhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyVjI4OEgxNjB2MTI4aDMyYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDMyYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMlY5NkgzMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxNjBhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZoLTMydjEyOGgxOTJWOTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2VjQ4YTE2IDE2IDAgMCAxIDE2LTE2aDE2MGExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNnpcIl1cbn07XG52YXIgZmFIZWFkcGhvbmVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRwaG9uZXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMjVcIiwgXCJNMjU2IDMyQzExNC41MiAzMiAwIDE0Ni40OTYgMCAyODh2NDhhMzIgMzIgMCAwIDAgMTcuNjg5IDI4LjYyMmwxNC4zODMgNy4xOTFDMzQuMDgzIDQzMS45MDMgODMuNDIxIDQ4MCAxNDQgNDgwaDI0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC0yNGMtMzEuMzQyIDAtNTkuNjcxIDEyLjg3OS04MCAzMy42MjdWMjg4YzAtMTA1Ljg2OSA4Ni4xMzEtMTkyIDE5Mi0xOTJzMTkyIDg2LjEzMSAxOTIgMTkydjEuNjI3QzQyNy42NzEgMjY4Ljg3OSAzOTkuMzQyIDI1NiAzNjggMjU2aC0yNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE3NmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjRjNjAuNTc5IDAgMTA5LjkxNy00OC4wOTggMTExLjkyOC0xMDguMTg3bDE0LjM4Mi03LjE5MUEzMiAzMiAwIDAgMCA1MTIgMzM2di00OGMwLTE0MS40NzktMTE0LjQ5Ni0yNTYtMjU2LTI1NnpcIl1cbn07XG52YXIgZmFIZWFkcGhvbmVzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRwaG9uZXMtYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNThmXCIsIFwiTTE2MCAyODhoLTE2Yy0zNS4zNSAwLTY0IDI4LjctNjQgNjQuMTJ2NjMuNzZjMCAzNS40MSAyOC42NSA2NC4xMiA2NCA2NC4xMmgxNmMxNy42NyAwIDMyLTE0LjM2IDMyLTMyLjA2VjMyMC4wNmMwLTE3LjcxLTE0LjMzLTMyLjA2LTMyLTMyLjA2em0yMDggMGgtMTZjLTE3LjY3IDAtMzIgMTQuMzUtMzIgMzIuMDZ2MTI3Ljg4YzAgMTcuNyAxNC4zMyAzMi4wNiAzMiAzMi4wNmgxNmMzNS4zNSAwIDY0LTI4LjcxIDY0LTY0LjEydi02My43NmMwLTM1LjQxLTI4LjY1LTY0LjEyLTY0LTY0LjEyek0yNTYgMzJDMTEyLjkxIDMyIDQuNTcgMTUxLjEzIDAgMjg4djExMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODhjMC0xMTQuNjcgOTMuMzMtMjA3LjggMjA4LTIwNy44MiAxMTQuNjcuMDIgMjA4IDkzLjE1IDIwOCAyMDcuODJ2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2VjI4OEM1MDcuNDMgMTUxLjEzIDM5OS4wOSAzMiAyNTYgMzJ6XCJdXG59O1xudmFyIGZhSGVhZHNldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFkc2V0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTkwXCIsIFwiTTE5MiAyMDhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2NDhjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjIwOHptMTc2IDE0NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0di00OGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC0xNmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMTJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNnpNMjU2IDBDMTEzLjE4IDAgNC41OCAxMTguODMgMCAyNTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTE0LjY5IDkzLjMxLTIwOCAyMDgtMjA4czIwOCA5My4zMSAyMDggMjA4aC0uMTJjLjA4IDIuNDMuMTIgMTY1LjcyLjEyIDE2NS43MiAwIDIzLjM1LTE4LjkzIDQyLjI4LTQyLjI4IDQyLjI4SDMyMGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0zMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OGgxODEuNzJjNDkuODYgMCA5MC4yOC00MC40MiA5MC4yOC05MC4yOFYyNTZDNTA3LjQyIDExOC44MyAzOTguODIgMCAyNTYgMHpcIl1cbn07XG52YXIgZmFIZWFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwNFwiLCBcIk00NjIuMyA2Mi42QzQwNy41IDE1LjkgMzI2IDI0LjMgMjc1LjcgNzYuMkwyNTYgOTYuNWwtMTkuNy0yMC4zQzE4Ni4xIDI0LjMgMTA0LjUgMTUuOSA0OS43IDYyLjZjLTYyLjggNTMuNi02Ni4xIDE0OS44LTkuOSAyMDcuOWwxOTMuNSAxOTkuOGMxMi41IDEyLjkgMzIuOCAxMi45IDQ1LjMgMGwxOTMuNS0xOTkuOGM1Ni4zLTU4LjEgNTMtMTU0LjMtOS44LTIwNy45elwiXVxufTtcbnZhciBmYUhlYXJ0QnJva2VuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYXJ0LWJyb2tlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhOVwiLCBcIk00NzMuNyA3My44bC0yLjQtMi41Yy00Ni00Ny0xMTgtNTEuNy0xNjkuNi0xNC44TDMzNiAxNTkuOWwtOTYgNjQgNDggMTI4LTE0NC0xNDQgOTYtNjQtMjguNi04Ni41QzE1OS43IDE5LjYgODcgMjQgNDAuNyA3MS40bC0yLjQgMi40Qy0xMC40IDEyMy42LTEyLjUgMjAyLjkgMzEgMjU2bDIxMi4xIDIxOC42YzcuMSA3LjMgMTguNiA3LjMgMjUuNyAwTDQ4MSAyNTUuOWM0My41LTUzIDQxLjQtMTMyLjMtNy4zLTE4Mi4xelwiXVxufTtcbnZhciBmYUhlYXJ0YmVhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydGJlYXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyMWVcIiwgXCJNMzIwLjIgMjQzLjhsLTQ5LjcgOTkuNGMtNiAxMi4xLTIzLjQgMTEuNy0yOC45LS42bC01Ni45LTEyNi4zLTMwIDcxLjdINjAuNmwxODIuNSAxODYuNWM3LjEgNy4zIDE4LjYgNy4zIDI1LjcgMEw0NTEuNCAyODhIMzQyLjNsLTIyLjEtNDQuMnpNNDczLjcgNzMuOWwtMi40LTIuNWMtNTEuNS01Mi42LTEzNS44LTUyLjYtMTg3LjQgMEwyNTYgMTAwbC0yNy45LTI4LjVjLTUxLjUtNTIuNy0xMzUuOS01Mi43LTE4Ny40IDBsLTIuNCAyLjRDLTEwLjQgMTIzLjctMTIuNSAyMDMgMzEgMjU2aDEwMi40bDM1LjktODYuMmM1LjQtMTIuOSAyMy42LTEzLjIgMjkuNC0uNGw1OC4yIDEyOS4zIDQ5LTk3LjljNS45LTExLjggMjIuNy0xMS44IDI4LjYgMGwyNy42IDU1LjJINDgxYzQzLjUtNTMgNDEuNC0xMzIuMy03LjMtMTgyLjF6XCJdXG59O1xudmFyIGZhSGVsaWNvcHRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWxpY29wdGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTMzXCIsIFwiTTMwNCAzODRoMjcyYzE3LjY3IDAgMzItMTQuMzMgMzItMzIgMC0xMjMuNzEtMTAwLjI5LTIyNC0yMjQtMjI0VjY0aDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNDRjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE3NnY2NEgxMTJMNjguOCA3MC40QzY1Ljc4IDY2LjM3IDYxLjAzIDY0IDU2IDY0SDE2LjAxQzUuNiA2NC0yLjA0IDczLjc4LjQ5IDgzLjg4TDMyIDE5MmwxNjAgNjQgODYuNCAxMTUuMkEzMS45OTIgMzEuOTkyIDAgMCAwIDMwNCAzODR6bTExMi0xODguNDlDNDc4LjU1IDIwOC4zIDUyOC4wMyAyNTcuNDQgNTQwLjc5IDMyMEg0MTZWMTk1LjUxem0yMTkuMzcgMjYzLjNsLTIyLjE1LTIyLjJjLTYuMjUtNi4yNi0xNi4yNC02LjEtMjIuNjQuMDEtNy4wOSA2Ljc3LTEzLjg0IDExLjI1LTI0LjY0IDExLjI1SDI0MGMtOC44NCAwLTE2IDcuMTgtMTYgMTYuMDN2MzIuMDZjMCA4Ljg1IDcuMTYgMTYuMDMgMTYgMTYuMDNoMzI1Ljk0YzE0Ljg4IDAgMzUuMy0uNDcgNjguNDUtMjkuNTIgNy4wMi02LjE0IDcuNTctMTcuMDUuOTgtMjMuNjZ6XCJdXG59O1xudmFyIGZhSGlnaGxpZ2h0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGlnaGxpZ2h0ZXInLFxuICBpY29uOiBbNTQ0LCA1MTIsIFtdLCBcImY1OTFcIiwgXCJNMCA0NzkuOThMOTkuOTIgNTEybDM1LjQ1LTM1LjQ1LTY3LjA0LTY3LjA0TDAgNDc5Ljk4em0xMjQuNjEtMjQwLjAxYTM2LjU5MiAzNi41OTIgMCAwIDAtMTAuNzkgMzguMWwxMy4wNSA0Mi44My01MC45MyA1MC45NCA5Ni4yMyA5Ni4yMyA1MC44Ni01MC44NiA0Mi43NCAxMy4wOGMxMy43MyA0LjIgMjguNjUtLjAxIDM4LjE1LTEwLjc4bDM1LjU1LTQxLjY0LTE3My4zNC0xNzMuMzQtNDEuNTIgMzUuNDR6bTQwMy4zMS0xNjAuN2wtNjMuMi02My4yYy0yMC40OS0yMC40OS01My4zOC0yMS41Mi03NS4xMi0yLjM1TDE5MC41NSAxODMuNjhsMTY5Ljc3IDE2OS43OEw1MzAuMjcgMTU0LjRjMTkuMTgtMjEuNzQgMTguMTUtNTQuNjMtMi4zNS03NS4xM3pcIl1cbn07XG52YXIgZmFIaWtpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGlraW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNmVjXCIsIFwiTTgwLjk1IDQ3Mi4yM2MtNC4yOCAxNy4xNiA2LjE0IDM0LjUzIDIzLjI4IDM4LjgxIDIuNjEuNjYgNS4yMi45NSA3LjguOTUgMTQuMzMgMCAyNy4zNy05LjcgMzEuMDItMjQuMjNsMjUuMjQtMTAwLjk3LTUyLjc4LTUyLjc4LTM0LjU2IDEzOC4yMnptMTQuODktMTk2LjEyTDEzNyAxMTdjMi4xOS04LjQyLTMuMTQtMTYuOTUtMTEuOTItMTkuMDYtNDMuODgtMTAuNTItODguMzUgMTUuMDctOTkuMzIgNTcuMTdMLjQ5IDI1My4yNGMtMi4xOSA4LjQyIDMuMTQgMTYuOTUgMTEuOTIgMTkuMDZsNjMuNTYgMTUuMjVjOC43OSAyLjEgMTcuNjgtMy4wMiAxOS44Ny0xMS40NHpNMzY4IDE2MGgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2aC0zNC43NWwtNDYuNzgtNDYuNzhDMjQzLjM4IDEzNC4xMSAyMjguNjEgMTI4IDIxMi45MSAxMjhjLTI3LjAyIDAtNTAuNDcgMTguMy01Ny4wMyA0NC41MmwtMjYuOTIgMTA3LjcyYTMyLjAxMiAzMi4wMTIgMCAwIDAgOC40MiAzMC4zOUwyMjQgMzk3LjI1VjQ4MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyczMyLTE0LjMzIDMyLTMydi04Mi43NWMwLTE3LjA5LTYuNjYtMzMuMTYtMTguNzUtNDUuMjVsLTQ2LjgyLTQ2LjgyYy4xNS0uNS40OS0uODkuNjItMS40MWwxOS44OS03OS41NyAyMi40MyAyMi40M2M2IDYgMTQuMTQgOS4zOCAyMi42MiA5LjM4aDQ4djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNzZjLjAxLTguODQtNy4xNS0xNi0xNS45OS0xNnpNMjQwIDk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhTMjY2LjUxIDAgMjQwIDBzLTQ4IDIxLjQ5LTQ4IDQ4IDIxLjQ5IDQ4IDQ4IDQ4elwiXVxufTtcbnZhciBmYUhpcHBvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hpcHBvJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmVkXCIsIFwiTTU4MS4xMiA5Ni4yYy0yNy42Ny0uMTUtNTIuNSAxNy41OC03Ni42IDI2LjYyQzQ4OS45OCA4OC4yNyA0NTUuODMgNjQgNDE2IDY0Yy0xMS4yOCAwLTIxLjk1IDIuMy0zMiA1Ljg4VjU2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjRoLTE2Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0djQ4Ljk4QzI4Ni4wMSA3OS41OCAyNDEuMjQgNjQgMTkyIDY0IDg1Ljk2IDY0IDAgMTM1LjY0IDAgMjI0djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmg2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNzAuNzlDMTI4LjM1IDQwNy41NyAxNjYuNzIgNDE2IDIwOCA0MTZzNzkuNjUtOC40MyAxMTItMjIuNzlWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDY0YzguODQgMCAxNi03LjE2IDE2LTE2VjI4OGgxMjh2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTkyLjAyYzAtMzQuMDktMjQuNzktNjcuNTktNTguODgtNjcuNzh6TTQ0OCAxNzZjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2elwiXVxufTtcbnZhciBmYUhpc3RvcnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGlzdG9yeScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFkYVwiLCBcIk01MDQgMjU1LjUzMWMuMjUzIDEzNi42NC0xMTEuMTggMjQ4LjM3Mi0yNDcuODIgMjQ4LjQ2OC01OS4wMTUuMDQyLTExMy4yMjMtMjAuNTMtMTU1LjgyMi01NC45MTEtMTEuMDc3LTguOTQtMTEuOTA1LTI1LjU0MS0xLjgzOS0zNS42MDdsMTEuMjY3LTExLjI2N2M4LjYwOS04LjYwOSAyMi4zNTMtOS41NTEgMzEuODkxLTEuOTg0QzE3My4wNjIgNDI1LjEzNSAyMTIuNzgxIDQ0MCAyNTYgNDQwYzEwMS43MDUgMCAxODQtODIuMzExIDE4NC0xODQgMC0xMDEuNzA1LTgyLjMxMS0xODQtMTg0LTE4NC00OC44MTQgMC05My4xNDkgMTguOTY5LTEyNi4wNjggNDkuOTMybDUwLjc1NCA1MC43NTRjMTAuMDggMTAuMDggMi45NDEgMjcuMzE0LTExLjMxMyAyNy4zMTRIMjRjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZWMzguNjI3YzAtMTQuMjU0IDE3LjIzNC0yMS4zOTMgMjcuMzE0LTExLjMxNGw0OS4zNzIgNDkuMzcyQzEyOS4yMDkgMzQuMTM2IDE4OS41NTIgOCAyNTYgOGMxMzYuODEgMCAyNDcuNzQ3IDExMC43OCAyNDggMjQ3LjUzMXptLTE4MC45MTIgNzguNzg0bDkuODIzLTEyLjYzYzguMTM4LTEwLjQ2MyA2LjI1My0yNS41NDItNC4yMS0zMy42NzlMMjg4IDI1Ni4zNDlWMTUyYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtMTZjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMzUuNjUxbDY1LjQwOSA1MC44NzRjMTAuNDYzIDguMTM3IDI1LjU0MSA2LjI1MyAzMy42NzktNC4yMXpcIl1cbn07XG52YXIgZmFIb2NrZXlQdWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvY2tleS1wdWNrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDUzXCIsIFwiTTAgMTYwYzAtNTMgMTE0LjYtOTYgMjU2LTk2czI1NiA0MyAyNTYgOTYtMTE0LjYgOTYtMjU2IDk2UzAgMjEzIDAgMTYwem0wIDgyLjJWMzUyYzAgNTMgMTE0LjYgOTYgMjU2IDk2czI1Ni00MyAyNTYtOTZWMjQyLjJjLTExMy40IDgyLjMtMzk4LjUgODIuNC01MTIgMHpcIl1cbn07XG52YXIgZmFIb2xseUJlcnJ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvbGx5LWJlcnJ5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmN2FhXCIsIFwiTTE0NCAxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0xMTItNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4LTQ4IDIxLjUtNDggNDh6bS0zMi00OGMyNi41IDAgNDgtMjEuNSA0OC00OFMyNTAuNSAwIDIyNCAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bS0xNi4yIDEzOS4xYy4xLTEyLjQtMTMuMS0yMC4xLTIzLjgtMTMuNy0zNC4zIDIwLjMtNzEuNCAzMi43LTEwOC43IDM2LjItOS43LjktMTUuNiAxMS4zLTExLjYgMjAuMiA2LjIgMTMuOSAxMS4xIDI4LjYgMTQuNyA0My44IDMuNiAxNS4yLTUuMyAzMC42LTIwLjIgMzUuMS0xNC45IDQuNS0zMC4xIDcuNi00NS4zIDkuMS05LjcgMS0xNS43IDExLjMtMTEuNyAyMC4yIDE1IDMyLjggMjIuOSA2OS41IDIzIDEwNy43LjEgMTQuNCAxNS4yIDIzLjEgMjcuNiAxNiAzMy4yLTE5IDY4LjktMzAuNSAxMDQuOC0zMy45IDkuNy0uOSAxNS42LTExLjMgMTEuNi0yMC4yLTYuMi0xMy45LTExLjEtMjguNi0xNC43LTQzLjgtMy42LTE1LjIgNS4zLTMwLjYgMjAuMi0zNS4xIDE0LjktNC41IDMwLjEtNy42IDQ1LjMtOS4xIDkuNy0xIDE1LjctMTEuMyAxMS43LTIwLjItMTUuNS0zNC4yLTIzLjMtNzIuNS0yMi45LTExMi4zek00MzUgMzY1LjZjLTE1LjItMS42LTMwLjMtNC43LTQ1LjMtOS4xLTE0LjktNC41LTIzLjgtMTkuOS0yMC4yLTM1LjEgMy42LTE1LjIgOC41LTI5LjggMTQuNy00My44IDQtOC45LTEuOS0xOS4zLTExLjYtMjAuMi0zNy4zLTMuNS03NC40LTE1LjktMTA4LjctMzYuMi0xMC43LTYuMy0yMy45IDEuNC0yMy44IDEzLjcgMCAxLjYtLjIgMy4yLS4yIDQuOS4yIDMzLjMgNyA2NS43IDE5LjkgOTQgNS43IDEyLjQgNS4yIDI2LjYtLjYgMzguOSA0LjkgMS4yIDkuOSAyLjIgMTQuOCAzLjcgMTQuOSA0LjUgMjMuOCAxOS45IDIwLjIgMzUuMS0zLjYgMTUuMi04LjUgMjkuOC0xNC43IDQzLjgtNCA4LjkgMS45IDE5LjMgMTEuNiAyMC4yIDM1LjkgMy40IDcxLjYgMTQuOSAxMDQuOCAzMy45IDEyLjUgNy4xIDI3LjYtMS42IDI3LjYtMTYgLjItMzguMiA4LTc1IDIzLTEwNy43IDQuMy04LjctMS44LTE5LjEtMTEuNS0yMC4xelwiXVxufTtcbnZhciBmYUhvbWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9tZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAxNVwiLCBcIk0yODAuMzcgMTQ4LjI2TDk2IDMwMC4xMVY0NjRhMTYgMTYgMCAwIDAgMTYgMTZsMTEyLjA2LS4yOWExNiAxNiAwIDAgMCAxNS45Mi0xNlYzNjhhMTYgMTYgMCAwIDEgMTYtMTZoNjRhMTYgMTYgMCAwIDEgMTYgMTZ2OTUuNjRhMTYgMTYgMCAwIDAgMTYgMTYuMDVMNDY0IDQ4MGExNiAxNiAwIDAgMCAxNi0xNlYzMDBMMjk1LjY3IDE0OC4yNmExMi4xOSAxMi4xOSAwIDAgMC0xNS4zIDB6TTU3MS42IDI1MS40N0w0ODggMTgyLjU2VjQ0LjA1YTEyIDEyIDAgMCAwLTEyLTEyaC01NmExMiAxMiAwIDAgMC0xMiAxMnY3Mi42MUwzMTguNDcgNDNhNDggNDggMCAwIDAtNjEgMEw0LjM0IDI1MS40N2ExMiAxMiAwIDAgMC0xLjYgMTYuOWwyNS41IDMxQTEyIDEyIDAgMCAwIDQ1LjE1IDMwMWwyMzUuMjItMTkzLjc0YTEyLjE5IDEyLjE5IDAgMCAxIDE1LjMgMEw1MzAuOSAzMDFhMTIgMTIgMCAwIDAgMTYuOS0xLjZsMjUuNS0zMWExMiAxMiAwIDAgMC0xLjctMTYuOTN6XCJdXG59O1xudmFyIGZhSG9yc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9yc2UnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY2ZjBcIiwgXCJNNTc1LjkyIDc2LjZjLS4wMS04LjEzLTMuMDItMTUuODctOC41OC0yMS44LTMuNzgtNC4wMy04LjU4LTkuMTItMTMuNjktMTQuNSAxMS4wNi02Ljg0IDE5LjUtMTcuNDkgMjIuMTgtMzAuNjZDNTc2Ljg1IDQuNjggNTcyLjk2IDAgNTY3LjkgMEg0NDcuOTJjLTcwLjY5IDAtMTI4IDU3LjMxLTEyOCAxMjhIMTYwYy0yOC44NCAwLTU0LjQgMTIuOTgtNzIgMzMuMTFWMTYwYy00OC41MyAwLTg4IDM5LjQ3LTg4IDg4djU2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01NmMwLTEzLjIyIDYuODctMjQuMzkgMTYuNzgtMzEuNjgtLjIxIDIuNTgtLjc4IDUuMDUtLjc4IDcuNjggMCAyNy42NCAxMS44NCA1Mi4zNiAzMC41NCA2OS44OGwtMjUuNzIgNjguNmE2My45NDUgNjMuOTQ1IDAgMCAwLTIuMTYgMzcuOTlsMjQuODUgOTkuNDFBMTUuOTgyIDE1Ljk4MiAwIDAgMCAxMDcuMDIgNTEyaDY1Ljk2YzEwLjQxIDAgMTguMDUtOS43OCAxNS41Mi0xOS44OGwtMjYuMzEtMTA1LjI2IDIzLjg0LTYzLjU5TDMyMCAzNDUuNlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzE4LjIyYzE5Ljc0LTIwLjE5IDMyLTQ3Ljc1IDMyLTc4LjIyIDAtLjIyLS4wNy0uNDItLjA4LS42NFYxMzYuODlsMTYgNy4xMSAxOC45IDM3LjdjNy40NSAxNC44NyAyNS4wNSAyMS41NSA0MC40OSAxNS4zN2wzMi41NS0xMy4wMmEzMS45OTcgMzEuOTk3IDAgMCAwIDIwLjEyLTI5Ljc0bC0uMDYtNzcuNzF6bS02NCAxOS40Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFIb3JzZUhlYWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9yc2UtaGVhZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhYlwiLCBcIk01MDkuOCAzMzIuNWwtNjkuOS0xNjQuM2MtMTQuOS00MS4yLTUwLjQtNzEtOTMtNzkuMiAxOC0xMC42IDQ2LjMtMzUuOSAzNC4yLTgyLjMtMS4zLTUtNy4xLTcuOS0xMi02LjFMMTY2LjkgNzYuM0MzNS45IDEyMy40IDAgMjM4LjkgMCAzOTguOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjM2LjJjMjMuOCAwIDM5LjMtMjUgMjguNi00Ni4zTDI1NiAzODR2LS43Yy00NS42LTMuNS04NC42LTMwLjctMTA0LjMtNjkuNi0xLjYtMy4xLS45LTYuOSAxLjYtOS4zbDEyLjEtMTIuMWMzLjktMy45IDEwLjYtMi43IDEyLjkgMi40IDE0LjggMzMuNyA0OC4yIDU3LjQgODcuNCA1Ny40IDE3LjIgMCAzMy01LjEgNDYuOC0xMy4ybDQ2IDYzLjljNiA4LjQgMTUuNyAxMy4zIDI2IDEzLjNoNTAuM2M4LjUgMCAxNi42LTMuNCAyMi42LTkuNGw0NS4zLTM5LjhjOC45LTkuMSAxMS43LTIyLjYgNy4xLTM0LjR6TTMyOCAyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYUhvc3BpdGFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvc3BpdGFsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGY4XCIsIFwiTTQ0OCA0OTJ2MjBIMHYtMjBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMFYxMjBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDg4VjI0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djcyaDg4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYzNjBoMjBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnpNMzA4IDE5MmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem0tMTY4IDY0aDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTEwNCAxMjhoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjg0aDY0di04NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem02NC05NmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem0tMTE2IDEyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDB6TTE4MiA5NmgyNnYyNmE2IDYgMCAwIDAgNiA2aDIwYTYgNiAwIDAgMCA2LTZWOTZoMjZhNiA2IDAgMCAwIDYtNlY3MGE2IDYgMCAwIDAtNi02aC0yNlYzOGE2IDYgMCAwIDAtNi02aC0yMGE2IDYgMCAwIDAtNiA2djI2aC0yNmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZ6XCJdXG59O1xudmFyIGZhSG9zcGl0YWxBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9zcGl0YWwtYWx0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDdkXCIsIFwiTTU0NCA5Nkg0MTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzY4YzAgOC44IDcuMiAxNiAxNiAxNmg1NDRjOC44IDAgMTYtNy4yIDE2LTE2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTYwIDQzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYwIDEyOGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYtMTcwYzAgMy4zLTIuNyA2LTYgNmgtMjZ2MjZjMCAzLjMtMi43IDYtNiA2aC0yMGMtMy4zIDAtNi0yLjctNi02di0yNmgtMjZjLTMuMyAwLTYtMi43LTYtNnYtMjBjMC0zLjMgMi43LTYgNi02aDI2Vjg2YzAtMy4zIDIuNy02IDYtNmgyMGMzLjMgMCA2IDIuNyA2IDZ2MjZoMjZjMy4zIDAgNiAyLjcgNiA2djIwem0xNDQgMjk4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC0xMjhjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwiXVxufTtcbnZhciBmYUhvc3BpdGFsU3ltYm9sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvc3BpdGFsLXN5bWJvbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ3ZVwiLCBcIk0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMTEyIDM3NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTg4aC05NnY4OGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMTM2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2ODhoOTZ2LTg4YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjQwelwiXVxufTtcbnZhciBmYUhvc3BpdGFsVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3NwaXRhbC11c2VyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmODBkXCIsIFwiTTQ4MCAzMjBhOTYgOTYgMCAxIDAtOTYtOTYgOTYgOTYgMCAwIDAgOTYgOTZ6bTQ4IDMyYTIyLjg4IDIyLjg4IDAgMCAwLTcuMDYgMS4wOSAxMjQuNzYgMTI0Ljc2IDAgMCAxLTgxLjg5IDBBMjIuODIgMjIuODIgMCAwIDAgNDMyIDM1MmExMTIgMTEyIDAgMCAwLTExMiAxMTIuNjJjLjE0IDI2LjI2IDIxLjczIDQ3LjM4IDQ4IDQ3LjM4aDIyNGMyNi4yNyAwIDQ3Ljg2LTIxLjEyIDQ4LTQ3LjM4QTExMiAxMTIgMCAwIDAgNTI4IDM1MnptLTE5OC4wOSAxMC40NUExNDUuMTkgMTQ1LjE5IDAgMCAxIDM1MiAzNDQuNjJWMTI4YTMyIDMyIDAgMCAwLTMyLTMyaC0zMlYzMmEzMiAzMiAwIDAgMC0zMi0zMkg5NmEzMiAzMiAwIDAgMC0zMiAzMnY2NEgzMmEzMiAzMiAwIDAgMC0zMiAzMnYzNjhhMTYgMTYgMCAwIDAgMTYgMTZoMjg4LjMxQTc4LjYyIDc4LjYyIDAgMCAxIDI4OCA0NjQuNzlhMTQzLjA2IDE0My4wNiAwIDAgMSA0MS45MS0xMDIuMzR6TTE0NCA0MDRhMTIgMTIgMCAwIDEtMTIgMTJIOTJhMTIgMTIgMCAwIDEtMTItMTJ2LTQwYTEyIDEyIDAgMCAxIDEyLTEyaDQwYTEyIDEyIDAgMCAxIDEyIDEyem0wLTEyOGExMiAxMiAwIDAgMS0xMiAxMkg5MmExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6bTQ4LTEyMmE2IDYgMCAwIDEtNiA2aC0yMGE2IDYgMCAwIDEtNi02di0yNmgtMjZhNiA2IDAgMCAxLTYtNnYtMjBhNiA2IDAgMCAxIDYtNmgyNlY3MGE2IDYgMCAwIDEgNi02aDIwYTYgNiAwIDAgMSA2IDZ2MjZoMjZhNiA2IDAgMCAxIDYgNnYyMGE2IDYgMCAwIDEtNiA2aC0yNnptODAgMjUwYTEyIDEyIDAgMCAxLTEyIDEyaC00MGExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6bTAtMTI4YTEyIDEyIDAgMCAxLTEyIDEyaC00MGExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6XCJdXG59O1xudmFyIGZhSG90VHViID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdC10dWInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1OTNcIiwgXCJNNDE0LjIxIDE3Ny42NWMxLjAyIDguMjEgNy43NSAxNC4zNSAxNS43NSAxNC4zNWgxNi4xMmM5LjUxIDAgMTcuMDgtOC41NyAxNi0xOC4zNS00LjM0LTM5LjExLTIyLjQtNzQuNTMtNTAuMTMtOTcuMTYtMTcuMzctMTQuMTctMjguODItMzYuNzUtMzEuOTgtNjIuMTVDMzc4Ljk2IDYuMTQgMzcyLjIyIDAgMzY0LjIzIDBoLTE2LjEyYy05LjUxIDAtMTcuMDkgOC41Ny0xNiAxOC4zNSA0LjM0IDM5LjExIDIyLjQgNzQuNTMgNTAuMTMgOTcuMTYgMTcuMzYgMTQuMTcgMjguODIgMzYuNzUgMzEuOTcgNjIuMTR6bS0xMDggMGMxLjAyIDguMjEgNy43NSAxNC4zNSAxNS43NSAxNC4zNWgxNi4xMmM5LjUxIDAgMTcuMDgtOC41NyAxNi0xOC4zNS00LjM0LTM5LjExLTIyLjQtNzQuNTMtNTAuMTMtOTcuMTYtMTcuMzctMTQuMTctMjguODItMzYuNzUtMzEuOTgtNjIuMTVDMjcwLjk2IDYuMTQgMjY0LjIyIDAgMjU2LjIzIDBoLTE2LjEyYy05LjUxIDAtMTcuMDkgOC41Ny0xNiAxOC4zNSA0LjM0IDM5LjExIDIyLjQgNzQuNTMgNTAuMTMgOTcuMTYgMTcuMzYgMTQuMTcgMjguODIgMzYuNzUgMzEuOTcgNjIuMTR6TTQ4MCAyNTZIMjU2bC0xMTAuOTMtODMuMmE2My45OSA2My45OSAwIDAgMC0zOC40LTEyLjhINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MjI0YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzg0YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWMjg4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTEyOCA0NDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyem05NiAwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnptOTYgMGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04VjMyOGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxMTJ6bTk2IDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyek02NCAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFM5OS4zNSAwIDY0IDAgMCAyOC42NSAwIDY0czI4LjY1IDY0IDY0IDY0elwiXVxufTtcbnZhciBmYUhvdGRvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3Rkb2cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4MGZcIiwgXCJNNDg4LjU2IDIzLjQ0YTgwIDgwIDAgMCAwLTExMy4xMiAwbC0zNTIgMzUyYTgwIDgwIDAgMSAwIDExMy4xMiAxMTMuMTJsMzUyLTM1MmE4MCA4MCAwIDAgMCAwLTExMy4xMnptLTQ5LjkzIDk1LjE5Yy0xOS42IDE5LjU5LTM3LjUyIDIyLjY3LTUxLjkzIDI1LjE0QzM3My43NiAxNDYgMzY0LjQgMTQ3LjYgMzUyIDE2MHMtMTQgMjEuNzYtMTYuMjMgMzQuNzFjLTIuNDggMTQuNC01LjU1IDMyLjMzLTI1LjE1IDUxLjkycy0zNy41MiAyMi42Ny01MS45MiAyNS4xNUMyNDUuNzUgMjc0IDIzNi40IDI3NS42IDIyNCAyODhzLTE0IDIxLjc1LTE2LjIzIDM0LjdjLTIuNDcgMTQuNC01LjU0IDMyLjMzLTI1LjE0IDUxLjkycy0zNy41MyAyMi42OC01MS45MyAyNS4xNUMxMTcuNzYgNDAyIDEwOC40IDQwMy42IDk2IDQxNmExNiAxNiAwIDAgMS0yMi42My0yMi42M2MxOS42LTE5LjU5IDM3LjUyLTIyLjY3IDUxLjkyLTI1LjE0IDEzLTIuMjIgMjIuMy0zLjgyIDM0LjcxLTE2LjIzczE0LTIxLjc1IDE2LjIyLTM0LjdjMi40OC0xNC40IDUuNTUtMzIuMzMgMjUuMTUtNTEuOTJzMzcuNTItMjIuNjcgNTEuOTItMjUuMTRjMTMtMi4yMiAyMi4zLTMuODMgMzQuNy0xNi4yM3MxNC0yMS43NiAxNi4yNC0zNC43MWMyLjQ3LTE0LjQgNS41NC0zMi4zMyAyNS4xNC01MS45MnMzNy41Mi0yMi42OCA1MS45Mi0yNS4xNUMzOTQuMjQgMTEwIDQwMy41OSAxMDguNDEgNDE2IDk2YTE2IDE2IDAgMCAxIDIyLjYzIDIyLjYzek0zMS40NCAzMjIuMThMMzIyLjE4IDMxLjQ0bC0xMS41NC0xMS41NWMtMjUtMjUtNjMuODUtMjYuNjYtODYuNzktMy43MkwxNi4xNyAyMjMuODVjLTIyLjk0IDIyLjk0LTIxLjI3IDYxLjc5IDMuNzIgODYuNzh6bTQ0OS4xMi0xMzIuMzZMMTg5LjgyIDQ4MC41NmwxMS41NCAxMS41NWMyNSAyNSA2My44NSAyNi42NiA4Ni43OSAzLjcybDIwNy42OC0yMDcuNjhjMjIuOTQtMjIuOTQgMjEuMjctNjEuNzktMy43Mi04Ni43OXpcIl1cbn07XG52YXIgZmFIb3RlbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3RlbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjU5NFwiLCBcIk01NjAgNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE1Ljk4djM4NEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjQwdi04MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djgwaDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2VjY0aDE2em0tMzA0IDQ0LjhjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6bTAgOTZjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6bS0xMjgtOTZjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6TTE3OS4yIDI1NmgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOHpNMTkyIDM4NGMwLTUzLjAyIDQyLjk4LTk2IDk2LTk2czk2IDQyLjk4IDk2IDk2SDE5MnptMjU2LTE0MC44YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTk2YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40elwiXVxufTtcbnZhciBmYUhvdXJnbGFzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VyZ2xhc3MnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyNTRcIiwgXCJNMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjR6XCJdXG59O1xudmFyIGZhSG91cmdsYXNzRW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXJnbGFzcy1lbmQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyNTNcIiwgXCJNMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjR6TTE5MiAyMDhjLTU3Ljc4NyAwLTEwNC02Ni41MTgtMTA0LTE0NGgyMDhjMCA3Ny45NDUtNDYuNTEgMTQ0LTEwNCAxNDR6XCJdXG59O1xudmFyIGZhSG91cmdsYXNzSGFsZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VyZ2xhc3MtaGFsZicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjI1MlwiLCBcIk0zNjAgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0em0tNzUuMDc4IDM4NEg5OS4wOGMxNy4wNTktNDYuNzk3IDUyLjA5Ni04MCA5Mi45Mi04MCA0MC44MjEgMCA3NS44NjIgMzMuMTk2IDkyLjkyMiA4MHptLjAxOS0yNTZIOTkuMDc4QzkxLjk4OCAxMDguNTQ4IDg4IDg2Ljc0OCA4OCA2NGgyMDhjMCAyMi44MDUtMy45ODcgNDQuNTg3LTExLjA1OSA2NHpcIl1cbn07XG52YXIgZmFIb3VyZ2xhc3NTdGFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VyZ2xhc3Mtc3RhcnQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyNTFcIiwgXCJNMzYwIDBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptLTY0IDQ0OEg4OGMwLTc3LjQ1OCA0Ni4yMDQtMTQ0IDEwNC0xNDQgNTcuNzg2IDAgMTA0IDY2LjUxNyAxMDQgMTQ0elwiXVxufTtcbnZhciBmYUhvdXNlRGFtYWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWRhbWFnZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjZmMVwiLCBcIk0yODggMTE0Ljk2TDY5LjQ3IDMwNy43MWMtMS42MiAxLjQ2LTMuNjkgMi4xNC01LjQ3IDMuMzVWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE0OS4yM0wxOTIgNDM5LjE5bDEwNC4xMS02NC02MC4xNi0xMTkuMjJMMzg0IDM5Mi43NWwtMTA0LjExIDY0TDMxOS44MSA1MTJINDk2YzguODQgMCAxNi03LjE2IDE2LTE2VjMxMS4xYy0xLjctMS4xNi0zLjcyLTEuODItNS4yNi0zLjJMMjg4IDExNC45NnptMjgyLjY5IDEyMS4zMkw1MTIgMTg0LjQ1VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NTEuNjlMMzE0Ljc1IDEwLjMxQzMwNy4xMiAzLjQ1IDI5Ny41Ni4wMSAyODggMHMtMTkuMSAzLjQxLTI2LjcgMTAuMjdMNS4zMSAyMzYuMjhjLTYuNTcgNS45MS03LjEyIDE2LjAyLTEuMjEgMjIuNmwyMS40IDIzLjgyYzUuOSA2LjU3IDE2LjAyIDcuMTIgMjIuNiAxLjIxTDI3Ny40MiA4MS42M2M2LjA1LTUuMzMgMTUuMTItNS4zMyAyMS4xNyAwTDUyNy45MSAyODMuOWM2LjU3IDUuOSAxNi42OSA1LjM2IDIyLjYtMS4yMWwyMS40LTIzLjgyYzUuOS02LjU3IDUuMzYtMTYuNjktMS4yMi0yMi41OXpcIl1cbn07XG52YXIgZmFIb3VzZVVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtdXNlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA2NVwiLCBcIk01NzAuNjksMjM2LjI3LDUxMiwxODQuNDRWNDhhMTYsMTYsMCwwLDAtMTYtMTZINDMyYTE2LDE2LDAsMCwwLTE2LDE2Vjk5LjY3TDMxNC43OCwxMC4zQzMwOC41LDQuNjEsMjk2LjUzLDAsMjg4LDBzLTIwLjQ2LDQuNjEtMjYuNzQsMTAuM2wtMjU2LDIyNkExOC4yNywxOC4yNywwLDAsMCwwLDI0OC4yYTE4LjY0LDE4LjY0LDAsMCwwLDQuMDksMTAuNzFMMjUuNSwyODIuN2EyMS4xNCwyMS4xNCwwLDAsMCwxMiw1LjMsMjEuNjcsMjEuNjcsMCwwLDAsMTAuNjktNC4xMWwxNS45LTE0VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkg0ODBhMzIsMzIsMCwwLDAsMzItMzJWMjY5Ljg4bDE1LjkxLDE0QTIxLjk0LDIxLjk0LDAsMCwwLDUzOC42MywyODhhMjAuODksMjAuODksMCwwLDAsMTEuODctNS4zMWwyMS40MS0yMy44MUEyMS42NCwyMS42NCwwLDAsMCw1NzYsMjQ4LjE5LDIxLDIxLDAsMCwwLDU3MC42OSwyMzYuMjdaTTI4OCwxNzZhNjQsNjQsMCwxLDEtNjQsNjRBNjQsNjQsMCwwLDEsMjg4LDE3NlpNNDAwLDQ0OEgxNzZhMTYsMTYsMCwwLDEtMTYtMTYsOTYsOTYsMCwwLDEsOTYtOTZoNjRhOTYsOTYsMCwwLDEsOTYsOTZBMTYsMTYsMCwwLDEsNDAwLDQ0OFpcIl1cbn07XG52YXIgZmFIcnl2bmlhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hyeXZuaWEnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY2ZjJcIiwgXCJNMzY4IDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTQxLjg2YzEzLjQxLTI4LjYzIDEzLjc0LTYzLjMzLTQuMTMtOTQuMDVDMzAzLjM0IDQ5Ljg0IDI2Ny4xIDMyIDIyOS45NiAzMmgtNzguODJjLTI0LjMyIDAtNDcuODYgOC41My02Ni41NCAyNC4wOUw3Mi44MyA2NS45Yy0xMC4xOCA4LjQ5LTExLjU2IDIzLjYyLTMuMDcgMzMuOGwyMC40OSAyNC41OWM4LjQ5IDEwLjE5IDIzLjYyIDExLjU2IDMzLjgxIDMuMDdsMTEuNzMtOS43OGM0LjMyLTMuNiA5Ljc3LTUuNTcgMTUuMzktNS41N2g4My42MmMxMS42OSAwIDIxLjIgOS41MiAyMS4yIDIxLjIgMCA1LjkxLTIuNDggMTEuNTgtNi44MSAxNS41OEwyMTkuNyAxNzZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEzNC4zN2wtMzQuNjcgMzJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxLjg2Yy0xMy40MSAyOC42My0xMy43NCA2My4zMyA0LjEzIDk0LjA1QzgwLjY2IDQ2Mi4xNSAxMTYuOSA0ODAgMTU0LjA0IDQ4MGg3OC44MmMyNC4zMiAwIDQ3Ljg2LTguNTMgNjYuNTQtMjQuMDlsMTEuNzctOS44MWMxMC4xOC04LjQ5IDExLjU2LTIzLjYyIDMuMDctMzMuOGwtMjAuNDktMjQuNTljLTguNDktMTAuMTktMjMuNjItMTEuNTYtMzMuODEtMy4wN2wtMTEuNzUgOS44YTIzLjk5MiAyMy45OTIgMCAwIDEtMTUuMzYgNS41NkgxNDkuMmMtMTEuNjkgMC0yMS4yLTkuNTItMjEuMi0yMS4yIDAtNS45MSAyLjQ4LTExLjU4IDYuODEtMTUuNThMMTY0LjMgMzM2SDM2OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjMzLjYzbDM0LjY3LTMySDM2OHpcIl1cbn07XG52YXIgZmFJQ3Vyc29yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ktY3Vyc29yJyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMjQ2XCIsIFwiTTI1NiA1Mi4wNDhWMTIuMDY1QzI1NiA1LjQ5NiAyNTAuNzI2LjE0OCAyNDQuMTU4LjA2NiAyMTEuNjIxLS4zNDQgMTY2LjQ2OS4wMTEgMTI4IDM3Ljk1OSA5MC4yNjYuNzM2IDQ2Ljk3OS0uMTE0IDExLjkxMy4xMTQgNS4zMTguMTU3IDAgNS41MTkgMCAxMi4xMTR2MzkuNjQ1YzAgNi42ODcgNS40NTggMTIuMDc4IDEyLjE0NSAxMS45OThDMzguMTExIDYzLjQ0NyA5NiA2Ny4yNDMgOTYgMTEyLjE4MlYyMjRINjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzNnYxMTJjMCA0NC45MzItNTYuMDc1IDQ4LjAzMS04My45NSA0Ny45NTlDNS40MDQgNDQ3Ljk0MiAwIDQ1My4zMDYgMCA0NTkuOTUydjM5Ljk4M2MwIDYuNTY5IDUuMjc0IDExLjkxNyAxMS44NDIgMTEuOTk5IDMyLjUzNy40MDkgNzcuNjg5LjA1NCAxMTYuMTU4LTM3Ljg5NCAzNy43MzQgMzcuMjIzIDgxLjAyMSAzOC4wNzMgMTE2LjA4NyAzNy44NDUgNi41OTUtLjA0MyAxMS45MTMtNS40MDUgMTEuOTEzLTEyVjQ2MC4yNGMwLTYuNjg3LTUuNDU4LTEyLjA3OC0xMi4xNDUtMTEuOTk4QzIxNy44ODkgNDQ4LjU1MyAxNjAgNDQ0LjkzOSAxNjAgNDAwVjI4OGgzNmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0zNlYxMTIuMTgyYzAtNDQuOTMyIDU2LjA3NS00OC4yMTMgODMuOTUtNDguMTQyIDYuNjQ2LjAxOCAxMi4wNS01LjM0NiAxMi4wNS0xMS45OTJ6XCJdXG59O1xudmFyIGZhSWNlQ3JlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNlLWNyZWFtJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmODEwXCIsIFwiTTM2OCAxNjBoLS45NGExNDQgMTQ0IDAgMSAwLTI4Ni4xMiAwSDgwYTQ4IDQ4IDAgMCAwIDAgOTZoMjg4YTQ4IDQ4IDAgMCAwIDAtOTZ6TTE5NS4zOCA0OTMuNjlhMzEuNTIgMzEuNTIgMCAwIDAgNTcuMjQgMEwzNTIgMjg4SDk2elwiXVxufTtcbnZhciBmYUljaWNsZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNpY2xlcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhZFwiLCBcIk01MTEuNCAzNy45QzUxNS4xIDE4LjIgNTAwIDAgNDgwIDBIMzJDMTAuNiAwLTQuOCAyMC43IDEuNCA0MS4ybDg3LjEgMjczLjRjMi41IDcuMiAxMi43IDcuMiAxNS4xIDBMMTQwIDE5MC41bDQ0LjIgMTg3LjNjMS45IDguMyAxMy43IDguMyAxNS42IDBsNDYuNS0xOTYuOSAzNC4xIDEzMy40YzIuMyA3LjYgMTMgNy42IDE1LjMgMGw0NS44LTE3Mi41IDY2LjcgMzYzLjhjMS43IDguNiAxNCA4LjYgMTUuNyAwbDg3LjUtNDY3Ljd6XCJdXG59O1xudmFyIGZhSWNvbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNvbnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4NmRcIiwgXCJNMTE2LjY1IDIxOS4zNWExNS42OCAxNS42OCAwIDAgMCAyMi42NSAwbDk2Ljc1LTk5LjgzYzI4LjE1LTI5IDI2LjUtNzcuMS00LjkxLTEwMy44OEMyMDMuNzUtNy43IDE2My0zLjUgMTM3Ljg2IDIyLjQ0TDEyOCAzMi41OGwtOS44NS0xMC4xNEM5My4wNS0zLjUgNTIuMjUtNy43IDI0Ljg2IDE1LjY0Yy0zMS40MSAyNi43OC0zMyA3NC44NS01IDEwMy44OHptMTQzLjkyIDEwMC40OWgtNDhsLTcuMDgtMTQuMjRhMjcuMzkgMjcuMzkgMCAwIDAtMjUuNjYtMTcuNzhoLTcxLjcxYTI3LjM5IDI3LjM5IDAgMCAwLTI1LjY2IDE3Ljc4bC03IDE0LjI0aC00OEEyNy40NSAyNy40NSAwIDAgMCAwIDM0Ny4zdjEzNy4yNUEyNy40NCAyNy40NCAwIDAgMCAyNy40MyA1MTJoMjMzLjE0QTI3LjQ1IDI3LjQ1IDAgMCAwIDI4OCA0ODQuNTVWMzQ3LjNhMjcuNDUgMjcuNDUgMCAwIDAtMjcuNDMtMjcuNDZ6TTE0NCA0NjhhNTIgNTIgMCAxIDEgNTItNTIgNTIgNTIgMCAwIDEtNTIgNTJ6bTM1NS40LTExNS45aC02MC41OGwyMi4zNi01MC43NWMyLjEtNi42NS0zLjkzLTEzLjIxLTEyLjE4LTEzLjIxaC03NS41OWMtNi4zIDAtMTEuNjYgMy45LTEyLjUgOS4xbC0xNi44IDEwNi45M2MtMSA2LjMgNC44OCAxMS44OSAxMi41IDExLjg5aDYyLjMxbC0yNC4yIDgzYy0xLjg5IDYuNjUgNC4yIDEyLjkgMTIuMjMgMTIuOWExMy4yNiAxMy4yNiAwIDAgMCAxMC45Mi01LjI1bDkyLjQtMTM4LjkxYzQuODgtNi45MS0xLjE2LTE1LjctMTAuODctMTUuN3pNNDc4LjA4LjMzTDMyOS41MSAyMy4xN0MzMTQuODcgMjUuNDIgMzA0IDM4LjkyIDMwNCA1NC44M1YxNjEuNmE4My4yNSA4My4yNSAwIDAgMC0xNi0xLjdjLTM1LjM1IDAtNjQgMjEuNDgtNjQgNDhzMjguNjUgNDggNjQgNDhjMzUuMiAwIDYzLjczLTIxLjMyIDY0LTQ3LjY2Vjk5LjY2bDExMi0xNy4yMnY0Ny4xOGE4My4yNSA4My4yNSAwIDAgMC0xNi0xLjdjLTM1LjM1IDAtNjQgMjEuNDgtNjQgNDhzMjguNjUgNDggNjQgNDhjMzUuMiAwIDYzLjczLTIxLjMyIDY0LTQ3LjY2VjMyYzAtMTkuNDgtMTYtMzQuNDItMzMuOTItMzEuNjd6XCJdXG59O1xudmFyIGZhSWRCYWRnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpZC1iYWRnZScsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjJjMVwiLCBcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTQ0IDMyaDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2aC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptNDggMTI4YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMDIuNEM5MCA0MTYgODAgNDA3LjQgODAgMzk2Ljh2LTE5LjJjMC0zMS44IDMwLjEtNTcuNiA2Ny4yLTU3LjZoNWMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg1YzM3LjEgMCA2Ny4yIDI1LjggNjcuMiA1Ny42djE5LjJ6XCJdXG59O1xudmFyIGZhSWRDYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2lkLWNhcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyYzJcIiwgXCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MTZoNTc2VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTI4SDB2MzA0em0zNTItMjMyYzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZ6bTAgNjRjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNnptMCA2NGMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2ek0xNzYgMTkyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHpNNjcuMSAzOTYuMkM3NS41IDM3MC41IDk5LjYgMzUyIDEyOCAzNTJoOC4yYzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDguMmMyOC40IDAgNTIuNSAxOC41IDYwLjkgNDQuMiAzLjIgOS45LTUuMiAxOS44LTE1LjYgMTkuOEg4Mi43Yy0xMC40IDAtMTguOC0xMC0xNS42LTE5Ljh6XCJdXG59O1xudmFyIGZhSWRDYXJkQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2lkLWNhcmQtYWx0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDdmXCIsIFwiTTUyOCA2NEgzODR2OTZIMTkyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yODggMjI0YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptOTMuMyAyMjRIMTk0LjdjLTEwLjQgMC0xOC44LTEwLTE1LjYtMTkuOCA4LjMtMjUuNiAzMi40LTQ0LjIgNjAuOS00NC4yaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOC01LjIgMTkuOC0xNS42IDE5Ljh6TTM1MiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMmgtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDEyOFYzMnpcIl1cbn07XG52YXIgZmFJZ2xvbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpZ2xvbycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjdhZVwiLCBcIk0zMjAgMzMuOWMtMTAuNS0xLjItMjEuMi0xLjktMzItMS45LTk5LjggMC0xODcuOCA1MC44LTIzOS40IDEyOEgzMjBWMzMuOXpNOTYgMTkySDMwLjNDMTEuMSAyMzAuNiAwIDI3NCAwIDMyMGg5NlYxOTJ6TTM1MiAzOS40VjE2MGgxNzUuNEM0ODcuMiA5OS45IDQyNC44IDU1LjkgMzUyIDM5LjR6TTQ4MCAzMjBoOTZjMC00Ni0xMS4xLTg5LjQtMzAuMy0xMjhINDgwdjEyOHptLTY0IDY0djk2aDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZINDExLjVjMi42IDEwLjMgNC41IDIwLjkgNC41IDMyem0zMi0xOTJIMTI4djEyOGg0OS44YzIyLjItMzguMSA2My02NCAxMTAuMi02NHM4OCAyNS45IDExMC4yIDY0SDQ0OFYxOTJ6TTAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDEyOHYtOTZjMC0xMS4xIDEuOS0yMS43IDQuNS0zMkgwdjk2em0yODgtMTYwYy01MyAwLTk2IDQzLTk2IDk2djk2aDE5MnYtOTZjMC01My00My05Ni05Ni05NnpcIl1cbn07XG52YXIgZmFJbWFnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbWFnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAzZVwiLCBcIk00NjQgNDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0xMTIgMTIwYy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZ6TTY0IDM4NGgzODRWMjcybC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMjA4IDMyMGwtNTUuNTE1LTU1LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDY0IDMzNnY0OHpcIl1cbn07XG52YXIgZmFJbWFnZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW1hZ2VzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMzAyXCIsIFwiTTQ4MCA0MTZ2MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnYyMDhjMCA0NC4xMTIgMzUuODg4IDgwIDgwIDgwaDMzNnptOTYtODBWODBjMC0yNi41MS0yMS40OS00OC00OC00OEgxNDRjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjU2YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzg0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh6TTI1NiAxMjhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDggMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDh6bS05NiAxNDRsNTUuNTE1LTU1LjUxNWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMjcyIDI1NmwxMzUuNTE1LTEzNS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDUxMiAyMDh2MTEySDE2MHYtNDh6XCJdXG59O1xudmFyIGZhSW5ib3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW5ib3gnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwMWNcIiwgXCJNNTY3LjkzOCAyNDMuOTA4TDQ2Mi4yNSA4NS4zNzRBNDguMDAzIDQ4LjAwMyAwIDAgMCA0MjIuMzExIDY0SDE1My42ODlhNDggNDggMCAwIDAtMzkuOTM4IDIxLjM3NEw4LjA2MiAyNDMuOTA4QTQ3Ljk5NCA0Ny45OTQgMCAwIDAgMCAyNzAuNTMzVjQwMGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQ4MGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI3MC41MzNhNDcuOTk0IDQ3Ljk5NCAwIDAgMC04LjA2Mi0yNi42MjV6TTE2Mi4yNTIgMTI4aDI1MS40OTdsODUuMzMzIDEyOEgzNzZsLTMyIDY0SDIzMmwtMzItNjRINzYuOTE4bDg1LjMzNC0xMjh6XCJdXG59O1xudmFyIGZhSW5kZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2luZGVudCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzY1wiLCBcIk0yNy4zMSAzNjMuM2w5Ni05NmExNiAxNiAwIDAgMCAwLTIyLjYybC05Ni05NkMxNy4yNyAxMzguNjYgMCAxNDUuNzggMCAxNjB2MTkyYzAgMTQuMzEgMTcuMzMgMjEuMyAyNy4zMSAxMS4zek00MzIgNDE2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTMuMTctMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAzNTJoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6bTAtMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMTcyLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAyMjRoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAyMTEuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAxNjB6TTQzMiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFJbmR1c3RyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmR1c3RyeScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI3NVwiLCBcIk00NzUuMTE1IDE2My43ODFMMzM2IDI1Mi4zMDl2LTY4LjI4YzAtMTguOTE2LTIwLjkzMS0zMC4zOTktMzYuODg1LTIwLjI0OEwxNjAgMjUyLjMwOVY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg0NjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NC4wMjljMC0xOC45MTctMjAuOTMxLTMwLjM5OS0zNi44ODUtMjAuMjQ4elwiXVxufTtcbnZhciBmYUluZmluaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2luZmluaXR5JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTM0XCIsIFwiTTQ3MS4xIDk2QzQwNSA5NiAzNTMuMyAxMzcuMyAzMjAgMTc0LjYgMjg2LjcgMTM3LjMgMjM1IDk2IDE2OC45IDk2IDc1LjggOTYgMCAxNjcuOCAwIDI1NnM3NS44IDE2MCAxNjguOSAxNjBjNjYuMSAwIDExNy44LTQxLjMgMTUxLjEtNzguNiAzMy4zIDM3LjMgODUgNzguNiAxNTEuMSA3OC42IDkzLjEgMCAxNjguOS03MS44IDE2OC45LTE2MFM1NjQuMiA5NiA0NzEuMSA5NnpNMTY4LjkgMzIwYy00MC4yIDAtNzIuOS0yOC43LTcyLjktNjRzMzIuNy02NCA3Mi45LTY0YzM4LjIgMCA3My40IDM2LjEgOTQgNjQtMjAuNCAyNy42LTU1LjkgNjQtOTQgNjR6bTMwMi4yIDBjLTM4LjIgMC03My40LTM2LjEtOTQtNjQgMjAuNC0yNy42IDU1LjktNjQgOTQtNjQgNDAuMiAwIDcyLjkgMjguNyA3Mi45IDY0cy0zMi43IDY0LTcyLjkgNjR6XCJdXG59O1xudmFyIGZhSW5mbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmZvJyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmMTI5XCIsIFwiTTIwIDQyNC4yMjloMjBWMjc5Ljc3MUgyMGMtMTEuMDQ2IDAtMjAtOC45NTQtMjAtMjBWMjEyYzAtMTEuMDQ2IDguOTU0LTIwIDIwLTIwaDExMmMxMS4wNDYgMCAyMCA4Ljk1NCAyMCAyMHYyMTIuMjI5aDIwYzExLjA0NiAwIDIwIDguOTU0IDIwIDIwVjQ5MmMwIDExLjA0Ni04Ljk1NCAyMC0yMCAyMEgyMGMtMTEuMDQ2IDAtMjAtOC45NTQtMjAtMjB2LTQ3Ljc3MWMwLTExLjA0NiA4Ljk1NC0yMCAyMC0yMHpNOTYgMEM1Ni4yMzUgMCAyNCAzMi4yMzUgMjQgNzJzMzIuMjM1IDcyIDcyIDcyIDcyLTMyLjIzNSA3Mi03MlMxMzUuNzY0IDAgOTYgMHpcIl1cbn07XG52YXIgZmFJbmZvQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2luZm8tY2lyY2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDVhXCIsIFwiTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6XCJdXG59O1xudmFyIGZhSXRhbGljID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2l0YWxpYycsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjAzM1wiLCBcIk0zMjAgNDh2MzJhMTYgMTYgMCAwIDEtMTYgMTZoLTYyLjc2bC04MCAzMjBIMjA4YTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDE2YTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmg2Mi43Nmw4MC0zMjBIMTEyYTE2IDE2IDAgMCAxLTE2LTE2VjQ4YTE2IDE2IDAgMCAxIDE2LTE2aDE5MmExNiAxNiAwIDAgMSAxNiAxNnpcIl1cbn07XG52YXIgZmFKZWRpID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2plZGknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY2NjlcIiwgXCJNNTM1Ljk1MzA4LDM1MmMtNDIuNjQwNjksOTQuMTcxODgtMTM3LjY0MDg2LDE2MC0yNDcuOTg0OCwxNjBxLTYuMzk4NDQsMC0xMi44NDM3Ny0uMjk2ODhDMTcxLjE1NTU4LDUwNi45Mzc1LDgxLjI2NDgxLDQ0Mi4yMzQzOCw0MC4wMTQ3NCwzNTJINzkuOTM2NjhMMjEuMzI3MiwyOTMuNDA2MjVhMjY0LjgyNTIyLDI2NC44MjUyMiwwLDAsMS01LjEwOTM4LTM5LjQyMTg3LDI3My42NjUzLDI3My42NjUzLDAsMCwxLC41LTI5Ljk4NDM4SDYzLjkzNjY1TDIyLjU0NiwxODIuNjI1QTI2OS43OTc4MiwyNjkuNzk3ODIsMCwwLDEsMTMwLjUxNDg5LDIwLjU0Njg4YTE2LjA2MzkzLDE2LjA2MzkzLDAsMCwxLDkuMjgxMjctMywxNi4zNjMzMiwxNi4zNjMzMiwwLDAsMSwxMy41LDcuMjUsMTYuMDI3MzksMTYuMDI3MzksMCwwLDEsMS42MjUsMTUuMDkzNzQsMTM4LjM4NywxMzguMzg3LDAsMCwwLTkuODQzNzYsNTEuMjY1NjNjMCw0NS4xMDkzNywyMS4wNDY5MSw4Ni41NzgxMyw1Ny43MTg4NCwxMTMuNzM0MzdhMTYuMjk5ODksMTYuMjk5ODksMCwwLDEsMS4yMDMxMywyNS4zOTA2M2MtMjYuNTQ2OTIsMjMuOTg0MzctNDEuMTcxOTQsNTYuNS00MS4xNzE5NCw5MS41NzgxMywwLDYwLjAzMTI0LDQyLjk1MzE5LDExMC4yODEyNCw5OS44OTA3OSwxMjEuOTIxODdsMi41LTY1LjI2NTYzTDIzOC4wNjIsMzk3YTguMzM5MTEsOC4zMzkxMSwwLDAsMS0xMC0uNzUsOC4wMjUsOC4wMjUsMCwwLDEtMS4zOTA2My05LjkzNzVsMjAuMTI1LTMzLjc2NTYyLTQyLjA2MjU3LTguNzM0MzhhNy45ODk4LDcuOTg5OCwwLDAsMSwwLTE1LjY1NjI1bDQyLjA2MjU3LTguNzE4NzUtMjAuMTA5NDEtMzMuNzM0MzhhNy45OTEyMiw3Ljk5MTIyLDAsMCwxLDExLjM1OTM5LTEwLjcxODc0TDI2OC40MzcsMjk1LjY0MDYyLDI3OS45NTI2NSw3LjY3MTg4YTcuOTcxMzgsNy45NzEzOCwwLDAsMSw4LTcuNjcxODhoLjA0Njg3YTguMDIwNjQsOC4wMjA2NCwwLDAsMSw3Ljk1MzE0LDcuNzAzMTJMMzA3LjQ4Mzk0LDI5NS42MjVsMzAuMzkwNjgtMjAuNjcxODhhOC4wODMyNyw4LjA4MzI3LDAsMCwxLDEwLC44MTI1LDcuOTk4NjYsNy45OTg2NiwwLDAsMSwxLjM5MDYyLDkuOTA2MjZMMzI5LjEyNDYxLDMxOS40Mzc1bDQyLjA3ODE5LDguNzM0MzhhNy45OTM3Myw3Ljk5MzczLDAsMCwxLDAsMTUuNjU2MjRsLTQyLjA3ODE5LDguNzE4NzYsMjAuMTA5NCwzMy43MzQzN2E3Ljk3NzkxLDcuOTc3OTEsMCwwLDEtMS4zMjgxMiw5LjkyMTg3QTguMjU3MzksOC4yNTczOSwwLDAsMSwzMzcuODc0NjIsMzk3TDMxMC43MDI3LDM3OC41MzEyNWwyLjUsNjUuMzQzNzVjNDguNDg0NDYtOS40MDYyNSw4Ny41NzgyOC00OC4xNTYyNSw5Ny4zMTI2Ny05Ni41QTEyMy41MjY1MiwxMjMuNTI2NTIsMCwwLDAsMzcxLjk1MjgsMjMwLjI5Njg4YTE2LjMwNjM0LDE2LjMwNjM0LDAsMCwxLDEuMjAzMTMtMjUuNDIxODhjMzYuNjU2MzEtMjcuMTcxODgsNTcuNjg3Ni02OC42MDkzOCw1Ny42ODc2LTExMy43MzQzOGExMzguMDE2ODksMTM4LjAxNjg5LDAsMCwwLTkuODU5MzktNTEuMzEyNSwxNS45ODEzMiwxNS45ODEzMiwwLDAsMSwxLjYwOTM3LTE1LjA5Mzc0LDE2LjM2OTE0LDE2LjM2OTE0LDAsMCwxLDEzLjUtNy4yMzQzOCwxNi4wMjQ1MywxNi4wMjQ1MywwLDAsMSw5LjI1LDIuOTg0MzhBMjcxLjI2OTQ3LDI3MS4yNjk0NywwLDAsMSw1NTMuMjUsMTgyLjc2NTYyTDUxMS45OTk5MiwyMjRoNDYuOTUzMkM1NTkuMzEyNSwyMjkuNzY1NjIsNTYwLDIzNS40NTMxMiw1NjAsMjQxLjI2NTYyYTI3MC4wOTIsMjcwLjA5MiwwLDAsMS01LjEyNSw1MS44NTkzOEw0OTUuOTg0MjcsMzUyWlwiXVxufTtcbnZhciBmYUpvaW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2pvaW50JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTk1XCIsIFwiTTQ0NC4zNCAxODEuMWMyMi4zOCAxNS42OCAzNS42NiA0MS4xNiAzNS42NiA2OC41OVYyODBjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTMwLjMxYzAtNDMuMjQtMjEuMDEtODMuNDEtNTYuMzQtMTA4LjA2QzQ2My44NSAxMjUuMDIgNDQ4IDk5LjM0IDQ0OCA3MC4zMVY4YzAtNC40Mi0zLjU4LTgtOC04aC00OGMtNC40MiAwLTggMy41OC04IDh2NjYuNGMwIDQzLjY5IDI0LjU2IDgxLjYzIDYwLjM0IDEwNi43ek0xOTQuOTcgMzU4Ljk4QzEyNi4wMyAzNzAuMDcgNTkuNjkgMzk0LjY5IDAgNDMyYzgzLjY1IDUyLjI4IDE4MC4zIDgwIDI3OC45NCA4MGg4OC41N0wyNTQuNzkgMzgwLjQ5Yy0xNC43NC0xNy4yLTM3LjQ1LTI1LjExLTU5LjgyLTIxLjUxek01NTMuMjggODcuMDljLTUuNjctMy44LTkuMjgtOS45Ni05LjI4LTE2Ljc4VjhjMC00LjQyLTMuNTgtOC04LThoLTQ4Yy00LjQyIDAtOCAzLjU4LTggOHY2Mi4zMWMwIDIyLjAyIDEwLjE3IDQzLjQxIDI4LjY0IDU1LjM5QzU1MC43OSAxNTMuMDQgNTc2IDE5OS41NCA1NzYgMjQ5LjY5VjI4MGMwIDQuNDIgMy41OCA4IDggOGg0OGM0LjQyIDAgOC0zLjU4IDgtOHYtMzAuMzFjMC02NS40NC0zMi40MS0xMjYuMTktODYuNzItMTYyLjZ6TTM2MC44OSAzNTIuMDVjLTM0LjQuMDYtODYuODEuMTUtODguMjEuMTdsMTE3LjggMTM3LjQzQTYzLjk4NyA2My45ODcgMCAwIDAgNDM5LjA3IDUxMmg4OC40NUw0MDkuNTcgMzc0LjRhNjMuOTU1IDYzLjk1NSAwIDAgMC00OC42OC0yMi4zNXpNNjE2IDM1Mkg0MzJsMTE3Ljk5IDEzNy42NUE2My45ODcgNjMuOTg3IDAgMCAwIDU5OC41OCA1MTJINjE2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRWMzc2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhSm91cm5hbFdoaWxscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdqb3VybmFsLXdoaWxscycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjY2YVwiLCBcIk00MzguNDA2MjUsMzc3LjU5Mzc1Yy0zLjIwMzEzLDEyLjgxMjUtMy4yMDMxMyw1Ny42MDkzNywwLDczLjYwOTM3UTQ0Ny45OTIyLDQ2MC43ODkwNyw0NDgsNDcwLjQwNjI1djE2YzAsMTYtMTIuNzk2ODgsMjUuNTkzNzUtMjUuNTkzNzUsMjUuNTkzNzVIOTZjLTU0LjQwNjI1LDAtOTYtNDEuNTkzNzUtOTYtOTZWOTZDMCw0MS41OTM3NSw0MS41OTM3NSwwLDk2LDBINDIyLjQwNjI1QzQzOC40MDYyNSwwLDQ0OCw5LjU5Mzc1LDQ0OCwyNS41OTM3NXYzMzIuODEyNVE0NDgsMzcyLjc5Njg4LDQzOC40MDYyNSwzNzcuNTkzNzVaTTM4MC43OTY4OCwzODRIOTZjLTE2LDAtMzIsMTIuNzk2ODgtMzIsMzJzMTIuNzk2ODgsMzIsMzIsMzJIMzgwLjc5Njg4Wk0xMjguMDE1NjIsMTc2LjAxNTYyYzAsLjUxNTYzLjE0MDYzLjk4NDM4LjE0MDYzLDEuNWwzNy4xMDkzNywzMi40Njg3NkE3Ljk5OTU0LDcuOTk5NTQsMCwwLDEsMTYwLDIyNGgtLjAxNTYyYTkuMTc2NzgsOS4xNzY3OCwwLDAsMS01LjI1LTEuOTg0MzhMMTMxLjE0MDYyLDIwMS4zNzVDMTQyLjY4NzUsMjUwLjk1MzEyLDE4Ni45MDYyNSwyODgsMjQwLDI4OHM5Ny4zMTI1LTM3LjA0Njg4LDEwOC44NzUtODYuNjI1bC0yMy41OTM3NSwyMC42NDA2MmE4LjAyNTE2LDguMDI1MTYsMCwwLDEtNS4yNjU2MywxLjk2ODc2SDMyMGE5LjE0NjQxLDkuMTQ2NDEsMCwwLDEtNi4wMTU2Mi0yLjcxODc2QTkuMjY1MDgsOS4yNjUwOCwwLDAsMSwzMTIsMjE2YTkuMDk3LDkuMDk3LDAsMCwxLDIuNzM0MzgtNi4wMTU2MmwzNy4xMDkzNy0zMi40Njg3NmMuMDE1NjMtLjUzMTI0LjE1NjI1LTEsLjE1NjI1LTEuNTE1NjIsMC0xMS4wNDY4OC0yLjA5Mzc1LTIxLjUxNTYyLTUuMDYyNTEtMzEuNTkzNzVsLTIxLjI2NTYyLDIxLjI1YTguMDA0NjcsOC4wMDQ2NywwLDAsMS0xMS4zMjgxMi0xMS4zMTI1bDI2LjQyMTg3LTI2LjQwNjI1YTExMS44MTUxNywxMTEuODE1MTcsMCwwLDAtNDYuMzU5MzctNDkuMjY1NjIsNjMuMDIzMzYsNjMuMDIzMzYsMCwwLDEtMTQuMDYyNSw4Mi42NDA2MkE1NS44Mzg0Niw1NS44Mzg0NiwwLDAsMSwyNTEuNjI1LDI1NC43MzQzOGwtMS40MjE4OC0zNC4yODEyNiwxMi42NzE4OCw4LjYyNWEzLjk2NywzLjk2NywwLDAsMCwyLjI1LjY4NzUsMy45ODA1OSwzLjk4MDU5LDAsMCwwLDMuNDM3NDktNi4wMzEyNGwtOC41MzEyNC0xNC4zMTI1LDE3LjkwNjI1LTMuNzE4NzZhNC4wMDY0Nyw0LjAwNjQ3LDAsMCwwLDAtNy44NDM3NGwtMTcuOTA2MjUtMy43MTg3Niw4LjUzMTI0LTE0LjMxMjVhMy45ODA1OSwzLjk4MDU5LDAsMCwwLTMuNDM3NDktNi4wMzEyNCw0LjcyNiw0LjcyNiwwLDAsMC0yLjI1LjY3MTg3TDI0OC42ODc1LDE4NC4xMjUsMjQ0LDcxLjgyODEyYTQuMDAzODYsNC4wMDM4NiwwLDAsMC04LDBsLTQuNjI1LDExMC44MTI1LTEyLTguMTU2MjRhNC4wMDMsNC4wMDMsMCwwLDAtNS42ODc1MSw1LjM1OTM3bDguNTMxMjYsMTQuMzEyNUwyMDQuMzEyNSwxOTcuODc1YTMuOTk2ODYsMy45OTY4NiwwLDAsMCwwLDcuODI4MTJsMTcuOTA2MjUsMy43MzQzOC04LjUzMTI2LDE0LjI5Njg4YTQuNzI0NjksNC43MjQ2OSwwLDAsMC0uNTYyNDksMi4wNDY4Nyw0LjU5NTQ3LDQuNTk1NDcsMCwwLDAsMS4yNSwyLjkwNjI1LDQuMDEwNTksNC4wMTA1OSwwLDAsMCwyLjc1LDEuMDkzNzUsNC4wOTAxNiw0LjA5MDE2LDAsMCwwLDIuMjUtLjY4NzVsMTAuMzU5MzctNy4wNDY4N0wyMjguMzc1LDI1NC43NjU2MmE1NS44NjQxNCw1NS44NjQxNCwwLDAsMS0yOC43MTg3NS05My40NTMxMiw2My4wMTExOSw2My4wMTExOSwwLDAsMS0xNC4wNDY4OC04Mi42NTYyNSwxMTEuOTMxNTgsMTExLjkzMTU4LDAsMCwwLTQ2LjM3NSw0OS4yNjU2M2wyNi40MjE4NywyNi40MjE4N2E3Ljk5OTE3LDcuOTk5MTcsMCwwLDEtMTEuMzEyNSwxMS4zMTI1bC0yMS4yNjU2My0yMS4yNjU2M0MxMzAuMDkzNzUsMTU0LjQ4NDM4LDEyOCwxNjQuOTUzMTIsMTI4LjAxNTYyLDE3Ni4wMTU2MlpcIl1cbn07XG52YXIgZmFLYWFiYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdrYWFiYScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjY2YlwiLCBcIk01NTQuMTIgODMuNTFMMzE4LjM2IDQuOTNhOTUuOTYyIDk1Ljk2MiAwIDAgMC02MC43MSAwTDIxLjg4IDgzLjUxQTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTMuODd2NDkuMDFsMjY1LjAyLTc5LjUxYzE1LjAzLTQuNSAzMC45Mi00LjUgNDUuOTggMGwyNjUgNzkuNTF2LTQ5LjAxYzAtMTMuNzctOC44MS0yNi0yMS44OC0zMC4zNnptLTI3OS45IDMwLjUyTDAgMTk2LjN2MjI4LjM4YzAgMTUgMTAuNDIgMjcuOTggMjUuMDYgMzEuMjRsMjQyLjEyIDUzLjhhOTUuOTM3IDk1LjkzNyAwIDAgMCA0MS42NSAwbDI0Mi4xMi01My44YzE0LjY0LTMuMjUgMjUuMDYtMTYuMjQgMjUuMDYtMzEuMjRWMTk2LjI5bC0yNzQuMi04Mi4yNmMtOS4wNC0yLjcyLTE4LjU5LTIuNzItMjcuNTkgMHpNMTI4IDIzMC4xMWMwIDMuNjEtMi40MSA2Ljc3LTUuODkgNy43MmwtODAgMjEuODJDMzcuMDIgMjYxLjAzIDMyIDI1Ny4yIDMyIDI1MS45M3YtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsODAtMjEuODJjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTQ0LTM5LjI4YzAgMy42MS0yLjQxIDYuNzctNS44OSA3LjcybC05NiAyNi4xOGMtNS4wOSAxLjM5LTEwLjExLTIuNDQtMTAuMTEtNy43MnYtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsOTYtMjYuMThjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTc2IDIyLjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDgwIDIxLjgyYzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTgwLTIxLjgyYTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6bS0xNDQtMzkuMjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDk2IDI2LjE4YzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTk2LTI2LjE4YTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6XCJdXG59O1xudmFyIGZhS2V5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2tleScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA4NFwiLCBcIk01MTIgMTc2LjAwMUM1MTIgMjczLjIwMyA0MzMuMjAyIDM1MiAzMzYgMzUyYy0xMS4yMiAwLTIyLjE5LTEuMDYyLTMyLjgyNy0zLjA2OWwtMjQuMDEyIDI3LjAxNEEyMy45OTkgMjMuOTk5IDAgMCAxIDI2MS4yMjMgMzg0SDIyNHY0MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQwdjQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di03OC4wNTljMC02LjM2NSAyLjUyOS0xMi40NyA3LjAyOS0xNi45NzFsMTYxLjgwMi0xNjEuODAyQzE2My4xMDggMjEzLjgxNCAxNjAgMTk1LjI3MSAxNjAgMTc2IDE2MCA3OC43OTggMjM4Ljc5Ny4wMDEgMzM1Ljk5OSAwIDQzMy40ODgtLjAwMSA1MTIgNzguNTExIDUxMiAxNzYuMDAxek0zMzYgMTI4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDgtNDggMjEuNDktNDggNDh6XCJdXG59O1xudmFyIGZhS2V5Ym9hcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2V5Ym9hcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxMWNcIiwgXCJNNTI4IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTI4IDE4MHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDk2di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMjg4IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjMyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIl1cbn07XG52YXIgZmFLaGFuZGEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2hhbmRhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjZkXCIsIFwiTTQxNS44MSA2NmMtNi4zNy0zLjUtMTQuMzctMi4zMy0xOS4zNiAzLjAyYTE1Ljk3NCAxNS45NzQgMCAwIDAtMS45MSAxOS41MmMxNi40OSAyNi4xNiAyNS4yIDU2LjM5IDI1LjIgODcuNDEtLjE5IDUzLjI1LTI2Ljc3IDEwMi42OS03MS4yNyAxMzIuNDFsLTc2LjYzIDUzLjM1di0yMC4xbDQ0LjA1LTM2LjA5YzMuOTItNC4yIDUtMTAuMDkgMi44MS0xNS4yOEwzMTAuODUgMjczYzMzLjg0LTE5LjI2IDU2Ljk0LTU1LjI1IDU2Ljk0LTk2Ljk5IDAtNDAuNzktMjIuMDItNzYuMTMtNTQuNTktOTUuNzFsNS4yMi0xMS40NGMyLjM0LTUuNTMuOTMtMTEuODMtMy41Ny0xNi4wNEwyNTUuODYgMGwtNTguOTkgNTIuODFjLTQuNSA0LjIxLTUuOSAxMC41MS0zLjU3IDE2LjA0bDUuMjIgMTEuNDRjLTMyLjU3IDE5LjU4LTU0LjU5IDU0LjkzLTU0LjU5IDk1LjcyIDAgNDEuNzUgMjMuMDkgNzcuNzMgNTYuOTQgOTYuOTlsLTcuODUgMTcuMjRjLTIuMTkgNS4xOC0xLjEgMTEuMDcgMi44MSAxNS4yOGw0NC4wNSAzNi4wOXYxOS45bC03Ni41OS01My4zM0MxMTkuMDIgMjc4LjYyIDkyLjQ0IDIyOS4xOSA5Mi4yNiAxNzZjMC0zMS4wOCA4LjcxLTYxLjMxIDI1LjItODcuNDcgMy44Ny02LjE2IDIuNC0xMy43Ny0yLjU5LTE5LjA4LTUtNS4zNC0xMy42OC02LjItMjAuMDItMi43QzE2LjMyIDEwOS42LTIyLjMgMjA1LjMgMTMuMzYgMjk1Ljk5YzcuMDcgMTcuOTkgMTcuODkgMzQuMzggMzAuNDYgNDkuMDZsNTUuOTcgNjUuMzZjNC44NyA1LjY5IDEzLjA0IDcuMjQgMTkuNjUgMy43Mmw3OS4zNS00Mi4yM0wyMjggMzkyLjIzbC00Ny4wOCAzMi43OGMtMS42Ny0uMzctMy4yMy0xLjAxLTUuMDEtMS4wMS0xMy4yNSAwLTIzLjk5IDEwLjc0LTIzLjk5IDI0IDAgMTMuMjUgMTAuNzQgMjQgMjMuOTkgMjQgMTIuMSAwIDIxLjY5LTkuMTEgMjMuMzMtMjAuNzZsNDAuNjMtMjguMjh2MjkuOTVjLTkuMzkgNS41Ny0xNS45OSAxNS4zOC0xNS45OSAyNy4xIDAgMTcuNjcgMTQuMzIgMzIgMzEuOTggMzJzMzEuOTgtMTQuMzMgMzEuOTgtMzJjMC0xMS43MS02LjYxLTIxLjUyLTE1Ljk5LTI3LjF2LTMwLjE1bDQwLjkxIDI4LjQ4QzMxNC40MSA0NjIuODkgMzI0IDQ3MiAzMzYuMDkgNDcyYzEzLjI1IDAgMjMuOTktMTAuNzUgMjMuOTktMjQgMC0xMy4yNi0xMC43NC0yNC0yMy45OS0yNC0xLjc4IDAtMy4zNC42NC01LjAxIDEuMDFMMjg0IDM5Mi4yM2wyOS4yMS0yMC4zNCA3OS4zNSA0Mi4yM2M2LjYxIDMuNTIgMTQuNzggMS45NyAxOS42NS0zLjcxbDUyLjUxLTYxLjMxYzE4Ljg3LTIyLjAyIDM0LTQ3LjUgNDEuMjUtNzUuNTkgMjEuNjItODMuNjYtMTYuNDUtMTY3LjI3LTkwLjE2LTIwNy41MXptLTk1Ljk5IDExMGMwIDIyLjMtMTEuNDkgNDEuOTItMjguODMgNTMuMzhsLTUuNjUtMTIuNDFjLTguNzUtMjQuNTItOC43NS01MS4wNCAwLTc1LjU2bDcuODMtMTcuMThjMTYuMDcgMTEuNjUgMjYuNjUgMzAuNDUgMjYuNjUgNTEuNzd6bS0xMjcuOTMgMGMwLTIxLjMyIDEwLjU4LTQwLjEyIDI2LjY2LTUxLjc2bDcuODMgMTcuMThjOC43NSAyNC41MiA4Ljc1IDUxLjAzIDAgNzUuNTZsLTUuNjUgMTIuNDFjLTE3LjM0LTExLjQ2LTI4Ljg0LTMxLjA5LTI4Ljg0LTUzLjM5elwiXVxufTtcbnZhciBmYUtpc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2lzcycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU5NlwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTM2IDE1NmMwIDE5LjItMjguNyA0MS41LTcxLjUgNDQtOC41LjgtMTIuMS0xMS44LTMuNi0xNS40bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy02LTIuNS02LjEtMTIuMiAwLTE0LjhsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTguNi0zLjYtNC44LTE2LjUgMy42LTE1LjQgNDIuOCAyLjUgNzEuNSAyNC44IDcxLjUgNDQgMCAxMy0xMy40IDI3LjMtMzUuMiAzNkMyOTAuNiAzNjguNyAzMDQgMzgzIDMwNCAzOTZ6bTI0LTE1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhS2lzc0JlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2lzcy1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTk3XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS0zOSAyMTkuOWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjUgOC41LTEwLjkgMTItMTUuMSA0LjV6TTMwNCAzOTZjMCAxOS4yLTI4LjcgNDEuNS03MS41IDQ0LTguNS44LTEyLjEtMTEuOC0zLjYtMTUuNGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtNi0yLjUtNi4xLTEyLjIgMC0xNC44bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy04LjYtMy42LTQuOC0xNi41IDMuNi0xNS40IDQyLjggMi41IDcxLjUgMjQuOCA3MS41IDQ0IDAgMTMtMTMuNCAyNy4zLTM1LjIgMzZDMjkwLjYgMzY4LjcgMzA0IDM4MyAzMDQgMzk2em02NS0xNjguMWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4xIDcuMy0xNS42IDQtMTQuOS00LjUgMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjUgOC41LTEwLjkgMTItMTUuMSA0LjV6XCJdXG59O1xudmFyIGZhS2lzc1dpbmtIZWFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdraXNzLXdpbmstaGVhcnQnLFxuICBpY29uOiBbNTA0LCA1MTIsIFtdLCBcImY1OThcIiwgXCJNNTAxLjEgNDAyLjVjLTgtMjAuOC0zMS41LTMxLjUtNTMuMS0yNS45bC04LjQgMi4yLTIuMy04LjRjLTUuOS0yMS40LTI3LTM2LjUtNDktMzMtMjUuMiA0LTQwLjYgMjguNi0zNCA1Mi42bDIyLjkgODIuNmMxLjUgNS4zIDcgOC41IDEyLjQgNy4xbDgzLTIxLjVjMjQuMS02LjMgMzcuNy0zMS44IDI4LjUtNTUuN3ptLTE3Ny42LTRjLTUuNi0yMC4zLTIuMy00MiA5LTU5LjcgMjkuNy00Ni4zIDk4LjctNDUuNSAxMjcuOCA0LjMgNi40LjEgMTIuNiAxLjQgMTguNiAyLjkgMTAuOS0yNy45IDE3LjEtNTguMiAxNy4xLTkwQzQ5NiAxMTkgMzg1IDggMjQ4IDhTMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4YzM1LjQgMCA2OC45LTcuNSA5OS40LTIwLjktLjMtLjctMjMuOS04NC42LTIzLjktODQuNnpNMTY4IDI0MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyMCAxNTZjMCAxOS4yLTI4LjcgNDEuNS03MS41IDQ0LTguNS44LTEyLjEtMTEuOC0zLjYtMTUuNGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtNi0yLjUtNS43LTEyLjMgMC0xNC44bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy04LjgtMy43LTQuNi0xNi42IDMuNi0xNS40IDQyLjggMi41IDcxLjUgMjQuOCA3MS41IDQ0IDAgMTMtMTMuNCAyNy4zLTM1LjIgMzZDMjc0LjYgMzY4LjcgMjg4IDM4MyAyODggMzk2em0xNi0xNzljLTguMyA3LjQtMjEuNi40LTE5LjgtMTAuOCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVM0MDAgMTgxIDQwNCAyMDYuMmMxLjcgMTEuMS0xMS4zIDE4LjMtMTkuOCAxMC44bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMzA0IDIxN3pcIl1cbn07XG52YXIgZmFLaXdpQmlyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdraXdpLWJpcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1MzVcIiwgXCJNNTc1LjgxIDIxNy45OEM1NzIuNjQgMTU3LjQxIDUxOC4yOCAxMTIgNDU3LjYzIDExMmgtOS4zN2MtNTIuODIgMC0xMDQuMjUtMTYuMjUtMTQ3Ljc0LTQ2LjI0LTQxLjk5LTI4Ljk2LTk2LjA0LTQxLjYyLTE1My4yMS0yOC43QzEyOS4zIDQxLjEyLS4wOCA3OC4yNCAwIDIyNGMuMDQgNzAuOTUgMzguNjggMTMyLjggOTUuOTkgMTY2LjAxVjQ2NGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNTQuMjZjMTUuMzYgMy45NiAzMS40IDYuMjYgNDggNi4yNiA1LjQ0IDAgMTAuNjgtLjczIDE2LTEuMThWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01OS40M2MxNC4yNC01LjA2IDI3Ljg4LTExLjM5IDQwLjM0LTE5LjUxQzM0Mi4wNyAzNTUuMjUgMzkzLjg2IDMzNiA0NDguNDYgMzM2YzI1LjQ4IDAgMTYuMDEtLjMxIDIzLjA1LS43OGw3NC40MSAxMzYuNDRjMi44NiA1LjIzIDguMyA4LjM0IDE0LjA1IDguMzQgMS4zMSAwIDIuNjQtLjE2IDMuOTUtLjUgNy4wOS0xLjggMTIuMDUtOC4xOSAxMi4wNS0xNS41IDAgMCAuMTQtMjQwLjI0LS4xNi0yNDYuMDJ6TTQ2My45NyAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em04MCAxNTMuMjVsLTM5Ljg2LTczLjA4YzE1LjEyLTUuODMgMjguNzMtMTQuNiAzOS44Ni0yNS45OHY5OS4wNnpcIl1cbn07XG52YXIgZmFMYW5kbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYW5kbWFyaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY2ZlwiLCBcIk01MDEuNjIgOTIuMTFMMjY3LjI0IDIuMDRhMzEuOTU4IDMxLjk1OCAwIDAgMC0yMi40NyAwTDEwLjM4IDkyLjExQTE2LjAwMSAxNi4wMDEgMCAwIDAgMCAxMDcuMDlWMTQ0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzYuOTFjMC02LjY3LTQuMTQtMTIuNjQtMTAuMzgtMTQuOTh6TTY0IDE5MnYxNjBINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDQ0OHYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2VjE5MmgtNjR2MTYwaC05NlYxOTJoLTY0djE2MGgtOTZWMTkySDY0em00MzIgMjU2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUxhbmd1YWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhbmd1YWdlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMWFiXCIsIFwiTTE1Mi4xIDIzNi4yYy0zLjUtMTIuMS03LjgtMzMuMi03LjgtMzMuMmgtLjVzLTQuMyAyMS4xLTcuOCAzMy4ybC0xMS4xIDM3LjVIMTYzek02MTYgOTZIMzM2djMyMGgyODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0em0tMjQgMTIwYzAgNi42LTUuNCAxMi0xMiAxMmgtMTEuNGMtNi45IDIzLjYtMjEuNyA0Ny40LTQyLjcgNjkuOSA4LjQgNi40IDE3LjEgMTIuNSAyNi4xIDE4IDUuNSAzLjQgNy4zIDEwLjUgNC4xIDE2LjJsLTcuOSAxMy45Yy0zLjQgNS45LTEwLjkgNy44LTE2LjcgNC4zLTEyLjYtNy44LTI0LjUtMTYuMS0zNS40LTI0LjktMTAuOSA4LjctMjIuNyAxNy4xLTM1LjQgMjQuOS01LjggMy41LTEzLjMgMS42LTE2LjctNC4zbC03LjktMTMuOWMtMy4yLTUuNi0xLjQtMTIuOCA0LjItMTYuMiA5LjMtNS43IDE4LTExLjcgMjYuMS0xOC03LjktOC40LTE0LjktMTctMjEtMjUuNy00LTUuNy0yLjItMTMuNiAzLjctMTcuMWw2LjUtMy45IDcuMy00LjNjNS40LTMuMiAxMi40LTEuNyAxNiAzLjQgNSA3IDEwLjggMTQgMTcuNCAyMC45IDEzLjUtMTQuMiAyMy44LTI4LjkgMzAtNDMuMkg0MTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMTZjMC02LjYgNS40LTEyIDEyLTEyaDY0di0xNmMwLTYuNiA1LjQtMTIgMTItMTJoMTZjNi42IDAgMTIgNS40IDEyIDEydjE2aDY0YzYuNiAwIDEyIDUuNCAxMiAxMnpNMCAxMjB2MjcyYzAgMTMuMyAxMC43IDI0IDI0IDI0aDI4MFY5NkgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6bTU4LjkgMjE2LjFMMTE2LjQgMTY3YzEuNy00LjkgNi4yLTguMSAxMS40LTguMWgzMi41YzUuMSAwIDkuNyAzLjMgMTEuNCA4LjFsNTcuNSAxNjkuMWMyLjYgNy44LTMuMSAxNS45LTExLjQgMTUuOWgtMjIuOWExMiAxMiAwIDAgMS0xMS41LTguNmwtOS40LTMxLjloLTYwLjJsLTkuMSAzMS44Yy0xLjUgNS4xLTYuMiA4LjctMTEuNSA4LjdINzAuM2MtOC4yIDAtMTQtOC4xLTExLjQtMTUuOXpcIl1cbn07XG52YXIgZmFMYXB0b3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFwdG9wJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMTA5XCIsIFwiTTYyNCA0MTZIMzgxLjU0Yy0uNzQgMTkuODEtMTQuNzEgMzItMzIuNzQgMzJIMjg4Yy0xOC42OSAwLTMzLjAyLTE3LjQ3LTMyLjc3LTMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCAzNS4yIDI4LjggNjQgNjQgNjRoNTEyYzM1LjIgMCA2NC0yOC44IDY0LTY0di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTU3NiA0OGMwLTI2LjQtMjEuNi00OC00OC00OEgxMTJDODUuNiAwIDY0IDIxLjYgNjQgNDh2MzM2aDUxMlY0OHptLTY0IDI3MkgxMjhWNjRoMzg0djI1NnpcIl1cbn07XG52YXIgZmFMYXB0b3BDb2RlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhcHRvcC1jb2RlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWZjXCIsIFwiTTI1NS4wMyAyNjEuNjVjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwxMS4zMS0xMS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDI1My4yNSAxOTJsMzUuNzEtMzUuNzJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMTEuMzEtMTEuMzFjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTU4LjM0IDU4LjM0Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDU4LjM1IDU4LjM0em05Ni4wMS0xMS4zbDExLjMxIDExLjMxYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNTguMzQtNTguMzRjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtNTguMzQtNTguMzRjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzTDM4Ni43NSAxOTJsLTM1LjcxIDM1LjcyYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzek02MjQgNDE2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy4wMi0xNy40Ny0zMi43Ny0zMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDUxMmMzNS4yIDAgNjQtMjguOCA2NC02NHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2ek01NzYgNDhjMC0yNi40LTIxLjYtNDgtNDgtNDhIMTEyQzg1LjYgMCA2NCAyMS42IDY0IDQ4djMzNmg1MTJWNDh6bS02NCAyNzJIMTI4VjY0aDM4NHYyNTZ6XCJdXG59O1xudmFyIGZhTGFwdG9wSG91c2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFwdG9wLWhvdXNlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDY2XCIsIFwiTTI3MiwyODhIMjA4YTE2LDE2LDAsMCwxLTE2LTE2VjIwOGExNiwxNiwwLDAsMSwxNi0xNmg2NGExNiwxNiwwLDAsMSwxNiwxNnYzNy4xMkMyOTkuMTEsMjMyLjI0LDMxNSwyMjQsMzMyLjgsMjI0SDQ2OS43NGw2LjY1LTcuNTNBMTYuNTEsMTYuNTEsMCwwLDAsNDgwLDIwN2ExNi4zMSwxNi4zMSwwLDAsMC00Ljc1LTEwLjYxTDQxNiwxNDRWNDhhMTYsMTYsMCwwLDAtMTYtMTZIMzY4YTE2LDE2LDAsMCwwLTE2LDE2Vjg3LjNMMjYzLjUsOC45MkMyNTgsNCwyNDcuNDUsMCwyNDAuMDUsMHMtMTcuOTMsNC0yMy40Nyw4LjkyTDQuNzgsMTk2LjQyQTE2LjE1LDE2LjE1LDAsMCwwLDAsMjA3YTE2LjQsMTYuNCwwLDAsMCwzLjU1LDkuMzlMMjIuMzQsMjM3LjdBMTYuMjIsMTYuMjIsMCwwLDAsMzMsMjQyLjQ4LDE2LjUxLDE2LjUxLDAsMCwwLDQyLjM0LDIzOUw2NCwyMTkuODhWMzg0YTMyLDMyLDAsMCwwLDMyLDMySDI3MlpNNjI5LjMzLDQ0OEg1OTJWMjg4YzAtMTcuNjctMTIuODktMzItMjguOC0zMkgzMzIuOGMtMTUuOTEsMC0yOC44LDE0LjMzLTI4LjgsMzJWNDQ4SDI2Ni42N0ExMC42NywxMC42NywwLDAsMCwyNTYsNDU4LjY3djEwLjY2QTQyLjgyLDQyLjgyLDAsMCwwLDI5OC42LDUxMkg1OTcuNEE0Mi44Miw0Mi44MiwwLDAsMCw2NDAsNDY5LjMzVjQ1OC42N0ExMC42NywxMC42NywwLDAsMCw2MjkuMzMsNDQ4Wk01NDQsNDQ4SDM1MlYzMDRINTQ0WlwiXVxufTtcbnZhciBmYUxhcHRvcE1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFwdG9wLW1lZGljYWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4MTJcIiwgXCJNMjMyIDIyNGg1NnY1NmE4IDggMCAwIDAgOCA4aDQ4YTggOCAwIDAgMCA4LTh2LTU2aDU2YTggOCAwIDAgMCA4LTh2LTQ4YTggOCAwIDAgMC04LThoLTU2di01NmE4IDggMCAwIDAtOC04aC00OGE4IDggMCAwIDAtOCA4djU2aC01NmE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDh6TTU3NiA0OGE0OC4xNCA0OC4xNCAwIDAgMC00OC00OEgxMTJhNDguMTQgNDguMTQgMCAwIDAtNDggNDh2MzM2aDUxMnptLTY0IDI3MkgxMjhWNjRoMzg0em0xMTIgOTZIMzgxLjU0Yy0uNzQgMTkuODEtMTQuNzEgMzItMzIuNzQgMzJIMjg4Yy0xOC42OSAwLTMzLTE3LjQ3LTMyLjc3LTMySDE2YTE2IDE2IDAgMCAwLTE2IDE2djE2YTY0LjE5IDY0LjE5IDAgMCAwIDY0IDY0aDUxMmE2NC4xOSA2NC4xOSAwIDAgMCA2NC02NHYtMTZhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhTGF1Z2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGF1Z2gnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OTlcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptODggMjcyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOC04LjkgNzEtNjkuNSAxMjYtMTQyLjkgMTI2elwiXVxufTtcbnZhciBmYUxhdWdoQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXVnaC1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTlhXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTI0IDE5OS40YzMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuOCA0LjEtMTUuMS00LjV6bS0xNjAgMGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjMgNy40LTE1LjggNC0xNS4xLTQuNXpNMzk4LjkgMzA2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwiXVxufTtcbnZhciBmYUxhdWdoU3F1aW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhdWdoLXNxdWludCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU5YlwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0zMy44IDE2MS43bDgwLTQ4YzExLjYtNi45IDI0IDcuNyAxNS40IDE4TDM0My42IDE4MGwzMy42IDQwLjNjOC43IDEwLjQtMy45IDI0LjgtMTUuNCAxOGwtODAtNDhjLTcuNy00LjctNy43LTE1LjkgMC0yMC42em0tMTYzLTMwYy04LjYtMTAuMyAzLjgtMjQuOSAxNS40LTE4bDgwIDQ4YzcuOCA0LjcgNy44IDE1LjkgMCAyMC42bC04MCA0OGMtMTEuNSA2LjgtMjQtNy42LTE1LjQtMThsMzMuNi00MC4zLTMzLjYtNDAuM3pNMzk4LjkgMzA2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwiXVxufTtcbnZhciBmYUxhdWdoV2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXVnaC13aW5rJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTljXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTIwLjEgMTk4LjFjNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFzNTUuOSAxNi45IDU5LjkgNDIuMWMxLjcgMTEuMS0xMS40IDE4LjMtMTkuOCAxMC44bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIxN2MtOC40IDcuNC0yMS42LjMtMTkuOS0xMC45ek0xNjggMTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMjMwLjkgMTQ2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwiXVxufTtcbnZhciBmYUxheWVyR3JvdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGF5ZXItZ3JvdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1ZmRcIiwgXCJNMTIuNDEgMTQ4LjAybDIzMi45NCAxMDUuNjdjNi44IDMuMDkgMTQuNDkgMy4wOSAyMS4yOSAwbDIzMi45NC0xMDUuNjdjMTYuNTUtNy41MSAxNi41NS0zMi41MiAwLTQwLjAzTDI2Ni42NSAyLjMxYTI1LjYwNyAyNS42MDcgMCAwIDAtMjEuMjkgMEwxMi40MSAxMDcuOThjLTE2LjU1IDcuNTEtMTYuNTUgMzIuNTMgMCA0MC4wNHptNDg3LjE4IDg4LjI4bC01OC4wOS0yNi4zMy0xNjEuNjQgNzMuMjdjLTcuNTYgMy40My0xNS41OSA1LjE3LTIzLjg2IDUuMTdzLTE2LjI5LTEuNzQtMjMuODYtNS4xN0w3MC41MSAyMDkuOTdsLTU4LjEgMjYuMzNjLTE2LjU1IDcuNS0xNi41NSAzMi41IDAgNDBsMjMyLjk0IDEwNS41OWM2LjggMy4wOCAxNC40OSAzLjA4IDIxLjI5IDBMNDk5LjU5IDI3Ni4zYzE2LjU1LTcuNSAxNi41NS0zMi41IDAtNDB6bTAgMTI3LjhsLTU3Ljg3LTI2LjIzLTE2MS44NiA3My4zN2MtNy41NiAzLjQzLTE1LjU5IDUuMTctMjMuODYgNS4xN3MtMTYuMjktMS43NC0yMy44Ni01LjE3TDcwLjI5IDMzNy44NyAxMi40MSAzNjQuMWMtMTYuNTUgNy41LTE2LjU1IDMyLjUgMCA0MGwyMzIuOTQgMTA1LjU5YzYuOCAzLjA4IDE0LjQ5IDMuMDggMjEuMjkgMEw0OTkuNTkgNDA0LjFjMTYuNTUtNy41IDE2LjU1LTMyLjUgMC00MHpcIl1cbn07XG52YXIgZmFMZWFmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xlYWYnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwNmNcIiwgXCJNNTQ2LjIgOS43Yy01LjYtMTIuNS0yMS42LTEzLTI4LjMtMS4yQzQ4Ni45IDYyLjQgNDMxLjQgOTYgMzY4IDk2aC04MEMxODIgOTYgOTYgMTgyIDk2IDI4OGMwIDcgLjggMTMuNyAxLjUgMjAuNUMxNjEuMyAyNjIuOCAyNTMuNCAyMjQgMzg0IDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkMxMzIuNiAyNTYgMjYgNDEwLjEgMi40IDQ2OGMtNi42IDE2LjMgMS4yIDM0LjkgMTcuNSA0MS42IDE2LjQgNi44IDM1LTEuMSA0MS44LTE3LjMgMS41LTMuNiAyMC45LTQ3LjkgNzEuOS05MC42IDMyLjQgNDMuOSA5NCA4NS44IDE3NC45IDc3LjJDNDY1LjUgNDY3LjUgNTc2IDMyNi43IDU3NiAxNTQuM2MwLTUwLjItMTAuOC0xMDIuMi0yOS44LTE0NC42elwiXVxufTtcbnZhciBmYUxlbW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xlbW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDk0XCIsIFwiTTQ4OS4wMzggMjIuOTYzQzQ2NS45NDQtLjEzIDQzNC42NDgtNS45MyA0MTMuOTQ3IDYuMTI5Yy01OC45MDYgMzQuMzEyLTE4MS4yNS01My4wNzctMzIxLjA3MyA4Ni43NDZTNDAuNDQxIDM1NS4wNDEgNi4xMjkgNDEzLjk0NWMtMTIuMDU5IDIwLjcwMi02LjI2IDUxLjk5OSAxNi44MzMgNzUuMDkzIDIzLjA5NSAyMy4wOTUgNTQuMzkyIDI4Ljg5MSA3NS4wOTUgMTYuODMyIDU4LjkwMS0zNC4zMSAxODEuMjQ2IDUzLjA3OSAzMjEuMDY4LTg2Ljc0M1M0NzEuNTYgMTU2Ljk2IDUwNS44NzEgOTguMDU2YzEyLjA1OS0yMC43MDIgNi4yNjEtNTEuOTk5LTE2LjgzMy03NS4wOTN6TTI0My44ODEgOTUuNTIyYy01OC4xODkgMTQuNTQ3LTEzMy44MDggOTAuMTU1LTE0OC4zNTggMTQ4LjM1OC0xLjgxNyA3LjI3LTguMzQyIDEyLjEyNC0xNS41MTEgMTIuMTI0LTEuMjg0IDAtMi41OS0uMTU2LTMuODkzLS40ODEtOC41NzItMi4xNDQtMTMuNzg0LTEwLjgzLTExLjY0Mi0xOS40MDNDODEuOTAxIDE2Ni40MjcgMTY2LjMxNiA4MS45MyAyMzYuMTE5IDY0LjQ3OGM4LjU3NS0yLjE0MyAxNy4yNjEgMy4wNjkgMTkuNDAzIDExLjY0MnMtMy4wNjkgMTcuMjU5LTExLjY0MSAxOS40MDJ6XCJdXG59O1xudmFyIGZhTGVzc1RoYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGVzcy10aGFuJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTM2XCIsIFwiTTM2NS40NiAzNTcuNzRMMTQ3LjA0IDI1NS44OWwyMTguNDctMTAxLjg4YzE2LjAyLTcuNDcgMjIuOTUtMjYuNTEgMTUuNDgtNDIuNTNsLTEzLjUyLTI5QzM2MCA2Ni40NiAzNDAuOTYgNTkuNTMgMzI0Ljk0IDY3TDE4LjQ4IDIwOS45MWEzMi4wMTQgMzIuMDE0IDAgMCAwLTE4LjQ4IDI5djM0LjI0YzAgMTIuNDQgNy4yMSAyMy43NSAxOC40OCAyOWwzMDYuMzEgMTQyLjgzYzE2LjA2IDcuNDkgMzUuMTUuNTQgNDIuNjQtMTUuNTJsMTMuNTYtMjkuMDhjNy40OS0xNi4wNi41NC0zNS4xNS0xNS41My00Mi42NHpcIl1cbn07XG52YXIgZmFMZXNzVGhhbkVxdWFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xlc3MtdGhhbi1lcXVhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUzN1wiLCBcIk01NC45OCAyMTQuMmwzMDEuNDEgMTE5Ljg3YzE4LjM5IDYuMDMgMzguNzEtMi41NCA0NS4zOC0xOS4xNWwxMi4wOS0zMC4wOGM2LjY4LTE2LjYxLTIuODItMzQuOTctMjEuMjEtNDFsLTE3NS40NC02OC4wNSAxNzUuNTYtNjguMDljMTguMjktNiAyNy43NC0yNC4yNyAyMS4xLTQwLjc5bC0xMi4wMy0yOS45MmMtNi42NC0xNi41My0yNi44Ni0yNS4wNi00NS4xNS0xOS4wNkw1NC45OCAxMzcuODlDNDEuMjEgMTQyLjQxIDMyIDE1NC41IDMyIDE2OC4wN3YxNS45NmMwIDEzLjU2IDkuMjEgMjUuNjUgMjIuOTggMzAuMTd6TTQyNCA0MDBIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2NDhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0MDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFMZXZlbERvd25BbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGV2ZWwtZG93bi1hbHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYzYmVcIiwgXCJNMzEzLjU1MyAzOTIuMzMxTDIwOS41ODcgNTA0LjMzNGMtOS40ODUgMTAuMjE0LTI1LjY3NiAxMC4yMjktMzUuMTc0IDBMNzAuNDM4IDM5Mi4zMzFDNTYuMjMyIDM3Ny4wMzEgNjcuMDYyIDM1MiA4OC4wMjUgMzUySDE1MlY4MEg2OC4wMjRhMTEuOTk2IDExLjk5NiAwIDAgMS04LjQ4NS0zLjUxNWwtNTYtNTZDLTQuMDIxIDEyLjkyNiAxLjMzMyAwIDEyLjAyNCAwSDIwOGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzI4aDYzLjk2NmMyMC44NzggMCAzMS44NTEgMjQuOTY5IDE3LjU4NyA0MC4zMzF6XCJdXG59O1xudmFyIGZhTGV2ZWxVcEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsZXZlbC11cC1hbHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYzYmZcIiwgXCJNMzEzLjU1MyAxMTkuNjY5TDIwOS41ODcgNy42NjZjLTkuNDg1LTEwLjIxNC0yNS42NzYtMTAuMjI5LTM1LjE3NCAwTDcwLjQzOCAxMTkuNjY5QzU2LjIzMiAxMzQuOTY5IDY3LjA2MiAxNjAgODguMDI1IDE2MEgxNTJ2MjcySDY4LjAyNGExMS45OTYgMTEuOTk2IDAgMCAwLTguNDg1IDMuNTE1bC01NiA1NkMtNC4wMjEgNDk5LjA3NCAxLjMzMyA1MTIgMTIuMDI0IDUxMkgyMDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE2MGg2My45NjZjMjAuODc4IDAgMzEuODUxLTI0Ljk2OSAxNy41ODctNDAuMzMxelwiXVxufTtcbnZhciBmYUxpZmVSaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpZmUtcmluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFjZFwiLCBcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTE3My42OTYgMTE5LjU1OWwtNjMuMzk5IDYzLjM5OWMtMTAuOTg3LTE4LjU1OS0yNi42Ny0zNC4yNTItNDUuMjU1LTQ1LjI1NWw2My4zOTktNjMuMzk5YTIxOC4zOTYgMjE4LjM5NiAwIDAgMSA0NS4yNTUgNDUuMjU1ek0yNTYgMzUyYy01My4wMTkgMC05Ni00Mi45ODEtOTYtOTZzNDIuOTgxLTk2IDk2LTk2IDk2IDQyLjk4MSA5NiA5Ni00Mi45ODEgOTYtOTYgOTZ6TTEyNy41NTkgODIuMzA0bDYzLjM5OSA2My4zOTljLTE4LjU1OSAxMC45ODctMzQuMjUyIDI2LjY3LTQ1LjI1NSA0NS4yNTVsLTYzLjM5OS02My4zOTlhMjE4LjM3MiAyMTguMzcyIDAgMCAxIDQ1LjI1NS00NS4yNTV6TTgyLjMwNCAzODQuNDQxbDYzLjM5OS02My4zOTljMTAuOTg3IDE4LjU1OSAyNi42NyAzNC4yNTIgNDUuMjU1IDQ1LjI1NWwtNjMuMzk5IDYzLjM5OWEyMTguMzk2IDIxOC4zOTYgMCAwIDEtNDUuMjU1LTQ1LjI1NXptMzAyLjEzNyA0NS4yNTVsLTYzLjM5OS02My4zOTljMTguNTU5LTEwLjk4NyAzNC4yNTItMjYuNjcgNDUuMjU1LTQ1LjI1NWw2My4zOTkgNjMuMzk5YTIxOC40MDMgMjE4LjQwMyAwIDAgMS00NS4yNTUgNDUuMjU1elwiXVxufTtcbnZhciBmYUxpZ2h0YnVsYiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaWdodGJ1bGInLFxuICBpY29uOiBbMzUyLCA1MTIsIFtdLCBcImYwZWJcIiwgXCJNOTYuMDYgNDU0LjM1Yy4wMSA2LjI5IDEuODcgMTIuNDUgNS4zNiAxNy42OWwxNy4wOSAyNS42OWEzMS45OSAzMS45OSAwIDAgMCAyNi42NCAxNC4yOGg2MS43MWEzMS45OSAzMS45OSAwIDAgMCAyNi42NC0xNC4yOGwxNy4wOS0yNS42OWEzMS45ODkgMzEuOTg5IDAgMCAwIDUuMzYtMTcuNjlsLjA0LTM4LjM1SDk2LjAxbC4wNSAzOC4zNXpNMCAxNzZjMCA0NC4zNyAxNi40NSA4NC44NSA0My41NiAxMTUuNzggMTYuNTIgMTguODUgNDIuMzYgNTguMjMgNTIuMjEgOTEuNDUuMDQuMjYuMDcuNTIuMTEuNzhoMTYwLjI0Yy4wNC0uMjYuMDctLjUxLjExLS43OCA5Ljg1LTMzLjIyIDM1LjY5LTcyLjYgNTIuMjEtOTEuNDVDMzM1LjU1IDI2MC44NSAzNTIgMjIwLjM3IDM1MiAxNzYgMzUyIDc4LjYxIDI3Mi45MS0uMyAxNzUuNDUgMCA3My40NC4zMSAwIDgyLjk3IDAgMTc2em0xNzYtODBjLTQ0LjExIDAtODAgMzUuODktODAgODAgMCA4Ljg0LTcuMTYgMTYtMTYgMTZzLTE2LTcuMTYtMTYtMTZjMC02MS43NiA1MC4yNC0xMTIgMTEyLTExMiA4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFMaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpbmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYzFcIiwgXCJNMzI2LjYxMiAxODUuMzkxYzU5Ljc0NyA1OS44MDkgNTguOTI3IDE1NS42OTguMzYgMjE0LjU5LS4xMS4xMi0uMjQuMjUtLjM2LjM3bC02Ny4yIDY3LjJjLTU5LjI3IDU5LjI3LTE1NS42OTkgNTkuMjYyLTIxNC45NiAwLTU5LjI3LTU5LjI2LTU5LjI3LTE1NS43IDAtMjE0Ljk2bDM3LjEwNi0zNy4xMDZjOS44NC05Ljg0IDI2Ljc4Ni0zLjMgMjcuMjk0IDEwLjYwNi42NDggMTcuNzIyIDMuODI2IDM1LjUyNyA5LjY5IDUyLjcyMSAxLjk4NiA1LjgyMi41NjcgMTIuMjYyLTMuNzgzIDE2LjYxMmwtMTMuMDg3IDEzLjA4N2MtMjguMDI2IDI4LjAyNi0yOC45MDUgNzMuNjYtMS4xNTUgMTAxLjk2IDI4LjAyNCAyOC41NzkgNzQuMDg2IDI4Ljc0OSAxMDIuMzI1LjUxbDY3LjItNjcuMTljMjguMTkxLTI4LjE5MSAyOC4wNzMtNzMuNzU3IDAtMTAxLjgzLTMuNzAxLTMuNjk0LTcuNDI5LTYuNTY0LTEwLjM0MS04LjU2OWExNi4wMzcgMTYuMDM3IDAgMCAxLTYuOTQ3LTEyLjYwNmMtLjM5Ni0xMC41NjcgMy4zNDgtMjEuNDU2IDExLjY5OC0yOS44MDZsMjEuMDU0LTIxLjA1NWM1LjUyMS01LjUyMSAxNC4xODItNi4xOTkgMjAuNTg0LTEuNzMxYTE1Mi40ODIgMTUyLjQ4MiAwIDAgMSAyMC41MjIgMTcuMTk3ek00NjcuNTQ3IDQ0LjQ0OWMtNTkuMjYxLTU5LjI2Mi0xNTUuNjktNTkuMjctMjE0Ljk2IDBsLTY3LjIgNjcuMmMtLjEyLjEyLS4yNS4yNS0uMzYuMzctNTguNTY2IDU4Ljg5Mi01OS4zODcgMTU0Ljc4MS4zNiAyMTQuNTlhMTUyLjQ1NCAxNTIuNDU0IDAgMCAwIDIwLjUyMSAxNy4xOTZjNi40MDIgNC40NjggMTUuMDY0IDMuNzg5IDIwLjU4NC0xLjczMWwyMS4wNTQtMjEuMDU1YzguMzUtOC4zNSAxMi4wOTQtMTkuMjM5IDExLjY5OC0yOS44MDZhMTYuMDM3IDE2LjAzNyAwIDAgMC02Ljk0Ny0xMi42MDZjLTIuOTEyLTIuMDA1LTYuNjQtNC44NzUtMTAuMzQxLTguNTY5LTI4LjA3My0yOC4wNzMtMjguMTkxLTczLjYzOSAwLTEwMS44M2w2Ny4yLTY3LjE5YzI4LjIzOS0yOC4yMzkgNzQuMy0yOC4wNjkgMTAyLjMyNS41MSAyNy43NSAyOC4zIDI2Ljg3MiA3My45MzQtMS4xNTUgMTAxLjk2bC0xMy4wODcgMTMuMDg3Yy00LjM1IDQuMzUtNS43NjkgMTAuNzktMy43ODMgMTYuNjEyIDUuODY0IDE3LjE5NCA5LjA0MiAzNC45OTkgOS42OSA1Mi43MjEuNTA5IDEzLjkwNiAxNy40NTQgMjAuNDQ2IDI3LjI5NCAxMC42MDZsMzcuMTA2LTM3LjEwNmM1OS4yNzEtNTkuMjU5IDU5LjI3MS0xNTUuNjk5LjAwMS0yMTQuOTU5elwiXVxufTtcbnZhciBmYUxpcmFTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpcmEtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjE5NVwiLCBcIk0zNzEuOTk0IDI1NmgtNDguMDE5QzMxNy42NCAyNTYgMzEyIDI2MC45MTIgMzEyIDI2Ny4yNDYgMzEyIDM2OCAyMzAuMTc5IDQxNiAxNDQgNDE2VjI1Ni43ODFsMTM0LjYwMy0yOS45MTJBMTIgMTIgMCAwIDAgMjg4IDIxNS4xNTV2LTQwLjk3NmMwLTcuNjc3LTcuMTA5LTEzLjM4LTE0LjYwMy0xMS43MTRMMTQ0IDE5MS4yMTlWMTYwLjc4bDEzNC42MDMtMjkuOTEyQTEyIDEyIDAgMCAwIDI4OCAxMTkuMTU0Vjc4LjE3OWMwLTcuNjc3LTcuMTA5LTEzLjM4LTE0LjYwMy0xMS43MTRMMTQ0IDk1LjIxOVY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjY4Ljk5N0w5LjM5NyAxMjUuMTMxQTEyIDEyIDAgMCAwIDAgMTM2Ljg0NXY0MC45NzZjMCA3LjY3NyA3LjEwOSAxMy4zOCAxNC42MDMgMTEuNzE0TDY0IDE3OC41NTh2MzAuNDM5TDkuMzk3IDIyMS4xMzFBMTIgMTIgMCAwIDAgMCAyMzIuODQ1djQwLjk3NmMwIDcuNjc3IDcuMTA5IDEzLjM4IDE0LjYwMyAxMS43MTRMNjQgMjc0LjU1OFY0NjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3OS41ODNjMTM0LjA5MSAwIDIyMy4yNTUtNzcuODM0IDIyOC40MDgtMjExLjU5Mi4yNjEtNi43ODItNS4yMTEtMTIuNDA4LTExLjk5Ny0xMi40MDh6XCJdXG59O1xudmFyIGZhTGlzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaXN0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDNhXCIsIFwiTTgwIDM2OEgxNmExNiAxNiAwIDAgMC0xNiAxNnY2NGExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE2QTE2IDE2IDAgMCAwIDAgNjR2NjRhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djY0YTE2IDE2IDAgMCAwIDE2IDE2aDY0YTE2IDE2IDAgMCAwIDE2LTE2di02NGExNiAxNiAwIDAgMC0xNi0xNnptNDE2IDE3NkgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhTGlzdEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaXN0LWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyMlwiLCBcIk00NjQgNDgwSDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTEyOCAxMjBjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHptMCA5NmMtMjIuMDkxIDAtNDAgMTcuOTA5LTQwIDQwczE3LjkwOSA0MCA0MCA0MCA0MC0xNy45MDkgNDAtNDAtMTcuOTA5LTQwLTQwLTQwem0wIDk2Yy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6bTI4OC0xMzZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTAgOTZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTAgOTZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJdXG59O1xudmFyIGZhTGlzdE9sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpc3Qtb2wnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwY2JcIiwgXCJNNjEuNzcgNDAxbDE3LjUtMjAuMTVhMTkuOTIgMTkuOTIgMCAwIDAgNS4wNy0xNC4xOXYtMy4zMUM4NC4zNCAzNTYgODAuNSAzNTIgNzMgMzUySDE2YTggOCAwIDAgMC04IDh2MTZhOCA4IDAgMCAwIDggOGgyMi44M2ExNTcuNDEgMTU3LjQxIDAgMCAwLTExIDEyLjMxbC01LjYxIDdjLTQgNS4wNy01LjI1IDEwLjEzLTIuOCAxNC44OGwxLjA1IDEuOTNjMyA1Ljc2IDYuMjkgNy44OCAxMi4yNSA3Ljg4aDQuNzNjMTAuMzMgMCAxNS45NCAyLjQ0IDE1Ljk0IDkuMDkgMCA0LjcyLTQuMiA4LjIyLTE0LjM2IDguMjJhNDEuNTQgNDEuNTQgMCAwIDEtMTUuNDctMy4xMmMtNi40OS0zLjg4LTExLjc0LTMuNS0xNS42IDMuMTJsLTUuNTkgOS4zMWMtMy43MiA2LjEzLTMuMTkgMTEuNzIgMi42MyAxNS45NCA3LjcxIDQuNjkgMjAuMzggOS40NCAzNyA5LjQ0IDM0LjE2IDAgNDguNS0yMi43NSA0OC41LTQ0LjEyLS4wMy0xNC4zOC05LjEyLTI5Ljc2LTI4LjczLTM0Ljg4ek00OTYgMjI0SDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE2MEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2em0wIDMyMEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMTYgMTYwaDY0YTggOCAwIDAgMCA4LTh2LTE2YTggOCAwIDAgMC04LThINjRWNDBhOCA4IDAgMCAwLTgtOEgzMmE4IDggMCAwIDAtNy4xNCA0LjQybC04IDE2QTggOCAwIDAgMCAyNCA2NGg4djY0SDE2YTggOCAwIDAgMC04IDh2MTZhOCA4IDAgMCAwIDggOHptLTMuOTEgMTYwSDgwYTggOCAwIDAgMCA4LTh2LTE2YTggOCAwIDAgMC04LThINDEuMzJjMy4yOS0xMC4yOSA0OC4zNC0xOC42OCA0OC4zNC01Ni40NCAwLTI5LjA2LTI1LTM5LjU2LTQ0LjQ3LTM5LjU2LTIxLjM2IDAtMzMuOCAxMC00MC40NiAxOC43NS00LjM3IDUuNTktMyAxMC44NCAyLjggMTUuMzdsOC41OCA2Ljg4YzUuNjEgNC41NiAxMSAyLjQ3IDE2LjEyLTIuNDRhMTMuNDQgMTMuNDQgMCAwIDEgOS40Ni0zLjg0YzMuMzMgMCA5LjI4IDEuNTYgOS4yOCA4Ljc1QzUxIDI0OC4xOSAwIDI1Ny4zMSAwIDMwNC41OXY0QzAgMzE2IDUuMDggMzIwIDEyLjA5IDMyMHpcIl1cbn07XG52YXIgZmFMaXN0VWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdC11bCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBjYVwiLCBcIk00OCA0OGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptMCAxNjBhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTAgMTYwYTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em00NDggMTZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYUxvY2F0aW9uQXJyb3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jYXRpb24tYXJyb3cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMjRcIiwgXCJNNDQ0LjUyIDMuNTJMMjguNzQgMTk1LjQyYy00Ny45NyAyMi4zOS0zMS45OCA5Mi43NSAxOS4xOSA5Mi43NWgxNzUuOTF2MTc1LjkxYzAgNTEuMTcgNzAuMzYgNjcuMTcgOTIuNzUgMTkuMTlsMTkxLjktNDE1Ljc4YzE1Ljk5LTM4LjM5LTI1LjU5LTc5Ljk3LTYzLjk3LTYzLjk3elwiXVxufTtcbnZhciBmYUxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jaycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAyM1wiLCBcIk00MDAgMjI0aC0yNHYtNzJDMzc2IDY4LjIgMzA3LjggMCAyMjQgMFM3MiA2OC4yIDcyIDE1MnY3Mkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTkyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xMDQgMEgxNTJ2LTcyYzAtMzkuNyAzMi4zLTcyIDcyLTcyczcyIDMyLjMgNzIgNzJ2NzJ6XCJdXG59O1xudmFyIGZhTG9ja09wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jay1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmM2MxXCIsIFwiTTQyMy41IDBDMzM5LjUuMyAyNzIgNjkuNSAyNzIgMTUzLjVWMjI0SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxOTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MmMwLTI2LjUtMjEuNS00OC00OC00OGgtNDh2LTcxLjFjMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTgwQzU3NiA2OCA1MDcuNS0uMyA0MjMuNSAwelwiXVxufTtcbnZhciBmYUxvbmdBcnJvd0FsdERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9uZy1hcnJvdy1hbHQtZG93bicsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjMwOVwiLCBcIk0xNjggMzQ1Ljk0MVY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMDEuOTQxSDQxLjk0MWMtMjEuMzgyIDAtMzIuMDkgMjUuODUxLTE2Ljk3MSA0MC45NzFsODYuMDU5IDg2LjA1OWM5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsODYuMDU5LTg2LjA1OWMxNS4xMTktMTUuMTE5IDQuNDExLTQwLjk3MS0xNi45NzEtNDAuOTcxSDE2OHpcIl1cbn07XG52YXIgZmFMb25nQXJyb3dBbHRMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xvbmctYXJyb3ctYWx0LWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYzMGFcIiwgXCJNMTM0LjA1OSAyOTZINDM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTU2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2elwiXVxufTtcbnZhciBmYUxvbmdBcnJvd0FsdFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xvbmctYXJyb3ctYWx0LXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMzBiXCIsIFwiTTMxMy45NDEgMjE2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjU2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzAxLjk0MXY0Ni4wNTljMCAyMS4zODIgMjUuODUxIDMyLjA5IDQwLjk3MSAxNi45NzFsODYuMDU5LTg2LjA1OWM5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFsLTg2LjA1OS04Ni4wNTljLTE1LjExOS0xNS4xMTktNDAuOTcxLTQuNDExLTQwLjk3MSAxNi45NzFWMjE2elwiXVxufTtcbnZhciBmYUxvbmdBcnJvd0FsdFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xvbmctYXJyb3ctYWx0LXVwJyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMzBjXCIsIFwiTTg4IDE2Ni4wNTlWNDY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMlYxNjYuMDU5aDQ2LjA1OWMyMS4zODIgMCAzMi4wOS0yNS44NTEgMTYuOTcxLTQwLjk3MWwtODYuMDU5LTg2LjA1OWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwbC04Ni4wNTkgODYuMDU5Yy0xNS4xMTkgMTUuMTE5LTQuNDExIDQwLjk3MSAxNi45NzEgNDAuOTcxSDg4elwiXVxufTtcbnZhciBmYUxvd1Zpc2lvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb3ctdmlzaW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMmE4XCIsIFwiTTU2OS4zNDQgMjMxLjYzMUM1MTIuOTYgMTM1Ljk0OSA0MDcuODEgNzIgMjg4IDcyYy0yOC40NjggMC01Ni4xMDIgMy42MTktODIuNDUxIDEwLjQwOUwxNTIuNzc4IDEwLjI0Yy03LjYwMS0xMC44NTgtMjIuNTY0LTEzLjUtMzMuNDIzLTUuOWwtMTMuMTE0IDkuMTc4Yy0xMC44NiA3LjYwMS0xMy41MDIgMjIuNTY2LTUuOSAzMy40MjZsNDMuMTMxIDU4LjM5NUM4OS40NDkgMTMxLjczIDQwLjIyOCAxNzQuNjgzIDYuNjgyIDIzMS41ODFjLS4wMS4wMTctLjAyMy4wMzMtLjAzNC4wNS04Ljc2NSAxNC44NzUtOC45NjQgMzMuNTI4IDAgNDguNzM5IDM4LjUgNjUuMzMyIDk5Ljc0MiAxMTUuODYyIDE3Mi44NTkgMTQxLjM0OUw1NS4zMTYgMjQ0LjMwMkEyNzIuMTk0IDI3Mi4xOTQgMCAwIDEgODMuNjEgMjA4LjM5bDExOS40IDE3MC41OGguMDFsNDAuNjMgNTguMDRhMzMwLjA1NSAzMzAuMDU1IDAgMCAwIDc4Ljk0IDEuMTdsLTE4OS45OC0yNzEuNGEyNzcuNjI4IDI3Ny42MjggMCAwIDEgMzguNzc3LTIxLjU2M2wyNTEuODM2IDM1Ni41NDRjNy42MDEgMTAuODU4IDIyLjU2NCAxMy40OTkgMzMuNDIzIDUuOWwxMy4xMTQtOS4xNzhjMTAuODYtNy42MDEgMTMuNTAyLTIyLjU2NyA1LjktMzMuNDI2bC00My4xMi01OC4zNzctLjAwNy0uMDA5YzU3LjE2MS0yNy45NzggMTA0LjgzNS03Mi4wNCAxMzYuODEtMTI2LjMwMWE0Ny45MzggNDcuOTM4IDAgMCAwIC4wMDEtNDguNzM5ek0zOTAuMDI2IDM0NS45NGwtMTkuMDY2LTI3LjIzYzI0LjY4Mi0zMi41NjcgMjcuNzExLTc2LjM1MyA4LjgtMTExLjY4di4wM2MwIDIzLjY1LTE5LjE3IDQyLjgyLTQyLjgyIDQyLjgyLTIzLjgyOCAwLTQyLjgyLTE5LjM0OS00Mi44Mi00Mi44MiAwLTIzLjY1IDE5LjE3LTQyLjgyIDQyLjgyLTQyLjgyaC4wM2MtMjQuNzUtMTMuMjQ5LTUzLjUyMi0xNS42NDMtNzkuNTEtNy42OGwtMTkuMDY4LTI3LjIzN0MyNTMuNzU4IDEyMy4zMDYgMjcwLjQ4OCAxMjAgMjg4IDEyMGM3NS4xNjIgMCAxMzYgNjAuODI2IDEzNiAxMzYgMCAzNC41MDQtMTIuODMzIDY1Ljk3NS0zMy45NzQgODkuOTR6XCJdXG59O1xudmFyIGZhTHVnZ2FnZUNhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbHVnZ2FnZS1jYXJ0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTlkXCIsIFwiTTIyNCAzMjBoMzJWOTZoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyem0zNTItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTMydjIyNGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyem00OCA5NkgxMjhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djM2OGMwIDguODQgNy4xNiAxNiAxNiAxNmg4Mi45NGMtMS43OSA1LjAzLTIuOTQgMTAuMzYtMi45NCAxNiAwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4czQ4LTIxLjQ5IDQ4LTQ4YzAtNS42NC0xLjE1LTEwLjk3LTIuOTQtMTZoMTk3Ljg4Yy0xLjc5IDUuMDMtMi45NCAxMC4zNi0yLjk0IDE2IDAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDhjMC01LjY0LTEuMTUtMTAuOTctMi45NC0xNkg2MjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00ODAgOTZWNDhjMC0yNi41MS0yMS40OS00OC00OC00OGgtOTZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjcyaDE5MlY5NnptLTQ4IDBoLTk2VjQ4aDk2djQ4elwiXVxufTtcbnZhciBmYUx1bmdzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2x1bmdzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjA0XCIsIFwiTTYzNi4xMSAzOTAuMTVDNjE0LjQ0IDMwOC44NSA1ODAuMDcgMjMxIDUzNC4xIDE1OS4xMyA1MTEuOTggMTI0LjU2IDQ5OC4wMyA5NiA0NTQuMDUgOTYgNDE1LjM2IDk2IDM4NCAxMjUuNDIgMzg0IDE2MS43MXY2MC4xMWwtMzIuODgtMjEuOTJhMTUuOTk2IDE1Ljk5NiAwIDAgMS03LjEyLTEzLjMxVjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTcwLjU5YzAgNS4zNS0yLjY3IDEwLjM0LTcuMTIgMTMuMzFMMjU2IDIyMS44MnYtNjAuMTFDMjU2IDEyNS40MiAyMjQuNjQgOTYgMTg1Ljk1IDk2Yy00My45OCAwLTU3LjkzIDI4LjU2LTgwLjA1IDYzLjEzQzU5LjkzIDIzMSAyNS41NiAzMDguODUgMy44OSAzOTAuMTUgMS4zIDM5OS44NCAwIDQwOS43OSAwIDQxOS43OGMwIDYxLjIzIDYyLjQ4IDEwNS40NCAxMjUuMjQgODguNjJsNTkuNS0xNS45NWM0Mi4xOC0xMS4zIDcxLjI2LTQ3LjQ3IDcxLjI2LTg4LjYydi04Ny40OWwtODUuODQgNTcuMjNhNy45OTIgNy45OTIgMCAwIDEtMTEuMDktMi4yMmwtOC44OC0xMy4zMWE3Ljk5MiA3Ljk5MiAwIDAgMSAyLjIyLTExLjA5TDMyMCAyMzUuMjNsMTY3LjU5IDExMS43MmE3Ljk5NCA3Ljk5NCAwIDAgMSAyLjIyIDExLjA5bC04Ljg4IDEzLjMxYTcuOTk0IDcuOTk0IDAgMCAxLTExLjA5IDIuMjJMMzg0IDMxNi4zNHY4Ny40OWMwIDQxLjE1IDI5LjA4IDc3LjMxIDcxLjI2IDg4LjYybDU5LjUgMTUuOTVDNTc3LjUyIDUyNS4yMiA2NDAgNDgxLjAxIDY0MCA0MTkuNzhjMC05Ljk5LTEuMy0xOS45NC0zLjg5LTI5LjYzelwiXVxufTtcbnZhciBmYUx1bmdzVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbHVuZ3MtdmlydXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNjdcIiwgXCJNMzQ0LDE1MC42OFYxNkExNiwxNiwwLDAsMCwzMjgsMEgzMTJhMTYsMTYsMCwwLDAtMTYsMTZWMTUwLjY4YTQ2LjQ1LDQ2LjQ1LDAsMCwxLDQ4LDBaTTE5NS41NCw0NDQuNDZhNDguMDYsNDguMDYsMCwwLDEsMC02Ny44OGw4LjU4LTguNThIMTkyYTQ4LDQ4LDAsMCwxLDAtOTZoMTIuMTJsLTguNTgtOC41N2E0OCw0OCwwLDAsMSw2MC40Ni03NFYxNjEuNzVDMjU2LDEyNS4zOCwyMjQuNjIsOTYsMTg2LDk2Yy00NCwwLTU4LDI4LjUtODAuMTIsNjMuMTNhODE5LjUyLDgxOS41MiwwLDAsMC0xMDIsMjMxQTExMy4xNiwxMTMuMTYsMCwwLDAsMCw0MTkuNzVDMCw0ODEsNjIuNSw1MjUuMjYsMTI1LjI1LDUwOC4zOGw1OS41LTE1Ljg3YTk4LjUxLDk4LjUxLDAsMCwwLDUyLjUtMzQuNzUsNDYuNDksNDYuNDksMCwwLDEtNDEuNzEtMTMuM1ptMjI2LjI5LTIyLjYzYTE2LDE2LDAsMCwwLDAtMjIuNjJsLTguNTgtOC41OEMzOTMuMDksMzcwLjQ3LDQwNy4zNywzMzYsNDM1Ljg4LDMzNkg0NDhhMTYsMTYsMCwwLDAsMC0zMkg0MzUuODhjLTI4LjUxLDAtNDIuNzktMzQuNDctMjIuNjMtNTQuNjJsOC41OC04LjU4YTE2LDE2LDAsMCwwLTIyLjYzLTIyLjYzbC04LjU3LDguNThDMzcwLjQ3LDI0Ni45MSwzMzYsMjMyLjYzLDMzNiwyMDQuMTJWMTkyYTE2LDE2LDAsMCwwLTMyLDB2MTIuMTJjMCwyOC41MS0zNC40Nyw0Mi43OS01NC42MywyMi42M2wtOC41Ny04LjU4YTE2LDE2LDAsMCwwLTIyLjYzLDIyLjYzbDguNTgsOC41OGMyMC4xNiwyMC4xNSw1Ljg4LDU0LjYyLTIyLjYzLDU0LjYySDE5MmExNiwxNiwwLDAsMCwwLDMyaDEyLjEyYzI4LjUxLDAsNDIuNzksMzQuNDcsMjIuNjMsNTQuNjNsLTguNTgsOC41OGExNiwxNiwwLDEsMCwyMi42MywyMi42Mmw4LjU3LTguNTdDMjY5LjUzLDM5My4xLDMwNCw0MDcuMzgsMzA0LDQzNS44OFY0NDhhMTYsMTYsMCwwLDAsMzIsMFY0MzUuODhjMC0yOC41LDM0LjQ3LTQyLjc4LDU0LjYzLTIyLjYybDguNTcsOC41N2ExNiwxNiwwLDAsMCwyMi42MywwWk0yODgsMzA0YTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDI4OCwzMDRabTY0LDY0YTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDM1MiwzNjhabTI4NC4xMiwyMi4xM2E4MTkuNTIsODE5LjUyLDAsMCwwLTEwMi0yMzFDNTEyLDEyNC41LDQ5OCw5Niw0NTQsOTZjLTM4LjYyLDAtNzAsMjkuMzgtNzAsNjUuNzV2MjcuNzJhNDgsNDgsMCwwLDEsNjAuNDYsNzRMNDM1Ljg4LDI3Mkg0NDhhNDgsNDgsMCwwLDEsMCw5Nkg0MzUuODhsOC41OCw4LjU4YTQ3LjcsNDcuNywwLDAsMS00MS43MSw4MS4xOCw5OC41MSw5OC41MSwwLDAsMCw1Mi41LDM0Ljc1bDU5LjUsMTUuODdDNTc3LjUsNTI1LjI2LDY0MCw0ODEsNjQwLDQxOS43NUExMTMuMTYsMTEzLjE2LDAsMCwwLDYzNi4xMiwzOTAuMTNaXCJdXG59O1xudmFyIGZhTWFnaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFnaWMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwZDBcIiwgXCJNMjI0IDk2bDE2LTMyIDMyLTE2LTMyLTE2LTE2LTMyLTE2IDMyLTMyIDE2IDMyIDE2IDE2IDMyek04MCAxNjBsMjYuNjYtNTMuMzNMMTYwIDgwbC01My4zNC0yNi42N0w4MCAwIDUzLjM0IDUzLjMzIDAgODBsNTMuMzQgMjYuNjdMODAgMTYwem0zNTIgMTI4bC0yNi42NiA1My4zM0wzNTIgMzY4bDUzLjM0IDI2LjY3TDQzMiA0NDhsMjYuNjYtNTMuMzNMNTEyIDM2OGwtNTMuMzQtMjYuNjdMNDMyIDI4OHptNzAuNjItMTkzLjc3TDQxNy43NyA5LjM4QzQxMS41MyAzLjEyIDQwMy4zNCAwIDM5NS4xNSAwYy04LjE5IDAtMTYuMzggMy4xMi0yMi42MyA5LjM4TDkuMzggMzcyLjUyYy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1bDg0Ljg1IDg0Ljg1YzYuMjUgNi4yNSAxNC40NCA5LjM3IDIyLjYyIDkuMzcgOC4xOSAwIDE2LjM4LTMuMTIgMjIuNjMtOS4zN2wzNjMuMTQtMzYzLjE1YzEyLjUtMTIuNDggMTIuNS0zMi43NSAwLTQ1LjI0ek0zNTkuNDUgMjAzLjQ2bC01MC45MS01MC45MSA4Ni42LTg2LjYgNTAuOTEgNTAuOTEtODYuNiA4Ni42elwiXVxufTtcbnZhciBmYU1hZ25ldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYWduZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNzZcIiwgXCJNMTY0LjA3IDE0OC4xSDEyYTEyIDEyIDAgMCAxLTEyLTEydi04MGEzNiAzNiAwIDAgMSAzNi0zNmgxMDRhMzYgMzYgMCAwIDEgMzYgMzZ2ODBhMTEuODkgMTEuODkgMCAwIDEtMTEuOTMgMTJ6bTM0Ny45My0xMlY1NmEzNiAzNiAwIDAgMC0zNi0zNkgzNzJhMzYgMzYgMCAwIDAtMzYgMzZ2ODBhMTIgMTIgMCAwIDAgMTIgMTJoMTUyYTExLjg5IDExLjg5IDAgMCAwIDEyLTExLjl6bS0xNjQgNDRhMTIgMTIgMCAwIDAtMTIgMTJ2NTJjMCAxMjguMS0xNjAgMTI3LjktMTYwIDB2LTUyYTEyIDEyIDAgMCAwLTEyLTEySDEyLjFhMTIgMTIgMCAwIDAtMTIgMTIuMWMuMSAyMS40LjYgNDAuMyAwIDUzLjMgMCAxNTAuNiAxMzYuMTcgMjQ2LjYgMjU2Ljc1IDI0Ni42czI1NS05NiAyNTUtMjQ2LjdjLS42LTEyLjgtLjItMzMgMC01My4yYTEyIDEyIDAgMCAwLTEyLTEyLjF6XCJdXG59O1xudmFyIGZhTWFpbEJ1bGsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFpbC1idWxrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNjc0XCIsIFwiTTE2MCA0NDhjLTI1LjYgMC01MS4yLTIyLjQtNjQtMzItNjQtNDQuOC04My4yLTYwLjgtOTYtNzAuNFY0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyNTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNDUuNmMtMTIuOCA5LjYtMzIgMjUuNi05NiA3MC40LTEyLjggOS42LTM4LjQgMzItNjQgMzJ6bTEyOC0xOTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTZjMjUuNiAxOS4yIDIyLjQgMTkuMiAxMTUuMiA4Ni40IDkuNiA2LjQgMjguOCAyNS42IDQ0LjggMjUuNnMzNS4yLTE5LjIgNDQuOC0yMi40YzkyLjgtNjcuMiA4OS42LTY3LjIgMTE1LjItODYuNFYyODhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjU2LTk2SDIyNGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmg5NmMzMy4yMSAwIDYwLjU5IDI1LjQyIDYzLjcxIDU3LjgybC4yOS0uMjJWNDE2aDE5MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE5MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tMzIgMTI4aC02NHYtNjRoNjR2NjR6bS0zNTItOTZjMC0zNS4yOSAyOC43MS02NCA2NC02NGgyMjRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NkM3OC4zMyAwIDY0IDE0LjMzIDY0IDMydjE5Mmg5NnYtMzJ6XCJdXG59O1xudmFyIGZhTWFsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYWxlJyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmMTgzXCIsIFwiTTk2IDBjMzUuMzQ2IDAgNjQgMjguNjU0IDY0IDY0cy0yOC42NTQgNjQtNjQgNjQtNjQtMjguNjU0LTY0LTY0UzYwLjY1NCAwIDk2IDBtNDggMTQ0aC0xMS4zNmMtMjIuNzExIDEwLjQ0My00OS41OSAxMC44OTQtNzMuMjggMEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYxMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2djEzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM1MmgxNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTkyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhTWFwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI3OVwiLCBcIk0wIDExNy42NnYzNDYuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDE2VjMyTDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ6TTE5MiA0MTZsMTkyIDY0Vjk2TDE5MiAzMnYzODR6TTU1NC4wNiAzMy4xNkw0MTYgOTZ2Mzg0bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIl1cbn07XG52YXIgZmFNYXBNYXJrZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFwLW1hcmtlZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjU5ZlwiLCBcIk0yODggMGMtNjkuNTkgMC0xMjYgNTYuNDEtMTI2IDEyNiAwIDU2LjI2IDgyLjM1IDE1OC44IDExMy45IDE5Ni4wMiA2LjM5IDcuNTQgMTcuODIgNy41NCAyNC4yIDBDMzMxLjY1IDI4NC44IDQxNCAxODIuMjYgNDE0IDEyNiA0MTQgNTYuNDEgMzU3LjU5IDAgMjg4IDB6TTIwLjEyIDIxNS45NUEzMi4wMDYgMzIuMDA2IDAgMCAwIDAgMjQ1LjY2djI1MC4zMmMwIDExLjMyIDExLjQzIDE5LjA2IDIxLjk0IDE0Ljg2TDE2MCA0NDhWMjE0LjkyYy04Ljg0LTE1Ljk4LTE2LjA3LTMxLjU0LTIxLjI1LTQ2LjQyTDIwLjEyIDIxNS45NXpNMjg4IDM1OS42N2MtMTQuMDcgMC0yNy4zOC02LjE4LTM2LjUxLTE2Ljk2LTE5LjY2LTIzLjItNDAuNTctNDkuNjItNTkuNDktNzYuNzJ2MTgybDE5MiA2NFYyNjZjLTE4LjkyIDI3LjA5LTM5LjgyIDUzLjUyLTU5LjQ5IDc2LjcyLTkuMTMgMTAuNzctMjIuNDQgMTYuOTUtMzYuNTEgMTYuOTV6bTI2Ni4wNi0xOTguNTFMNDE2IDIyNHYyODhsMTM5Ljg4LTU1Ljk1QTMxLjk5NiAzMS45OTYgMCAwIDAgNTc2IDQyNi4zNFYxNzYuMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIl1cbn07XG52YXIgZmFNYXBNYXJrZWRBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFwLW1hcmtlZC1hbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1YTBcIiwgXCJNMjg4IDBjLTY5LjU5IDAtMTI2IDU2LjQxLTEyNiAxMjYgMCA1Ni4yNiA4Mi4zNSAxNTguOCAxMTMuOSAxOTYuMDIgNi4zOSA3LjU0IDE3LjgyIDcuNTQgMjQuMiAwQzMzMS42NSAyODQuOCA0MTQgMTgyLjI2IDQxNCAxMjYgNDE0IDU2LjQxIDM1Ny41OSAwIDI4OCAwem0wIDE2OGMtMjMuMiAwLTQyLTE4LjgtNDItNDJzMTguOC00MiA0Mi00MiA0MiAxOC44IDQyIDQyLTE4LjggNDItNDIgNDJ6TTIwLjEyIDIxNS45NUEzMi4wMDYgMzIuMDA2IDAgMCAwIDAgMjQ1LjY2djI1MC4zMmMwIDExLjMyIDExLjQzIDE5LjA2IDIxLjk0IDE0Ljg2TDE2MCA0NDhWMjE0LjkyYy04Ljg0LTE1Ljk4LTE2LjA3LTMxLjU0LTIxLjI1LTQ2LjQyTDIwLjEyIDIxNS45NXpNMjg4IDM1OS42N2MtMTQuMDcgMC0yNy4zOC02LjE4LTM2LjUxLTE2Ljk2LTE5LjY2LTIzLjItNDAuNTctNDkuNjItNTkuNDktNzYuNzJ2MTgybDE5MiA2NFYyNjZjLTE4LjkyIDI3LjA5LTM5LjgyIDUzLjUyLTU5LjQ5IDc2LjcyLTkuMTMgMTAuNzctMjIuNDQgMTYuOTUtMzYuNTEgMTYuOTV6bTI2Ni4wNi0xOTguNTFMNDE2IDIyNHYyODhsMTM5Ljg4LTU1Ljk1QTMxLjk5NiAzMS45OTYgMCAwIDAgNTc2IDQyNi4zNFYxNzYuMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIl1cbn07XG52YXIgZmFNYXBNYXJrZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFwLW1hcmtlcicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjA0MVwiLCBcIk0xNzIuMjY4IDUwMS42N0MyNi45NyAyOTEuMDMxIDAgMjY5LjQxMyAwIDE5MiAwIDg1Ljk2MSA4NS45NjEgMCAxOTIgMHMxOTIgODUuOTYxIDE5MiAxOTJjMCA3Ny40MTMtMjYuOTcgOTkuMDMxLTE3Mi4yNjggMzA5LjY3LTkuNTM1IDEzLjc3NC0yOS45MyAxMy43NzMtMzkuNDY0IDB6XCJdXG59O1xudmFyIGZhTWFwTWFya2VyQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcC1tYXJrZXItYWx0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmM2M1XCIsIFwiTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpNMTkyIDI3MmM0NC4xODMgMCA4MC0zNS44MTcgODAtODBzLTM1LjgxNy04MC04MC04MC04MCAzNS44MTctODAgODAgMzUuODE3IDgwIDgwIDgwelwiXVxufTtcbnZhciBmYU1hcFBpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXAtcGluJyxcbiAgaWNvbjogWzI4OCwgNTEyLCBbXSwgXCJmMjc2XCIsIFwiTTExMiAzMTYuOTR2MTU2LjY5bDIyLjAyIDMzLjAyYzQuNzUgNy4xMiAxNS4yMiA3LjEyIDE5Ljk3IDBMMTc2IDQ3My42M1YzMTYuOTRjLTEwLjM5IDEuOTItMjEuMDYgMy4wNi0zMiAzLjA2cy0yMS42MS0xLjE0LTMyLTMuMDZ6TTE0NCAwQzY0LjQ3IDAgMCA2NC40NyAwIDE0NHM2NC40NyAxNDQgMTQ0IDE0NCAxNDQtNjQuNDcgMTQ0LTE0NFMyMjMuNTMgMCAxNDQgMHptMCA3NmMtMzcuNSAwLTY4IDMwLjUtNjggNjggMCA2LjYyLTUuMzggMTItMTIgMTJzLTEyLTUuMzgtMTItMTJjMC01MC43MyA0MS4yOC05MiA5Mi05MiA2LjYyIDAgMTIgNS4zOCAxMiAxMnMtNS4zOCAxMi0xMiAxMnpcIl1cbn07XG52YXIgZmFNYXBTaWducyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXAtc2lnbnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNzdcIiwgXCJNNTA3LjMxIDg0LjY5TDQ2NCA0MS4zN2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gyODhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNkg1NmMtMTMuMjUgMC0yNCAxMC43NS0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDM4NS4zN2M4LjQ5IDAgMTYuNjItMy4zNyAyMi42My05LjM3bDQzLjMxLTQzLjMxYzYuMjUtNi4yNiA2LjI1LTE2LjM4IDAtMjIuNjN6TTIyNCA0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzg0aC02NHYxMTJ6bTIzMi0yNzJIMjg4di0zMmgtNjR2MzJINzAuNjNjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMNC42OSAyNzYuNjljLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDggMzQyLjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdINDU2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjUtMTAuNzUtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhTWFya2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcmtlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVhMVwiLCBcIk05My45NSAyOTAuMDNBMzI3LjAzOCAzMjcuMDM4IDAgMCAwIC4xNyA0ODUuMTFsLS4wMy4yM2MtMS43IDE1LjI4IDExLjIxIDI4LjIgMjYuNDkgMjYuNTFhMzI3LjAyIDMyNy4wMiAwIDAgMCAxOTUuMzQtOTMuOGw3NS40LTc1LjQtMTI4LjAyLTEyOC4wMi03NS40IDc1LjR6TTQ4NS40OSAyNi41MWMtMzUuMzUtMzUuMzUtOTIuNjctMzUuMzUtMTI4LjAyIDBsLTIxLjc2IDIxLjc2LTM2LjU2LTM2LjU1Yy0xNS42Mi0xNS42Mi00MC45NS0xNS42Mi01Ni41NiAwTDEzOC40NyAxMTUuODRjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGw4Ny4xNS04Ny4xNSAxOS41OSAxOS41OUwxOTEuOTggMTkyIDMyMCAzMjAuMDJsMTY1LjQ5LTE2NS40OWMzNS4zNS0zNS4zNSAzNS4zNS05Mi42NiAwLTEyOC4wMnpcIl1cbn07XG52YXIgZmFNYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyMjJcIiwgXCJNMzcyIDY0aC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTgwLjcgODAuN2MtMjIuMi0xNC00OC41LTIyLjEtNzYuNy0yMi4xQzY0LjUgMTYwIDAgMjI0LjUgMCAzMDRzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0YzAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsODAuNy04MC43IDE2LjkgMTYuOWM3LjYgNy42IDIwLjUgMi4yIDIwLjUtOC41Vjc2YzAtNi42LTUuNC0xMi0xMi0xMnpNMTQ0IDM4NGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJdXG59O1xudmFyIGZhTWFyc0RvdWJsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJzLWRvdWJsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjIyN1wiLCBcIk0zNDAgMGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS00OC43IDQ4LjdDMTk4LjUgNzIuMSAxNzIuMiA2NCAxNDQgNjQgNjQuNSA2NCAwIDEyOC41IDAgMjA4czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NGMwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjUgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMlYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAyODhjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwem0zNTYtMTI4LjFoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktNDguNyA0OC43Yy0xOC4yLTExLjQtMzktMTguOS02MS41LTIxLjMtMi4xIDIxLjgtOC4yIDQzLjMtMTguNCA2My4zIDEuMSAwIDIuMi0uMSAzLjItLjEgNDQuMSAwIDgwIDM1LjkgODAgODBzLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MGMwLTEuMSAwLTIuMi4xLTMuMi0yMCAxMC4yLTQxLjUgMTYuNC02My4zIDE4LjRDMTY4LjQgNDU1LjYgMjI5LjYgNTEyIDMwNCA1MTJjNzkuNSAwIDE0NC02NC41IDE0NC0xNDQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w0OC43LTQ4LjcgMTYuOSAxNi45YzIuNCAyLjQgNS40IDMuNSA4LjQgMy41IDYuMiAwIDEyLjEtNC44IDEyLjEtMTJ2LTc5YzAtNi43LTUuNC0xMi4xLTEyLTEyLjF6XCJdXG59O1xudmFyIGZhTWFyc1N0cm9rZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJzLXN0cm9rZScsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjIyOVwiLCBcIk0zNzIgNjRoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktMTcuNSAxNy41LTE0LjEtMTQuMWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDIyNC41IDEzM2MtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE0LjEgMTQuMS0xOCAxOGMtMjIuMi0xNC00OC41LTIyLjEtNzYuNy0yMi4xQzY0LjUgMTYwIDAgMjI0LjUgMCAzMDRzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0YzAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsMTgtMTggMTQuMSAxNC4xYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGwyOC4zLTI4LjNjNC43LTQuNyA0LjctMTIuMyAwLTE3TDMyOS4yIDE2NGwxNy41LTE3LjUgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWNzZjLS4xLTYuNi01LjUtMTItMTIuMS0xMnpNMTQ0IDM4NGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJdXG59O1xudmFyIGZhTWFyc1N0cm9rZUggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFycy1zdHJva2UtaCcsXG4gIGljb246IFs0ODAsIDUxMiwgW10sIFwiZjIyYlwiLCBcIk00NzYuMiAyNDcuNWwtNTUuOS01NS45Yy03LjYtNy42LTIwLjUtMi4yLTIwLjUgOC41VjIyNEgzNzZ2LTIwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnYyMGgtMjcuNmMtNS44LTI1LjYtMTguNy00OS45LTM4LjYtNjkuOEMxODkuNiA5OCA5OC40IDk4IDQyLjIgMTU0LjJjLTU2LjIgNTYuMi01Ni4yIDE0Ny40IDAgMjAzLjYgNTYuMiA1Ni4yIDE0Ny40IDU2LjIgMjAzLjYgMCAxOS45LTE5LjkgMzIuOC00NC4yIDM4LjYtNjkuOEgzMTJ2MjBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjBoMjMuOXYyMy45YzAgMTAuNyAxMi45IDE2IDIwLjUgOC41bDU1LjktNTUuOWM0LjYtNC43IDQuNi0xMi4zLS4xLTE3em0tMjc1LjYgNjUuMWMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwLTMxLjItMzEuMi0zMS4yLTgxLjkgMC0xMTMuMSAzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDAgMzEuMiAzMS4xIDMxLjIgODEuOSAwIDExMy4xelwiXVxufTtcbnZhciBmYU1hcnNTdHJva2VWID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMtc3Ryb2tlLXYnLFxuICBpY29uOiBbMjg4LCA1MTIsIFtdLCBcImYyMmFcIiwgXCJNMjQ1LjggMjM0LjJjLTE5LjktMTkuOS00NC4yLTMyLjgtNjkuOC0zOC42di0yNS40aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY4MS40aDIzLjljMTAuNyAwIDE2LTEyLjkgOC41LTIwLjVMMTUyLjUgNS4xYy00LjctNC43LTEyLjMtNC43LTE3IDBMNzkuNiA2MWMtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgxMTJ2MjQuN0g5MmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgyMHYyNS40Yy0yNS42IDUuOC00OS45IDE4LjctNjkuOCAzOC42LTU2LjIgNTYuMi01Ni4yIDE0Ny40IDAgMjAzLjYgNTYuMiA1Ni4yIDE0Ny40IDU2LjIgMjAzLjYgMCA1Ni4zLTU2LjIgNTYuMy0xNDcuNCAwLTIwMy42em0tNDUuMiAxNTguNGMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwLTMxLjItMzEuMi0zMS4yLTgxLjkgMC0xMTMuMSAzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDAgMzEuMiAzMS4xIDMxLjIgODEuOSAwIDExMy4xelwiXVxufTtcbnZhciBmYU1hc2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFzaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZmYVwiLCBcIk0zMjAuNjcgNjRjLTQ0Mi42IDAtMzU3LjU3IDM4NC0xNTguNDYgMzg0IDM5LjkgMCA3Ny40Ny0yMC42OSAxMDEuNDItNTUuODZsMjUuNzMtMzcuNzljMTUuNjYtMjIuOTkgNDYuOTctMjIuOTkgNjIuNjMgMGwyNS43MyAzNy43OUM0MDEuNjYgNDI3LjMxIDQzOS4yMyA0NDggNDc5LjEzIDQ0OGMxODkuODYgMCAyOTAuNjMtMzg0LTE1OC40Ni0zODR6TTE4NCAzMDguMzZjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXptMjcyIDBjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXpcIl1cbn07XG52YXIgZmFNZWRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZWRhbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVhMlwiLCBcIk0yMjMuNzUgMTMwLjc1TDE1NC42MiAxNS41NEEzMS45OTcgMzEuOTk3IDAgMCAwIDEyNy4xOCAwSDE2LjAzQzMuMDggMC00LjUgMTQuNTcgMi45MiAyNS4xOGwxMTEuMjcgMTU4Ljk2YzI5LjcyLTI3Ljc3IDY3LjUyLTQ2LjgzIDEwOS41Ni01My4zOXpNNDk1Ljk3IDBIMzg0LjgyYy0xMS4yNCAwLTIxLjY2IDUuOS0yNy40NCAxNS41NGwtNjkuMTMgMTE1LjIxYzQyLjA0IDYuNTYgNzkuODQgMjUuNjIgMTA5LjU2IDUzLjM4TDUwOS4wOCAyNS4xOEM1MTYuNSAxNC41NyA1MDguOTIgMCA0OTUuOTcgMHpNMjU2IDE2MGMtOTcuMiAwLTE3NiA3OC44LTE3NiAxNzZzNzguOCAxNzYgMTc2IDE3NiAxNzYtNzguOCAxNzYtMTc2LTc4LjgtMTc2LTE3Ni0xNzZ6bTkyLjUyIDE1Ny4yNmwtMzcuOTMgMzYuOTYgOC45NyA1Mi4yMmMxLjYgOS4zNi04LjI2IDE2LjUxLTE2LjY1IDEyLjA5TDI1NiAzOTMuODhsLTQ2LjkgMjQuNjVjLTguNCA0LjQ1LTE4LjI1LTIuNzQtMTYuNjUtMTIuMDlsOC45Ny01Mi4yMi0zNy45My0zNi45NmMtNi44Mi02LjY0LTMuMDUtMTguMjMgNi4zNS0xOS41OWw1Mi40My03LjY0IDIzLjQzLTQ3LjUyYzIuMTEtNC4yOCA2LjE5LTYuMzkgMTAuMjgtNi4zOSA0LjExIDAgOC4yMiAyLjE0IDEwLjMzIDYuMzlsMjMuNDMgNDcuNTIgNTIuNDMgNy42NGM5LjQgMS4zNiAxMy4xNyAxMi45NSA2LjM1IDE5LjU5elwiXVxufTtcbnZhciBmYU1lZGtpdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZWRraXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwZmFcIiwgXCJNOTYgNDgwaDMyMFYxMjhoLTMyVjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMTc2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djQ4SDk2djM1MnptOTYtMzg0aDEyOHYzMkgxOTJWOTZ6bTMyMCA4MHYyNTZjMCAyNi41MS0yMS40OSA0OC00OCA0OGgtMTZWMTI4aDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh6TTY0IDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnYzNTJ6bTI4OC0yMDh2MzJjMCA4LjgzNy03LjE2MyAxNi0xNiAxNmgtNDh2NDhjMCA4LjgzNy03LjE2MyAxNi0xNiAxNmgtMzJjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZ2LTQ4aC00OGMtOC44MzcgMC0xNi03LjE2My0xNi0xNnYtMzJjMC04LjgzNyA3LjE2My0xNiAxNi0xNmg0OHYtNDhjMC04LjgzNyA3LjE2My0xNiAxNi0xNmgzMmM4LjgzNyAwIDE2IDcuMTYzIDE2IDE2djQ4aDQ4YzguODM3IDAgMTYgNy4xNjMgMTYgMTZ6XCJdXG59O1xudmFyIGZhTWVoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21laCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjExYVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTc2IDE5MkgxNTJjLTIxLjIgMC0yMS4yLTMyIDAtMzJoMTkyYzIxLjIgMCAyMS4yIDMyIDAgMzJ6bS0xNi0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYU1laEJsYW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21laC1ibGFuaycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjVhNFwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYU1laFJvbGxpbmdFeWVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21laC1yb2xsaW5nLWV5ZXMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1YTVcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODggMjI0YzAtMjQuMyAxMy43LTQ1LjIgMzMuNi01Ni0uNyAyLjYtMS42IDUuMi0xLjYgOCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMi44LS45LTUuNC0xLjYtOCAxOS45IDEwLjggMzMuNiAzMS43IDMzLjYgNTYgMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjR6bTIyNCAxNzZIMTg0Yy0yMS4yIDAtMjEuMi0zMiAwLTMyaDEyOGMyMS4yIDAgMjEuMiAzMiAwIDMyem0zMi0xMTJjLTM1LjMgMC02NC0yOC43LTY0LTY0IDAtMjQuMyAxMy43LTQ1LjIgMzMuNi01Ni0uNyAyLjYtMS42IDUuMi0xLjYgOCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMi44LS45LTUuNC0xLjYtOCAxOS45IDEwLjggMzMuNiAzMS43IDMzLjYgNTYgMCAzNS4zLTI4LjcgNjQtNjQgNjR6XCJdXG59O1xudmFyIGZhTWVtb3J5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21lbW9yeScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUzOFwiLCBcIk02NDAgMTMwLjk0Vjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djM0Ljk0YzE4LjYgNi42MSAzMiAyNC4xOSAzMiA0NS4wNnMtMTMuNCAzOC40NS0zMiA0NS4wNlYzMjBoNjQwdi05OC45NGMtMTguNi02LjYxLTMyLTI0LjE5LTMyLTQ1LjA2czEzLjQtMzguNDUgMzItNDUuMDZ6TTIyNCAyNTZoLTY0VjEyOGg2NHYxMjh6bTEyOCAwaC02NFYxMjhoNjR2MTI4em0xMjggMGgtNjRWMTI4aDY0djEyOHpNMCA0NDhoNjR2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDEyOHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoMTI4di0yNi42N2MwLTguODQgNy4xNi0xNiAxNi0xNnMxNiA3LjE2IDE2IDE2VjQ0OGgxMjh2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDY0di05Nkgwdjk2elwiXVxufTtcbnZhciBmYU1lbm9yYWggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWVub3JhaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjY3NlwiLCBcIk0xNDQgMTI4aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptOTYgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGg2NFYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTE5MiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptOTYgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGg2NFYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTgwLTMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTNjA4IDAgNjA4IDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzUxMiAwIDUxMiAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlM0MTYgMCA0MTYgMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTMzIwIDAgMzIwIDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzIyNCAwIDIyNCAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMxMjggMCAxMjggMCA5NiA0Ni4zMyA5NiA2NHMxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMzMiAwIDMyIDAgMCA0Ni4zMyAwIDY0czE0LjMzIDMyIDMyIDMyem01NDQgMTkyYzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMzUyVjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE3Nkg5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDE5MnY2NEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzUydi02NGgxOTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDR6XCJdXG59O1xudmFyIGZhTWVyY3VyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZXJjdXJ5JyxcbiAgaWNvbjogWzI4OCwgNTEyLCBbXSwgXCJmMjIzXCIsIFwiTTI4OCAyMDhjMC00NC4yLTE5LjktODMuNy01MS4yLTExMC4xIDIuNS0xLjggNC45LTMuOCA3LjItNS44IDI0LjctMjEuMiAzOS44LTQ4LjggNDMuMi03OC44LjktNy4xLTQuNy0xMy4zLTExLjktMTMuM2gtNDAuNUMyMjkgMCAyMjQuMSA0LjEgMjIzIDkuOGMtMi40IDEyLjUtOS42IDI0LjMtMjAuNyAzMy44QzE4NyA1Ni44IDE2Ni4zIDY0IDE0NCA2NHMtNDMtNy4yLTU4LjQtMjAuNEM3NC41IDM0LjEgNjcuNCAyMi4zIDY0LjkgOS44IDYzLjggNC4xIDU4LjkgMCA1My4yIDBIMTIuN0M1LjUgMC0uMSA2LjIuOCAxMy4zIDQuMiA0My40IDE5LjIgNzEgNDQgOTIuMmMyLjMgMiA0LjcgMy45IDcuMiA1LjhDMTkuOSAxMjQuMyAwIDE2My44IDAgMjA4YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0MDBINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHpcIl1cbn07XG52YXIgZmFNZXRlb3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWV0ZW9yJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzUzXCIsIFwiTTUxMS4zMjgsMjAuODAyN2MtMTEuNjA3NTksMzguNzAyNjQtMzQuMzA3MjQsMTExLjcwMTczLTYxLjMwMzExLDE4Ny43MDA3Nyw2Ljk5ODkzLDIuMDkzNzIsMTMuNDA0Miw0LDE4LjYwNjUzLDUuNTkzNjhhMTYuMDYxNTgsMTYuMDYxNTgsMCwwLDEsOS40OTg1NCwyMi45MDZjLTIyLjEwNiw0Mi4yOTYzNS04Mi42OTA0NywxNTIuNzk1LTE0Mi40NzgxOSwyMTQuNDAzNTYtLjk5OTg0LDEuMDkzNzMtMS45OTk2OSwyLjUtMi45OTk1NCwzLjQ5OTk1QTE5NC44MzA0NiwxOTQuODMwNDYsMCwxLDEsNTcuMDg1LDE3OS40MTAwOWMuOTk5ODUtMSwyLjQwNTg4LTIsMy40OTk0Ny0zLDYxLjU5OTk0LTU5LjkwNTQ5LDE3MS45NzM2Ny0xMjAuNDA0NzMsMjE0LjM3MzQzLTE0Mi40OTgyYTE2LjA1OCwxNi4wNTgsMCwwLDEsMjIuOTAyNzQsOS40OTk4OGMxLjU5MzUxLDUuMDkzNjgsMy40OTk0NywxMS41OTM2LDUuNTkyOSwxOC41OTM1MUMzNzkuMzQ4MTgsMzUuMDA1NjUsNDUyLjQzMDc0LDEyLjMwMjgxLDQ5MS4xMjc5NC43MDkyMUExNi4xODMyNSwxNi4xODMyNSwwLDAsMSw1MTEuMzI4LDIwLjgwMjdaTTMxOS45NTEsMzIwLjAwMjA3QTEyNy45ODA0MSwxMjcuOTgwNDEsMCwxLDAsMTkxLjk3MDYxLDQ0OC4wMDA0NiwxMjcuOTc1NzMsMTI3Ljk3NTczLDAsMCwwLDMxOS45NTEsMzIwLjAwMjA3Wm0tMTI3Ljk4MDQxLTMxLjk5OTZhMzEuOTk1MSwzMS45OTUxLDAsMSwxLTMxLjk5NTEtMzEuOTk5NkEzMS45NTksMzEuOTU5LDAsMCwxLDE5MS45NzA2MSwyODguMDAyNDdabTMxLjk5NTEsNzkuOTk5YTE1Ljk5NzU1LDE1Ljk5NzU1LDAsMSwxLTE1Ljk5NzU1LTE1Ljk5OThBMTYuMDQ5NzUsMTYuMDQ5NzUsMCwwLDEsMjIzLjk2NTcxLDM2OC4wMDE0N1pcIl1cbn07XG52YXIgZmFNaWNyb2NoaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9jaGlwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmRiXCIsIFwiTTQxNiA0OHY0MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEgxNDRjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWNDhjMC0yNi41MSAyMS40OS00OCA0OC00OGgyMjRjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptOTYgNTh2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MlY4OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnpNMzAgMzc2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6bTAtOTZoNDJ2NDhIMzBhNiA2IDAgMCAxLTYtNnYtNkg2YTYgNiAwIDAgMS02LTZ2LTEyYTYgNiAwIDAgMSA2LTZoMTh2LTZhNiA2IDAgMCAxIDYtNnptMC05Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02em0wLTk2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6XCJdXG59O1xudmFyIGZhTWljcm9waG9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtaWNyb3Bob25lJyxcbiAgaWNvbjogWzM1MiwgNTEyLCBbXSwgXCJmMTMwXCIsIFwiTTE3NiAzNTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlY5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2UzgwIDQyLjk4IDgwIDk2djE2MGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2em0xNjAtMTYwaC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCA3NC44LTY0LjQ5IDEzNC44Mi0xNDAuNzkgMTI3LjM4Qzk2LjcxIDM3Ni44OSA0OCAzMTcuMTEgNDggMjUwLjNWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0MC4xNmMwIDg5LjY0IDYzLjk3IDE2OS41NSAxNTIgMTgxLjY5VjQ2NEg5NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNTZ2LTMzLjc3QzI4NS43MSA0MTguNDcgMzUyIDM0NC45IDM1MiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYU1pY3JvcGhvbmVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZS1hbHQnLFxuICBpY29uOiBbMzUyLCA1MTIsIFtdLCBcImYzYzlcIiwgXCJNMzM2IDE5MmgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4YzAgNzQuOC02NC40OSAxMzQuODItMTQwLjc5IDEyNy4zOEM5Ni43MSAzNzYuODkgNDggMzE3LjExIDQ4IDI1MC4zVjIwOGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDAuMTZjMCA4OS42NCA2My45NyAxNjkuNTUgMTUyIDE4MS42OVY0NjRIOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTU2di0zMy43N0MyODUuNzEgNDE4LjQ3IDM1MiAzNDQuOSAzNTIgMjU2di00OGMwLTguODQtNy4xNi0xNi0xNi0xNnpNMTc2IDM1MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2aC04NS4zM2MtNS44OSAwLTEwLjY3LTMuNTgtMTAuNjctOHYtMTZjMC00LjQyIDQuNzgtOCAxMC42Ny04SDI3MnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThIMjcydi0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEgyNzJjMC01My4wMi00Mi45OC05Ni05Ni05NlM4MCA0Mi45OCA4MCA5NnYxNjBjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnpcIl1cbn07XG52YXIgZmFNaWNyb3Bob25lQWx0U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZS1hbHQtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MzlcIiwgXCJNNjMzLjgyIDQ1OC4xTDQ3Ni4yNiAzMzYuMzNDNDg4Ljc0IDMxMi4yMSA0OTYgMjg0Ljk4IDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdoLTQzLjY3bC00MS40LTMySDQxNnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThINDE2di0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEg0MTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43OGMxMS43MS0xLjYyIDIzLjEtNC4yOCAzMy45Ni04LjA4bC01MC40LTM4Ljk2Yy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFNaWNyb3Bob25lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjEzMVwiLCBcIk02MzMuODIgNDU4LjFsLTE1Ny44LTEyMS45NkM0ODguNjEgMzEyLjEzIDQ5NiAyODUuMDEgNDk2IDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDE3LjkyLTMuOTYgMzQuOC0xMC43MiA1MC4ybC0yNi41NS0yMC41MmMzLjEtOS40IDUuMjgtMTkuMjIgNS4yOC0yOS42N1Y5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2cy05NiA0Mi45OC05NiA5NnY0NS4zNkw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNNDAwIDQ2NGgtNTZ2LTMzLjc3YzExLjY2LTEuNiAyMi44NS00LjU0IDMzLjY3LTguMzFsLTUwLjExLTM4LjczYy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFNaWNyb3Njb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pY3Jvc2NvcGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2MTBcIiwgXCJNMTYwIDMyMGgxMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyVjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjI0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ6bTMwNCAxMjhoLTEuMjlDNDkzLjI0IDQxMy45OSA1MTIgMzY5LjIgNTEyIDMyMGMwLTEwNS44OC04Ni4xMi0xOTItMTkyLTE5MnY2NGM3MC41OCAwIDEyOCA1Ny40MiAxMjggMTI4cy01Ny40MiAxMjgtMTI4IDEyOEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OCAwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTYgMC0yNi41MS0yMS40OS00OC00OC00OHptLTM2MC0zMmgyMDhjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04SDEwNGMtNC40MiAwLTggMy41OC04IDh2MTZjMCA0LjQyIDMuNTggOCA4IDh6XCJdXG59O1xudmFyIGZhTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWludXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjhcIiwgXCJNNDE2IDIwOEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYU1pbnVzQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pbnVzLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1NlwiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4ek0xMjQgMjk2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmgyNjRjNi42IDAgMTIgNS40IDEyIDEydjU2YzAgNi42LTUuNCAxMi0xMiAxMkgxMjR6XCJdXG59O1xudmFyIGZhTWludXNTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWludXMtc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTQ2XCIsIFwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTkyIDI5NmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoMjY0YzYuNiAwIDEyIDUuNCAxMiAxMnY1NmMwIDYuNi01LjQgMTItMTIgMTJIOTJ6XCJdXG59O1xudmFyIGZhTWl0dGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pdHRlbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdiNVwiLCBcIk0zNjggNDE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyMGM4LjggMCAxNi03LjIgMTYtMTZ2LTY0YzAtOC44LTcuMi0xNi0xNi0xNnptNTctMjA5LjFjLTI3LjItMjIuNi02Ny41LTE5LTkwLjEgOC4ybC0yMC45IDI1LTI5LjYtMTI4LjRjLTE4LTc3LjUtOTUuNC0xMjUuOS0xNzIuOC0xMDhDMzQuMiAyMS42LTE0LjIgOTguOSAzLjcgMTc2LjRMNTEuNiAzODRoMzA5bDcyLjUtODdjMjIuNy0yNy4yIDE5LTY3LjUtOC4xLTkwLjF6XCJdXG59O1xudmFyIGZhTW9iaWxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vYmlsZScsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjEwYlwiLCBcIk0yNzIgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDIyNGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTYwIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhTW9iaWxlQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vYmlsZS1hbHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYzY2RcIiwgXCJNMjcyIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyMjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMTItMTA4YzAgNi42LTUuNCAxMi0xMiAxMkg2MGMtNi42IDAtMTItNS40LTEyLTEyVjYwYzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjMxMnpcIl1cbn07XG52YXIgZmFNb25leUJpbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktYmlsbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjBkNlwiLCBcIk02MDggNjRIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djMyMGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDU3NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTQ4IDQwMHYtNjRjMzUuMzUgMCA2NCAyOC42NSA2NCA2NEg0OHptMC0yMjR2LTY0aDY0YzAgMzUuMzUtMjguNjUgNjQtNjQgNjR6bTI3MiAxNzZjLTQ0LjE5IDAtODAtNDIuOTktODAtOTYgMC01My4wMiAzNS44Mi05NiA4MC05NnM4MCA0Mi45OCA4MCA5NmMwIDUzLjAzLTM1LjgzIDk2LTgwIDk2em0yNzIgNDhoLTY0YzAtMzUuMzUgMjguNjUtNjQgNjQtNjR2NjR6bTAtMjI0Yy0zNS4zNSAwLTY0LTI4LjY1LTY0LTY0aDY0djY0elwiXVxufTtcbnZhciBmYU1vbmV5QmlsbEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLWFsdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjNkMVwiLCBcIk0zNTIgMjg4aC0xNnYtODhjMC00LjQyLTMuNTgtOC04LThoLTEzLjU4Yy00Ljc0IDAtOS4zNyAxLjQtMTMuMzEgNC4wM2wtMTUuMzMgMTAuMjJhNy45OTQgNy45OTQgMCAwIDAtMi4yMiAxMS4wOWw4Ljg4IDEzLjMxYTcuOTk0IDcuOTk0IDAgMCAwIDExLjA5IDIuMjJsLjQ3LS4zMVYyODhoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxNmMwIDQuNDIgMy41OCA4IDggOGg2NGM0LjQyIDAgOC0zLjU4IDgtOHYtMTZjMC00LjQyLTMuNTgtOC04LTh6TTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNDggNDAwdi02NGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0SDQ4em0wLTIyNHYtNjRoNjRjMCAzNS4zNS0yOC42NSA2NC02NCA2NHptMjcyIDE5MmMtNTMuMDIgMC05Ni01MC4xNS05Ni0xMTIgMC02MS44NiA0Mi45OC0xMTIgOTYtMTEyczk2IDUwLjE0IDk2IDExMmMwIDYxLjg3LTQzIDExMi05NiAxMTJ6bTI3MiAzMmgtNjRjMC0zNS4zNSAyOC42NS02NCA2NC02NHY2NHptMC0yMjRjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRoNjR2NjR6XCJdXG59O1xudmFyIGZhTW9uZXlCaWxsV2F2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLXdhdmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1M2FcIiwgXCJNNjIxLjE2IDU0LjQ2QzU4Mi4zNyAzOC4xOSA1NDMuNTUgMzIgNTA0Ljc1IDMyYy0xMjMuMTctLjAxLTI0Ni4zMyA2Mi4zNC0zNjkuNSA2Mi4zNC0zMC44OSAwLTYxLjc2LTMuOTItOTIuNjUtMTMuNzItMy40Ny0xLjEtNi45NS0xLjYyLTEwLjM1LTEuNjJDMTUuMDQgNzkgMCA5Mi4zMiAwIDExMC44MXYzMTcuMjZjMCAxMi42MyA3LjIzIDI0LjYgMTguODQgMjkuNDZDNTcuNjMgNDczLjgxIDk2LjQ1IDQ4MCAxMzUuMjUgNDgwYzEyMy4xNyAwIDI0Ni4zNC02Mi4zNSAzNjkuNTEtNjIuMzUgMzAuODkgMCA2MS43NiAzLjkyIDkyLjY1IDEzLjcyIDMuNDcgMS4xIDYuOTUgMS42MiAxMC4zNSAxLjYyIDE3LjIxIDAgMzIuMjUtMTMuMzIgMzIuMjUtMzEuODFWODMuOTNjLS4wMS0xMi42NC03LjI0LTI0LjYtMTguODUtMjkuNDd6TTQ4IDEzMi4yMmMyMC4xMiA1LjA0IDQxLjEyIDcuNTcgNjIuNzIgOC45M0MxMDQuODQgMTcwLjU0IDc5IDE5Mi42OSA0OCAxOTIuNjl2LTYwLjQ3em0wIDI4NXYtNDcuNzhjMzQuMzcgMCA2Mi4xOCAyNy4yNyA2My43MSA2MS40LTIyLjUzLTEuODEtNDMuNTktNi4zMS02My43MS0xMy42MnpNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6bTI3MiAyNy43OGMtMTcuNTItNC4zOS0zNS43MS02Ljg1LTU0LjMyLTguNDQgNS44Ny0yNi4wOCAyNy41LTQ1Ljg4IDU0LjMyLTQ5LjI4djU3Ljcyem0wLTIzNi4xMWMtMzAuODktMy45MS01NC44Ni0yOS43LTU1LjgxLTYxLjU1IDE5LjU0IDIuMTcgMzguMDkgNi4yMyA1NS44MSAxMi42NnY0OC44OXpcIl1cbn07XG52YXIgZmFNb25leUJpbGxXYXZlQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbmV5LWJpbGwtd2F2ZS1hbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1M2JcIiwgXCJNNjIxLjE2IDU0LjQ2QzU4Mi4zNyAzOC4xOSA1NDMuNTUgMzIgNTA0Ljc1IDMyYy0xMjMuMTctLjAxLTI0Ni4zMyA2Mi4zNC0zNjkuNSA2Mi4zNC0zMC44OSAwLTYxLjc2LTMuOTItOTIuNjUtMTMuNzItMy40Ny0xLjEtNi45NS0xLjYyLTEwLjM1LTEuNjJDMTUuMDQgNzkgMCA5Mi4zMiAwIDExMC44MXYzMTcuMjZjMCAxMi42MyA3LjIzIDI0LjYgMTguODQgMjkuNDZDNTcuNjMgNDczLjgxIDk2LjQ1IDQ4MCAxMzUuMjUgNDgwYzEyMy4xNyAwIDI0Ni4zNC02Mi4zNSAzNjkuNTEtNjIuMzUgMzAuODkgMCA2MS43NiAzLjkyIDkyLjY1IDEzLjcyIDMuNDcgMS4xIDYuOTUgMS42MiAxMC4zNSAxLjYyIDE3LjIxIDAgMzIuMjUtMTMuMzIgMzIuMjUtMzEuODFWODMuOTNjLS4wMS0xMi42NC03LjI0LTI0LjYtMTguODUtMjkuNDd6TTMyMCAzNTJjLTQ0LjE5IDAtODAtNDIuOTktODAtOTYgMC01My4wMiAzNS44Mi05NiA4MC05NnM4MCA0Mi45OCA4MCA5NmMwIDUzLjAzLTM1LjgzIDk2LTgwIDk2elwiXVxufTtcbnZhciBmYU1vbmV5Q2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1M2NcIiwgXCJNMCA0NDhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxMjhIMHYzMjB6bTQ0OC0yMDhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoOTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTAgMTIwYzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg0NTZjLTQuNDIgMC04LTMuNTgtOC04di0xNnpNNjQgMjY0YzAtNC40MiAzLjU4LTggOC04aDMwNGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2em0wIDk2YzAtNC40MiAzLjU4LTggOC04aDE3NmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2ek02MjQgMzJIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NDhoNjQwVjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYU1vbmV5Q2hlY2tBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktY2hlY2stYWx0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTNkXCIsIFwiTTYwOCAzMkgzMkMxNC4zMyAzMiAwIDQ2LjMzIDAgNjR2Mzg0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTc2IDMyNy44OFYzNDRjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTYuMjljLTExLjI5LS41OC0yMi4yNy00LjUyLTMxLjM3LTExLjM1LTMuOS0yLjkzLTQuMS04Ljc3LS41Ny0xMi4xNGwxMS43NS0xMS4yMWMyLjc3LTIuNjQgNi44OS0yLjc2IDEwLjEzLS43MyAzLjg3IDIuNDIgOC4yNiAzLjcyIDEyLjgyIDMuNzJoMjguMTFjNi41IDAgMTEuOC01LjkyIDExLjgtMTMuMTkgMC01Ljk1LTMuNjEtMTEuMTktOC43Ny0xMi43M2wtNDUtMTMuNWMtMTguNTktNS41OC0zMS41OC0yMy40Mi0zMS41OC00My4zOSAwLTI0LjUyIDE5LjA1LTQ0LjQ0IDQyLjY3LTQ1LjA3VjE1MmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNi4yOWMxMS4yOS41OCAyMi4yNyA0LjUxIDMxLjM3IDExLjM1IDMuOSAyLjkzIDQuMSA4Ljc3LjU3IDEyLjE0bC0xMS43NSAxMS4yMWMtMi43NyAyLjY0LTYuODkgMi43Ni0xMC4xMy43My0zLjg3LTIuNDMtOC4yNi0zLjcyLTEyLjgyLTMuNzJoLTI4LjExYy02LjUgMC0xMS44IDUuOTItMTEuOCAxMy4xOSAwIDUuOTUgMy42MSAxMS4xOSA4Ljc3IDEyLjczbDQ1IDEzLjVjMTguNTkgNS41OCAzMS41OCAyMy40MiAzMS41OCA0My4zOSAwIDI0LjUzLTE5LjA1IDQ0LjQ0LTQyLjY3IDQ1LjA3ek00MTYgMzEyYzAgNC40Mi0zLjU4IDgtOCA4SDI5NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNnptMTYwIDBjMCA0LjQyLTMuNTggOC04IDhoLTgwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtOTZjMCA0LjQyLTMuNTggOC04IDhIMjk2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMjcyYzQuNDIgMCA4IDMuNTggOCA4djE2elwiXVxufTtcbnZhciBmYU1vbnVtZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbnVtZW50JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNWE2XCIsIFwiTTM2OCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDM1MmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS03OC44Ni0zNDcuMjZhMzEuOTcgMzEuOTcgMCAwIDAtOS4yMS0xOS40NEwyMDMuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtNzYuNiA3Ni42MWEzMS45NyAzMS45NyAwIDAgMC05LjIxIDE5LjQ0TDY0IDQxNmgyNTZsLTMwLjg2LTMxNS4yNnpNMjQwIDMwNy4yYzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtNzAuNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGg3MC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40elwiXVxufTtcbnZhciBmYU1vb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9vbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE4NlwiLCBcIk0yODMuMjExIDUxMmM3OC45NjIgMCAxNTEuMDc5LTM1LjkyNSAxOTguODU3LTk0Ljc5MiA3LjA2OC04LjcwOC0uNjM5LTIxLjQzLTExLjU2Mi0xOS4zNS0xMjQuMjAzIDIzLjY1NC0yMzguMjYyLTcxLjU3Ni0yMzguMjYyLTE5Ni45NTQgMC03Mi4yMjIgMzguNjYyLTEzOC42MzUgMTAxLjQ5OC0xNzQuMzk0IDkuNjg2LTUuNTEyIDcuMjUtMjAuMTk3LTMuNzU2LTIyLjIzQTI1OC4xNTYgMjU4LjE1NiAwIDAgMCAyODMuMjExIDBjLTE0MS4zMDkgMC0yNTYgMTE0LjUxMS0yNTYgMjU2IDAgMTQxLjMwOSAxMTQuNTExIDI1NiAyNTYgMjU2elwiXVxufTtcbnZhciBmYU1vcnRhclBlc3RsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3J0YXItcGVzdGxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWE3XCIsIFwiTTUwMS41NCA2MC45MWMxNy4yMi0xNy4yMiAxMi41MS00Ni4yNS05LjI3LTU3LjE0YTM1LjY5NiAzNS42OTYgMCAwIDAtMzcuMzcgMy4zN0wyNTEuMDkgMTYwaDE1MS4zN2w5OS4wOC05OS4wOXpNNDk2IDE5MkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMCA4MC45OCA1MC4yIDE1MC4xMSAxMjEuMTMgMTc4LjMyLTEyLjc2IDE2Ljg3LTIxLjcyIDM2LjgtMjQuOTUgNTguNjktMS40NiA5LjkyIDYuMDQgMTguOTggMTYuMDcgMTguOThoMjIzLjVjMTAuMDMgMCAxNy41My05LjA2IDE2LjA3LTE4Ljk4LTMuMjItMjEuODktMTIuMTgtNDEuODItMjQuOTUtNTguNjlDNDI5LjggNDA2LjExIDQ4MCAzMzYuOTggNDgwIDI1NmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhTW9zcXVlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vc3F1ZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjY3OFwiLCBcIk0wIDQ4MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTYwSDB2MzIwem01NzkuMTYtMTkyYzE3Ljg2LTE3LjM5IDI4Ljg0LTM3LjM0IDI4Ljg0LTU4LjkxIDAtNTIuODYtNDEuNzktOTMuNzktODcuOTItMTIyLjktNDEuOTQtMjYuNDctODAuNjMtNTcuNzctMTExLjk2LTk2LjIyTDQwMCAwbC04LjEyIDkuOTdjLTMxLjMzIDM4LjQ1LTcwLjAxIDY5Ljc2LTExMS45NiA5Ni4yMkMyMzMuNzkgMTM1LjMgMTkyIDE3Ni4yMyAxOTIgMjI5LjA5YzAgMjEuNTcgMTAuOTggNDEuNTIgMjguODQgNTguOTFoMzU4LjMyek02MDggMzIwSDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMnYtNjRjMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMnY2NGg2NHYtNzJjMC00OCA0OC03MiA0OC03MnM0OCAyNCA0OCA3MnY3Mmg2NHYtNjRjMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMnY2NGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek02NCAwUzAgMzIgMCA5NnYzMmgxMjhWOTZjMC02NC02NC05Ni02NC05NnpcIl1cbn07XG52YXIgZmFNb3RvcmN5Y2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdG9yY3ljbGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyMWNcIiwgXCJNNTEyLjkgMTkyYy0xNC45LS4xLTI5LjEgMi4zLTQyLjQgNi45TDQzNy42IDE0NEg1MjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTQ1LjNjLTYuOCAwLTEzLjMgMi45LTE3LjggNy45bC0zNy41IDQxLjctMjIuOC0zOEMzOTIuMiA2OC40IDM4NC40IDY0IDM3NiA2NGgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoNjYuNGwxOS4yIDMySDIyNy45Yy0xNy43LTIzLjEtNDQuOS00MC05OS45LTQwSDcyLjVDNTkgMTA0IDQ3LjcgMTE1IDQ4IDEyOC41Yy4yIDEzIDEwLjkgMjMuNSAyNCAyMy41aDU2YzI0LjUgMCAzOC43IDEwLjkgNDcuOCAyNC44bC0xMS4zIDIwLjVjLTEzLTMuOS0yNi45LTUuNy00MS4zLTUuMkM1NS45IDE5NC41IDEuNiAyNDkuNiAwIDMxN2MtMS42IDcyLjEgNTYuMyAxMzEgMTI4IDEzMSA1OS42IDAgMTA5LjctNDAuOCAxMjQtOTZoODQuMmMxMy43IDAgMjQuNi0xMS40IDI0LTI1LjEtMi4xLTQ3LjEgMTcuNS05My43IDU2LjItMTI1bDEyLjUgMjAuOGMtMjcuNiAyMy43LTQ1LjEgNTguOS00NC44IDk4LjIuNSA2OS42IDU3LjIgMTI2LjUgMTI2LjggMTI3LjEgNzEuNi43IDEyOS44LTU3LjUgMTI5LjItMTI5LjEtLjctNjkuNi01Ny42LTEyNi40LTEyNy4yLTEyNi45ek0xMjggNDAwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwYzQuMiAwIDguNC4zIDEyLjUgMUw5OSAzMTYuNGMtOC44IDE2IDIuOCAzNS42IDIxIDM1LjZoODEuM2MtMTIuNCAyOC4yLTQwLjYgNDgtNzMuMyA0OHptNDYzLjktNzUuNmMtMi4yIDQwLjYtMzUgNzMuNC03NS41IDc1LjUtNDYuMSAyLjUtODQuNC0zNC4zLTg0LjQtNzkuOSAwLTIxLjQgOC40LTQwLjggMjIuMS01NS4xbDQ5LjQgODIuNGM0LjUgNy42IDE0LjQgMTAgMjIgNS41bDEzLjctOC4yYzcuNi00LjUgMTAtMTQuNCA1LjUtMjJsLTQ4LjYtODAuOWM1LjItMS4xIDEwLjUtMS42IDE1LjktMS42IDQ1LjYtLjEgODIuMyAzOC4yIDc5LjkgODQuM3pcIl1cbn07XG52YXIgZmFNb3VudGFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3VudGFpbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZmY1wiLCBcIk02MzQuOTIgNDYyLjdsLTI4OC00NDhDMzQxLjAzIDUuNTQgMzMwLjg5IDAgMzIwIDBzLTIxLjAzIDUuNTQtMjYuOTIgMTQuN2wtMjg4IDQ0OGEzMi4wMDEgMzIuMDAxIDAgMCAwLTEuMTcgMzIuNjRBMzIuMDA0IDMyLjAwNCAwIDAgMCAzMiA1MTJoNTc2YzExLjcxIDAgMjIuNDgtNi4zOSAyOC4wOS0xNi42N2EzMS45ODMgMzEuOTgzIDAgMCAwLTEuMTctMzIuNjN6TTMyMCA5MS4xOEw0MDUuMzkgMjI0SDMyMGwtNjQgNjQtMzguMDYtMzguMDZMMzIwIDkxLjE4elwiXVxufTtcbnZhciBmYU1vdXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdXNlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmOGNjXCIsIFwiTTAgMzUyYTE2MCAxNjAgMCAwIDAgMTYwIDE2MGg2NGExNjAgMTYwIDAgMCAwIDE2MC0xNjBWMjI0SDB6TTE3NiAwaC0xNkExNjAgMTYwIDAgMCAwIDAgMTYwdjMyaDE3NnptNDggMGgtMTZ2MTkyaDE3NnYtMzJBMTYwIDE2MCAwIDAgMCAyMjQgMHpcIl1cbn07XG52YXIgZmFNb3VzZVBvaW50ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW91c2UtcG9pbnRlcicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjI0NVwiLCBcIk0zMDIuMTg5IDMyOS4xMjZIMTk2LjEwNWw1NS44MzEgMTM1Ljk5M2MzLjg4OSA5LjQyOC0uNTU1IDE5Ljk5OS05LjQ0NCAyMy45OTlsLTQ5LjE2NSAyMS40MjdjLTkuMTY1IDQtMTkuNDQzLS41NzEtMjMuMzMyLTkuNzE0bC01My4wNTMtMTI5LjEzNi04Ni42NjQgODkuMTM4QzE4LjcyOSA0NzIuNzEgMCA0NjMuNTU0IDAgNDQ3Ljk3N1YxOC4yOTlDMCAxLjg5OSAxOS45MjEtNi4wOTYgMzAuMjc3IDUuNDQzbDI4NC40MTIgMjkyLjU0MmMxMS40NzIgMTEuMTc5IDMuMDA3IDMxLjE0MS0xMi41IDMxLjE0MXpcIl1cbn07XG52YXIgZmFNdWdIb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbXVnLWhvdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdiNlwiLCBcIk0xMjcuMSAxNDYuNWMxLjMgNy43IDggMTMuNSAxNiAxMy41aDE2LjVjOS44IDAgMTcuNi04LjUgMTYuMy0xOC0zLjgtMjguMi0xNi40LTU0LjItMzYuNi03NC43LTE0LjQtMTQuNy0yMy42LTMzLjMtMjYuNC01My41QzExMS44IDUuOSAxMDUgMCA5Ni44IDBIODAuNEM3MC42IDAgNjMgOC41IDY0LjEgMThjMy45IDMxLjkgMTggNjEuMyA0MC42IDg0LjQgMTIgMTIuMiAxOS43IDI3LjUgMjIuNCA0NC4xem0xMTIgMGMxLjMgNy43IDggMTMuNSAxNiAxMy41aDE2LjVjOS44IDAgMTcuNi04LjUgMTYuMy0xOC0zLjgtMjguMi0xNi40LTU0LjItMzYuNi03NC43LTE0LjQtMTQuNy0yMy42LTMzLjMtMjYuNC01My41QzIyMy44IDUuOSAyMTcgMCAyMDguOCAwaC0xNi40Yy05LjggMC0xNy41IDguNS0xNi4zIDE4IDMuOSAzMS45IDE4IDYxLjMgNDAuNiA4NC40IDEyIDEyLjIgMTkuNyAyNy41IDIyLjQgNDQuMXpNNDAwIDE5MkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTkyYzAgNTMgNDMgOTYgOTYgOTZoMTkyYzUzIDAgOTYtNDMgOTYtOTZoMTZjNjEuOCAwIDExMi01MC4yIDExMi0xMTJzLTUwLjItMTEyLTExMi0xMTJ6bTAgMTYwaC0xNnYtOTZoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6XCJdXG59O1xudmFyIGZhTXVzaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbXVzaWMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMDFcIiwgXCJNNDcwLjM4IDEuNTFMMTUwLjQxIDk2QTMyIDMyIDAgMCAwIDEyOCAxMjYuNTF2MjYxLjQxQTEzOSAxMzkgMCAwIDAgOTYgMzg0Yy01MyAwLTk2IDI4LjY2LTk2IDY0czQzIDY0IDk2IDY0IDk2LTI4LjY2IDk2LTY0VjIxNC4zMmwyNTYtNzV2MTg0LjYxYTEzOC40IDEzOC40IDAgMCAwLTMyLTMuOTNjLTUzIDAtOTYgMjguNjYtOTYgNjRzNDMgNjQgOTYgNjQgOTYtMjguNjUgOTYtNjRWMzJhMzIgMzIgMCAwIDAtNDEuNjItMzAuNDl6XCJdXG59O1xudmFyIGZhTmV0d29ya1dpcmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ25ldHdvcmstd2lyZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2ZmZcIiwgXCJNNjQwIDI2NHYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzQ0di00MGg3MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMjI0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDcydjQwSDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxMDR2NDBINjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTU2di00MGgzMDR2NDBoLTU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01NnYtNDBoMTA0YzguODQgMCAxNi03LjE2IDE2LTE2ek0yNTYgMTI4VjY0aDEyOHY2NEgyNTZ6bS02NCAzMjBIOTZ2LTY0aDk2djY0em0zNTIgMGgtOTZ2LTY0aDk2djY0elwiXVxufTtcbnZhciBmYU5ldXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICduZXV0ZXInLFxuICBpY29uOiBbMjg4LCA1MTIsIFtdLCBcImYyMmNcIiwgXCJNMjg4IDE3NmMwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NFMwIDk2LjUgMCAxNzZjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQ2OGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyVjMxNi40YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0xNDQgODBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwiXVxufTtcbnZhciBmYU5ld3NwYXBlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICduZXdzcGFwZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxZWFcIiwgXCJNNTUyIDY0SDg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2OEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djI3MmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoNDcyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODhjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek01NiA0MDBhOCA4IDAgMCAxLTgtOFYxNDRoMTZ2MjQ4YTggOCAwIDAgMS04IDh6bTIzNi0xNkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptLTIwOC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMzYwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpcIl1cbn07XG52YXIgZmFOb3RFcXVhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdub3QtZXF1YWwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1M2VcIiwgXCJNNDE2IDIwOGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0yMy44OGw1MS44Ny02Ni44MWM1LjM3LTcuMDIgNC4wNC0xNy4wNi0yLjk3LTIyLjQzTDQxNS42MSAzLjNjLTcuMDItNS4zOC0xNy4wNi00LjA0LTIyLjQ0IDIuOTdMMzExLjA5IDExMkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDIwNC41NmwtNzQuNTMgOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NS40OWwtNTEuODcgNjYuODFjLTUuMzcgNy4wMS00LjA0IDE3LjA1IDIuOTcgMjIuNDNMNjQgNTA4LjdjNy4wMiA1LjM4IDE3LjA2IDQuMDQgMjIuNDMtMi45N0wxNjguNTIgNDAwSDQxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDI0My4wNWw3NC41My05Nkg0MTZ6XCJdXG59O1xudmFyIGZhTm90ZXNNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ25vdGVzLW1lZGljYWwnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY0ODFcIiwgXCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptOTYgMzA0YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHptMC0xOTJjMCA0LjQtMy42IDgtOCA4SDEwNGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTc2YzQuNCAwIDggMy42IDggOHYxNnpcIl1cbn07XG52YXIgZmFPYmplY3RHcm91cCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdvYmplY3QtZ3JvdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNDdcIiwgXCJNNDgwIDEyOFY5NmgyMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwSDY0VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIwdjMyMEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTIwaDM4NHYyMGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTIwVjEyOHpNOTYgMjc2VjE0MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE2OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjEzNmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDEwOGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMzIwIDk2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjM2Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi01Mmg3MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTcyaDg0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTM2elwiXVxufTtcbnZhciBmYU9iamVjdFVuZ3JvdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb2JqZWN0LXVuZ3JvdXAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyNDhcIiwgXCJNNjQgMzIwdjI2YTYgNiAwIDAgMS02IDZINmE2IDYgMCAwIDEtNi02di01MmE2IDYgMCAwIDEgNi02aDI2Vjk2SDZhNiA2IDAgMCAxLTYtNlYzOGE2IDYgMCAwIDEgNi02aDUyYTYgNiAwIDAgMSA2IDZ2MjZoMjg4VjM4YTYgNiAwIDAgMSA2LTZoNTJhNiA2IDAgMCAxIDYgNnY1MmE2IDYgMCAwIDEtNiA2aC0yNnYxOTJoMjZhNiA2IDAgMCAxIDYgNnY1MmE2IDYgMCAwIDEtNiA2aC01MmE2IDYgMCAwIDEtNi02di0yNkg2NHptNDgwLTY0di0zMmgyNmE2IDYgMCAwIDAgNi02di01MmE2IDYgMCAwIDAtNi02aC01MmE2IDYgMCAwIDAtNiA2djI2SDQwOHY3Mmg4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY2NGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTY0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LThIMTkydjcyaC0yNmE2IDYgMCAwIDAtNiA2djUyYTYgNiAwIDAgMCA2IDZoNTJhNiA2IDAgMCAwIDYtNnYtMjZoMjg4djI2YTYgNiAwIDAgMCA2IDZoNTJhNiA2IDAgMCAwIDYtNnYtNTJhNiA2IDAgMCAwLTYtNmgtMjZWMjU2elwiXVxufTtcbnZhciBmYU9pbENhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdvaWwtY2FuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjEzXCIsIFwiTTYyOS44IDE2MC4zMUw0MTYgMjI0bC01MC40OS0yNS4yNGE2NC4wNyA2NC4wNyAwIDAgMC0yOC42Mi02Ljc2SDI4MHYtNDhoNTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNTZ2NDhoLTU2TDM3LjcyIDE2Ni44NmEzMS45IDMxLjkgMCAwIDAtNS43OS0uNTNDMTQuNjcgMTY2LjMzIDAgMTgwLjM2IDAgMTk4LjM0djk0Ljk1YzAgMTUuNDYgMTEuMDYgMjguNzIgMjYuMjggMzEuNDhMOTYgMzM3LjQ2VjM4NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI3NC42M2M4LjU1IDAgMTYuNzUtMy40MiAyMi43Ni05LjUxbDIxMi4yNi0yMTQuNzVjMS41LTEuNSAyLjM0LTMuNTQgMi4zNC01LjY2VjE2OGMuMDEtNS4zMS01LjA4LTkuMTUtMTAuMTktNy42OXpNOTYgMjg4LjY3bC00OC04Ljczdi02Mi40M2w0OCA4LjczdjYyLjQzem00NTMuMzMgODQuNjZjMCAyMy41NiAxOS4xIDQyLjY3IDQyLjY3IDQyLjY3czQyLjY3LTE5LjEgNDIuNjctNDIuNjdTNTkyIDI4OCA1OTIgMjg4cy00Mi42NyA2MS43Ny00Mi42NyA4NS4zM3pcIl1cbn07XG52YXIgZmFPbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdvbScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY3OVwiLCBcIk0zNjAuNiA2MC45NGExMC40MyAxMC40MyAwIDAgMCAxNC43NiAwbDIxLjU3LTIxLjU2YTEwLjQzIDEwLjQzIDAgMCAwIDAtMTQuNzZMMzc1LjM1IDMuMDZjLTQuMDgtNC4wNy0xMC42OC00LjA3LTE0Ljc2IDBsLTIxLjU3IDIxLjU2YTEwLjQzIDEwLjQzIDAgMCAwIDAgMTQuNzZsMjEuNTggMjEuNTZ6TTQxMi4xMSAxOTJjLTI2LjY5IDAtNTEuNzcgMTAuMzktNzAuNjQgMjkuMjVsLTI0LjI1IDI0LjI1Yy02Ljc4IDYuNzctMTUuNzggMTAuNS0yNS4zOCAxMC41SDI0NWMxMC41NC0yMi4xIDE0LjE3LTQ4LjExIDcuNzMtNzUuMjMtMTAuMS00Mi41NS00Ni4zNi03Ni4xMS04OS41Mi04My4xOS0zNi4xNS01LjkzLTcwLjkgNS4wNC05Ni4wMSAyOC43OC03LjM2IDYuOTYtNi45NyAxOC44NSAxLjEyIDI0LjkzbDI2LjE1IDE5LjYzYzUuNzIgNC4zIDEzLjY2IDQuMzIgMTkuMi0uMjEgOC40NS02LjkgMTkuMDItMTAuNzEgMzAuMjctMTAuNzEgMjYuNDcgMCA0OC4wMSAyMS41MyA0OC4wMSA0OHMtMjEuNTQgNDgtNDguMDEgNDhoLTMxLjljLTExLjk2IDAtMTkuNzQgMTIuNTgtMTQuMzkgMjMuMjhsMTYuMDkgMzIuMTdjMi41MyA1LjA2IDcuNiA4LjEgMTMuMTcgOC41NWgzMy4wM2MzNS4zIDAgNjQuMDEgMjguNyA2NC4wMSA2NHMtMjguNzEgNjQtNjQuMDEgNjRjLTk2LjAyIDAtMTIyLjM1LTU0LjAyLTE0NS4xNS05Mi4wMy00LjUzLTcuNTUtMTQuNzctMy41OC0xNC43OSA1LjIyQy0uMDkgNDE2IDQxLjEzIDUxMiAxNTkuOTQgNTEyYzcwLjU5IDAgMTI4LjAyLTU3LjQyIDEyOC4wMi0xMjggMC0yMy40Mi02Ljc4LTQ1LjEtMTcuODEtNjRoMjEuNjljMjYuNjkgMCA1MS43Ny0xMC4zOSA3MC42NC0yOS4yNWwyNC4yNS0yNC4yNWM2Ljc4LTYuNzcgMTUuNzgtMTAuNSAyNS4zOC0xMC41IDE5Ljc4IDAgMzUuODggMTYuMDkgMzUuODggMzUuODhWMzkyYzAgMTMuMjMtMTguNzcgMjQtMzIuMDEgMjQtMzkuNCAwLTY2LjY3LTI0LjI0LTgxLjgyLTQyLjg5LTQuNzctNS44Ny0xNC4yLTIuNTQtMTQuMiA1LjAyVjQxNnMwIDY0IDk2LjAyIDY0YzQ4LjU0IDAgOTYuMDItMzkuNDcgOTYuMDItODhWMjkxLjg4YzAtNTUuMDgtNDQuOC05OS44OC05OS44OS05OS44OHptNDIuMTgtMTI0LjczYy04NS41NSA2NS4xMi0xNjkuMDUgMi43NS0xNzIuNTguMDUtNi4wMi00LjYyLTE0LjQ0LTQuMzgtMjAuMTQuNTUtNS43NCA0LjkyLTcuMjcgMTMuMTctMy42NiAxOS44IDEuNjEgMi45NSA0MC4zNyA3Mi4zNCAxMTguOCA3Mi4zNCA3OS45MiAwIDk4Ljc4LTMxLjM2IDEwMS43NS0zNy42NiAxLjAyLTIuMTIgMS41My00LjQ3IDEuNTMtNi44M1Y4MGMwLTEzLjIyLTE1LjE0LTIwLjY5LTI1LjctMTIuNzN6XCJdXG59O1xudmFyIGZhT3R0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb3R0ZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MDBcIiwgXCJNNjA4IDMyaC0zMmwtMTMuMjUtMTMuMjVBNjMuOTcgNjMuOTcgMCAwIDAgNTE3LjQ5IDBINDk3Yy0xMS4xNCAwLTIyLjA4IDIuOTEtMzEuNzUgOC40M0wzMTIgOTZoLTU2QzE0OS45NiA5NiA2NCAxODEuOTYgNjQgMjg4djEuNjFjMCAzMi43NS0xNiA2Mi4xNC0zOS41NiA4NC44OS0xOC4xOSAxNy41OC0yOC4xIDQzLjY4LTIzLjE5IDcxLjggNi43NiAzOC44IDQyLjkgNjUuNyA4Mi4yOCA2NS43SDE5MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMi0zMi0zMkg4MGMtOC44MyAwLTE2LTcuMTctMTYtMTZzNy4xNy0xNiAxNi0xNmgyMjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTY0bDE0OS40OS04MC41TDQ0OCA0MTZoODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTI4LjIybC01NS4xMS0xMTAuMjFMNTIxLjE0IDE5Mkg1NDRjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tOTYgMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZzLTcuMTYgMTYtMTYgMTYtMTYtNy4xNi0xNi0xNiA3LjE2LTE2IDE2LTE2em0zMiA5NmgtMzQuOTZMNDA3LjIgMTk4Ljg0bC0xMy43Ny0yNy41NUw1MTIgMTEyaDc3LjA1Yy02LjYyIDE4LjU4LTI0LjIyIDMyLTQ1LjA1IDMyelwiXVxufTtcbnZhciBmYU91dGRlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb3V0ZGVudCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzYlwiLCBcIk0xMDAuNjkgMzYzLjI5YzEwIDEwIDI3LjMxIDIuOTMgMjcuMzEtMTEuMzFWMTYwYzAtMTQuMzItMTcuMzMtMjEuMzEtMjcuMzEtMTEuMzFsLTk2IDk2YTE2IDE2IDAgMCAwIDAgMjIuNjJ6TTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDM1MmgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHptMC0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAxNzIuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDIyNGgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDIxMS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDE2MHpNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYVBhZ2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhZ2VyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmODE1XCIsIFwiTTQ0OCA2NEg2NGE2NCA2NCAwIDAgMC02NCA2NHYyNTZhNjQgNjQgMCAwIDAgNjQgNjRoMzg0YTY0IDY0IDAgMCAwIDY0LTY0VjEyOGE2NCA2NCAwIDAgMC02NC02NHpNMTYwIDM2OEg4MGExNiAxNiAwIDAgMS0xNi0xNnYtMTZhMTYgMTYgMCAwIDEgMTYtMTZoODB6bTEyOC0xNmExNiAxNiAwIDAgMS0xNiAxNmgtODB2LTQ4aDgwYTE2IDE2IDAgMCAxIDE2IDE2em0xNjAtMTI4YTMyIDMyIDAgMCAxLTMyIDMySDk2YTMyIDMyIDAgMCAxLTMyLTMydi02NGEzMiAzMiAwIDAgMSAzMi0zMmgzMjBhMzIgMzIgMCAwIDEgMzIgMzJ6XCJdXG59O1xudmFyIGZhUGFpbnRCcnVzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYWludC1icnVzaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFmY1wiLCBcIk0xNjcuMDIgMzA5LjM0Yy00MC4xMiAyLjU4LTc2LjUzIDE3Ljg2LTk3LjE5IDcyLjMtMi4zNSA2LjIxLTggOS45OC0xNC41OSA5Ljk4LTExLjExIDAtNDUuNDYtMjcuNjctNTUuMjUtMzQuMzVDMCA0MzkuNjIgMzcuOTMgNTEyIDEyOCA1MTJjNzUuODYgMCAxMjgtNDMuNzcgMTI4LTEyMC4xOSAwLTMuMTEtLjY1LTYuMDgtLjk3LTkuMTNsLTg4LjAxLTczLjM0ek00NTcuODkgMGMtMTUuMTYgMC0yOS4zNyA2LjcxLTQwLjIxIDE2LjQ1QzIxMy4yNyAxOTkuMDUgMTkyIDIwMy4zNCAxOTIgMjU3LjA5YzAgMTMuNyAzLjI1IDI2Ljc2IDguNzMgMzguN2w2My44MiA1My4xOGM3LjIxIDEuOCAxNC42NCAzLjAzIDIyLjM5IDMuMDMgNjIuMTEgMCA5OC4xMS00NS40NyAyMTEuMTYtMjU2LjQ2IDcuMzgtMTQuMzUgMTMuOS0yOS44NSAxMy45LTQ1Ljk5QzUxMiAyMC42NCA0ODYgMCA0NTcuODkgMHpcIl1cbn07XG52YXIgZmFQYWludFJvbGxlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYWludC1yb2xsZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YWFcIiwgXCJNNDE2IDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzUyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bTMyLTY0djEyOGMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDI1NmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMydi0zMmgxNjBjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NnYtNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHpcIl1cbn07XG52YXIgZmFQYWxldHRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhbGV0dGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1M2ZcIiwgXCJNMjA0LjMgNUMxMDQuOSAyNC40IDI0LjggMTA0LjMgNS4yIDIwMy40Yy0zNyAxODcgMTMxLjcgMzI2LjQgMjU4LjggMzA2LjcgNDEuMi02LjQgNjEuNC01NC42IDQyLjUtOTEuNy0yMy4xLTQ1LjQgOS45LTk4LjQgNjAuOS05OC40aDc5LjdjMzUuOCAwIDY0LjgtMjkuNiA2NC45LTY1LjNDNTExLjUgOTcuMSAzNjguMS0yNi45IDIwNC4zIDV6TTk2IDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTMyLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyOC02NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyOCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhUGFsbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhbGxldCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ4MlwiLCBcIk0xNDQgMjU2aDM1MmM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDM4NHYxMjhsLTY0LTMyLTY0IDMyVjBIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ2MjI0YzAgOC44IDcuMiAxNiAxNiAxNnptNDgwIDEyOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY2NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZoLTQ4di02NGg0OHptLTMzNiA2NEgxMjh2LTY0aDE2MHY2NHptMjI0IDBIMzUydi02NGgxNjB2NjR6XCJdXG59O1xudmFyIGZhUGFwZXJQbGFuZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXBlci1wbGFuZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFkOFwiLCBcIk00NzYgMy4yTDEyLjUgMjcwLjZjLTE4LjEgMTAuNC0xNS44IDM1LjYgMi4yIDQzLjJMMTIxIDM1OC40bDI4Ny4zLTI1My4yYzUuNS00LjkgMTMuMyAyLjYgOC42IDguM0wxNzYgNDA3djgwLjVjMCAyMy42IDI4LjUgMzIuOSA0Mi41IDE1LjhMMjgyIDQyNmwxMjQuNiA1Mi4yYzE0LjIgNiAzMC40LTIuOSAzMy0xOC4ybDcyLTQzMkM1MTUgNy44IDQ5My4zLTYuOCA0NzYgMy4yelwiXVxufTtcbnZhciBmYVBhcGVyY2xpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXBlcmNsaXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwYzZcIiwgXCJNNDMuMjQ2IDQ2Ni4xNDJjLTU4LjQzLTYwLjI4OS01Ny4zNDEtMTU3LjUxMSAxLjM4Ni0yMTcuNTgxTDI1NC4zOTIgMzRjNDQuMzE2LTQ1LjMzMiAxMTYuMzUxLTQ1LjMzNiAxNjAuNjcxIDAgNDMuODkgNDQuODk0IDQzLjk0MyAxMTcuMzI5IDAgMTYyLjI3NkwyMzIuMjE0IDM4My4xMjhjLTI5Ljg1NSAzMC41MzctNzguNjMzIDMwLjExMS0xMDcuOTgyLS45OTgtMjguMjc1LTI5Ljk3LTI3LjM2OC03Ny40NzMgMS40NTItMTA2Ljk1M2wxNDMuNzQzLTE0Ni44MzVjNi4xODItNi4zMTQgMTYuMzEyLTYuNDIyIDIyLjYyNi0uMjQxbDIyLjg2MSAyMi4zNzljNi4zMTUgNi4xODIgNi40MjIgMTYuMzEyLjI0MSAyMi42MjZMMTcxLjQyNyAzMTkuOTI3Yy00LjkzMiA1LjA0NS01LjIzNiAxMy40MjgtLjY0OCAxOC4yOTIgNC4zNzIgNC42MzQgMTEuMjQ1IDQuNzExIDE1LjY4OC4xNjVsMTgyLjg0OS0xODYuODUxYzE5LjYxMy0yMC4wNjIgMTkuNjEzLTUyLjcyNS0uMDExLTcyLjc5OC0xOS4xODktMTkuNjI3LTQ5Ljk1Ny0xOS42MzctNjkuMTU0IDBMOTAuMzkgMjkzLjI5NWMtMzQuNzYzIDM1LjU2LTM1LjI5OSA5My4xMi0xLjE5MSAxMjguMzEzIDM0LjAxIDM1LjA5MyA4OC45ODUgMzUuMTM3IDEyMy4wNTguMjg2bDE3Mi4wNi0xNzUuOTk5YzYuMTc3LTYuMzE5IDE2LjMwNy02LjQzMyAyMi42MjYtLjI1NmwyMi44NzcgMjIuMzY0YzYuMzE5IDYuMTc3IDYuNDM0IDE2LjMwNy4yNTYgMjIuNjI2bC0xNzIuMDYgMTc1Ljk5OGMtNTkuNTc2IDYwLjkzOC0xNTUuOTQzIDYwLjIxNi0yMTQuNzctLjQ4NXpcIl1cbn07XG52YXIgZmFQYXJhY2h1dGVCb3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFyYWNodXRlLWJveCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjRjZFwiLCBcIk01MTEuOSAxNzVjLTkuMS03NS42LTc4LjQtMTMyLjQtMTU4LjMtMTU4LjdDMzkwIDU1LjcgNDE2IDExNi45IDQxNiAxOTJoMjguMUwzMjcuNSAzMjEuNWMtMi41LS42LTQuOC0xLjUtNy41LTEuNWgtNDhWMTkyaDExMkMzODQgNzYuOCAzMTUuMSAwIDI1NiAwUzEyOCA3Ni44IDEyOCAxOTJoMTEydjEyOGgtNDhjLTIuNyAwLTUgLjktNy41IDEuNUw2Ny45IDE5Mkg5NmMwLTc1LjEgMjYtMTM2LjMgNjIuNC0xNzUuN0M3OC41IDQyLjcgOS4yIDk5LjUuMSAxNzVjLTEuMSA5LjEgNi44IDE3IDE2IDE3aDguN2wxMzYuNyAxNTEuOWMtLjcgMi42LTEuNiA1LjItMS42IDguMXYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTI4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTIuOS0uOS01LjQtMS42LTguMUw0ODcuMSAxOTJoOC43YzkuMyAwIDE3LjItNy44IDE2LjEtMTd6XCJdXG59O1xudmFyIGZhUGFyYWdyYXBoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcmFncmFwaCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFkZFwiLCBcIk00NDggNDh2MzJhMTYgMTYgMCAwIDEtMTYgMTZoLTQ4djM2OGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWOTZoLTMydjM2OGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzUyaC0zMmExNjAgMTYwIDAgMCAxIDAtMzIwaDI0MGExNiAxNiAwIDAgMSAxNiAxNnpcIl1cbn07XG52YXIgZmFQYXJraW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcmtpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1NDBcIiwgXCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjQwIDMyMGgtNDh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2aC0zMmMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZoOTZjNTIuOSAwIDk2IDQzLjEgOTYgOTZzLTQzLjEgOTYtOTYgOTZ6bTAtMTI4aC00OHY2NGg0OGMxNy42IDAgMzItMTQuNCAzMi0zMnMtMTQuNC0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFQYXNzcG9ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXNzcG9ydCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjVhYlwiLCBcIk0xMjkuNjIgMTc2aDM5LjA5YzEuNDktMjcuMDMgNi41NC01MS4zNSAxNC4yMS03MC40MS0yNy43MSAxMy4yNC00OC4wMiAzOS4xOS01My4zIDcwLjQxem0wIDMyYzUuMjkgMzEuMjIgMjUuNTkgNTcuMTcgNTMuMyA3MC40MS03LjY4LTE5LjA2LTEyLjcyLTQzLjM4LTE0LjIxLTcwLjQxaC0zOS4wOXpNMjI0IDI4Ni42OWM3LjY5LTcuNDUgMjAuNzctMzQuNDIgMjMuNDMtNzguNjloLTQ2Ljg3YzIuNjcgNDQuMjYgMTUuNzUgNzEuMjQgMjMuNDQgNzguNjl6TTIwMC41NyAxNzZoNDYuODdjLTIuNjYtNDQuMjYtMTUuNzQtNzEuMjQtMjMuNDMtNzguNjktNy43IDcuNDUtMjAuNzggMzQuNDMtMjMuNDQgNzguNjl6bTY0LjUxIDEwMi40MWMyNy43MS0xMy4yNCA0OC4wMi0zOS4xOSA1My4zLTcwLjQxaC0zOS4wOWMtMS40OSAyNy4wMy02LjUzIDUxLjM1LTE0LjIxIDcwLjQxek00MTYgMEg2NEMyOC42NSAwIDAgMjguNjUgMCA2NHYzODRjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tODAgNDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgyMjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZ6bS0xMTItOTZjLTcwLjY5IDAtMTI4LTU3LjMxLTEyOC0xMjhTMTUzLjMxIDY0IDIyNCA2NHMxMjggNTcuMzEgMTI4IDEyOC01Ny4zMSAxMjgtMTI4IDEyOHptNDEuMDgtMjE0LjQxYzcuNjggMTkuMDYgMTIuNzIgNDMuMzggMTQuMjEgNzAuNDFoMzkuMDljLTUuMjgtMzEuMjItMjUuNTktNTcuMTctNTMuMy03MC40MXpcIl1cbn07XG52YXIgZmFQYXN0YWZhcmlhbmlzbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXN0YWZhcmlhbmlzbScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjY3YlwiLCBcIk02MjQuNTQgMzQ3LjY3Yy0zMi43LTEyLjUyLTU3LjM2IDQuMjUtNzUuMzcgMTYuNDUtMTcuMDYgMTEuNTMtMjMuMjUgMTQuNDItMzEuNDEgMTEuMzYtOC4xMi0zLjA5LTEwLjgzLTkuMzgtMTUuODktMjkuMzgtMy4zMy0xMy4xNS03LjQ0LTI5LjMyLTE3Ljk1LTQyLjY1IDIuMjQtMi45MSA0LjQzLTUuNzkgNi4zOC04LjU3QzUwMC40NyAzMDQuNDUgNTEzLjcxIDMxMiA1MzIgMzEyYzMzLjk1IDAgNTAuODctMjUuNzggNjIuMDYtNDIuODMgMTAuNTktMTYuMTQgMTUtMjEuMTcgMjEuOTQtMjEuMTcgMTMuMjUgMCAyNC0xMC43NSAyNC0yNHMtMTAuNzUtMjQtMjQtMjRjLTMzLjk1IDAtNTAuODcgMjUuNzgtNjIuMDYgNDIuODMtMTAuNiAxNi4xNC0xNSAyMS4xNy0yMS45NCAyMS4xNy0xNy4zMSAwLTM3LjQ4LTYxLjQzLTk3LjI2LTEwMS45MWwxNy4yNS0zNC41QzQ4NS40MyAxMjUuNSA1MTIgOTcuOTggNTEyIDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMTMuMDIgMy45NCAyNS4xIDEwLjYyIDM1LjIxbC0xOC4xNSAzNi4zYy0xNi45OC00LjYtMzUuNi03LjUxLTU2LjQ2LTcuNTFzLTM5LjQ5IDIuOTEtNTYuNDYgNy41MWwtMTguMTUtMzYuM0MyNTIuMDYgODkuMSAyNTYgNzcuMDIgMjU2IDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMzMuOTggMjYuNTYgNjEuNSA2MC4wMiA2My42bDE3LjI1IDM0LjVDMTQ1LjY4IDIwMi40NCAxMjUuMTUgMjY0IDEwOCAyNjRjLTYuOTQgMC0xMS4zNC01LjAzLTIxLjk0LTIxLjE3Qzc0Ljg4IDIyNS43OCA1Ny45NiAyMDAgMjQgMjAwYy0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzYuOTQgMCAxMS4zNCA1LjAzIDIxLjk0IDIxLjE3QzU3LjEzIDI4Ni4yMiA3NC4wNSAzMTIgMTA4IDMxMmMxOC4yOSAwIDMxLjUzLTcuNTUgNDEuNy0xNy4xMSAxLjk1IDIuNzkgNC4xNCA1LjY2IDYuMzggOC41Ny0xMC41MSAxMy4zMy0xNC42MiAyOS41LTE3Ljk1IDQyLjY1LTUuMDYgMjAtNy43NyAyNi4yOC0xNS44OSAyOS4zOC04LjExIDMuMDYtMTQuMzMuMTctMzEuNDEtMTEuMzYtMTguMDMtMTIuMi00Mi43Mi0yOC45Mi03NS4zNy0xNi40NS0xMi4zOSA0LjcyLTE4LjU5IDE4LjU4LTEzLjg3IDMwLjk3IDQuNzIgMTIuNDEgMTguNjEgMTguNjEgMzAuOTcgMTMuODggOC4xNi0zLjA5IDE0LjM0LS4xOSAzMS4zOSAxMS4zNiAxMy41NSA5LjE2IDMwLjgzIDIwLjg2IDUyLjQyIDIwLjg0IDcuMTcgMCAxNC44My0xLjI4IDIyLjk3LTQuMzkgMzIuNjYtMTIuNDQgMzkuOTgtNDEuMzMgNDUuMzMtNjIuNDQgMi4yMS04LjcyIDMuOTktMTQuNDkgNS45NS0xOC44NyAxNi42MiAxMy42MSAzNi45NSAyNS44OCA2MS42NCAzNC4xNy05Ljk2IDM3LTMyLjE4IDkwLjgtNjAuMjYgOTAuOC0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzY2Ljc0IDAgOTcuMDUtODguNjMgMTA3LjQyLTEyOS4xNCA2LjY5LjYgMTMuNDIgMS4xNCAyMC41OCAxLjE0czEzLjg5LS41NCAyMC41OC0xLjE0QzM1MC45NSA0MjMuMzcgMzgxLjI2IDUxMiA0NDggNTEyYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRzLTEwLjc1LTI0LTI0LTI0Yy0yNy45NCAwLTUwLjIxLTUzLjgxLTYwLjIyLTkwLjgxIDI0LjY5LTguMjkgNDUtMjAuNTYgNjEuNjItMzQuMTYgMS45NiA0LjM4IDMuNzQgMTAuMTUgNS45NSAxOC44NyA1LjM0IDIxLjExIDEyLjY3IDUwIDQ1LjMzIDYyLjQ0IDguMTQgMy4xMSAxNS44IDQuMzkgMjIuOTcgNC4zOSAyMS41OSAwIDM4Ljg3LTExLjY5IDUyLjQyLTIwLjg0IDE3LjA1LTExLjU1IDIzLjI4LTE0LjQ1IDMxLjM5LTExLjM2IDEyLjM5IDQuNzUgMjYuMjctMS40NyAzMC45Ny0xMy44OCA0LjcxLTEyLjQtMS40OS0yNi4yNi0xMy44OS0zMC45OHpNNDQ4IDQ4YzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnptLTI1NiAwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpcIl1cbn07XG52YXIgZmFQYXN0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXN0ZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBlYVwiLCBcIk0xMjggMTg0YzAtMzAuODc5IDI1LjEyMi01NiA1Ni01NmgxMzZWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04MC42MUMyMDQuMzA2IDEyLjg5IDE4My42MzcgMCAxNjAgMHMtNDQuMzA2IDEyLjg5LTU1LjM5IDMySDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djMzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0VjE4NHptMzItMTQ0YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHMtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjR6bTE4NCAyNDhoMTA0djIwMGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTg0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMTg0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMzZ2MTA0YzAgMTMuMiAxMC44IDI0IDI0IDI0em0xMDQtMzguMDU5VjI1NmgtOTZ2LTk2aDYuMDU5YTI0IDI0IDAgMCAxIDE2Ljk3IDcuMDI5bDY1Ljk0MSA2NS45NDFhMjQuMDAyIDI0LjAwMiAwIDAgMSA3LjAzIDE2Ljk3MXpcIl1cbn07XG52YXIgZmFQYXVzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXVzZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA0Y1wiLCBcIk0xNDQgNDc5SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY3OWMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDh6bTMwNC00OFY3OWMwLTI2LjUtMjEuNS00OC00OC00OGgtOTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OHpcIl1cbn07XG52YXIgZmFQYXVzZUNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXVzZS1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyOGJcIiwgXCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptLTE2IDMyOGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwem0xMTIgMGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwelwiXVxufTtcbnZhciBmYVBhdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxYjBcIiwgXCJNMjU2IDIyNGMtNzkuNDEgMC0xOTIgMTIyLjc2LTE5MiAyMDAuMjUgMCAzNC45IDI2LjgxIDU1Ljc1IDcxLjc0IDU1Ljc1IDQ4Ljg0IDAgODEuMDktMjUuMDggMTIwLjI2LTI1LjA4IDM5LjUxIDAgNzEuODUgMjUuMDggMTIwLjI2IDI1LjA4IDQ0LjkzIDAgNzEuNzQtMjAuODUgNzEuNzQtNTUuNzVDNDQ4IDM0Ni43NiAzMzUuNDEgMjI0IDI1NiAyMjR6bS0xNDcuMjgtMTIuNjFjLTEwLjQtMzQuNjUtNDIuNDQtNTcuMDktNzEuNTYtNTAuMTMtMjkuMTIgNi45Ni00NC4yOSA0MC42OS0zMy44OSA3NS4zNCAxMC40IDM0LjY1IDQyLjQ0IDU3LjA5IDcxLjU2IDUwLjEzIDI5LjEyLTYuOTYgNDQuMjktNDAuNjkgMzMuODktNzUuMzR6bTg0LjcyLTIwLjc4YzMwLjk0LTguMTQgNDYuNDItNDkuOTQgMzQuNTgtOTMuMzZzLTQ2LjUyLTcyLjAxLTc3LjQ2LTYzLjg3LTQ2LjQyIDQ5Ljk0LTM0LjU4IDkzLjM2YzExLjg0IDQzLjQyIDQ2LjUzIDcyLjAyIDc3LjQ2IDYzLjg3em0yODEuMzktMjkuMzRjLTI5LjEyLTYuOTYtNjEuMTUgMTUuNDgtNzEuNTYgNTAuMTMtMTAuNCAzNC42NSA0Ljc3IDY4LjM4IDMzLjg5IDc1LjM0IDI5LjEyIDYuOTYgNjEuMTUtMTUuNDggNzEuNTYtNTAuMTMgMTAuNC0zNC42NS00Ljc3LTY4LjM4LTMzLjg5LTc1LjM0em0tMTU2LjI3IDI5LjM0YzMwLjk0IDguMTQgNjUuNjItMjAuNDUgNzcuNDYtNjMuODcgMTEuODQtNDMuNDItMy42NC04NS4yMS0zNC41OC05My4zNnMtNjUuNjIgMjAuNDUtNzcuNDYgNjMuODdjLTExLjg0IDQzLjQyIDMuNjQgODUuMjIgMzQuNTggOTMuMzZ6XCJdXG59O1xudmFyIGZhUGVhY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVhY2UnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY2N2NcIiwgXCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTg0IDI0OGMwIDMxLjkzLTguMiA2MS45Ny0yMi41NyA4OC4xN0wyODAgMjQwLjYzVjc0Ljk3Yzg2LjIzIDE1LjIxIDE1MiA5MC41IDE1MiAxODEuMDN6TTIxNiA0MzcuMDNjLTMzLjg2LTUuOTctNjQuNDktMjEuMi04OS4yOS00My4wMkwyMTYgMzIyLjU3djExNC40NnptNjQtMTE0LjQ2TDM2OS4yOSAzOTRjLTI0LjggMjEuODItNTUuNDMgMzcuMDUtODkuMjkgNDMuMDJWMzIyLjU3em0tNjQtMjQ3LjZ2MTY1LjY2TDg2LjU3IDM0NC4xN0M3Mi4yIDMxNy45NyA2NCAyODcuOTMgNjQgMjU2YzAtOTAuNTMgNjUuNzctMTY1LjgyIDE1Mi0xODEuMDN6XCJdXG59O1xudmFyIGZhUGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjMwNFwiLCBcIk0yOTAuNzQgOTMuMjRsMTI4LjAyIDEyOC4wMi0yNzcuOTkgMjc3Ljk5LTExNC4xNCAxMi42QzExLjM1IDUxMy41NC0xLjU2IDUwMC42Mi4xNCA0ODUuMzRsMTIuNy0xMTQuMjIgMjc3LjktMjc3Ljg4em0yMDcuMi0xOS4wNmwtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzYgMTguNzUtNDkuMTYgMC02Ny45MXpcIl1cbn07XG52YXIgZmFQZW5BbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVuLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjMwNVwiLCBcIk00OTcuOTQgNzQuMTdsLTYwLjExLTYwLjExYy0xOC43NS0xOC43NS00OS4xNi0xOC43NS02Ny45MSAwbC01Ni41NSA1Ni41NSAxMjguMDIgMTI4LjAyIDU2LjU1LTU2LjU1YzE4Ljc1LTE4Ljc1IDE4Ljc1LTQ5LjE1IDAtNjcuOTF6bS0yNDYuOC0yMC41M2MtMTUuNjItMTUuNjItNDAuOTQtMTUuNjItNTYuNTYgMEw3NS44IDE3Mi40M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42MmwyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDEwMS44Mi0xMDEuODIgMjIuNjMgMjIuNjJMOTMuOTUgMjkwLjAzQTMyNy4wMzggMzI3LjAzOCAwIDAgMCAuMTcgNDg1LjExbC0uMDMuMjNjLTEuNyAxNS4yOCAxMS4yMSAyOC4yIDI2LjQ5IDI2LjUxYTMyNy4wMiAzMjcuMDIgMCAwIDAgMTk1LjM0LTkzLjhsMTk2Ljc5LTE5Ni43OS04Mi43Ny04Mi43Ny04NC44NS04NC44NXpcIl1cbn07XG52YXIgZmFQZW5GYW5jeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW4tZmFuY3knLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YWNcIiwgXCJNNzkuMTggMjgyLjk0YTMyLjAwNSAzMi4wMDUgMCAwIDAtMjAuMjQgMjAuMjRMMCA0ODBsNC42OSA0LjY5IDkyLjg5LTkyLjg5Yy0uNjYtMi41Ni0xLjU3LTUuMDMtMS41Ny03LjggMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMmMtMi43NyAwLTUuMjQtLjkxLTcuOC0xLjU3bC05Mi44OSA5Mi44OUwzMiA1MTJsMTc2LjgyLTU4Ljk0YTMxLjk4MyAzMS45ODMgMCAwIDAgMjAuMjQtMjAuMjRsMzMuMDctODQuMDctOTguODgtOTguODgtODQuMDcgMzMuMDd6TTM2OS4yNSAyOC4zMkwxODYuMTQgMjI3LjgxbDk3Ljg1IDk3Ljg1IDE5OS40OS0xODMuMTFDNTY4LjQgNjcuNDggNDQzLjczLTU1Ljk0IDM2OS4yNSAyOC4zMnpcIl1cbn07XG52YXIgZmFQZW5OaWIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVuLW5pYicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVhZFwiLCBcIk0xMzYuNiAxMzguNzlhNjQuMDAzIDY0LjAwMyAwIDAgMC00My4zMSA0MS4zNUwwIDQ2MGwxNC42OSAxNC42OUwxNjQuOCAzMjQuNThjLTIuOTktNi4yNi00LjgtMTMuMTgtNC44LTIwLjU4IDAtMjYuNTEgMjEuNDktNDggNDgtNDhzNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDhjLTcuNCAwLTE0LjMyLTEuODEtMjAuNTgtNC44TDM3LjMxIDQ5Ny4zMSA1MiA1MTJsMjc5Ljg2LTkzLjI5YTY0LjAwMyA2NC4wMDMgMCAwIDAgNDEuMzUtNDMuMzFMNDE2IDIyNCAyODggOTZsLTE1MS40IDQyLjc5em0zNjEuMzQtNjQuNjJsLTYwLjExLTYwLjExYy0xOC43NS0xOC43NS00OS4xNi0xOC43NS02Ny45MSAwbC01Ni41NSA1Ni41NSAxMjguMDIgMTI4LjAyIDU2LjU1LTU2LjU1YzE4Ljc1LTE4Ljc1IDE4Ljc1LTQ5LjE1IDAtNjcuOTF6XCJdXG59O1xudmFyIGZhUGVuU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blbi1zcXVhcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNGJcIiwgXCJNNDAwIDQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OHpNMjM4LjEgMTc3LjlMMTAyLjQgMzEzLjZsLTYuMyA1Ny4xYy0uOCA3LjYgNS42IDE0LjEgMTMuMyAxMy4zbDU3LjEtNi4zTDMwMi4yIDI0MmMyLjMtMi4zIDIuMy02LjEgMC04LjVMMjQ2LjcgMTc4Yy0yLjUtMi40LTYuMy0yLjQtOC42LS4xek0zNDUgMTY1LjFMMzE0LjkgMTM1Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMjMuMSAyMy4xYy0yLjMgMi4zLTIuMyA2LjEgMCA4LjVsNTUuNSA1NS41YzIuMyAyLjMgNi4xIDIuMyA4LjUgMEwzNDUgMTk5YzkuMy05LjMgOS4zLTI0LjUgMC0zMy45elwiXVxufTtcbnZhciBmYVBlbmNpbEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW5jaWwtYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMzAzXCIsIFwiTTQ5Ny45IDE0Mi4xbC00Ni4xIDQ2LjFjLTQuNyA0LjctMTIuMyA0LjctMTcgMGwtMTExLTExMWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDQ2LjEtNDYuMWMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGw2MC4xIDYwLjFjMTguOCAxOC43IDE4LjggNDkuMSAwIDY3Ljl6TTI4NC4yIDk5LjhMMjEuNiAzNjIuNC40IDQ4My45Yy0yLjkgMTYuNCAxMS40IDMwLjYgMjcuOCAyNy44bDEyMS41LTIxLjMgMjYyLjYtMjYyLjZjNC43LTQuNyA0LjctMTIuMyAwLTE3bC0xMTEtMTExYy00LjgtNC43LTEyLjQtNC43LTE3LjEgMHpNMTI0LjEgMzM5LjljLTUuNS01LjUtNS41LTE0LjMgMC0xOS44bDE1NC0xNTRjNS41LTUuNSAxNC4zLTUuNSAxOS44IDBzNS41IDE0LjMgMCAxOS44bC0xNTQgMTU0Yy01LjUgNS41LTE0LjMgNS41LTE5LjggMHpNODggNDI0aDQ4djM2LjNsLTY0LjUgMTEuMy0zMS4xLTMxLjFMNTEuNyAzNzZIODh2NDh6XCJdXG59O1xudmFyIGZhUGVuY2lsUnVsZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVuY2lsLXJ1bGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWFlXCIsIFwiTTEwOS40NiAyNDQuMDRsMTM0LjU4LTEzNC41Ni00NC4xMi00NC4xMi02MS42OCA2MS42OGE3LjkxOSA3LjkxOSAwIDAgMS0xMS4yMSAwbC0xMS4yMS0xMS4yMWMtMy4xLTMuMS0zLjEtOC4xMiAwLTExLjIxbDYxLjY4LTYxLjY4LTMzLjY0LTMzLjY1QzEzMS40Ny0zLjEgMTExLjM5LTMuMSA5OSA5LjI5TDkuMjkgOTljLTEyLjM4IDEyLjM5LTEyLjM5IDMyLjQ3IDAgNDQuODZsMTAwLjE3IDEwMC4xOHptMzg4LjQ3LTExNi44YzE4Ljc2LTE4Ljc2IDE4Ljc1LTQ5LjE3IDAtNjcuOTNsLTQ1LjI1LTQ1LjI1Yy0xOC43Ni0xOC43Ni00OS4xOC0xOC43Ni02Ny45NSAwbC00Ni4wMiA0Ni4wMSAxMTMuMiAxMTMuMiA0Ni4wMi00Ni4wM3pNMzE2LjA4IDgyLjcxbC0yOTcgMjk2Ljk2TC4zMiA0ODcuMTFjLTIuNTMgMTQuNDkgMTAuMDkgMjcuMTEgMjQuNTkgMjQuNTZsMTA3LjQ1LTE4Ljg0TDQyOS4yOCAxOTUuOSAzMTYuMDggODIuNzF6bTE4Ni42MyAyODUuNDNsLTMzLjY0LTMzLjY0LTYxLjY4IDYxLjY4Yy0zLjEgMy4xLTguMTIgMy4xLTExLjIxIDBsLTExLjIxLTExLjIxYy0zLjA5LTMuMS0zLjA5LTguMTIgMC0xMS4yMWw2MS42OC02MS42OC00NC4xNC00NC4xNEwyNjcuOTMgNDAyLjVsMTAwLjIxIDEwMC4yYzEyLjM5IDEyLjM5IDMyLjQ3IDEyLjM5IDQ0Ljg2IDBsODkuNzEtODkuN2MxMi4zOS0xMi4zOSAxMi4zOS0zMi40NyAwLTQ0Ljg2elwiXVxufTtcbnZhciBmYVBlb3BsZUFycm93cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtYXJyb3dzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlMDY4XCIsIFwiTTk2LDEyOEE2NCw2NCwwLDEsMCwzMiw2NCw2NCw2NCwwLDAsMCw5NiwxMjhabTAsMTc2LjA4YTQ0LjExLDQ0LjExLDAsMCwxLDEzLjY0LTMyTDE4MS43NywyMDRjMS42NS0xLjU1LDMuNzctMi4zMSw1LjYxLTMuNTdBNjMuOTEsNjMuOTEsMCwwLDAsMTI4LDE2MEg2NEE2NCw2NCwwLDAsMCwwLDIyNHY5NmEzMiwzMiwwLDAsMCwzMiwzMlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJoNjRhMzIsMzIsMCwwLDAsMzItMzJWMzgzLjYxbC01MC4zNi00Ny41M0E0NC4wOCw0NC4wOCwwLDAsMSw5NiwzMDQuMDhaTTQ4MCwxMjhhNjQsNjQsMCwxLDAtNjQtNjRBNjQsNjQsMCwwLDAsNDgwLDEyOFptMzIsMzJINDQ4YTYzLjkxLDYzLjkxLDAsMCwwLTU5LjM4LDQwLjQyYzEuODQsMS4yNyw0LDIsNS42MiwzLjU5bDcyLjEyLDY4LjA2YTQ0LjM3LDQ0LjM3LDAsMCwxLDAsNjRMNDE2LDM4My42MlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJoNjRhMzIsMzIsMCwwLDAsMzItMzJWMzUyYTMyLDMyLDAsMCwwLDMyLTMyVjIyNEE2NCw2NCwwLDAsMCw1MTIsMTYwWk00NDQuNCwyOTUuMzRsLTcyLjEyLTY4LjA2QTEyLDEyLDAsMCwwLDM1MiwyMzZ2MzZIMjI0VjIzNmExMiwxMiwwLDAsMC0yMC4yOC04LjczTDEzMS42LDI5NS4zNGExMi40LDEyLjQsMCwwLDAsMCwxNy40N2w3Mi4xMiw2OC4wN0ExMiwxMiwwLDAsMCwyMjQsMzcyLjE0VjMzNkgzNTJ2MzYuMTRhMTIsMTIsMCwwLDAsMjAuMjgsOC43NGw3Mi4xMi02OC4wN0ExMi40LDEyLjQsMCwwLDAsNDQ0LjQsMjk1LjM0WlwiXVxufTtcbnZhciBmYVBlb3BsZUNhcnJ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blb3BsZS1jYXJyeScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRjZVwiLCBcIk0xMjggOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMTU0LjUgMCAxMjggMCA4MCAyMS41IDgwIDQ4czIxLjUgNDggNDggNDh6bTM4NCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzUzOC41IDAgNTEyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptMTI1LjcgMzcyLjFsLTQ0LTExMC00MS4xIDQ2LjQtMiAxOC4yIDI3LjcgNjkuMmM1IDEyLjUgMTcgMjAuMSAyOS43IDIwLjEgNCAwIDgtLjcgMTEuOS0yLjMgMTYuNC02LjYgMjQuNC0yNS4yIDE3LjgtNDEuNnptLTM0LjItMjA5LjhMNTg1IDE3OC4xYy00LjYtMjAtMTguNi0zNi44LTM3LjUtNDQuOS0xOC41LTgtMzktNi43LTU2LjEgMy4zLTIyLjcgMTMuNC0zOS43IDM0LjUtNDguMSA1OS40TDQzMiAyMjkuOCA0MTYgMjQwdi05NmMwLTguOC03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ2OTZsLTE2LjEtMTAuMi0xMS4zLTMzLjljLTguMy0yNS0yNS40LTQ2LTQ4LjEtNTkuNC0xNy4yLTEwLTM3LjYtMTEuMy01Ni4xLTMuMy0xOC45IDguMS0zMi45IDI0LjktMzcuNSA0NC45bC0xOC40IDgwLjJjLTQuNiAyMCAuNyA0MS4yIDE0LjQgNTYuN2w2Ny4yIDc1LjkgMTAuMSA5Mi42QzEzMCA0OTkuOCAxNDMuOCA1MTIgMTYwIDUxMmMxLjIgMCAyLjMtLjEgMy41LS4yIDE3LjYtMS45IDMwLjItMTcuNyAyOC4zLTM1LjNsLTEwLjEtOTIuOGMtMS41LTEzLTYuOS0yNS4xLTE1LjYtMzVsLTQzLjMtNDkgMTcuNi03MC4zIDYuOCAyMC40YzQuMSAxMi41IDExLjkgMjMuNCAyNC41IDMyLjZsNTEuMSAzMi41YzQuNiAyLjkgMTIuMSA0LjYgMTcuMiA1aDE2MGM1LjEtLjQgMTIuNi0yLjEgMTcuMi01bDUxLjEtMzIuNWMxMi42LTkuMiAyMC40LTIwIDI0LjUtMzIuNmw2LjgtMjAuNCAxNy42IDcwLjMtNDMuMyA0OWMtOC43IDkuOS0xNC4xIDIyLTE1LjYgMzVsLTEwLjEgOTIuOGMtMS45IDE3LjYgMTAuOCAzMy40IDI4LjMgMzUuMyAxLjIuMSAyLjMuMiAzLjUuMiAxNi4xIDAgMzAtMTIuMSAzMS44LTI4LjVsMTAuMS05Mi42IDY3LjItNzUuOWMxMy42LTE1LjUgMTktMzYuNyAxNC40LTU2Ljd6TTQ2LjMgMzU4LjFsLTQ0IDExMGMtNi42IDE2LjQgMS40IDM1IDE3LjggNDEuNiAxNi44IDYuNiAzNS4xLTEuNyA0MS42LTE3LjhsMjcuNy02OS4yLTItMTguMi00MS4xLTQ2LjR6XCJdXG59O1xudmFyIGZhUGVwcGVySG90ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcHBlci1ob3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4MTZcIiwgXCJNMzMwLjY3IDI2My4xMlYxNzMuNGwtNTIuNzUtMjQuMjJDMjE5LjQ0IDIxOC43NiAxOTcuNTggNDAwIDU2IDQwMGE1NiA1NiAwIDAgMCAwIDExMmMyMTIuNjQgMCAzNzAuNjUtMTIyLjg3IDQxOS4xOC0yMTAuMzRsLTM3LjA1LTM4LjU0em0xMzEuMDktMTI4LjM3QzQ5My45MiA3NC45MSA0NzcuMTggMjYuNDggNDU4LjYyIDNhOCA4IDAgMCAwLTExLjkzLS41OWwtMjIuOSAyM2E4LjA2IDguMDYgMCAwIDAtLjg5IDEwLjIzYzYuODYgMTAuMzYgMTcuMDUgMzUuMS0xLjQgNzIuMzJBMTQyLjg1IDE0Mi44NSAwIDAgMCAzNjQuMzQgOTZjLTI4IDAtNTQgOC41NC03Ni4zNCAyMi41OWw3NC42NyAzNC4yOXY3OC4yNGg4OS4wOUw1MDYuNDQgMjg4YzMuMjYtMTIuNjIgNS41Ni0yNS42MyA1LjU2LTM5LjMxYTE1NCAxNTQgMCAwIDAtNTAuMjQtMTEzLjk0elwiXVxufTtcbnZhciBmYVBlcmNlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyY2VudCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI5NVwiLCBcIk0xMTIgMjI0YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzE3My45IDAgMTEyIDAgMCA1MC4xIDAgMTEyczUwLjEgMTEyIDExMiAxMTJ6bTAtMTYwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4LTQ4LTIxLjUtNDgtNDggMjEuNS00OCA0OC00OHptMjI0IDIyNGMtNjEuOSAwLTExMiA1MC4xLTExMiAxMTJzNTAuMSAxMTIgMTEyIDExMiAxMTItNTAuMSAxMTItMTEyLTUwLjEtMTEyLTExMi0xMTJ6bTAgMTYwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpNMzkyLjMuMmwzMS42LS4xYzE5LjQtLjEgMzAuOSAyMS44IDE5LjcgMzcuOEw3Ny40IDUwMS42YTIzLjk1IDIzLjk1IDAgMCAxLTE5LjYgMTAuMmwtMzMuNC4xYy0xOS41IDAtMzAuOS0yMS45LTE5LjctMzcuOGwzNjgtNDYzLjdDMzc3LjIgNCAzODQuNS4yIDM5Mi4zLjJ6XCJdXG59O1xudmFyIGZhUGVyY2VudGFnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJjZW50YWdlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTQxXCIsIFwiTTEwOS4yNSAxNzMuMjVjMjQuOTktMjQuOTkgMjQuOTktNjUuNTIgMC05MC41MS0yNC45OS0yNC45OS02NS41Mi0yNC45OS05MC41MSAwLTI0Ljk5IDI0Ljk5LTI0Ljk5IDY1LjUyIDAgOTAuNTEgMjUgMjUgNjUuNTIgMjUgOTAuNTEgMHptMjU2IDE2NS40OWMtMjQuOTktMjQuOTktNjUuNTItMjQuOTktOTAuNTEgMC0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxIDI0Ljk5IDI0Ljk5IDY1LjUyIDI0Ljk5IDkwLjUxIDAgMjUtMjQuOTkgMjUtNjUuNTEgMC05MC41MXptLTEuOTQtMjMxLjQzbC0yMi42Mi0yMi42MmMtMTIuNS0xMi41LTMyLjc2LTEyLjUtNDUuMjUgMEwyMC42OSAzNTkuNDRjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjVsMjIuNjIgMjIuNjJjMTIuNSAxMi41IDMyLjc2IDEyLjUgNDUuMjUgMGwyNzQuNzUtMjc0Ljc1YzEyLjUtMTIuNDkgMTIuNS0zMi43NSAwLTQ1LjI1elwiXVxufTtcbnZhciBmYVBlcnNvbkJvb3RoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1ib290aCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc1NlwiLCBcIk0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaC02NHYxNzZ6bTMyLTI3MmgtNTAuOWwtNDUuMi00NS4zQzExNS44IDE2Ni42IDk5LjcgMTYwIDgyLjcgMTYwSDY0Yy0xNy4xIDAtMzMuMiA2LjctNDUuMyAxOC44QzYuNyAxOTAuOSAwIDIwNyAwIDIyNC4xTC4yIDMyMCAwIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMS45IDMyIDE3LjYgMCAzMi0xNC4zIDMyLTMybC4xLTEwMC43Yy45LjUgMS42IDEuMyAyLjUgMS43bDI5LjEgNDN2NTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnYtNTYuNWMwLTkuOS0yLjMtMTkuOC02LjctMjguNmwtNDEuMi02MS4zVjI1M2wyMC45IDIwLjljOS4xIDkuMSAyMS4xIDE0LjEgMzMuOSAxNC4xSDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMnpNNjQgMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzkwLjUgMzIgNjQgMzIgMTYgNTMuNSAxNiA4MHMyMS41IDQ4IDQ4IDQ4em0yMjQtOTZsMzEuNSAyMjMuMS0zMC45IDE1NC42Yy00LjMgMjEuNiAxMyAzOC4zIDMxLjQgMzguMyAxNS4yIDAgMjgtOS4xIDMyLjMtMzAuNC45IDE2LjkgMTQuNiAzMC40IDMxLjcgMzAuNCAxNy43IDAgMzItMTQuMyAzMi0zMiAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjBIMjg4djMyem0tOTYgMHYxNjBoNjRWMGgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek01NDQgMGgtMzJ2NDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhUGhvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwOTVcIiwgXCJNNDkzLjQgMjQuNmwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0zNiA3Ni43LTk4LjkgMTQwLjUtMTc3LjIgMTc3LjJsLTQ5LjYtNjAuNmMtNi44LTguMy0xOC4yLTExLjEtMjgtNi45bC0xMTIgNDhDMy45IDM2Ni41LTIgMzc4LjEuNiAzODkuNGwyNCAxMDRDMjcuMSA1MDQuMiAzNi43IDUxMiA0OCA1MTJjMjU2LjEgMCA0NjQtMjA3LjUgNDY0LTQ2NCAwLTExLjItNy43LTIwLjktMTguNi0yMy40elwiXVxufTtcbnZhciBmYVBob25lQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bob25lLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjg3OVwiLCBcIk00OTcuMzkgMzYxLjhsLTExMi00OGEyNCAyNCAwIDAgMC0yOCA2LjlsLTQ5LjYgNjAuNkEzNzAuNjYgMzcwLjY2IDAgMCAxIDEzMC42IDIwNC4xMWw2MC42LTQ5LjZhMjMuOTQgMjMuOTQgMCAwIDAgNi45LTI4bC00OC0xMTJBMjQuMTYgMjQuMTYgMCAwIDAgMTIyLjYuNjFsLTEwNCAyNEEyNCAyNCAwIDAgMCAwIDQ4YzAgMjU2LjUgMjA3LjkgNDY0IDQ2NCA0NjRhMjQgMjQgMCAwIDAgMjMuNC0xOC42bDI0LTEwNGEyNC4yOSAyNC4yOSAwIDAgMC0xNC4wMS0yNy42elwiXVxufTtcbnZhciBmYVBob25lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzZGRcIiwgXCJNMjY4LjIgMzgxLjRsLTQ5LjYtNjAuNmMtNi44LTguMy0xOC4yLTExLjEtMjgtNi45bC0xMTIgNDhjLTEwLjcgNC42LTE2LjUgMTYuMS0xMy45IDI3LjVsMjQgMTA0YzIuNSAxMC44IDEyLjEgMTguNiAyMy40IDE4LjYgMTAwLjcgMCAxOTMuNy0zMi40IDI2OS43LTg2LjlsLTgwLTYxLjhjLTEwLjkgNi41LTIyLjEgMTIuNy0zMy42IDE4LjF6bTM2NS42IDc2LjdMNDc1LjEgMzM1LjVDNTM3LjkgMjU2LjQgNTc2IDE1Ni45IDU3NiA0OGMwLTExLjItNy43LTIwLjktMTguNi0yMy40bC0xMDQtMjRjLTExLjMtMi42LTIyLjkgMy4zLTI3LjUgMTMuOWwtNDggMTEyYy00LjIgOS44LTEuNCAyMS4zIDYuOSAyOGw2MC42IDQ5LjZjLTEyLjIgMjYuMS0yNy45IDUwLjMtNDYgNzIuOEw0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNGw1ODguNCA0NTQuN2M3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNC02LjggNC4xLTE2LjktMi45LTIyLjN6XCJdXG59O1xudmFyIGZhUGhvbmVTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUtc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDk4XCIsIFwiTTQwMCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNOTQgNDE2Yy03LjAzMyAwLTEzLjA1Ny00Ljg3My0xNC42MTYtMTEuNjI3bC0xNC45OTgtNjVhMTUgMTUgMCAwIDEgOC43MDctMTcuMTZsNjkuOTk4LTI5Ljk5OWExNSAxNSAwIDAgMSAxNy41MTggNC4yODlsMzAuOTk3IDM3Ljg4NWM0OC45NDQtMjIuOTYzIDg4LjI5Ny02Mi44NTggMTEwLjc4MS0xMTAuNzhsLTM3Ljg4Ni0zMC45OTdhMTUuMDAxIDE1LjAwMSAwIDAgMS00LjI4OS0xNy41MThsMzAtNjkuOTk4YTE1IDE1IDAgMCAxIDE3LjE2LTguNzA3bDY1IDE0Ljk5OEExNC45OTcgMTQuOTk3IDAgMCAxIDM4NCAxMjZjMCAxNjAuMjkyLTEyOS45NDUgMjkwLTI5MCAyOTB6XCJdXG59O1xudmFyIGZhUGhvbmVTcXVhcmVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUtc3F1YXJlLWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjg3YlwiLCBcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MHYzNTJhNDggNDggMCAwIDAgNDggNDhoMzUyYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwYTQ4IDQ4IDAgMCAwLTQ4LTQ4em0tMTYuMzkgMzA3LjM3bC0xNSA2NUExNSAxNSAwIDAgMSAzNTQgNDE2QzE5NCA0MTYgNjQgMjg2LjI5IDY0IDEyNmExNS43IDE1LjcgMCAwIDEgMTEuNjMtMTQuNjFsNjUtMTVBMTguMjMgMTguMjMgMCAwIDEgMTQ0IDk2YTE2LjI3IDE2LjI3IDAgMCAxIDEzLjc5IDkuMDlsMzAgNzBBMTcuOSAxNy45IDAgMCAxIDE4OSAxODFhMTcgMTcgMCAwIDEtNS41IDExLjYxbC0zNy44OSAzMWEyMzEuOTEgMjMxLjkxIDAgMCAwIDExMC43OCAxMTAuNzhsMzEtMzcuODlBMTcgMTcgMCAwIDEgMjk5IDI5MWExNy44NSAxNy44NSAwIDAgMSA1LjkxIDEuMjFsNzAgMzBBMTYuMjUgMTYuMjUgMCAwIDEgMzg0IDMzNmExNy40MSAxNy40MSAwIDAgMS0uMzkgMy4zN3pcIl1cbn07XG52YXIgZmFQaG9uZVZvbHVtZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaG9uZS12b2x1bWUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyYTBcIiwgXCJNOTcuMzMzIDUwNi45NjZjLTEyOS44NzQtMTI5Ljg3NC0xMjkuNjgxLTM0MC4yNTIgMC00NjkuOTMzIDUuNjk4LTUuNjk4IDE0LjUyNy02LjYzMiAyMS4yNjMtMi40MjJsNjQuODE3IDQwLjUxM2ExNy4xODcgMTcuMTg3IDAgMCAxIDYuODQ5IDIwLjk1OGwtMzIuNDA4IDgxLjAyMWExNy4xODggMTcuMTg4IDAgMCAxLTE3LjY2OSAxMC43MTlsLTU1LjgxLTUuNThjLTIxLjA1MSA1OC4yNjEtMjAuNjEyIDEyMi40NzEgMCAxNzkuNTE1bDU1LjgxMS01LjU4MWExNy4xODggMTcuMTg4IDAgMCAxIDE3LjY2OSAxMC43MTlsMzIuNDA4IDgxLjAyMmExNy4xODggMTcuMTg4IDAgMCAxLTYuODQ5IDIwLjk1OGwtNjQuODE3IDQwLjUxM2ExNy4xOSAxNy4xOSAwIDAgMS0yMS4yNjQtMi40MjJ6TTI0Ny4xMjYgOTUuNDczYzExLjgzMiAyMC4wNDcgMTEuODMyIDQ1LjAwOCAwIDY1LjA1NS0zLjk1IDYuNjkzLTEzLjEwOCA3Ljk1OS0xOC43MTggMi41ODFsLTUuOTc1LTUuNzI2Yy0zLjkxMS0zLjc0OC00Ljc5My05LjYyMi0yLjI2MS0xNC40MWEzMi4wNjMgMzIuMDYzIDAgMCAwIDAtMjkuOTQ1Yy0yLjUzMy00Ljc4OC0xLjY1LTEwLjY2MiAyLjI2MS0xNC40MWw1Ljk3NS01LjcyNmM1LjYxLTUuMzc4IDE0Ljc2OC00LjExMiAxOC43MTggMi41ODF6bTkxLjc4Ny05MS4xODdjNjAuMTQgNzEuNjA0IDYwLjA5MiAxNzUuODgyIDAgMjQ3LjQyOC00LjQ3NCA1LjMyNy0xMi41MyA1Ljc0Ni0xNy41NTIuOTMzbC01Ljc5OC01LjU1N2MtNC41Ni00LjM3MS00Ljk3Ny0xMS41MjktLjkzLTE2LjM3OSA0OS42ODctNTkuNTM4IDQ5LjY0Ni0xNDUuOTMzIDAtMjA1LjQyMi00LjA0Ny00Ljg1LTMuNjMxLTEyLjAwOC45My0xNi4zNzlsNS43OTgtNS41NTdjNS4wMjItNC44MTMgMTMuMDc4LTQuMzk0IDE3LjU1Mi45MzN6bS00NS45NzIgNDQuOTQxYzM2LjA1IDQ2LjMyMiAzNi4xMDggMTExLjE0OSAwIDE1Ny41NDYtNC4zOSA1LjY0MS0xMi42OTcgNi4yNTEtMTcuODU2IDEuMzA0bC01LjgxOC01LjU3OWMtNC40LTQuMjE5LTQuOTk4LTExLjA5NS0xLjI4NS0xNS45MzEgMjYuNTM2LTM0LjU2NCAyNi41MzQtODIuNTcyIDAtMTE3LjEzNC0zLjcxMy00LjgzNi0zLjExNS0xMS43MTEgMS4yODUtMTUuOTMxbDUuODE4LTUuNTc5YzUuMTU5LTQuOTQ3IDEzLjQ2Ni00LjMzNyAxNy44NTYgMS4zMDR6XCJdXG59O1xudmFyIGZhUGhvdG9WaWRlbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaG90by12aWRlbycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjg3Y1wiLCBcIk02MDggMEgxNjBhMzIgMzIgMCAwIDAtMzIgMzJ2OTZoMTYwVjY0aDE5MnYzMjBoMTI4YTMyIDMyIDAgMCAwIDMyLTMyVjMyYTMyIDMyIDAgMCAwLTMyLTMyek0yMzIgMTAzYTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTlWNzNhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0zNTIgMjA4YTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTl2LTMwYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptMC0xMDRhOSA5IDAgMCAxLTkgOWgtMzBhOSA5IDAgMCAxLTktOXYtMzBhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0wLTEwNGE5IDkgMCAwIDEtOSA5aC0zMGE5IDkgMCAwIDEtOS05VjczYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptLTE2OCA1N0gzMmEzMiAzMiAwIDAgMC0zMiAzMnYyODhhMzIgMzIgMCAwIDAgMzIgMzJoMzg0YTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNOTYgMjI0YTMyIDMyIDAgMSAxLTMyIDMyIDMyIDMyIDAgMCAxIDMyLTMyem0yODggMjI0SDY0di0zMmw2NC02NCAzMiAzMiAxMjgtMTI4IDk2IDk2elwiXVxufTtcbnZhciBmYVBpZ2d5QmFuayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaWdneS1iYW5rJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNGQzXCIsIFwiTTU2MCAyMjRoLTI5LjVjLTguOC0yMC0yMS42LTM3LjctMzcuNC01Mi41TDUxMiA5NmgtMzJjLTI5LjQgMC01NS40IDEzLjUtNzMgMzQuMy03LjYtMS4xLTE1LjEtMi4zLTIzLTIuM0gyNTZjLTc3LjQgMC0xNDEuOSA1NS0xNTYuOCAxMjhINTZjLTE0LjggMC0yNi41LTEzLjUtMjMuNS0yOC44QzM0LjcgMjE1LjggNDUuNCAyMDggNTcgMjA4aDFjMy4zIDAgNi0yLjcgNi02di0yMGMwLTMuMy0yLjctNi02LTYtMjguNSAwLTUzLjkgMjAuNC01Ny41IDQ4LjZDLTMuOSAyNTguOCAyMi43IDI4OCA1NiAyODhoNDBjMCA1Mi4yIDI1LjQgOTguMSA2NCAxMjcuM1Y0OTZjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtNDhoMTI4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwLjdjMTEuOC04LjkgMjIuMy0xOS40IDMxLjMtMzEuM0g1NjBjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZ6bS0xMjggNjRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpNMjU2IDk2aDEyOGM1LjQgMCAxMC43LjQgMTUuOS44IDAtLjMuMS0uNS4xLS44IDAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMi4xLjUgNC4xLjYgNi4yIDE1LjItMy45IDMxLTYuMiA0Ny40LTYuMnpcIl1cbn07XG52YXIgZmFQaWxscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaWxscycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjQ4NFwiLCBcIk0xMTIgMzJDNTAuMSAzMiAwIDgyLjEgMCAxNDR2MjI0YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMTQ0YzAtNjEuOS01MC4xLTExMi0xMTItMTEyem00OCAyMjRINjRWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTEyem0xMzkuNy0yOS43Yy0zLjUtMy41LTkuNC0zLjEtMTIuMy44LTQ1LjMgNjIuNS00MC40IDE1MC4xIDE1LjkgMjA2LjQgNTYuMyA1Ni4zIDE0My45IDYxLjIgMjA2LjQgMTUuOSA0LTIuOSA0LjMtOC44LjgtMTIuM0wyOTkuNyAyMjYuM3ptMjI5LjgtMTljLTU2LjMtNTYuMy0xNDMuOS02MS4yLTIwNi40LTE1LjktNCAyLjktNC4zIDguOC0uOCAxMi4zbDIxMC44IDIxMC44YzMuNSAzLjUgOS40IDMuMSAxMi4zLS44IDQ1LjMtNjIuNiA0MC41LTE1MC4xLTE1LjktMjA2LjR6XCJdXG59O1xudmFyIGZhUGl6emFTbGljZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaXp6YS1zbGljZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjgxOFwiLCBcIk0xNTguODcuMTVjLTE2LjE2LTEuNTItMzEuMiA4LjQyLTM1LjMzIDI0LjEybC0xNC44MSA1Ni4yN2MxODcuNjIgNS40OSAzMTQuNTQgMTMwLjYxIDMyMi40OCAzMTdsNTYuOTQtMTUuNzhjMTUuNzItNC4zNiAyNS40OS0xOS42OCAyMy42Mi0zNS45QzQ5MC44OSAxNjUuMDggMzQwLjc4IDE3LjMyIDE1OC44Ny4xNXptLTU4LjQ3IDExMkwuNTUgNDkxLjY0YTE2LjIxIDE2LjIxIDAgMCAwIDIwIDE5Ljc1bDM3OS0xMDUuMWMtNC4yNy0xNzQuODktMTIzLjA4LTI5Mi4xNC0yOTkuMTUtMjk0LjF6TTEyOCA0MTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTQ4LTE1MmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMTA0IDEwNGEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnpcIl1cbn07XG52YXIgZmFQbGFjZU9mV29yc2hpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFjZS1vZi13b3JzaGlwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjdmXCIsIFwiTTYyMC42MSAzNjYuNTVMNTEyIDMyMHYxOTJoMTEyYzguODQgMCAxNi03LjE2IDE2LTE2VjM5NS45NmEzMiAzMiAwIDAgMC0xOS4zOS0yOS40MXpNMCAzOTUuOTZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDExMlYzMjBMMTkuMzkgMzY2LjU1QTMyIDMyIDAgMCAwIDAgMzk1Ljk2em00NjQuNDYtMTQ5LjI4TDQxNiAyMTcuNlYxMDIuNjNjMC04LjQ5LTMuMzctMTYuNjItOS4zOC0yMi42M0wzMzEuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwyMzMuMzggODBjLTYgNi05LjM4IDE0LjE0LTkuMzggMjIuNjNWMjE3LjZsLTQ4LjQ2IDI5LjA4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjYtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0elwiXVxufTtcbnZhciBmYVBsYW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsYW5lJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDcyXCIsIFwiTTQ4MCAxOTJIMzY1LjcxTDI2MC42MSA4LjA2QTE2LjAxNCAxNi4wMTQgMCAwIDAgMjQ2LjcxIDBoLTY1LjVjLTEwLjYzIDAtMTguMyAxMC4xNy0xNS4zOCAyMC4zOUwyMTQuODYgMTkySDExMmwtNDMuMi01Ny42Yy0zLjAyLTQuMDMtNy43Ny02LjQtMTIuOC02LjRIMTYuMDFDNS42IDEyOC0yLjA0IDEzNy43OC40OSAxNDcuODhMMzIgMjU2IC40OSAzNjQuMTJDLTIuMDQgMzc0LjIyIDUuNiAzODQgMTYuMDEgMzg0SDU2YzUuMDQgMCA5Ljc4LTIuMzcgMTIuOC02LjRMMTEyIDMyMGgxMDIuODZsLTQ5LjAzIDE3MS42Yy0yLjkyIDEwLjIyIDQuNzUgMjAuNCAxNS4zOCAyMC40aDY1LjVjNS43NCAwIDExLjA0LTMuMDggMTMuODktOC4wNkwzNjUuNzEgMzIwSDQ4MGMzNS4zNSAwIDk2LTI4LjY1IDk2LTY0cy02MC42NS02NC05Ni02NHpcIl1cbn07XG52YXIgZmFQbGFuZUFycml2YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtYXJyaXZhbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVhZlwiLCBcIk02MjQgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00NC44MSAyMDUuNjZsODguNzQgODBhNjIuNjA3IDYyLjYwNyAwIDAgMCAyNS40NyAxMy45M2wyODcuNiA3OC4zNWMyNi40OCA3LjIxIDU0LjU2IDguNzIgODEgMS4zNiAyOS42Ny04LjI3IDQzLjQ0LTIxLjIxIDQ3LjI1LTM1LjcxIDMuODMtMTQuNS0xLjczLTMyLjcxLTIzLjM3LTU0Ljk2LTE5LjI4LTE5LjgyLTQ0LjM1LTMyLjc5LTcwLjgzLTQwbC05Ny41MS0yNi41NkwyODIuOCAzMC4yMmMtMS41MS01LjgxLTUuOTUtMTAuMzUtMTEuNjYtMTEuOTFMMjA2LjA1LjU4Yy0xMC41Ni0yLjg4LTIwLjkgNS4zMi0yMC43MSAxNi40NGw0Ny45MiAxNjQuMjEtMTAyLjItMjcuODQtMjcuNTktNjcuODhjLTEuOTMtNC44OS02LjAxLTguNTctMTEuMDItOS45M0w1Mi43MiA2NC43NWMtMTAuMzQtMi44Mi0yMC41MyA1LTIwLjcyIDE1Ljg4bC4yMyAxMDEuNzhjLjE5IDguOTEgNi4wMyAxNy4zNCAxMi41OCAyMy4yNXpcIl1cbn07XG52YXIgZmFQbGFuZURlcGFydHVyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS1kZXBhcnR1cmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1YjBcIiwgXCJNNjI0IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNODAuNTUgMzQxLjI3YzYuMjggNi44NCAxNS4xIDEwLjcyIDI0LjMzIDEwLjcxbDEzMC41NC0uMThhNjUuNjIgNjUuNjIgMCAwIDAgMjkuNjQtNy4xMmwyOTAuOTYtMTQ3LjY1YzI2Ljc0LTEzLjU3IDUwLjcxLTMyLjk0IDY3LjAyLTU4LjMxIDE4LjMxLTI4LjQ4IDIwLjMtNDkuMDkgMTMuMDctNjMuNjUtNy4yMS0xNC41Ny0yNC43NC0yNS4yNy01OC4yNS0yNy40NS0yOS44NS0xLjk0LTU5LjU0IDUuOTItODYuMjggMTkuNDhsLTk4LjUxIDQ5Ljk5LTIxOC43LTgyLjA2YTE3Ljc5OSAxNy43OTkgMCAwIDAtMTgtMS4xMUw5MC42MiA2Ny4yOWMtMTAuNjcgNS40MS0xMy4yNSAxOS42NS01LjE3IDI4LjUzbDE1Ni4yMiA5OC4xLTEwMy4yMSA1Mi4zOC03Mi4zNS0zNi40N2ExNy44MDQgMTcuODA0IDAgMCAwLTE2LjA3LjAyTDkuOTEgMjMwLjIyYy0xMC40NCA1LjMtMTMuMTkgMTkuMTItNS41NyAyOC4wOGw3Ni4yMSA4Mi45N3pcIl1cbn07XG52YXIgZmFQbGFuZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsYW5lLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDY5XCIsIFwiTTMyLjQ4LDE0Ny44OCw2NCwyNTYsMzIuNDgsMzY0LjEzQTE2LDE2LDAsMCwwLDQ4LDM4NEg4OGExNiwxNiwwLDAsMCwxMi44LTYuNDFMMTQ0LDMyMEgyNDYuODVsLTQ5LDE3MS41OUExNiwxNiwwLDAsMCwyMTMuMiw1MTJoNjUuNWExNiwxNiwwLDAsMCwxMy44OS04LjA2bDY2LjYtMTE2LjU0TDM0LjM1LDEzNi4zNEExNS40NywxNS40NywwLDAsMCwzMi40OCwxNDcuODhaTTYzMy44Miw0NTguMDksNDU1LjE0LDMyMEg1MTJjMzUuMzQsMCw5Ni0yOC42Niw5Ni02NHMtNjAuNjYtNjQtOTYtNjRIMzk3LjdMMjkyLjYxLDguMDZDMjkwLjA2LDMuNjEsMjgzLjg0LDAsMjc4LjcxLDBIMjEzLjJhMTYsMTYsMCwwLDAtMTUuMzgsMjAuMzlsMzYuOTQsMTI5LjI5TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ1QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjU0LDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgxbDE5LjY0LTI1LjI2QTE2LDE2LDAsMCwwLDYzMy44Miw0NTguMDlaXCJdXG59O1xudmFyIGZhUGxheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGF5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDRiXCIsIFwiTTQyNC40IDIxNC43TDcyLjQgNi42QzQzLjgtMTAuMyAwIDYuMSAwIDQ3LjlWNDY0YzAgMzcuNSA0MC43IDYwLjEgNzIuNCA0MS4zbDM1Mi0yMDhjMzEuNC0xOC41IDMxLjUtNjQuMSAwLTgyLjZ6XCJdXG59O1xudmFyIGZhUGxheUNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGF5LWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE0NFwiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMTUuNyAyNzJsLTE3NiAxMDFjLTE1LjggOC44LTM1LjctMi41LTM1LjctMjFWMTUyYzAtMTguNCAxOS44LTI5LjggMzUuNy0yMWwxNzYgMTA3YzE2LjQgOS4yIDE2LjQgMzIuOSAwIDQyelwiXVxufTtcbnZhciBmYVBsdWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGx1ZycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFlNlwiLCBcIk0zMjAsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFptNDgsMTI4SDE2QTE2LDE2LDAsMCwwLDAsMTc2djMyYTE2LDE2LDAsMCwwLDE2LDE2SDMydjMyQTE2MC4wNywxNjAuMDcsMCwwLDAsMTYwLDQxMi44VjUxMmg2NFY0MTIuOEExNjAuMDcsMTYwLjA3LDAsMCwwLDM1MiwyNTZWMjI0aDE2YTE2LDE2LDAsMCwwLDE2LTE2VjE3NkExNiwxNiwwLDAsMCwzNjgsMTYwWk0xMjgsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFpcIl1cbn07XG52YXIgZmFQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjdcIiwgXCJNNDE2IDIwOEgyNzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTQ0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTQ0djE0NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzA0aDE0NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYVBsdXNDaXJjbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGx1cy1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNTVcIiwgXCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTQ0IDI3NmMwIDYuNi01LjQgMTItMTIgMTJoLTkydjkyYzAgNi42LTUuNCAxMi0xMiAxMmgtNTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOTJoLTkyYy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmg5MnYtOTJjMC02LjYgNS40LTEyIDEyLTEyaDU2YzYuNiAwIDEyIDUuNCAxMiAxMnY5Mmg5MmM2LjYgMCAxMiA1LjQgMTIgMTJ2NTZ6XCJdXG59O1xudmFyIGZhUGx1c1NxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbHVzLXNxdWFyZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmZVwiLCBcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzIgMjUyYzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05Mkg5MmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoOTJ2LTkyYzAtNi42IDUuNC0xMiAxMi0xMmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ2OTJoOTJjNi42IDAgMTIgNS40IDEyIDEydjU2elwiXVxufTtcbnZhciBmYVBvZGNhc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9kY2FzdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjJjZVwiLCBcIk0yNjcuNDI5IDQ4OC41NjNDMjYyLjI4NiA1MDcuNTczIDI0Mi44NTggNTEyIDIyNCA1MTJjLTE4Ljg1NyAwLTM4LjI4Ni00LjQyNy00My40MjgtMjMuNDM3QzE3Mi45MjcgNDYwLjEzNCAxNjAgMzg4Ljg5OCAxNjAgMzU1Ljc1YzAtMzUuMTU2IDMxLjE0Mi00My43NSA2NC00My43NXM2NCA4LjU5NCA2NCA0My43NWMwIDMyLjk0OS0xMi44NzEgMTA0LjE3OS0yMC41NzEgMTMyLjgxM3pNMTU2Ljg2NyAyODguNTU0Yy0xOC42OTMtMTguMzA4LTI5Ljk1OC00NC4xNzMtMjguNzg0LTcyLjU5OSAyLjA1NC00OS43MjQgNDIuMzk1LTg5Ljk1NiA5Mi4xMjQtOTEuODgxQzI3NC44NjIgMTIxLjk1OCAzMjAgMTY1LjgwNyAzMjAgMjIwYzAgMjYuODI3LTExLjA2NCA1MS4xMTYtMjguODY2IDY4LjU1Mi0yLjY3NSAyLjYyLTIuNDAxIDYuOTg2LjYyOCA5LjE4NyA5LjMxMiA2Ljc2NSAxNi40NiAxNS4zNDMgMjEuMjM0IDI1LjM2MyAxLjc0MSAzLjY1NCA2LjQ5NyA0LjY2IDkuNDQ5IDEuODkxIDI4LjgyNi0yNy4wNDMgNDYuNTUzLTY1Ljc4MyA0NS41MTEtMTA4LjU2NS0xLjg1NS03Ni4yMDYtNjMuNTk1LTEzOC4yMDgtMTM5Ljc5My0xNDAuMzY5QzE0Ni44NjkgNzMuNzUzIDgwIDEzOS4yMTUgODAgMjIwYzAgNDEuMzYxIDE3LjUzMiA3OC43IDQ1LjU1IDEwNC45ODkgMi45NTMgMi43NzEgNy43MTEgMS43NyA5LjQ1My0xLjg4NyA0Ljc3NC0xMC4wMjEgMTEuOTIzLTE4LjU5OCAyMS4yMzUtMjUuMzYzIDMuMDI5LTIuMiAzLjMwNC02LjU2Ni42MjktOS4xODV6TTIyNCAwQzEwMC4yMDQgMCAwIDEwMC4xODUgMCAyMjRjMCA4OS45OTIgNTIuNjAyIDE2NS42NDcgMTI1LjczOSAyMDEuNDA4IDQuMzMzIDIuMTE4IDkuMjY3LTEuNTQ0IDguNTM1LTYuMzEtMi4zODItMTUuNTEyLTQuMzQyLTMwLjk0Ni01LjQwNi00NC4zMzktLjE0Ni0xLjgzNi0xLjE0OS0zLjQ4Ni0yLjY3OC00LjUxMi00Ny40LTMxLjgwNi03OC41NjQtODYuMDE2LTc4LjE4Ny0xNDcuMzQ3LjU5Mi05Ni4yMzcgNzkuMjktMTc0LjY0OCAxNzUuNTI5LTE3NC44OTlDMzIwLjc5MyA0Ny43NDcgNDAwIDEyNi43OTcgNDAwIDIyNGMwIDYxLjkzMi0zMi4xNTggMTE2LjQ5LTgwLjY1IDE0Ny44NjctLjk5OSAxNC4wMzctMy4wNjkgMzAuNTg4LTUuNjI0IDQ3LjIzLS43MzIgNC43NjcgNC4yMDMgOC40MjkgOC41MzUgNi4zMUMzOTUuMjI3IDM4OS43MjcgNDQ4IDMxNC4xODcgNDQ4IDIyNCA0NDggMTAwLjIwNSAzNDcuODE1IDAgMjI0IDB6bTAgMTYwYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6XCJdXG59O1xudmFyIGZhUG9sbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb2xsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNjgxXCIsIFwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCAzNjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYyNDBjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTI4em05NiAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZWMTQ0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djIyNHptOTYgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di02NGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY2NHpcIl1cbn07XG52YXIgZmFQb2xsSCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb2xsLWgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY2ODJcIiwgXCJNNDQ4IDQzMlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6TTExMiAxOTJjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmgxMjhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIMTEyem0wIDk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2SDExMnptMCA5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2aC02NHpcIl1cbn07XG52YXIgZmFQb28gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9vJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmZlXCIsIFwiTTQ1MS40IDM2OS4xQzQ2OC43IDM1NiA0ODAgMzM1LjQgNDgwIDMxMmMwLTM5LjgtMzIuMi03Mi03Mi03MmgtMTQuMWMxMy40LTExLjcgMjIuMS0yOC44IDIyLjEtNDggMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuOWMzLjYtMTAuMSA1LjktMjAuNyA1LjktMzIgMC01My00My05Ni05Ni05Ni01LjIgMC0xMC4yLjctMTUuMSAxLjVDMjUwLjMgMTQuNiAyNTYgMzAuNiAyNTYgNDhjMCA0NC4yLTM1LjggODAtODAgODBoLTE2Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDE5LjIgOC43IDM2LjMgMjIuMSA0OEgxMDRjLTM5LjggMC03MiAzMi4yLTcyIDcyIDAgMjMuNCAxMS4zIDQ0IDI4LjYgNTcuMUMyNi4zIDM3NC42IDAgNDA0LjEgMCA0NDBjMCAzOS44IDMyLjIgNzIgNzIgNzJoMzY4YzM5LjggMCA3Mi0zMi4yIDcyLTcyIDAtMzUuOS0yNi4zLTY1LjQtNjAuNi03MC45ek0xOTIgMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTU5LjUgMTM5QzM0MSA0MjIuOSAyOTMgNDQ4IDI1NiA0NDhzLTg1LTI1LjEtOTUuNS01M2MtMi01LjMgMi0xMSA3LjgtMTFoMTc1LjRjNS44IDAgOS44IDUuNyA3LjggMTF6TTMyMCAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYVBvb1N0b3JtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bvby1zdG9ybScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjc1YVwiLCBcIk0zMDggMzM2aC01Ny43bDE3LjMtNjQuOWMyLTcuNi0zLjctMTUuMS0xMS42LTE1LjFoLTY4Yy02IDAtMTEuMSA0LjUtMTEuOSAxMC40bC0xNiAxMjBjLTEgNy4yIDQuNiAxMy42IDExLjkgMTMuNmg1OS4zbC0yMyA5Ny4yYy0xLjggNy42IDQgMTQuOCAxMS43IDE0LjggNC4yIDAgOC4yLTIuMiAxMC40LTZsODgtMTUyYzQuNi04LTEuMi0xOC0xMC40LTE4em02Ni40LTExMS4zYzUuOS05LjYgOS42LTIwLjYgOS42LTMyLjcgMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuOWMzLjYtMTAuMSA1LjktMjAuNyA1LjktMzIgMC01My00My05Ni05Ni05Ni01LjIgMC0xMC4yLjctMTUuMSAxLjVDMjE4LjMgMTQuNiAyMjQgMzAuNiAyMjQgNDhjMCA0NC4yLTM1LjggODAtODAgODBoLTE2Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDEyLjEgMy43IDIzLjEgOS42IDMyLjdDMzIuNiAyMjggMCAyNjIuMiAwIDMwNGMwIDQ0IDM2IDgwIDgwIDgwaDQ4LjNjLjEtLjYgMC0xLjIgMC0xLjhsMTYtMTIwYzMtMjEuOCAyMS43LTM4LjIgNDMuNy0zOC4yaDY4YzEzLjggMCAyNi41IDYuMyAzNC45IDE3LjJzMTEuMiAyNC44IDcuNiAzOC4xbC02LjYgMjQuN2gxNmMxNS43IDAgMzAuMyA4LjQgMzguMSAyMiA3LjggMTMuNiA3LjggMzAuNSAwIDQ0bC04LjEgMTRoMzBjNDQgMCA4MC0zNiA4MC04MCAuMS00MS44LTMyLjUtNzYtNzMuNS03OS4zelwiXVxufTtcbnZhciBmYVBvb3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9vcCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjYxOVwiLCBcIk00NTEuMzYgMzY5LjE0QzQ2OC42NiAzNTUuOTkgNDgwIDMzNS40MSA0ODAgMzEyYzAtMzkuNzctMzIuMjQtNzItNzItNzJoLTE0LjA3YzEzLjQyLTExLjczIDIyLjA3LTI4Ljc4IDIyLjA3LTQ4IDAtMzUuMzUtMjguNjUtNjQtNjQtNjRoLTUuODhjMy41Ny0xMC4wNSA1Ljg4LTIwLjcyIDUuODgtMzIgMC01My4wMi00Mi45OC05Ni05Ni05Ni01LjE3IDAtMTAuMTUuNzQtMTUuMTEgMS41MkMyNTAuMzEgMTQuNjQgMjU2IDMwLjYyIDI1NiA0OGMwIDQ0LjE4LTM1LjgyIDgwLTgwIDgwaC0xNmMtMzUuMzUgMC02NCAyOC42NS02NCA2NCAwIDE5LjIyIDguNjUgMzYuMjcgMjIuMDcgNDhIMTA0Yy0zOS43NiAwLTcyIDMyLjIzLTcyIDcyIDAgMjMuNDEgMTEuMzQgNDMuOTkgMjguNjQgNTcuMTRDMjYuMzEgMzc0LjYyIDAgNDA0LjEyIDAgNDQwYzAgMzkuNzYgMzIuMjQgNzIgNzIgNzJoMzY4YzM5Ljc2IDAgNzItMzIuMjQgNzItNzIgMC0zNS44OC0yNi4zMS02NS4zOC02MC42NC03MC44NnpcIl1cbn07XG52YXIgZmFQb3J0cmFpdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb3J0cmFpdCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjNlMFwiLCBcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDEyOGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6bTExMiAyMzYuOGMwIDEwLjYtMTAgMTkuMi0yMi40IDE5LjJIMTAyLjRDOTAgMzg0IDgwIDM3NS40IDgwIDM2NC44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yelwiXVxufTtcbnZhciBmYVBvdW5kU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb3VuZC1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMTU0XCIsIFwiTTMwOCAzNTJoLTQ1LjQ5NWMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1MC44NDhIMTI4VjI4OGg4NGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC04NHYtNjMuNTU2YzAtMzIuMjY2IDI0LjU2Mi01Ny4wODYgNjEuNzkyLTU3LjA4NiAyMy42NTggMCA0NS44NzggMTEuNTA1IDU3LjY1MiAxOC44NDkgNS4xNTEgMy4yMTMgMTEuODg4IDIuMDUxIDE1LjY4OC0yLjY4NWwyOC40OTMtMzUuNTEzYzQuMjMzLTUuMjc2IDMuMjc5LTEzLjAwNS0yLjExOS0xNy4wODFDMjczLjEyNCA1NC41NiAyMzYuNTc2IDMyIDE4Ny45MzEgMzIgMTA2LjAyNiAzMiA0OCA4NC43NDIgNDggMTU3Ljk2MVYyMjRIMjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOHYxMjhIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMlYzNjRjMC02LjYyNy01LjM3My0xMi0xMi0xMnpcIl1cbn07XG52YXIgZmFQb3dlck9mZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb3dlci1vZmYnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMTFcIiwgXCJNNDAwIDU0LjFjNjMgNDUgMTA0IDExOC42IDEwNCAyMDEuOSAwIDEzNi44LTExMC44IDI0Ny43LTI0Ny41IDI0OEMxMjAgNTA0LjMgOC4yIDM5MyA4IDI1Ni40IDcuOSAxNzMuMSA0OC45IDk5LjMgMTExLjggNTQuMmMxMS43LTguMyAyOC00LjggMzUgNy43TDE2Mi42IDkwYzUuOSAxMC41IDMuMSAyMy44LTYuNiAzMS00MS41IDMwLjgtNjggNzkuNi02OCAxMzQuOS0uMSA5Mi4zIDc0LjUgMTY4LjEgMTY4IDE2OC4xIDkxLjYgMCAxNjguNi03NC4yIDE2OC0xNjkuMS0uMy01MS44LTI0LjctMTAxLjgtNjguMS0xMzQtOS43LTcuMi0xMi40LTIwLjUtNi41LTMwLjlsMTUuOC0yOC4xYzctMTIuNCAyMy4yLTE2LjEgMzQuOC03Ljh6TTI5NiAyNjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR6XCJdXG59O1xudmFyIGZhUHJheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcmF5JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNjgzXCIsIFwiTTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS0zMC42MyAxNjkuNzVjMTQuMDYgMTYuNzIgMzkgMTkuMDkgNTUuOTcgNS4yMmw4OC03Mi4wMmMxNy4wOS0xMy45OCAxOS41OS0zOS4xOSA1LjYyLTU2LjI4LTEzLjk3LTE3LjExLTM5LjE5LTE5LjU5LTU2LjMxLTUuNjJsLTU3LjQ0IDQ3LTM4LjkxLTQ2LjMxYy0xNS40NC0xOC4zOS0zOS4yMi0yNy45Mi02NC0yNS4zMy0yNC4xOSAyLjQ4LTQ1LjI1IDE2LjI3LTU2LjM3IDM2LjkybC00OS4zNyA5Mi4wM2MtMjMuNCA0My42NC04LjY5IDk2LjM3IDM0LjE5IDEyMy43NUwxMzEuNTYgNDMySDQwYy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwczE3LjkxIDQwIDQwIDQwaDIwOGMzNC4wOCAwIDUzLjc3LTQyLjc5IDI4LjI4LTY4LjI4TDE2Ni40MiAzMzMuODZsMzQuOC02NC44NyAyNC4xNSAyOC43NnpcIl1cbn07XG52YXIgZmFQcmF5aW5nSGFuZHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHJheWluZy1oYW5kcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjY4NFwiLCBcIk0yNzIgMTkxLjkxYy0xNy42IDAtMzIgMTQuNC0zMiAzMnY4MGMwIDguODQtNy4xNiAxNi0xNiAxNnMtMTYtNy4xNi0xNi0xNnYtNzYuNTVjMC0xNy4zOSA0LjcyLTM0LjQ3IDEzLjY5LTQ5LjM5bDc3Ljc1LTEyOS41OWM5LjA5LTE1LjE2IDQuMTktMzQuODEtMTAuOTctNDMuOTEtMTQuNDUtOC42Ny0zMi43Mi00LjMtNDIuMyA5LjIxLS4yLjIzLS42Mi4yMS0uNzkuNDhsLTExNy4yNiAxNzUuOUMxMTcuNTYgMjA1LjkgMTEyIDIyNC4zMSAxMTIgMjQzLjI5djgwLjIzbC05MC4xMiAzMC4wNEEzMS45NzQgMzEuOTc0IDAgMCAwIDAgMzgzLjkxdjk2YzAgMTAuODIgOC41MiAzMiAzMiAzMiAyLjY5IDAgNS40MS0uMzQgOC4wNi0xLjAzbDE3OS4xOS00Ni42MkMyNjkuMTYgNDQ5Ljk5IDMwNCA0MDMuOCAzMDQgMzUxLjkxdi0xMjhjMC0xNy42LTE0LjQtMzItMzItMzJ6bTM0Ni4xMiAxNjEuNzNMNTI4IDMyMy42di04MC4yM2MwLTE4Ljk4LTUuNTYtMzcuMzktMTYuMTItNTMuMjNMMzk0LjYyIDE0LjI1Yy0uMTgtLjI3LS41OS0uMjQtLjc5LS40OC05LjU4LTEzLjUxLTI3Ljg1LTE3Ljg4LTQyLjMtOS4yMS0xNS4xNiA5LjA5LTIwLjA2IDI4Ljc1LTEwLjk3IDQzLjkxbDc3Ljc1IDEyOS41OWM4Ljk3IDE0LjkyIDEzLjY5IDMyIDEzLjY5IDQ5LjM5VjMwNGMwIDguODQtNy4xNiAxNi0xNiAxNnMtMTYtNy4xNi0xNi0xNnYtODBjMC0xNy42LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ2MTI4YzAgNTEuODkgMzQuODQgOTguMDggODQuNzUgMTEyLjM0bDE3OS4xOSA0Ni42MmMyLjY2LjY5IDUuMzggMS4wMyA4LjA2IDEuMDMgMjMuNDggMCAzMi0yMS4xOCAzMi0zMnYtOTZjMC0xMy43Ny04LjgxLTI1Ljk5LTIxLjg4LTMwLjM1elwiXVxufTtcbnZhciBmYVByZXNjcmlwdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcmVzY3JpcHRpb24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1YjFcIiwgXCJNMzAxLjI2IDM1Mmw3OC4wNi03OC4wNmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEwyNTYgMzA2Ljc0bC04My45Ni04My45NkMyMTkuMzEgMjE2LjggMjU2IDE3Ni44OSAyNTYgMTI4YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2MjU2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di04MGgxOC43NWwxMjggMTI4LTc4LjA2IDc4LjA2Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBMMjU2IDM5Ny4yNWw3OC4wNiA3OC4wNmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDIyLjYzLTIyLjYzYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMMzAxLjI2IDM1MnpNNjQgOTZoOTZjMTcuNjQgMCAzMiAxNC4zNiAzMiAzMnMtMTQuMzYgMzItMzIgMzJINjRWOTZ6XCJdXG59O1xudmFyIGZhUHJlc2NyaXB0aW9uQm90dGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ByZXNjcmlwdGlvbi1ib3R0bGUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY0ODVcIiwgXCJNMzIgMTkyaDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0aDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0aDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0YzAgMTcuNiAxNC40IDMyIDMyIDMyaDI1NmMxNy42IDAgMzItMTQuNCAzMi0zMlYxMjhIMzJ2NjR6TTM2MCAwSDI0QzEwLjggMCAwIDEwLjggMCAyNHY0OGMwIDEzLjIgMTAuOCAyNCAyNCAyNGgzMzZjMTMuMiAwIDI0LTEwLjggMjQtMjRWMjRjMC0xMy4yLTEwLjgtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhUHJlc2NyaXB0aW9uQm90dGxlQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ByZXNjcmlwdGlvbi1ib3R0bGUtYWx0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDg2XCIsIFwiTTM2MCAwSDI0QzEwLjggMCAwIDEwLjggMCAyNHY0OGMwIDEzLjIgMTAuOCAyNCAyNCAyNGgzMzZjMTMuMiAwIDI0LTEwLjggMjQtMjRWMjRjMC0xMy4yLTEwLjgtMjQtMjQtMjR6TTMyIDQ4MGMwIDE3LjYgMTQuNCAzMiAzMiAzMmgyNTZjMTcuNiAwIDMyLTE0LjQgMzItMzJWMTI4SDMydjM1MnptNjQtMTg0YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OHpcIl1cbn07XG52YXIgZmFQcmludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcmludCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyZlwiLCBcIk00NDggMTkyVjc3LjI1YzAtOC40OS0zLjM3LTE2LjYyLTkuMzctMjIuNjNMMzkzLjM3IDkuMzdjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYxNjBjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzIwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjI1NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tNjQgMjU2SDEyOHYtOTZoMjU2djk2em0wLTIyNEgxMjhWNjRoMTkydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2em00OCA3MmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJdXG59O1xudmFyIGZhUHJvY2VkdXJlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcm9jZWR1cmVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDg3XCIsIFwiTTUyOCAyMjRIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MTQ0SDY0VjE0NGMwLTguOC03LjItMTYtMTYtMTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzNTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNDhoNTEydjQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzM2YzAtNjEuOS01MC4xLTExMi0xMTItMTEyek0xMzYgOTZoMTI2LjFsMjcuNiA1NS4yYzUuOSAxMS44IDIyLjcgMTEuOCAyOC42IDBMMzY4IDUxLjggMzkwLjEgOTZINTEyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQwOS45TDM4Mi4zIDguOEMzNzYuNC0zIDM1OS42LTMgMzUzLjcgOC44TDMwNCAxMDguMmwtMTkuOS0zOS44Yy0xLjQtMi43LTQuMS00LjQtNy4yLTQuNEgxMzZjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTI0IDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6XCJdXG59O1xudmFyIGZhUHJvamVjdERpYWdyYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHJvamVjdC1kaWFncmFtJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTQyXCIsIFwiTTM4NCAzMjBIMjU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDEyOGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xOTIgMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NS43Mmw3My4xNiAxMjguMDRDMjExLjk4IDMwMC45OCAyMzIuNCAyODggMjU2IDI4OGguMjhMMTkyIDE3NS41MVYxMjhoMjI0VjY0SDE5MlYzMnpNNjA4IDBINDgwYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDEyOGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhUHVtcE1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHVtcC1tZWRpY2FsJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMDZhXCIsIFwiTTIzNS41MSwxNTkuODJIODQuMjRBNjQsNjQsMCwwLDAsMjAuNTEsMjE4TC4xNCw0NDJhNjQsNjQsMCwwLDAsNjMuNzQsNjkuOGgxOTJBNjQsNjQsMCwwLDAsMzE5LjYxLDQ0MkwyOTkuMjQsMjE4QTY0LDY0LDAsMCwwLDIzNS41MSwxNTkuODJabTQuMzcsMTczLjMzYTEzLjM1LDEzLjM1LDAsMCwxLTEzLjM0LDEzLjM0aC00MHY0MGExMy4zMywxMy4zMywwLDAsMS0xMy4zMywxMy4zM0gxNDYuNTRhMTMuMzMsMTMuMzMsMCwwLDEtMTMuMzMtMTMuMzN2LTQwaC00MGExMy4zNCwxMy4zNCwwLDAsMS0xMy4zMy0xMy4zNFYzMDYuNDlhMTMuMzMsMTMuMzMsMCwwLDEsMTMuMzMtMTMuMzRoNDB2LTQwYTEzLjMzLDEzLjMzLDAsMCwxLDEzLjMzLTEzLjMzaDI2LjY3YTEzLjMzLDEzLjMzLDAsMCwxLDEzLjMzLDEzLjMzdjQwaDQwYTEzLjM0LDEzLjM0LDAsMCwxLDEzLjM0LDEzLjM0Wk0zNzkuMTksOTMuODgsMzM1Ljg3LDUwLjU2YTY0LDY0LDAsMCwwLTQ1LjI0LTE4Ljc0SDIyMy44OGEzMiwzMiwwLDAsMC0zMi0zMmgtNjRhMzIsMzIsMCwwLDAtMzIsMzJ2OTZoMTI4di0zMmg2Ni43NWw0My4zMSw0My4zMWExNiwxNiwwLDAsMCwyMi42MywwbDIyLjYyLTIyLjYyQTE2LDE2LDAsMCwwLDM3OS4xOSw5My44OFpcIl1cbn07XG52YXIgZmFQdW1wU29hcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwdW1wLXNvYXAnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUwNmJcIiwgXCJNMjM1LjYzLDE2MEg4NC4zN2E2NCw2NCwwLDAsMC02My43NCw1OC4yMUwuMjcsNDQyLjIxQTY0LDY0LDAsMCwwLDY0LDUxMkgyNTZhNjQsNjQsMCwwLDAsNjMuNzQtNjkuNzlsLTIwLjM2LTIyNEE2NCw2NCwwLDAsMCwyMzUuNjMsMTYwWk0xNjAsNDE2Yy0zMy4xMiwwLTYwLTI2LjMzLTYwLTU4Ljc1LDAtMjUsMzUuNy03NS40Nyw1Mi05Ny4yN0ExMCwxMCwwLDAsMSwxNjgsMjYwYzE2LjMzLDIxLjgsNTIsNzIuMjcsNTIsOTcuMjdDMjIwLDM4OS42NywxOTMuMTIsNDE2LDE2MCw0MTZaTTM3OS4zMSw5NC4wNiwzMzYsNTAuNzRBNjQsNjQsMCwwLDAsMjkwLjc1LDMySDIyNEEzMiwzMiwwLDAsMCwxOTIsMEgxMjhBMzIsMzIsMCwwLDAsOTYsMzJ2OTZIMjI0Vjk2aDY2Ljc1bDQzLjMxLDQzLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBsMjIuNjItMjIuNjJBMTYsMTYsMCwwLDAsMzc5LjMxLDk0LjA2WlwiXVxufTtcbnZhciBmYVB1enpsZVBpZWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3B1enpsZS1waWVjZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjEyZVwiLCBcIk01MTkuNDQyIDI4OC42NTFjLTQxLjUxOSAwLTU5LjUgMzEuNTkzLTgyLjA1OCAzMS41OTNDMzc3LjQwOSAzMjAuMjQ0IDQzMiAxNDQgNDMyIDE0NHMtMTk2LjI4OCA4MC0xOTYuMjg4LTMuMjk3YzAtMzUuODI3IDM2LjI4OC00Ni4yNSAzNi4yODgtODUuOTg1QzI3MiAxOS4yMTYgMjQzLjg4NSAwIDIxMC41MzkgMGMtMzQuNjU0IDAtNjYuMzY2IDE4Ljg5MS02Ni4zNjYgNTYuMzQ2IDAgNDEuMzY0IDMxLjcxMSA1OS4yNzcgMzEuNzExIDgxLjc1QzE3NS44ODUgMjA3LjcxOSAwIDE2Ni43NTggMCAxNjYuNzU4djMzMy4yMzdzMTc4LjYzNSA0MS4wNDcgMTc4LjYzNS0yOC42NjJjMC0yMi40NzMtNDAtNDAuMTA3LTQwLTgxLjQ3MSAwLTM3LjQ1NiAyOS4yNS01Ni4zNDYgNjMuNTc3LTU2LjM0NiAzMy42NzMgMCA2MS43ODggMTkuMjE2IDYxLjc4OCA1NC43MTcgMCAzOS43MzUtMzYuMjg4IDUwLjE1OC0zNi4yODggODUuOTg1IDAgNjAuODAzIDEyOS42NzUgMjUuNzMgMTgxLjIzIDI1LjczIDAgMC0zNC43MjUtMTIwLjEwMSAyNS44MjctMTIwLjEwMSAzNS45NjIgMCA0Ni40MjMgMzYuMTUyIDg2LjMwOCAzNi4xNTJDNTU2LjcxMiA0MTYgNTc2IDM4Ny45OSA1NzYgMzU0LjQ0M2MwLTM0LjE5OS0xOC45NjItNjUuNzkyLTU2LjU1OC02NS43OTJ6XCJdXG59O1xudmFyIGZhUXJjb2RlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3FyY29kZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAyOVwiLCBcIk0wIDIyNGgxOTJWMzJIMHYxOTJ6TTY0IDk2aDY0djY0SDY0Vjk2em0xOTItNjR2MTkyaDE5MlYzMkgyNTZ6bTEyOCAxMjhoLTY0Vjk2aDY0djY0ek0wIDQ4MGgxOTJWMjg4SDB2MTkyem02NC0xMjhoNjR2NjRINjR2LTY0em0zNTItNjRoMzJ2MTI4aC05NnYtMzJoLTMydjk2aC02NFYyODhoOTZ2MzJoNjR2LTMyem0wIDE2MGgzMnYzMmgtMzJ2LTMyem0tNjQgMGgzMnYzMmgtMzJ2LTMyelwiXVxufTtcbnZhciBmYVF1ZXN0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3F1ZXN0aW9uJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMTI4XCIsIFwiTTIwMi4wMjEgMEMxMjIuMjAyIDAgNzAuNTAzIDMyLjcwMyAyOS45MTQgOTEuMDI2Yy03LjM2MyAxMC41OC01LjA5MyAyNS4wODYgNS4xNzggMzIuODc0bDQzLjEzOCAzMi43MDljMTAuMzczIDcuODY1IDI1LjEzMiA2LjAyNiAzMy4yNTMtNC4xNDggMjUuMDQ5LTMxLjM4MSA0My42My00OS40NDkgODIuNzU3LTQ5LjQ0OSAzMC43NjQgMCA2OC44MTYgMTkuNzk5IDY4LjgxNiA0OS42MzEgMCAyMi41NTItMTguNjE3IDM0LjEzNC00OC45OTMgNTEuMTY0LTM1LjQyMyAxOS44Ni04Mi4yOTkgNDQuNTc2LTgyLjI5OSAxMDYuNDA1VjMyMGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNzIuNDcxYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNS43NzNjMC00Mi44NiAxMjUuMjY4LTQ0LjY0NSAxMjUuMjY4LTE2MC42MjdDMzc3LjUwNCA2Ni4yNTYgMjg2LjkwMiAwIDIwMi4wMjEgMHpNMTkyIDM3My40NTljLTM4LjE5NiAwLTY5LjI3MSAzMS4wNzUtNjkuMjcxIDY5LjI3MSAwIDM4LjE5NSAzMS4wNzUgNjkuMjcgNjkuMjcxIDY5LjI3czY5LjI3MS0zMS4wNzUgNjkuMjcxLTY5LjI3MS0zMS4wNzUtNjkuMjctNjkuMjcxLTY5LjI3elwiXVxufTtcbnZhciBmYVF1ZXN0aW9uQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3F1ZXN0aW9uLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1OVwiLCBcIk01MDQgMjU2YzAgMTM2Ljk5Ny0xMTEuMDQzIDI0OC0yNDggMjQ4UzggMzkyLjk5NyA4IDI1NkM4IDExOS4wODMgMTE5LjA0MyA4IDI1NiA4czI0OCAxMTEuMDgzIDI0OCAyNDh6TTI2Mi42NTUgOTBjLTU0LjQ5NyAwLTg5LjI1NSAyMi45NTctMTE2LjU0OSA2My43NTgtMy41MzYgNS4yODYtMi4zNTMgMTIuNDE1IDIuNzE1IDE2LjI1OGwzNC42OTkgMjYuMzFjNS4yMDUgMy45NDcgMTIuNjIxIDMuMDA4IDE2LjY2NS0yLjEyMiAxNy44NjQtMjIuNjU4IDMwLjExMy0zNS43OTcgNTcuMzAzLTM1Ljc5NyAyMC40MjkgMCA0NS42OTggMTMuMTQ4IDQ1LjY5OCAzMi45NTggMCAxNC45NzYtMTIuMzYzIDIyLjY2Ny0zMi41MzQgMzMuOTc2QzI0Ny4xMjggMjM4LjUyOCAyMTYgMjU0Ljk0MSAyMTYgMjk2djRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0xLjMzM2MwLTI4LjQ2MiA4My4xODYtMjkuNjQ3IDgzLjE4Ni0xMDYuNjY3IDAtNTguMDAyLTYwLjE2NS0xMDItMTE2LjUzMS0xMDJ6TTI1NiAzMzhjLTI1LjM2NSAwLTQ2IDIwLjYzNS00NiA0NiAwIDI1LjM2NCAyMC42MzUgNDYgNDYgNDZzNDYtMjAuNjM2IDQ2LTQ2YzAtMjUuMzY1LTIwLjYzNS00Ni00Ni00NnpcIl1cbn07XG52YXIgZmFRdWlkZGl0Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncXVpZGRpdGNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDU4XCIsIFwiTTI1Ni41IDIxNi44TDM0My4yIDMyNnMtMTYuNiAxMDIuNC03Ni42IDE1MC4xQzIwNi43IDUyMy44IDAgNTEwLjIgMCA1MTAuMnMzLjgtMjMuMSAxMS01NS40bDk0LjYtMTEyLjJjNC00LjctLjktMTEuNi02LjYtOS41bC02MC40IDIyLjFjMTQuNC00MS43IDMyLjctODAgNTQuNi05Ny41IDU5LjktNDcuOCAxNjMuMy00MC45IDE2My4zLTQwLjl6bTIzOCAxMzVjLTQ0IDAtNzkuOCAzNS44LTc5LjggNzkuOSAwIDQ0LjEgMzUuNyA3OS45IDc5LjggNzkuOSA0NC4xIDAgNzkuOC0zNS44IDc5LjgtNzkuOSAwLTQ0LjItMzUuOC03OS45LTc5LjgtNzkuOXpNNjM2LjUgMzFMNjE2LjcgNmMtNS41LTYuOS0xNS41LTgtMjIuNC0yLjZMMzYxLjggMTgxLjNsLTM0LjEtNDNjLTUuMS02LjQtMTUuMS01LjItMTguNiAyLjJsLTI1LjMgNTQuNiA4Ni43IDEwOS4yIDU4LjgtMTIuNGM4LTEuNyAxMS40LTExLjIgNi4zLTE3LjZsLTM0LjEtNDIuOUw2MzQgNTMuNWM2LjktNS41IDgtMTUuNiAyLjUtMjIuNXpcIl1cbn07XG52YXIgZmFRdW90ZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncXVvdGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEwZFwiLCBcIk00NjQgMjU2aC04MHYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtOGMtODguNCAwLTE2MCA3MS42LTE2MCAxNjB2MjQwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg5NnYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtOEM3MS42IDMyIDAgMTAzLjYgMCAxOTJ2MjQwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhUXVvdGVSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdxdW90ZS1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEwZVwiLCBcIk00NjQgMzJIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxMjhjMCAyNi41IDIxLjUgNDggNDggNDhoODB2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDhjODguNCAwIDE2MC03MS42IDE2MC0xNjBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFRdXJhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdxdXJhbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjY4N1wiLCBcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0zMDEuMDggMTQ1LjgyYy42LTEuMjEgMS43Ni0xLjgyIDIuOTItMS44MnMyLjMyLjYxIDIuOTIgMS44MmwxMS4xOCAyMi42NSAyNSAzLjYzYzIuNjcuMzkgMy43NCAzLjY3IDEuODEgNS41NmwtMTguMDkgMTcuNjMgNC4yNyAyNC44OWMuMzYgMi4xMS0xLjMxIDMuODItMy4yMSAzLjgyLS41IDAtMS4wMi0uMTItMS41Mi0uMzhMMzA0IDIxMS44N2wtMjIuMzYgMTEuNzVjLS41LjI2LTEuMDIuMzgtMS41Mi4zOC0xLjkgMC0zLjU3LTEuNzEtMy4yMS0zLjgybDQuMjctMjQuODktMTguMDktMTcuNjNjLTEuOTQtMS44OS0uODctNS4xNyAxLjgxLTUuNTZsMjQuOTktMy42MyAxMS4xOS0yMi42NXptLTU3Ljg5LTY5LjAxYzEzLjY3IDAgMjcuMjYgMi40OSA0MC4zOCA3LjQxYTYuNzc1IDYuNzc1IDAgMSAxLTIuMzggMTMuMTJjLS42NyAwLTMuMDktLjIxLTQuMTMtLjIxLTUyLjMxIDAtOTQuODYgNDIuNTUtOTQuODYgOTQuODYgMCA1Mi4zIDQyLjU1IDk0Ljg2IDk0Ljg2IDk0Ljg2IDEuMDMgMCAzLjQ4LS4yMSA0LjEzLS4yMSAzLjkzIDAgNi44IDMuMTQgNi44IDYuNzggMCAyLjk4LTEuOTQgNS41MS00LjYyIDYuNDItMTMuMDcgNC44Ny0yNi41OSA3LjM0LTQwLjE5IDcuMzRDMTc5LjY3IDMwNy4xOSAxMjggMjU1LjUxIDEyOCAxOTJjMC02My41MiA1MS42Ny0xMTUuMTkgMTE1LjE5LTExNS4xOXpNMzgwLjggNDQ4SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHY2NHpcIl1cbn07XG52YXIgZmFSYWRpYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmFkaWF0aW9uJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmN2I5XCIsIFwiTTMyOC4yIDI1NS44aDE1MS42YzkuMSAwIDE2LjgtNy43IDE2LjItMTYuOC01LjEtNzUuOC00NC40LTE0Mi4yLTEwMi41LTE4NC4yLTcuNC01LjMtMTcuOS0yLjktMjIuNyA0LjhMMjkwLjQgMTg4YzIyLjYgMTQuMyAzNy44IDM5LjIgMzcuOCA2Ny44em0tMzcuOCA2Ny43Yy0xMi4zIDcuNy0yNi44IDEyLjQtNDIuNCAxMi40LTE1LjYgMC0zMC00LjctNDIuNC0xMi40TDEyNS4yIDQ1MmMtNC44IDcuNy0yLjQgMTguMSA1LjYgMjIuNEMxNjUuNyA0OTMuMiAyMDUuNiA1MDQgMjQ4IDUwNHM4Mi4zLTEwLjggMTE3LjItMjkuNmM4LTQuMyAxMC40LTE0LjggNS42LTIyLjRsLTgwLjQtMTI4LjV6TTI0OCAzMDMuOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OC00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bS0yMzEuOC00OGgxNTEuNmMwLTI4LjYgMTUuMi01My41IDM3LjgtNjcuN0wxMjUuMiA1OS43Yy00LjgtNy43LTE1LjMtMTAuMi0yMi43LTQuOEM0NC40IDk2LjkgNS4xIDE2My4zIDAgMjM5LjFjLS42IDkgNy4xIDE2LjcgMTYuMiAxNi43elwiXVxufTtcbnZhciBmYVJhZGlhdGlvbkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyYWRpYXRpb24tYWx0JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmN2JhXCIsIFwiTTMxMiAyNTZoNzkuMWM5LjIgMCAxNi45LTcuNyAxNi0xNi44LTQuNi00My42LTI3LTgxLjgtNTkuNS0xMDcuOC03LjYtNi4xLTE4LjgtNC41LTI0IDMuOEwyODEuOSAyMDJjMTggMTEuMiAzMC4xIDMxLjIgMzAuMSA1NHptLTk3LjggNTQuMUwxNzIuNCAzNzdjLTQuOSA3LjgtMi40IDE4LjQgNS44IDIyLjUgMjEuMSAxMC40IDQ0LjcgMTYuNSA2OS44IDE2LjVzNDguNy02LjEgNjkuOS0xNi41YzguMi00LjEgMTAuNi0xNC43IDUuOC0yMi41bC00MS44LTY2LjljLTkuOCA2LjItMjEuNCA5LjktMzMuOCA5LjlzLTI0LjEtMy43LTMzLjktOS45ek0xMDQuOSAyNTZIMTg0YzAtMjIuOCAxMi4xLTQyLjggMzAuMi01NC4xbC00MS43LTY2LjhjLTUuMi04LjMtMTYuNC05LjktMjQtMy44LTMyLjYgMjYtNTQuOSA2NC4yLTU5LjUgMTA3LjgtMS4xIDkuMiA2LjcgMTYuOSAxNS45IDE2Ljl6TTI0OCA1MDRjMTM3IDAgMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OHptMC00MzJjMTAxLjUgMCAxODQgODIuNSAxODQgMTg0cy04Mi41IDE4NC0xODQgMTg0UzY0IDM1Ny41IDY0IDI1NiAxNDYuNSA3MiAyNDggNzJ6bTAgMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnpcIl1cbn07XG52YXIgZmFSYWluYm93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JhaW5ib3cnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY3NWJcIiwgXCJNMjY4LjMgMzIuN0MxMTUuNCA0Mi45IDAgMTc2LjkgMCAzMzAuMlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBDNjQgMTg2LjggMTgwLjkgODAuMyAzMTcuNSA5Ny45IDQzMC40IDExMi40IDUxMiAyMTQgNTEyIDMyNy44VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTE2NS4zLTE0MC0yOTguNi0zMDcuNy0yODcuM3ptLTUuNiA5Ni45QzE2NiAxNDIgOTYgMjI5LjEgOTYgMzI2LjdWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtNzQuOCA2NC41LTEzNC44IDE0MC44LTEyNy40IDY2LjUgNi41IDExNS4yIDY2LjIgMTE1LjIgMTMzLjFWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtMTE0LjItMTAwLjItMjA1LjQtMjE3LjMtMTkwLjR6bTYuMiA5Ni4zYy00NS42IDguOS03Ni45IDUxLjUtNzYuOSA5Ny45VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTE3LjYgMTQuMy0zMiAzMi0zMnMzMiAxNC40IDMyIDMydjE0NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTU5LjItNTMuOC0xMDYtMTE1LjEtOTQuMXpcIl1cbn07XG52YXIgZmFSYW5kb20gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmFuZG9tJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDc0XCIsIFwiTTUwNC45NzEgMzU5LjAyOWM5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFsLTgwIDc5Ljk4NGMtMTUuMDEgMTUuMDEtNDAuOTcxIDQuNDktNDAuOTcxLTE2Ljk3MVY0MTZoLTU4Ljc4NWExMi4wMDQgMTIuMDA0IDAgMCAxLTguNzczLTMuODEybC03MC41NTYtNzUuNTk2IDUzLjMzMy01Ny4xNDNMMzUyIDMzNmgzMnYtMzkuOTgxYzAtMjEuNDM4IDI1Ljk0My0zMS45OTggNDAuOTcxLTE2Ljk3MWw4MCA3OS45ODF6TTEyIDE3Nmg4NGw1Mi43ODEgNTYuNTUxIDUzLjMzMy01Ny4xNDMtNzAuNTU2LTc1LjU5NkExMS45OTkgMTEuOTk5IDAgMCAwIDEyMi43ODUgOTZIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMzcyIDB2MzkuOTg0YzAgMjEuNDYgMjUuOTYxIDMxLjk4IDQwLjk3MSAxNi45NzFsODAtNzkuOTg0YzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MWwtODAtNzkuOTgxQzQwOS45NDMgMjQuMDIxIDM4NCAzNC41ODIgMzg0IDU2LjAxOVY5NmgtNTguNzg1YTEyLjAwNCAxMi4wMDQgMCAwIDAtOC43NzMgMy44MTJMOTYgMzM2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjU2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTEwLjc4NWMzLjMyNiAwIDYuNTAzLTEuMzgxIDguNzczLTMuODEyTDM1MiAxNzZoMzJ6XCJdXG59O1xudmFyIGZhUmVjZWlwdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWNlaXB0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTQzXCIsIFwiTTM1OC40IDMuMkwzMjAgNDggMjY1LjYgMy4yYTE1LjkgMTUuOSAwIDAgMC0xOS4yIDBMMTkyIDQ4IDEzNy42IDMuMmExNS45IDE1LjkgMCAwIDAtMTkuMiAwTDY0IDQ4IDI1LjYgMy4yQzE1LTQuNyAwIDIuOCAwIDE2djQ4MGMwIDEzLjIgMTUgMjAuNyAyNS42IDEyLjhMNjQgNDY0bDU0LjQgNDQuOGExNS45IDE1LjkgMCAwIDAgMTkuMiAwTDE5MiA0NjRsNTQuNCA0NC44YTE1LjkgMTUuOSAwIDAgMCAxOS4yIDBMMzIwIDQ2NGwzOC40IDQ0LjhjMTAuNSA3LjkgMjUuNi40IDI1LjYtMTIuOFYxNmMwLTEzLjItMTUtMjAuNy0yNS42LTEyLjh6TTMyMCAzNjBjMCA0LjQtMy42IDgtOCA4SDcyYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgyNDBjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEg3MmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMjQwYzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhINzJjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDI0MGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJdXG59O1xudmFyIGZhUmVjb3JkVmlueWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVjb3JkLXZpbnlsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmOGQ5XCIsIFwiTTI1NiAxNTJhMTA0IDEwNCAwIDEgMCAxMDQgMTA0IDEwNCAxMDQgMCAwIDAtMTA0LTEwNHptMCAxMjhhMjQgMjQgMCAxIDEgMjQtMjQgMjQgMjQgMCAwIDEtMjQgMjR6bTAtMjcyQzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgMzc2YTEyOCAxMjggMCAxIDEgMTI4LTEyOCAxMjggMTI4IDAgMCAxLTEyOCAxMjh6XCJdXG59O1xudmFyIGZhUmVjeWNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWN5Y2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWI4XCIsIFwiTTE4NC41NjEgMjYxLjkwM2MzLjIzMiAxMy45OTctMTIuMTIzIDI0LjYzNS0yNC4wNjggMTcuMTY4bC00MC43MzYtMjUuNDU1LTUwLjg2NyA4MS40MDJDNTUuNjA2IDM1Ni4yNzMgNzAuOTYgMzg0IDk2LjAxMiAzODRIMTQ4YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg5Ni4xMTVjLTc1LjMzNCAwLTEyMS4zMDItODMuMDQ4LTgxLjQwOC0xNDYuODhsNTAuODIyLTgxLjM4OC00MC43MjUtMjUuNDQ4Yy0xMi4wODEtNy41NDctOC45NjYtMjUuOTYxIDQuODc5LTI5LjE1OGwxMTAuMjM3LTI1LjQ1YzguNjExLTEuOTg4IDE3LjIwMSAzLjM4MSAxOS4xODkgMTEuOTlsMjUuNDUyIDExMC4yMzd6bTk4LjU2MS0xODIuOTE1bDQxLjI4OSA2Ni4wNzYtNDAuNzQgMjUuNDU3Yy0xMi4wNTEgNy41MjgtOSAyNS45NTMgNC44NzkgMjkuMTU4bDExMC4yMzcgMjUuNDVjOC42NzIgMS45OTkgMTcuMjE1LTMuNDM4IDE5LjE4OS0xMS45OWwyNS40NS0xMTAuMjM3YzMuMTk3LTEzLjg0NC0xMS45OS0yNC43MTktMjQuMDY4LTE3LjE2OGwtNDAuNjg3IDI1LjQyNC00MS4yNjMtNjYuMDgyYy0zNy41MjEtNjAuMDMzLTEyNS4yMDktNjAuMTcxLTE2Mi44MTYgMGwtMTcuOTYzIDI4Ljc2NmMtMy41MSA1LjYyLTEuOCAxMy4wMjEgMy44MiAxNi41MzNsMzMuOTE5IDIxLjE5NWM1LjYyIDMuNTEyIDEzLjAyNCAxLjgwMyAxNi41MzYtMy44MTdsMTcuOTYxLTI4Ljc0M2MxMi43MTItMjAuMzQxIDQxLjk3My0xOS42NzYgNTQuMjU3LS4wMjJ6TTQ5Ny4yODggMzAxLjEybC0yNy41MTUtNDQuMDY1Yy0zLjUxMS01LjYyMy0xMC45MTYtNy4zMzQtMTYuNTM4LTMuODIxbC0zMy44NjEgMjEuMTU5Yy01LjYyIDMuNTEyLTcuMzMgMTAuOTE1LTMuODE4IDE2LjUzNmwyNy41NjQgNDQuMTEyYzEzLjI1NyAyMS4yMTEtMi4wNTcgNDguOTYtMjcuMTM2IDQ4Ljk2SDMyMFYzMzYuMDJjMC0xNC4yMTMtMTcuMjQyLTIxLjM4My0yNy4zMTMtMTEuMzEzbC04MCA3OS45ODFjLTYuMjQ5IDYuMjQ4LTYuMjQ5IDE2LjM3OSAwIDIyLjYyN2w4MCA3OS45ODlDMzAyLjY4OSA1MTcuMzA4IDMyMCA1MTAuMyAzMjAgNDk1Ljk4OVY0NDhoOTUuODhjNzUuMjc0IDAgMTIxLjMzNS04Mi45OTcgODEuNDA4LTE0Ni44OHpcIl1cbn07XG52YXIgZmFSZWRvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlZG8nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMWVcIiwgXCJNNTAwLjMzIDBoLTQ3LjQxYTEyIDEyIDAgMCAwLTEyIDEyLjU3bDQgODIuNzZBMjQ3LjQyIDI0Ny40MiAwIDAgMCAyNTYgOEMxMTkuMzQgOCA3LjkgMTE5LjUzIDggMjU2LjE5IDguMSAzOTMuMDcgMTE5LjEgNTA0IDI1NiA1MDRhMjQ3LjEgMjQ3LjEgMCAwIDAgMTY2LjE4LTYzLjkxIDEyIDEyIDAgMCAwIC40OC0xNy40M2wtMzQtMzRhMTIgMTIgMCAwIDAtMTYuMzgtLjU1QTE3NiAxNzYgMCAxIDEgNDAyLjEgMTU3LjhsLTEwMS41My00Ljg3YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEyaDIwMC4zM2ExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMnpcIl1cbn07XG52YXIgZmFSZWRvQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlZG8tYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmY5XCIsIFwiTTI1Ni40NTUgOGM2Ni4yNjkuMTE5IDEyNi40MzcgMjYuMjMzIDE3MC44NTkgNjguNjg1bDM1LjcxNS0zNS43MTVDNDc4LjE0OSAyNS44NTEgNTA0IDM2LjU1OSA1MDQgNTcuOTQxVjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMzQ1Ljk0MWMtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNDEuNzUtNDEuNzVjLTMwLjg2NC0yOC44OTktNzAuODAxLTQ0LjkwNy0xMTMuMjMtNDUuMjczLTkyLjM5OC0uNzk4LTE3MC4yODMgNzMuOTc3LTE2OS40ODQgMTY5LjQ0MkM4OC43NjQgMzQ4LjAwOSAxNjIuMTg0IDQyNCAyNTYgNDI0YzQxLjEyNyAwIDc5Ljk5Ny0xNC42NzggMTEwLjYyOS00MS41NTYgNC43NDMtNC4xNjEgMTEuOTA2LTMuOTA4IDE2LjM2OC41NTNsMzkuNjYyIDM5LjY2MmM0Ljg3MiA0Ljg3MiA0LjYzMSAxMi44MTUtLjQ4MiAxNy40MzNDMzc4LjIwMiA0NzkuODEzIDMxOS45MjYgNTA0IDI1NiA1MDQgMTE5LjAzNCA1MDQgOC4wMDEgMzkyLjk2NyA4IDI1Ni4wMDIgNy45OTkgMTE5LjE5MyAxMTkuNjQ2IDcuNzU1IDI1Ni40NTUgOHpcIl1cbn07XG52YXIgZmFSZWdpc3RlcmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlZ2lzdGVyZWQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNWRcIiwgXCJNMjg1LjM2MyAyMDcuNDc1YzAgMTguNi05LjgzMSAyOC40MzEtMjguNDMxIDI4LjQzMWgtMjkuODc2di01Ni4xNGgyMy4zNzhjMjguNjY4IDAgMzQuOTI5IDguNzczIDM0LjkyOSAyNy43MDl6TTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4ek0zNjMuNDExIDM2MC40MTRjLTQ2LjcyOS04NC44MjUtNDMuMjk5LTc4LjYzNi00NC43MDItODAuOTggMjMuNDMyLTE1LjE3MiAzNy45NDUtNDIuOTc5IDM3Ljk0NS03NC40ODYgMC01NC4yNDQtMzEuNS04OS4yNTItMTA1LjQ5OC04OS4yNTJoLTcwLjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0VjM3MmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjIuNTY3YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNzEuNjYzaDI1LjU1Nmw0NC4xMjkgODIuOTM3YTI0LjAwMSAyNC4wMDEgMCAwIDAgMjEuMTg4IDEyLjcyN2gyNC40NjRjMTguMjYxLS4wMDEgMjkuODI5LTE5LjU5MSAyMS4wMTgtMzUuNTg3elwiXVxufTtcbnZhciBmYVJlbW92ZUZvcm1hdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZW1vdmUtZm9ybWF0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmODdkXCIsIFwiTTMzNiA0MTZoLTExLjE3bDkuMjYtMjcuNzdMMjY3IDMzNi40IDI0MC40OSA0MTZIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTI5Ny44MiA0Mi4xTDM3NyAyNTkuNTkgNDI2LjE3IDExMkg1NDR2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djQzLjlMNDUuNDYgMy4zOEExNiAxNiAwIDAgMCAyMyA2LjE5TDMuMzcgMzEuNDZhMTYgMTYgMCAwIDAgMi44MSAyMi40NWw1ODguMzYgNDU0LjcyYTE2IDE2IDAgMCAwIDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdhMTYgMTYgMCAwIDAtMi44Mi0yMi40NXpNMzA5LjkxIDIwNy43NkwyMjQgMTQxLjM2VjExMmgxMTcuODN6XCJdXG59O1xudmFyIGZhUmVwbHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVwbHknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzZTVcIiwgXCJNOC4zMDkgMTg5LjgzNkwxODQuMzEzIDM3Ljg1MUMxOTkuNzE5IDI0LjU0NiAyMjQgMzUuMzQ3IDIyNCA1Ni4wMTV2ODAuMDUzYzE2MC42MjkgMS44MzkgMjg4IDM0LjAzMiAyODggMTg2LjI1OCAwIDYxLjQ0MS0zOS41ODEgMTIyLjMwOS04My4zMzMgMTU0LjEzMi0xMy42NTMgOS45MzEtMzMuMTExLTIuNTMzLTI4LjA3Ny0xOC42MzEgNDUuMzQ0LTE0NS4wMTItMjEuNTA3LTE4My41MS0xNzYuNTktMTg1Ljc0MlYzNjBjMCAyMC43LTI0LjMgMzEuNDUzLTM5LjY4NyAxOC4xNjRsLTE3Ni4wMDQtMTUyYy0xMS4wNzEtOS41NjItMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHpcIl1cbn07XG52YXIgZmFSZXBseUFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZXBseS1hbGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxMjJcIiwgXCJNMTM2LjMwOSAxODkuODM2TDMxMi4zMTMgMzcuODUxQzMyNy43MiAyNC41NDYgMzUyIDM1LjM0OCAzNTIgNTYuMDE1djgyLjc2M2MxMjkuMTgyIDEwLjIzMSAyMjQgNTIuMjEyIDIyNCAxODMuNTQ4IDAgNjEuNDQxLTM5LjU4MiAxMjIuMzA5LTgzLjMzMyAxNTQuMTMyLTEzLjY1MyA5LjkzMS0zMy4xMTEtMi41MzMtMjguMDc3LTE4LjYzMSAzOC41MTItMTIzLjE2Mi0zLjkyMi0xNjkuNDgyLTExMi41OS0xODIuMDE1djg0LjE3NWMwIDIwLjcwMS0yNC4zIDMxLjQ1My0zOS42ODcgMTguMTY0TDEzNi4zMDkgMjI2LjE2NGMtMTEuMDcxLTkuNTYxLTExLjA4Ni0yNi43NTMgMC0zNi4zMjh6bS0xMjggMzYuMzI4TDE4NC4zMTMgMzc4LjE1QzE5OS43IDM5MS40MzkgMjI0IDM4MC42ODcgMjI0IDM1OS45ODZ2LTE1LjgxOGwtMTA4LjYwNi05My43ODVBNTUuOTYgNTUuOTYgMCAwIDEgOTYgMjA3Ljk5OGE1NS45NTMgNTUuOTUzIDAgMCAxIDE5LjM5My00Mi4zOEwyMjQgNzEuODMyVjU2LjAxNWMwLTIwLjY2Ny0yNC4yOC0zMS40NjktMzkuNjg3LTE4LjE2NEw4LjMwOSAxODkuODM2Yy0xMS4wODYgOS41NzUtMTEuMDcxIDI2Ljc2NyAwIDM2LjMyOHpcIl1cbn07XG52YXIgZmFSZXB1YmxpY2FuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlcHVibGljYW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3NWVcIiwgXCJNNTQ0IDE5MmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MEgxNjBDNzEuNiAzMiAwIDEwMy42IDAgMTkydjY0aDU0NHYtNjR6bS0zNjcuNy0yMS42bC0xOS44IDE5LjMgNC43IDI3LjNjLjggNC45LTQuMyA4LjYtOC43IDYuM0wxMjggMjEwLjRsLTI0LjUgMTIuOWMtNC4zIDIuMy05LjUtMS40LTguNy02LjNsNC43LTI3LjMtMTkuOC0xOS4zYy0zLjYtMy41LTEuNi05LjUgMy4zLTEwLjJsMjcuNC00IDEyLjItMjQuOGMyLjItNC41IDguNi00LjQgMTAuNyAwbDEyLjIgMjQuOCAyNy40IDRjNSAuNyA2LjkgNi43IDMuNCAxMC4yem0xNDQgMGwtMTkuOCAxOS4zIDQuNyAyNy4zYy44IDQuOS00LjMgOC42LTguNyA2LjNMMjcyIDIxMC40bC0yNC41IDEyLjljLTQuMyAyLjMtOS41LTEuNC04LjctNi4zbDQuNy0yNy4zLTE5LjgtMTkuM2MtMy42LTMuNS0xLjYtOS41IDMuMy0xMC4ybDI3LjQtNCAxMi4yLTI0LjhjMi4yLTQuNSA4LjYtNC40IDEwLjcgMGwxMi4yIDI0LjggMjcuNCA0YzUgLjcgNi45IDYuNyAzLjQgMTAuMnptMTQ0IDBsLTE5LjggMTkuMyA0LjcgMjcuM2MuOCA0LjktNC4zIDguNi04LjcgNi4zTDQxNiAyMTAuNGwtMjQuNSAxMi45Yy00LjMgMi4zLTkuNS0xLjQtOC43LTYuM2w0LjctMjcuMy0xOS44LTE5LjNjLTMuNi0zLjUtMS42LTkuNSAzLjMtMTAuMmwyNy40LTQgMTIuMi0yNC44YzIuMi00LjUgOC42LTQuNCAxMC43IDBsMTIuMiAyNC44IDI3LjQgNGM1IC43IDYuOSA2LjcgMy40IDEwLjJ6TTYyNCAzMjBoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4SDB2MTc2YzAgOC44IDcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZ2LTgwaDE5MnY4MGMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2VjM1MmgzMnY0My4zYzAgNDEuOCAzMCA4MC4xIDcxLjYgODQuMyA0Ny44IDQuOSA4OC40LTMyLjcgODguNC03OS42di02NGMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhUmVzdHJvb20gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVzdHJvb20nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3YmRcIiwgXCJNMTI4IDEyOGMzNS4zIDAgNjQtMjguNyA2NC02NFMxNjMuMyAwIDEyOCAwIDY0IDI4LjcgNjQgNjRzMjguNyA2NCA2NCA2NHptMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRTNTQ3LjMgMCA1MTIgMHMtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0xMjcuMyAyMjYuNWwtNDUuNi0xODUuOGMtMy4zLTEzLjUtMTUuNS0yMy0yOS44LTI0LjItMTUgOS43LTMyLjggMTUuNS01MiAxNS41LTE5LjIgMC0zNy01LjgtNTItMTUuNS0xNC4zIDEuMi0yNi41IDEwLjctMjkuOCAyNC4ybC00NS42IDE4NS44QzM4MSAzNjkuNiAzOTMgMzg0IDQwOS4yIDM4NEg0NjR2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjM4NGg1NC44YzE2LjIgMCAyOC4yLTE0LjQgMjQuNS0yOS41ek0zMzYgMGgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0ODBjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZ6TTE4MC4xIDE0NC40Yy0xNSA5LjgtMzIuOSAxNS42LTUyLjEgMTUuNi0xOS4yIDAtMzcuMS01LjgtNTIuMS0xNS42QzUxLjMgMTQ2LjUgMzIgMTY2LjkgMzIgMTkydjEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4djEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzNTJoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxOTJjMC0yNS4xLTE5LjMtNDUuNS00My45LTQ3LjZ6XCJdXG59O1xudmFyIGZhUmV0d2VldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZXR3ZWV0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMDc5XCIsIFwiTTYyOS42NTcgMzQzLjU5OEw1MjguOTcxIDQ0NC4yODRjLTkuMzczIDkuMzcyLTI0LjU2OCA5LjM3Mi0zMy45NDEgMEwzOTQuMzQzIDM0My41OThjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MWwxMC44MjMtMTAuODIzYzkuNTYyLTkuNTYyIDI1LjEzMy05LjM0IDM0LjQxOS40OTJMNDgwIDM0Mi4xMThWMTYwSDI5Mi40NTFhMjQuMDA1IDI0LjAwNSAwIDAgMS0xNi45NzEtNy4wMjlsLTE2LTE2QzI0NC4zNjEgMTIxLjg1MSAyNTUuMDY5IDk2IDI3Ni40NTEgOTZINTIwYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYyMjIuMTE4bDQwLjQxNi00Mi43OTJjOS4yODUtOS44MzEgMjQuODU2LTEwLjA1NCAzNC40MTktLjQ5MmwxMC44MjMgMTAuODIzYzkuMzcyIDkuMzcyIDkuMzcyIDI0LjU2OS0uMDAxIDMzLjk0MXptLTI2NS4xMzggMTUuNDMxQTIzLjk5OSAyMy45OTkgMCAwIDAgMzQ3LjU0OCAzNTJIMTYwVjE2OS44ODFsNDAuNDE2IDQyLjc5MmM5LjI4NiA5LjgzMSAyNC44NTYgMTAuMDU0IDM0LjQxOS40OTFsMTAuODIyLTEwLjgyMmM5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMMTQ0Ljk3MSA2Ny43MTZjLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMEwxMC4zNDMgMTY4LjQwMmMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDEwLjgyMiAxMC44MjJjOS41NjIgOS41NjIgMjUuMTMzIDkuMzQgMzQuNDE5LS40OTFMOTYgMTY5Ljg4MVYzOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDI0My41NDljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTE2LjAwMS0xNnpcIl1cbn07XG52YXIgZmFSaWJib24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmliYm9uJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNGQ2XCIsIFwiTTYuMSA0NDQuM2MtOS42IDEwLjgtNy41IDI3LjYgNC41IDM1LjdsNjguOCAyNy45YzkuOSA2LjcgMjMuMyA1IDMxLjMtMy44bDkxLjgtMTAxLjktNzkuMi04Ny45LTExNy4yIDEzMHptNDM1LjggMHMtMjkyLTMyNC42LTI5NS40LTMzMC4xYzE1LjQtOC40IDQwLjItMTcuOSA3Ny41LTE3LjlzNjIuMSA5LjUgNzcuNSAxNy45Yy0zLjMgNS42LTU2IDY0LjYtNTYgNjQuNmw3OS4xIDg3LjcgMzQuMi0zOGMyOC43LTMxLjkgMzMuMy03OC42IDExLjQtMTE1LjVsLTQzLjctNzMuNWMtNC4zLTcuMi05LjktMTMuMy0xNi44LTE4LTQwLjctMjcuNi0xMjcuNC0yOS43LTE3MS40IDAtNi45IDQuNy0xMi41IDEwLjgtMTYuOCAxOGwtNDMuNiA3My4yYy0xLjUgMi41LTM3LjEgNjIuMiAxMS41IDExNkwzMzcuNSA1MDRjOCA4LjkgMjEuNCAxMC41IDMxLjMgMy44bDY4LjgtMjcuOWMxMS45LTggMTQtMjQuOCA0LjMtMzUuNnpcIl1cbn07XG52YXIgZmFSaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3MGJcIiwgXCJNMjU2IDY0QzExMC4wNiA2NCAwIDEyNS45MSAwIDIwOHY5OC4xM0MwIDM4NC40OCAxMTQuNjIgNDQ4IDI1NiA0NDhzMjU2LTYzLjUyIDI1Ni0xNDEuODdWMjA4YzAtODIuMDktMTEwLjA2LTE0NC0yNTYtMTQ0em0wIDY0YzEwNi4wNCAwIDE5MiAzNS44MiAxOTIgODAgMCA5LjI2LTMuOTcgMTguMTItMTAuOTEgMjYuMzlDMzkyLjE1IDIwOC4yMSAzMjguMjMgMTkyIDI1NiAxOTJzLTEzNi4xNSAxNi4yMS0xODEuMDkgNDIuMzlDNjcuOTcgMjI2LjEyIDY0IDIxNy4yNiA2NCAyMDhjMC00NC4xOCA4NS45Ni04MCAxOTItODB6TTEyMC40MyAyNjQuNjRDMTU1LjA0IDI0OS45MyAyMDEuNjQgMjQwIDI1NiAyNDBzMTAwLjk2IDkuOTMgMTM1LjU3IDI0LjY0QzM1Ni44NCAyNzkuMDcgMzA4LjkzIDI4OCAyNTYgMjg4cy0xMDAuODQtOC45My0xMzUuNTctMjMuMzZ6XCJdXG59O1xudmFyIGZhUm9hZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2FkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDE4XCIsIFwiTTU3My4xOSA0MDIuNjdsLTEzOS43OS0zMjBDNDI4LjQzIDcxLjI5IDQxNy42IDY0IDQwNS42OCA2NGgtOTcuNTlsMi40NSAyMy4xNmMuNSA0LjcyLTMuMjEgOC44NC03Ljk2IDguODRoLTI5LjE2Yy00Ljc1IDAtOC40Ni00LjEyLTcuOTYtOC44NEwyNjcuOTEgNjRoLTk3LjU5Yy0xMS45MyAwLTIyLjc2IDcuMjktMjcuNzMgMTguNjdMMi44IDQwMi42N0MtNi40NSA0MjMuODYgOC4zMSA0NDggMzAuNTQgNDQ4aDE5Ni44NGwxMC4zMS05Ny42OGMuODYtOC4xNCA3LjcyLTE0LjMyIDE1LjkxLTE0LjMyaDY4LjhjOC4xOSAwIDE1LjA1IDYuMTggMTUuOTEgMTQuMzJMMzQ4LjYyIDQ0OGgxOTYuODRjMjIuMjMgMCAzNi45OS0yNC4xNCAyNy43My00NS4zM3pNMjYwLjQgMTM1LjE2YTggOCAwIDAgMSA3Ljk2LTcuMTZoMzkuMjljNC4wOSAwIDcuNTMgMy4wOSA3Ljk2IDcuMTZsNC42IDQzLjU4Yy43NSA3LjA5LTQuODEgMTMuMjYtMTEuOTMgMTMuMjZoLTQwLjU0Yy03LjEzIDAtMTIuNjgtNi4xNy0xMS45My0xMy4yNmw0LjU5LTQzLjU4ek0zMTUuNjQgMzA0aC01NS4yOWMtOS41IDAtMTYuOTEtOC4yMy0xNS45MS0xNy42OGw1LjA3LTQ4Yy44Ni04LjE0IDcuNzItMTQuMzIgMTUuOTEtMTQuMzJoNDUuMTVjOC4xOSAwIDE1LjA1IDYuMTggMTUuOTEgMTQuMzJsNS4wNyA0OGMxIDkuNDUtNi40MSAxNy42OC0xNS45MSAxNy42OHpcIl1cbn07XG52YXIgZmFSb2JvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2JvdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU0NFwiLCBcIk0zMiwyMjRINjRWNDE2SDMyQTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLDAsMzg0VjI1NkEzMS45NjE2NiwzMS45NjE2NiwwLDAsMSwzMiwyMjRabTUxMi00OFY0NDhhNjQuMDYzMjgsNjQuMDYzMjgsMCwwLDEtNjQsNjRIMTYwYTY0LjA2MzI4LDY0LjA2MzI4LDAsMCwxLTY0LTY0VjE3NmE3OS45NzQsNzkuOTc0LDAsMCwxLDgwLTgwSDI4OFYzMmEzMiwzMiwwLDAsMSw2NCwwVjk2SDQ2NEE3OS45NzQsNzkuOTc0LDAsMCwxLDU0NCwxNzZaTTI2NCwyNTZhNDAsNDAsMCwxLDAtNDAsNDBBMzkuOTk3LDM5Ljk5NywwLDAsMCwyNjQsMjU2Wm0tOCwxMjhIMTkydjMyaDY0Wm05NiwwSDI4OHYzMmg2NFpNNDU2LDI1NmE0MCw0MCwwLDEsMC00MCw0MEEzOS45OTcsMzkuOTk3LDAsMCwwLDQ1NiwyNTZabS04LDEyOEgzODR2MzJoNjRaTTY0MCwyNTZWMzg0YTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLTMyLDMySDU3NlYyMjRoMzJBMzEuOTYxNjYsMzEuOTYxNjYsMCwwLDEsNjQwLDI1NlpcIl1cbn07XG52YXIgZmFSb2NrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm9ja2V0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTM1XCIsIFwiTTUwNS4xMjAxOSwxOS4wOTM3NWMtMS4xODk0NS01LjUzMTI1LTYuNjU4MTktMTEtMTIuMjA3LTEyLjE4NzVDNDYwLjcxNiwwLDQzNS41MDcsMCw0MTAuNDA3NDcsMCwzMDcuMTc1MjMsMCwyNDUuMjY5MDksNTUuMjAzMTIsMTk5LjA1MjM4LDEyOEg5NC44Mzc3MmMtMTYuMzQ3NjMuMDE1NjItMzUuNTU2NTgsMTEuODc1LTQyLjg4NjY0LDI2LjQ4NDM4TDIuNTE1NjIsMjUzLjI5Njg4QTI4LjQsMjguNCwwLDAsMCwwLDI2NGEyNC4wMDg2NywyNC4wMDg2NywwLDAsMCwyNC4wMDU4MiwyNEgxMjcuODE2MThsLTIyLjQ3NDU3LDIyLjQ2ODc1Yy0xMS4zNjUyMSwxMS4zNjEzMy0xMi45OTYwNywzMi4yNTc4MSwwLDQ1LjI1TDE1Ni4yNDU4Miw0MDYuNjI1YzExLjE1NjIzLDExLjE4NzUsMzIuMTU2MTksMTMuMTU2MjUsNDUuMjc3MjYsMGwyMi40NzQ1Ny0yMi40Njg3NVY0ODhhMjQuMDA4NjcsMjQuMDA4NjcsMCwwLDAsMjQuMDA1ODEsMjQsMjguNTU5MzQsMjguNTU5MzQsMCwwLDAsMTAuNzA3LTIuNTE1NjJsOTguNzI4MzQtNDkuMzkwNjNjMTQuNjI4ODgtNy4yOTY4NywyNi41MDc3Ni0yNi41LDI2LjUwNzc2LTQyLjg1OTM3VjMxMi43OTY4OGM3Mi41OTc1My00Ni4zMTI1LDEyOC4wMzQ5My0xMDguNDA2MjYsMTI4LjAzNDkzLTIxMS4wOTM3NkM1MTIuMDc1MjYsNzYuNSw1MTIuMDc1MjYsNTEuMjk2ODgsNTA1LjEyMDE5LDE5LjA5Mzc1Wk0zODQuMDQwMzMsMTY4QTQwLDQwLDAsMSwxLDQyNC4wNSwxMjgsNDAuMDIzMjIsNDAuMDIzMjIsMCwwLDEsMzg0LjA0MDMzLDE2OFpcIl1cbn07XG52YXIgZmFSb3V0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb3V0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjRkN1wiLCBcIk00MTYgMzIwaC05NmMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMmg5NnM5Ni0xMDcgOTYtMTYwLTQzLTk2LTk2LTk2LTk2IDQzLTk2IDk2YzAgMjUuNSAyMi4yIDYzLjQgNDUuMyA5NkgzMjBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTZoOTZjMTcuNiAwIDMyIDE0LjQgMzIgMzJzLTE0LjQgMzItMzIgMzJIMTg1LjVjLTE2IDI0LjgtMzMuOCA0Ny43LTQ3LjMgNjRINDE2YzUyLjkgMCA5Ni00My4xIDk2LTk2cy00My4xLTk2LTk2LTk2em0wLTI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6TTk2IDI1NmMtNTMgMC05NiA0My05NiA5NnM5NiAxNjAgOTYgMTYwIDk2LTEwNyA5Ni0xNjAtNDMtOTYtOTYtOTZ6bTAgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFSc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnNzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDllXCIsIFwiTTEyOC4wODEgNDE1Ljk1OWMwIDM1LjM2OS0yOC42NzIgNjQuMDQxLTY0LjA0MSA2NC4wNDFTMCA0NTEuMzI4IDAgNDE1Ljk1OXMyOC42NzItNjQuMDQxIDY0LjA0MS02NC4wNDEgNjQuMDQgMjguNjczIDY0LjA0IDY0LjA0MXptMTc1LjY2IDQ3LjI1Yy04LjM1NC0xNTQuNi0xMzIuMTg1LTI3OC41ODctMjg2Ljk1LTI4Ni45NUM3LjY1NiAxNzUuNzY1IDAgMTgzLjEwNSAwIDE5Mi4yNTN2NDguMDY5YzAgOC40MTUgNi40OSAxNS40NzIgMTQuODg3IDE2LjAxOCAxMTEuODMyIDcuMjg0IDIwMS40NzMgOTYuNzAyIDIwOC43NzIgMjA4Ljc3Mi41NDcgOC4zOTcgNy42MDQgMTQuODg3IDE2LjAxOCAxNC44ODdoNDguMDY5YzkuMTQ5LjAwMSAxNi40ODktNy42NTUgMTUuOTk1LTE2Ljc5em0xNDQuMjQ5LjI4OEM0MzkuNTk2IDIyOS42NzcgMjUxLjQ2NSA0MC40NDUgMTYuNTAzIDMyLjAxIDcuNDczIDMxLjY4NiAwIDM4Ljk4MSAwIDQ4LjAxNnY0OC4wNjhjMCA4LjYyNSA2LjgzNSAxNS42NDUgMTUuNDUzIDE1Ljk5OSAxOTEuMTc5IDcuODM5IDM0NC42MjcgMTYxLjMxNiAzNTIuNDY1IDM1Mi40NjUuMzUzIDguNjE4IDcuMzczIDE1LjQ1MyAxNS45OTkgMTUuNDUzaDQ4LjA2OGM5LjAzNC0uMDAxIDE2LjMyOS03LjQ3NCAxNi4wMDUtMTYuNTA0elwiXVxufTtcbnZhciBmYVJzc1NxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyc3Mtc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTQzXCIsIFwiTTQwMCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMTEyIDQxNmMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMTU3LjUzMyAwaC0zNC4zMzVjLTYuMDExIDAtMTEuMDUxLTQuNjM2LTExLjQ0Mi0xMC42MzQtNS4yMTQtODAuMDUtNjkuMjQzLTE0My45Mi0xNDkuMTIzLTE0OS4xMjMtNS45OTctLjM5LTEwLjYzMy01LjQzMS0xMC42MzMtMTEuNDQxdi0zNC4zMzVjMC02LjUzNSA1LjQ2OC0xMS43NzcgMTEuOTk0LTExLjQyNSAxMTAuNTQ2IDUuOTc0IDE5OC45OTcgOTQuNTM2IDIwNC45NjQgMjA0Ljk2NC4zNTIgNi41MjYtNC44OSAxMS45OTQtMTEuNDI1IDExLjk5NHptMTAzLjAyNyAwaC0zNC4zMzRjLTYuMTYxIDAtMTEuMTc1LTQuODgyLTExLjQyNy0xMS4wMzgtNS41OTgtMTM2LjUzNS0xMTUuMjA0LTI0Ni4xNjEtMjUxLjc2LTI1MS43NkM2OC44ODIgMTUyLjk0OSA2NCAxNDcuOTM1IDY0IDE0MS43NzRWMTA3LjQ0YzAtNi40NTQgNS4zMzgtMTEuNjY0IDExLjc4Ny0xMS40MzIgMTY3LjgzIDYuMDI1IDMwMi4yMSAxNDEuMTkxIDMwOC4yMDUgMzA4LjIwNS4yMzIgNi40NDktNC45NzggMTEuNzg3LTExLjQzMiAxMS43ODd6XCJdXG59O1xudmFyIGZhUnVibGVTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1YmxlLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxNThcIiwgXCJNMjM5LjM2IDMyMEMzMjQuNDggMzIwIDM4NCAyNjAuNTQyIDM4NCAxNzUuMDcxUzMyNC40OCAzMiAyMzkuMzYgMzJINzZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjA2LjYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMlYzMDhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1MnYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDUydjUyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTguNTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNTJIMzA4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTQ2LjU2di0zMmg5Mi44em0tOTIuOC0yMTkuMjUyaDc4LjcyYzQ2LjcyIDAgNzQuODggMjkuMTEgNzQuODggNzQuMzIzIDAgNDUuODMyLTI4LjE2IDc1LjU2MS03Ni4xNiA3NS41NjFoLTc3LjQ0VjEwMC43NDh6XCJdXG59O1xudmFyIGZhUnVsZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVsZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1NDVcIiwgXCJNNjM1LjcgMTY3LjJMNTU2LjEgMzEuN2MtOC44LTE1LTI4LjMtMjAuMS00My41LTExLjVsLTY5IDM5LjFMNTAzLjMgMTYxYzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45TDQxNiA3NWwtNTUuMiAzMS4zIDI3LjkgNDcuNGMyLjIgMy44LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOUwzMzMuMiAxMjIgMjc4IDE1My4zIDMzNy44IDI1NWMyLjIgMy43LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOWwtNTkuNy0xMDEuNy01NS4yIDMxLjMgMjcuOSA0Ny40YzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45bC0yNy45LTQ3LjUtNTUuMiAzMS4zIDU5LjcgMTAxLjdjMi4yIDMuNy45IDguNS0yLjkgMTAuN2wtMTMuOCA3LjhjLTMuOCAyLjItOC43LjktMTAuOS0yLjlMODQuOSAyNjIuOWwtNjkgMzkuMUMuNyAzMTAuNy00LjYgMzI5LjggNC4yIDM0NC44bDc5LjYgMTM1LjZjOC44IDE1IDI4LjMgMjAuMSA0My41IDExLjVMNjI0LjEgMjEwYzE1LjItOC42IDIwLjQtMjcuOCAxMS42LTQyLjh6XCJdXG59O1xudmFyIGZhUnVsZXJDb21iaW5lZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdydWxlci1jb21iaW5lZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU0NlwiLCBcIk0xNjAgMjg4aC01NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDU2di02NGgtNTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg1NlY5NmgtNTZjLTQuNDIgMC04LTMuNTgtOC04VjcyYzAtNC40MiAzLjU4LTggOC04aDU2VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMi43Ny45MSA1LjI0IDEuNTcgNy44TDE2MCAzMjkuMzhWMjg4em0zMjAgNjRoLTMydjU2YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTU2aC02NHY1NmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di01NmgtNjR2NTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNTZoLTQxLjM3TDI0LjIgNTEwLjQzYzIuNTYuNjYgNS4wNCAxLjU3IDcuOCAxLjU3aDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYVJ1bGVySG9yaXpvbnRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdydWxlci1ob3Jpem9udGFsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTQ3XCIsIFwiTTU0NCAxMjhoLTQ4djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOEg4OGMtNC40MiAwLTgtMy41OC04LTh2LTg4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE5MmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDUxMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE2MGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYVJ1bGVyVmVydGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVsZXItdmVydGljYWwnLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImY1NDhcIiwgXCJNMTY4IDQxNmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4di02NGgtODhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4OHYtNjRoLTg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODh2LTY0aC04OGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0aC04OHpcIl1cbn07XG52YXIgZmFSdW5uaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1bm5pbmcnLFxuICBpY29uOiBbNDE2LCA1MTIsIFtdLCBcImY3MGNcIiwgXCJNMjcyIDk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhTMjk4LjUxIDAgMjcyIDBzLTQ4IDIxLjQ5LTQ4IDQ4IDIxLjQ5IDQ4IDQ4IDQ4ek0xMTMuNjkgMzE3LjQ3bC0xNC44IDM0LjUySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyaDc3LjQ1YzE5LjI1IDAgMzYuNTgtMTEuNDQgNDQuMTEtMjkuMDlsOC43OS0yMC41Mi0xMC42Ny02LjNjLTE3LjMyLTEwLjIzLTMwLjA2LTI1LjM3LTM3Ljk5LTQyLjYxek0zODQgMjIzLjk5aC00NC4wM2wtMjYuMDYtNTMuMjVjLTEyLjUtMjUuNTUtMzUuNDUtNDQuMjMtNjEuNzgtNTAuOTRsLTcxLjA4LTIxLjE0Yy0yOC4zLTYuOC01Ny43Ny0uNTUtODAuODQgMTcuMTRsLTM5LjY3IDMwLjQxYy0xNC4wMyAxMC43NS0xNi42OSAzMC44My01LjkyIDQ0Ljg2czMwLjg0IDE2LjY2IDQ0Ljg2IDUuOTJsMzkuNjktMzAuNDFjNy42Ny01Ljg5IDE3LjQ0LTggMjUuMjctNi4xNGwxNC43IDQuMzctMzcuNDYgODcuMzljLTEyLjYyIDI5LjQ4LTEuMzEgNjQuMDEgMjYuMyA4MC4zMWw4NC45OCA1MC4xNy0yNy40NyA4Ny43M2MtNS4yOCAxNi44NiA0LjExIDM0LjgxIDIwLjk3IDQwLjA5IDMuMTkgMSA2LjQxIDEuNDggOS41OCAxLjQ4IDEzLjYxIDAgMjYuMjMtOC43NyAzMC41Mi0yMi40NWwzMS42NC0xMDEuMDZjNS45MS0yMC43Ny0yLjg5LTQzLjA4LTIxLjY0LTU0LjM5bC02MS4yNC0zNi4xNCAzMS4zMS03OC4yOCAyMC4yNyA0MS40M2M4IDE2LjM0IDI0LjkyIDI2Ljg5IDQzLjExIDI2Ljg5SDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMS45OS0zMi0zMS45OXpcIl1cbn07XG52YXIgZmFSdXBlZVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVwZWUtc2lnbicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjE1NlwiLCBcIk0zMDggOTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMlY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDEyQzUuMzczIDMyIDAgMzcuMzczIDAgNDR2NDQuNzQ4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoODUuMjhjMjcuMzA4IDAgNDguMjYxIDkuOTU4IDYwLjk3IDI3LjI1MkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE1OC43NTdjLTYuMjE3IDM2LjA4Ni0zMi45NjEgNTguNjMyLTc0Ljc1NyA1OC42MzJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTMuMDEyYzAgMy4zNDkgMS40IDYuNTQ2IDMuODYxIDguODE4bDE2NS4wNTIgMTUyLjM1NmExMi4wMDEgMTIuMDAxIDAgMCAwIDguMTM5IDMuMTgyaDgyLjU2MmMxMC45MjQgMCAxNi4xNjYtMTMuNDA4IDguMTM5LTIwLjgxOEwxMTYuODcxIDMxOS45MDZjNzYuNDk5LTIuMzQgMTMxLjE0NC01My4zOTUgMTM4LjMxOC0xMjcuOTA2SDMwOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01OC42OWMtMy40ODYtMTEuNTQxLTguMjgtMjIuMjQ2LTE0LjI1Mi0zMkgzMDh6XCJdXG59O1xudmFyIGZhU2FkQ3J5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NhZC1jcnknLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1YjNcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCA5MC4xIDQ4LjIgMTY4LjcgMTIwIDIxMi4xVjI4OGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djE5Ni43YzI5LjUgMTIuNCA2MiAxOS4zIDk2IDE5LjNzNjYuNS02LjkgOTYtMTkuM1YyODhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxODAuMUM0NDcuOCA0MjQuNyA0OTYgMzQ2IDQ5NiAyNTYgNDk2IDExOSAzODUgOCAyNDggOHptLTY1LjUgMjE2LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwxMTIgMjMzYy0zLjggMy4zLTkuMyA0LTEzLjcgMS42LTQuNC0yLjQtNi45LTcuNC02LjEtMTIuNCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVMyMDggMTk3IDIxMiAyMjIuMmMuOCA1LTEuNyAxMC02LjEgMTIuNC01LjggMy4xLTExLjIuNy0xMy43LTEuNmwtOS43LTguNXpNMjQ4IDQxNmMtMjYuNSAwLTQ4LTI4LjctNDgtNjRzMjEuNS02NCA0OC02NCA0OCAyOC43IDQ4IDY0LTIxLjUgNjQtNDggNjR6bTE0OS44LTE4MS41Yy01LjggMy4xLTExLjIuNy0xMy43LTEuNmwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDMwNCAyMzNjLTMuOCAzLjMtOS4zIDQtMTMuNyAxLjYtNC40LTIuNC02LjktNy40LTYuMS0xMi40IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzQwMCAxOTcgNDA0IDIyMi4yYy42IDQuOS0xLjggOS45LTYuMiAxMi4zelwiXVxufTtcbnZhciBmYVNhZFRlYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2FkLXRlYXInLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1YjRcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnpNMTUyIDQxNmMtMjYuNSAwLTQ4LTIxLTQ4LTQ3IDAtMjAgMjguNS02MC40IDQxLjYtNzcuOCAzLjItNC4zIDkuNi00LjMgMTIuOCAwQzE3MS41IDMwOC42IDIwMCAzNDkgMjAwIDM2OWMwIDI2LTIxLjUgNDctNDggNDd6bTE2LTE3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTE3MC4yIDE1NC4yQzMxNS44IDM2Ny40IDI4Mi45IDM1MiAyNDggMzUyYy0yMS4yIDAtMjEuMi0zMiAwLTMyIDQ0LjQgMCA4Ni4zIDE5LjYgMTE0LjcgNTMuOCAxMy44IDE2LjQtMTEuMiAzNi41LTI0LjUgMjAuNHpcIl1cbn07XG52YXIgZmFTYXRlbGxpdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2F0ZWxsaXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2JmXCIsIFwiTTUwMi42MDk2OSwzMTAuMDQyMDZsLTk2LjcwMzkzLDk2LjcxNjI1YTMxLjg4MTUxLDMxLjg4MTUxLDAsMCwxLTQ1LjAwNzY1LDBMMjgwLjU3MiwzMjYuMzQxMTVsLTkuODkyMzEsOS45MDc1OWExOTAuNTYzNDMsMTkwLjU2MzQzLDAsMCwxLTUuNDA3MTYsMTY4LjUyMjg3Yy00LjUwMDc3LDguNTAxMTUtMTYuMzkzNDIsOS41OTUwNS0yMy4yMDcwNywyLjc5NzI1TDEzNC41NDcxNSw0MDAuMDU0MjhsLTE3Ljc5OTksMTcuNzk5MjljLjcwMzI0LDIuNjA5NzIsMS42MDk2NSw1LjAwMDY3LDEuNjA5NjUsNy43OTc5M2EzMi4wMDU0NCwzMi4wMDU0NCwwLDEsMS0zMi4wMDU0NC0zMi4wMDQzNGMyLjc5NzM1LDAsNS4xODgzOC45MDYzNyw3Ljc5ODIsMS42MDk1OWwxNy43OTk5LTE3Ljc5OTI5TDQuNDMxMjksMjY5Ljk0Mjg3Yy02Ljc5OC02LjgxMzQyLTUuNzA0MDktMTguNjExOSwyLjc5NzM1LTIzLjIwNjI3YTE5MC41ODE2MSwxOTAuNTgxNjEsMCwwLDEsMTY4LjUyODY0LTUuNDA3bDkuNzk4NTQtOS43OTgyMS04MC4zMTA1My04MC40MTcxNmEzMi4wMDIsMzIuMDAyLDAsMCwxLDAtNDUuMDk5ODdMMjAxLjk2NDc0LDkuMjk4MTRBMzEuNjI2MzksMzEuNjI2MzksMCwwLDEsMjI0LjQ2ODY4LDBhMzEuOTk5NTEsMzEuOTk5NTEsMCwwLDEsMjIuNTk3NTksOS4yOTgxNGw4MC4zMjYxNSw4MC4zMDc3Nyw0Ny44MDUtNDcuODk3MTNhMzMuNjA3NSwzMy42MDc1LDAsMCwxLDQ3LjUwODA4LDBsNDcuNTA4MDcsNDcuNTA2NDVhMzMuNjMzMDgsMzMuNjMzMDgsMCwwLDEsMCw0Ny41MDY0NGwtNDcuODA1LDQ3Ljg5NzEzTDUwMi43MTkwOCwyNjUuMDM2QTMxLjc4OTM4LDMxLjc4OTM4LDAsMCwxLDUwMi42MDk2OSwzMTAuMDQyMDZaTTIxOS41NjE1OSwxOTcuNDMzbDczLjgyNTA1LTczLjgyMjUyLTY4LjkxOC02OC45LTczLjgwOTQyLDczLjgwNjg5Wm0yMzcuNzQzNTIsOTAuMTA2LTY4LjkwMjMzLTY4LjkxNTYtNzMuODI1LDczLjgyMjUyLDY4LjkxOCw2OC45WlwiXVxufTtcbnZhciBmYVNhdGVsbGl0ZURpc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2F0ZWxsaXRlLWRpc2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3YzBcIiwgXCJNMzA1LjQ0OTU0LDQ2Mi41OWM3LjM5MTU3LDcuMjk3OTIsNi4xODgyOSwyMC4wOTY2MS0zLjAwMDM4LDI1LjAwMzU2LTc3LjcxMyw0MS44MDI4MS0xNzYuNzI1NTksMjkuOTEwNS0yNDIuMzQzMzEtMzUuNzA4MkMtNS40OTYyNCwzODYuMjgyMjctMTcuNDA0LDI4Ny4zNjIsMjQuNDEzODEsMjA5LjU1NGM0Ljg5MTI1LTkuMDk1LDE3LjY4OTc1LTEwLjI5ODM0LDI1LjAwMzE4LTMuMDAwNDNMMTY2LjIyODcyLDMyMy4zNjcwOGwyNy4zOTQxMS0yNy4zOTQ1MmMtLjY4NzU5LTIuNjA5NzQtMS41OTQtNS4wMDA3MS0xLjU5NC03LjgxMzYxYTMyLjAwNDA3LDMyLjAwNDA3LDAsMSwxLDMyLjAwNDA3LDMyLjAwNDU1Yy0yLjc5NzIzLDAtNS4yMDM3OC0uODkwNzUtNy43OTc4Ni0xLjU5NGwtMjcuNDA5NzQsMjcuNDEwMTVaTTUxMS45NzU4LDMwMy4wNjczMmExNi4xMDMzNiwxNi4xMDMzNiwwLDAsMS0xNi4wMDIsMTcuMDAyNDJINDYzLjg2MDMxYTE1Ljk2OTU2LDE1Ljk2OTU2LDAsMCwxLTE1Ljg5MjY1LTE1LjAwMjEzQzQ0MC40NjY3MSwxNzUuNTQ5MiwzMzYuNDUzNDgsNzAuNTM0MjcsMjA3LjAzMDc4LDYzLjUzMzI4YTE1Ljg0NDg2LDE1Ljg0NDg2LDAsMCwxLTE1LjAwMTkxLTE1LjkwODUyVjE2LjAyNjUyQTE2LjA5Mzg5LDE2LjA5Mzg5LDAsMCwxLDIwOS4wMzEuMDI0MjVDMzcyLjI1NDkxLDguNjE5MjIsNTAzLjQ3NDcyLDEzOS44NDEsNTExLjk3NTgsMzAzLjA2NzMyWm0tOTYuMDEyMjEtLjI5NjkyYTE2LjIxMDkzLDE2LjIxMDkzLDAsMCwxLTE2LjExMTQyLDE3LjI5OTM0SDM2Ny42NDVhMTYuMDY4NjIsMTYuMDY4NjIsMCwwLDEtMTUuODkyNjUtMTQuNzA1MjJjLTYuOTA3MTItNzcuMDEwOTQtNjguMTE4LTEzOC45MTAzNy0xNDQuOTI0NjctMTQ1LjIyMzc2YTE1Ljk0LDE1Ljk0LDAsMCwxLTE0Ljc5ODc2LTE1Ljg5Mjg5VjExMi4xMzM5M2ExNi4xMzQsMTYuMTM0LDAsMCwxLDE3LjI5OTA4LTE2LjA5NkMzMTkuNDUxMzIsMTA0LjUzOTEsNDA3LjU1NjI3LDE5Mi42NDUzOCw0MTUuOTYzNTksMzAyLjc3MDRaXCJdXG59O1xudmFyIGZhU2F2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzYXZlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGM3XCIsIFwiTTQzMy45NDEgMTI5Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAzMTYuMTE4IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNjMuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTIyNCA0MTZjLTM1LjM0NiAwLTY0LTI4LjY1NC02NC02NCAwLTM1LjM0NiAyOC42NTQtNjQgNjQtNjRzNjQgMjguNjU0IDY0IDY0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHptOTYtMzA0LjUyVjIxMmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDc2Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyVjEwOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIyOC41MmMzLjE4MyAwIDYuMjM1IDEuMjY0IDguNDg1IDMuNTE1bDMuNDggMy40OEExMS45OTYgMTEuOTk2IDAgMCAxIDMyMCAxMTEuNDh6XCJdXG59O1xudmFyIGZhU2Nob29sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NjaG9vbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU0OVwiLCBcIk0wIDIyNHYyNzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoODBWMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyem0zNjAtNDhoLTI0di00MGMwLTQuNDItMy41OC04LTgtOGgtMTZjLTQuNDIgMC04IDMuNTgtOCA4djY0YzAgNC40MiAzLjU4IDggOCA4aDQ4YzQuNDIgMCA4LTMuNTggOC04di0xNmMwLTQuNDItMy41OC04LTgtOHptMTM3Ljc1LTYzLjk2bC0xNjAtMTA2LjY3YTMyLjAyIDMyLjAyIDAgMCAwLTM1LjUgMGwtMTYwIDEwNi42N0EzMi4wMDIgMzIuMDAyIDAgMCAwIDEyOCAxMzguNjZWNTEyaDEyOFYzNjhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoOTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTQ0aDEyOFYxMzguNjdjMC0xMC43LTUuMzUtMjAuNy0xNC4yNS0yNi42M3pNMzIwIDI1NmMtNDQuMTggMC04MC0zNS44Mi04MC04MHMzNS44Mi04MCA4MC04MCA4MCAzNS44MiA4MCA4MC0zNS44MiA4MC04MCA4MHptMjg4LTY0aC02NHYzMjBoODBjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjI0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhU2NyZXdkcml2ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2NyZXdkcml2ZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NGFcIiwgXCJNNDQ4IDBMMzIwIDk2djYyLjA2bC04My4wMyA4My4wM2M2Ljc5IDQuMjUgMTMuMjcgOS4wNiAxOS4wNyAxNC44NyA1LjggNS44IDEwLjYyIDEyLjI4IDE0Ljg3IDE5LjA3TDM1My45NCAxOTJINDE2bDk2LTEyOC02NC02NHpNMTI4IDI3OC41OUwxMC45MiAzOTUuNjdjLTE0LjU1IDE0LjU1LTE0LjU1IDM4LjE1IDAgNTIuNzFsNTIuNyA1Mi43YzE0LjU2IDE0LjU2IDM4LjE1IDE0LjU2IDUyLjcxIDBMMjMzLjQxIDM4NGMyOS4xMS0yOS4xMSAyOS4xMS03Ni4zIDAtMTA1LjQxcy03Ni4zLTI5LjExLTEwNS40MSAwelwiXVxufTtcbnZhciBmYVNjcm9sbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY3JvbGwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MGVcIiwgXCJNNDggMEMyMS41MyAwIDAgMjEuNTMgMCA0OHY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg4MFY0OEM5NiAyMS41MyA3NC40NyAwIDQ4IDB6bTIwOCA0MTIuNTdWMzUyaDI4OFY5NmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2SDExMS41OUMxMjEuNzQgMTMuNDEgMTI4IDI5LjkyIDEyOCA0OHYzNjhjMCAzOC44NyAzNC42NSA2OS42NSA3NC43NSA2My4xMkMyMzQuMjIgNDc0IDI1NiA0NDQuNDYgMjU2IDQxMi41N3pNMjg4IDM4NHYzMmMwIDUyLjkzLTQzLjA2IDk2LTk2IDk2aDMzNmM2MS44NiAwIDExMi01MC4xNCAxMTItMTEyIDAtOC44NC03LjE2LTE2LTE2LTE2SDI4OHpcIl1cbn07XG52YXIgZmFTZENhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2QtY2FyZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjdjMlwiLCBcIk0zMjAgMEgxMjhMMCAxMjh2MzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0aDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHpNMTYwIDE2MGgtNDhWNjRoNDh2OTZ6bTgwIDBoLTQ4VjY0aDQ4djk2em04MCAwaC00OFY2NGg0OHY5NnpcIl1cbn07XG52YXIgZmFTZWFyY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2VhcmNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDAyXCIsIFwiTTUwNSA0NDIuN0w0MDUuMyAzNDNjLTQuNS00LjUtMTAuNi03LTE3LTdIMzcyYzI3LjYtMzUuMyA0NC03OS43IDQ0LTEyOEM0MTYgOTMuMSAzMjIuOSAwIDIwOCAwUzAgOTMuMSAwIDIwOHM5My4xIDIwOCAyMDggMjA4YzQ4LjMgMCA5Mi43LTE2LjQgMTI4LTQ0djE2LjNjMCA2LjQgMi41IDEyLjUgNyAxN2w5OS43IDk5LjdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjguMy0yOC4zYzkuNC05LjQgOS40LTI0LjYuMS0zNHpNMjA4IDMzNmMtNzAuNyAwLTEyOC01Ny4yLTEyOC0xMjggMC03MC43IDU3LjItMTI4IDEyOC0xMjggNzAuNyAwIDEyOCA1Ny4yIDEyOCAxMjggMCA3MC43LTU3LjIgMTI4LTEyOCAxMjh6XCJdXG59O1xudmFyIGZhU2VhcmNoRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NlYXJjaC1kb2xsYXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2ODhcIiwgXCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bTI3LjExLTE1Mi41NGwtNDUuMDEtMTMuNWMtNS4xNi0xLjU1LTguNzctNi43OC04Ljc3LTEyLjczIDAtNy4yNyA1LjMtMTMuMTkgMTEuOC0xMy4xOWgyOC4xMWM0LjU2IDAgOC45NiAxLjI5IDEyLjgyIDMuNzIgMy4yNCAyLjAzIDcuMzYgMS45MSAxMC4xMy0uNzNsMTEuNzUtMTEuMjFjMy41My0zLjM3IDMuMzMtOS4yMS0uNTctMTIuMTQtOS4xLTYuODMtMjAuMDgtMTAuNzctMzEuMzctMTEuMzVWMTEyYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2MTYuMTJjLTIzLjYzLjYzLTQyLjY4IDIwLjU1LTQyLjY4IDQ1LjA3IDAgMTkuOTcgMTIuOTkgMzcuODEgMzEuNTggNDMuMzlsNDUuMDEgMTMuNWM1LjE2IDEuNTUgOC43NyA2Ljc4IDguNzcgMTIuNzMgMCA3LjI3LTUuMyAxMy4xOS0xMS44IDEzLjE5aC0yOC4xYy00LjU2IDAtOC45Ni0xLjI5LTEyLjgyLTMuNzItMy4yNC0yLjAzLTcuMzYtMS45MS0xMC4xMy43M2wtMTEuNzUgMTEuMjFjLTMuNTMgMy4zNy0zLjMzIDkuMjEuNTcgMTIuMTQgOS4xIDYuODMgMjAuMDggMTAuNzcgMzEuMzcgMTEuMzVWMzA0YzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04di0xNi4xMmMyMy42My0uNjMgNDIuNjgtMjAuNTQgNDIuNjgtNDUuMDcgMC0xOS45Ny0xMi45OS0zNy44MS0zMS41OS00My4zOXpcIl1cbn07XG52YXIgZmFTZWFyY2hMb2NhdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZWFyY2gtbG9jYXRpb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2ODlcIiwgXCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bS4wMi0yMzkuOTZjLTQwLjc4IDAtNzMuODQgMzMuMDUtNzMuODQgNzMuODMgMCAzMi45NiA0OC4yNiA5My4wNSA2Ni43NSAxMTQuODZhOS4yNCA5LjI0IDAgMCAwIDE0LjE4IDBjMTguNDktMjEuODEgNjYuNzUtODEuODkgNjYuNzUtMTE0Ljg2IDAtNDAuNzgtMzMuMDYtNzMuODMtNzMuODQtNzMuODN6bTAgOTZjLTEzLjI2IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYVNlYXJjaE1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NlYXJjaC1taW51cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAxMFwiLCBcIk0zMDQgMTkydjMyYzAgNi42LTUuNCAxMi0xMiAxMkgxMjRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJdXG59O1xudmFyIGZhU2VhcmNoUGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZWFyY2gtcGx1cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwZVwiLCBcIk0zMDQgMTkydjMyYzAgNi42LTUuNCAxMi0xMiAxMmgtNTZ2NTZjMCA2LjYtNS40IDEyLTEyIDEyaC0zMmMtNi42IDAtMTItNS40LTEyLTEydi01NmgtNTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDU2di01NmMwLTYuNiA1LjQtMTIgMTItMTJoMzJjNi42IDAgMTIgNS40IDEyIDEydjU2aDU2YzYuNiAwIDEyIDUuNCAxMiAxMnptMjAxIDI4NC43TDQ3Ni43IDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzQzIDQwNS4zYy00LjUtNC41LTctMTAuNi03LTE3VjM3MmMtMzUuMyAyNy42LTc5LjcgNDQtMTI4IDQ0QzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwczIwOCA5My4xIDIwOCAyMDhjMCA0OC4zLTE2LjQgOTIuNy00NCAxMjhoMTYuM2M2LjQgMCAxMi41IDIuNSAxNyA3bDk5LjcgOTkuN2M5LjMgOS40IDkuMyAyNC42IDAgMzR6TTM0NCAyMDhjMC03NS4yLTYwLjgtMTM2LTEzNi0xMzZTNzIgMTMyLjggNzIgMjA4czYwLjggMTM2IDEzNiAxMzYgMTM2LTYwLjggMTM2LTEzNnpcIl1cbn07XG52YXIgZmFTZWVkbGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZWVkbGluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjRkOFwiLCBcIk02NCA5NkgwYzAgMTIzLjcgMTAwLjMgMjI0IDIyNCAyMjR2MTQ0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwQzI4OCAxOTYuMyAxODcuNyA5NiA2NCA5NnptMzg0LTY0Yy04NC4yIDAtMTU3LjQgNDYuNS0xOTUuNyAxMTUuMiAyNy43IDMwLjIgNDguMiA2Ni45IDU5IDEwNy42QzQyNCAyNDMuMSA1MTIgMTQ3LjkgNTEyIDMyaC02NHpcIl1cbn07XG52YXIgZmFTZXJ2ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2VydmVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjMzXCIsIFwiTTQ4MCAxNjBIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMlY2NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoNDQ4YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJ6bS00OC04OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0tNjQgMGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0xMTIgMjQ4SDMyYy0xNy42NzMgMC0zMi0xNC4zMjctMzItMzJ2LTY0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMmg0NDhjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnptLTQ4LTg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bS02NCAwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bTExMiAyNDhIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDQ0OGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ2NjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMyem0tNDgtODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHptLTY0IDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFTaGFwZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hhcGVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjFmXCIsIFwiTTEyOCwyNTZBMTI4LDEyOCwwLDEsMCwyNTYsMzg0LDEyOCwxMjgsMCwwLDAsMTI4LDI1NlptMzc5LTU0Ljg2TDQwMC4wNywxOC4yOWEzNy4yNiwzNy4yNiwwLDAsMC02NC4xNCwwTDIyOSwyMDEuMTRDMjE0Ljc2LDIyNS41MiwyMzIuNTgsMjU2LDI2MS4wOSwyNTZINDc0LjkxQzUwMy40MiwyNTYsNTIxLjI0LDIyNS41Miw1MDcsMjAxLjE0Wk00ODAsMjg4SDMyMGEzMiwzMiwwLDAsMC0zMiwzMlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjMyMEEzMiwzMiwwLDAsMCw0ODAsMjg4WlwiXVxufTtcbnZhciBmYVNoYXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoYXJlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDY0XCIsIFwiTTUwMy42OTEgMTg5LjgzNkwzMjcuNjg3IDM3Ljg1MUMzMTIuMjgxIDI0LjU0NiAyODggMzUuMzQ3IDI4OCA1Ni4wMTV2ODAuMDUzQzEyNy4zNzEgMTM3LjkwNyAwIDE3MC4xIDAgMzIyLjMyNmMwIDYxLjQ0MSAzOS41ODEgMTIyLjMwOSA4My4zMzMgMTU0LjEzMiAxMy42NTMgOS45MzEgMzMuMTExLTIuNTMzIDI4LjA3Ny0xOC42MzFDNjYuMDY2IDMxMi44MTQgMTMyLjkxNyAyNzQuMzE2IDI4OCAyNzIuMDg1VjM2MGMwIDIwLjcgMjQuMyAzMS40NTMgMzkuNjg3IDE4LjE2NGwxNzYuMDA0LTE1MmMxMS4wNzEtOS41NjIgMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHpcIl1cbn07XG52YXIgZmFTaGFyZUFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGFyZS1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxZTBcIiwgXCJNMzUyIDMyMGMtMjIuNjA4IDAtNDMuMzg3IDcuODE5LTU5Ljc5IDIwLjg5NWwtMTAyLjQ4Ni02NC4wNTRhOTYuNTUxIDk2LjU1MSAwIDAgMCAwLTQxLjY4M2wxMDIuNDg2LTY0LjA1NEMzMDguNjEzIDE4NC4xODEgMzI5LjM5MiAxOTIgMzUyIDE5MmM1My4wMTkgMCA5Ni00Mi45ODEgOTYtOTZTNDA1LjAxOSAwIDM1MiAwcy05NiA0Mi45ODEtOTYgOTZjMCA3LjE1OC43OSAxNC4xMyAyLjI3NiAyMC44NDFMMTU1Ljc5IDE4MC44OTVDMTM5LjM4NyAxNjcuODE5IDExOC42MDggMTYwIDk2IDE2MGMtNTMuMDE5IDAtOTYgNDIuOTgxLTk2IDk2czQyLjk4MSA5NiA5NiA5NmMyMi42MDggMCA0My4zODctNy44MTkgNTkuNzktMjAuODk1bDEwMi40ODYgNjQuMDU0QTk2LjMwMSA5Ni4zMDEgMCAwIDAgMjU2IDQxNmMwIDUzLjAxOSA0Mi45ODEgOTYgOTYgOTZzOTYtNDIuOTgxIDk2LTk2LTQyLjk4MS05Ni05Ni05NnpcIl1cbn07XG52YXIgZmFTaGFyZUFsdFNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGFyZS1hbHQtc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMWUxXCIsIFwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek0zMDQgMjk2Yy0xNC41NjIgMC0yNy44MjMgNS41NjEtMzcuNzgzIDE0LjY3MWwtNjcuOTU4LTQwLjc3NWE1Ni4zMzkgNTYuMzM5IDAgMCAwIDAtMjcuNzkzbDY3Ljk1OC00MC43NzVDMjc2LjE3NyAyMTAuNDM5IDI4OS40MzggMjE2IDMwNCAyMTZjMzAuOTI4IDAgNTYtMjUuMDcyIDU2LTU2cy0yNS4wNzItNTYtNTYtNTYtNTYgMjUuMDcyLTU2IDU2YzAgNC43OTcuNjA1IDkuNDUzIDEuNzQgMTMuODk3bC02Ny45NTggNDAuNzc1QzE3MS44MjMgMjA1LjU2MSAxNTguNTYyIDIwMCAxNDQgMjAwYy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2YzE0LjU2MiAwIDI3LjgyMy01LjU2MSAzNy43ODMtMTQuNjcxbDY3Ljk1OCA0MC43NzVhNTYuMDg4IDU2LjA4OCAwIDAgMC0xLjc0IDEzLjg5N2MwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZzNTYtMjUuMDcyIDU2LTU2QzM2MCAzMjEuMDcyIDMzNC45MjggMjk2IDMwNCAyOTZ6XCJdXG59O1xudmFyIGZhU2hhcmVTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hhcmUtc3F1YXJlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMTRkXCIsIFwiTTU2OC40ODIgMTc3LjQ0OEw0MjQuNDc5IDMxMy40MzNDNDA5LjMgMzI3Ljc2OCAzODQgMzE3LjE0IDM4NCAyOTUuOTg1di03MS45NjNjLTE0NC41NzUuOTctMjA1LjU2NiAzNS4xMTMtMTY0Ljc3NSAxNzEuMzUzIDQuNDgzIDE0Ljk3My0xMi44NDYgMjYuNTY3LTI1LjAwNiAxNy4zM0MxNTUuMjUyIDM4My4xMDUgMTIwIDMyNi40ODggMTIwIDI2OS4zMzljMC0xNDMuOTM3IDExNy41OTktMTcyLjUgMjY0LTE3My4zMTJWMjQuMDEyYzAtMjEuMTc0IDI1LjMxNy0zMS43NjggNDAuNDc5LTE3LjQ0OGwxNDQuMDAzIDEzNS45ODhjMTAuMDIgOS40NjMgMTAuMDI4IDI1LjQyNSAwIDM0Ljg5NnpNMzg0IDM3OS4xMjhWNDQ4SDY0VjEyOGg1MC45MTZhMTEuOTkgMTEuOTkgMCAwIDAgOC42NDgtMy42OTNjMTQuOTUzLTE1LjU2OCAzMi4yMzctMjcuODkgNTEuMDE0LTM3LjY3NkMxODUuNzA4IDgwLjgzIDE4MS41ODQgNjQgMTY5LjAzMyA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di04OC44MDZjMC04LjI4OC04LjE5Ny0xNC4wNjYtMTYuMDExLTExLjMwMmE3MS44MyA3MS44MyAwIDAgMS0zNC4xODkgMy4zNzdjLTcuMjctMS4wNDYtMTMuOCA0LjUxNC0xMy44IDExLjg1OXpcIl1cbn07XG52YXIgZmFTaGVrZWxTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoZWtlbC1zaWduJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjBiXCIsIFwiTTI0OCAxNjh2MTY4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjE2OGMwLTc1LjExLTYwLjg5LTEzNi0xMzYtMTM2SDI0QzEwLjc1IDMyIDAgNDIuNzQgMCA1NnY0MDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTEyaDExMmMzMC45MyAwIDU2IDI1LjA3IDU2IDU2ek00MzIgMzJoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYyOTZjMCAzMC45My0yNS4wNyA1Ni01NiA1NkgyMDBWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MjgwYzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoMTY4Yzc1LjExIDAgMTM2LTYwLjg5IDEzNi0xMzZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhU2hpZWxkQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzZWRcIiwgXCJNNDY2LjUgODMuN2wtMTkyLTgwYTQ4LjE1IDQ4LjE1IDAgMCAwLTM2LjkgMGwtMTkyIDgwQzI3LjcgOTEuMSAxNiAxMDguNiAxNiAxMjhjMCAxOTguNSAxMTQuNSAzMzUuNyAyMjEuNSAzODAuMyAxMS44IDQuOSAyNS4xIDQuOSAzNi45IDBDMzYwLjEgNDcyLjYgNDk2IDM0OS4zIDQ5NiAxMjhjMC0xOS40LTExLjctMzYuOS0yOS41LTQ0LjN6TTI1Ni4xIDQ0Ni4zbC0uMS0zODEgMTc1LjkgNzMuM2MtMy4zIDE1MS40LTgyLjEgMjYxLjEtMTc1LjggMzA3Ljd6XCJdXG59O1xudmFyIGZhU2hpZWxkVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hpZWxkLXZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDZjXCIsIFwiTTIyNCwxOTJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjI0LDE5MlpNNDY2LjUsODMuNjhsLTE5Mi04MEE1Ny40LDU3LjQsMCwwLDAsMjU2LjA1LDBhNTcuNCw1Ny40LDAsMCwwLTE4LjQ2LDMuNjdsLTE5Miw4MEE0Ny45Myw0Ny45MywwLDAsMCwxNiwxMjhDMTYsMzI2LjUsMTMwLjUsNDYzLjcyLDIzNy41LDUwOC4zMmE0OC4wOSw0OC4wOSwwLDAsMCwzNi45MSwwQzM2MC4wOSw0NzIuNjEsNDk2LDM0OS4zLDQ5NiwxMjhBNDgsNDgsMCwwLDAsNDY2LjUsODMuNjhaTTM4NCwyNTZIMzcxLjg4Yy0yOC41MSwwLTQyLjc5LDM0LjQ3LTIyLjYzLDU0LjYzbDguNTgsOC41N2ExNiwxNiwwLDEsMS0yMi42MywyMi42M2wtOC41Ny04LjU4QzMwNi40NywzMTMuMDksMjcyLDMyNy4zNywyNzIsMzU1Ljg4VjM2OGExNiwxNiwwLDAsMS0zMiwwVjM1NS44OGMwLTI4LjUxLTM0LjQ3LTQyLjc5LTU0LjYzLTIyLjYzbC04LjU3LDguNThhMTYsMTYsMCwwLDEtMjIuNjMtMjIuNjNsOC41OC04LjU3YzIwLjE2LTIwLjE2LDUuODgtNTQuNjMtMjIuNjMtNTQuNjNIMTI4YTE2LDE2LDAsMCwxLDAtMzJoMTIuMTJjMjguNTEsMCw0Mi43OS0zNC40NywyMi42My01NC42M2wtOC41OC04LjU3YTE2LDE2LDAsMCwxLDIyLjYzLTIyLjYzbDguNTcsOC41OGMyMC4xNiwyMC4xNiw1NC42Myw1Ljg4LDU0LjYzLTIyLjYzVjExMmExNiwxNiwwLDAsMSwzMiwwdjEyLjEyYzAsMjguNTEsMzQuNDcsNDIuNzksNTQuNjMsMjIuNjNsOC41Ny04LjU4YTE2LDE2LDAsMCwxLDIyLjYzLDIyLjYzbC04LjU4LDguNTdDMzI5LjA5LDE4OS41MywzNDMuMzcsMjI0LDM3MS44OCwyMjRIMzg0YTE2LDE2LDAsMCwxLDAsMzJabS05NiwwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDI4OCwyNTZaXCJdXG59O1xudmFyIGZhU2hpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGlwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjFhXCIsIFwiTTQ5Ni42MTYgMzcyLjYzOWw3MC4wMTItNzAuMDEyYzE2Ljg5OS0xNi45IDkuOTQyLTQ1Ljc3MS0xMi44MzYtNTMuMDkyTDUxMiAyMzYuMTAyVjk2YzAtMTcuNjczLTE0LjMyNy0zMi0zMi0zMmgtNjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djQwaC02NGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjE0MC4xMDJsLTQxLjc5MiAxMy40MzNjLTIyLjc1MyA3LjMxMy0yOS43NTQgMzYuMTczLTEyLjgzNiA1My4wOTJsNzAuMDEyIDcwLjAxMkMxMjUuODI4IDQxNi4yODcgODUuNTg3IDQ0OCAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgNjEuMDIzIDAgMTA3LjQ5OS0yMC42MSAxNDMuMjU4LTU5LjM5NkMxODEuNjc3IDQ4Ny40MzIgMjE2LjAyMSA1MTIgMjU2IDUxMmgxMjhjMzkuOTc5IDAgNzQuMzIzLTI0LjU2OCA4OC43NDItNTkuMzk2QzUwOC40OTUgNDkxLjM4NCA1NTQuOTY4IDUxMiA2MTYgNTEyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0LTYwLjgxNyAwLTEwMS41NDItMzEuMDAxLTExOS4zODQtNzUuMzYxek0xOTIgMTI4aDI1NnY4Ny41MzFsLTExOC4yMDgtMzcuOTk1YTMxLjk5NSAzMS45OTUgMCAwIDAtMTkuNTg0IDBMMTkyIDIxNS41MzFWMTI4elwiXVxufTtcbnZhciBmYVNoaXBwaW5nRmFzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGlwcGluZy1mYXN0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDhiXCIsIFwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTEyQzg1LjUgMCA2NCAyMS41IDY0IDQ4djQ4SDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjcyYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhINDBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjA4YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIOGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOGgyMDhjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEg2NHYxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTMyMCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptODAtMjA4SDQxNlYxNDRoNDQuMWw5OS45IDk5LjlWMjU2elwiXVxufTtcbnZhciBmYVNob2VQcmludHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hvZS1wcmludHMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1NGJcIiwgXCJNMTkyIDE2MGgzMlYzMmgtMzJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjR6TTAgNDE2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzJWMzUySDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0em0zMzcuNDYtMTI4Yy0zNC45MSAwLTc2LjE2IDEzLjEyLTEwNC43MyAzMi0yNC43OSAxNi4zOC00NC41MiAzMi0xMDQuNzMgMzJ2MTI4bDU3LjUzIDE1Ljk3YzI2LjIxIDcuMjggNTMuMDEgMTMuMTIgODAuMzEgMTUuMDUgMzIuNjkgMi4zMSA2NS42LjY3IDk3LjU4LTYuMkM0NzIuOSA0ODEuMyA1MTIgNDI5LjIyIDUxMiAzODRjMC02NC04NC4xOC05Ni0xNzQuNTQtOTZ6TTQ5MS40MiA3LjE5QzQ1OS40NC4zMiA0MjYuNTMtMS4zMyAzOTMuODQuOTljLTI3LjMgMS45My01NC4xIDcuNzctODAuMzEgMTUuMDRMMjU2IDMydjEyOGM2MC4yIDAgNzkuOTQgMTUuNjIgMTA0LjczIDMyIDI4LjU3IDE4Ljg4IDY5LjgyIDMyIDEwNC43MyAzMkM1NTUuODIgMjI0IDY0MCAxOTIgNjQwIDEyOGMwLTQ1LjIyLTM5LjEtOTcuMy0xNDguNTgtMTIwLjgxelwiXVxufTtcbnZhciBmYVNob3BwaW5nQmFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3BwaW5nLWJhZycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI5MFwiLCBcIk0zNTIgMTYwdi0zMkMzNTIgNTcuNDIgMjk0LjU3OSAwIDIyNCAwIDE1My40MiAwIDk2IDU3LjQyIDk2IDEyOHYzMkgwdjI3MmMwIDQ0LjE4MyAzNS44MTcgODAgODAgODBoMjg4YzQ0LjE4MyAwIDgwLTM1LjgxNyA4MC04MFYxNjBoLTk2em0tMTkyLTMyYzAtMzUuMjkgMjguNzEtNjQgNjQtNjRzNjQgMjguNzEgNjQgNjR2MzJIMTYwdi0zMnptMTYwIDEyMGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0em0tMTkyIDBjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNHpcIl1cbn07XG52YXIgZmFTaG9wcGluZ0Jhc2tldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaG9wcGluZy1iYXNrZXQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyOTFcIiwgXCJNNTc2IDIxNnYxNmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLThsLTI2LjExMyAxODIuNzg4QzUxNC41MDkgNDYyLjQzNSA0OTQuMjU3IDQ4MCA0NzAuMzcgNDgwSDEwNS42M2MtMjMuODg3IDAtNDQuMTM5LTE3LjU2NS00Ny41MTgtNDEuMjEyTDMyIDI1NmgtOGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di0xNmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoNjcuMzQxbDEwNi43OC0xNDYuODIxYzEwLjM5NS0xNC4yOTIgMzAuNDA3LTE3LjQ1MyA0NC43MDEtNy4wNTggMTQuMjkzIDEwLjM5NSAxNy40NTMgMzAuNDA4IDcuMDU4IDQ0LjcwMUwxNzAuNDc3IDE5MmgyMzUuMDQ2TDMyNi4xMiA4Mi44MjFjLTEwLjM5NS0xNC4yOTItNy4yMzQtMzQuMzA2IDcuMDU5LTQ0LjcwMSAxNC4yOTEtMTAuMzk1IDM0LjMwNi03LjIzNSA0NC43MDEgNy4wNThMNDg0LjY1OSAxOTJINTUyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHpNMzEyIDM5MlYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0cy0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHMyNC0xMC43NDUgMjQtMjR6bTExMiAwVjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRzLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0czI0LTEwLjc0NSAyNC0yNHptLTIyNCAwVjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRzLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0czI0LTEwLjc0NSAyNC0yNHpcIl1cbn07XG52YXIgZmFTaG9wcGluZ0NhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hvcHBpbmctY2FydCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3YVwiLCBcIk01MjguMTIgMzAxLjMxOWw0Ny4yNzMtMjA4QzU3OC44MDYgNzguMzAxIDU2Ny4zOTEgNjQgNTUxLjk5IDY0SDE1OS4yMDhsLTkuMTY2LTQ0LjgxQzE0Ny43NTggOC4wMjEgMTM3LjkzIDAgMTI2LjUyOSAwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDY5Ljg4M2w3MC4yNDggMzQzLjQzNUMxNDcuMzI1IDQxNy4xIDEzNiA0MzUuMjIyIDEzNiA0NTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NmMwLTE1LjY3NC02LjQ0Ny0yOS44MzUtMTYuODI0LTQwaDIwOS42NDdDNDMwLjQ0NyA0MjYuMTY1IDQyNCA0NDAuMzI2IDQyNCA0NTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NmMwLTIyLjE3Mi0xMi44ODgtNDEuMzMyLTMxLjU3OS01MC40MDVsNS41MTctMjQuMjc2YzMuNDEzLTE1LjAxOC04LjAwMi0yOS4zMTktMjMuNDAzLTI5LjMxOUgyMTguMTE3bC02LjU0NS0zMmgyOTMuMTQ1YzExLjIwNiAwIDIwLjkyLTcuNzU0IDIzLjQwMy0xOC42ODF6XCJdXG59O1xudmFyIGZhU2hvd2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3dlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJjY1wiLCBcIk0zMDQsMzIwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwzMjBabTMyLTk2YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMzNiwyMjRabTMyLDY0YTE2LDE2LDAsMSwwLTE2LTE2QTE2LDE2LDAsMCwwLDM2OCwyODhabS0zMiwzMmExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCwzMzYsMzIwWm0tMzItNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzA0LDI1NlptMTI4LTMyYTE2LDE2LDAsMSwwLTE2LTE2QTE2LDE2LDAsMCwwLDQzMiwyMjRabS00OCwxNmExNiwxNiwwLDEsMCwxNi0xNkExNiwxNiwwLDAsMCwzODQsMjQwWm0tMTYtNDhhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzY4LDE5MlptOTYsMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDY0LDIyNFptMzItMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDk2LDE5MlptLTY0LDY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQzMiwyNTZabS0zMiwzMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MDAsMjg4Wm0tNjQsNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzM2LDM1MlptLTMyLDMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwzODRabTY0LTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDM2OCwzMjBabTIxLjY1LTIxOC4zNS0xMS4zLTExLjMxYTE2LDE2LDAsMCwwLTIyLjYzLDBMMzUwLjA1LDk2QTExMS4xOSwxMTEuMTksMCwwLDAsMjcyLDY0Yy0xOS4yNCwwLTM3LjA4LDUuMy01Mi45LDEzLjg1bC0xMC0xMEExMjEuNzIsMTIxLjcyLDAsMCwwLDEyMy40NCwzMkM1NS40OSwzMS41LDAsOTIuOTEsMCwxNjAuODVWNDY0YTE2LDE2LDAsMCwwLDE2LDE2SDQ4YTE2LDE2LDAsMCwwLDE2LTE2VjE1OC40YzAtMzAuMTUsMjEtNTguMiw1MS02MS45M2E1OC4zOCw1OC4zOCwwLDAsMSw0OC45MywxNi42N2wxMCwxMEMxNjUuMywxMzguOTIsMTYwLDE1Ni43NiwxNjAsMTc2YTExMS4yMywxMTEuMjMsMCwwLDAsMzIsNzguMDVsLTUuNjYsNS42N2ExNiwxNiwwLDAsMCwwLDIyLjYybDExLjMsMTEuMzFhMTYsMTYsMCwwLDAsMjIuNjMsMEwzODkuNjUsMTI0LjI4QTE2LDE2LDAsMCwwLDM4OS42NSwxMDEuNjVaXCJdXG59O1xudmFyIGZhU2h1dHRsZVZhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaHV0dGxlLXZhbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjViNlwiLCBcIk02MjguODggMjEwLjY1TDQ5NC4zOSA0OS4yN0E0OC4wMSA0OC4wMSAwIDAgMCA0NTcuNTIgMzJIMzJDMTQuMzMgMzIgMCA0Ni4zMyAwIDY0djI4OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoMTI4YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyNDEuMzhjMC0xMS4yMy0zLjk0LTIyLjEtMTEuMTItMzAuNzN6TTY0IDE5MlY5Nmg5NnY5Nkg2NHptOTYgMjQwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0xNjAtMjQwaC05NlY5Nmg5NnY5NnptMTYwIDI0MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptLTk2LTI0MFY5Nmg2Ni4wMmw4MCA5NkgzODR6XCJdXG59O1xudmFyIGZhU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNGQ5XCIsIFwiTTQ5NiA2NEgxMjhWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTZDNy4yIDY0IDAgNzEuMiAwIDgwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHYzNjhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMjhoMzY4YzguOCAwIDE2LTcuMiAxNi0xNlY4MGMwLTguOC03LjItMTYtMTYtMTZ6TTE2MCAzODRoMzIwVjE2MEgxNjB2MjI0elwiXVxufTtcbnZhciBmYVNpZ25JbkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduLWluLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJmNlwiLCBcIk00MTYgNDQ4aC04NGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMyaC04NGMtNi42IDAtMTItNS40LTEyLTEyVjc2YzAtNi42IDUuNC0xMiAxMi0xMmg4NGM1MyAwIDk2IDQzIDk2IDk2djE5MmMwIDUzLTQzIDk2LTk2IDk2em0tNDctMjAxTDIwMSA3OWMtMTUtMTUtNDEtNC41LTQxIDE3djk2SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMzZ2OTZjMCAyMS41IDI2IDMyIDQxIDE3bDE2OC0xNjhjOS4zLTkuNCA5LjMtMjQuNiAwLTM0elwiXVxufTtcbnZhciBmYVNpZ25MYW5ndWFnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduLWxhbmd1YWdlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMmE3XCIsIFwiTTkxLjQzNCA0ODMuOTg3Yy0uMzA3LTE2LjAxOCAxMy4xMDktMjkuMTI5IDI5LjEzLTI5LjEyOWg2Mi4yOTN2LTUuNzE0SDU2Ljk5M2MtMTYuMDIxIDAtMjkuNDM3LTEzLjExMS0yOS4xMy0yOS4xMjlDMjguMTYgNDA0LjQ5MSA0MC44MzUgMzkyIDU2LjQyOCAzOTJoMTI2LjQyOXYtNS43MTRIMjkuMTM2Yy0xNi4wMjEgMC0yOS40MzctMTMuMTExLTI5LjEzLTI5LjEyOS4yOTctMTUuNTIyIDEyLjk3My0yOC4wMTMgMjguNTY2LTI4LjAxM2gxNTQuMjg2di01LjcxNEg1Ny43MDdjLTE2LjAyMSAwLTI5LjQzNy0xMy4xMTEtMjkuMTMtMjkuMTI5LjI5Ny0xNS41MjIgMTIuOTczLTI4LjAxMyAyOC41NjYtMjguMDEzaDE2OC41NjZsLTMxLjA4NS0yMi42MDZjLTEyLjc2Mi05LjI4MS0xNS41ODMtMjcuMTQ5LTYuMzAyLTM5LjkxMiA5LjI4MS0xMi43NjEgMjcuMTUtMTUuNTgyIDM5LjkxMi02LjMwMmwxMjMuMzYxIDg5LjcxNWEzNC4yODcgMzQuMjg3IDAgMCAxIDE0LjEyIDI3LjcyOHYxNDEuMTM2YzAgMTUuOTEtMTAuOTQ2IDI5LjczLTI2LjQzMyAzMy4zNzRsLTgwLjQ3MSAxOC45MzRhMTM3LjE2IDEzNy4xNiAwIDAgMS0zMS40MTEgMy42NDZIMTIwYy0xNS41OTMtLjAwMS0yOC4yNjktMTIuNDkyLTI4LjU2Ni0yOC4wMTR6bTczLjI0OS0yMjUuNzAxaDM2LjQyM2wtMTEuMTg3LTguMTM2Yy0xOC41NzktMTMuNTExLTIwLjMxMy00MC44ODctMy4xNy01Ni41MzZsLTEzLjAwNC0xNi43Yy05Ljg0My0xMi42NDEtMjguNDMtMTUuMTcxLTQwLjg4LTUuMDg4LTEyLjA2NSA5Ljc3MS0xNC4xMzMgMjcuNDQ3LTQuNTUzIDM5Ljc1bDM2LjM3MSA0Ni43MXptMjgzLjI5OC0yLjEwM2wtNS4wMDMtMTUyLjQ1MmMtLjUxOC0xNS43NzEtMTMuNzIyLTI4LjEzNi0yOS40OTMtMjcuNjE5LTE1Ljc3My41MTgtMjguMTM3IDEzLjcyMi0yNy42MTkgMjkuNDkzbDEuMjYyIDM4LjQxNUwyODMuNTY1IDExLjAxOWMtOS41OC0xMi4zMDMtMjcuMjIzLTE0LjYzLTM5LjY1My01LjMyOC0xMi44MjcgOS41OTktMTQuOTI5IDI4LjI0LTUuMDg2IDQwLjg4MWw3Ni44ODkgOTguNzQ1LTQuNTA5IDMuNTExLTk0Ljc5LTEyMS43MzRjLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsOTQuNDQzIDEyMS4yODgtNC41MDkgMy41MTEtNzcuNjc1LTk5Ljc1NGMtOS41OC0xMi4zMDMtMjcuMjIzLTE0LjYzLTM5LjY1My01LjMyOC0xMi44MjcgOS41OTktMTQuOTI5IDI4LjI0LTUuMDg2IDQwLjg4MWw1Mi4wNTMgNjYuODQ5YzEyLjQ5Ny04LjI1NyAyOS4wNTUtOC4yODUgNDEuNjkuOTA0bDEyMy4zNiA4OS43MTRjMTAuOTA0IDcuOTMgMTcuNDE1IDIwLjcxNSAxNy40MTUgMzQuMTk4djE2Ljk5OWw2MS4wNjQtNDcuNTQ5YTM0LjI4NSAzNC4yODUgMCAwIDAgMTMuMjAyLTI4LjE3N3pcIl1cbn07XG52YXIgZmFTaWduT3V0QWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpZ24tb3V0LWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJmNVwiLCBcIk00OTcgMjczTDMyOSA0NDFjLTE1IDE1LTQxIDQuNS00MS0xN3YtOTZIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHYtOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTM2Vjg4YzAtMjEuNCAyNS45LTMyIDQxLTE3bDE2OCAxNjhjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0xOTIgNDM2di00MGMwLTYuNi01LjQtMTItMTItMTJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4NGM2LjYgMCAxMi01LjQgMTItMTJWNzZjMC02LjYtNS40LTEyLTEyLTEySDk2Yy01MyAwLTk2IDQzLTk2IDk2djE5MmMwIDUzIDQzIDk2IDk2IDk2aDg0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIl1cbn07XG52YXIgZmFTaWduYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2lnbmFsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMDEyXCIsIFwiTTIxNiAyODhoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxOTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzA0YzAtOC44NC03LjE2LTE2LTE2LTE2ek04OCAzODRINDBjLTguODQgMC0xNiA3LjE2LTE2IDE2djk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2di05NmMwLTguODQtNy4xNi0xNi0xNi0xNnptMjU2LTE5MmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djI4OGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTEyOC05NmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djM4NGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxMTJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTYwMCAwaC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDgwYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYVNpZ25hdHVyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduYXR1cmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1YjdcIiwgXCJNNjIzLjIgMTkyYy01MS44IDMuNS0xMjUuNyA1NC43LTE2My4xIDcxLjUtMjkuMSAxMy4xLTU0LjIgMjQuNC03Ni4xIDI0LjQtMjIuNiAwLTI2LTE2LjItMjEuMy01MS45IDEuMS04IDExLjctNzkuMi00Mi43LTc2LjEtMjUuMSAxLjUtNjQuMyAyNC44LTE2OS41IDEyNkwxOTIgMTgyLjJjMzAuNC03NS45LTUzLjItMTUxLjUtMTI5LjctMTAyLjhMNy40IDExNi4zQzAgMTIxLTIuMiAxMzAuOSAyLjUgMTM4LjRsMTcuMiAyN2M0LjcgNy41IDE0LjYgOS43IDIyLjEgNC45bDU4LTM4LjljMTguNC0xMS43IDQwLjcgNy4yIDMyLjcgMjcuMUwzNC4zIDQwNC4xQzI3LjUgNDIxIDM3IDQ0OCA2NCA0NDhjOC4zIDAgMTYuNS0zLjIgMjIuNi05LjQgNDIuMi00Mi4yIDE1NC43LTE1MC43IDIxMS4yLTE5NS44LTIuMiAyOC41LTIuMSA1OC45IDIwLjYgODMuOCAxNS4zIDE2LjggMzcuMyAyNS4zIDY1LjUgMjUuMyAzNS42IDAgNjgtMTQuNiAxMDIuMy0zMCAzMy0xNC44IDk5LTYyLjYgMTM4LjQtNjUuOCA4LjUtLjcgMTUuMi03LjMgMTUuMi0xNS44di0zMi4xYy4yLTkuMS03LjUtMTYuOC0xNi42LTE2LjJ6XCJdXG59O1xudmFyIGZhU2ltQ2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaW0tY2FyZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjdjNFwiLCBcIk0wIDY0djM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGgyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4TDI1NiAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHptMjI0IDE5MmgtNjR2LTY0aDY0djY0em05NiAwaC02NHYtNjRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJ6bS02NCAxMjhoNjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJoLTMydi02NHptLTk2IDBoNjR2NjRoLTY0di02NHptLTk2IDBoNjR2NjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi0zMnptMC05NmgyNTZ2NjRINjR2LTY0em0wLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMydjY0SDY0di0zMnpcIl1cbn07XG52YXIgZmFTaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpbmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNmRcIiwgXCJNMzIsNDE2YTk2LDk2LDAsMCwwLDk2LDk2SDM4NGE5Niw5NiwwLDAsMCw5Ni05NlYzODRIMzJaTTQ5NiwyODhINDAwVjI1Nmg2NGExNiwxNiwwLDAsMCwxNi0xNlYyMjRhMTYsMTYsMCwwLDAtMTYtMTZIMzg0YTMyLDMyLDAsMCwwLTMyLDMydjQ4SDI4OFY5NmEzMiwzMiwwLDAsMSw2NCwwdjE2YTE2LDE2LDAsMCwwLDE2LDE2aDMyYTE2LDE2LDAsMCwwLDE2LTE2Vjk2QTk2LjE2LDk2LjE2LDAsMCwwLDMwMC44NywxLjg2QzI1NS4yOSwxMC43MSwyMjQsNTMuMzYsMjI0LDk5Ljc5VjI4OEgxNjBWMjQwYTMyLDMyLDAsMCwwLTMyLTMySDQ4YTE2LDE2LDAsMCwwLTE2LDE2djE2YTE2LDE2LDAsMCwwLDE2LDE2aDY0djMySDE2QTE2LDE2LDAsMCwwLDAsMzA0djMyYTE2LDE2LDAsMCwwLDE2LDE2SDQ5NmExNiwxNiwwLDAsMCwxNi0xNlYzMDRBMTYsMTYsMCwwLDAsNDk2LDI4OFpcIl1cbn07XG52YXIgZmFTaXRlbWFwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpdGVtYXAnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYwZThcIiwgXCJNMTI4IDM1MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS0yNC04MGgxOTJ2NDhoNDh2LTQ4aDE5MnY0OGg0OHYtNTcuNTljMC0yMS4xNy0xNy4yMy0zOC40MS0zOC40MS0zOC40MUgzNDR2LTY0aDQwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0MHY2NEg5NC40MUM3My4yMyAyMjQgNTYgMjQxLjIzIDU2IDI2Mi40MVYzMjBoNDh2LTQ4em0yNjQgODBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjQwIDBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFTa2F0aW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NrYXRpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY3YzVcIiwgXCJNNDAwIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em0wIDQ0OGMtOC44IDAtMTYgNy4yLTE2IDE2cy03LjIgMTYtMTYgMTZoLTk2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4IDAtOC44LTcuMi0xNi0xNi0xNnptLTI4Mi4yIDguNmMtNi4yIDYuMi0xNi40IDYuMy0yMi42IDBsLTY3LjktNjcuOWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw2Ny45IDY3LjljOS40IDkuNCAyMS43IDE0IDM0IDE0czI0LjYtNC43IDMzLjktMTRjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4zLTIyLjcgMHptNTYuMS0xNzkuOGwtOTMuNyA5My43Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuMiA2LjIgNi4yIDE0LjQgOS40IDIyLjYgOS40czE2LjQtMy4xIDIyLjYtOS40bDkxLjktOTEuOS0zMC4yLTMwLjJjLTUtNS05LjQtMTAuNy0xMy4yLTE2Ljh6TTEyOCAxNjBoMTA1LjVsLTIwLjEgMTcuMmMtMTMuNSAxMS41LTIxLjYgMjguNC0yMi4zIDQ2LjEtLjcgMTcuOCA2LjEgMzUuMiAxOC43IDQ3LjdsNzguMiA3OC4yVjQzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMydi04OS40YzAtMTIuNi01LjEtMjUtMTQuMS0zMy45bC02MS02MWMuNS0uNCAxLjItLjYgMS43LTEuMWw4Mi4zLTgyLjNjMTEuNS0xMS41IDE0LjktMjguNiA4LjctNDMuNi02LjItMTUtMjAuNy0yNC43LTM3LTI0LjdIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYVNraWluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdza2lpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3YzlcIiwgXCJNNDMyIDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzQ1OC41IDAgNDMyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptNzMgMzU2LjFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwLTEyLjEgMTIuMS0zMC41IDE1LjQtNDUuMSA4LjdsLTEzNS44LTcwLjIgNDkuMi03My44YzEyLjctMTkgMTAuMi00NC41LTYtNjAuNkwyOTMgMjE1LjdsLTEwNy01My4xYy0yLjkgMTkuOSAzLjQgNDAgMTcuNyA1NC40bDc1LjEgNzUuMi00NS45IDY4LjhMMzUgMjU4LjdjLTExLjctNi0yNi4yLTEuNS0zMi4zIDEwLjMtNi4xIDExLjgtMS41IDI2LjMgMTAuMyAzMi4zbDM5MS45IDIwMi41YzExLjkgNS41IDI0LjUgOC4xIDM3LjEgOC4xIDIzLjIgMCA0Ni05IDYzLTI2IDkuMy05LjMgOS4zLTI0LjUgMC0zMy44ek0xMjAgOTEuNmwtMTEuNSAyMi41YzE0LjQgNy4zIDMxLjIgNC45IDQyLjgtNC44bDQ3LjIgMjMuNGMtLjEuMS0uMS4yLS4yLjNsMTE0LjUgNTYuOCAzMi40LTEzIDYuNCAxOS4xYzQgMTIuMSAxMi42IDIyIDI0IDI3LjdsNTguMSAyOWMxNS45IDcuOSAzNSAxLjUgNDIuOS0xNC4zIDcuOS0xNS44IDEuNS0zNS0xNC4zLTQyLjlsLTUyLjEtMjYuMS0xNy4xLTUxLjJjLTguMS0yNC4yLTQwLjktNTYuNi04NC41LTM5LjJsLTgxLjIgMzIuNS02Mi41LTMxYy4zLTE0LjUtNy4yLTI4LjYtMjAuOS0zNS42bC0xMS4xIDIxLjdoLS4ybC0zNC40LTdjLTEuOC0uNC0zLjcuMi01IDEuNy0xLjkgMi4yLTEuNyA1LjUuNSA3LjRsMjYuMiAyM3pcIl1cbn07XG52YXIgZmFTa2lpbmdOb3JkaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2tpaW5nLW5vcmRpYycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjdjYVwiLCBcIk0zMzYgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMzYyLjUgMCAzMzYgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0yMTYgMzIwYy0xMy4yIDAtMjQgMTAuNy0yNCAyNCAwIDEzLjItMTAuOCAyNC0yNCAyNGgtNjkuNUw0NjAgMjg1LjZjMTEuNy00LjcgMjAuMS0xNi4yIDIwLjEtMjkuNiAwLTE3LjctMTQuMy0zMi0zMi0zMmgtNDRMMzc4IDE3MC44Yy0xMi41LTI1LjUtMzUuNS00NC4yLTYxLjgtNTAuOUwyNDUgOTguN2MtMjguMy02LjgtNTcuOC0uNS04MC44IDE3LjFsLTM5LjcgMzAuNGMtMTQgMTAuNy0xNi43IDMwLjgtNS45IDQ0LjkuNy45IDEuNyAxLjMgMi40IDIuMUw2Ni45IDQ2NEgyNGMtMTMuMiAwLTI0IDEwLjctMjQgMjRzMTAuOCAyNCAyNCAyNGg0ODBjMzkuNyAwIDcyLTMyLjMgNzItNzIgMC0xMy4yLTEwLjgtMjQtMjQtMjR6bS0yNjAuNSA0OGgtOTYuOWw0My4xLTkxLTIyLTEzYy0xMi4xLTcuMi0yMS45LTE2LjktMjkuNS0yNy44TDEyMy43IDQ2NEg5OS41bDUyLjMtMjYxLjRjNC4xLTEgOC4xLTIuOSAxMS43LTUuNmwzOS43LTMwLjRjNy43LTUuOSAxNy40LTggMjUuMy02LjFsMTQuNyA0LjQtMzcuNSA4Ny40Yy0xMi42IDI5LjUtMS4zIDY0IDI2LjMgODAuM2w4NSA1MC4yLTI1LjUgODEuMnptMTEwLjYgMGgtNDMuNmwyMy42LTc1LjVjNS45LTIwLjgtMi45LTQzLjEtMjEuNi01NC40TDI5OS4zIDI5OGwzMS4zLTc4LjMgMjAuMyA0MS40YzggMTYuMyAyNC45IDI2LjkgNDMuMSAyNi45aDMzLjNsLTI1LjIgMTc2elwiXVxufTtcbnZhciBmYVNrdWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NrdWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTRjXCIsIFwiTTI1NiAwQzExNC42IDAgMCAxMDAuMyAwIDIyNGMwIDcwLjEgMzYuOSAxMzIuNiA5NC41IDE3My43IDkuNiA2LjkgMTUuMiAxOC4xIDEzLjUgMjkuOWwtOS40IDY2LjJjLTEuNCA5LjYgNiAxOC4yIDE1LjcgMTguMkgxOTJ2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNjR2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNzcuN2M5LjcgMCAxNy4xLTguNiAxNS43LTE4LjJsLTkuNC02Ni4yYy0xLjctMTEuNyAzLjgtMjMgMTMuNS0yOS45QzQ3NS4xIDM1Ni42IDUxMiAyOTQuMSA1MTIgMjI0IDUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwem0tOTYgMzIwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptMTkyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0elwiXVxufTtcbnZhciBmYVNrdWxsQ3Jvc3Nib25lcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdza3VsbC1jcm9zc2JvbmVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzE0XCIsIFwiTTQzOS4xNSA0NTMuMDZMMjk3LjE3IDM4NGwxNDEuOTktNjkuMDZjNy45LTMuOTUgMTEuMTEtMTMuNTYgNy4xNS0yMS40Nkw0MzIgMjY0Ljg1Yy0zLjk1LTcuOS0xMy41Ni0xMS4xMS0yMS40Ny03LjE2TDIyNCAzNDguNDEgMzcuNDcgMjU3LjY5Yy03LjktMy45NS0xNy41MS0uNzUtMjEuNDcgNy4xNkwxLjY5IDI5My40OGMtMy45NSA3LjktLjc1IDE3LjUxIDcuMTUgMjEuNDZMMTUwLjgzIDM4NCA4Ljg1IDQ1My4wNmMtNy45IDMuOTUtMTEuMTEgMTMuNTYtNy4xNSAyMS40N2wxNC4zMSAyOC42M2MzLjk1IDcuOSAxMy41NiAxMS4xMSAyMS40NyA3LjE1TDIyNCA0MTkuNTlsMTg2LjUzIDkwLjcyYzcuOSAzLjk1IDE3LjUxLjc1IDIxLjQ3LTcuMTVsMTQuMzEtMjguNjNjMy45NS03LjkxLjc0LTE3LjUyLTcuMTYtMjEuNDd6TTE1MCAyMzcuMjhsLTUuNDggMjUuODdjLTIuNjcgMTIuNjIgNS40MiAyNC44NSAxNi40NSAyNC44NWgxMjYuMDhjMTEuMDMgMCAxOS4xMi0xMi4yMyAxNi40NS0yNC44NWwtNS41LTI1Ljg3YzQxLjc4LTIyLjQxIDcwLTYyLjc1IDcwLTEwOS4yOEMzNjggNTcuMzEgMzAzLjUzIDAgMjI0IDBTODAgNTcuMzEgODAgMTI4YzAgNDYuNTMgMjguMjIgODYuODcgNzAgMTA5LjI4ek0yODAgMTEyYzE3LjY1IDAgMzIgMTQuMzUgMzIgMzJzLTE0LjM1IDMyLTMyIDMyLTMyLTE0LjM1LTMyLTMyIDE0LjM1LTMyIDMyLTMyem0tMTEyIDBjMTcuNjUgMCAzMiAxNC4zNSAzMiAzMnMtMTQuMzUgMzItMzIgMzItMzItMTQuMzUtMzItMzIgMTQuMzUtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MTVcIiwgXCJNNTk0LjUzIDUwOC42M0w2LjE4IDUzLjljLTYuOTctNS40Mi04LjIzLTE1LjQ3LTIuODEtMjIuNDVMMjMuMDEgNi4xOEMyOC40My0uOCAzOC40OS0yLjA2IDQ1LjQ3IDMuMzdMNjMzLjgyIDQ1OC4xYzYuOTcgNS40MiA4LjIzIDE1LjQ3IDIuODEgMjIuNDVsLTE5LjY0IDI1LjI3Yy01LjQyIDYuOTgtMTUuNDggOC4yMy0yMi40NiAyLjgxelwiXVxufTtcbnZhciBmYVNsZWlnaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbGVpZ2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3Y2NcIiwgXCJNNjEyLjcgMzUwLjdsLTkuMy03LjRjLTYuOS01LjUtMTctNC40LTIyLjUgMi41bC0xMCAxMi41Yy01LjUgNi45LTQuNCAxNyAyLjUgMjIuNWw5LjMgNy40YzUuOSA0LjcgOS4yIDExLjcgOS4yIDE5LjIgMCAxMy42LTExIDI0LjYtMjQuNiAyNC42SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDUxNmMzOSAwIDczLjctMjkuMyA3NS45LTY4LjMgMS40LTIzLjgtOC43LTQ2LjMtMjcuMi02MXpNMzIgMjI0YzAgNTkuNiA0MC45IDEwOS4yIDk2IDEyMy41VjQwMGg2NHYtNDhoMTkydjQ4aDY0di00OGM1MyAwIDk2LTQzIDk2LTk2di05NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtOTZ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLTIwLjdjLTY1LjggMC0xMjUuOS0zNy4yLTE1NS4zLTk2LTI5LjQtNTguOC04OS42LTk2LTE1NS4zLTk2SDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRzMTQuMyAzMiAzMiAzMnYxMjh6XCJdXG59O1xudmFyIGZhU2xpZGVyc0ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2xpZGVycy1oJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWRlXCIsIFwiTTQ5NiAzODRIMTYwdi0xNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoODB2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMzM2YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em0wLTE2MGgtODB2LTE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMzZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoODBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTYwSDI4OFY0OGMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZIMTZDNy4yIDY0IDAgNzEuMiAwIDgwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgyMDh2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMjA4YzguOCAwIDE2LTcuMiAxNi0xNlY4MGMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhU21pbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc21pbGUnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImYxMThcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTk0LjggMTcwLjJDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy42LTE2LjMgMTEtMzYuNyAyNC42LTIwLjUgMjIuNCAyNi45IDU1LjIgNDIuMiA5MC4yIDQyLjJzNjcuOC0xNS40IDkwLjItNDIuMmMxMy40LTE2LjIgMzguMSA0LjIgMjQuNiAyMC41elwiXVxufTtcbnZhciBmYVNtaWxlQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbWlsZS1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWI4XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTExMiAyMjMuNGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjMgNy40LTE1LjggNC0xNS4xLTQuNXptMjUwLjggMTIyLjhDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy41LTE2LjMgMTEtMzYuNyAyNC42LTIwLjUgMjIuNCAyNi45IDU1LjIgNDIuMiA5MC4yIDQyLjJzNjcuOC0xNS40IDkwLjItNDIuMmMxMy42LTE2LjIgMzguMSA0LjMgMjQuNiAyMC41em02LjItMTE4LjNsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy42IDguNi0xMSAxMS45LTE1LjEgNC41elwiXVxufTtcbnZhciBmYVNtaWxlV2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbWlsZS13aW5rJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNGRhXCIsIFwiTTAgMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDggMCAxMTkgMCAyNTZ6bTIwMC00OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzJ6bTE1OC41IDE2LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwyODggMjMzYy04LjMgNy40LTIxLjYuNC0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMzg0IDE5NyAzODggMjIyLjJjMS43IDExLjEtMTEuNCAxOC4zLTE5LjggMTAuOGwtOS43LTguNXpNMTU3LjggMzI1LjhDMTgwLjIgMzUyLjcgMjEzIDM2OCAyNDggMzY4czY3LjgtMTUuNCA5MC4yLTQyLjJjMTMuNi0xNi4yIDM4LjEgNC4yIDI0LjYgMjAuNUMzMzQuMyAzODAuNCAyOTIuNSA0MDAgMjQ4IDQwMHMtODYuMy0xOS42LTExNC44LTUzLjhjLTEzLjUtMTYuMyAxMS4yLTM2LjcgMjQuNi0yMC40elwiXVxufTtcbnZhciBmYVNtb2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc21vZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjc1ZlwiLCBcIk02MjQgMzY4SDgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDU0NGM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnptLTQ4MCA5NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgxMjhjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6bTQxNiAwSDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTE0NCAyODhoMTU2LjFjMjIuNSAxOS43IDUxLjYgMzIgODMuOSAzMnM2MS4zLTEyLjMgODMuOS0zMkg1MjhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTNTg5LjkgNjQgNTI4IDY0Yy0xOCAwLTM0LjcgNC42LTQ5LjcgMTIuMUM0NTQgMzEgNDA2LjggMCAzNTIgMGMtNDEgMC03Ny44IDE3LjMtMTA0IDQ0LjhDMjIxLjggMTcuMyAxODUgMCAxNDQgMCA2NC41IDAgMCA2NC41IDAgMTQ0czY0LjUgMTQ0IDE0NCAxNDR6XCJdXG59O1xudmFyIGZhU21va2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbW9raW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDhkXCIsIFwiTTYzMiAzNTJoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTQ0YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWMzYwYzAtNC40LTMuNi04LTgtOHpNNTUzLjMgODcuMWMtNS43LTMuOC05LjMtMTAtOS4zLTE2LjhWOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NjIuM2MwIDIyIDEwLjIgNDMuNCAyOC42IDU1LjQgNDIuMiAyNy4zIDY3LjQgNzMuOCA2Ny40IDEyNFYyODBjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtMzAuM2MwLTY1LjUtMzIuNC0xMjYuMi04Ni43LTE2Mi42ek00MzIgMzUySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZ6bS0zMiAxMTJIMjI0di02NGgxNzZ2NjR6bTg3LjctMzIyLjRDNDYzLjggMTI1IDQ0OCA5OS4zIDQ0OCA3MC4zVjhjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djY2LjRjMCA0My43IDI0LjYgODEuNiA2MC4zIDEwNi43IDIyLjQgMTUuNyAzNS43IDQxLjIgMzUuNyA2OC42VjI4MGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di0zMC4zYzAtNDMuMy0yMS04My40LTU2LjMtMTA4LjF6TTUzNiAzNTJoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTQ0YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWMzYwYzAtNC40LTMuNi04LTgtOHpcIl1cbn07XG52YXIgZmFTbW9raW5nQmFuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Ntb2tpbmctYmFuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTRkXCIsIFwiTTk2IDMwNGMwIDguOCA3LjIgMTYgMTYgMTZoMTE3LjVsLTk2LTk2SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0ek0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMCA0NDhjLTEwNS45IDAtMTkyLTg2LjEtMTkyLTE5MiAwLTQxLjQgMTMuMy03OS43IDM1LjctMTExLjFsMjY3LjQgMjY3LjRDMzM1LjcgNDM0LjcgMjk3LjQgNDQ4IDI1NiA0NDh6bTQ1LjItMTkySDM4NHYzMmgtNTAuOGwtMzItMzJ6bTExMS4xIDExMS4xTDM2NS4yIDMyMEg0MDBjOC44IDAgMTYtNy4yIDE2LTE2di02NGMwLTguOC03LjItMTYtMTYtMTZIMjY5LjJMMTQ0LjkgOTkuN0MxNzYuMyA3Ny4zIDIxNC42IDY0IDI1NiA2NGMxMDUuOSAwIDE5MiA4Ni4xIDE5MiAxOTIgMCA0MS40LTEzLjMgNzkuNy0zNS43IDExMS4xek0zMjAuNiAxMjhjLTE1LjYgMC0yOC42LTExLjItMzEuNC0yNS45LS43LTMuNi00LTYuMS03LjctNi4xaC0xNi4yYy01IDAtOC43IDQuNS04IDkuNCA0LjYgMzAuOSAzMS4yIDU0LjYgNjMuMyA1NC42IDE1LjYgMCAyOC42IDExLjIgMzEuNCAyNS45LjcgMy42IDQgNi4xIDcuNyA2LjFoMTYuMmM1IDAgOC43LTQuNSA4LTkuNC00LjYtMzAuOS0zMS4yLTU0LjYtNjMuMy01NC42elwiXVxufTtcbnZhciBmYVNtcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3Y2RcIiwgXCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjcgMS4zIDMgNC4xIDQuOCA3LjMgNC44IDY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpNMTI4LjIgMzA0SDExNmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgxNTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTkgMzguNi00Mi40IDM4LjZ6bTE5MS44LThjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04di02OC4ybC0yNC44IDU1LjhjLTIuOSA1LjktMTEuNCA1LjktMTQuMyAwTDIyNCAyMjcuOFYyOTZjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjE5MmMwLTguOCA3LjItMTYgMTYtMTZoMTZjNi4xIDAgMTEuNiAzLjQgMTQuMyA4LjhsMTcuNyAzNS40IDE3LjctMzUuNGMyLjctNS40IDguMy04LjggMTQuMy04LjhoMTZjOC44IDAgMTYgNy4yIDE2IDE2djEwNHptNDguMyA4SDM1NmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgzOTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTguOSAzOC42LTQyLjMgMzguNnpcIl1cbn07XG52YXIgZmFTbm93Ym9hcmRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc25vd2JvYXJkaW5nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2NlXCIsIFwiTTQzMiA5NmMyNi41IDAgNDgtMjEuNSA0OC00OFM0NTguNSAwIDQzMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTI4LjggMTUzLjZjNS44IDQuMyAxMi41IDYuNCAxOS4yIDYuNCA5LjcgMCAxOS4zLTQuNCAyNS42LTEyLjggMTAuNi0xNC4xIDcuOC0zNC4yLTYuNC00NC44bC0xMTEuNC04My41Yy0xMy44LTEwLjMtMjkuMS0xOC40LTQ1LjQtMjMuOGwtNjMuNy0yMS4yLTI2LjEtNTIuMUMyNDQuNyAyIDIyNS41LTQuNCAyMDkuNyAzLjVjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlsMjkuMSA1OC4xYzUuNyAxMS40IDE1LjYgMTkuOSAyNy43IDI0bDE2LjQgNS41LTQxLjIgMjAuNmMtMjEuOCAxMC45LTM1LjQgMzIuOC0zNS40IDU3LjJ2NTMuMWwtNzQuMSAyNC43Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41IDEuNyA1LjIgNC45IDkuNCA4LjcgMTIuOWwtMzguNy0xNC4xYy05LjctMy41LTE3LjQtMTAuNi0yMS44LTIwLTUuNi0xMi0xOS45LTE3LjItMzEuOS0xMS42cy0xNy4yIDE5LjktMTEuNiAzMS45YzkuOCAyMSAyNy4xIDM2LjkgNDguOSA0NC44bDM2NC44IDEzMi43YzkuNyAzLjUgMTkuNyA1LjMgMjkuNyA1LjMgMTIuNSAwIDI0LjktMi43IDM2LjUtOC4yIDEyLTUuNiAxNy4yLTE5LjkgMTEuNi0zMS45UzQ3NCA0NTQuNyA0NjIgNDYwLjNjLTkuMyA0LjQtMTkuOCA0LjgtMjkuNSAxLjNsLTkwLjgtMzMuMWM4LjctNC4xIDE1LjYtMTEuOCAxNy44LTIxLjlsMjEuOS0xMDJjMy45LTE4LjItMy4yLTM3LjItMTguMS00OC40bC01Mi0zOSA2Ni0zMC41IDgzLjUgNjIuOXptLTE0NC40IDUxLjdsLTE5LjcgOTJjLTEuNSA3LjEtLjEgMTMuOSAyLjggMjBsLTE2OS40LTYxLjZjMi43LS4yIDUuNC0uNCA4LTEuM2w4NS0yOC40YzE5LjYtNi41IDMyLjgtMjQuOCAzMi44LTQ1LjVWMjU2bDYwLjUgNDUuM3pcIl1cbn07XG52YXIgZmFTbm93Zmxha2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc25vd2ZsYWtlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMmRjXCIsIFwiTTQ0MC4zIDM0NS4ybC0zMy44LTE5LjUgMjYtN2M4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTQtMTQuOWMtMi4yLTguMi0xMC43LTEzLjEtMTguOS0xMC45bC03MC44IDE5LTYzLjktMzcgNjMuOC0zNi45IDcwLjggMTljOC4yIDIuMiAxNi43LTIuNyAxOC45LTEwLjlsNC0xNC45YzIuMi04LjItMi43LTE2LjctMTAuOS0xOC45bC0yNi03IDMzLjgtMTkuNWM3LjQtNC4zIDkuOS0xMy43IDUuNy0yMS4xTDQzMC40IDExOWMtNC4zLTcuNC0xMy43LTkuOS0yMS4xLTUuN2wtMzMuOCAxOS41IDctMjZjMi4yLTguMi0yLjctMTYuNy0xMC45LTE4LjlsLTE0LjktNGMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTE5IDcwLjgtNjIuOCAzNi4ydi03Ny41bDUzLjctNTMuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTEuMy0xMS4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgNTYuNFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDAuNGwtMTkuNy0xOS43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwxMzguMyA0OGMtNi4zIDYuMi02LjMgMTYuNCAwIDIyLjZsNTMuNyA1My43djc3LjVsLTYyLjgtMzYuMi0xOS03MC44Yy0yLjItOC4yLTEwLjctMTMuMS0xOC45LTEwLjlsLTE0LjkgNGMtOC4yIDIuMi0xMy4xIDEwLjctMTAuOSAxOC45bDcgMjYtMzMuOC0xOS41Yy03LjQtNC4zLTE2LjgtMS43LTIxLjEgNS43TDIuMSAxNDUuN2MtNC4zIDcuNC0xLjcgMTYuOCA1LjcgMjEuMWwzMy44IDE5LjUtMjYgN2MtOC4zIDIuMi0xMy4yIDEwLjctMTEgMTlsNCAxNC45YzIuMiA4LjIgMTAuNyAxMy4xIDE4LjkgMTAuOWw3MC44LTE5IDYzLjggMzYuOS02My44IDM2LjktNzAuOC0xOWMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTQgMTQuOWMtMi4yIDguMiAyLjcgMTYuNyAxMC45IDE4LjlsMjYgNy0zMy44IDE5LjZjLTcuNCA0LjMtOS45IDEzLjctNS43IDIxLjFsMTUuNSAyNi44YzQuMyA3LjQgMTMuNyA5LjkgMjEuMSA1LjdsMzMuOC0xOS41LTcgMjZjLTIuMiA4LjIgMi43IDE2LjcgMTAuOSAxOC45bDE0LjkgNGM4LjIgMi4yIDE2LjctMi43IDE4LjktMTAuOWwxOS03MC44IDYyLjgtMzYuMnY3Ny41bC01My43IDUzLjdjLTYuMyA2LjItNi4zIDE2LjQgMCAyMi42bDExLjMgMTEuM2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxOS43LTE5LjdWNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQwLjRsMTkuNyAxOS43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDExLjMtMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkwyNTYgMzg3Ljd2LTc3LjVsNjIuOCAzNi4yIDE5IDcwLjhjMi4yIDguMiAxMC43IDEzLjEgMTguOSAxMC45bDE0LjktNGM4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTctMjYgMzMuOCAxOS41YzcuNCA0LjMgMTYuOCAxLjcgMjEuMS01LjdsMTUuNS0yNi44YzQuMy03LjMgMS44LTE2LjgtNS42LTIxelwiXVxufTtcbnZhciBmYVNub3dtYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc25vd21hbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdkMFwiLCBcIk01MTAuOSAxNTIuM2wtNS45LTE0LjVjLTMuMy04LTEyLjYtMTEuOS0yMC44LTguN0w0NTYgMTQwLjZ2LTI5YzAtOC42LTcuMi0xNS42LTE2LTE1LjZoLTE2Yy04LjggMC0xNiA3LTE2IDE1LjZ2NDYuOWMwIC41LjMgMSAuMyAxLjVsLTU2LjQgMjNjLTUuOS0xMC0xMy4zLTE4LjktMjItMjYuNiAxMy42LTE2LjYgMjItMzcuNCAyMi02MC41IDAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMjMuMSA4LjUgNDMuOSAyMiA2MC41LTguNyA3LjctMTYgMTYuNi0yMiAyNi42bC01Ni40LTIzYy4xLS41LjMtMSAuMy0xLjV2LTQ2LjlDMTA0IDEwMyA5Ni44IDk2IDg4IDk2SDcyYy04LjggMC0xNiA3LTE2IDE1LjZ2MjlsLTI4LjEtMTEuNWMtOC4yLTMuMi0xNy41LjctMjAuOCA4LjdsLTUuOSAxNC41Yy0zLjMgOCAuNyAxNy4xIDguOSAyMC4zbDEzNS4yIDU1LjJjLS40IDQtMS4yIDgtMS4yIDEyLjIgMCAxMC4xIDEuNyAxOS42IDQuMiAyOC45QzEyMC45IDI5Ni40IDEwNCAzMzQuMiAxMDQgMzc2YzAgNTQgMjguNCAxMDAuOSA3MC44IDEyNy44IDkuMyA1LjkgMjAuMyA4LjIgMzEuMyA4LjJoOTkuMmMxMy4zIDAgMjYuMy00LjEgMzcuMi0xMS43IDQ2LjUtMzIuMyA3NC40LTg5LjQgNjIuOS0xNTIuNi01LjUtMzAuMi0yMC41LTU3LjYtNDEuNi03OSAyLjUtOS4yIDQuMi0xOC43IDQuMi0yOC43IDAtNC4yLS44LTguMS0xLjItMTIuMkw1MDIgMTcyLjZjOC4xLTMuMSAxMi4xLTEyLjIgOC45LTIwLjN6TTIyNCA5NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMiAyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC02NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTY0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtODhzLTE2LTIzLjItMTYtMzIgNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi0xNiAzMi0xNiAzMnptMzItNTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFTbm93cGxvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbm93cGxvdycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjdkMlwiLCBcIk0xMjAgMzc2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptODAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptMjM4LjYgNDkuNGMtMTQuNS0xNC41LTIyLjYtMzQuMS0yMi42LTU0LjZWMjY5LjJjMC0yMC41IDguMS00MC4xIDIyLjYtNTQuNmwzNi43LTM2LjdjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTIyLjYtMjIuNmMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTM2LjcgMzYuN2MtMjYuNSAyNi41LTQxLjQgNjIuNC00MS40IDk5LjlWMjg4aC02NHYtNTAuOWMwLTguNy0xLjgtMTcuMi01LjItMjUuMkwzNjQuNSAyOS4xQzM1Ni45IDExLjQgMzM5LjYgMCAzMjAuMyAwSDE3NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTEyaC0xNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTEuMkMyNi4zIDMxNy4yIDAgMzU1LjQgMCA0MDBjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJoMjU2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyIDAtMTcuMy00LjItMzMuNC0xMS4yLTQ4SDUxMnYxOC43YzAgMzcuNSAxNC45IDczLjQgNDEuNCA5OS45bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwyMi42LTIyLjZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTM2LjctMzYuN3pNMTkyIDY0aDExNy44bDY4LjYgMTYwSDI1NmwtNjQtNjRWNjR6bTE3NiAzODRIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDI1NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFTb2FwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvYXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNmVcIiwgXCJNNDE2LDE5MmE5NS40Miw5NS40MiwwLDAsMS0zMC45NCw3MC4yMUE5NS44LDk1LjgsMCwwLDEsMzUyLDQ0OEgxNjBhOTYsOTYsMCwwLDEsMC0xOTJoODguOTFBOTUuMyw5NS4zLDAsMCwxLDIyNCwxOTJIOTZBOTYsOTYsMCwwLDAsMCwyODhWNDE2YTk2LDk2LDAsMCwwLDk2LDk2SDQxNmE5Niw5NiwwLDAsMCw5Ni05NlYyODhBOTYsOTYsMCwwLDAsNDE2LDE5MlptLTk2LDY0YTY0LDY0LDAsMSwwLTY0LTY0QTY0LDY0LDAsMCwwLDMyMCwyNTZaTTIwOCw5NmE0OCw0OCwwLDEsMC00OC00OEE0OCw0OCwwLDAsMCwyMDgsOTZaTTM4NCw2NGEzMiwzMiwwLDEsMC0zMi0zMkEzMiwzMiwwLDAsMCwzODQsNjRaTTE2MCwyODhhNjQsNjQsMCwwLDAsMCwxMjhIMzUyYTY0LDY0LDAsMCwwLDAtMTI4WlwiXVxufTtcbnZhciBmYVNvY2tzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvY2tzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjk2XCIsIFwiTTIxNC42NiAzMTEuMDFMMjg4IDI1NlY5NkgxMjh2MTc2bC04Ni42NSA2NC42MWMtMzkuNCAyOS41Ni01My44NiA4NC40Mi0yOS4yMSAxMjcuMDZDMzAuMzkgNDk1LjI1IDYzLjI3IDUxMiA5Ni4wOCA1MTJjMjAuMDMgMCA0MC4yNS02LjI1IDU3LjUyLTE5LjJsMjEuODYtMTYuMzljLTI5Ljg1LTU1LjM4LTEzLjU0LTEyNS44NCAzOS4yLTE2NS40ek0yODggMzJjMC0xMS4wNSAzLjA3LTIxLjMgOC4wMi0zMC4zOEMyOTMuNC45MiAyOTAuODUgMCAyODggMEgxNjBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTYwVjMyek00ODAgMEgzNTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTkyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMyMCAyNzJsLTg2LjEzIDY0LjYxYy0zOS40IDI5LjU2LTUzLjg2IDg0LjQyLTI5LjIxIDEyNy4wNiAxOC4yNSAzMS41OCA1MC42MSA0OC4zMyA4My40MiA0OC4zMyAyMC4wMyAwIDQwLjI1LTYuMjUgNTcuNTItMTkuMmwxMTUuMi04Ni40QTEyNy45OTcgMTI3Ljk5NyAwIDAgMCA1MTIgMzA0Vjk2SDMyMHYxNzZ6XCJdXG59O1xudmFyIGZhU29sYXJQYW5lbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb2xhci1wYW5lbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjViYVwiLCBcIk00MzEuOTggNDQ4LjAxbC00Ny45Ny4wNVY0MTZoLTEyOHYzMi4yMWwtNDcuOTguMDVjLTguODIuMDEtMTUuOTcgNy4xNi0xNS45OCAxNS45OWwtLjA1IDMxLjczYy0uMDEgOC44NSA3LjE3IDE2LjAzIDE2LjAyIDE2LjAybDIyMy45Ni0uMjZjOC44Mi0uMDEgMTUuOTctNy4xNiAxNS45OC0xNS45OGwuMDQtMzEuNzNjLjAxLTguODUtNy4xNy0xNi4wMy0xNi4wMi0xNi4wMnpNNTg1LjIgMjYuNzRDNTgyLjU4IDExLjMxIDU2OC45OSAwIDU1My4wNiAwSDg2LjkzQzcxIDAgNTcuNDEgMTEuMzEgNTQuNzkgMjYuNzQtMy4zMiAzNjkuMTYuMDQgMzQ4LjA4LjAzIDM1MmMtLjAzIDE3LjMyIDE0LjI5IDMyIDMyLjYgMzJoNTc0Ljc0YzE4LjIzIDAgMzIuNTEtMTQuNTYgMzIuNTktMzEuNzkuMDItNC4wOCAzLjM1IDE2Ljk1LTU0Ljc2LTMyNS40N3pNMjU5LjgzIDY0aDEyMC4zM2w5Ljc3IDk2SDI1MC4wNmw5Ljc3LTk2em0tNzUuMTcgMjU2SDcxLjA5TDkwLjEgMjA4aDEwNS45N2wtMTEuNDEgMTEyem0xNi4yOS0xNjBIOTguMjRsMTYuMjktOTZoOTYuMTlsLTkuNzcgOTZ6bTMyLjgyIDE2MGwxMS40LTExMmgxNDkuNjVsMTEuNCAxMTJIMjMzLjc3em0xOTUuNS0yNTZoOTYuMTlsMTYuMjkgOTZINDM5LjA0bC05Ljc3LTk2em0yNi4wNiAyNTZsLTExLjQtMTEySDU0OS45bDE5LjAxIDExMkg0NTUuMzN6XCJdXG59O1xudmFyIGZhU29ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMGRjXCIsIFwiTTQxIDI4OGgyMzhjMjEuNCAwIDMyLjEgMjUuOSAxNyA0MUwxNzcgNDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwyNCAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDF6bTI1NS0xMDVMMTc3IDY0Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwyNCAxODNjLTE1LjEgMTUuMS00LjQgNDEgMTcgNDFoMjM4YzIxLjQgMCAzMi4xLTI1LjkgMTctNDF6XCJdXG59O1xudmFyIGZhU29ydEFscGhhRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LWFscGhhLWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNWRcIiwgXCJNMTc2IDM1MmgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6bTI0MC02NEgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiA0NDYuMzdWNDY0YTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiAzMjEuNjNWMzA0YTE2IDE2IDAgMCAwLTE2LTE2em0zMS4wNi04NS4zOGwtNTkuMjctMTYwQTE2IDE2IDAgMCAwIDM3Mi43MiAzMmgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgMjI0aDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgMjI0SDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDE0NEwzNTIgOTZsMTYuMzkgNDh6XCJdXG59O1xudmFyIGZhU29ydEFscGhhRG93bkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LWFscGhhLWRvd24tYWx0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmODgxXCIsIFwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0xMTItMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwiXVxufTtcbnZhciBmYVNvcnRBbHBoYVVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtYWxwaGEtdXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNWVcIiwgXCJNMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMWwtODAtOTZhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MHptNDAwIDEyOEgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiA0NDYuMzdWNDY0YTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiAzMjEuNjNWMzA0YTE2IDE2IDAgMCAwLTE2LTE2em0zMS4wNi04NS4zOGwtNTkuMjctMTYwQTE2IDE2IDAgMCAwIDM3Mi43MiAzMmgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgMjI0aDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgMjI0SDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDE0NEwzNTIgOTZsMTYuMzkgNDh6XCJdXG59O1xudmFyIGZhU29ydEFscGhhVXBBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1hbHBoYS11cC1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4ODJcIiwgXCJNMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMWwtODAtOTZhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MHptMjcyIDY0aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwiXVxufTtcbnZhciBmYVNvcnRBbW91bnREb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtYW1vdW50LWRvd24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxNjBcIiwgXCJNMzA0IDQxNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMTI4LTY0aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzcgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnptMjU2LTE5MkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTY0IDEyOEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNNDk2IDMySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhU29ydEFtb3VudERvd25BbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1hbW91bnQtZG93bi1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4ODRcIiwgXCJNMjQwIDk2aDY0YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2aC02NGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptMCAxMjhoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTI1NiAxOTJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI1NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yNTYtNjRoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bS02NCAwaC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzcgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnpcIl1cbn07XG52YXIgZmFTb3J0QW1vdW50VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1hbW91bnQtdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxNjFcIiwgXCJNMzA0IDQxNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43NyAxNjAgMTYgMTYwem00MTYgMEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTY0IDEyOEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNNDk2IDMySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhU29ydEFtb3VudFVwQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtYW1vdW50LXVwLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjg4NVwiLCBcIk0yNDAgOTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTY0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0wIDEyOGgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptMjU2IDE5MkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjU2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTI1Ni02NGgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnpNMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOS0xNy4yNCAxMS4zMS0yNy4zMWwtODAtOTZhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MHpcIl1cbn07XG52YXIgZmFTb3J0RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LWRvd24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwZGRcIiwgXCJNNDEgMjg4aDIzOGMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDE3NyA0NDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDI0IDMyOWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MXpcIl1cbn07XG52YXIgZmFTb3J0TnVtZXJpY0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1udW1lcmljLWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNjJcIiwgXCJNMzA0IDk2aDE2djY0aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCAzMDQgOTZ6bTI2LjE1IDE2Mi45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjUgNTEuMDUgMjEuMjEgOTcuNzcgNjguODUgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzYgODYuMjUtNjEuNjEgODYuMjUtMTMyVjMzNmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMzU2YTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwem0tMTc2LTRoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyelwiXVxufTtcbnZhciBmYVNvcnROdW1lcmljRG93bkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LW51bWVyaWMtZG93bi1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4ODZcIiwgXCJNMTc2IDM1MmgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6bTIyNCA2NGgtMTZWMzA0YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCAzMDQgMzUyaDE2djY0aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTMzMC4xNyAzNC45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjcgNTEuMDUgMjEuMTkgOTcuNzcgNjguODMgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzcgODYuMjUtNjEuNjEgODYuMjUtMTMyVjExMmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMTMyYTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwelwiXVxufTtcbnZhciBmYVNvcnROdW1lcmljVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1udW1lcmljLXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTYzXCIsIFwiTTMzMC4xNyAyNTguOTFhNzkgNzkgMCAwIDAtNTUgNTQuMTdjLTE0LjI3IDUxLjA1IDIxLjE5IDk3Ljc3IDY4LjgzIDEwMi41M2E4NC4wNyA4NC4wNyAwIDAgMS0yMC44NSAxMi45MWMtNy41NyAzLjQtMTAuOCAxMi40Ny04LjE4IDIwLjM0bDkuOSAyMGMyLjg3IDguNjMgMTIuNTMgMTMuNDkgMjAuOSA5LjkxIDU4LTI0Ljc2IDg2LjI1LTYxLjYxIDg2LjI1LTEzMlYzMzZjLS4wMi01MS4yMS00OC40LTkxLjM0LTEwMS44NS03Ny4wOXpNMzUyIDM1NmEyMCAyMCAwIDEgMSAyMC0yMCAyMCAyMCAwIDAgMS0yMCAyMHpNMzA0IDk2aDE2djY0aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCAzMDQgOTZ6TTEwNy4zMSAzNi42OWExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMXpcIl1cbn07XG52YXIgZmFTb3J0TnVtZXJpY1VwQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtbnVtZXJpYy11cC1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4ODdcIiwgXCJNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxek00MDAgNDE2aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJdXG59O1xudmFyIGZhU29ydFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtdXAnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwZGVcIiwgXCJNMjc5IDIyNEg0MWMtMjEuNCAwLTMyLjEtMjUuOS0xNy00MUwxNDMgNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTE5IDExOWMxNS4yIDE1LjEgNC41IDQxLTE2LjkgNDF6XCJdXG59O1xudmFyIGZhU3BhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwYScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjViYlwiLCBcIk01NjguMjUgMTkyYy0yOS4wNC4xMy0xMzUuMDEgNi4xNi0yMTMuODQgODMtMzMuMTIgMjkuNjMtNTMuMzYgNjMuMy02Ni40MSA5NC44Ni0xMy4wNS0zMS41Ni0zMy4yOS02NS4yMy02Ni40MS05NC44Ni03OC44My03Ni44NC0xODQuOC04Mi44Ny0yMTMuODQtODMtNC40MS0uMDItNy43OSAzLjQtNy43NSA3LjgyLjIzIDI3LjkyIDcuMTQgMTI2LjE0IDg4Ljc3IDE5OS4zQzE3Mi43OSA0ODAuOTQgMjU2IDQ4MCAyODggNDgwczExNS4xOS45NSAxOTkuMjMtODAuODhjODEuNjQtNzMuMTcgODguNTQtMTcxLjM4IDg4Ljc3LTE5OS4zLjA0LTQuNDItMy4zNC03Ljg0LTcuNzUtNy44MnpNMjg3Ljk4IDMwMi42YzEyLjgyLTE4Ljg1IDI3LjYtMzUuNzggNDQuMDktNTAuNTIgMTkuMDktMTguNjEgMzkuNTgtMzMuMyA2MC4yNi00NS4xOC0xNi40NC03MC41LTUxLjcyLTEzMy4wNS05Ni43My0xNzIuMjItNC4xMS0zLjU4LTExLjAyLTMuNTgtMTUuMTQgMC00NC45OSAzOS4xNC04MC4yNyAxMDEuNjMtOTYuNzQgMTcyLjA3IDIwLjM3IDExLjcgNDAuNSAyNi4xNCA1OS4yMiA0NC4zOWEyODIuNzY4IDI4Mi43NjggMCAwIDEgNDUuMDQgNTEuNDZ6XCJdXG59O1xudmFyIGZhU3BhY2VTaHV0dGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwYWNlLXNodXR0bGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYxOTdcIiwgXCJNNTkyLjYwNCAyMDguMjQ0QzU1OS43MzUgMTkyLjgzNiA1MTUuNzc3IDE4NCA0NzIgMTg0SDE4Ni4zMjdjLTQuOTUyLTYuNTU1LTEwLjU4NS0xMS45NzgtMTYuNzItMTZIMzc2QzIyOS4xNTcgMTM3Ljc0NyAyMTkuNDAzIDMyIDk2LjAwMyAzMkg5NnYxMjhIODBWMzJjLTI2LjUxIDAtNDggMjguNjU0LTQ4IDY0djY0Yy0yMy4xOTcgMC0zMiAxMC4wMzItMzIgMjR2NDBjMCAxMy45ODMgOC44MTkgMjQgMzIgMjR2MTZjLTIzLjE5NyAwLTMyIDEwLjAzMi0zMiAyNHY0MGMwIDEzLjk4MyA4LjgxOSAyNCAzMiAyNHY2NGMwIDM1LjM0NiAyMS40OSA2NCA0OCA2NFYzNTJoMTZ2MTI4aC4wMDNjMTIzLjQgMCAxMzMuMTU0LTEwNS43NDcgMjc5Ljk5Ny0xMzZIMTY5LjYwNmM2LjEzNS00LjAyMiAxMS43NjgtOS40NDUgMTYuNzItMTZINDcyYzQzLjc3NyAwIDg3LjczNS04LjgzNiAxMjAuNjA0LTI0LjI0NEM2MjIuMjgyIDI4OS44NDUgNjQwIDI3MS45OTIgNjQwIDI1NnMtMTcuNzE4LTMzLjg0NS00Ny4zOTYtNDcuNzU2ek00ODggMjk2YTggOCAwIDAgMS04LTh2LTY0YTggOCAwIDAgMSA4LThjMzEuOTA5IDAgMzEuOTQyIDgwIDAgODB6XCJdXG59O1xudmFyIGZhU3BlbGxDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcGVsbC1jaGVjaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjg5MVwiLCBcIk0yNzIgMjU2aDkxLjM2YzQzLjIgMCA4Mi0zMi4yIDg0LjUxLTc1LjM0YTc5LjgyIDc5LjgyIDAgMCAwLTI1LjI2LTYzLjA3IDc5LjgxIDc5LjgxIDAgMCAwIDkuMDYtNDQuOTFDNDI3LjkgMzAuNTcgMzg5LjMgMCAzNDcgMGgtNzVhMTYgMTYgMCAwIDAtMTYgMTZ2MjI0YTE2IDE2IDAgMCAwIDE2IDE2em00MC0yMDBoNDBhMjQgMjQgMCAwIDEgMCA0OGgtNDB6bTAgOTZoNTZhMjQgMjQgMCAwIDEgMCA0OGgtNTZ6TTE1NS4xMiAyMi4yNUEzMiAzMiAwIDAgMCAxMjQuNjQgMEg5OS4zNmEzMiAzMiAwIDAgMC0zMC40OCAyMi4yNUwuNTkgMjM1LjczQTE2IDE2IDAgMCAwIDE2IDI1NmgyNC45M2ExNiAxNiAwIDAgMCAxNS40Mi0xMS43M0w2OC4yOSAyMDhoODcuNDJsMTEuOTQgMzYuMjdBMTYgMTYgMCAwIDAgMTgzLjA3IDI1NkgyMDhhMTYgMTYgMCAwIDAgMTUuNDItMjAuMjd6TTg5LjM3IDE0NEwxMTIgNzUuM2wyMi42MyA2OC43em00ODIgMTMyLjQ4bC00NS4yMS00NS4zYTE1Ljg4IDE1Ljg4IDAgMCAwLTIyLjU5IDBsLTE1MS41IDE1MS41LTU1LjQxLTU1LjVhMTUuODggMTUuODggMCAwIDAtMjIuNTkgMGwtNDUuMyA0NS4zYTE2IDE2IDAgMCAwIDAgMjIuNTlsMTEyIDExMi4yMWExNS44OSAxNS44OSAwIDAgMCAyMi42IDBsMjA4LTIwOC4yMWExNiAxNiAwIDAgMC0uMDItMjIuNTl6XCJdXG59O1xudmFyIGZhU3BpZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwaWRlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjcxN1wiLCBcIk0xNTEuMTcgMTY3LjM1TDE3Ny4xIDE3Nmg0LjY3bDUuMjItMjYuMTJjLjcyLTMuNTggMS44LTcuNTggMy4yMS0xMS43OWwtMjAuMjktNDAuNTggMjMuOC03MS4zOWMyLjc5LTguMzgtMS43My0xNy40NC0xMC4xMi0yMC4yNEwxNjguNDIuODJjLTguMzgtMi44LTE3LjQ1IDEuNzMtMjAuMjQgMTAuMTJsLTI1Ljg5IDc3LjY4YTMyLjA0IDMyLjA0IDAgMCAwIDEuNzMgMjQuNDNsMjcuMTUgNTQuM3ptNDIyLjE0IDE4Mi4wM2wtNTIuNzUtNzkuMTJhMzIuMDAyIDMyLjAwMiAwIDAgMC0yNi42Mi0xNC4yNUg0MTZsNjguOTktMjQuMzZhMzIuMDMgMzIuMDMgMCAwIDAgMTYuNTEtMTIuNjFsNTMuNi04MC40MWM0LjktNy4zNSAyLjkxLTE3LjI5LTQuNDQtMjIuMTlsLTEzLjMxLTguODhjLTcuMzUtNC45LTE3LjI5LTIuOTEtMjIuMTkgNC40NGwtNTAuNTYgNzUuODNMNDA0LjEgMjA4SDM2OGwtMTAuMzctNTEuODVDMzU1LjQ0IDE0NS4xOCAzNDAuMjYgOTYgMjg4IDk2Yy01Mi4yNiAwLTY3LjQ0IDQ5LjE4LTY5LjYzIDYwLjE1TDIwOCAyMDhoLTM2LjFsLTYwLjQ5LTIwLjE3TDYwLjg0IDExMmMtNC45LTcuMzUtMTQuODMtOS4zNC0yMi4xOS00LjQ0bC0xMy4zMSA4Ljg4Yy03LjM1IDQuOS05LjM0IDE0LjgzLTQuNDQgMjIuMTlsNTMuNiA4MC40MWEzMi4wMyAzMi4wMyAwIDAgMCAxNi41MSAxMi42MUwxNjAgMjU2SDgyLjA2YTMyLjAyIDMyLjAyIDAgMCAwLTI2LjYzIDE0LjI1TDIuNjkgMzQ5LjM4Yy00LjkgNy4zNS0yLjkyIDE3LjI5IDQuNDQgMjIuMTlsMTMuMzEgOC44OGM3LjM1IDQuOSAxNy4yOSAyLjkxIDIyLjE5LTQuNDRsNDgtNzJoNDcuMDZsLTYwLjgzIDk3LjMzQTMxLjk4OCAzMS45ODggMCAwIDAgNzIgNDE4LjNWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di03My4xMWw3NC4wOC0xMTguNTNjLTEuMDEgMTQuMDUtMi4wOCAyOC4xMS0yLjA4IDQyLjIxQzE5MiAzOTkuNjQgMjMyLjc2IDQ0OCAyODggNDQ4czk2LTQ4LjM2IDk2LTEwMS40M2MwLTE0LjEtMS4wOC0yOC4xNi0yLjA4LTQyLjIxTDQ1NiA0MjIuODlWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di03Ny43MWMwLTYtMS42OS0xMS44OC00Ljg2LTE2Ljk2TDQzOC4zMSAzMDRoNDcuMDZsNDggNzJjNC45IDcuMzUgMTQuODQgOS4zNCAyMi4xOSA0LjQ0bDEzLjMxLTguODhjNy4zNi00LjkgOS4zNC0xNC44MyA0LjQ0LTIyLjE4ek00MDYuMDkgOTcuNTFsLTIwLjI5IDQwLjU4YzEuNDEgNC4yMSAyLjQ5IDguMjEgMy4yMSAxMS43OWw1LjIyIDI2LjEyaDQuNjdsMjUuOTMtOC42NSAyNy4xNS01NC4zYTMxLjk5NSAzMS45OTUgMCAwIDAgMS43My0yNC40M2wtMjUuODktNzcuNjhDNDI1LjAzIDIuNTYgNDE1Ljk2LTEuOTggNDA3LjU4LjgybC0xNS4xNyA1LjA2Yy04LjM4IDIuOC0xMi45MSAxMS44Ni0xMC4xMiAyMC4yNGwyMy44IDcxLjM5elwiXVxufTtcbnZhciBmYVNwaW5uZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Bpbm5lcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjExMFwiLCBcIk0zMDQgNDhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDggMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDh6bS00OCAzNjhjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6bTIwOC0yMDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6TTk2IDI1NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4UzAgMjI5LjQ5IDAgMjU2czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4em0xMi45MjIgOTkuMDc4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4YzAtMjYuNTA5LTIxLjQ5MS00OC00OC00OHptMjk0LjE1NiAwYy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4YzAtMjYuNTA5LTIxLjQ5LTQ4LTQ4LTQ4ek0xMDguOTIyIDYwLjkyMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OTEtNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhU3Bsb3RjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcGxvdGNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWJjXCIsIFwiTTQ3Mi4yOSAxOTUuODlsLTY3LjA2LTIyLjk1Yy0xOS4yOC02LjYtMzMuNTQtMjAuOTItMzguMTQtMzguM0wzNTEuMSA3NC4xOWMtMTEuNTgtNDMuNzctNzYuNTctNTcuMTMtMTA5Ljk4LTIyLjYybC00Ni4xNCA0Ny42N2MtMTMuMjYgMTMuNzEtMzMuNTQgMjAuOTMtNTQuMiAxOS4zMWwtNzEuODgtNS42MmMtNTIuMDUtNC4wNy04Ni45MyA0NC44OC01OS4wMyA4Mi44M2wzOC41NCA1Mi40MmMxMS4wOCAxNS4wNyAxMi44MiAzMy44NiA0LjY0IDUwLjI0TDI0LjYyIDM1NS40Yy0yMC41OSA0MS4yNSAyMi44NCA4NC44NyA3My40OSA3My44MWw2OS45Ni0xNS4yOGMyMC4xMS00LjM5IDQxLjQ1IDAgNTcuMDcgMTEuNzNsNTQuMzIgNDAuODNjMzkuMzIgMjkuNTYgMTAxLjA0IDcuNTcgMTA0LjQ1LTM3LjIybDQuNy02MS44NmMxLjM1LTE3Ljc5IDEyLjgtMzMuODYgMzAuNjMtNDIuOTlsNjItMzEuNzRjNDQuODgtMjIuOTYgMzkuNTktODAuMTctOC45NS05Ni43OXpcIl1cbn07XG52YXIgZmFTcHJheUNhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcHJheS1jYW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YmRcIiwgXCJNMjI0IDMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2aDEyOFYzMnptMjU2IDk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem0tMjU2IDMySDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djIyNGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI1NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2em0tNjQgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwek00ODAgOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnMtMTQuMzMtMzItMzItMzItMzIgMTQuMzMtMzIgMzIgMTQuMzMgMzIgMzIgMzJ6bS05NiAzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnptLTk2LTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAwYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjOFwiLCBcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYVNxdWFyZUZ1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLWZ1bGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0NWNcIiwgXCJNNTEyIDUxMkgwVjBoNTEydjUxMnpcIl1cbn07XG52YXIgZmFTcXVhcmVSb290QWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1yb290LWFsdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjY5OFwiLCBcIk01NzEuMzEgMjUxLjMxbC0yMi42Mi0yMi42MmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEw0ODAgMjc0Ljc1bC00Ni4wNi00Ni4wNmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDM0Ljc1IDMyMGwtNDYuMDYgNDYuMDZjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMEw0ODAgMzY1LjI1bDQ2LjA2IDQ2LjA2YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjItMjIuNjJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M0w1MjUuMjUgMzIwbDQ2LjA2LTQ2LjA2YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjN6TTU1MiAwSDMwNy42NWMtMTQuNTQgMC0yNy4yNiA5LjgtMzAuOTUgMjMuODdsLTg0Ljc5IDMyMi44LTU4LjQxLTEwNi4xQTMyLjAwOCAzMi4wMDggMCAwIDAgMTA1LjQ3IDIyNEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQzLjYybDg4Ljg4IDE2My43M0MxNjguOTkgNTAzLjUgMTg2LjMgNTEyIDIwNC45NCA1MTJjMTcuMjcgMCA0NC40NC05IDU0LjI4LTQxLjQ4TDM1Ny4wMyA5Nkg1NTJjMTMuMjUgMCAyNC0xMC43NSAyNC0yNFYyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwiXVxufTtcbnZhciBmYVN0YW1wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YW1wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWJmXCIsIFwiTTMyIDUxMmg0NDh2LTY0SDMydjY0em0zODQtMjU2aC02Ni41NmMtMTYuMjYgMC0yOS40NC0xMy4xOC0yOS40NC0yOS40NHYtOS40NmMwLTI3LjM3IDguODgtNTMuNDEgMjEuNDYtNzcuNzIgOS4xMS0xNy42MSAxMi45LTM4LjM5IDkuMDUtNjAuNDItNi43Ny0zOC43OC0zOC40Ny03MC43LTc3LjI2LTc3LjQ1QzIxMi42Mi05LjA0IDE2MCAzNy4zMyAxNjAgOTZjMCAxNC4xNiAzLjEyIDI3LjU0IDguNjkgMzkuNThDMTgyLjAyIDE2NC40MyAxOTIgMTk0LjcgMTkyIDIyNi40OXYuMDdjMCAxNi4yNi0xMy4xOCAyOS40NC0yOS40NCAyOS40NEg5NmMtNTMuMDIgMC05NiA0Mi45OC05NiA5NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2elwiXVxufTtcbnZhciBmYVN0YXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RhcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAwNVwiLCBcIk0yNTkuMyAxNy44TDE5NCAxNTAuMiA0Ny45IDE3MS41Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjMgMjMuMiA0NiA0Ni40IDMzLjdMMjg4IDQzOS42bDEzMC43IDY4LjdjMjMuMiAxMi4yIDUwLjktNy40IDQ2LjQtMzMuN2wtMjUtMTQ1LjUgMTA1LjctMTAzYzE5LTE4LjUgOC41LTUwLjgtMTcuNy01NC42TDM4MiAxNTAuMiAzMTYuNyAxNy44Yy0xMS43LTIzLjYtNDUuNi0yMy45LTU3LjQgMHpcIl1cbn07XG52YXIgZmFTdGFyQW5kQ3Jlc2NlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Rhci1hbmQtY3Jlc2NlbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2OTlcIiwgXCJNMzQwLjQ3IDQ2Ni4zNmMtMS40NSAwLTYuODkuNDYtOS4xOC40Ni0xMTYuMjUgMC0yMTAuODItOTQuNTctMjEwLjgyLTIxMC44MlMyMTUuMDQgNDUuMTggMzMxLjI5IDQ1LjE4YzIuMzIgMCA3LjcuNDYgOS4xOC40NiA3LjEzIDAgMTMuMzMtNS4wMyAxNC43NS0xMi4wNyAxLjQ2LTcuMjUtMi41NS0xNC40OS05LjQ3LTE3LjA5QzMxNi41OCA1LjU0IDI4Ni4zOSAwIDI1NiAwIDExNC44NCAwIDAgMTE0Ljg0IDAgMjU2czExNC44NCAyNTYgMjU2IDI1NmMzMC4yMyAwIDYwLjI4LTUuNDkgODkuMzItMTYuMzIgNS45Ni0yLjAyIDEwLjI4LTcuNjQgMTAuMjgtMTQuMjYgMC04LjA5LTYuMzktMTUuMDYtMTUuMTMtMTUuMDZ6bTE2Mi45OS0yNTIuNWwtNzYuMzgtMTEuMS0zNC4xNi02OS4yMWMtMS44My0zLjctNS4zOC01LjU1LTguOTMtNS41NXMtNy4xIDEuODUtOC45MyA1LjU1bC0zNC4xNiA2OS4yMS03Ni4zOCAxMS4xYy04LjE3IDEuMTgtMTEuNDMgMTEuMjItNS41MiAxNi45OWw1NS4yNyA1My44Ny0xMy4wNSA3Ni4wN2MtMS4xMSA2LjQ0IDQuMDEgMTEuNjYgOS44MSAxMS42NiAxLjUzIDAgMy4xMS0uMzYgNC42NC0xLjE3TDM4NCAzMzUuMzdsNjguMzEgMzUuOTFjMS41My44IDMuMTEgMS4xNyA0LjY0IDEuMTcgNS44IDAgMTAuOTItNS4yMyA5LjgxLTExLjY2bC0xMy4wNS03Ni4wNyA1NS4yNy01My44N2M1LjkxLTUuNzcgMi42NS0xNS44MS01LjUyLTE2Ljk5elwiXVxufTtcbnZhciBmYVN0YXJIYWxmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXItaGFsZicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA4OVwiLCBcIk0yODggMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZWMHpcIl1cbn07XG52YXIgZmFTdGFySGFsZkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGFyLWhhbGYtYWx0JyxcbiAgaWNvbjogWzUzNiwgNTEyLCBbXSwgXCJmNWMwXCIsIFwiTTUwOC41NSAxNzEuNTFMMzYyLjE4IDE1MC4yIDI5Ni43NyAxNy44MUMyOTAuODkgNS45OCAyNzkuNDIgMCAyNjcuOTUgMGMtMTEuNCAwLTIyLjc5IDUuOS0yOC42OSAxNy44MWwtNjUuNDMgMTMyLjM4LTE0Ni4zOCAyMS4yOWMtMjYuMjUgMy44LTM2Ljc3IDM2LjA5LTE3Ljc0IDU0LjU5bDEwNS44OSAxMDMtMjUuMDYgMTQ1LjQ4Qzg2Ljk4IDQ5NS4zMyAxMDMuNTcgNTEyIDEyMi4xNSA1MTJjNC45MyAwIDEwLTEuMTcgMTQuODctMy43NWwxMzAuOTUtNjguNjggMTMwLjk0IDY4LjdjNC44NiAyLjU1IDkuOTIgMy43MSAxNC44MyAzLjcxIDE4LjYgMCAzNS4yMi0xNi42MSAzMS42Ni0zNy40bC0yNS4wMy0xNDUuNDkgMTA1LjkxLTEwMi45OGMxOS4wNC0xOC41IDguNTItNTAuOC0xNy43My01NC42em0tMTIxLjc0IDEyMy4ybC0xOC4xMiAxNy42MiA0LjI4IDI0Ljg4IDE5LjUyIDExMy40NS0xMDIuMTMtNTMuNTktMjIuMzgtMTEuNzQuMDMtMzE3LjE5IDUxLjAzIDEwMy4yOSAxMS4xOCAyMi42MyAyNS4wMSAzLjY0IDExNC4yMyAxNi42My04Mi42NSA4MC4zOHpcIl1cbn07XG52YXIgZmFTdGFyT2ZEYXZpZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGFyLW9mLWRhdmlkJyxcbiAgaWNvbjogWzQ2NCwgNTEyLCBbXSwgXCJmNjlhXCIsIFwiTTQwNS42OCAyNTZsNTMuMjEtODkuMzlDNDczLjMgMTQyLjQgNDU1LjQ4IDExMiA0MjYuODggMTEySDMxOS45NmwtNTUuOTUtOTMuOThDMjU2Ljg2IDYuMDEgMjQ0LjQzIDAgMjMyIDBzLTI0Ljg2IDYuMDEtMzIuMDEgMTguMDJMMTQ0LjA0IDExMkgzNy4xMWMtMjguNiAwLTQ2LjQyIDMwLjQtMzIuMDEgNTQuNjFMNTguMzIgMjU2IDUuMSAzNDUuMzlDLTkuMzEgMzY5LjYgOC41MSA0MDAgMzcuMTEgNDAwaDEwNi45M2w1NS45NSA5My45OEMyMDcuMTQgNTA1Ljk5IDIxOS41NyA1MTIgMjMyIDUxMnMyNC44Ni02LjAxIDMyLjAxLTE4LjAyTDMxOS45NiA0MDBoMTA2LjkzYzI4LjYgMCA0Ni40Mi0zMC40IDMyLjAxLTU0LjYxTDQwNS42OCAyNTZ6bS0xMi43OC04OGwtMTkuOCAzMy4yNkwzNTMuMyAxNjhoMzkuNnptLTUyLjM5IDg4bC01Mi4zOSA4OEgxNzUuODhsLTUyLjM5LTg4IDUyLjM4LTg4aDExMi4yNWw1Mi4zOSA4OHpNMjMyIDczLjcyTDI1NC43OSAxMTJoLTQ1LjU3TDIzMiA3My43MnpNNzEuMSAxNjhoMzkuNmwtMTkuOCAzMy4yNkw3MS4xIDE2OHptMCAxNzZsMTkuOC0zMy4yNkwxMTAuNyAzNDRINzEuMXpNMjMyIDQzOC4yOEwyMDkuMjEgNDAwaDQ1LjU3TDIzMiA0MzguMjh6TTM1My4yOSAzNDRsMTkuOC0zMy4yNkwzOTIuOSAzNDRoLTM5LjYxelwiXVxufTtcbnZhciBmYVN0YXJPZkxpZmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Rhci1vZi1saWZlJyxcbiAgaWNvbjogWzQ4MCwgNTEyLCBbXSwgXCJmNjIxXCIsIFwiTTQ3MS45OSAzMzQuNDNMMzM2LjA2IDI1NmwxMzUuOTMtNzguNDNjNy42Ni00LjQyIDEwLjI4LTE0LjIgNS44Ni0yMS44NmwtMzIuMDItNTUuNDNjLTQuNDItNy42NS0xNC4yMS0xMC4yOC0yMS44Ny01Ljg2bC0xMzUuOTMgNzguNDNWMTZjMC04Ljg0LTcuMTctMTYtMTYuMDEtMTZoLTY0LjA0Yy04Ljg0IDAtMTYuMDEgNy4xNi0xNi4wMSAxNnYxNTYuODZMNTYuMDQgOTQuNDNjLTcuNjYtNC40Mi0xNy40NS0xLjc5LTIxLjg3IDUuODZMMi4xNSAxNTUuNzFjLTQuNDIgNy42NS0xLjggMTcuNDQgNS44NiAyMS44NkwxNDMuOTQgMjU2IDguMDEgMzM0LjQzYy03LjY2IDQuNDItMTAuMjggMTQuMjEtNS44NiAyMS44NmwzMi4wMiA1NS40M2M0LjQyIDcuNjUgMTQuMjEgMTAuMjcgMjEuODcgNS44NmwxMzUuOTMtNzguNDNWNDk2YzAgOC44NCA3LjE3IDE2IDE2LjAxIDE2aDY0LjA0YzguODQgMCAxNi4wMS03LjE2IDE2LjAxLTE2VjMzOS4xNGwxMzUuOTMgNzguNDNjNy42NiA0LjQyIDE3LjQ1IDEuOCAyMS44Ny01Ljg2bDMyLjAyLTU1LjQzYzQuNDItNy42NSAxLjgtMTcuNDMtNS44Ni0yMS44NXpcIl1cbn07XG52YXIgZmFTdGVwQmFja3dhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RlcC1iYWNrd2FyZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA0OFwiLCBcIk02NCA0NjhWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQ4YzYuNiAwIDEyIDUuNCAxMiAxMnYxNzYuNGwxOTUuNS0xODFDMzUyLjEgMjIuMyAzODQgMzYuNiAzODQgNjR2Mzg0YzAgMjcuNC0zMS45IDQxLjctNTIuNSAyNC42TDEzNiAyOTIuN1Y0NjhjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ6XCJdXG59O1xudmFyIGZhU3RlcEZvcndhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RlcC1mb3J3YXJkJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDUxXCIsIFwiTTM4NCA0NHY0MjRjMCA2LjYtNS40IDEyLTEyIDEyaC00OGMtNi42IDAtMTItNS40LTEyLTEyVjI5MS42bC0xOTUuNSAxODFDOTUuOSA0ODkuNyA2NCA0NzUuNCA2NCA0NDhWNjRjMC0yNy40IDMxLjktNDEuNyA1Mi41LTI0LjZMMzEyIDIxOS4zVjQ0YzAtNi42IDUuNC0xMiAxMi0xMmg0OGM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJdXG59O1xudmFyIGZhU3RldGhvc2NvcGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RldGhvc2NvcGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwZjFcIiwgXCJNNDQ3LjEgMTEyYy0zNC4yLjUtNjIuMyAyOC40LTYzIDYyLjYtLjUgMjQuMyAxMi41IDQ1LjYgMzIgNTYuOFYzNDRjMCA1Ny4zLTUwLjIgMTA0LTExMiAxMDQtNjAgMC0xMDkuMi00NC4xLTExMS45LTk5LjJDMjY1IDMzMy44IDMyMCAyNjkuMiAzMjAgMTkyVjM2LjZjMC0xMS40LTguMS0yMS4zLTE5LjMtMjMuNUwyMzcuOC41Yy0xMy0yLjYtMjUuNiA1LjgtMjguMiAxOC44TDIwNi40IDM1Yy0yLjYgMTMgNS44IDI1LjYgMTguOCAyOC4ybDMwLjcgNi4xdjEyMS40YzAgNTIuOS00Mi4yIDk2LjctOTUuMSA5Ny4yLTUzLjQuNS05Ni45LTQyLjctOTYuOS05NlY2OS40bDMwLjctNi4xYzEzLTIuNiAyMS40LTE1LjIgMTguOC0yOC4ybC0zLjEtMTUuN0MxMDcuNyA2LjQgOTUuMS0yIDgyLjEuNkwxOS4zIDEzQzguMSAxNS4zIDAgMjUuMSAwIDM2LjZWMTkyYzAgNzcuMyA1NS4xIDE0MiAxMjguMSAxNTYuOEMxMzAuNyA0MzkuMiAyMDguNiA1MTIgMzA0IDUxMmM5NyAwIDE3Ni03NS40IDE3Ni0xNjhWMjMxLjRjMTkuMS0xMS4xIDMyLTMxLjcgMzItNTUuNCAwLTM1LjctMjkuMi02NC41LTY0LjktNjR6bS45IDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6XCJdXG59O1xudmFyIGZhU3RpY2t5Tm90ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGlja3ktbm90ZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI0OVwiLCBcIk0zMTIgMzIwaDEzNlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyNEMxMC43IDMyIDAgNDIuNyAwIDU2djQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgyNjRWMzQ0YzAtMTMuMiAxMC44LTI0IDI0LTI0em0xMjkgNTVsLTk4IDk4Yy00LjUgNC41LTEwLjYgNy0xNyA3aC02VjM1MmgxMjh2Ni4xYzAgNi4zLTIuNSAxMi40LTcgMTYuOXpcIl1cbn07XG52YXIgZmFTdG9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3AnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNGRcIiwgXCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFTdG9wQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3AtY2lyY2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjhkXCIsIFwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTk2IDMyOGMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgxNjBjOC44IDAgMTYgNy4yIDE2IDE2djE2MHpcIl1cbn07XG52YXIgZmFTdG9wd2F0Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RvcHdhdGNoJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMmYyXCIsIFwiTTQzMiAzMDRjMCAxMTQuOS05My4xIDIwOC0yMDggMjA4UzE2IDQxOC45IDE2IDMwNGMwLTEwNCA3Ni4zLTE5MC4yIDE3Ni0yMDUuNVY2NGgtMjhjLTYuNiAwLTEyLTUuNC0xMi0xMlYxMmMwLTYuNiA1LjQtMTIgMTItMTJoMTIwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTI4djM0LjVjMzcuNSA1LjggNzEuNyAyMS42IDk5LjcgNDQuNmwyNy41LTI3LjVjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDI4LjMgMjguM2M0LjcgNC43IDQuNyAxMi4zIDAgMTdsLTI5LjQgMjkuNC0uNi42QzQxOS43IDIyMy4zIDQzMiAyNjIuMiA0MzIgMzA0em0tMTc2IDM2VjE4OC41YzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMlYzNDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnpcIl1cbn07XG52YXIgZmFTdG9wd2F0Y2gyMCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdG9wd2F0Y2gtMjAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwNmZcIiwgXCJNMzk4LjUsMTkwLjkxbC41OS0uNjEsMjYuNTktMjYuNThhMTYsMTYsMCwwLDAsMC0yMi42M0w0MDMsMTE4LjQxYTE2LDE2LDAsMCwwLTIyLjYzLDBsLTI0LjY4LDI0LjY4QTIwNi42OCwyMDYuNjgsMCwwLDAsMjU2LDk4LjVWNjRoMzJhMTYsMTYsMCwwLDAsMTYtMTZWMTZBMTYsMTYsMCwwLDAsMjg4LDBIMTYwYTE2LjA1LDE2LjA1LDAsMCwwLTE2LDE2VjQ4YTE2LjA1LDE2LjA1LDAsMCwwLDE2LDE2aDMyVjk4LjVBMjA3LjkyLDIwNy45MiwwLDAsMCwxNi4wOSwyOTcuNTdDMTIuNjQsNDExLjUsMTA2Ljc2LDUxMC4yMiwyMjAuNzIsNTEyLDMzNy4xMyw1MTMuNzcsNDMyLDQyMCw0MzIsMzA0QTIwNiwyMDYsMCwwLDAsMzk4LjUsMTkwLjkxWk0yMDQuMzcsMzc3LjU1YTguMiw4LjIsMCwwLDEsOC4zMiw4LjA3djIyLjMxYTguMiw4LjIsMCwwLDEtOC4zMiw4LjA3SDEyMS41MmExNi40NiwxNi40NiwwLDAsMS0xNi42MS0xNy42MmMyLjc4LTM1LjIyLDE0LjY3LTU3LjQxLDM4LjQ1LTkxLjM3LDIwLjQyLTI5LjE5LDI3LjEtMzcuMzIsMjcuMS02Mi4zNCwwLTE2LjkyLTEuNzktMjQuMjctMTIuMjEtMjQuMjctOS4zOSwwLTEyLjY5LDcuNC0xMi42OSwyMi42OHY1LjIzYTguMiw4LjIsMCwwLDEtOC4zMyw4LjA3aC0yNC45YTguMiw4LjIsMCwwLDEtOC4zMy04LjA3di00LjA3YzAtMjcuMyw4LjQ4LTYwLjI0LDU2LjQzLTYwLjI0LDQzLDAsNTUuNTcsMjUuODUsNTUuNTcsNjEsMCwzNS41OC0xMi40NCw1MS4yMS0zNC4zNSw4MS4zMS0xMS41NiwxNS0yNC42MSwzNS41Ny0yNi40MSw1MS4yWk0zNDQsMzUyLjMyYzAsMzUuMTYtMTIuMyw2My42OC01Ny4yMyw2My42OEMyNDMuMTksNDE2LDIzMiwzODYuNDgsMjMyLDM1Mi41NVYyNDcuMjJjMC00MC43MywxOS41OC02My4yMiw1Ni4yLTYzLjIyQzMyNSwxODQsMzQ0LDIwNi42NCwzNDQsMjQ1LjNaTTI4Ny44NywyMjEuNzNjLTkuNDEsMC0xMy4yMyw3LjUtMTMuMjMsMjBWMzU3LjY4YzAsMTMuMTEsMy41OSwyMC41OSwxMy4yMywyMC41OXMxMy04LDEzLTIxLjI3VjI0MS4wNkMzMDAuODksMjI5Ljc5LDI5Ny44OCwyMjEuNzMsMjg3Ljg3LDIyMS43M1pcIl1cbn07XG52YXIgZmFTdG9yZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdG9yZScsXG4gIGljb246IFs2MTYsIDUxMiwgW10sIFwiZjU0ZVwiLCBcIk02MDIgMTE4LjZMNTM3LjEgMTVDNTMxLjMgNS43IDUyMSAwIDUxMCAwSDEwNkM5NSAwIDg0LjcgNS43IDc4LjkgMTVMMTQgMTE4LjZjLTMzLjUgNTMuNS0zLjggMTI3LjkgNTguOCAxMzYuNCA0LjUuNiA5LjEuOSAxMy43LjkgMjkuNiAwIDU1LjgtMTMgNzMuOC0zMy4xIDE4IDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSAyOS42IDAgNTUuOC0xMyA3My44LTMzLjEgMTggMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDI5LjYgMCA1NS44LTEzIDczLjgtMzMuMSAxOC4xIDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSA0LjcgMCA5LjItLjMgMTMuNy0uOSA2Mi44LTguNCA5Mi42LTgyLjggNTktMTM2LjR6TTUyOS41IDI4OGMtMTAgMC0xOS45LTEuNS0yOS41LTMuOFYzODRIMTE2di05OS44Yy05LjYgMi4yLTE5LjUgMy44LTI5LjUgMy44LTYgMC0xMi4xLS40LTE4LTEuMi01LjYtLjgtMTEuMS0yLjEtMTYuNC0zLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyODMuMmMtNS40IDEuNi0xMC44IDIuOS0xNi40IDMuNi02LjEuOC0xMi4xIDEuMi0xOC4yIDEuMnpcIl1cbn07XG52YXIgZmFTdG9yZUFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdG9yZS1hbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1NGZcIiwgXCJNMzIwIDM4NEgxMjhWMjI0SDY0djI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0aC02NHYxNjB6bTMxNC42LTI0MS44bC04NS4zLTEyOGMtNi04LjktMTYtMTQuMi0yNi43LTE0LjJIMTE3LjRjLTEwLjcgMC0yMC43IDUuMy0yNi42IDE0LjJsLTg1LjMgMTI4Yy0xNC4yIDIxLjMgMSA0OS44IDI2LjYgNDkuOEg2MDhjMjUuNSAwIDQwLjctMjguNSAyNi42LTQ5Ljh6TTUxMiA0OTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMjRoLTY0djI3MnpcIl1cbn07XG52YXIgZmFTdG9yZUFsdFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3JlLWFsdC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA3MFwiLCBcIk0xNy44OSwxMjMuNjIsNS41MSwxNDIuMmMtMTQuMiwyMS4zLDEsNDkuOCwyNi41OSw0OS44aDc0LjI2Wk01NzYsNDEzLjQyVjIyNEg1MTJWMzY0TDM4NCwyNjVWMjI0SDMzMC45MmwtNDEuNC0zMkg2MDhjMjUuNSwwLDQwLjctMjguNSwyNi41OS00OS44bC04NS4yOS0xMjhBMzIuMTgsMzIuMTgsMCwwLDAsNTIyLjYsMEgxMTcuNDJBMzEuODcsMzEuODcsMCwwLDAsOTAuODEsMTQuMmwtMTAuNjYsMTZMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZhMTYsMTYsMCwwLDAtMi44MS0yMi40NVpNMzIwLDM4NEgxMjhWMjI0SDY0VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgzNTJhMzIsMzIsMCwwLDAsMzItMzJWNDA2LjU5bC02NC00OS40N1pcIl1cbn07XG52YXIgZmFTdG9yZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3JlLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDcxXCIsIFwiTTEyMS41MSwzODRWMjg0LjJhMTE5LjQzLDExOS40MywwLDAsMS0yOCwzLjgsMTIzLjQ2LDEyMy40NiwwLDAsMS0xNy4xLTEuMiwxMTQuODgsMTE0Ljg4LDAsMCwxLTE1LjU4LTMuNlY0ODBjMCwxNy43LDEzLjU5LDMyLDMwLjQsMzJINTA1Ljc1TDM0OC40MiwzODRabS0yOC0xMjguMDljMjUuMSwwLDQ3LjI5LTEwLjcyLDY0LTI3LjI0TDI0LDEyMC4wNWMtMzAuNTIsNTMuMzktMi40NSwxMjYuNTMsNTYuNDksMTM1QTk1LjY4LDk1LjY4LDAsMCwwLDkzLjQ4LDI1NS45MVpNNjAyLjEzLDQ1OC4wOSw1NDcuMiw0MTMuNDFWMjgzLjJhOTMuNSw5My41LDAsMCwxLTE1LjU3LDMuNiwxMjcuMzEsMTI3LjMxLDAsMCwxLTE3LjI5LDEuMiwxMTQuODksMTE0Ljg5LDAsMCwxLTI4LTMuOHY3OS42OEwzNDguNTIsMjUxLjc3YTg4LjA2LDg4LjA2LDAsMCwwLDI1LjQxLDQuMTRjMjguMTEsMCw1My0xMyw3MC4xMS0zMy4xMSwxNy4xOSwyMC4xMSw0Mi4wOCwzMy4xMSw3MC4xMSwzMy4xMWE5NC4zMSw5NC4zMSwwLDAsMCwxMy0uOTFjNTkuNjYtOC40MSw4OC04Mi44LDU2LjA2LTEzNi40TDUyMS41NSwxNUEzMC4xLDMwLjEsMCwwLDAsNDk1LjgxLDBIMTEyQTMwLjExLDMwLjExLDAsMCwwLDg2LjI3LDE1TDc2Ljg4LDMwLjc4LDQzLjE5LDMuMzhBMTQuNjgsMTQuNjgsMCwwLDAsMjEuODYsNi4xOUwzLjIsMzEuNDVBMTYuNTgsMTYuNTgsMCwwLDAsNS44Nyw1My45MUw1NjQuODEsNTA4LjYzYTE0LjY5LDE0LjY5LDAsMCwwLDIxLjMzLTIuODJsMTguNjYtMjUuMjZBMTYuNTgsMTYuNTgsMCwwLDAsNjAyLjEzLDQ1OC4wOVpcIl1cbn07XG52YXIgZmFTdHJlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RyZWFtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTUwXCIsIFwiTTE2IDEyOGg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bTQ4MCA4MEg4MGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptLTY0IDE3NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFTdHJlZXRWaWV3ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0cmVldC12aWV3JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjFkXCIsIFwiTTM2Ny45IDMyOS43NmMtNC42MiA1LjMtOS43OCAxMC4xLTE1LjkgMTMuNjV2MjIuOTRjNjYuNTIgOS4zNCAxMTIgMjguMDUgMTEyIDQ5LjY1IDAgMzAuOTMtOTMuMTIgNTYtMjA4IDU2UzQ4IDQ0Ni45MyA0OCA0MTZjMC0yMS42IDQ1LjQ4LTQwLjMgMTEyLTQ5LjY1di0yMi45NGMtNi4xMi0zLjU1LTExLjI4LTguMzUtMTUuOS0xMy42NUM1OC44NyAzNDUuMzQgMCAzNzguMDUgMCA0MTZjMCA1My4wMiAxMTQuNjIgOTYgMjU2IDk2czI1Ni00Mi45OCAyNTYtOTZjMC0zNy45NS01OC44Ny03MC42Ni0xNDQuMS04Ni4yNHpNMjU2IDEyOGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0UzI5MS4zNSAwIDI1NiAwcy02NCAyOC42NS02NCA2NCAyOC42NSA2NCA2NCA2NHptLTY0IDE5MnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTExLjhjLTExLjA3IDUuMDMtMjMuMjYgOC0zNi4yIDhzLTI1LjEzLTIuOTctMzYuMi04SDIwOGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYVN0cmlrZXRocm91Z2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RyaWtldGhyb3VnaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBjY1wiLCBcIk00OTYgMjI0SDI5My45bC04Ny4xNy0yNi44M0E0My41NSA0My41NSAwIDAgMSAyMTkuNTUgMTEyaDY2Ljc5QTQ5Ljg5IDQ5Ljg5IDAgMCAxIDMzMSAxMzkuNThhMTYgMTYgMCAwIDAgMjEuNDYgNy4xNWw0Mi45NC0yMS40N2ExNiAxNiAwIDAgMCA3LjE2LTIxLjQ2bC0uNTMtMUExMjggMTI4IDAgMCAwIDI4Ny41MSAzMmgtNjhhMTIzLjY4IDEyMy42OCAwIDAgMC0xMjMgMTM1LjY0YzIgMjAuODkgMTAuMSAzOS44MyAyMS43OCA1Ni4zNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0ODBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMTgwLjI0IDk2QTQzIDQzIDAgMCAxIDMzNiAzNTYuNDUgNDMuNTkgNDMuNTkgMCAwIDEgMjkyLjQ1IDQwMGgtNjYuNzlBNDkuODkgNDkuODkgMCAwIDEgMTgxIDM3Mi40MmExNiAxNiAwIDAgMC0yMS40Ni03LjE1bC00Mi45NCAyMS40N2ExNiAxNiAwIDAgMC03LjE2IDIxLjQ2bC41MyAxQTEyOCAxMjggMCAwIDAgMjI0LjQ5IDQ4MGg2OGExMjMuNjggMTIzLjY4IDAgMCAwIDEyMy0xMzUuNjQgMTE0LjI1IDExNC4yNSAwIDAgMC01LjM0LTI0LjM2elwiXVxufTtcbnZhciBmYVN0cm9vcHdhZmVsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0cm9vcHdhZmVsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTUxXCIsIFwiTTE4OC4xMiAyMTAuNzRMMTQyLjg2IDI1Nmw0NS4yNSA0NS4yNUwyMzMuMzcgMjU2bC00NS4yNS00NS4yNnptMTEzLjEzLTIyLjYyTDI1NiAxNDIuODZsLTQ1LjI1IDQ1LjI1TDI1NiAyMzMuMzdsNDUuMjUtNDUuMjV6bS05MC41IDEzNS43NkwyNTYgMzY5LjE0bDQ1LjI2LTQ1LjI2TDI1NiAyNzguNjNsLTQ1LjI1IDQ1LjI1ek0yNTYgMEMxMTQuNjIgMCAwIDExNC42MiAwIDI1NnMxMTQuNjIgMjU2IDI1NiAyNTYgMjU2LTExNC42MiAyNTYtMjU2UzM5Ny4zOCAwIDI1NiAwem0xODYuNjggMjk1LjZsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTI4LjI5LTI4LjI5LTQ1LjI1IDQ1LjI1IDMzLjk0IDMzLjk0IDE2Ljk3LTE2Ljk3YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTE2Ljk3IDE2Ljk3IDE2Ljk3IDE2Ljk3YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTYuOTctMTYuOTctMTYuOTcgMTYuOTdjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxNi45Ny0xNi45Ny0zMy45NC0zMy45NC00NS4yNiA0NS4yNiAyOC4yOSAyOC4yOWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBMMjU2IDQxNC4zOWwtMjguMjkgMjguMjljLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwyOC4yOS0yOC4yOS00NS4yNS00NS4yNi0zMy45NCAzMy45NCAxNi45NyAxNi45N2MzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTE2Ljk3LTE2Ljk3LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMzMuOTQtMzMuOTQtNDUuMjUtNDUuMjUtMjguMjkgMjguMjljLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMEw2OS4zMiAyOTUuNmMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxTDk3LjYxIDI1NmwtMjguMjktMjguMjljLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMjguMjkgMjguMjkgNDUuMjUtNDUuMjYtMzMuOTQtMzMuOTQtMTYuOTcgMTYuOTdjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxNi45Ny0xNi45Ny0xNi45Ny0xNi45N2MtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxNi45NyAxNi45NyAxNi45Ny0xNi45N2MzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xNi45NyAxNi45NyAzMy45NCAzMy45NCA0NS4yNi00NS4yNS0yOC4yOS0yOC4yOWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMEwyNTYgOTcuNjFsMjguMjktMjguMjljMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMjguMjkgMjguMjkgNDUuMjYgNDUuMjUgMzMuOTQtMzMuOTQtMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMTYuOTctMTYuOTdjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTYuOTcgMTYuOTcgMTYuOTcgMTYuOTdjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xNi45Ny0xNi45Ny0zMy45NCAzMy45NCA0NS4yNSA0NS4yNiAyOC4yOS0yOC4yOWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxTDQxNC4zOSAyNTZsMjguMjkgMjguMjhhOC4wMTUgOC4wMTUgMCAwIDEgMCAxMS4zMnpNMjc4LjYzIDI1Nmw0NS4yNiA0NS4yNUwzNjkuMTQgMjU2bC00NS4yNS00NS4yNkwyNzguNjMgMjU2elwiXVxufTtcbnZhciBmYVN1YnNjcmlwdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWJzY3JpcHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMmNcIiwgXCJNNDk2IDQ0OGgtMTZWMzA0YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCA0MDAgMzUyaDE2djk2aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTMzNiA2NGgtNjdhMTYgMTYgMCAwIDAtMTMuMTQgNi44N2wtNzkuOSAxMTUtNzkuOS0xMTVBMTYgMTYgMCAwIDAgODMgNjRIMTZBMTYgMTYgMCAwIDAgMCA4MHY0OGExNiAxNiAwIDAgMCAxNiAxNmgzMy40OGw3Ny44MSAxMTItNzcuODEgMTEySDE2YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDY3YTE2IDE2IDAgMCAwIDEzLjE0LTYuODdsNzkuOS0xMTUgNzkuOSAxMTVBMTYgMTYgMCAwIDAgMjY5IDQ0OGg2N2ExNiAxNiAwIDAgMCAxNi0xNnYtNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTMzLjQ4bC03Ny44MS0xMTIgNzcuODEtMTEySDMzNmExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFTdWJ3YXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Vid2F5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjM5XCIsIFwiTTQ0OCA5NnYyNTZjMCA1MS44MTUtNjEuNjI0IDk2LTEzMC4wMjIgOTZsNjIuOTggNDkuNzIxQzM4Ni45MDUgNTAyLjQxNyAzODMuNTYyIDUxMiAzNzYgNTEySDcyYy03LjU3OCAwLTEwLjg5Mi05LjU5NC00Ljk1Ny0xNC4yNzlMMTMwLjAyMiA0NDhDNjEuODIgNDQ4IDAgNDAzLjk1NCAwIDM1MlY5NkMwIDQyLjk4MSA2NCAwIDEyOCAwaDE5MmM2NSAwIDEyOCA0Mi45ODEgMTI4IDk2ek0yMDAgMjMyVjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINzJjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR6bTIwMCAwVjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0tNDggNTZjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6bS0yNTYgMGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHpcIl1cbn07XG52YXIgZmFTdWl0Y2FzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWl0Y2FzZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBmMlwiLCBcIk0xMjggNDgwaDI1NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djQwMHptNjQtMzg0aDEyOHYzMkgxOTJWOTZ6bTMyMCA4MHYyNTZjMCAyNi41LTIxLjUgNDgtNDggNDhoLTQ4VjEyOGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHpNOTYgNDgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDh2MzUyelwiXVxufTtcbnZhciBmYVN1aXRjYXNlUm9sbGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWl0Y2FzZS1yb2xsaW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNWMxXCIsIFwiTTMzNiAxNjBINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2aDEyOHYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyMDhjMC0yNi41MS0yMS40OS00OC00OC00OHptLTE2IDIxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDI0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnptMC05NmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDI0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnpNMTQ0IDQ4aDk2djgwaDQ4VjQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djgwaDQ4VjQ4elwiXVxufTtcbnZhciBmYVN1biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxODVcIiwgXCJNMjU2IDE2MGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5NiA5Ni00My4xIDk2LTk2LTQzLjEtOTYtOTYtOTZ6bTI0Ni40IDgwLjVsLTk0LjctNDcuMyAzMy41LTEwMC40YzQuNS0xMy42LTguNC0yNi41LTIxLjktMjEuOWwtMTAwLjQgMzMuNS00Ny40LTk0LjhjLTYuNC0xMi44LTI0LjYtMTIuOC0zMSAwbC00Ny4zIDk0LjdMOTIuNyA3MC44Yy0xMy42LTQuNS0yNi41IDguNC0yMS45IDIxLjlsMzMuNSAxMDAuNC05NC43IDQ3LjRjLTEyLjggNi40LTEyLjggMjQuNiAwIDMxbDk0LjcgNDcuMy0zMy41IDEwMC41Yy00LjUgMTMuNiA4LjQgMjYuNSAyMS45IDIxLjlsMTAwLjQtMzMuNSA0Ny4zIDk0LjdjNi40IDEyLjggMjQuNiAxMi44IDMxIDBsNDcuMy05NC43IDEwMC40IDMzLjVjMTMuNiA0LjUgMjYuNS04LjQgMjEuOS0yMS45bC0zMy41LTEwMC40IDk0LjctNDcuM2MxMy02LjUgMTMtMjQuNy4yLTMxLjF6bS0xNTUuOSAxMDZjLTQ5LjkgNDkuOS0xMzEuMSA0OS45LTE4MSAwLTQ5LjktNDkuOS00OS45LTEzMS4xIDAtMTgxIDQ5LjktNDkuOSAxMzEuMS00OS45IDE4MSAwIDQ5LjkgNDkuOSA0OS45IDEzMS4xIDAgMTgxelwiXVxufTtcbnZhciBmYVN1cGVyc2NyaXB0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N1cGVyc2NyaXB0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTJiXCIsIFwiTTQ5NiAxNjBoLTE2VjE2YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCA0MDAgNjRoMTZ2OTZoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzM2IDY0aC02N2ExNiAxNiAwIDAgMC0xMy4xNCA2Ljg3bC03OS45IDExNS03OS45LTExNUExNiAxNiAwIDAgMCA4MyA2NEgxNkExNiAxNiAwIDAgMCAwIDgwdjQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMzLjQ4bDc3LjgxIDExMi03Ny44MSAxMTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2NDhhMTYgMTYgMCAwIDAgMTYgMTZoNjdhMTYgMTYgMCAwIDAgMTMuMTQtNi44N2w3OS45LTExNSA3OS45IDExNUExNiAxNiAwIDAgMCAyNjkgNDQ4aDY3YTE2IDE2IDAgMCAwIDE2LTE2di00OGExNiAxNiAwIDAgMC0xNi0xNmgtMzMuNDhsLTc3LjgxLTExMiA3Ny44MS0xMTJIMzM2YTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYVN1cnByaXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N1cnByaXNlJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWMyXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTExMiAyMDhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em04MC0xNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYVN3YXRjaGJvb2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3dhdGNoYm9vaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVjM1wiLCBcIk00MzQuNjYsMTY3LjcxaDBMMzQ0LjUsNzcuMzZhMzEuODMsMzEuODMsMCwwLDAtNDUtLjA3aDBsLS4wNy4wN0wyMjQsMTUyLjg4VjQyNEw0MzQuNjYsMjEyLjlBMzIsMzIsMCwwLDAsNDM0LjY2LDE2Ny43MVpNNDgwLDMyMEgzNzMuMDlMMTg2LjY4LDUwNi41MWMtMi4wNiwyLjA3LTQuNSwzLjU4LTYuNjgsNS40OUg0ODBhMzIsMzIsMCwwLDAsMzItMzJWMzUyQTMyLDMyLDAsMCwwLDQ4MCwzMjBaTTE5MiwzMkEzMiwzMiwwLDAsMCwxNjAsMEgzMkEzMiwzMiwwLDAsMCwwLDMyVjQxNmE5Niw5NiwwLDAsMCwxOTIsMFpNOTYsNDQwYTI0LDI0LDAsMSwxLDI0LTI0QTI0LDI0LDAsMCwxLDk2LDQ0MFptMzItMTg0SDY0VjE5Mmg2NFptMC0xMjhINjRWNjRoNjRaXCJdXG59O1xudmFyIGZhU3dpbW1lciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzd2ltbWVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWM0XCIsIFwiTTE4OS42MSAzMTAuNThjMy41NCAzLjI2IDE1LjI3IDkuNDIgMzQuMzkgOS40MnMzMC44Ni02LjE2IDM0LjM5LTkuNDJjMTYuMDItMTQuNzcgMzQuNS0yMi41OCA1My40Ni0yMi41OGgxNi4zYzE4Ljk2IDAgMzcuNDUgNy44MSA1My40NiAyMi41OCAzLjU0IDMuMjYgMTUuMjcgOS40MiAzNC4zOSA5LjQyczMwLjg2LTYuMTYgMzQuMzktOS40MmMxNC44Ni0xMy43MSAzMS44OC0yMS4xMiA0OS4zOS0yMi4xNmwtMTEyLjg0LTgwLjYgMTgtMTIuODZjMy42NC0yLjU4IDguMjgtMy41MiAxMi42Mi0yLjYxbDEwMC4zNSAyMS41M2MyNS45MSA1LjUzIDUxLjQ0LTEwLjk3IDU3LTM2Ljg4IDUuNTUtMjUuOTItMTAuOTUtNTEuNDQtMzYuODgtNTdMNDM3LjY4IDk4LjQ3Yy0zMC43My02LjU4LTYzLjAyLjEyLTg4LjU2IDE4LjM4bC04MC4wMiA1Ny4xN2MtMTAuMzggNy4zOS0xOS4zNiAxNi40NC0yNi43MiAyNi45NEwxNzMuNzUgMjk5YzUuNDcgMy4yMyAxMC44MiA2LjkzIDE1Ljg2IDExLjU4ek02MjQgMzUyaC0xNmMtMjYuMDQgMC00NS44LTguNDItNTYuMDktMTcuOS04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzQ2MS44IDM0My41OCA0NDIuMDQgMzUyIDQxNiAzNTJzLTQ1LjgtOC40Mi01Ni4wOS0xNy45Yy04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzI2OS44IDM0My41OCAyNTAuMDQgMzUyIDIyNCAzNTJzLTQ1LjgtOC40Mi01Ni4wOS0xNy45Yy04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzc3LjggMzQzLjU4IDU4LjA0IDM1MiAzMiAzNTJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzM4LjYyIDAgNzIuNzItMTIuMTkgOTYtMzEuODQgMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRzNzIuNzItMTIuMTkgOTYtMzEuODRjMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRzNzIuNzItMTIuMTkgOTYtMzEuODRjMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tNTEyLTk2YzQ0LjE4IDAgODAtMzUuODIgODAtODBzLTM1LjgyLTgwLTgwLTgwLTgwIDM1LjgyLTgwIDgwIDM1LjgyIDgwIDgwIDgwelwiXVxufTtcbnZhciBmYVN3aW1taW5nUG9vbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzd2ltbWluZy1wb29sJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWM1XCIsIFwiTTYyNCA0MTZoLTE2Yy0yNi4wNCAwLTQ1LjgtOC40Mi01Ni4wOS0xNy45LTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNDYxLjggNDA3LjU4IDQ0Mi4wNCA0MTYgNDE2IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDMjY5LjggNDA3LjU4IDI1MC4wNCA0MTYgMjI0IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNzcuOCA0MDcuNTggNTguMDQgNDE2IDMyIDQxNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMzguNjIgMCA3Mi43Mi0xMi4xOSA5Ni0zMS44NCAyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NGgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS00MDAtMzJ2LTk2aDE5MnY5NmMxOS4xMiAwIDMwLjg2LTYuMTYgMzQuMzktOS40MiA5LjE3LTguNDYgMTkuMi0xNC4zNCAyOS42MS0xOC4wN1YxMjhjMC0xNy42NCAxNC4zNi0zMiAzMi0zMnMzMiAxNC4zNiAzMiAzMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC01Mi45NC00My4wNi05Ni05Ni05NnMtOTYgNDMuMDYtOTYgOTZ2OTZIMjI0di05NmMwLTE3LjY0IDE0LjM2LTMyIDMyLTMyczMyIDE0LjM2IDMyIDMydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2cy05NiA0My4wNi05NiA5NnYyMjguNWMxMC40MSAzLjczIDIwLjQ0IDkuNjIgMjkuNjEgMTguMDcgMy41MyAzLjI3IDE1LjI3IDkuNDMgMzQuMzkgOS40M3pcIl1cbn07XG52YXIgZmFTeW5hZ29ndWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3luYWdvZ3VlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjliXCIsIFwiTTcwIDE5Ni41MUw2LjY3IDI2OC4yOUEyNi42NDMgMjYuNjQzIDAgMCAwIDAgMjg1LjkzVjUxMmgxMjhWMjM5LjU4bC0zOC00My4wN2MtNS4zMS02LjAxLTE0LjY5LTYuMDEtMjAgMHptNTYzLjMzIDcxLjc4TDU3MCAxOTYuNTFjLTUuMzEtNi4wMi0xNC42OS02LjAyLTIwIDBsLTM4IDQzLjA3VjUxMmgxMjhWMjg1LjkzYzAtNi41LTIuMzctMTIuNzctNi42Ny0xNy42NHpNMzM5Ljk5IDcuMDFjLTExLjY5LTkuMzUtMjguMjktOS4zNS0zOS45OCAwbC0xMjggMTAyLjRBMzIuMDA1IDMyLjAwNSAwIDAgMCAxNjAgMTM0LjRWNTEyaDk2di05Mi41N2MwLTMxLjg4IDIxLjc4LTYxLjQzIDUzLjI1LTY2LjU1QzM0OS4zNCAzNDYuMzUgMzg0IDM3Ny4xMyAzODQgNDE2djk2aDk2VjEzNC40YzAtOS43Mi00LjQyLTE4LjkyLTEyLjAxLTI0Ljk5bC0xMjgtMTAyLjR6bTUyLjA3IDIxNS41NWMxLjk4IDMuMTUtLjI5IDcuMjQtNCA3LjI0aC0zOC45NEwzMjQgMjY5Ljc5Yy0xLjg1IDIuOTUtNi4xNSAyLjk1LTggMGwtMjUuMTItMzkuOThoLTM4Ljk0Yy0zLjcyIDAtNS45OC00LjA5LTQtNy4yNGwxOS4yLTMwLjU2LTE5LjItMzAuNTZjLTEuOTgtMy4xNS4yOS03LjI0IDQtNy4yNGgzOC45NGwyNS4xMi00MGMxLjg1LTIuOTUgNi4xNS0yLjk1IDggMGwyNS4xMiAzOS45OGgzOC45NWMzLjcxIDAgNS45OCA0LjA5IDQgNy4yNEwzNzIuODcgMTkybDE5LjE5IDMwLjU2elwiXVxufTtcbnZhciBmYVN5bmMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3luYycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyMVwiLCBcIk00NDAuNjUgMTIuNTdsNCA4Mi43N0EyNDcuMTYgMjQ3LjE2IDAgMCAwIDI1NS44MyA4QzEzNC43MyA4IDMzLjkxIDk0LjkyIDEyLjI5IDIwOS44MkExMiAxMiAwIDAgMCAyNC4wOSAyMjRoNDkuMDVhMTIgMTIgMCAwIDAgMTEuNjctOS4yNiAxNzUuOTEgMTc1LjkxIDAgMCAxIDMxNy01Ni45NGwtMTAxLjQ2LTQuODZhMTIgMTIgMCAwIDAtMTIuNTcgMTJ2NDcuNDFhMTIgMTIgMCAwIDAgMTIgMTJINTAwYTEyIDEyIDAgMCAwIDEyLTEyVjEyYTEyIDEyIDAgMCAwLTEyLTEyaC00Ny4zN2ExMiAxMiAwIDAgMC0xMS45OCAxMi41N3pNMjU1LjgzIDQzMmExNzUuNjEgMTc1LjYxIDAgMCAxLTE0Ni03Ny44bDEwMS44IDQuODdhMTIgMTIgMCAwIDAgMTIuNTctMTJ2LTQ3LjRhMTIgMTIgMCAwIDAtMTItMTJIMTJhMTIgMTIgMCAwIDAtMTIgMTJWNTAwYTEyIDEyIDAgMCAwIDEyIDEyaDQ3LjM1YTEyIDEyIDAgMCAwIDEyLTEyLjZsLTQuMTUtODIuNTdBMjQ3LjE3IDI0Ny4xNyAwIDAgMCAyNTUuODMgNTA0YzEyMS4xMSAwIDIyMS45My04Ni45MiAyNDMuNTUtMjAxLjgyYTEyIDEyIDAgMCAwLTExLjgtMTQuMThoLTQ5LjA1YTEyIDEyIDAgMCAwLTExLjY3IDkuMjZBMTc1Ljg2IDE3NS44NiAwIDAgMSAyNTUuODMgNDMyelwiXVxufTtcbnZhciBmYVN5bmNBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3luYy1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyZjFcIiwgXCJNMzcwLjcyIDEzMy4yOEMzMzkuNDU4IDEwNC4wMDggMjk4Ljg4OCA4Ny45NjIgMjU1Ljg0OCA4OGMtNzcuNDU4LjA2OC0xNDQuMzI4IDUzLjE3OC0xNjIuNzkxIDEyNi44NS0xLjM0NCA1LjM2My02LjEyMiA5LjE1LTExLjY1MSA5LjE1SDI0LjEwM2MtNy40OTggMC0xMy4xOTQtNi44MDctMTEuODA3LTE0LjE3NkMzMy45MzMgOTQuOTI0IDEzNC44MTMgOCAyNTYgOGM2Ni40NDggMCAxMjYuNzkxIDI2LjEzNiAxNzEuMzE1IDY4LjY4NUw0NjMuMDMgNDAuOTdDNDc4LjE0OSAyNS44NTEgNTA0IDM2LjU1OSA1MDQgNTcuOTQxVjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMzQ1Ljk0MWMtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNDEuNzUtNDEuNzQ5ek0zMiAyOTZoMTM0LjA1OWMyMS4zODIgMCAzMi4wOSAyNS44NTEgMTYuOTcxIDQwLjk3MWwtNDEuNzUgNDEuNzVjMzEuMjYyIDI5LjI3MyA3MS44MzUgNDUuMzE5IDExNC44NzYgNDUuMjggNzcuNDE4LS4wNyAxNDQuMzE1LTUzLjE0NCAxNjIuNzg3LTEyNi44NDkgMS4zNDQtNS4zNjMgNi4xMjItOS4xNSAxMS42NTEtOS4xNWg1Ny4zMDRjNy40OTggMCAxMy4xOTQgNi44MDcgMTEuODA3IDE0LjE3NkM0NzguMDY3IDQxNy4wNzYgMzc3LjE4NyA1MDQgMjU2IDUwNGMtNjYuNDQ4IDAtMTI2Ljc5MS0yNi4xMzYtMTcxLjMxNS02OC42ODVMNDguOTcgNDcxLjAzQzMzLjg1MSA0ODYuMTQ5IDggNDc1LjQ0MSA4IDQ1NC4wNTlWMzIwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFTeXJpbmdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N5cmluZ2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0OGVcIiwgXCJNMjAxLjUgMTc0LjhsNTUuNyA1NS44YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTUuNy01NS44LTQ1LjMgNDUuMyA1NS44IDU1LjhjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwTDExMSAyNjUuMmwtMjYuNCAyNi40Yy0xNy4zIDE3LjMtMjUuNiA0MS4xLTIzIDY1LjRsNy4xIDYzLjZMMi4zIDQ4N2MtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wxMS4zIDExLjNjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGw2Ni4zLTY2LjMgNjMuNiA3LjFjMjMuOSAyLjYgNDcuOS01LjQgNjUuNC0yM2wxODEuOS0xODEuOS0xMzUuNy0xMzUuNy02NC45IDY1em0zMDguMi05My4zTDQzMC41IDIuM2MtMy4xLTMuMS04LjItMy4xLTExLjMgMGwtMTEuMyAxMS4zYy0zLjEgMy4xLTMuMSA4LjIgMCAxMS4zbDI4LjMgMjguMy00NS4zIDQ1LjMtNTYuNi01Ni42LTE3LTE3Yy0zLjEtMy4xLTguMi0zLjEtMTEuMyAwbC0zMy45IDMzLjljLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMTcgMTdMNDI0LjggMjIzbDE3IDE3YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMzMuOS0zNGMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC03My41LTczLjUgNDUuMy00NS4zIDI4LjMgMjguM2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDExLjMtMTEuM2MzLjEtMy4yIDMuMS04LjIgMC0xMS40elwiXVxufTtcbnZhciBmYVRhYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGNlXCIsIFwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NHYtOTZoMTYwdjk2em0wLTE2MEg2NHYtOTZoMTYwdjk2em0yMjQgMTYwSDI4OHYtOTZoMTYwdjk2em0wLTE2MEgyODh2LTk2aDE2MHY5NnpcIl1cbn07XG52YXIgZmFUYWJsZVRlbm5pcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZS10ZW5uaXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0NWRcIiwgXCJNNDk2LjIgMjk2LjVDNTI3LjcgMjE4LjcgNTEyIDEyNi4yIDQ0OSA2My4xIDM2NS4xLTIxIDIyOS0yMSAxNDUuMSA2My4xbC01NiA1Ni4xIDIxMS41IDIxMS41YzQ2LjEtNjIuMSAxMzEuNS03Ny40IDE5NS42LTM0LjJ6bS0yMTcuOSA3OS43TDU3LjkgMTU1LjljLTI3LjMgNDUuMy0yMS43IDEwNSAxNy4zIDE0NC4xbDM0LjUgMzQuNkw2LjcgNDI0Yy04LjYgNy41LTkuMSAyMC43LTEgMjguOGw1My40IDUzLjVjOCA4LjEgMjEuMiA3LjYgMjguNy0xTDE3Ny4xIDQwMmwzNS43IDM1LjdjMTkuNyAxOS43IDQ0LjYgMzAuNSA3MC4zIDMzLjMtNy4xLTE3LTExLTM1LjYtMTEtNTUuMS0uMS0xMy44IDIuNS0yNyA2LjItMzkuN3pNNDE2IDMyMGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NiA5Ni00MyA5Ni05Ni00My05Ni05Ni05NnpcIl1cbn07XG52YXIgZmFUYWJsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGV0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTBhXCIsIFwiTTQwMCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFUYWJsZXRBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGV0LWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjNmYVwiLCBcIk00MDAgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjI0IDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTE3Ni0xMDhjMCA2LjYtNS40IDEyLTEyIDEySDYwYy02LjYgMC0xMi01LjQtMTItMTJWNjBjMC02LjYgNS40LTEyIDEyLTEyaDMyOGM2LjYgMCAxMiA1LjQgMTIgMTJ2MzEyelwiXVxufTtcbnZhciBmYVRhYmxldHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGV0cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ5MFwiLCBcIk0xNjAgMTkyQzc4LjkgMTkyIDEyLjUgMjUwLjUuMSAzMjYuN2MtLjggNC44IDMuMyA5LjMgOC4zIDkuM2gzMDMuM2M1IDAgOS4xLTQuNSA4LjMtOS4zQzMwNy41IDI1MC41IDI0MS4xIDE5MiAxNjAgMTkyem0xNTEuNiAxNzZIOC40Yy01IDAtOS4xIDQuNS04LjMgOS4zQzEyLjUgNDUzLjUgNzguOSA1MTIgMTYwIDUxMnMxNDcuNS01OC41IDE1OS45LTEzNC43Yy44LTQuOC0zLjMtOS4zLTguMy05LjN6TTU5My40IDQ2LjZjLTU2LjUtNTYuNS0xNDQuMi02MS40LTIwNi45LTE2LTQgMi45LTQuMyA4LjktLjggMTIuM0w1OTcgMjU0LjNjMy41IDMuNSA5LjUgMy4yIDEyLjMtLjggNDUuNS02Mi43IDQwLjYtMTUwLjQtMTUuOS0yMDYuOXpNMzYzIDY1LjdjLTMuNS0zLjUtOS41LTMuMi0xMi4zLjgtNDUuNCA2Mi43LTQwLjUgMTUwLjQgMTUuOSAyMDYuOSA1Ni41IDU2LjUgMTQ0LjIgNjEuNCAyMDYuOSAxNS45IDQtMi45IDQuMy04LjkuOC0xMi4zTDM2MyA2NS43elwiXVxufTtcbnZhciBmYVRhY2hvbWV0ZXJBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFjaG9tZXRlci1hbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYzZmRcIiwgXCJNMjg4IDMyQzEyOC45NCAzMiAwIDE2MC45NCAwIDMyMGMwIDUyLjggMTQuMjUgMTAyLjI2IDM5LjA2IDE0NC44IDUuNjEgOS42MiAxNi4zIDE1LjIgMjcuNDQgMTUuMmg0NDNjMTEuMTQgMCAyMS44My01LjU4IDI3LjQ0LTE1LjJDNTYxLjc1IDQyMi4yNiA1NzYgMzcyLjggNTc2IDMyMGMwLTE1OS4wNi0xMjguOTQtMjg4LTI4OC0yODh6bTAgNjRjMTQuNzEgMCAyNi41OCAxMC4xMyAzMC4zMiAyMy42NS0xLjExIDIuMjYtMi42NCA0LjIzLTMuNDUgNi42N2wtOS4yMiAyNy42N2MtNS4xMyAzLjQ5LTEwLjk3IDYuMDEtMTcuNjQgNi4wMS0xNy42NyAwLTMyLTE0LjMzLTMyLTMyUzI3MC4zMyA5NiAyODggOTZ6TTk2IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptNDgtMTYwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0yNDYuNzctNzIuNDFsLTYxLjMzIDE4NEMzNDMuMTMgMzQ3LjMzIDM1MiAzNjQuNTQgMzUyIDM4NGMwIDExLjcyLTMuMzggMjIuNTUtOC44OCAzMkgyMzIuODhjLTUuNS05LjQ1LTguODgtMjAuMjgtOC44OC0zMiAwLTMzLjk0IDI2LjUtNjEuNDMgNTkuOS02My41OWw2MS4zNC0xODQuMDFjNC4xNy0xMi41NiAxNy43My0xOS40NSAzMC4zNi0xNS4xNyAxMi41NyA0LjE5IDE5LjM1IDE3Ljc5IDE1LjE3IDMwLjM2em0xNC42NiA1Ny4ybDE1LjUyLTQ2LjU1YzMuNDctMS4yOSA3LjEzLTIuMjMgMTEuMDUtMi4yMyAxNy42NyAwIDMyIDE0LjMzIDMyIDMycy0xNC4zMyAzMi0zMiAzMmMtMTEuMzgtLjAxLTIwLjg5LTYuMjgtMjYuNTctMTUuMjJ6TTQ4MCAzODRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhVGFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyYlwiLCBcIk0wIDI1Mi4xMThWNDhDMCAyMS40OSAyMS40OSAwIDQ4IDBoMjA0LjExOGE0OCA0OCAwIDAgMSAzMy45NDEgMTQuMDU5bDIxMS44ODIgMjExLjg4MmMxOC43NDUgMTguNzQ1IDE4Ljc0NSA0OS4xMzcgMCA2Ny44ODJMMjkzLjgyMyA0OTcuOTQxYy0xOC43NDUgMTguNzQ1LTQ5LjEzNyAxOC43NDUtNjcuODgyIDBMMTQuMDU5IDI4Ni4wNTlBNDggNDggMCAwIDEgMCAyNTIuMTE4ek0xMTIgNjRjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhVGFncyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWdzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMDJjXCIsIFwiTTQ5Ny45NDEgMjI1Ljk0MUwyODYuMDU5IDE0LjA1OUE0OCA0OCAwIDAgMCAyNTIuMTE4IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2MjA0LjExOGE0OCA0OCAwIDAgMCAxNC4wNTkgMzMuOTQxbDIxMS44ODIgMjExLjg4MmMxOC43NDQgMTguNzQ1IDQ5LjEzNiAxOC43NDYgNjcuODgyIDBsMjA0LjExOC0yMDQuMTE4YzE4Ljc0NS0xOC43NDUgMTguNzQ1LTQ5LjEzNyAwLTY3Ljg4MnpNMTEyIDE2MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptNTEzLjk0MSAxMzMuODIzTDQyMS44MjMgNDk3Ljk0MWMtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMTguNzQ1LTY3Ljg4MiAwbC0uMzYtLjM2TDUyNy42NCAzMjMuNTIyYzE2Ljk5OS0xNi45OTkgMjYuMzYtMzkuNiAyNi4zNi02My42NHMtOS4zNjItNDYuNjQxLTI2LjM2LTYzLjY0TDMzMS4zOTcgMGg0OC43MjFhNDggNDggMCAwIDEgMzMuOTQxIDE0LjA1OWwyMTEuODgyIDIxMS44ODJjMTguNzQ1IDE4Ljc0NSAxOC43NDUgNDkuMTM3IDAgNjcuODgyelwiXVxufTtcbnZhciBmYVRhcGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFwZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRkYlwiLCBcIk0yMjQgMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHptNDAwIDIyNEgzODAuNmM0MS41LTQwLjcgNjcuNC05Ny4zIDY3LjQtMTYwIDAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRTMCAxMzIuMyAwIDI1NnMxMDAuMyAyMjQgMjI0IDIyNGg0MDBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAtNjRjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTYgOTYgNDMgOTYgOTYtNDMgOTYtOTYgOTZ6XCJdXG59O1xudmFyIGZhVGFza3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFza3MnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYWVcIiwgXCJNMTM5LjYxIDM1LjVhMTIgMTIgMCAwIDAtMTcgMEw1OC45MyA5OC44MWwtMjIuNy0yMi4xMmExMiAxMiAwIDAgMC0xNyAwTDMuNTMgOTIuNDFhMTIgMTIgMCAwIDAgMCAxN2w0Ny41OSA0Ny40YTEyLjc4IDEyLjc4IDAgMCAwIDE3LjYxIDBsMTUuNTktMTUuNjJMMTU2LjUyIDY5YTEyLjA5IDEyLjA5IDAgMCAwIC4wOS0xN3ptMCAxNTkuMTlhMTIgMTIgMCAwIDAtMTcgMGwtNjMuNjggNjMuNzItMjIuNy0yMi4xYTEyIDEyIDAgMCAwLTE3IDBMMy41MyAyNTJhMTIgMTIgMCAwIDAgMCAxN0w1MSAzMTYuNWExMi43NyAxMi43NyAwIDAgMCAxNy42IDBsMTUuNy0xNS42OSA3Mi4yLTcyLjIyYTEyIDEyIDAgMCAwIC4wOS0xNi45ek02NCAzNjhjLTI2LjQ5IDAtNDguNTkgMjEuNS00OC41OSA0OFMzNy41MyA0NjQgNjQgNDY0YTQ4IDQ4IDAgMCAwIDAtOTZ6bTQzMiAxNkgyMDhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhVGF4aSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YXhpJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWJhXCIsIFwiTTQ2MiAyNDEuNjRsLTIyLTg0Ljg0Yy05LjYtMzUuMi00MS42LTYwLjgtNzYuOC02MC44SDM1MlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgtMTEuMmMtMzUuMiAwLTY3LjIgMjUuNi03Ni44IDYwLjhsLTIyIDg0Ljg0QzIxLjQxIDI0OC4wNCAwIDI3My40NyAwIDMwNHY0OGMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEyVjQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDI1NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQwLjg4YzE5LjA1LTExLjA5IDMyLTMxLjUgMzItNTUuMTJ2LTQ4YzAtMzAuNTMtMjEuNDEtNTUuOTYtNTAtNjIuMzZ6TTk2IDM1MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjAuNTUtMTEybDE3LjItNjYuMzZjMi4yMy04LjE2IDkuNTktMTMuNjQgMTUuMDYtMTMuNjRoMjE0LjRjNS40NyAwIDEyLjgzIDUuNDggMTQuODUgMTIuODZMMzk1LjQ1IDI0MGgtMjc4Ljl6TTQxNiAzNTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhVGVldGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVldGgnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2MmVcIiwgXCJNNTQ0IDBIOTZDNDIuOTggMCAwIDQyLjk4IDAgOTZ2MzIwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoNDQ4YzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDM2OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4cy00OC0yMS40OS00OC00OHYtNjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoNjRjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NjR6bTAtMTI4YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHptMTQ0IDEyMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtNTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NTZ6bTAtMTIwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTg4YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2ODh6bTE0NCAxMjBjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTU2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djU2em0wLTEyMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di04OGMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djg4em0xMjggMTI4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di02NGMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY2NHptMC0xMjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTY0Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHpcIl1cbn07XG52YXIgZmFUZWV0aE9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVldGgtb3BlbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjYyZlwiLCBcIk01NDQgMEg5NkM0Mi45OCAwIDAgNDIuOTggMCA5NnY2NGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0aDUxMmMzNS4zNCAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCAxNzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xMjggMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjRjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0wIDE0NEg2NGMtMzUuMzQgMC02NCAyOC42NS02NCA2NHYzMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDQ0OGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2di0zMmMwLTM1LjM1LTI4LjY2LTY0LTY0LTY0em0tNDE2IDgwYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnptMTQ0LThjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTI0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djI0em0xNDQgMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtMjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjR6bTEyOCA4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnpcIl1cbn07XG52YXIgZmFUZW1wZXJhdHVyZUhpZ2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVtcGVyYXR1cmUtaGlnaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc2OVwiLCBcIk00MTYgMGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5NiA5Ni00My4xIDk2LTk2LTQzLjEtOTYtOTYtOTZ6bTAgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptLTE2MC0xNkMyNTYgNTAuMSAyMDUuOSAwIDE0NCAwUzMyIDUwLjEgMzIgMTEydjE2Ni41QzEyLjMgMzAzLjIgMCAzMzQgMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTM0LTEyLjMtNjQuOS0zMi04OS41VjExMnpNMTQ0IDQ0OGMtNDQuMSAwLTgwLTM1LjktODAtODAgMC0yNS41IDEyLjItNDguOSAzMi02My44VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djE5Mi4yYzE5LjggMTQuOCAzMiAzOC4zIDMyIDYzLjggMCA0NC4xLTM1LjkgODAtODAgODB6bTE2LTEyNS4xVjExMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYyMTAuOWMtMTguNiA2LjYtMzIgMjQuMi0zMiA0NS4xIDAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNS0zMi00NS4xelwiXVxufTtcbnZhciBmYVRlbXBlcmF0dXJlTG93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWxvdycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc2YlwiLCBcIk00MTYgMGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5NiA5Ni00My4xIDk2LTk2LTQzLjEtOTYtOTYtOTZ6bTAgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptLTE2MC0xNkMyNTYgNTAuMSAyMDUuOSAwIDE0NCAwUzMyIDUwLjEgMzIgMTEydjE2Ni41QzEyLjMgMzAzLjIgMCAzMzQgMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTM0LTEyLjMtNjQuOS0zMi04OS41VjExMnpNMTQ0IDQ0OGMtNDQuMSAwLTgwLTM1LjktODAtODAgMC0yNS41IDEyLjItNDguOSAzMi02My44VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djE5Mi4yYzE5LjggMTQuOCAzMiAzOC4zIDMyIDYzLjggMCA0NC4xLTM1LjkgODAtODAgODB6bTE2LTEyNS4xVjMwNGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxOC45Yy0xOC42IDYuNi0zMiAyNC4yLTMyIDQ1LjEgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTIwLjktMTMuNC0zOC41LTMyLTQ1LjF6XCJdXG59O1xudmFyIGZhVGVuZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVuZ2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3ZDdcIiwgXCJNMzcyIDE2MEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjU2YzAgNi42IDUuNCAxMiAxMiAxMmgxNDB2MjI4YzAgNi42IDUuNCAxMiAxMiAxMmg1NmM2LjYgMCAxMi01LjQgMTItMTJWMjQwaDE0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTU2YzAtNi42LTUuNC0xMi0xMi0xMnptMC0xMjhIMTJDNS40IDMyIDAgMzcuNCAwIDQ0djU2YzAgNi42IDUuNCAxMiAxMiAxMmgzNjBjNi42IDAgMTItNS40IDEyLTEyVjQ0YzAtNi42LTUuNC0xMi0xMi0xMnpcIl1cbn07XG52YXIgZmFUZXJtaW5hbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZXJtaW5hbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjEyMFwiLCBcIk0yNTcuOTgxIDI3Mi45NzFMNjMuNjM4IDQ2Ny4zMTRjLTkuMzczIDkuMzczLTI0LjU2OSA5LjM3My0zMy45NDEgMEw3LjAyOSA0NDQuNjQ3Yy05LjM1Ny05LjM1Ny05LjM3NS0yNC41MjItLjA0LTMzLjkwMUwxNjEuMDExIDI1NiA2Ljk5IDEwMS4yNTVjLTkuMzM1LTkuMzc5LTkuMzE3LTI0LjU0NC4wNC0zMy45MDFsMjIuNjY3LTIyLjY2N2M5LjM3My05LjM3MyAyNC41NjktOS4zNzMgMzMuOTQxIDBMMjU3Ljk4MSAyMzkuMDNjOS4zNzMgOS4zNzIgOS4zNzMgMjQuNTY4IDAgMzMuOTQxek02NDAgNDU2di0zMmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzEyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MzJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMwNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR6XCJdXG59O1xudmFyIGZhVGV4dEhlaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZXh0LWhlaWdodCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAzNFwiLCBcIk0zMDQgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHY5NmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJoNTZ2MzA0SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE2MGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTQwVjExMmg1NnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnptMjU2IDMzNmgtNDhWMTQ0aDQ4YzE0LjMxIDAgMjEuMzMtMTcuMzEgMTEuMzEtMjcuMzFsLTgwLTgwYTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDgwQzM3OS4zNiAxMjYgMzg0LjM2IDE0NCA0MDAgMTQ0aDQ4djIyNGgtNDhjLTE0LjMxIDAtMjEuMzIgMTcuMzEtMTEuMzEgMjcuMzFsODAgODBhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC04MEM1ODAuNjQgMzg2IDU3NS42NCAzNjggNTYwIDM2OHpcIl1cbn07XG52YXIgZmFUZXh0V2lkdGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGV4dC13aWR0aCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzNVwiLCBcIk00MzIgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHY4MGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMTZoMTIwdjExMmgtMjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMjRWMTEyaDEyMHYxNmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnptLTY4LjY5IDI2MC42OUMzNTQgMjgzLjM2IDMzNiAyODguMzYgMzM2IDMwNHY0OEgxMTJ2LTQ4YzAtMTQuMzEtMTcuMzEtMjEuMzItMjcuMzEtMTEuMzFsLTgwIDgwYTE2IDE2IDAgMCAwIDAgMjIuNjJsODAgODBDOTQgNDg0LjY0IDExMiA0NzkuNjQgMTEyIDQ2NHYtNDhoMjI0djQ4YzAgMTQuMzEgMTcuMzEgMjEuMzMgMjcuMzEgMTEuMzFsODAtODBhMTYgMTYgMCAwIDAgMC0yMi42MnpcIl1cbn07XG52YXIgZmFUaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwYVwiLCBcIk0xNDkuMzMzIDU2djgwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjU2YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMDEuMzMzYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHptMTgxLjMzNCAyNDB2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU2IDAgMjQuMDAxLTEwLjc0NSAyNC4wMDEtMjR6bTMyLTI0MHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0tMzIgODBWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTYgMCAyNC4wMDEtMTAuNzQ1IDI0LjAwMS0yNHptLTIwNS4zMzQgNTZIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNMCAzNzZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHptMzg2LjY2Ny01Nkg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHptMCAxNjBINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDM4Ni42NjdjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6TTE4MS4zMzMgMzc2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHpcIl1cbn07XG52YXIgZmFUaExhcmdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RoLWxhcmdlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDA5XCIsIFwiTTI5NiAzMmgxOTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djE2MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjk2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWNTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0em0tODAgMEgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYxNjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE5MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek0wIDI5NnYxNjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE5MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjk2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0yOTYgMTg0aDE5MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjk2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyOTZjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0elwiXVxufTtcbnZhciBmYVRoTGlzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aC1saXN0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDBiXCIsIFwiTTE0OS4zMzMgMjE2djgwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di04MGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTAxLjMzM2MxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6TTAgMzc2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6TTEyNS4zMzMgMzJIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptODAgNDQ4SDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0em0tMjQtNDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTI0IDI2NEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHpcIl1cbn07XG52YXIgZmFUaGVhdGVyTWFza3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlYXRlci1tYXNrcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjYzMFwiLCBcIk0yMDYuODYgMjQ1LjE1Yy0zNS44OCAxMC40NS01OS45NSA0MS4yLTU3LjUzIDc0LjEgMTEuNC0xMi43MiAyOC44MS0yMy43IDQ5LjktMzAuOTJsNy42My00My4xOHpNOTUuODEgMjk1TDY0LjA4IDExNS40OWMtLjI5LTEuNjIuMjgtMi42Mi4yNC0yLjY1IDU3Ljc2LTMyLjA2IDEyMy4xMi00OS4wMSAxODkuMDEtNDkuMDEgMS42MSAwIDMuMjMuMTcgNC44NS4xOSAxMy45NS0xMy40NyAzMS43My0yMi44MyA1MS41OS0yNiAxOC44OS0zLjAyIDM4LjA1LTQuNTUgNTcuMTgtNS4zMi05Ljk5LTEzLjk1LTI0LjQ4LTI0LjIzLTQxLjc3LTI3QzMwMS4yNyAxLjg5IDI3Ny4yNCAwIDI1My4zMiAwIDE3Ni42NiAwIDEwMS4wMiAxOS40MiAzMy4yIDU3LjA2IDkuMDMgNzAuNDgtMy45MiA5OC40OCAxLjA1IDEyNi41OGwzMS43MyAxNzkuNTFjMTQuMjMgODAuNTIgMTM2LjMzIDE0Mi4wOCAyMDQuNDUgMTQyLjA4IDMuNTkgMCA2Ljc1LS40NiAxMC4wMS0uOC0xMy41Mi0xNy4wOC0yOC45NC00MC40OC0zOS41LTY3LjU4LTQ3LjYxLTEyLjk4LTEwNi4wNi01MS42Mi0xMTEuOTMtODQuNzl6bTk3LjU1LTEzNy40NmMtLjczLTQuMTItMi4yMy03Ljg3LTQuMDctMTEuNC04LjI1IDguOTEtMjAuNjcgMTUuNzUtMzUuMzIgMTguMzItMTQuNjUgMi41OC0yOC42Ny40LTM5LjQ4LTUuMTctLjUyIDMuOTQtLjY0IDcuOTguMDkgMTIuMSAzLjg0IDIxLjcgMjQuNTggMzYuMTkgNDYuMzQgMzIuMzcgMjEuNzUtMy44MiAzNi4yOC0yNC41MiAzMi40NC00Ni4yMnpNNjA2LjggMTIwLjljLTg4Ljk4LTQ5LjM4LTE5MS40My02Ny40MS0yOTEuOTgtNTEuMzUtMjcuMzEgNC4zNi00OS4wOCAyNi4yNi01NC4wNCA1NC4zNmwtMzEuNzMgMTc5LjUxYy0xNS4zOSA4Ny4wNSA5NS4yOCAxOTYuMjcgMTU4LjMxIDIwNy4zNSA2My4wMyAxMS4wOSAyMDQuNDctNTMuNzkgMjE5Ljg2LTE0MC44NGwzMS43My0xNzkuNTFjNC45Ny0yOC4xMS03Ljk4LTU2LjExLTMyLjE1LTY5LjUyem0tMjczLjI0IDk2LjhjMy44NC0yMS43IDI0LjU4LTM2LjE5IDQ2LjM0LTMyLjM2IDIxLjc2IDMuODMgMzYuMjggMjQuNTIgMzIuNDUgNDYuMjItLjczIDQuMTItMi4yMyA3Ljg3LTQuMDcgMTEuNC04LjI1LTguOTEtMjAuNjctMTUuNzUtMzUuMzItMTguMzItMTQuNjUtMi41OC0yOC42Ny0uNC0zOS40OCA1LjE3LS41My0zLjk1LS42NS03Ljk5LjA4LTEyLjExem03MC40NyAxOTguNzZjLTU1LjY4LTkuNzktOTMuNTItNTkuMjctODkuMDQtMTEyLjkgMjAuNiAyNS41NCA1Ni4yMSA0Ni4xNyA5OS40OSA1My43OCA0My4yOCA3LjYxIDgzLjgyLjM3IDExMS45My0xNi42LTE0LjE4IDUxLjk0LTY2LjcxIDg1LjUxLTEyMi4zOCA3NS43MnptMTMwLjMtMTUxLjM0Yy04LjI1LTguOTEtMjAuNjgtMTUuNzUtMzUuMzMtMTguMzItMTQuNjUtMi41OC0yOC42Ny0uNC0zOS40OCA1LjE3LS41Mi0zLjk0LS42NC03Ljk4LjA5LTEyLjEgMy44NC0yMS43IDI0LjU4LTM2LjE5IDQ2LjM0LTMyLjM3IDIxLjc1IDMuODMgMzYuMjggMjQuNTIgMzIuNDUgNDYuMjItLjczIDQuMTMtMi4yMyA3Ljg4LTQuMDcgMTEuNHpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aGVybW9tZXRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ5MVwiLCBcIk00NzYuOCAyMC40Yy0zNy41LTMwLjctOTUuNS0yNi4zLTEzMS45IDEwLjJsLTQ1LjcgNDYgNTAuNSA1MC41YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTAuNC01MC41LTQ1LjEgNDUuNCA1MC4zIDUwLjRjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwTDIwOSAxNjcuNGwtNDUuMSA0NS40TDIxNCAyNjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC01MC4xLTUwLjJMOTYgMjgxLjFWMzgyTDcgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOSA5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw4OS04OWg5OS45TDQ4NCAxNjIuNmMzNC45LTM0LjkgNDIuMi0xMDEuNS03LjItMTQyLjJ6XCJdXG59O1xudmFyIGZhVGhlcm1vbWV0ZXJFbXB0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aGVybW9tZXRlci1lbXB0eScsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjJjYlwiLCBcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMzUuMzQ2IDI4LjY1NC02NCA2NC02NHM2NCAyOC42NTQgNjQgNjR6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlckZ1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlcm1vbWV0ZXItZnVsbCcsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjJjN1wiLCBcIk0yMjQgOTZjMC01My4wMTktNDIuOTgxLTk2LTk2LTk2UzMyIDQyLjk4MSAzMiA5NnYyMDMuMzQ3QzEyLjIyNSAzMjEuNzU2LjE2NiAzNTEuMTM2LjAwMiAzODMuMzMzYy0uMzU5IDcwLjMwMyA1Ni43ODcgMTI4LjE3NiAxMjcuMDg5IDEyOC42NjQuMjk5LjAwMi42MS4wMDMuOTA5LjAwMyA3MC42OTggMCAxMjgtNTcuMzA0IDEyOC0xMjggMC0zMi40NTktMTIuMDg4LTYyLjA5LTMyLTg0LjY1M1Y5NnptLTk2IDM2OGwtLjU3Ni0uMDAyYy00My44Ni0uMzA0LTc5LjY0Ny0zNi41NDQtNzkuNDIzLTgwLjQyLjE3My0zMy45OCAxOS4yNjYtNTEuNjUyIDMxLjk5OS02Ni4wOFY5NmMwLTI2LjQ2NyAyMS41MzMtNDggNDgtNDhzNDggMjEuNTMzIDQ4IDQ4djIyMS40OThjMTIuNjMgMTQuMzEyIDMyIDMyLjE2NCAzMiA2Ni41MDIgMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwem02NC04MGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1Y5NmMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjIzMi41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3elwiXVxufTtcbnZhciBmYVRoZXJtb21ldGVySGFsZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aGVybW9tZXRlci1oYWxmJyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMmM5XCIsIFwiTTE5MiAzODRjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0cy02NC0yOC42NTQtNjQtNjRjMC0yMy42ODUgMTIuODc2LTQ0LjM0OSAzMi01NS40MTdWMjI0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ2MTA0LjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlclF1YXJ0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlcm1vbWV0ZXItcXVhcnRlcicsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjJjYVwiLCBcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3VjI4OGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjQwLjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlclRocmVlUXVhcnRlcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnMnLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImYyYzhcIiwgXCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjQtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0IDAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3VjE2MGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjE2OC41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJdXG59O1xudmFyIGZhVGh1bWJzRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aHVtYnMtZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE2NVwiLCBcIk0wIDU2djI0MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoODBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnptNDAgMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHMyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNHptMjcyIDI1NmMtMjAuMTgzIDAtMjkuNDg1LTM5LjI5My0zMy45MzEtNTcuNzk1LTUuMjA2LTIxLjY2Ni0xMC41ODktNDQuMDctMjUuMzkzLTU4LjkwMi0zMi40NjktMzIuNTI0LTQ5LjUwMy03My45NjctODkuMTE3LTExMy4xMTFhMTEuOTggMTEuOTggMCAwIDEtMy41NTgtOC41MjFWNTkuOTAxYzAtNi41NDEgNS4yNDMtMTEuODc4IDExLjc4My0xMS45OTggMTUuODMxLS4yOSAzNi42OTQtOS4wNzkgNTIuNjUxLTE2LjE3OEMyNTYuMTg5IDE3LjU5OCAyOTUuNzA5LjAxNyAzNDMuOTk1IDBoMi44NDRjNDIuNzc3IDAgOTMuMzYzLjQxMyAxMTMuNzc0IDI5LjczNyA4LjM5MiAxMi4wNTcgMTAuNDQ2IDI3LjAzNCA2LjE0OCA0NC42MzIgMTYuMzEyIDE3LjA1MyAyNS4wNjMgNDguODYzIDE2LjM4MiA3NC43NTcgMTcuNTQ0IDIzLjQzMiAxOS4xNDMgNTYuMTMyIDkuMzA4IDc5LjQ2OWwuMTEuMTFjMTEuODkzIDExLjk0OSAxOS41MjMgMzEuMjU5IDE5LjQzOSA0OS4xOTctLjE1NiAzMC4zNTItMjYuMTU3IDU4LjA5OC01OS41NTMgNTguMDk4SDM1MC43MjNDMzU4LjAzIDM2NC4zNCAzODQgMzg4LjEzMiAzODQgNDMwLjU0OCAzODQgNTA0IDMzNiA1MTIgMzEyIDUxMnpcIl1cbn07XG52YXIgZmFUaHVtYnNVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aHVtYnMtdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxNjRcIiwgXCJNMTA0IDIyNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djI0MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoODBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0OGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTY0IDQ3MmMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0ek0zODQgODEuNDUyYzAgNDIuNDE2LTI1Ljk3IDY2LjIwOC0zMy4yNzcgOTQuNTQ4aDEwMS43MjNjMzMuMzk3IDAgNTkuMzk3IDI3Ljc0NiA1OS41NTMgNTguMDk4LjA4NCAxNy45MzgtNy41NDYgMzcuMjQ5LTE5LjQzOSA0OS4xOTdsLS4xMS4xMWM5LjgzNiAyMy4zMzcgOC4yMzcgNTYuMDM3LTkuMzA4IDc5LjQ2OSA4LjY4MSAyNS44OTUtLjA2OSA1Ny43MDQtMTYuMzgyIDc0Ljc1NyA0LjI5OCAxNy41OTggMi4yNDQgMzIuNTc1LTYuMTQ4IDQ0LjYzMkM0NDAuMjAyIDUxMS41ODcgMzg5LjYxNiA1MTIgMzQ2LjgzOSA1MTJsLTIuODQ1LS4wMDFjLTQ4LjI4Ny0uMDE3LTg3LjgwNi0xNy41OTgtMTE5LjU2LTMxLjcyNS0xNS45NTctNy4wOTktMzYuODIxLTE1Ljg4Ny01Mi42NTEtMTYuMTc4LTYuNTQtLjEyLTExLjc4My01LjQ1Ny0xMS43ODMtMTEuOTk4di0yMTMuNzdjMC0zLjIgMS4yODItNi4yNzEgMy41NTgtOC41MjEgMzkuNjE0LTM5LjE0NCA1Ni42NDgtODAuNTg3IDg5LjExNy0xMTMuMTExIDE0LjgwNC0xNC44MzIgMjAuMTg4LTM3LjIzNiAyNS4zOTMtNTguOTAyQzI4Mi41MTUgMzkuMjkzIDI5MS44MTcgMCAzMTIgMGMyNCAwIDcyIDggNzIgODEuNDUyelwiXVxufTtcbnZhciBmYVRodW1idGFjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aHVtYnRhY2snLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwOGRcIiwgXCJNMjk4LjAyOCAyMTQuMjY3TDI4NS43OTMgOTZIMzI4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINTZDNDIuNzQ1IDAgMzIgMTAuNzQ1IDMyIDI0djQ4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg0Mi4yMDdMODUuOTcyIDIxNC4yNjdDMzcuNDY1IDIzNi44MiAwIDI3Ny4yNjEgMCAzMjhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEzNnYxMDQuMDA3YzAgMS4yNDIuMjg5IDIuNDY3Ljg0NSAzLjU3OGwyNCA0OGMyLjk0MSA1Ljg4MiAxMS4zNjQgNS44OTMgMTQuMzExIDBsMjQtNDhhOC4wMDggOC4wMDggMCAwIDAgLjg0NS0zLjU3OFYzNTJoMTM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNC0uMDAxLTUxLjE4My0zNy45ODMtOTEuNDItODUuOTczLTExMy43MzN6XCJdXG59O1xudmFyIGZhVGlja2V0QWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RpY2tldC1hbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYzZmZcIiwgXCJNMTI4IDE2MGgzMjB2MTkySDEyOFYxNjB6bTQwMCA5NmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4djk2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh2LTk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhzLTIxLjQ5LTQ4LTQ4LTQ4di05NmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQ4MGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4em0tNDgtMTA0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgxMjBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyMDhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTUyelwiXVxufTtcbnZhciBmYVRpbWVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RpbWVzJyxcbiAgaWNvbjogWzM1MiwgNTEyLCBbXSwgXCJmMDBkXCIsIFwiTTI0Mi43MiAyNTZsMTAwLjA3LTEwMC4wN2MxMi4yOC0xMi4yOCAxMi4yOC0zMi4xOSAwLTQ0LjQ4bC0yMi4yNC0yMi4yNGMtMTIuMjgtMTIuMjgtMzIuMTktMTIuMjgtNDQuNDggMEwxNzYgMTg5LjI4IDc1LjkzIDg5LjIxYy0xMi4yOC0xMi4yOC0zMi4xOS0xMi4yOC00NC40OCAwTDkuMjEgMTExLjQ1Yy0xMi4yOCAxMi4yOC0xMi4yOCAzMi4xOSAwIDQ0LjQ4TDEwOS4yOCAyNTYgOS4yMSAzNTYuMDdjLTEyLjI4IDEyLjI4LTEyLjI4IDMyLjE5IDAgNDQuNDhsMjIuMjQgMjIuMjRjMTIuMjggMTIuMjggMzIuMiAxMi4yOCA0NC40OCAwTDE3NiAzMjIuNzJsMTAwLjA3IDEwMC4wN2MxMi4yOCAxMi4yOCAzMi4yIDEyLjI4IDQ0LjQ4IDBsMjIuMjQtMjIuMjRjMTIuMjgtMTIuMjggMTIuMjgtMzIuMTkgMC00NC40OEwyNDIuNzIgMjU2elwiXVxufTtcbnZhciBmYVRpbWVzQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RpbWVzLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1N1wiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMjEuNiAzMTMuMWM0LjcgNC43IDQuNyAxMi4zIDAgMTdMMzM4IDM3Ny42Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjU2IDMxMmwtNjUuMSA2NS42Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMTM0LjQgMzM4Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsNjUuNi02NS02NS42LTY1LjFjLTQuNy00LjctNC43LTEyLjMgMC0xN2wzOS42LTM5LjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDY1IDY1LjcgNjUuMS02NS42YzQuNy00LjcgMTIuMy00LjcgMTcgMGwzOS42IDM5LjZjNC43IDQuNyA0LjcgMTIuMyAwIDE3TDMxMiAyNTZsNjUuNiA2NS4xelwiXVxufTtcbnZhciBmYVRpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGludCcsXG4gIGljb246IFszNTIsIDUxMiwgW10sIFwiZjA0M1wiLCBcIk0yMDUuMjIgMjIuMDljLTcuOTQtMjguNzgtNDkuNDQtMzAuMTItNTguNDQgMEMxMDAuMDEgMTc5Ljg1IDAgMjIyLjcyIDAgMzMzLjkxIDAgNDMyLjM1IDc4LjcyIDUxMiAxNzYgNTEyczE3Ni03OS42NSAxNzYtMTc4LjA5YzAtMTExLjc1LTk5Ljc5LTE1My4zNC0xNDYuNzgtMzExLjgyek0xNzYgNDQ4Yy02MS43NSAwLTExMi01MC4yNS0xMTItMTEyIDAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZjMCA0NC4xMSAzNS44OSA4MCA4MCA4MCA4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFUaW50U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGludC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVjN1wiLCBcIk02MzMuODIgNDU4LjFMNDk0Ljk3IDM1MC43OGMuNTItNS41NyAxLjAzLTExLjE2IDEuMDMtMTYuODcgMC0xMTEuNzYtOTkuNzktMTUzLjM0LTE0Ni43OC0zMTEuODItNy45NC0yOC43OC00OS40NC0zMC4xMi01OC40NCAwLTE1LjUyIDUyLjM0LTM2Ljg3IDkxLjk2LTU4LjQ5IDEyNS42OEw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNMTQ0IDMzMy45MUMxNDQgNDMyLjM1IDIyMi43MiA1MTIgMzIwIDUxMmM0NC43MSAwIDg1LjM3LTE2Ljk2IDExNi40LTQ0LjdMMTYyLjcyIDI1NS43OGMtMTEuNDEgMjMuNS0xOC43MiA0OC4zNS0xOC43MiA3OC4xM3pcIl1cbn07XG52YXIgZmFUaXJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aXJlZCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjVjOFwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0zMy44IDE4OS43bDgwLTQ4YzExLjYtNi45IDI0IDcuNyAxNS40IDE4TDM0My42IDIwOGwzMy42IDQwLjNjOC43IDEwLjQtMy45IDI0LjgtMTUuNCAxOGwtODAtNDhjLTcuNy00LjctNy43LTE1LjkgMC0yMC42em0tMTYzLTMwYy04LjYtMTAuMyAzLjgtMjQuOSAxNS40LTE4bDgwIDQ4YzcuOCA0LjcgNy44IDE1LjkgMCAyMC42bC04MCA0OGMtMTEuNSA2LjgtMjQtNy42LTE1LjQtMThsMzMuNi00MC4zLTMzLjYtNDAuM3pNMjQ4IDI4OGM1MS45IDAgMTE1LjMgNDMuOCAxMjMuMiAxMDYuNyAxLjcgMTMuNi04IDI0LjYtMTcuNyAyMC40LTI1LjktMTEuMS02NC40LTE3LjQtMTA1LjUtMTcuNHMtNzkuNiA2LjMtMTA1LjUgMTcuNGMtOS44IDQuMi0xOS40LTctMTcuNy0yMC40QzEzMi43IDMzMS44IDE5Ni4xIDI4OCAyNDggMjg4elwiXVxufTtcbnZhciBmYVRvZ2dsZU9mZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2dnbGUtb2ZmJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjA0XCIsIFwiTTM4NCA2NEgxOTJDODUuOTYxIDY0IDAgMTQ5Ljk2MSAwIDI1NnM4NS45NjEgMTkyIDE5MiAxOTJoMTkyYzEwNi4wMzkgMCAxOTItODUuOTYxIDE5Mi0xOTJTNDkwLjAzOSA2NCAzODQgNjR6TTY0IDI1NmMwLTcwLjc0MSA1Ny4yNDktMTI4IDEyOC0xMjggNzAuNzQxIDAgMTI4IDU3LjI0OSAxMjggMTI4IDAgNzAuNzQxLTU3LjI0OSAxMjgtMTI4IDEyOC03MC43NDEgMC0xMjgtNTcuMjQ5LTEyOC0xMjh6bTMyMCAxMjhoLTQ4LjkwNWM2NS4yMTctNzIuODU4IDY1LjIzNi0xODMuMTIgMC0yNTZIMzg0YzcwLjc0MSAwIDEyOCA1Ny4yNDkgMTI4IDEyOCAwIDcwLjc0LTU3LjI0OSAxMjgtMTI4IDEyOHpcIl1cbn07XG52YXIgZmFUb2dnbGVPbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2dnbGUtb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyMDVcIiwgXCJNMzg0IDY0SDE5MkM4NiA2NCAwIDE1MCAwIDI1NnM4NiAxOTIgMTkyIDE5MmgxOTJjMTA2IDAgMTkyLTg2IDE5Mi0xOTJTNDkwIDY0IDM4NCA2NHptMCAzMjBjLTcwLjggMC0xMjgtNTcuMy0xMjgtMTI4IDAtNzAuOCA1Ny4zLTEyOCAxMjgtMTI4IDcwLjggMCAxMjggNTcuMyAxMjggMTI4IDAgNzAuOC01Ny4zIDEyOC0xMjggMTI4elwiXVxufTtcbnZhciBmYVRvaWxldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2lsZXQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3ZDhcIiwgXCJNMzY4IDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZIMTZDNy4yIDAgMCA3LjIgMCAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMTZ2MTU2LjdDMTEuOCAyMTQuOCAwIDIyNi45IDAgMjQwYzAgNjcuMiAzNC42IDEyNi4yIDg2LjggMTYwLjVsLTIxLjQgNzAuMkM1OS4xIDQ5MS4yIDc0LjUgNTEyIDk2IDUxMmgxOTJjMjEuNSAwIDM2LjktMjAuOCAzMC42LTQxLjNsLTIxLjQtNzAuMkMzNDkuNCAzNjYuMiAzODQgMzA3LjIgMzg0IDI0MGMwLTEzLjEtMTEuOC0yNS4yLTMyLTM1LjNWNDhoMTZ6TTgwIDcyYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDg4Yy00LjQgMC04LTMuNi04LThWNzJ6bTExMiAyMDBjLTc3LjEgMC0xMzkuNi0xNC4zLTEzOS42LTMyczYyLjUtMzIgMTM5LjYtMzIgMTM5LjYgMTQuMyAxMzkuNiAzMi02Mi41IDMyLTEzOS42IDMyelwiXVxufTtcbnZhciBmYVRvaWxldFBhcGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RvaWxldC1wYXBlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjcxZVwiLCBcIk0xMjggMEM3NC45OCAwIDMyIDg1Ljk2IDMyIDE5MnYxNzIuMDdjMCA0MS4xMi05LjggNjIuNzctMzEuMTcgMTI2Ljg3Qy0yLjYyIDUwMS4zIDUuMDkgNTEyIDE2LjAxIDUxMmgyODAuOTJjMTMuNzcgMCAyNi04LjgxIDMwLjM2LTIxLjg4IDEyLjgzLTM4LjQ4IDI0LjcxLTcyLjQgMjQuNzEtMTI2LjA1VjE5MmMwLTgzLjYgMjMuNjctMTUzLjUyIDYwLjQ0LTE5MkgxMjh6TTk2IDIyNGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTY0IDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2em02NCAwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptNjQgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6TTQ4MCAwYy01My4wMiAwLTk2IDg1Ljk2LTk2IDE5MnM0Mi45OCAxOTIgOTYgMTkyIDk2LTg1Ljk2IDk2LTE5MlM1MzMuMDIgMCA0ODAgMHptMCAyNTZjLTE3LjY3IDAtMzItMjguNjUtMzItNjRzMTQuMzMtNjQgMzItNjQgMzIgMjguNjUgMzIgNjQtMTQuMzMgNjQtMzIgNjR6XCJdXG59O1xudmFyIGZhVG9pbGV0UGFwZXJTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2lsZXQtcGFwZXItc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzJcIiwgXCJNNjQsMTkyVjM2NC4xM2MwLDQxLjEyLTkuNzUsNjIuNzUtMzEuMTIsMTI2Ljg3QTE2LDE2LDAsMCwwLDQ4LDUxMkgzMjguODZhMzEuODcsMzEuODcsMCwwLDAsMzAuMzgtMjEuODdjOS4zMS0yNy44MywxOC01My4zNSwyMi4xOC04NS41NWwtMzE2LTI0NC4yNUM2NC41MywxNzAuNjYsNjQsMTgxLjE5LDY0LDE5MlpNNjMzLjgyLDQ1OC4wOWwtMTAyLTc4LjgxQzU3NS4yOCwzNjAuOTEsNjA4LDI4NC4zMiw2MDgsMTkyLDYwOCw4Niw1NjUsMCw1MTIsMHMtOTYsODYtOTYsMTkyYzAsNDIsNyw4MC40LDE4LjQzLDExMkwzODQsMjY1VjE5MmMwLTgzLjYyLDIzLjYzLTE1My41LDYwLjUtMTkySDE2MGMtMjMuMzMsMC00NC42MywxNi44My02MS4yNiw0NC41M0w0NS40NiwzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zNywzMS40NUExNiwxNiwwLDAsMCw2LjE4LDUzLjkxTDU5NC41NCw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MWwxOS42NC0yNS4yNkExNiwxNiwwLDAsMCw2MzMuODIsNDU4LjA5Wk01MTIsMjU2Yy0xNy42MywwLTMyLTI4LjYyLTMyLTY0czE0LjM3LTY0LDMyLTY0LDMyLDI4LjYzLDMyLDY0UzUyOS42MiwyNTYsNTEyLDI1NlpcIl1cbn07XG52YXIgZmFUb29sYm94ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Rvb2xib3gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NTJcIiwgXCJNNTAyLjYzIDIxNC42M2wtNDUuMjUtNDUuMjVjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdIMzg0VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMTc2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djgwSDc3LjI1Yy04LjQ5IDAtMTYuNjIgMy4zNy0yMi42MyA5LjM3TDkuMzcgMjE0LjYzYy02IDYtOS4zNyAxNC4xNC05LjM3IDIyLjYzVjMyMGgxMjh2LTE2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djE2aDEyOHYtMTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTZoMTI4di04Mi43NWMwLTguNDgtMy4zNy0xNi42Mi05LjM3LTIyLjYyek0zMjAgMTYwSDE5MlY5NmgxMjh2NjR6bTY0IDIwOGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNkgxOTJ2MTZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTZIMHY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NkgzODR2MTZ6XCJdXG59O1xudmFyIGZhVG9vbHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9vbHMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ZDlcIiwgXCJNNTAxLjEgMzk1LjdMMzg0IDI3OC42Yy0yMy4xLTIzLjEtNTcuNi0yNy42LTg1LjQtMTMuOUwxOTIgMTU4LjFWOTZMNjQgMCAwIDY0bDk2IDEyOGg2Mi4xbDEwNi42IDEwNi42Yy0xMy42IDI3LjgtOS4yIDYyLjMgMTMuOSA4NS40bDExNy4xIDExNy4xYzE0LjYgMTQuNiAzOC4yIDE0LjYgNTIuNyAwbDUyLjctNTIuN2MxNC41LTE0LjYgMTQuNS0zOC4yIDAtNTIuN3pNMzMxLjcgMjI1YzI4LjMgMCA1NC45IDExIDc0LjkgMzFsMTkuNCAxOS40YzE1LjgtNi45IDMwLjgtMTYuNSA0My44LTI5LjUgMzcuMS0zNy4xIDQ5LjctODkuMyAzNy45LTEzNi43LTIuMi05LTEzLjUtMTIuMS0yMC4xLTUuNWwtNzQuNCA3NC40LTY3LjktMTEuM0wzMzQgOTguOWw3NC40LTc0LjRjNi42LTYuNiAzLjQtMTcuOS01LjctMjAuMi00Ny40LTExLjctOTkuNi45LTEzNi42IDM3LjktMjguNSAyOC41LTQxLjkgNjYuMS00MS4yIDEwMy42bDgyLjEgODIuMWM4LjEtMS45IDE2LjUtMi45IDI0LjctMi45em0tMTAzLjkgODJsLTU2LjctNTYuN0wxOC43IDQwMi44Yy0yNSAyNS0yNSA2NS41IDAgOTAuNXM2NS41IDI1IDkwLjUgMGwxMjMuNi0xMjMuNmMtNy42LTE5LjktOS45LTQxLjYtNS02Mi43ek02NCA0NzJjLTEzLjIgMC0yNC0xMC44LTI0LTI0IDAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy4yLTEwLjcgMjQtMjQgMjR6XCJdXG59O1xudmFyIGZhVG9vdGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9vdGgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1YzlcIiwgXCJNNDQzLjk4IDk2LjI1Yy0xMS4wMS00NS4yMi00Ny4xMS04Mi4wNi05Mi4wMS05My43Mi0zMi4xOS04LjM2LTYzIDUuMS04OS4xNCAyNC4zMy0zLjI1IDIuMzktNi45NiAzLjczLTEwLjUgNS40OGwyOC4zMiAxOC4yMWM3LjQyIDQuNzcgOS41OCAxNC42NyA0LjggMjIuMTEtNC40NiA2Ljk1LTE0LjI3IDkuODYtMjIuMTEgNC44TDE2Mi44MyAxMi44NGMtMjAuNy0xMC44NS00My4zOC0xNi40LTY2LjgxLTEwLjMxLTQ0LjkgMTEuNjctODEgNDguNS05Mi4wMSA5My43Mi0xMC4xMyA0MS42Mi0uNDIgODAuODEgMjEuNSAxMTAuNDMgMjMuMzYgMzEuNTcgMzIuNjggNjguNjYgMzYuMjkgMTA3LjM1IDQuNCA0Ny4xNiAxMC4zMyA5NC4xNiAyMC45NCAxNDAuMzJsNy44IDMzLjk1YzMuMTkgMTMuODcgMTUuNDkgMjMuNyAyOS42NyAyMy43IDEzLjk3IDAgMjYuMTUtOS41NSAyOS41NC0yMy4xNmwzNC40Ny0xMzguNDJjNC41Ni0xOC4zMiAyMC45Ni0zMS4xNiAzOS43Ni0zMS4xNnMzNS4yIDEyLjg1IDM5Ljc2IDMxLjE2bDM0LjQ3IDEzOC40MmMzLjM5IDEzLjYxIDE1LjU3IDIzLjE2IDI5LjU0IDIzLjE2IDE0LjE4IDAgMjYuNDgtOS44MyAyOS42Ny0yMy43bDcuOC0zMy45NWMxMC42MS00Ni4xNSAxNi41My05My4xNiAyMC45NC0xNDAuMzIgMy42MS0zOC43IDEyLjkzLTc1Ljc4IDM2LjI5LTEwNy4zNSAyMS45NS0yOS42MSAzMS42Ni02OC44IDIxLjUzLTExMC40M3pcIl1cbn07XG52YXIgZmFUb3JhaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b3JhaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZhMFwiLCBcIk0zMjAuMDUgMzY2LjQ4bDE3LjcyLTI5LjY0aC0zNS40NnptOTkuMjEtMTY2SDM4Mi40bDE4LjQ2IDMwLjgyek00OCAwQzIxLjQ5IDAgMCAxNC4zMyAwIDMydjQ0OGMwIDE3LjY3IDIxLjQ5IDMyIDQ4IDMyczQ4LTE0LjMzIDQ4LTMyVjMyQzk2IDE0LjMzIDc0LjUxIDAgNDggMHptMTcyLjc0IDMxMS41aDM2Ljg1bC0xOC40Ni0zMC44MnptMTYxLjcxIDBoMzYuODZsLTE4LjQ1LTMwLjh6TTEyOCA0NjRoMzg0VjQ4SDEyOHptNjYuNzctMjc4LjEzYTIxLjIyIDIxLjIyIDAgMCAxIDE4LjQ4LTEwLjcxaDU5LjQ1bDI5LjEzLTQ4LjcxYTIxLjEzIDIxLjEzIDAgMCAxIDE4LjIyLTEwLjM3QTIwLjc2IDIwLjc2IDAgMCAxIDMzOCAxMjYuMjlsMjkuMjUgNDguODZoNTkuNTJhMjEuMTIgMjEuMTIgMCAwIDEgMTguMSAzMkw0MTUuNjMgMjU2IDQ0NSAzMDVhMjAuNjkgMjAuNjkgMCAwIDEgLjI0IDIxLjEyIDIxLjI1IDIxLjI1IDAgMCAxLTE4LjQ4IDEwLjcyaC01OS40N2wtMjkuMTMgNDguN2EyMS4xMyAyMS4xMyAwIDAgMS0xOC4xNiAxMC40IDIwLjc5IDIwLjc5IDAgMCAxLTE4LTEwLjIybC0yOS4yNS00OC44OGgtNTkuNWEyMS4xMSAyMS4xMSAwIDAgMS0xOC4xLTMyTDIyNC4zNiAyNTYgMTk1IDIwN2EyMC43IDIwLjcgMCAwIDEtLjIzLTIxLjEzek01OTIgMGMtMjYuNTEgMC00OCAxNC4zMy00OCAzMnY0NDhjMCAxNy42NyAyMS40OSAzMiA0OCAzMnM0OC0xNC4zMyA0OC0zMlYzMmMwLTE3LjY3LTIxLjQ5LTMyLTQ4LTMyek0zMjAgMTQ1LjUzbC0xNy43OCAyOS42MmgzNS40NnptLTYyLjQ1IDU1aC0zNi44MWwxOC40NCAzMC44em0yOS41OCAxMTFoNjUuNzlMMzg2LjA5IDI1NmwtMzMuMjMtNTUuNTJoLTY1Ljc5TDI1My45IDI1NnpcIl1cbn07XG52YXIgZmFUb3JpaUdhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9yaWktZ2F0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZhMVwiLCBcIk0zNzYuNDUgMzJoLTI0MC45QTMwMy4xNyAzMDMuMTcgMCAwIDEgMCAwdjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJ2NjRIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNTZoMjU2djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC00OHYtNjRoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYwYTMwMy4xNyAzMDMuMTcgMCAwIDEtMTM1LjU1IDMyek0xMjggMTI4aDk2djY0aC05NnYtNjR6bTI1NiA2NGgtOTZ2LTY0aDk2djY0elwiXVxufTtcbnZhciBmYVRyYWN0b3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhY3RvcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjcyMlwiLCBcIk01MjggMzM2Yy00OC42IDAtODggMzkuNC04OCA4OHMzOS40IDg4IDg4IDg4IDg4LTM5LjQgODgtODgtMzkuNC04OC04OC04OHptMCAxMTJjLTEzLjIzIDAtMjQtMTAuNzctMjQtMjRzMTAuNzctMjQgMjQtMjQgMjQgMTAuNzcgMjQgMjQtMTAuNzcgMjQtMjQgMjR6bTgwLTI4OGgtNjR2LTQwLjJjMC0xNC4xMiA0LjctMjcuNzYgMTMuMTUtMzguODQgNC40Mi01LjggMy41NS0xNC4wNi0xLjMyLTE5LjQ5TDUzNC4yIDM3LjNjLTYuNjYtNy40NS0xOC4zMi02LjkyLTI0LjcuNzhDNDkwLjU4IDYwLjkgNDgwIDg5LjgxIDQ4MCAxMTkuOFYxNjBIMzc3LjY3TDMyMS41OCAyOS4xNEE0Ny45MTQgNDcuOTE0IDAgMCAwIDI3Ny40NSAwSDE0NGMtMjYuNDcgMC00OCAyMS41My00OCA0OHYxNDYuNTJjLTguNjMtNi43My0yMC45Ni02LjQ2LTI4Ljg5IDEuNDdMMzYgMjI3LjFjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFsNS4wNiA1LjA2Yy00Ljk5IDkuMjYtOC45NiAxOC44Mi0xMS45MSAyOC43MkgyMmMtMTIuMTUgMC0yMiA5Ljg1LTIyIDIydjQ0YzAgMTIuMTUgOS44NSAyMiAyMiAyMmg3LjE0YzIuOTYgOS45MSA2LjkyIDE5LjQ2IDExLjkxIDI4LjczbC01LjA2IDUuMDZjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFMNjcuMSA0NzZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGw1LjA2LTUuMDZjOS4yNiA0Ljk5IDE4LjgyIDguOTYgMjguNzIgMTEuOTFWNDkwYzAgMTIuMTUgOS44NSAyMiAyMiAyMmg0NGMxMi4xNSAwIDIyLTkuODUgMjItMjJ2LTcuMTRjOS45LTIuOTUgMTkuNDYtNi45MiAyOC43Mi0xMS45MWw1LjA2IDUuMDZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGwzMS4xMS0zMS4xMWM4LjU5LTguNTkgOC41OS0yMi41MiAwLTMxLjExbC01LjA2LTUuMDZjNC45OS05LjI2IDguOTYtMTguODIgMTEuOTEtMjguNzJIMzMwYzEyLjE1IDAgMjItOS44NSAyMi0yMnYtNmg4MC41NGMyMS45MS0yOC45OSA1Ni4zMi00OCA5NS40Ni00OCAxOC42NCAwIDM2LjA3IDQuNjEgNTEuOCAxMi4ybDUwLjgyLTUwLjgyYzYtNiA5LjM3LTE0LjE0IDkuMzctMjIuNjNWMTkyYy4wMS0xNy42Ny0xNC4zMi0zMi0zMS45OS0zMnpNMTc2IDQxNmMtNDQuMTggMC04MC0zNS44Mi04MC04MHMzNS44Mi04MCA4MC04MCA4MCAzNS44MiA4MCA4MC0zNS44MiA4MC04MCA4MHptMjItMjU2aC0zOFY2NGgxMDYuODlsNDEuMTUgOTZIMTk4elwiXVxufTtcbnZhciBmYVRyYWRlbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFkZW1hcmsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyNWNcIiwgXCJNMjYwLjYgOTZIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0My4xYzAgNi42IDUuNCAxMiAxMiAxMmg4NS4xVjQwNGMwIDYuNiA1LjQgMTIgMTIgMTJoNTQuM2M2LjYgMCAxMi01LjQgMTItMTJWMTYzLjFoODUuMWM2LjYgMCAxMi01LjQgMTItMTJWMTA4Yy4xLTYuNi01LjMtMTItMTEuOS0xMnpNNjQwIDQwM2wtMjQtMjk2Yy0uNS02LjItNS43LTExLTEyLTExaC02NS40Yy01LjEgMC05LjcgMy4zLTExLjMgOC4xbC00My44IDEyNy4xYy03LjIgMjAuNi0xNi4xIDUyLjgtMTYuMSA1Mi44aC0uOXMtOC45LTMyLjItMTYuMS01Mi44bC00My44LTEyNy4xYy0xLjctNC44LTYuMi04LjEtMTEuMy04LjFoLTY1LjRjLTYuMiAwLTExLjQgNC44LTEyIDExbC0yNC40IDI5NmMtLjYgNyA0LjkgMTMgMTIgMTNIMzYwYzYuMyAwIDExLjUtNC45IDEyLTExLjJsOS4xLTEzMi45YzEuOC0yNC4yIDAtNTMuNyAwLTUzLjdoLjlzMTAuNyAzMy42IDE3LjkgNTMuN2wzMC43IDg0LjdjMS43IDQuNyA2LjIgNy45IDExLjMgNy45aDUwLjNjNS4xIDAgOS42LTMuMiAxMS4zLTcuOWwzMC43LTg0LjdjNy4yLTIwLjEgMTcuOS01My43IDE3LjktNTMuN2guOXMtMS44IDI5LjUgMCA1My43bDkuMSAxMzIuOWMuNCA2LjMgNS43IDExLjIgMTIgMTEuMkg2MjhjNyAwIDEyLjUtNiAxMi0xM3pcIl1cbn07XG52YXIgZmFUcmFmZmljTGlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhZmZpYy1saWdodCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjYzN1wiLCBcIk0zODQgMTkyaC02NHYtMzcuODhjMzcuMi0xMy4yMiA2NC00OC4zOCA2NC05MC4xMmgtNjRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NkM3OC4zMyAwIDY0IDE0LjMzIDY0IDMydjMySDBjMCA0MS43NCAyNi44IDc2LjkgNjQgOTAuMTJWMTkySDBjMCA0MS43NCAyNi44IDc2LjkgNjQgOTAuMTJWMzIwSDBjMCA0Mi44NCAyOC4yNSA3OC42OSA2Ni45OSA5MS4wNUM3OS40MiA0NjguNzIgMTMwLjYgNTEyIDE5MiA1MTJzMTEyLjU4LTQzLjI4IDEyNS4wMS0xMDAuOTVDMzU1Ljc1IDM5OC42OSAzODQgMzYyLjg0IDM4NCAzMjBoLTY0di0zNy44OGMzNy4yLTEzLjIyIDY0LTQ4LjM4IDY0LTkwLjEyek0xOTIgNDE2Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0wLTEyOGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMC0xMjhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6XCJdXG59O1xudmFyIGZhVHJhaWxlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFpbGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDQxXCIsIFwiTTYyNCwzMjBINTQ0VjgwYTE2LDE2LDAsMCwwLTE2LTE2SDE2QTE2LDE2LDAsMCwwLDAsODBWMzY4YTE2LDE2LDAsMCwwLDE2LDE2SDY1LjYxYzcuODMtNTQuMjEsNTQtOTYsMTEwLjM5LTk2czEwMi41Niw0MS43OSwxMTAuMzksOTZINjI0YTE2LDE2LDAsMCwwLDE2LTE2VjMzNkExNiwxNiwwLDAsMCw2MjQsMzIwWk05NiwyNDMuNjhhMTc2LjI5LDE3Ni4yOSwwLDAsMC0zMiwyMC43MVYxMzZhOCw4LDAsMCwxLDgtOEg4OGE4LDgsMCwwLDEsOCw4Wm05Ni0xOC41NGMtNS4zMS0uNDktMTAuNTctMS4xNC0xNi0xLjE0cy0xMC42OS42NS0xNiwxLjE0VjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabTk2LDM5LjI1YTE3Ni4yOSwxNzYuMjksMCwwLDAtMzItMjAuNzFWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFpNMzg0LDMyMEgzNTJWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFptOTYsMEg0NDhWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFptLTMwNCwwYTgwLDgwLDAsMSwwLDgwLDgwQTgwLDgwLDAsMCwwLDE3NiwzMjBabTAsMTEyYTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDE3Niw0MzJaXCJdXG59O1xudmFyIGZhVHJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhaW4nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyMzhcIiwgXCJNNDQ4IDk2djI1NmMwIDUxLjgxNS02MS42MjQgOTYtMTMwLjAyMiA5Nmw2Mi45OCA0OS43MjFDMzg2LjkwNSA1MDIuNDE3IDM4My41NjIgNTEyIDM3NiA1MTJINzJjLTcuNTc4IDAtMTAuODkyLTkuNTk0LTQuOTU3LTE0LjI3OUwxMzAuMDIyIDQ0OEM2MS44MiA0NDggMCA0MDMuOTU0IDAgMzUyVjk2QzAgNDIuOTgxIDY0IDAgMTI4IDBoMTkyYzY1IDAgMTI4IDQyLjk4MSAxMjggOTZ6bS00OCAxMzZWMTIwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEg3MmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzA0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHptLTE3NiA2NGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2elwiXVxufTtcbnZhciBmYVRyYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhbScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdkYVwiLCBcIk0yODggNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJTMzA1LjcgMCAyODggMHMtMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0yMjMuNS0xMi4xYy0yLjMtOC42LTExLTEzLjYtMTkuNi0xMS4zbC00ODAgMTI4Yy04LjUgMi4zLTEzLjYgMTEtMTEuMyAxOS42QzIuNSAxOTUuMyA4LjkgMjAwIDE2IDIwMGMxLjQgMCAyLjgtLjIgNC4xLS41TDI0MCAxNDAuOFYyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI3MnYtOTEuN2wyMjguMS02MC44YzguNi0yLjMgMTMuNi0xMS4xIDExLjQtMTkuNnpNMTc2IDM4NEg4MHYtOTZoOTZ2OTZ6bTE2MC05Nmg5NnY5NmgtOTZ2LTk2em0tMzIgMHY5NmgtOTZ2LTk2aDk2ek0xOTIgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYVRyYW5zZ2VuZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYW5zZ2VuZGVyJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMjI0XCIsIFwiTTM3MiAwaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTgwLjcgODAuN0MxOTguNSAxMDQuMSAxNzIuMiA5NiAxNDQgOTYgNjQuNSA5NiAwIDE2MC41IDAgMjQwYzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0MDhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di0yNy42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMTJjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgMzIwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFUcmFuc2dlbmRlckFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFuc2dlbmRlci1hbHQnLFxuICBpY29uOiBbNDgwLCA1MTIsIFtdLCBcImYyMjVcIiwgXCJNNDY4IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzI5NC41IDEwNC4xIDI2OC4yIDk2IDI0MCA5NmMtMjguMiAwLTU0LjUgOC4xLTc2LjcgMjIuMWwtMTYuNS0xNi41IDE5LjgtMTkuOGM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTI4LjMtMjguM2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0xOS44IDE5LjgtMTktMTkgMTYuOS0xNi45QzEwNy4xIDEyLjkgMTAxLjcgMCA5MSAwSDEyQzUuNCAwIDAgNS40IDAgMTJ2NzljMCAxMC43IDEyLjkgMTYgMjAuNSA4LjVsMTYuOS0xNi45IDE5IDE5LTE5LjggMTkuOGMtNC43IDQuNy00LjcgMTIuMyAwIDE3bDI4LjMgMjguM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTkuOC0xOS44IDE2LjUgMTYuNUMxMDQuMSAxODUuNSA5NiAyMTEuOCA5NiAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOGgtMzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di0yNy42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMTJjMC02LjYtNS40LTEyLTEyLTEyek0yNDAgMzIwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFUcmFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFzaCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFmOFwiLCBcIk00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6TTUzLjIgNDY3YTQ4IDQ4IDAgMCAwIDQ3LjkgNDVoMjQ1LjhhNDggNDggMCAwIDAgNDcuOS00NUw0MTYgMTI4SDMyelwiXVxufTtcbnZhciBmYVRyYXNoQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYXNoLWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjJlZFwiLCBcIk0zMiA0NjRhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOEgzMnptMjcyLTI1NmExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwek00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhVHJhc2hSZXN0b3JlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYXNoLXJlc3RvcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4MjlcIiwgXCJNNTMuMiA0NjdhNDggNDggMCAwIDAgNDcuOSA0NWgyNDUuOGE0OCA0OCAwIDAgMCA0Ny45LTQ1TDQxNiAxMjhIMzJ6bTcwLjExLTE3NS44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFUcmFzaFJlc3RvcmVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhc2gtcmVzdG9yZS1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4MmFcIiwgXCJNMzIgNDY0YTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI4OGE0OCA0OCAwIDAgMCA0OC00OFYxMjhIMzJ6bTkxLjMxLTE3Mi44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFUcmVlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyZWUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYmJcIiwgXCJNMzc4LjMxIDM3OC40OUwyOTguNDIgMjg4aDMwLjYzYzkuMDEgMCAxNi45OC01IDIwLjc4LTEzLjA2IDMuOC04LjA0IDIuNTUtMTcuMjYtMy4yOC0yNC4wNUwyNjguNDIgMTYwaDI4Ljg5YzkuMSAwIDE3LjMtNS4zNSAyMC44Ni0xMy42MSAzLjUyLTguMTMgMS44Ni0xNy41OS00LjI0LTI0LjA4TDIwMy42NiA0LjgzYy02LjAzLTYuNDUtMTcuMjgtNi40NS0yMy4zMiAwTDcwLjA2IDEyMi4zMWMtNi4xIDYuNDktNy43NSAxNS45NS00LjI0IDI0LjA4QzY5LjM4IDE1NC42NSA3Ny41OSAxNjAgODYuNjkgMTYwaDI4Ljg5bC03OC4xNCA5MC45MWMtNS44MSA2Ljc4LTcuMDYgMTUuOTktMy4yNyAyNC4wNEMzNy45NyAyODMgNDUuOTMgMjg4IDU0Ljk1IDI4OGgzMC42M0w1LjY5IDM3OC40OWMtNiA2Ljc5LTcuMzYgMTYuMDktMy41NiAyNC4yNiAzLjc1IDguMDUgMTIgMTMuMjUgMjEuMDEgMTMuMjVIMTYwdjI0LjQ1bC0zMC4yOSA0OC40Yy01LjMyIDEwLjY0IDIuNDIgMjMuMTYgMTQuMzEgMjMuMTZoOTUuOTZjMTEuODkgMCAxOS42My0xMi41MiAxNC4zMS0yMy4xNkwyMjQgNDQwLjQ1VjQxNmgxMzYuODZjOS4wMSAwIDE3LjI2LTUuMiAyMS4wMS0xMy4yNSAzLjgtOC4xNyAyLjQ0LTE3LjQ3LTMuNTYtMjQuMjZ6XCJdXG59O1xudmFyIGZhVHJvcGh5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Ryb3BoeScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA5MVwiLCBcIk01NTIgNjRINDQ4VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDE1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDBIMjRDMTAuNyA2NCAwIDc0LjcgMCA4OHY1NmMwIDM1LjcgMjIuNSA3Mi40IDYxLjkgMTAwLjcgMzEuNSAyMi43IDY5LjggMzcuMSAxMTAgNDEuN0MyMDMuMyAzMzguNSAyNDAgMzYwIDI0MCAzNjB2NzJoLTQ4Yy0zNS4zIDAtNjQgMjAuNy02NCA1NnYxMmMwIDYuNiA1LjQgMTIgMTIgMTJoMjk2YzYuNiAwIDEyLTUuNCAxMi0xMnYtMTJjMC0zNS4zLTI4LjctNTYtNjQtNTZoLTQ4di03MnMzNi43LTIxLjUgNjguMS03My42YzQwLjMtNC42IDc4LjYtMTkgMTEwLTQxLjcgMzkuMy0yOC4zIDYxLjktNjUgNjEuOS0xMDAuN1Y4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNOTkuMyAxOTIuOEM3NC45IDE3NS4yIDY0IDE1NS42IDY0IDE0NHYtMTZoNjQuMmMxIDMyLjYgNS44IDYxLjIgMTIuOCA4Ni4yLTE1LjEtNS4yLTI5LjItMTIuNC00MS43LTIxLjR6TTUxMiAxNDRjMCAxNi4xLTE3LjcgMzYuMS0zNS4zIDQ4LjgtMTIuNSA5LTI2LjcgMTYuMi00MS44IDIxLjQgNy0yNSAxMS44LTUzLjYgMTIuOC04Ni4ySDUxMnYxNnpcIl1cbn07XG52YXIgZmFUcnVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjBkMVwiLCBcIk02MjQgMzUyaC0xNlYyNDMuOWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45TDQ5NCAxMTAuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHYzMjBjMCAyNi41IDIxLjUgNDggNDggNDhoMTZjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTMyMCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptODAtMjA4SDQxNlYxNDRoNDQuMWw5OS45IDk5LjlWMjU2elwiXVxufTtcbnZhciBmYVRydWNrTG9hZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1sb2FkaW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGRlXCIsIFwiTTUwLjIgMzc1LjZjMi4zIDguNSAxMS4xIDEzLjYgMTkuNiAxMS4zbDIxNi40LTU4YzguNS0yLjMgMTMuNi0xMS4xIDExLjMtMTkuNmwtNDkuNy0xODUuNWMtMi4zLTguNS0xMS4xLTEzLjYtMTkuNi0xMS4zTDE1MSAxMzMuM2wyNC44IDkyLjctNjEuOCAxNi41LTI0LjgtOTIuNy03Ny4zIDIwLjdDMy40IDE3Mi44LTEuNyAxODEuNi42IDE5MC4xbDQ5LjYgMTg1LjV6TTM4NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMjMuNkw1LjkgNDUwYy00LjMgMS4yLTYuOCA1LjYtNS42IDkuOGwxMi42IDQ2LjNjMS4yIDQuMyA1LjYgNi44IDkuOCA1LjZsMzkzLjctMTA3LjRDNDE4LjggNDY0LjEgNDY3LjYgNTEyIDUyOCA1MTJjNjEuOSAwIDExMi01MC4xIDExMi0xMTJWMEgzODR6bTE0NCA0NDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4elwiXVxufTtcbnZhciBmYVRydWNrTW9uc3RlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1tb25zdGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjNiXCIsIFwiTTYyNCAyMjRoLTE2di02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC03My42TDQxOS4yMiAyNC4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAwSDI1NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5Nkg0OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2LjcyYzI5LjIxLTM4LjY1IDc1LjEtNjQgMTI3LjI4LTY0czk4LjA3IDI1LjM1IDEyNy4yOCA2NGg2NS40NWMyOS4yMS0zOC42NSA3NS4xLTY0IDEyNy4yOC02NHM5OC4wNyAyNS4zNSAxMjcuMjggNjRINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTMzNi05NlY2NGg4MS4yNGw1MS4yIDY0SDI4OHptMzA0IDIyNGgtNS4yYy0yLjItNy4zMy01LjA3LTE0LjI4LTguNjUtMjAuODlsMy42Ny0zLjY3YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0zLjY3IDMuNjdBMTEwLjg1IDExMC44NSAwIDAgMCA1MTIgMjc3LjJWMjcyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NS4yYy03LjMzIDIuMi0xNC4yOCA1LjA3LTIwLjg5IDguNjVsLTMuNjctMy42N2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjMgMjIuNjNjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgMzczLjIgMzUySDM2OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNS4yYzIuMiA3LjMzIDUuMDcgMTQuMjggOC42NSAyMC44OWwtMy42NyAzLjY3Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMy42Ny0zLjY3YzYuNjEgMy41NyAxMy41NyA2LjQ1IDIwLjkgOC42NXY1LjJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTUuMmM3LjMzLTIuMiAxNC4yOC01LjA3IDIwLjktOC42NWwzLjY3IDMuNjdjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0zLjY3LTMuNjdhMTEwLjg1IDExMC44NSAwIDAgMCA4LjY1LTIwLjg5aDUuMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjLS4wMi04Ljg0LTcuMTgtMTYtMTYuMDItMTZ6bS0xMTIgODBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bS0yMDgtODBoLTUuMmMtMi4yLTcuMzMtNS4wNy0xNC4yOC04LjY1LTIwLjg5bDMuNjctMy42N2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgMTkyIDI3Ny4yVjI3MmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djUuMmMtNy4zMyAyLjItMTQuMjggNS4wNy0yMC44OSA4LjY1bC0zLjY3LTMuNjdjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMNTguMTggMzA0LjhjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMy42NyAzLjY3YTExMC44NSAxMTAuODUgMCAwIDAtOC42NSAyMC44OUg0OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNS4yYzIuMiA3LjMzIDUuMDcgMTQuMjggOC42NSAyMC44OWwtMy42NyAzLjY3Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMy42Ny0zLjY3YzYuNjEgMy41NyAxMy41NyA2LjQ1IDIwLjkgOC42NXY1LjJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTUuMmM3LjMzLTIuMiAxNC4yOC01LjA3IDIwLjktOC42NWwzLjY3IDMuNjdjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0zLjY3LTMuNjdhMTEwLjg1IDExMC44NSAwIDAgMCA4LjY1LTIwLjg5aDUuMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJDMjg4IDM1OS4xNiAyODAuODQgMzUyIDI3MiAzNTJ6bS0xMTIgODBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6XCJdXG59O1xudmFyIGZhVHJ1Y2tNb3ZpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stbW92aW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGRmXCIsIFwiTTYyMS4zIDIzNy4zbC01OC41LTU4LjVjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdINDgwVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2MzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwIDI2LjMgMCA0OS40LTEyLjkgNjQtMzIuNCAxNC42IDE5LjYgMzcuNyAzMi40IDY0IDMyLjQgNDQuMiAwIDgwLTM1LjggODAtODAgMC01LjUtLjYtMTAuOC0xLjYtMTZoMTYzLjJjLTEuMSA1LjItMS42IDEwLjUtMS42IDE2IDAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC01LjUtLjYtMTAuOC0xLjYtMTZINjI0YzguOCAwIDE2LTcuMiAxNi0xNnYtODUuNWMwLTE3LTYuNy0zMy4yLTE4LjctNDUuMnpNODAgNDMyYy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnptMTI4IDBjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzIgMzIgMTQuNCAzMiAzMi0xNC40IDMyLTMyIDMyem0yNzItMjI0aDM3LjVjNC4zIDAgOC4zIDEuNyAxMS4zIDQuN2w0My4zIDQzLjNINDgwdi00OHptNDggMjI0Yy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFUcnVja1BpY2t1cCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1waWNrdXAnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2M2NcIiwgXCJNNjI0IDI4OGgtMTZ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTQ4TDQxOS4yMiA1Ni4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAzMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4SDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OS42MWMtLjc2IDUuMjctMS42MSAxMC41Mi0xLjYxIDE2IDAgNjEuODYgNTAuMTQgMTEyIDExMiAxMTJzMTEyLTUwLjE0IDExMi0xMTJjMC01LjQ4LS44NS0xMC43My0xLjYxLTE2aDY3LjIzYy0uNzYgNS4yNy0xLjYxIDEwLjUyLTEuNjEgMTYgMCA2MS44NiA1MC4xNCAxMTIgMTEyIDExMnMxMTItNTAuMTQgMTEyLTExMmMwLTUuNDgtLjg1LTEwLjczLTEuNjEtMTZINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMjg4IDk2aDgxLjI0bDc2LjggOTZIMjg4Vjk2ek0xNzYgNDE2Yy0yNi40NyAwLTQ4LTIxLjUzLTQ4LTQ4czIxLjUzLTQ4IDQ4LTQ4IDQ4IDIxLjUzIDQ4IDQ4LTIxLjUzIDQ4LTQ4IDQ4em0yODggMGMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFUc2hpcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHNoaXJ0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTUzXCIsIFwiTTYzMS4yIDk2LjVMNDM2LjUgMEM0MTYuNCAyNy44IDM3MS45IDQ3LjIgMzIwIDQ3LjJTMjIzLjYgMjcuOCAyMDMuNSAwTDguOCA5Ni41Yy03LjkgNC0xMS4xIDEzLjYtNy4yIDIxLjVsNTcuMiAxMTQuNWM0IDcuOSAxMy42IDExLjEgMjEuNSA3LjJsNTYuNi0yNy43YzEwLjYtNS4yIDIzIDIuNSAyMyAxNC40VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI2LjNjMC0xMS44IDEyLjQtMTkuNiAyMy0xNC40bDU2LjYgMjcuN2M3LjkgNCAxNy41LjggMjEuNS03LjJMNjM4LjMgMTE4YzQtNy45LjgtMTcuNi03LjEtMjEuNXpcIl1cbn07XG52YXIgZmFUdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHR5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWU0XCIsIFwiTTUuMzcgMTAzLjgyMmMxMzguNTMyLTEzOC41MzIgMzYyLjkzNi0xMzguMzI2IDUwMS4yNjIgMCA2LjA3OCA2LjA3OCA3LjA3NCAxNS40OTYgMi41ODMgMjIuNjgxbC00My4yMTQgNjkuMTM4YTE4LjMzMiAxOC4zMzIgMCAwIDEtMjIuMzU2IDcuMzA1bC04Ni40MjItMzQuNTY5YTE4LjMzNSAxOC4zMzUgMCAwIDEtMTEuNDM0LTE4Ljg0NkwzNTEuNzQxIDkwYy02Mi4xNDUtMjIuNDU0LTEzMC42MzYtMjEuOTg2LTE5MS40ODMgMGw1Ljk1MyA1OS41MzJhMTguMzMxIDE4LjMzMSAwIDAgMS0xMS40MzQgMTguODQ2bC04Ni40MjMgMzQuNTY4YTE4LjMzNCAxOC4zMzQgMCAwIDEtMjIuMzU2LTcuMzA1TDIuNzg3IDEyNi41MDJhMTguMzMzIDE4LjMzMyAwIDAgMSAyLjU4My0yMi42OHpNOTYgMzA4di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDQ0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDk2di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDkyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNOTYgNTAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDQ0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMjg4IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjMyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIl1cbn07XG52YXIgZmFUdiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0dicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI2Y1wiLCBcIk01OTIgMEg0OEE0OCA0OCAwIDAgMCAwIDQ4djMyMGE0OCA0OCAwIDAgMCA0OCA0OGgyNDB2MzJIMTEyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMzUydi0zMmgyNDBhNDggNDggMCAwIDAgNDgtNDhWNDhhNDggNDggMCAwIDAtNDgtNDh6bS0xNiAzNTJINjRWNjRoNTEyelwiXVxufTtcbnZhciBmYVVtYnJlbGxhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VtYnJlbGxhJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMGU5XCIsIFwiTTU3NS43IDI4MC44QzU0Ny4xIDE0NC41IDQzNy4zIDYyLjYgMzIwIDQ5LjlWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2MTcuOUMxMzguMyA2Mi42IDI5LjUgMTQ0LjUuMyAyODAuOGMtMi4yIDEwLjEgOC41IDIxLjMgMTguNyAxMS40IDUyLTU1IDEwNy43LTUyLjQgMTU4LjYgMzcgNS4zIDkuNSAxNC45IDguNiAxOS43IDAgMjAuMi0zNS40IDQ0LjktNzMuMiA5MC43LTczLjIgNTguNSAwIDg4LjIgNjguOCA5MC43IDczLjIgNC44IDguNiAxNC40IDkuNSAxOS43IDAgNTEtODkuNSAxMDcuMS05MS40IDE1OC42LTM3IDEwLjMgMTAgMjAuOS0xLjMgMTguNy0xMS40ek0yNTYgMzAxLjdWNDMyYzAgOC44LTcuMiAxNi0xNiAxNi03LjggMC0xMy4yLTUuMy0xNS4xLTEwLjctNS45LTE2LjctMjQuMS0yNS40LTQwLjgtMTkuNS0xNi43IDUuOS0yNS40IDI0LjItMTkuNSA0MC44IDExLjIgMzEuOSA0MS42IDUzLjMgNzUuNCA1My4zIDQ0LjEgMCA4MC0zNS45IDgwLTgwVjMwMS42Yy05LjEtNy45LTE5LjgtMTMuNi0zMi0xMy42LTEyLjMuMS0yMi40IDQuOC0zMiAxMy43elwiXVxufTtcbnZhciBmYVVtYnJlbGxhQmVhY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndW1icmVsbGEtYmVhY2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1Y2FcIiwgXCJNMTE1LjM4IDEzNi45bDEwMi4xMSAzNy4xOGMzNS4xOS04MS41NCA4Ni4yMS0xNDQuMjkgMTM5LTE3My43LTk1Ljg4LTQuODktMTg4Ljc4IDM2Ljk2LTI0OC41MyAxMTEuOC02LjY5IDguNC0yLjY2IDIxLjA1IDcuNDIgMjQuNzJ6bTEzMi4yNSA0OC4xNmwyMzguNDggODYuODNjMzUuNzYtMTIxLjM4IDE4LjctMjMxLjY2LTQyLjYzLTI1My45OC03LjQtMi43LTE1LjEzLTQtMjMuMDktNC01OC4wMi4wMS0xMjguMjcgNjkuMTctMTcyLjc2IDE3MS4xNXpNNTIxLjQ4IDYwLjVjNi4yMiAxNi4zIDEwLjgzIDM0LjYgMTMuMiA1NS4xOSA1Ljc0IDQ5Ljg5LTEuNDIgMTA4LjIzLTE4Ljk1IDE2Ni45OGwxMDIuNjIgMzcuMzZjMTAuMDkgMy42NyAyMS4zMS0zLjQzIDIxLjU3LTE0LjE3IDIuMzItOTUuNjktNDEuOTEtMTg3LjQ0LTExOC40NC0yNDUuMzZ6TTU2MCA0NDcuOThIMzIxLjA2TDM4NiAyNjkuNWwtNjAuMTQtMjEuOS03Mi45IDIwMC4zN0gxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTYuMDF2MzIuMDFDMCA1MDQuODMgNy4xNiA1MTIgMTYgNTEyaDU0NGM4Ljg0IDAgMTYtNy4xNyAxNi0xNi4wMXYtMzIuMDFjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhVW5kZXJsaW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VuZGVybGluZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjZFwiLCBcIk0zMiA2NGgzMnYxNjBjMCA4OC4yMiA3MS43OCAxNjAgMTYwIDE2MHMxNjAtNzEuNzggMTYwLTE2MFY2NGgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNmExNiAxNiAwIDAgMC0xNi0xNkgyNzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJ2MTYwYTgwIDgwIDAgMCAxLTE2MCAwVjY0aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2YTE2IDE2IDAgMCAwLTE2LTE2SDMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em00MDAgMzg0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhVW5kbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bmRvJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGUyXCIsIFwiTTIxMi4zMzMgMjI0LjMzM0gxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMlYxMkMwIDUuMzczIDUuMzczIDAgMTIgMGg0OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjc4LjExMkMxMTcuNzczIDM5LjI3OSAxODQuMjYgNy40NyAyNTguMTc1IDguMDA3YzEzNi45MDYuOTk0IDI0Ni40NDggMTExLjYyMyAyNDYuMTU3IDI0OC41MzJDNTA0LjA0MSAzOTMuMjU4IDM5My4xMiA1MDQgMjU2LjMzMyA1MDRjLTY0LjA4OSAwLTEyMi40OTYtMjQuMzEzLTE2Ni41MS02NC4yMTUtNS4wOTktNC42MjItNS4zMzQtMTIuNTU0LS40NjctMTcuNDJsMzMuOTY3LTMzLjk2N2M0LjQ3NC00LjQ3NCAxMS42NjItNC43MTcgMTYuNDAxLS41MjVDMTcwLjc2IDQxNS4zMzYgMjExLjU4IDQzMiAyNTYuMzMzIDQzMmM5Ny4yNjggMCAxNzYtNzguNzE2IDE3Ni0xNzYgMC05Ny4yNjctNzguNzE2LTE3Ni0xNzYtMTc2LTU4LjQ5NiAwLTExMC4yOCAyOC40NzYtMTQyLjI3NCA3Mi4zMzNoOTguMjc0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpcIl1cbn07XG52YXIgZmFVbmRvQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VuZG8tYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmVhXCIsIFwiTTI1NS41NDUgOGMtNjYuMjY5LjExOS0xMjYuNDM4IDI2LjIzMy0xNzAuODYgNjguNjg1TDQ4Ljk3MSA0MC45NzFDMzMuODUxIDI1Ljg1MSA4IDM2LjU1OSA4IDU3Ljk0MVYxOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEzNC4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTQxLjc1LTQxLjc1YzMwLjg2NC0yOC44OTkgNzAuODAxLTQ0LjkwNyAxMTMuMjMtNDUuMjczIDkyLjM5OC0uNzk4IDE3MC4yODMgNzMuOTc3IDE2OS40ODQgMTY5LjQ0MkM0MjMuMjM2IDM0OC4wMDkgMzQ5LjgxNiA0MjQgMjU2IDQyNGMtNDEuMTI3IDAtNzkuOTk3LTE0LjY3OC0xMTAuNjMtNDEuNTU2LTQuNzQzLTQuMTYxLTExLjkwNi0zLjkwOC0xNi4zNjguNTUzTDg5LjM0IDQyMi42NTljLTQuODcyIDQuODcyLTQuNjMxIDEyLjgxNS40ODIgMTcuNDMzQzEzMy43OTggNDc5LjgxMyAxOTIuMDc0IDUwNCAyNTYgNTA0YzEzNi45NjYgMCAyNDcuOTk5LTExMS4wMzMgMjQ4LTI0Ny45OThDNTA0LjAwMSAxMTkuMTkzIDM5Mi4zNTQgNy43NTUgMjU1LjU0NSA4elwiXVxufTtcbnZhciBmYVVuaXZlcnNhbEFjY2VzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bml2ZXJzYWwtYWNjZXNzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjlhXCIsIFwiTTI1NiA0OGMxMTQuOTUzIDAgMjA4IDkzLjAyOSAyMDggMjA4IDAgMTE0Ljk1My05My4wMjkgMjA4LTIwOCAyMDgtMTE0Ljk1MyAwLTIwOC05My4wMjktMjA4LTIwOCAwLTExNC45NTMgOTMuMDI5LTIwOCAyMDgtMjA4bTAtNDBDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDU2QzE0OS45NjEgNjQgNjQgMTQ5Ljk2MSA2NCAyNTZzODUuOTYxIDE5MiAxOTIgMTkyIDE5Mi04NS45NjEgMTkyLTE5MlMzNjIuMDM5IDY0IDI1NiA2NHptMCA0NGMxOS44ODIgMCAzNiAxNi4xMTggMzYgMzZzLTE2LjExOCAzNi0zNiAzNi0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2em0xMTcuNzQxIDk4LjAyM2MtMjguNzEyIDYuNzc5LTU1LjUxMSAxMi43NDgtODIuMTQgMTUuODA3Ljg1MSAxMDEuMDIzIDEyLjMwNiAxMjMuMDUyIDI1LjAzNyAxNTUuNjIxIDMuNjE3IDkuMjYtLjk1NyAxOS42OTgtMTAuMjE3IDIzLjMxNS05LjI2MSAzLjYxNy0xOS42OTktLjk1Ny0yMy4zMTYtMTAuMjE3LTguNzA1LTIyLjMwOC0xNy4wODYtNDAuNjM2LTIyLjI2MS03OC41NDloLTkuNjg2Yy01LjE2NyAzNy44NTEtMTMuNTM0IDU2LjIwOC0yMi4yNjIgNzguNTQ5LTMuNjE1IDkuMjU1LTE0LjA1IDEzLjgzNi0yMy4zMTUgMTAuMjE3LTkuMjYtMy42MTctMTMuODM0LTE0LjA1Ni0xMC4yMTctMjMuMzE1IDEyLjcxMy0zMi41NDEgMjQuMTg1LTU0LjU0MSAyNS4wMzctMTU1LjYyMS0yNi42MjktMy4wNTgtNTMuNDI4LTkuMDI3LTgyLjE0MS0xNS44MDctOC42LTIuMDMxLTEzLjkyNi0xMC42NDgtMTEuODk1LTE5LjI0OXMxMC42NDctMTMuOTI2IDE5LjI0OS0xMS44OTVjOTYuNjg2IDIyLjgyOSAxMjQuMjgzIDIyLjc4MyAyMjAuNzc1IDAgOC41OTktMi4wMyAxNy4yMTggMy4yOTQgMTkuMjQ5IDExLjg5NSAyLjAyOSA4LjYwMS0zLjI5NyAxNy4yMTktMTEuODk3IDE5LjI0OXpcIl1cbn07XG52YXIgZmFVbml2ZXJzaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VuaXZlcnNpdHknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxOWNcIiwgXCJNNDk2IDEyOHYxNmE4IDggMCAwIDEtOCA4aC0yNHYxMmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDYwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0xMkgyNGE4IDggMCAwIDEtOC04di0xNmE4IDggMCAwIDEgNC45NDEtNy4zOTJsMjMyLTg4YTcuOTk2IDcuOTk2IDAgMCAxIDYuMTE4IDBsMjMyIDg4QTggOCAwIDAgMSA0OTYgMTI4em0tMjQgMzA0SDQwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTZhOCA4IDAgMCAwIDggOGg0NjRhOCA4IDAgMCAwIDgtOHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek05NiAxOTJ2MTkySDYwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwaDQxNnYtMjBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMzZWMTkyaC02NHYxOTJoLTY0VjE5MmgtNjR2MTkyaC02NFYxOTJIOTZ6XCJdXG59O1xudmFyIGZhVW5saW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VubGluaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEyN1wiLCBcIk0zMDQuMDgzIDQwNS45MDdjNC42ODYgNC42ODYgNC42ODYgMTIuMjg0IDAgMTYuOTcxbC00NC42NzQgNDQuNjc0Yy01OS4yNjMgNTkuMjYyLTE1NS42OTMgNTkuMjY2LTIxNC45NjEgMC01OS4yNjQtNTkuMjY1LTU5LjI2NC0xNTUuNjk2IDAtMjE0Ljk2bDQ0LjY3NS00NC42NzVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwbDM5LjU5OCAzOS41OThjNC42ODYgNC42ODYgNC42ODYgMTIuMjg0IDAgMTYuOTcxbC00NC42NzUgNDQuNjc0Yy0yOC4wNzIgMjguMDczLTI4LjA3MiA3My43NSAwIDEwMS44MjMgMjguMDcyIDI4LjA3MiA3My43NSAyOC4wNzMgMTAxLjgyNCAwbDQ0LjY3NC00NC42NzRjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwbDM5LjU5NyAzOS41OTh6bS01Ni41NjgtMjYwLjIxNmM0LjY4NiA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBsNDQuNjc0LTQ0LjY3NGMyOC4wNzItMjguMDc1IDczLjc1LTI4LjA3MyAxMDEuODI0IDAgMjguMDcyIDI4LjA3MyAyOC4wNzIgNzMuNzUgMCAxMDEuODIzbC00NC42NzUgNDQuNjc0Yy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMzkuNTk4IDM5LjU5OGM0LjY4NiA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBsNDQuNjc1LTQ0LjY3NWM1OS4yNjUtNTkuMjY1IDU5LjI2NS0xNTUuNjk1IDAtMjE0Ljk2LTU5LjI2Ni01OS4yNjQtMTU1LjY5NS01OS4yNjQtMjE0Ljk2MSAwbC00NC42NzQgNDQuNjc0Yy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMzkuNTk3IDM5LjU5OHptMjM0LjgyOCAzNTkuMjhsMjIuNjI3LTIyLjYyN2M5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMNjMuNTk4IDcuMDI5Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBMNy4wMjkgMjkuNjU3Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsNDQxLjM3MyA0NDEuMzczYzkuMzczIDkuMzcyIDI0LjU2OSA5LjM3MiAzMy45NDEgMHpcIl1cbn07XG52YXIgZmFVbmxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndW5sb2NrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDljXCIsIFwiTTQwMCAyNTZIMTUyVjE1Mi45YzAtMzkuNiAzMS43LTcyLjUgNzEuMy03Mi45IDQwLS40IDcyLjcgMzIuMSA3Mi43IDcydjE2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNkMzNzYgNjggMzA3LjUtLjMgMjIzLjUgMCAxMzkuNS4zIDcyIDY5LjUgNzIgMTUzLjVWMjU2SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxNjBjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFVbmxvY2tBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndW5sb2NrLWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjEzZVwiLCBcIk00MDAgMjU2SDE1MlYxNTIuOWMwLTM5LjYgMzEuNy03Mi41IDcxLjMtNzIuOSA0MC0uNCA3Mi43IDMyLjEgNzIuNyA3MnYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZDMzc2IDY4IDMwNy41LS4zIDIyMy41IDAgMTM5LjUuMyA3MiA2OS41IDcyIDE1My41VjI1Nkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTYwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI2NCA0MDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBzLTQwLTE3LjktNDAtNDB2LTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2NDh6XCJdXG59O1xudmFyIGZhVXBsb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VwbG9hZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA5M1wiLCBcIk0yOTYgMzg0aC04MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTkyaC04Ny43Yy0xNy44IDAtMjYuNy0yMS41LTE0LjEtMzQuMUwyNDIuMyA1LjdjNy41LTcuNSAxOS44LTcuNSAyNy4zIDBsMTUyLjIgMTUyLjJjMTIuNiAxMi42IDMuNyAzNC4xLTE0LjEgMzQuMUgzMjB2MTY4YzAgMTMuMy0xMC43IDI0LTI0IDI0em0yMTYtOHYxMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxMzZ2OGMwIDMwLjkgMjUuMSA1NiA1NiA1Nmg4MGMzMC45IDAgNTYtMjUuMSA1Ni01NnYtOGgxMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjR6bS0xMjQgODhjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHptNjQgMGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjAgOSAyMCAyMCAyMCAyMC05IDIwLTIwelwiXVxufTtcbnZhciBmYVVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAwN1wiLCBcIk0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHptODkuNiAzMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTc0LjItNjAuMi0xMzQuNC0xMzQuNC0xMzQuNHpcIl1cbn07XG52YXIgZmFVc2VyQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDA2XCIsIFwiTTI1NiAyODhjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRTMzM1LjUgMCAyNTYgMCAxMTIgNjQuNSAxMTIgMTQ0czY0LjUgMTQ0IDE0NCAxNDR6bTEyOCAzMmgtNTUuMWMtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNkgxMjhDNTcuMyAzMjAgMCAzNzcuMyAwIDQ0OHYxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTE2YzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4elwiXVxufTtcbnZhciBmYVVzZXJBbHRTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWFsdC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRmYVwiLCBcIk02MzMuOCA0NTguMUwzODkuNiAyNjkuM0M0MzMuOCAyNDQuNyA0NjQgMTk4LjEgNDY0IDE0NCA0NjQgNjQuNSAzOTkuNSAwIDMyMCAwYy02Ny4xIDAtMTIzIDQ2LjEtMTM5IDEwOC4yTDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pNMTk4LjQgMzIwQzEyNC4yIDMyMCA2NCAzODAuMiA2NCA0NTQuNHY5LjZjMCAyNi41IDIxLjUgNDggNDggNDhoMzgyLjJMMjQ1LjggMzIwaC00Ny40elwiXVxufTtcbnZhciBmYVVzZXJBc3Ryb25hdXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1hc3Ryb25hdXQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY0ZmJcIiwgXCJNNjQgMjI0aDEzLjVjMjQuNyA1Ni41IDgwLjkgOTYgMTQ2LjUgOTZzMTIxLjgtMzkuNSAxNDYuNS05NkgzODRjOC44IDAgMTYtNy4yIDE2LTE2di05NmMwLTguOC03LjItMTYtMTYtMTZoLTEzLjVDMzQ1LjggMzkuNSAyODkuNiAwIDIyNCAwUzEwMi4yIDM5LjUgNzcuNSA5Nkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnptNDAtODhjMC0yMi4xIDIxLjUtNDAgNDgtNDBoMTQ0YzI2LjUgMCA0OCAxNy45IDQ4IDQwdjI0YzAgNTMtNDMgOTYtOTYgOTZoLTQ4Yy01MyAwLTk2LTQzLTk2LTk2di0yNHptNzIgNzJsMTItMzYgMzYtMTItMzYtMTItMTItMzYtMTIgMzYtMzYgMTIgMzYgMTIgMTIgMzZ6bTE1MS42IDExMy40QzI5Ny43IDM0MC43IDI2Mi4yIDM1MiAyMjQgMzUycy03My43LTExLjMtMTAzLjYtMzAuNkM1Mi45IDMyOC41IDAgMzg1IDAgNDU0LjR2OS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwdi02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgxMjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTkuNmMwLTY5LjQtNTIuOS0xMjUuOS0xMjAuNC0xMzN6TTI3MiA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGgzMnYtNDhjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYVVzZXJDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGZjXCIsIFwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40em0zMjMtMTI4LjRsLTI3LjgtMjguMWMtNC42LTQuNy0xMi4xLTQuNy0xNi44LS4xbC0xMDQuOCAxMDQtNDUuNS00NS44Yy00LjYtNC43LTEyLjEtNC43LTE2LjgtLjFsLTI4LjEgMjcuOWMtNC43IDQuNi00LjcgMTIuMS0uMSAxNi44bDgxLjcgODIuM2M0LjYgNC43IDEyLjEgNC43IDE2LjguMWwxNDEuMy0xNDAuMmM0LjYtNC43IDQuNy0xMi4yLjEtMTYuOHpcIl1cbn07XG52YXIgZmFVc2VyQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItY2lyY2xlJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmMmJkXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgOTZjNDguNiAwIDg4IDM5LjQgODggODhzLTM5LjQgODgtODggODgtODgtMzkuNC04OC04OCAzOS40LTg4IDg4LTg4em0wIDM0NGMtNTguNyAwLTExMS4zLTI2LjYtMTQ2LjUtNjguMiAxOC44LTM1LjQgNTUuNi01OS44IDk4LjUtNTkuOCAyLjQgMCA0LjguNCA3LjEgMS4xIDEzIDQuMiAyNi42IDYuOSA0MC45IDYuOSAxNC4zIDAgMjgtMi43IDQwLjktNi45IDIuMy0uNyA0LjctMS4xIDcuMS0xLjEgNDIuOSAwIDc5LjcgMjQuNCA5OC41IDU5LjhDMzU5LjMgNDIxLjQgMzA2LjcgNDQ4IDI0OCA0NDh6XCJdXG59O1xudmFyIGZhVXNlckNsb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItY2xvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZmRcIiwgXCJNNDk2IDIyNGMtNzkuNiAwLTE0NCA2NC40LTE0NCAxNDRzNjQuNCAxNDQgMTQ0IDE0NCAxNDQtNjQuNCAxNDQtMTQ0LTY0LjQtMTQ0LTE0NC0xNDR6bTY0IDE1MC4zYzAgNS4zLTQuNCA5LjctOS43IDkuN2gtNjAuNmMtNS4zIDAtOS43LTQuNC05LjctOS43di03Ni42YzAtNS4zIDQuNC05LjcgOS43LTkuN2gxMi42YzUuMyAwIDkuNyA0LjQgOS43IDkuN1YzNTJoMzguM2M1LjMgMCA5LjcgNC40IDkuNyA5Ljd2MTIuNnpNMzIwIDM2OGMwLTI3LjggNi43LTU0LjEgMTguMi03Ny41LTgtMS41LTE2LjItMi41LTI0LjYtMi41aC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzQ3LjFjLTQ1LjMtMzEuOS03NS4xLTg0LjUtNzUuMS0xNDR6bS05Ni0xMTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4elwiXVxufTtcbnZhciBmYVVzZXJDb2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1jb2cnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZmVcIiwgXCJNNjEwLjUgMzczLjNjMi42LTE0LjEgMi42LTI4LjUgMC00Mi42bDI1LjgtMTQuOWMzLTEuNyA0LjMtNS4yIDMuMy04LjUtNi43LTIxLjYtMTguMi00MS4yLTMzLjItNTcuNC0yLjMtMi41LTYtMy4xLTktMS40bC0yNS44IDE0LjljLTEwLjktOS4zLTIzLjQtMTYuNS0zNi45LTIxLjN2LTI5LjhjMC0zLjQtMi40LTYuNC01LjctNy4xLTIyLjMtNS00NS00LjgtNjYuMiAwLTMuMy43LTUuNyAzLjctNS43IDcuMXYyOS44Yy0xMy41IDQuOC0yNiAxMi0zNi45IDIxLjNsLTI1LjgtMTQuOWMtMi45LTEuNy02LjctMS4xLTkgMS40LTE1IDE2LjItMjYuNSAzNS44LTMzLjIgNTcuNC0xIDMuMy40IDYuOCAzLjMgOC41bDI1LjggMTQuOWMtMi42IDE0LjEtMi42IDI4LjUgMCA0Mi42bC0yNS44IDE0LjljLTMgMS43LTQuMyA1LjItMy4zIDguNSA2LjcgMjEuNiAxOC4yIDQxLjEgMzMuMiA1Ny40IDIuMyAyLjUgNiAzLjEgOSAxLjRsMjUuOC0xNC45YzEwLjkgOS4zIDIzLjQgMTYuNSAzNi45IDIxLjN2MjkuOGMwIDMuNCAyLjQgNi40IDUuNyA3LjEgMjIuMyA1IDQ1IDQuOCA2Ni4yIDAgMy4zLS43IDUuNy0zLjcgNS43LTcuMXYtMjkuOGMxMy41LTQuOCAyNi0xMiAzNi45LTIxLjNsMjUuOCAxNC45YzIuOSAxLjcgNi43IDEuMSA5LTEuNCAxNS0xNi4yIDI2LjUtMzUuOCAzMy4yLTU3LjQgMS0zLjMtLjQtNi44LTMuMy04LjVsLTI1LjgtMTQuOXpNNDk2IDQwMC41Yy0yNi44IDAtNDguNS0yMS44LTQ4LjUtNDguNXMyMS44LTQ4LjUgNDguNS00OC41IDQ4LjUgMjEuOCA0OC41IDQ4LjUtMjEuNyA0OC41LTQ4LjUgNDguNXpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTIwMS4yIDIyNi41Yy0yLjMtMS4yLTQuNi0yLjYtNi44LTMuOWwtNy45IDQuNmMtNiAzLjQtMTIuOCA1LjMtMTkuNiA1LjMtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi01LjUtMTcuNyAxLjktMzYuNCAxNy45LTQ1LjdsNy45LTQuNmMtLjEtMi42LS4xLTUuMiAwLTcuOGwtNy45LTQuNmMtMTYtOS4yLTIzLjQtMjgtMTcuOS00NS43LjktMi45IDIuMi01LjggMy4yLTguNy0zLjgtLjMtNy41LTEuMi0xMS40LTEuMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMxMC4xIDAgMTkuNS0zLjIgMjcuMi04LjUtMS4yLTMuOC0yLTcuNy0yLTExLjh2LTkuMnpcIl1cbn07XG52YXIgZmFVc2VyRWRpdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWVkaXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZmZcIiwgXCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNzQuOWMtMi40LTYuOC0zLjQtMTQtMi42LTIxLjNsNi44LTYwLjkgMS4yLTExLjEgNy45LTcuOSA3Ny4zLTc3LjNjLTI0LjUtMjcuNy02MC00NS41LTk5LjktNDUuNXptNDUuMyAxNDUuM2wtNi44IDYxYy0xLjEgMTAuMiA3LjUgMTguOCAxNy42IDE3LjZsNjAuOS02LjggMTM3LjktMTM3LjktNzEuNy03MS43LTEzNy45IDEzNy44ek02MzMgMjY4LjlMNTk1LjEgMjMxYy05LjMtOS4zLTI0LjUtOS4zLTMzLjggMGwtMzcuOCAzNy44LTQuMSA0LjEgNzEuOCA3MS43IDQxLjgtNDEuOGM5LjMtOS40IDkuMy0yNC41IDAtMzMuOXpcIl1cbn07XG52YXIgZmFVc2VyRnJpZW5kcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWZyaWVuZHMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDBcIiwgXCJNMTkyIDI1NmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlMyNTMuOSAzMiAxOTIgMzIgODAgODIuMSA4MCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0M1MS42IDI4OCAwIDMzOS42IDAgNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjguOGMwLTYzLjYtNTEuNi0xMTUuMi0xMTUuMi0xMTUuMnpNNDgwIDI1NmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05Ni05NiA0My05NiA5NiA0MyA5NiA5NiA5NnptNDggMzJoLTMuOGMtMTMuOSA0LjgtMjguNiA4LTQ0LjIgOHMtMzAuMy0zLjItNDQuMi04SDQzMmMtMjAuNCAwLTM5LjIgNS45LTU1LjcgMTUuNCAyNC40IDI2LjMgMzkuNyA2MS4yIDM5LjcgOTkuOHYzOC40YzAgMi4yLS41IDQuMy0uNiA2LjRINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4IDAtNjEuOS01MC4xLTExMi0xMTItMTEyelwiXVxufTtcbnZhciBmYVVzZXJHcmFkdWF0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWdyYWR1YXRlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTAxXCIsIFwiTTMxOS40IDMyMC42TDIyNCA0MTZsLTk1LjQtOTUuNEM1Ny4xIDMyMy43IDAgMzgyLjIgMCA0NTQuNHY5LjZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di05LjZjMC03Mi4yLTU3LjEtMTMwLjctMTI4LjYtMTMzLjh6TTEzLjYgNzkuOGw2LjQgMS41djU4LjRjLTcgNC4yLTEyIDExLjUtMTIgMjAuMyAwIDguNCA0LjYgMTUuNCAxMS4xIDE5LjdMMy41IDI0MmMtMS43IDYuOSAyLjEgMTQgNy42IDE0aDQxLjhjNS41IDAgOS4zLTcuMSA3LjYtMTRsLTE1LjYtNjIuM0M1MS40IDE3NS40IDU2IDE2OC40IDU2IDE2MGMwLTguOC01LTE2LjEtMTItMjAuM1Y4Ny4xbDY2IDE1LjljLTguNiAxNy4yLTE0IDM2LjQtMTQgNTcgMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhzMTI4LTU3LjMgMTI4LTEyOGMwLTIwLjYtNS4zLTM5LjgtMTQtNTdsOTYuMy0yMy4yYzE4LjItNC40IDE4LjItMjcuMSAwLTMxLjVsLTE5MC40LTQ2Yy0xMy0zLjEtMjYuNy0zLjEtMzkuNyAwTDEzLjYgNDguMmMtMTguMSA0LjQtMTguMSAyNy4yIDAgMzEuNnpcIl1cbn07XG52YXIgZmFVc2VySW5qdXJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWluanVyZWQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY3MjhcIiwgXCJNMjc3LjM3IDExLjk4QzI2MS4wOCA0LjQ3IDI0My4xMSAwIDIyNCAwYy01My42OSAwLTk5LjUgMzMuMTMtMTE4LjUxIDgwaDgxLjE5bDkwLjY5LTY4LjAyek0zNDIuNTEgODBjLTcuOS0xOS40Ny0yMC42Ny0zNi4yLTM2LjQ5LTQ5LjUyTDIzOS45OSA4MGgxMDIuNTJ6TTIyNCAyNTZjNzAuNjkgMCAxMjgtNTcuMzEgMTI4LTEyOCAwLTUuNDgtLjk1LTEwLjctMS42MS0xNkg5Ny42MWMtLjY3IDUuMy0xLjYxIDEwLjUyLTEuNjEgMTYgMCA3MC42OSA1Ny4zMSAxMjggMTI4IDEyOHpNODAgMjk5LjdWNTEyaDEyOC4yNmwtOTguNDUtMjIxLjUyQTEzMi44MzUgMTMyLjgzNSAwIDAgMCA4MCAyOTkuN3pNMCA0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OFYzMjAuMjRDMTguODggMzQ0Ljg5IDAgMzgxLjI2IDAgNDIyLjRWNDY0em0yNTYtNDhoLTU1LjM4bDQyLjY3IDk2SDI1NmMyNi40NyAwIDQ4LTIxLjUzIDQ4LTQ4cy0yMS41My00OC00OC00OHptNTcuNi0xMjhoLTE2LjcxYy0yMi4yNCAxMC4xOC00Ni44OCAxNi03Mi44OSAxNnMtNTAuNjUtNS44Mi03Mi44OS0xNmgtNy4zN2w0Mi42NyA5NkgyNTZjNDQuMTEgMCA4MCAzNS44OSA4MCA4MCAwIDE4LjA4LTYuMjYgMzQuNTktMTYuNDEgNDhINDAwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQxLjZjMC03NC4yMy02MC4xNy0xMzQuNC0xMzQuNC0xMzQuNHpcIl1cbn07XG52YXIgZmFVc2VyTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDJcIiwgXCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDk2IDEyOGExMjggMTI4IDAgMCAwIDEyOCAxMjh6bTk2IDY0YTYzLjA4IDYzLjA4IDAgMCAxIDguMS0zMC41Yy00LjgtLjUtOS41LTEuNS0xNC41LTEuNWgtMTYuN2ExNzQuMDggMTc0LjA4IDAgMCAxLTE0NS44IDBoLTE2LjdBMTM0LjQzIDEzNC40MyAwIDAgMCAwIDQyMi40VjQ2NGE0OCA0OCAwIDAgMCA0OCA0OGgyODAuOWE2My41NCA2My41NCAwIDAgMS04LjktMzJ6bTI4OC0zMmgtMzJ2LTgwYTgwIDgwIDAgMCAwLTE2MCAwdjgwaC0zMmEzMiAzMiAwIDAgMC0zMiAzMnYxNjBhMzIgMzIgMCAwIDAgMzIgMzJoMjI0YTMyIDMyIDAgMCAwIDMyLTMyVjMyMGEzMiAzMiAwIDAgMC0zMi0zMnpNNDk2IDQzMmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMzItMTQ0aC02NHYtODBhMzIgMzIgMCAwIDEgNjQgMHpcIl1cbn07XG52YXIgZmFVc2VyTWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1tZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmMFwiLCBcIk0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHpNMTA0IDQyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjQtMjQgMTAuNy0yNCAyNHptMjE2LTEzNS40djQ5YzM2LjUgNy40IDY0IDM5LjggNjQgNzguNHY0MS43YzAgNy42LTUuNCAxNC4yLTEyLjkgMTUuN2wtMzIuMiA2LjRjLTQuMy45LTguNS0xLjktOS40LTYuM2wtMy4xLTE1LjdjLS45LTQuMyAxLjktOC42IDYuMy05LjRsMTkuMy0zLjlWNDE2YzAtNjIuOC05Ni02NS4xLTk2IDEuOXYyNi43bDE5LjMgMy45YzQuMy45IDcuMSA1LjEgNi4zIDkuNGwtMy4xIDE1LjdjLS45IDQuMy01LjEgNy4xLTkuNCA2LjNsLTMxLjItNC4yYy03LjktMS4xLTEzLjgtNy44LTEzLjgtMTUuOVY0MTZjMC0zOC42IDI3LjUtNzAuOSA2NC03OC40di00NS4yYy0yLjIuNy00LjQgMS4xLTYuNiAxLjktMTggNi4zLTM3LjMgOS44LTU3LjQgOS44cy0zOS40LTMuNS01Ny40LTkuOGMtNy40LTIuNi0xNC45LTQuMi0yMi42LTUuMnY4MS42YzIzLjEgNi45IDQwIDI4LjEgNDAgNTMuNCAwIDMwLjktMjUuMSA1Ni01NiA1NnMtNTYtMjUuMS01Ni01NmMwLTI1LjMgMTYuOS00Ni41IDQwLTUzLjR2LTgwLjRDNDguNSAzMDEgMCAzNTUuOCAwIDQyMi40djQ0LjhDMCA0OTEuOSAyMC4xIDUxMiA0NC44IDUxMmgzNTguNGMyNC43IDAgNDQuOC0yMC4xIDQ0LjgtNDQuOHYtNDQuOGMwLTcyLTU2LjgtMTMwLjMtMTI4LTEzMy44elwiXVxufTtcbnZhciBmYVVzZXJNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLW1pbnVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTAzXCIsIFwiTTYyNCAyMDhINDMyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDE5MmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJdXG59O1xudmFyIGZhVXNlck5pbmphID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItbmluamEnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MDRcIiwgXCJNMzI1LjQgMjg5LjJMMjI0IDM5MC42IDEyMi42IDI4OS4yQzU0IDI5NS4zIDAgMzUyLjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzAuMi01NC0xMjcuMS0xMjIuNi0xMzMuMnpNMzIgMTkyYzI3LjMgMCA1MS44LTExLjUgNjkuMi0yOS43IDE1LjEgNTMuOSA2NCA5My43IDEyMi44IDkzLjcgNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMGMtNTAuNCAwLTkzLjYgMjkuNC0xMTQuNSA3MS44QzkyLjEgNDcuOCA2NCAzMiAzMiAzMmMwIDMzLjQgMTcuMSA2Mi44IDQzLjEgODAtMjYgMTcuMi00My4xIDQ2LjYtNDMuMSA4MHptMTQ0LTk2aDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMySDE0NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFVc2VyTnVyc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1udXJzZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjgyZlwiLCBcIk0zMTkuNDEsMzIwLDIyNCw0MTUuMzksMTI4LjU5LDMyMEM1Ny4xLDMyMy4xLDAsMzgxLjYsMCw0NTMuNzlBNTguMjEsNTguMjEsMCwwLDAsNTguMjEsNTEySDM4OS43OUE1OC4yMSw1OC4yMSwwLDAsMCw0NDgsNDUzLjc5QzQ0OCwzODEuNiwzOTAuOSwzMjMuMSwzMTkuNDEsMzIwWk0yMjQsMzA0QTEyOCwxMjgsMCwwLDAsMzUyLDE3NlY2NS44MmEzMiwzMiwwLDAsMC0yMC43Ni0zMEwyNDYuNDcsNC4wN2E2NCw2NCwwLDAsMC00NC45NCwwTDExNi43NiwzNS44NkEzMiwzMiwwLDAsMCw5Niw2NS44MlYxNzZBMTI4LDEyOCwwLDAsMCwyMjQsMzA0Wk0xODQsNzEuNjdhNSw1LDAsMCwxLDUtNWgyMS42N1Y0NWE1LDUsMCwwLDEsNS01aDE2LjY2YTUsNSwwLDAsMSw1LDVWNjYuNjdIMjU5YTUsNSwwLDAsMSw1LDVWODguMzNhNSw1LDAsMCwxLTUsNUgyMzcuMzNWMTE1YTUsNSwwLDAsMS01LDVIMjE1LjY3YTUsNSwwLDAsMS01LTVWOTMuMzNIMTg5YTUsNSwwLDAsMS01LTVaTTE0NCwxNjBIMzA0djE2YTgwLDgwLDAsMCwxLTE2MCwwWlwiXVxufTtcbnZhciBmYVVzZXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItcGx1cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjIzNFwiLCBcIk02MjQgMjA4aC02NHYtNjRjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0aC02NGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2NHY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di02NGg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJdXG59O1xudmFyIGZhVXNlclNlY3JldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXNlY3JldCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjIxYlwiLCBcIk0zODMuOSAzMDguM2wyMy45LTYyLjZjNC0xMC41LTMuNy0yMS43LTE1LTIxLjdoLTU4LjVjMTEtMTguOSAxNy44LTQwLjYgMTcuOC02NHYtLjNjMzkuMi03LjggNjQtMTkuMSA2NC0zMS43IDAtMTMuMy0yNy4zLTI1LjEtNzAuMS0zMy05LjItMzIuOC0yNy02NS44LTQwLjYtODIuOC05LjUtMTEuOS0yNS45LTE1LjYtMzkuNS04LjhsLTI3LjYgMTMuOGMtOSA0LjUtMTkuNiA0LjUtMjguNiAwTDE4Mi4xIDMuNGMtMTMuNi02LjgtMzAtMy4xLTM5LjUgOC44LTEzLjUgMTctMzEuNCA1MC00MC42IDgyLjgtNDIuNyA3LjktNzAgMTkuNy03MCAzMyAwIDEyLjYgMjQuOCAyMy45IDY0IDMxLjd2LjNjMCAyMy40IDYuOCA0NS4xIDE3LjggNjRINTYuM2MtMTEuNSAwLTE5LjIgMTEuNy0xNC43IDIyLjNsMjUuOCA2MC4yQzI3LjMgMzI5LjggMCAzNzIuNyAwIDQyMi40djQ0LjhDMCA0OTEuOSAyMC4xIDUxMiA0NC44IDUxMmgzNTguNGMyNC43IDAgNDQuOC0yMC4xIDQ0LjgtNDQuOHYtNDQuOGMwLTQ4LjQtMjUuOC05MC40LTY0LjEtMTE0LjF6TTE3NiA0ODBsLTQxLjYtMTkyIDQ5LjYgMzIgMjQgNDAtMzIgMTIwem05NiAwbC0zMi0xMjAgMjQtNDAgNDkuNi0zMkwyNzIgNDgwem00MS43LTI5OC41Yy0zLjkgMTEuOS03IDI0LjYtMTYuNSAzMy40LTEwLjEgOS4zLTQ4IDIyLjQtNjQtMjUtMi44LTguNC0xNS40LTguNC0xOC4zIDAtMTcgNTAuMi01NiAzMi40LTY0IDI1LTkuNS04LjgtMTIuNy0yMS41LTE2LjUtMzMuNC0uOC0yLjUtNi4zLTUuNy02LjMtNS44di0xMC44YzI4LjMgMy42IDYxIDUuOCA5NiA1LjhzNjcuNy0yLjEgOTYtNS44djEwLjhjLS4xLjEtNS42IDMuMi02LjQgNS44elwiXVxufTtcbnZhciBmYVVzZXJTaGllbGQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1zaGllbGQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDVcIiwgXCJNNjIyLjMgMjcxLjFsLTExNS4yLTQ1Yy00LjEtMS42LTEyLjYtMy43LTIyLjIgMGwtMTE1LjIgNDVjLTEwLjcgNC4yLTE3LjcgMTQtMTcuNyAyNC45IDAgMTExLjYgNjguNyAxODguOCAxMzIuOSAyMTMuOSA5LjYgMy43IDE4IDEuNiAyMi4yIDBDNTU4LjQgNDg5LjkgNjQwIDQyMC41IDY0MCAyOTZjMC0xMC45LTctMjAuNy0xNy43LTI0Ljl6TTQ5NiA0NjIuNFYyNzMuM2w5NS41IDM3LjNjLTUuNiA4Ny4xLTYwLjkgMTM1LjQtOTUuNSAxNTEuOHpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTk2IDQwYzAtMi41LjgtNC44IDEuMS03LjItMi41LS4xLTQuOS0uOC03LjUtLjhoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjNi44IDAgMTMuMy0xLjUgMTkuMi00LTU0LTQyLjktOTkuMi0xMTYuNy05OS4yLTIxMnpcIl1cbn07XG52YXIgZmFVc2VyU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUwNlwiLCBcIk02MzMuOCA0NTguMUwzNjIuMyAyNDguM0M0MTIuMSAyMzAuNyA0NDggMTgzLjggNDQ4IDEyOCA0NDggNTcuMyAzOTAuNyAwIDMyMCAwYy02Ny4xIDAtMTIxLjUgNTEuOC0xMjYuOSAxMTcuNEw0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNGw1ODguNCA0NTQuN2M3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNC02LjggNC4xLTE2LjktMi45LTIyLjN6TTk2IDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTAuMkwyMDcuNCAyOTAuM0MxNDQuMiAzMDEuMyA5NiAzNTYgOTYgNDIyLjR6XCJdXG59O1xudmFyIGZhVXNlclRhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXRhZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUwN1wiLCBcIk02MzAuNiAzNjQuOWwtOTAuMy05MC4yYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43aC03OS4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3OS4yYzAgMTcgNi43IDMzLjIgMTguNyA0NS4ybDkwLjMgOTAuMmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Mi41LTkyLjVjMTIuNi0xMi41IDEyLjYtMzIuNy4xLTQ1LjJ6bS0xODIuOC0yMWMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0YzAgMTMuMi0xMC43IDI0LTI0IDI0em0tMjIzLjgtODhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhDMzUyIDU3LjMgMjk0LjcgMCAyMjQgMFM5NiA1Ny4zIDk2IDEyOGMwIDcwLjYgNTcuMyAxMjcuOSAxMjggMTI3Ljl6bTEyNy44IDExMS4yVjI5NGMtMTIuMi0zLjYtMjQuOS02LjItMzguMi02LjJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODcuOSAwIDM0OC4xIDAgNDIyLjN2NDEuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMTUuNSAwIDI5LjEtNy41IDM3LjktMTguOWwtNTgtNThjLTE4LjEtMTguMS0yOC4xLTQyLjItMjguMS02Ny45elwiXVxufTtcbnZhciBmYVVzZXJUaWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci10aWUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MDhcIiwgXCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTk1LjggMzIuNkwyNzIgNDgwbC0zMi0xMzYgMzItNTZoLTk2bDMyIDU2LTMyIDEzNi00Ny44LTE5MS40QzU2LjkgMjkyIDAgMzUwLjMgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzIuMS01Ni45LTEzMC40LTEyOC4yLTEzMy44elwiXVxufTtcbnZhciBmYVVzZXJUaW1lcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXRpbWVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjM1XCIsIFwiTTU4OS42IDI0MGw0NS42LTQ1LjZjNi4zLTYuMyA2LjMtMTYuNSAwLTIyLjhsLTIyLjgtMjIuOGMtNi4zLTYuMy0xNi41LTYuMy0yMi44IDBMNTQ0IDE5NC40bC00NS42LTQ1LjZjLTYuMy02LjMtMTYuNS02LjMtMjIuOCAwbC0yMi44IDIyLjhjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDQ1LjYgNDUuNi00NS42IDQ1LjZjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDIyLjggMjIuOGM2LjMgNi4zIDE2LjUgNi4zIDIyLjggMGw0NS42LTQ1LjYgNDUuNiA0NS42YzYuMyA2LjMgMTYuNSA2LjMgMjIuOCAwbDIyLjgtMjIuOGM2LjMtNi4zIDYuMy0xNi41IDAtMjIuOEw1ODkuNiAyNDB6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwiXVxufTtcbnZhciBmYVVzZXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMGMwXCIsIFwiTTk2IDIyNGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMzIgMzJoLTY0Yy0xNy42IDAtMzMuNSA3LjEtNDUuMSAxOC42IDQwLjMgMjIuMSA2OC45IDYyIDc1LjEgMTA5LjRoNjZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0em0tMjU2IDBjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTMzgxLjkgMzIgMzIwIDMyIDIwOCA4Mi4xIDIwOCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0MxNzkuNiAyODggMTI4IDMzOS42IDEyOCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yOC44YzAtNjMuNi01MS42LTExNS4yLTExNS4yLTExNS4yem0tMjIzLjctMTMuNEMxNjEuNSAyNjMuMSAxNDUuNiAyNTYgMTI4IDI1Nkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjUuOWM2LjMtNDcuNCAzNC45LTg3LjMgNzUuMi0xMDkuNHpcIl1cbn07XG52YXIgZmFVc2Vyc0NvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2Vycy1jb2cnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDlcIiwgXCJNNjEwLjUgMzQxLjNjMi42LTE0LjEgMi42LTI4LjUgMC00Mi42bDI1LjgtMTQuOWMzLTEuNyA0LjMtNS4yIDMuMy04LjUtNi43LTIxLjYtMTguMi00MS4yLTMzLjItNTcuNC0yLjMtMi41LTYtMy4xLTktMS40bC0yNS44IDE0LjljLTEwLjktOS4zLTIzLjQtMTYuNS0zNi45LTIxLjN2LTI5LjhjMC0zLjQtMi40LTYuNC01LjctNy4xLTIyLjMtNS00NS00LjgtNjYuMiAwLTMuMy43LTUuNyAzLjctNS43IDcuMXYyOS44Yy0xMy41IDQuOC0yNiAxMi0zNi45IDIxLjNsLTI1LjgtMTQuOWMtMi45LTEuNy02LjctMS4xLTkgMS40LTE1IDE2LjItMjYuNSAzNS44LTMzLjIgNTcuNC0xIDMuMy40IDYuOCAzLjMgOC41bDI1LjggMTQuOWMtMi42IDE0LjEtMi42IDI4LjUgMCA0Mi42bC0yNS44IDE0LjljLTMgMS43LTQuMyA1LjItMy4zIDguNSA2LjcgMjEuNiAxOC4yIDQxLjEgMzMuMiA1Ny40IDIuMyAyLjUgNiAzLjEgOSAxLjRsMjUuOC0xNC45YzEwLjkgOS4zIDIzLjQgMTYuNSAzNi45IDIxLjN2MjkuOGMwIDMuNCAyLjQgNi40IDUuNyA3LjEgMjIuMyA1IDQ1IDQuOCA2Ni4yIDAgMy4zLS43IDUuNy0zLjcgNS43LTcuMXYtMjkuOGMxMy41LTQuOCAyNi0xMiAzNi45LTIxLjNsMjUuOCAxNC45YzIuOSAxLjcgNi43IDEuMSA5LTEuNCAxNS0xNi4yIDI2LjUtMzUuOCAzMy4yLTU3LjQgMS0zLjMtLjQtNi44LTMuMy04LjVsLTI1LjgtMTQuOXpNNDk2IDM2OC41Yy0yNi44IDAtNDguNS0yMS44LTQ4LjUtNDguNXMyMS44LTQ4LjUgNDguNS00OC41IDQ4LjUgMjEuOCA0OC41IDQ4LjUtMjEuNyA0OC41LTQ4LjUgNDguNXpNOTYgMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMjI0IDMyYzEuOSAwIDMuNy0uNSA1LjYtLjYgOC4zLTIxLjcgMjAuNS00Mi4xIDM2LjMtNTkuMiA3LjQtOCAxNy45LTEyLjYgMjguOS0xMi42IDYuOSAwIDEzLjcgMS44IDE5LjYgNS4zbDcuOSA0LjZjLjgtLjUgMS42LS45IDIuNC0xLjQgNy0xNC42IDExLjItMzAuOCAxMS4yLTQ4IDAtNjEuOS01MC4xLTExMi0xMTItMTEyUzIwOCA4Mi4xIDIwOCAxNDRjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJ6bTEwNS4yIDE5NC41Yy0yLjMtMS4yLTQuNi0yLjYtNi44LTMuOS04LjIgNC44LTE1LjMgOS44LTI3LjUgOS44LTEwLjkgMC0yMS40LTQuNi0yOC45LTEyLjYtMTguMy0xOS44LTMyLjMtNDMuOS00MC4yLTY5LjYtMTAuNy0zNC41IDI0LjktNDkuNyAyNS44LTUwLjMtLjEtMi42LS4xLTUuMiAwLTcuOGwtNy45LTQuNmMtMy44LTIuMi03LTUtOS44LTguMS0zLjMuMi02LjUuNi05LjguNi0yNC42IDAtNDcuNi02LTY4LjUtMTZoLTguM0MxNzkuNiAyODggMTI4IDMzOS42IDEyOCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjU1LjRjLTMuNy02LTYuMi0xMi44LTYuMi0yMC4zdi05LjJ6TTE3My4xIDI3NC42QzE2MS41IDI2My4xIDE0NS42IDI1NiAxMjggMjU2SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NS45YzYuMy00Ny40IDM0LjktODcuMyA3NS4yLTEwOS40elwiXVxufTtcbnZhciBmYVVzZXJzU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcnMtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzNcIiwgXCJNMTMyLjY1LDIxMi4zMiwzNi4yMSwxMzcuNzhBNjMuNCw2My40LDAsMCwwLDMyLDE2MGE2My44NCw2My44NCwwLDAsMCwxMDAuNjUsNTIuMzJabTQwLjQ0LDYyLjI4QTYzLjc5LDYzLjc5LDAsMCwwLDEyOCwyNTZINjRBNjQuMDYsNjQuMDYsMCwwLDAsMCwzMjB2MzJhMzIsMzIsMCwwLDAsMzIsMzJIOTcuOTFBMTQ2LjYyLDE0Ni42MiwwLDAsMSwxNzMuMDksMjc0LjZaTTU0NCwyMjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQuMDYsNjQuMDYsMCwwLDAsNTQ0LDIyNFpNNTAwLjU2LDM1NS4xMWExMTQuMjQsMTE0LjI0LDAsMCwwLTg0LjQ3LTY1LjI4TDM2MSwyNDcuMjNjNDEuNDYtMTYuMyw3MS01NS45Miw3MS0xMDMuMjNBMTExLjkzLDExMS45MywwLDAsMCwzMjAsMzJjLTU3LjE0LDAtMTAzLjY5LDQyLjgzLTExMC42LDk4LjA4TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTEyOCw0MDMuMjFWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0Ny40NSw0Ny40NSwwLDAsMCwxMi41Ny0xLjg3TDIzMiwyODkuMTNDMTczLjc0LDI5NC44MywxMjgsMzQzLjQyLDEyOCw0MDMuMjFaTTU3NiwyNTZINTEyYTYzLjc5LDYzLjc5LDAsMCwwLTQ1LjA5LDE4LjZBMTQ2LjI5LDE0Ni4yOSwwLDAsMSw1NDIsMzg0aDY2YTMyLDMyLDAsMCwwLDMyLTMyVjMyMEE2NC4wNiw2NC4wNiwwLDAsMCw1NzYsMjU2WlwiXVxufTtcbnZhciBmYVV0ZW5zaWxTcG9vbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1dGVuc2lsLXNwb29uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmU1XCIsIFwiTTQ4MC4xIDMxLjljLTU1LTU1LjEtMTY0LjktMzQuNS0yMjcuOCAyOC41LTQ5LjMgNDkuMy01NS4xIDExMC0yOC44IDE2MC40TDkgNDEzLjJjLTExLjYgMTAuNS0xMi4xIDI4LjUtMSAzOS41TDU5LjMgNTA0YzExIDExIDI5LjEgMTAuNSAzOS41LTEuMWwxOTIuNC0yMTQuNGM1MC40IDI2LjMgMTExLjEgMjAuNSAxNjAuNC0yOC44IDYzLTYyLjkgODMuNi0xNzIuOCAyOC41LTIyNy44elwiXVxufTtcbnZhciBmYVV0ZW5zaWxzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3V0ZW5zaWxzJyxcbiAgaWNvbjogWzQxNiwgNTEyLCBbXSwgXCJmMmU3XCIsIFwiTTIwNy45IDE1LjJjLjggNC43IDE2LjEgOTQuNSAxNi4xIDEyOC44IDAgNTIuMy0yNy44IDg5LjYtNjguOSAxMDQuNkwxNjggNDg2LjdjLjcgMTMuNy0xMC4yIDI1LjMtMjQgMjUuM0g4MGMtMTMuNyAwLTI0LjctMTEuNS0yNC0yNS4zbDEyLjktMjM4LjFDMjcuNyAyMzMuNiAwIDE5Ni4yIDAgMTQ0IDAgMTA5LjYgMTUuMyAxOS45IDE2LjEgMTUuMiAxOS4zLTUuMSA2MS40LTUuNCA2NCAxNi4zdjE0MS4yYzEuMyAzLjQgMTUuMSAzLjIgMTYgMCAxLjQtMjUuMyA3LjktMTM5LjIgOC0xNDEuOCAzLjMtMjAuOCA0NC43LTIwLjggNDcuOSAwIC4yIDIuNyA2LjYgMTE2LjUgOCAxNDEuOC45IDMuMiAxNC44IDMuNCAxNiAwVjE2LjNjMi42LTIxLjYgNDQuOC0yMS40IDQ4LTEuMXptMTE5LjIgMjg1LjdsLTE1IDE4NS4xYy0xLjIgMTQgOS45IDI2IDIzLjkgMjZoNTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjRjMC0xMy4yLTEwLjctMjQtMjQtMjQtODIuNSAwLTIyMS40IDE3OC41LTY0LjkgMzAwLjl6XCJdXG59O1xudmFyIGZhVmVjdG9yU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZlY3Rvci1zcXVhcmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1Y2JcIiwgXCJNNTEyIDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMkgxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMydjE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJoMTkyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMlYxNjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptLTk2LTY0aDMydjMyaC0zMlY2NHpNNjQgNjRoMzJ2MzJINjRWNjR6bTMyIDM4NEg2NHYtMzJoMzJ2MzJ6bTM1MiAwaC0zMnYtMzJoMzJ2MzJ6bS0zMi05NmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJIMTYwdi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDk2VjE2MGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2aDE5MnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydjE5MnpcIl1cbn07XG52YXIgZmFWZW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZW51cycsXG4gIGljb246IFsyODgsIDUxMiwgW10sIFwiZjIyMVwiLCBcIk0yODggMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0UzAgOTYuNSAwIDE3NmMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWMzY4SDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJdXG59O1xudmFyIGZhVmVudXNEb3VibGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmVudXMtZG91YmxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjI2XCIsIFwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFYzNjhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHptMzM2IDE0MC40VjM2OGgzNmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0zNnYzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2aC0zNmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoMzZ2LTUxLjZjLTIxLjItNC44LTQwLjYtMTQuMy01Ny4yLTI3LjMgMTQtMTYuNyAyNS0zNiAzMi4xLTU3LjEgMTQuNSAxNC44IDM0LjcgMjQgNTcuMSAyNCA0NC4xIDAgODAtMzUuOSA4MC04MHMtMzUuOS04MC04MC04MGMtMjIuMyAwLTQyLjYgOS4yLTU3LjEgMjQtNy4xLTIxLjEtMTgtNDAuNC0zMi4xLTU3LjFDMzAzLjQgNDMuNiAzMzQuMyAzMiAzNjggMzJjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCA2OC41LTQ3LjkgMTI1LjktMTEyIDE0MC40elwiXVxufTtcbnZhciBmYVZlbnVzTWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZW51cy1tYXJzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjI4XCIsIFwiTTU2NCAwaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTQ4LjcgNDguN0M0MjIuNSA3Mi4xIDM5Ni4yIDY0IDM2OCA2NGMtMzMuNyAwLTY0LjYgMTEuNi04OS4yIDMwLjkgMTQgMTYuNyAyNSAzNiAzMi4xIDU3LjEgMTQuNS0xNC44IDM0LjctMjQgNTcuMS0yNCA0NC4xIDAgODAgMzUuOSA4MCA4MHMtMzUuOSA4MC04MCA4MGMtMjIuMyAwLTQyLjYtOS4yLTU3LjEtMjQtNy4xIDIxLjEtMTggNDAuNC0zMi4xIDU3LjEgMjQuNSAxOS40IDU1LjUgMzAuOSA4OS4yIDMwLjkgNzkuNSAwIDE0NC02NC41IDE0NC0xNDQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w0OC43LTQ4LjcgMTYuOSAxNi45YzIuNCAyLjQgNS40IDMuNSA4LjQgMy41IDYuMiAwIDEyLjEtNC44IDEyLjEtMTJWMTJjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgNjRDNjQuNSA2NCAwIDEyOC41IDAgMjA4YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0MDBINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC03OS41LTY0LjUtMTQ0LTE0NC0xNDR6bTAgMjI0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFWZXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Zlc3QnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwODVcIiwgXCJNNDM3LjI1MiwyMzkuODc3LDM4NCwxNjBWMzJBMzIsMzIsMCwwLDAsMzUyLDBIMzIwYTI0LjAyMSwyNC4wMjEsMCwwLDAtMTMuMzEyLDQuMDMxbC0yNSwxNi42NzJhMTAzLjc5NCwxMDMuNzk0LDAsMCwxLTExNS4zNzYsMGwtMjUtMTYuNjcyQTI0LjAyMSwyNC4wMjEsMCwwLDAsMTI4LDBIOTZBMzIsMzIsMCwwLDAsNjQsMzJWMTYwTDEwLjc0OCwyMzkuODc3QTY0LDY0LDAsMCwwLDAsMjc1LjM3N1Y0ODBhMzIsMzIsMCwwLDAsMzIsMzJIMTkyVjI4OGEzMS45ODcsMzEuOTg3LDAsMCwxLDEuNjQzLTEwLjExOUwyMDcuMTM1LDIzNy40LDE1MC4xODgsNjYuNTY0QTE1MS41MTgsMTUxLjUxOCwwLDAsMCwyMjQsODYuMjM0YTE1MS41NSwxNTEuNTUsMCwwLDAsNzMuODEyLTE5LjY3MkwyMjQsMjg4VjUxMkg0MTZhMzIsMzIsMCwwLDAsMzItMzJWMjc1LjM3N0E2NCw2NCwwLDAsMCw0MzcuMjUyLDIzOS44NzdaTTEzMS4zMTIsMzcxLjMxMmwtNDgsNDhhMTYsMTYsMCwwLDEtMjIuNjI0LTIyLjYyNGw0OC00OGExNiwxNiwwLDAsMSwyMi42MjQsMjIuNjI0Wm0yNTYsNDhhMTUuOTkyLDE1Ljk5MiwwLDAsMS0yMi42MjQsMGwtNDgtNDhhMTYsMTYsMCwwLDEsMjIuNjI0LTIyLjYyNGw0OCw0OEExNS45OTMsMTUuOTkzLDAsMCwxLDM4Ny4zMTIsNDE5LjMxMlpcIl1cbn07XG52YXIgZmFWZXN0UGF0Y2hlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZXN0LXBhdGNoZXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwODZcIiwgXCJNNDM3LjI1MiwyMzkuODc3LDM4NCwxNjBWMzJBMzIsMzIsMCwwLDAsMzUyLDBIMzIwYTIzLjk4MiwyMy45ODIsMCwwLDAtMTMuMzEyLDQuMDMxbC0yNSwxNi42NzJhMTAzLjc5NCwxMDMuNzk0LDAsMCwxLTExNS4zNzYsMGwtMjUtMTYuNjcyQTIzLjk4MiwyMy45ODIsMCwwLDAsMTI4LDBIOTZBMzIsMzIsMCwwLDAsNjQsMzJWMTYwTDEwLjc0OCwyMzkuODc3QTY0LDY0LDAsMCwwLDAsMjc1LjM3N1Y0ODBhMzIsMzIsMCwwLDAsMzIsMzJIMTkyVjI4OGEzMS45ODcsMzEuOTg3LDAsMCwxLDEuNjQzLTEwLjExOUwyMDcuMTM1LDIzNy40LDE1MC4xODgsNjYuNTYxQTE1MS41NzksMTUxLjU3OSwwLDAsMCwyMjQsODYuMjM0YTE1MS41NjUsMTUxLjU2NSwwLDAsMCw3My44MTEtMTkuNjY4TDIyNCwyODhWNTEySDQxNmEzMiwzMiwwLDAsMCwzMi0zMlYyNzUuMzc3QTY0LDY0LDAsMCwwLDQzNy4yNTIsMjM5Ljg3N1pNNjMuNSwyNzIuNDg0YTEyLjAxLDEyLjAxLDAsMCwxLDE3LTE2Ljk2OGwxNS41LDE1LjUsMTUuNS0xNS41YTEyLjAxLDEyLjAxLDAsMCwxLDE3LDE2Ljk2OEwxMTIuOTg0LDI4OCwxMjguNSwzMDMuNTE2YTEyLjAxLDEyLjAxLDAsMCwxLTE3LDE2Ljk2OEw5NiwzMDQuOTg0bC0xNS41LDE1LjVhMTIuMDEsMTIuMDEsMCwwLDEtMTctMTYuOTY4TDc5LjAxNiwyODhaTTk2LDQ1NmE0MCw0MCwwLDEsMSw0MC00MEE0MCw0MCwwLDAsMSw5Niw0NTZaTTM1OS4yMjcsMzM1Ljc4NSwzMTAuNywzMzZhNi42NzEsNi42NzEsMCwwLDEtNi43LTYuN2wuMjE1LTQ4LjU3NEEyNC45ODcsMjQuOTg3LDAsMCwxLDMzMS40MywyNTYuMWMxMi43ODksMS4xNjIsMjIuMTI5LDEyLjYxOSwyMi4wNTYsMjUuNDE5bC0uMDM3LDUuMDU3LDUuMDUxLS4wMzdjMTIuODI2LS4wMzUsMjQuMjM2LDkuMjc1LDI1LjQsMjIuMDc2QTI0Ljk0OCwyNC45NDgsMCwwLDEsMzU5LjIyNywzMzUuNzg1WlwiXVxufTtcbnZhciBmYVZpYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlhbCcsXG4gIGljb246IFs0ODAsIDUxMiwgW10sIFwiZjQ5MlwiLCBcIk00NzcuNyAxODYuMUwzMDkuNSAxOC4zYy0zLjEtMy4xLTguMi0zLjEtMTEuMyAwbC0zNCAzMy45Yy0zLjEgMy4xLTMuMSA4LjIgMCAxMS4zbDExLjIgMTEuMUwzMyAzMTYuNWMtMzguOCAzOC43LTQ1LjEgMTAyLTkuNCAxNDMuNSAyMC42IDI0IDQ5LjUgMzYgNzguNCAzNS45IDI2LjQgMCA1Mi44LTEwIDcyLjktMzAuMWwyNDYuMy0yNDUuNyAxMS4yIDExLjFjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwzNC0zMy45YzMuMS0zIDMuMS04LjEgMC0xMS4yek0zMTggMjU2SDE2MWwxNDgtMTQ3LjcgNzguNSA3OC4zTDMxOCAyNTZ6XCJdXG59O1xudmFyIGZhVmlhbHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlhbHMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0OTNcIiwgXCJNNzIgNjRoMjR2MjQwYzAgNDQuMSAzNS45IDgwIDgwIDgwczgwLTM1LjkgODAtODBWNjRoMjRjNC40IDAgOC0zLjYgOC04VjhjMC00LjQtMy42LTgtOC04SDcyYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em03MiAwaDY0djk2aC02NFY2NHptNDgwIDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTM2MCA2NGgyNHYyNDBjMCA0NC4xIDM1LjkgODAgODAgODBzODAtMzUuOSA4MC04MFY2NGgyNGM0LjQgMCA4LTMuNiA4LThWOGMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4em03MiAwaDY0djk2aC02NFY2NHpcIl1cbn07XG52YXIgZmFWaWRlbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWRlbycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAzZFwiLCBcIk0zMzYuMiA2NEg0Ny44QzIxLjQgNjQgMCA4NS40IDAgMTExLjh2Mjg4LjRDMCA0MjYuNiAyMS40IDQ0OCA0Ny44IDQ0OGgyODguNGMyNi40IDAgNDcuOC0yMS40IDQ3LjgtNDcuOFYxMTEuOGMwLTI2LjQtMjEuNC00Ny44LTQ3LjgtNDcuOHptMTg5LjQgMzcuN0w0MTYgMTc3LjN2MTU3LjRsMTA5LjYgNzUuNWMyMS4yIDE0LjYgNTAuNC0uMyA1MC40LTI1LjhWMTI3LjVjMC0yNS40LTI5LjEtNDAuNC01MC40LTI1Ljh6XCJdXG59O1xudmFyIGZhVmlkZW9TbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWRlby1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRlMlwiLCBcIk02MzMuOCA0NTguMWwtNTUtNDIuNWMxNS40LTEuNCAyOS4yLTEzLjcgMjkuMi0zMS4xdi0yNTdjMC0yNS41LTI5LjEtNDAuNC01MC40LTI1LjhMNDQ4IDE3Ny4zdjEzNy4ybC0zMi0yNC43di0xNzhjMC0yNi40LTIxLjQtNDcuOC00Ny44LTQ3LjhIMTIzLjlMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRMNDIuNyA4MiA0MTYgMzcwLjZsMTc4LjUgMTM4YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS41LTYuOSA0LjItMTctMi44LTIyLjR6TTMyIDQwMC4yYzAgMjYuNCAyMS40IDQ3LjggNDcuOCA0Ny44aDI4OC40YzExLjIgMCAyMS40LTQgMjkuNi0xMC41TDMyIDE1NC43djI0NS41elwiXVxufTtcbnZhciBmYVZpaGFyYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWhhcmEnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2YTdcIiwgXCJNNjMyLjg4IDQwMC43MUw1NDQgMzUydi02NGw1NS4xNi0xNy42OWMxMS43OS01LjkgMTEuNzktMjIuNzIgMC0yOC42Mkw0ODAgMTkydi02NGwyNy4zMS0xNi4zYzcuNzItNy43MiA1LjYxLTIwLjc0LTQuMTYtMjUuNjJMMzIwIDAgMTM2Ljg1IDg2LjA3Yy05Ljc3IDQuODgtMTEuODggMTcuOS00LjE2IDI1LjYyTDE2MCAxMjh2NjRMNDAuODQgMjQxLjY5Yy0xMS43OSA1LjktMTEuNzkgMjIuNzIgMCAyOC42Mkw5NiAyODh2NjRMNy4xMiA0MDAuNzFjLTUuNDIgMy42Mi03LjcgOS42My03IDE1LjI5LjYyIDUuMDEgMy41NyA5Ljc1IDguNzIgMTIuMzNMNjQgNDQ4djQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di00OGgxNjB2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4aDE2MHY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhsNTUuMTUtMTkuNjdjNS4xNi0yLjU4IDguMS03LjMyIDguNzItMTIuMzMuNzEtNS42Ny0xLjU3LTExLjY4LTYuOTktMTUuMjl6TTIyNCAxMjhoMTkydjY0SDIyNHYtNjR6bS02NCAyMjR2LTY0aDMyMHY2NEgxNjB6XCJdXG59O1xudmFyIGZhVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlydXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNzRcIiwgXCJNNDgzLjU1LDIyNy41NUg0NjJjLTUwLjY4LDAtNzYuMDctNjEuMjctNDAuMjMtOTcuMTFMNDM3LDExNS4xOUEyOC40NCwyOC40NCwwLDAsMCwzOTYuOCw3NUwzODEuNTYsOTAuMjJjLTM1Ljg0LDM1LjgzLTk3LjExLDEwLjQ1LTk3LjExLTQwLjIzVjI4LjQ0YTI4LjQ1LDI4LjQ1LDAsMCwwLTU2LjksMFY1MGMwLDUwLjY4LTYxLjI3LDc2LjA2LTk3LjExLDQwLjIzTDExNS4yLDc1QTI4LjQ0LDI4LjQ0LDAsMCwwLDc1LDExNS4xOWwxNS4yNSwxNS4yNWMzNS44NCwzNS44NCwxMC40NSw5Ny4xMS00MC4yMyw5Ny4xMUgyOC40NWEyOC40NSwyOC40NSwwLDEsMCwwLDU2Ljg5SDUwYzUwLjY4LDAsNzYuMDcsNjEuMjgsNDAuMjMsOTcuMTJMNzUsMzk2LjhBMjguNDUsMjguNDUsMCwwLDAsMTE1LjIsNDM3bDE1LjI0LTE1LjI1YzM1Ljg0LTM1Ljg0LDk3LjExLTEwLjQ1LDk3LjExLDQwLjIzdjIxLjU0YTI4LjQ1LDI4LjQ1LDAsMCwwLDU2LjksMFY0NjJjMC01MC42OCw2MS4yNy03Ni4wNyw5Ny4xMS00MC4yM0wzOTYuOCw0MzdBMjguNDUsMjguNDUsMCwwLDAsNDM3LDM5Ni44bC0xNS4yNS0xNS4yNGMtMzUuODQtMzUuODQtMTAuNDUtOTcuMTIsNDAuMjMtOTcuMTJoMjEuNTRhMjguNDUsMjguNDUsMCwxLDAsMC01Ni44OVpNMjI0LDI3MmE0OCw0OCwwLDEsMSw0OC00OEE0OCw0OCwwLDAsMSwyMjQsMjcyWm04MCw1NmEyNCwyNCwwLDEsMSwyNC0yNEEyNCwyNCwwLDAsMSwzMDQsMzI4WlwiXVxufTtcbnZhciBmYVZpcnVzU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlydXMtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzVcIiwgXCJNMTE0LDIyNy42SDkyLjRDNzYuNywyMjcuNiw2NCwyNDAuMyw2NCwyNTZzMTIuNywyOC40LDI4LjQsMjguNEgxMTRjNTAuNywwLDc2LjEsNjEuMyw0MC4yLDk3LjFMMTM5LDM5Ni44IGMtMTEuNSwxMC43LTEyLjIsMjguNy0xLjYsNDAuMnMyOC43LDEyLjIsNDAuMiwxLjZjMC41LTAuNSwxLjEtMSwxLjYtMS42bDE1LjItMTUuMmMzNS44LTM1LjgsOTcuMS0xMC41LDk3LjEsNDAuMnYyMS41IGMwLDE1LjcsMTIuOCwyOC40LDI4LjUsMjguNGMxNS43LDAsMjguNC0xMi43LDI4LjQtMjguNFY0NjJjMC0yNi42LDE3LTQ1LjksMzguMi01My40bC0yNDQuNS0xODkgQzEzMy43LDIyNC43LDEyMy45LDIyNy41LDExNCwyMjcuNnogTTYxNyw1MDUuOGwxOS42LTI1LjNjNS40LTcsNC4yLTE3LTIuOC0yMi41TDQ3MC42LDMzMmM0LjItMjUuNCwyNC45LTQ3LjUsNTUuNC00Ny41aDIxLjUgYzE1LjcsMCwyOC40LTEyLjcsMjguNC0yOC40cy0xMi43LTI4LjQtMjguNC0yOC40SDUyNmMtNTAuNywwLTc2LjEtNjEuMy00MC4yLTk3LjFsMTUuMi0xNS4zYzEwLjctMTEuNSwxMC0yOS41LTEuNi00MC4yIGMtMTAuOS0xMC4xLTI3LjctMTAuMS0zOC42LDBsLTE1LjIsMTUuMmMtMzUuOCwzNS44LTk3LjEsMTAuNS05Ny4xLTQwLjJWMjguNUMzNDguNCwxMi43LDMzNS43LDAsMzIwLDAgYy0xNS43LDAtMjguNCwxMi43LTI4LjQsMjguNFY1MGMwLDUwLjctNjEuMyw3Ni4xLTk3LjEsNDAuMkwxNzkuMiw3NWMtMTEuMS0xMS4xLTI5LjQtMTAuNi00MC41LDAuNUw0NS41LDMuNCBjLTctNS40LTE3LTQuMi0yMi41LDIuOEwzLjQsMzEuNWMtNS40LDctNC4yLDE3LDIuOCwyMi41bDU4OC40LDQ1NC43QzYwMS41LDUxNC4xLDYxMS42LDUxMi44LDYxNyw1MDUuOHogTTMzNS40LDIyNy41bC02Mi45LTQ4LjYgYzQuOS0xLjgsMTAuMi0yLjgsMTUuNC0yLjljMjYuNSwwLDQ4LDIxLjUsNDgsNDhDMzM2LDIyNS4yLDMzNS41LDIyNi4zLDMzNS40LDIyNy41elwiXVxufTtcbnZhciBmYVZpcnVzZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlydXNlcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA3NlwiLCBcIk02MjQsMzUySDYxMS44OGMtMjguNTEsMC00Mi43OS0zNC40Ny0yMi42My01NC42M2w4LjU4LTguNTdhMTYsMTYsMCwxLDAtMjIuNjMtMjIuNjNsLTguNTcsOC41OEM1NDYuNDcsMjk0LjkxLDUxMiwyODAuNjMsNTEyLDI1Mi4xMlYyNDBhMTYsMTYsMCwwLDAtMzIsMHYxMi4xMmMwLDI4LjUxLTM0LjQ3LDQyLjc5LTU0LjYzLDIyLjYzbC04LjU3LTguNThhMTYsMTYsMCwwLDAtMjIuNjMsMjIuNjNsOC41OCw4LjU3YzIwLjE2LDIwLjE2LDUuODgsNTQuNjMtMjIuNjMsNTQuNjNIMzY4YTE2LDE2LDAsMCwwLDAsMzJoMTIuMTJjMjguNTEsMCw0Mi43OSwzNC40NywyMi42Myw1NC42M2wtOC41OCw4LjU3YTE2LDE2LDAsMSwwLDIyLjYzLDIyLjYzbDguNTctOC41OGMyMC4xNi0yMC4xNiw1NC42My01Ljg4LDU0LjYzLDIyLjYzVjQ5NmExNiwxNiwwLDAsMCwzMiwwVjQ4My44OGMwLTI4LjUxLDM0LjQ3LTQyLjc5LDU0LjYzLTIyLjYzbDguNTcsOC41OGExNiwxNiwwLDEsMCwyMi42My0yMi42M2wtOC41OC04LjU3QzU2OS4wOSw0MTguNDcsNTgzLjM3LDM4NCw2MTEuODgsMzg0SDYyNGExNiwxNiwwLDAsMCwwLTMyWk00ODAsMzg0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDQ4MCwzODRaTTM0Ni41MSwyMTMuMzNoMTYuMTZhMjEuMzMsMjEuMzMsMCwwLDAsMC00Mi42NkgzNDYuNTFjLTM4LDAtNTcuMDUtNDYtMzAuMTctNzIuODRsMTEuNDMtMTEuNDRBMjEuMzMsMjEuMzMsMCwwLDAsMjk3LjYsNTYuMjNMMjg2LjE3LDY3LjY2Yy0yNi44OCwyNi44OC03Mi44NCw3Ljg1LTcyLjg0LTMwLjE3VjIxLjMzYTIxLjMzLDIxLjMzLDAsMCwwLTQyLjY2LDBWMzcuNDljMCwzOC00Niw1Ny4wNS03Mi44NCwzMC4xN0w4Ni40LDU2LjIzQTIxLjMzLDIxLjMzLDAsMCwwLDU2LjIzLDg2LjM5TDY3LjY2LDk3LjgzYzI2Ljg4LDI2Ljg4LDcuODUsNzIuODQtMzAuMTcsNzIuODRIMjEuMzNhMjEuMzMsMjEuMzMsMCwwLDAsMCw0Mi42NkgzNy40OWMzOCwwLDU3LjA1LDQ2LDMwLjE3LDcyLjg0TDU2LjIzLDI5Ny42QTIxLjMzLDIxLjMzLDAsMSwwLDg2LjQsMzI3Ljc3bDExLjQzLTExLjQzYzI2Ljg4LTI2Ljg4LDcyLjg0LTcuODUsNzIuODQsMzAuMTd2MTYuMTZhMjEuMzMsMjEuMzMsMCwwLDAsNDIuNjYsMFYzNDYuNTFjMC0zOCw0Ni01Ny4wNSw3Mi44NC0zMC4xN2wxMS40MywxMS40M2EyMS4zMywyMS4zMywwLDAsMCwzMC4xNy0zMC4xN2wtMTEuNDMtMTEuNDNDMjg5LjQ2LDI1OS4yOSwzMDguNDksMjEzLjMzLDM0Ni41MSwyMTMuMzNaTTE2MCwxOTJhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsMTYwLDE5MlptODAsMzJhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjQwLDIyNFpcIl1cbn07XG52YXIgZmFWb2ljZW1haWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndm9pY2VtYWlsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmODk3XCIsIFwiTTQ5NiAxMjhhMTQ0IDE0NCAwIDAgMC0xMTkuNzQgMjI0SDI2My43NEExNDQgMTQ0IDAgMSAwIDE0NCA0MTZoMzUyYTE0NCAxNDQgMCAwIDAgMC0yODh6TTY0IDI3MmE4MCA4MCAwIDEgMSA4MCA4MCA4MCA4MCAwIDAgMS04MC04MHptNDMyIDgwYTgwIDgwIDAgMSAxIDgwLTgwIDgwIDgwIDAgMCAxLTgwIDgwelwiXVxufTtcbnZhciBmYVZvbGxleWJhbGxCYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvbGxleWJhbGwtYmFsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ1ZlwiLCBcIk0yMzEuMzkgMjQzLjQ4YTI4NS41NiAyODUuNTYgMCAwIDAtMjIuNy0xMDUuN2MtOTAuOCA0Mi40LTE1Ny41IDEyMi40LTE4MC4zIDIxNi44YTI0OSAyNDkgMCAwIDAgNTYuOSA4MS4xIDMzMy44NyAzMzMuODcgMCAwIDEgMTQ2LjEtMTkyLjJ6bS0zNi45LTEzNC40YTI4NC4yMyAyODQuMjMgMCAwIDAtNTcuNC03MC43Yy05MSA0OS44LTE0NC44IDE1Mi45LTEyNSAyNjIuMiAzMy40LTgzLjEgOTguNC0xNTIgMTgyLjQtMTkxLjV6bTE4Ny42IDE2NS4xYzguNi05OS44LTI3LjMtMTk3LjUtOTcuNS0yNjQuNC0xNC43LTEuNy01MS42LTUuNS05OC45IDguNUEzMzMuODcgMzMzLjg3IDAgMCAxIDI3OS4xOSAyNDFhMjg1IDI4NSAwIDAgMCAxMDIuOSAzMy4xOHptLTEyNC43IDkuNWEyODYuMzMgMjg2LjMzIDAgMCAwLTgwLjIgNzIuNmM4MiA1Ny4zIDE4NC41IDc1LjEgMjc3LjUgNDcuOGEyNDcuMTUgMjQ3LjE1IDAgMCAwIDQyLjItODkuOSAzMzYuMSAzMzYuMSAwIDAgMS04MC45IDEwLjRjLTU0LjYtLjEtMTA4LjktMTQuMS0xNTguNi00MC45em0tOTguMyA5OS43Yy0xNS4yIDI2LTI1LjcgNTQuNC0zMi4xIDg0LjJhMjQ3LjA3IDI0Ny4wNyAwIDAgMCAyODktMjIuMWMtMTEyLjkgMTYuMS0yMDMuMy0yNC44LTI1Ni45LTYyLjF6bTE4MC4zLTM2MC42YzU1LjMgNzAuNCA4Mi41IDE2MS4yIDc0LjYgMjUzLjZhMjg2LjU5IDI4Ni41OSAwIDAgMCA4OS43LTE0LjJjMC0yIC4zLTQgLjMtNiAwLTEwNy44LTY4LjctMTk5LjEtMTY0LjYtMjMzLjR6XCJdXG59O1xudmFyIGZhVm9sdW1lRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2x1bWUtZG93bicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjAyN1wiLCBcIk0yMTUuMDMgNzIuMDRMMTI2LjA2IDE2MUgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYxNDRjMCAxMy4yNSAxMC43NCAyNCAyNCAyNGgxMDIuMDZsODguOTcgODguOTVjMTUuMDMgMTUuMDMgNDAuOTcgNC40NyA0MC45Ny0xNi45N1Y4OS4wMmMwLTIxLjQ3LTI1Ljk2LTMxLjk4LTQwLjk3LTE2Ljk4em0xMjMuMiAxMDguMDhjLTExLjU4LTYuMzMtMjYuMTktMi4xNi0zMi42MSA5LjQ1LTYuMzkgMTEuNjEtMi4xNiAyNi4yIDkuNDUgMzIuNjFDMzI3Ljk4IDIyOS4yOCAzMzYgMjQyLjYyIDMzNiAyNTdjMCAxNC4zOC04LjAyIDI3LjcyLTIwLjkyIDM0LjgxLTExLjYxIDYuNDEtMTUuODQgMjEtOS40NSAzMi42MSA2LjQzIDExLjY2IDIxLjA1IDE1LjggMzIuNjEgOS40NSAyOC4yMy0xNS41NSA0NS43Ny00NSA0NS43Ny03Ni44OHMtMTcuNTQtNjEuMzItNDUuNzgtNzYuODd6XCJdXG59O1xudmFyIGZhVm9sdW1lTXV0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2x1bWUtbXV0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZhOVwiLCBcIk0yMTUuMDMgNzEuMDVMMTI2LjA2IDE2MEgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYxNDRjMCAxMy4yNSAxMC43NCAyNCAyNCAyNGgxMDIuMDZsODguOTcgODguOTVjMTUuMDMgMTUuMDMgNDAuOTcgNC40NyA0MC45Ny0xNi45N1Y4OC4wMmMwLTIxLjQ2LTI1Ljk2LTMxLjk4LTQwLjk3LTE2Ljk3ek00NjEuNjQgMjU2bDQ1LjY0LTQ1LjY0YzYuMy02LjMgNi4zLTE2LjUyIDAtMjIuODJsLTIyLjgyLTIyLjgyYy02LjMtNi4zLTE2LjUyLTYuMy0yMi44MiAwTDQxNiAyMTAuMzZsLTQ1LjY0LTQ1LjY0Yy02LjMtNi4zLTE2LjUyLTYuMy0yMi44MiAwbC0yMi44MiAyMi44MmMtNi4zIDYuMy02LjMgMTYuNTIgMCAyMi44MkwzNzAuMzYgMjU2bC00NS42MyA0NS42M2MtNi4zIDYuMy02LjMgMTYuNTIgMCAyMi44MmwyMi44MiAyMi44MmM2LjMgNi4zIDE2LjUyIDYuMyAyMi44MiAwTDQxNiAzMDEuNjRsNDUuNjQgNDUuNjRjNi4zIDYuMyAxNi41MiA2LjMgMjIuODIgMGwyMi44Mi0yMi44MmM2LjMtNi4zIDYuMy0xNi41MiAwLTIyLjgyTDQ2MS42NCAyNTZ6XCJdXG59O1xudmFyIGZhVm9sdW1lT2ZmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvbHVtZS1vZmYnLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImYwMjZcIiwgXCJNMjE1IDcxbC04OSA4OUgyNGEyNCAyNCAwIDAgMC0yNCAyNHYxNDRhMjQgMjQgMCAwIDAgMjQgMjRoMTAyLjA2TDIxNSA0NDFjMTUgMTUgNDEgNC40NyA0MS0xN1Y4OGMwLTIxLjQ3LTI2LTMyLTQxLTE3elwiXVxufTtcbnZhciBmYVZvbHVtZVVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvbHVtZS11cCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAyOFwiLCBcIk0yMTUuMDMgNzEuMDVMMTI2LjA2IDE2MEgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYxNDRjMCAxMy4yNSAxMC43NCAyNCAyNCAyNGgxMDIuMDZsODguOTcgODguOTVjMTUuMDMgMTUuMDMgNDAuOTcgNC40NyA0MC45Ny0xNi45N1Y4OC4wMmMwLTIxLjQ2LTI1Ljk2LTMxLjk4LTQwLjk3LTE2Ljk3em0yMzMuMzItNTEuMDhjLTExLjE3LTcuMzMtMjYuMTgtNC4yNC0zMy41MSA2Ljk1LTcuMzQgMTEuMTctNC4yMiAyNi4xOCA2Ljk1IDMzLjUxIDY2LjI3IDQzLjQ5IDEwNS44MiAxMTYuNiAxMDUuODIgMTk1LjU4IDAgNzguOTgtMzkuNTUgMTUyLjA5LTEwNS44MiAxOTUuNTgtMTEuMTcgNy4zMi0xNC4yOSAyMi4zNC02Ljk1IDMzLjUgNy4wNCAxMC43MSAyMS45MyAxNC41NiAzMy41MSA2Ljk1QzUyOC4yNyA0MzkuNTggNTc2IDM1MS4zMyA1NzYgMjU2UzUyOC4yNyA3Mi40MyA0NDguMzUgMTkuOTd6TTQ4MCAyNTZjMC02My41My0zMi4wNi0xMjEuOTQtODUuNzctMTU2LjI0LTExLjE5LTcuMTQtMjYuMDMtMy44Mi0zMy4xMiA3LjQ2cy0zLjc4IDI2LjIxIDcuNDEgMzMuMzZDNDA4LjI3IDE2NS45NyA0MzIgMjA5LjExIDQzMiAyNTZzLTIzLjczIDkwLjAzLTYzLjQ4IDExNS40MmMtMTEuMTkgNy4xNC0xNC41IDIyLjA3LTcuNDEgMzMuMzYgNi41MSAxMC4zNiAyMS4xMiAxNS4xNCAzMy4xMiA3LjQ2QzQ0Ny45NCAzNzcuOTQgNDgwIDMxOS41NCA0ODAgMjU2em0tMTQxLjc3LTc2Ljg3Yy0xMS41OC02LjMzLTI2LjE5LTIuMTYtMzIuNjEgOS40NS02LjM5IDExLjYxLTIuMTYgMjYuMiA5LjQ1IDMyLjYxQzMyNy45OCAyMjguMjggMzM2IDI0MS42MyAzMzYgMjU2YzAgMTQuMzgtOC4wMiAyNy43Mi0yMC45MiAzNC44MS0xMS42MSA2LjQxLTE1Ljg0IDIxLTkuNDUgMzIuNjEgNi40MyAxMS42NiAyMS4wNSAxNS44IDMyLjYxIDkuNDUgMjguMjMtMTUuNTUgNDUuNzctNDUgNDUuNzctNzYuODhzLTE3LjU0LTYxLjMyLTQ1Ljc4LTc2Ljg2elwiXVxufTtcbnZhciBmYVZvdGVZZWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndm90ZS15ZWEnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3NzJcIiwgXCJNNjA4IDMyMGgtNjR2NjRoMjIuNGM1LjMgMCA5LjYgMy42IDkuNiA4djE2YzAgNC40LTQuMyA4LTkuNiA4SDczLjZjLTUuMyAwLTkuNi0zLjYtOS42LTh2LTE2YzAtNC40IDQuMy04IDkuNi04SDk2di02NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTc2YzE3LjcgMCAzMi0xNC4zIDMyLTMydi05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTk2IDY0VjY0LjNjMC0xNy45LTE0LjUtMzIuMy0zMi4zLTMyLjNIMTYwLjRDMTQyLjUgMzIgMTI4IDQ2LjUgMTI4IDY0LjNWMzg0aDM4NHpNMjExLjIgMjAybDI1LjUtMjUuM2M0LjItNC4yIDExLTQuMiAxNS4yLjFsNDEuMyA0MS42IDk1LjItOTQuNGM0LjItNC4yIDExLTQuMiAxNS4yLjFsMjUuMyAyNS41YzQuMiA0LjIgNC4yIDExLS4xIDE1LjJMMzAwLjUgMjkyYy00LjIgNC4yLTExIDQuMi0xNS4yLS4xbC03NC4xLTc0LjdjLTQuMy00LjItNC4yLTExIDAtMTUuMnpcIl1cbn07XG52YXIgZmFWckNhcmRib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ci1jYXJkYm9hcmQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MjlcIiwgXCJNNjA4IDY0SDMyQzE0LjMzIDY0IDAgNzguMzMgMCA5NnYzMjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNjAuMjJjMjUuMTkgMCA0OC4wMy0xNC43NyA1OC4zNi0zNy43NGwyNy43NC02MS42NEMyODYuMjEgMzMxLjA4IDMwMi4zNSAzMjAgMzIwIDMyMHMzMy43OSAxMS4wOCA0MS42OCAyOC42MmwyNy43NCA2MS42NEMzOTkuNzUgNDMzLjIzIDQyMi42IDQ0OCA0NDcuNzggNDQ4SDYwOGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTE2MCAzMDRjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRzMjguNjUtNjQgNjQtNjQgNjQgMjguNjUgNjQgNjQtMjguNjUgNjQtNjQgNjR6bTMyMCAwYy0zNS4zNSAwLTY0LTI4LjY1LTY0LTY0czI4LjY1LTY0IDY0LTY0IDY0IDI4LjY1IDY0IDY0LTI4LjY1IDY0LTY0IDY0elwiXVxufTtcbnZhciBmYVdhbGtpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2Fsa2luZycsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjU1NFwiLCBcIk0yMDggOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMjM0LjUgMCAyMDggMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em05NC41IDE0OS4xbC0yMy4zLTExLjgtOS43LTI5LjRjLTE0LjctNDQuNi01NS43LTc1LjgtMTAyLjItNzUuOS0zNi0uMS01NS45IDEwLjEtOTMuMyAyNS4yLTIxLjYgOC43LTM5LjMgMjUuMi00OS43IDQ2LjJMMTcuNiAyMTNjLTcuOCAxNS44LTEuNSAzNSAxNC4yIDQyLjkgMTUuNiA3LjkgMzQuNiAxLjUgNDIuNS0xNC4zTDgxIDIyOGMzLjUtNyA5LjMtMTIuNSAxNi41LTE1LjRsMjYuOC0xMC44LTE1LjIgNjAuN2MtNS4yIDIwLjguNCA0Mi45IDE0LjkgNTguOGw1OS45IDY1LjRjNy4yIDcuOSAxMi4zIDE3LjQgMTQuOSAyNy43bDE4LjMgNzMuM2M0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zIDE3LjEtNC4zIDI3LjYtMjEuNyAyMy4zLTM4LjhsLTIyLjItODljLTIuNi0xMC4zLTcuNy0xOS45LTE0LjktMjcuN2wtNDUuNS00OS43IDE3LjItNjguNyA1LjUgMTYuNWM1LjMgMTYuMSAxNi43IDI5LjQgMzEuNyAzN2wyMy4zIDExLjhjMTUuNiA3LjkgMzQuNiAxLjUgNDIuNS0xNC4zIDcuNy0xNS43IDEuNC0zNS4xLTE0LjMtNDN6TTczLjYgMzg1LjhjLTMuMiA4LjEtOCAxNS40LTE0LjIgMjEuNWwtNTAgNTAuMWMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuNyAxMi41IDQ1LjIgMGw1OS40LTU5LjRjNi4xLTYuMSAxMC45LTEzLjQgMTQuMi0yMS41bDEzLjUtMzMuOGMtNTUuMy02MC4zLTM4LjctNDEuOC00Ny40LTUzLjdsLTIwLjcgNTEuNXpcIl1cbn07XG52YXIgZmFXYWxsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2FsbGV0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTU1XCIsIFwiTTQ2MS4yIDEyOEg4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgzODRjOC44NCAwIDE2LTcuMTYgMTYtMTYgMC0yNi41MS0yMS40OS00OC00OC00OEg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzk3LjJjMjguMDIgMCA1MC44LTIxLjUzIDUwLjgtNDhWMTc2YzAtMjYuNDctMjIuNzgtNDgtNTAuOC00OHpNNDE2IDMzNmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFXYXJlaG91c2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2FyZWhvdXNlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDk0XCIsIFwiTTUwNCAzNTJIMTM2LjRjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4SDUwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMCA5NkgxMzYuMWMtNC40IDAtOCAzLjYtOCA4bC0uMSA0OGMwIDQuNCAzLjYgOCA4IDhoMzY4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04em0wLTE5MkgxMzYuNmMtNC40IDAtOCAzLjYtOCA4bC0uMSA0OGMwIDQuNCAzLjYgOCA4IDhINTA0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04em0xMDYuNS0xMzlMMzM4LjQgMy43YTQ4LjE1IDQ4LjE1IDAgMCAwLTM2LjkgMEwyOS41IDExN0MxMS43IDEyNC41IDAgMTQxLjkgMCAxNjEuM1Y1MDRjMCA0LjQgMy42IDggOCA4aDgwYzQuNCAwIDgtMy42IDgtOFYyNTZjMC0xNy42IDE0LjYtMzIgMzIuNi0zMmgzODIuOGMxOCAwIDMyLjYgMTQuNCAzMi42IDMydjI0OGMwIDQuNCAzLjYgOCA4IDhoODBjNC40IDAgOC0zLjYgOC04VjE2MS4zYzAtMTkuNC0xMS43LTM2LjgtMjkuNS00NC4zelwiXVxufTtcbnZhciBmYVdhdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNzczXCIsIFwiTTU2Mi4xIDM4My45Yy0yMS41LTIuNC00Mi4xLTEwLjUtNTcuOS0yMi45LTE0LjEtMTEuMS0zNC4yLTExLjMtNDguMiAwLTM3LjkgMzAuNC0xMDcuMiAzMC40LTE0NS43LTEuNS0xMy41LTExLjItMzMtOS4xLTQ2LjcgMS44LTM4IDMwLjEtMTA2LjkgMzAtMTQ1LjItMS43LTEzLjUtMTEuMi0zMy4zLTguOS00Ny4xIDItMTUuNSAxMi4yLTM2IDIwLjEtNTcuNyAyMi40LTcuOS44LTEzLjYgNy44LTEzLjYgMTUuN3YzMi4yYzAgOS4xIDcuNiAxNi44IDE2LjcgMTYgMjguOC0yLjUgNTYuMS0xMS40IDc5LjQtMjUuOSA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDIzLjMgMTQuMiA1MC45IDIzLjMgNzkuMSAyNS44IDkuMS44IDE2LjctNi45IDE2LjctMTZ2LTMxLjZjLjEtOC01LjctMTUuNC0xMy44LTE2LjN6bTAtMTQ0Yy0yMS41LTIuNC00Mi4xLTEwLjUtNTcuOS0yMi45LTE0LjEtMTEuMS0zNC4yLTExLjMtNDguMiAwLTM3LjkgMzAuNC0xMDcuMiAzMC40LTE0NS43LTEuNS0xMy41LTExLjItMzMtOS4xLTQ2LjcgMS44LTM4IDMwLjEtMTA2LjkgMzAtMTQ1LjItMS43LTEzLjUtMTEuMi0zMy4zLTguOS00Ny4xIDItMTUuNSAxMi4yLTM2IDIwLjEtNTcuNyAyMi40LTcuOS44LTEzLjYgNy44LTEzLjYgMTUuN3YzMi4yYzAgOS4xIDcuNiAxNi44IDE2LjcgMTYgMjguOC0yLjUgNTYuMS0xMS40IDc5LjQtMjUuOSA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDIzLjMgMTQuMiA1MC45IDIzLjMgNzkuMSAyNS44IDkuMS44IDE2LjctNi45IDE2LjctMTZ2LTMxLjZjLjEtOC01LjctMTUuNC0xMy44LTE2LjN6bTAtMTQ0QzU0MC42IDkzLjQgNTIwIDg1LjQgNTA0LjIgNzMgNDkwLjEgNjEuOSA0NzAgNjEuNyA0NTYgNzNjLTM3LjkgMzAuNC0xMDcuMiAzMC40LTE0NS43LTEuNS0xMy41LTExLjItMzMtOS4xLTQ2LjcgMS44LTM4IDMwLjEtMTA2LjkgMzAtMTQ1LjItMS43LTEzLjUtMTEuMi0zMy4zLTguOS00Ny4xIDItMTUuNSAxMi4yLTM2IDIwLjEtNTcuNyAyMi40LTcuOS44LTEzLjYgNy44LTEzLjYgMTUuN3YzMi4yYzAgOS4xIDcuNiAxNi44IDE2LjcgMTYgMjguOC0yLjUgNTYuMS0xMS40IDc5LjQtMjUuOSA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDIzLjMgMTQuMiA1MC45IDIzLjMgNzkuMSAyNS44IDkuMS44IDE2LjctNi45IDE2LjctMTZ2LTMxLjZjLjEtOC01LjctMTUuNC0xMy44LTE2LjN6XCJdXG59O1xudmFyIGZhV2F2ZVNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YXZlLXNxdWFyZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjgzZVwiLCBcIk00NzYgNDgwSDMyNGEzNiAzNiAwIDAgMS0zNi0zNlY5NmgtOTZ2MTU2YTM2IDM2IDAgMCAxLTM2IDM2SDE2YTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgxMTJWNjhhMzYgMzYgMCAwIDEgMzYtMzZoMTUyYTM2IDM2IDAgMCAxIDM2IDM2djM0OGg5NlYyNjBhMzYgMzYgMCAwIDEgMzYtMzZoMTQwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDUxMnYxNTZhMzYgMzYgMCAwIDEtMzYgMzZ6XCJdXG59O1xudmFyIGZhV2VpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dlaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ5NlwiLCBcIk00NDggNjRoLTI1Ljk4QzQzOC40NCA5Mi4yOCA0NDggMTI1LjAxIDQ0OCAxNjBjMCAxMDUuODctODYuMTMgMTkyLTE5MiAxOTJTNjQgMjY1Ljg3IDY0IDE2MGMwLTM0Ljk5IDkuNTYtNjcuNzIgMjUuOTgtOTZINjRDMjguNzEgNjQgMCA5Mi43MSAwIDEyOHYzMjBjMCAzNS4yOSAyOC43MSA2NCA2NCA2NGgzODRjMzUuMjkgMCA2NC0yOC43MSA2NC02NFYxMjhjMC0zNS4yOS0yOC43MS02NC02NC02NHpNMjU2IDMyMGM4OC4zNyAwIDE2MC03MS42MyAxNjAtMTYwUzM0NC4zNyAwIDI1NiAwIDk2IDcxLjYzIDk2IDE2MHM3MS42MyAxNjAgMTYwIDE2MHptLS4zLTE1MS45NGwzMy41OC03OC4zNmMzLjUtOC4xNyAxMi45NC0xMS45MiAyMS4wMy04LjQxIDguMTIgMy40OCAxMS44OCAxMi44OSA4LjQxIDIxbC0zMy42NyA3OC41NUMyOTEuNzMgMTg4IDI5NiAxOTcuNDUgMjk2IDIwOGMwIDIyLjA5LTE3LjkxIDQwLTQwIDQwcy00MC0xNy45MS00MC00MGMwLTIxLjk4IDE3Ljc2LTM5Ljc3IDM5LjctMzkuOTR6XCJdXG59O1xudmFyIGZhV2VpZ2h0SGFuZ2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3ZWlnaHQtaGFuZ2luZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVjZFwiLCBcIk01MTAuMjggNDQ1Ljg2bC03My4wMy0yOTIuMTNjLTMuOC0xNS4xOS0xNi40NC0yNS43Mi0zMC44Ny0yNS43MmgtNjAuMjVjMy41Ny0xMC4wNSA1Ljg4LTIwLjcyIDUuODgtMzIgMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZjMCAxMS4yOCAyLjMgMjEuOTUgNS44OCAzMmgtNjAuMjVjLTE0LjQzIDAtMjcuMDggMTAuNTQtMzAuODcgMjUuNzJMMS43MiA0NDUuODZDLTYuNjEgNDc5LjE3IDE2LjM4IDUxMiA0OC4wMyA1MTJoNDE1Ljk1YzMxLjY0IDAgNTQuNjMtMzIuODMgNDYuMy02Ni4xNHpNMjU2IDEyOGMtMTcuNjQgMC0zMi0xNC4zNi0zMi0zMnMxNC4zNi0zMiAzMi0zMiAzMiAxNC4zNiAzMiAzMi0xNC4zNiAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFXaGVlbGNoYWlyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3doZWVsY2hhaXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxOTNcIiwgXCJNNDk2LjEwMSAzODUuNjY5bDE0LjIyNyAyOC42NjNjMy45MjkgNy45MTUuNjk3IDE3LjUxNi03LjIxOCAyMS40NDVsLTY1LjQ2NSAzMi44ODZjLTE2LjA0OSA3Ljk2Ny0zNS41NTYgMS4xOTQtNDMuMTg5LTE1LjA1NUwzMzEuNjc5IDMyMEgxOTJjLTE1LjkyNSAwLTI5LjQyNi0xMS43MS0zMS42NzktMjcuNDc1QzEyNi40MzMgNTUuMzA4IDEyOC4zOCA3MC4wNDQgMTI4IDY0YzAtMzYuMzU4IDMwLjMxOC02NS42MzUgNjcuMDUyLTYzLjkyOSAzMy4yNzEgMS41NDUgNjAuMDQ4IDI4LjkwNSA2MC45MjUgNjIuMjAxLjg2OCAzMi45MzMtMjMuMTUyIDYwLjQyMy01NC42MDggNjUuMDM5bDQuNjcgMzIuNjlIMzM2YzguODM3IDAgMTYgNy4xNjMgMTYgMTZ2MzJjMCA4LjgzNy03LjE2MyAxNi0xNiAxNkgyMTUuMTgybDQuNTcyIDMySDM1MmEzMiAzMiAwIDAgMSAyOC45NjIgMTguMzkyTDQzOC40NzcgMzk2LjhsMzYuMTc4LTE4LjM0OWM3LjkxNS0zLjkyOSAxNy41MTctLjY5NyAyMS40NDYgNy4yMTh6TTMxMS4zNTggMzUyaC0yNC41MDZjLTcuNzg4IDU0LjIwNC01NC41MjggOTYtMTEwLjg1MiA5Ni02MS43NTcgMC0xMTItNTAuMjQzLTExMi0xMTIgMC00MS41MDUgMjIuNjk0LTc3LjgwOSA1Ni4zMjQtOTcuMTU2LTMuNzEyLTI1Ljk2NS02Ljg0NC00Ny44Ni05LjQ4OC02Ni4zMzNDNDUuOTU2IDE5OC40NjQgMCAyNjEuOTYzIDAgMzM2YzAgOTcuMDQ3IDc4Ljk1MyAxNzYgMTc2IDE3NiA3MS44NyAwIDEzMy44MDYtNDMuMzA4IDE2MS4xMS0xMDUuMTkyTDMxMS4zNTggMzUyelwiXVxufTtcbnZhciBmYVdpZmkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2lmaScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjFlYlwiLCBcIk02MzQuOTEgMTU0Ljg4QzQ1Ny43NC04Ljk5IDE4Mi4xOS04LjkzIDUuMDkgMTU0Ljg4Yy02LjY2IDYuMTYtNi43OSAxNi41OS0uMzUgMjIuOThsMzQuMjQgMzMuOTdjNi4xNCA2LjEgMTYuMDIgNi4yMyAyMi40LjM4IDE0NS45Mi0xMzMuNjggMzcxLjMtMTMzLjcxIDUxNy4yNSAwIDYuMzggNS44NSAxNi4yNiA1LjcxIDIyLjQtLjM4bDM0LjI0LTMzLjk3YzYuNDMtNi4zOSA2LjMtMTYuODItLjM2LTIyLjk4ek0zMjAgMzUyYy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0czI4LjY1IDY0IDY0IDY0IDY0LTI4LjY1IDY0LTY0LTI4LjY1LTY0LTY0LTY0em0yMDIuNjctODMuNTljLTExNS4yNi0xMDEuOTMtMjkwLjIxLTEwMS44Mi00MDUuMzQgMC02LjkgNi4xLTcuMTIgMTYuNjktLjU3IDIzLjE1bDM0LjQ0IDMzLjk5YzYgNS45MiAxNS42NiA2LjMyIDIyLjA1LjggODMuOTUtNzIuNTcgMjA5Ljc0LTcyLjQxIDI5My40OSAwIDYuMzkgNS41MiAxNi4wNSA1LjEzIDIyLjA1LS44bDM0LjQ0LTMzLjk5YzYuNTYtNi40NiA2LjMzLTE3LjA2LS41Ni0yMy4xNXpcIl1cbn07XG52YXIgZmFXaW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpbmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3MmVcIiwgXCJNMTU2LjcgMjU2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDE0Mi4yYzE1LjkgMCAzMC44IDEwLjkgMzMuNCAyNi42IDMuMyAyMC0xMi4xIDM3LjQtMzEuNiAzNy40LTE0LjEgMC0yNi4xLTkuMi0zMC40LTIxLjktMi4xLTYuMy04LjYtMTAuMS0xNS4yLTEwLjFIODEuNmMtOS44IDAtMTcuNyA4LjgtMTUuOSAxOC40IDguNiA0NC4xIDQ3LjYgNzcuNiA5NC4yIDc3LjYgNTcuMSAwIDEwMi43LTUwLjEgOTUuMi0xMDguNkMyNDkgMjkxIDIwNS40IDI1NiAxNTYuNyAyNTZ6TTE2IDIyNGgzMzZjNTkuNyAwIDEwNi44LTU0LjggOTMuOC0xMTYuNy03LjYtMzYuMi0zNi45LTY1LjUtNzMuMS03My4xLTU1LjQtMTEuNi0xMDUuMSAyNC45LTExNC45IDc1LjUtMS45IDkuNiA2LjEgMTguMyAxNS44IDE4LjNoMzIuOGM2LjcgMCAxMy4xLTMuOCAxNS4yLTEwLjFDMzI1LjkgMTA1LjIgMzM3LjkgOTYgMzUyIDk2YzE5LjQgMCAzNC45IDE3LjQgMzEuNiAzNy40LTIuNiAxNS43LTE3LjQgMjYuNi0zMy40IDI2LjZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZ6bTM4NCAzMkgyNDMuN2MxOS4zIDE2LjYgMzMuMiAzOC44IDM5LjggNjRINDAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4Yy0xNy45IDAtMzMuMy05LjktNDEuNi0yNC40LTIuOS01LTguNy03LjYtMTQuNS03LjZoLTMzLjhjLTEwLjkgMC0xOSAxMC44LTE1LjMgMjEuMSAxNy44IDUwLjYgNzAuNSA4NC44IDEyOS40IDcyLjMgNDEuMi04LjcgNzUuMS00MS42IDg0LjctODIuN0M1MjYgMzIxLjUgNDcwLjUgMjU2IDQwMCAyNTZ6XCJdXG59O1xudmFyIGZhV2luZG93Q2xvc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZG93LWNsb3NlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDEwXCIsIFwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS04My42IDI5MC41YzQuOCA0LjggNC44IDEyLjYgMCAxNy40bC00MC41IDQwLjVjLTQuOCA0LjgtMTIuNiA0LjgtMTcuNCAwTDI1NiAzMTMuM2wtNjYuNSA2Ny4xYy00LjggNC44LTEyLjYgNC44LTE3LjQgMGwtNDAuNS00MC41Yy00LjgtNC44LTQuOC0xMi42IDAtMTcuNGw2Ny4xLTY2LjUtNjcuMS02Ni41Yy00LjgtNC44LTQuOC0xMi42IDAtMTcuNGw0MC41LTQwLjVjNC44LTQuOCAxMi42LTQuOCAxNy40IDBsNjYuNSA2Ny4xIDY2LjUtNjcuMWM0LjgtNC44IDEyLjYtNC44IDE3LjQgMGw0MC41IDQwLjVjNC44IDQuOCA0LjggMTIuNiAwIDE3LjRMMzEzLjMgMjU2bDY3LjEgNjYuNXpcIl1cbn07XG52YXIgZmFXaW5kb3dNYXhpbWl6ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5kb3ctbWF4aW1pemUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyZDBcIiwgXCJNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTE2IDE2MEg2NHYtODRjMC02LjYgNS40LTEyIDEyLTEyaDM2MGM2LjYgMCAxMiA1LjQgMTIgMTJ2ODR6XCJdXG59O1xudmFyIGZhV2luZG93TWluaW1pemUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZG93LW1pbmltaXplJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmQxXCIsIFwiTTQ2NCAzNTJINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhV2luZG93UmVzdG9yZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5kb3ctcmVzdG9yZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJkMlwiLCBcIk01MTIgNDh2Mjg4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4aC00OFYxNzZjMC00NC4xLTM1LjktODAtODAtODBIMTI4VjQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDI4OGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMzg0IDE3NnYyODhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE3NmMwLTI2LjUgMjEuNS00OCA0OC00OGgyODhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02OCAyOGMwLTYuNi01LjQtMTItMTItMTJINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY1MmgyNTJ2LTUyelwiXVxufTtcbnZhciBmYVdpbmVCb3R0bGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZS1ib3R0bGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3MmZcIiwgXCJNNTA3LjMxIDcyLjU3TDQzOS40MyA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0yMi42MyAyMi42M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wtNzYuNjcgNzYuNjdjLTQ2LjU4LTE5LjctMTAyLjQtMTAuNzMtMTQwLjM3IDI3LjIzTDE4Ljc1IDMxMi4yM2MtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTIgMCA5MC41MWw5MC41MSA5MC41MWMyNC45OSAyNC45OSA2NS41MiAyNC45OSA5MC41MSAwbDE1OC4zOS0xNTguMzljMzcuOTYtMzcuOTYgNDYuOTMtOTMuNzkgMjcuMjMtMTQwLjM3bDc2LjY3LTc2LjY3YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjMtMjIuNjNjNi4yNC02LjI0IDYuMjQtMTYuMzctLjAxLTIyLjYyek0xNzkuMjIgNDIzLjI5bC05MC41MS05MC41MSAxMjIuMDQtMTIyLjA0IDkwLjUxIDkwLjUxLTEyMi4wNCAxMjIuMDR6XCJdXG59O1xudmFyIGZhV2luZUdsYXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpbmUtZ2xhc3MnLFxuICBpY29uOiBbMjg4LCA1MTIsIFtdLCBcImY0ZTNcIiwgXCJNMjE2IDQ2NGgtNDBWMzQ2LjgxYzY4LjQ3LTE1Ljg5IDExOC4wNS03OS45MSAxMTEuNC0xNTQuMTZsLTE1Ljk1LTE3OC4xQzI3MC43MSA2LjMxIDI2My45IDAgMjU1Ljc0IDBIMzIuMjZjLTguMTUgMC0xNC45NyA2LjMxLTE1LjcgMTQuNTVMLjYgMTkyLjY2Qy02LjA1IDI2Ni45MSA0My41MyAzMzAuOTMgMTEyIDM0Ni44MlY0NjRINzJjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjA4YzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDB6XCJdXG59O1xudmFyIGZhV2luZUdsYXNzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpbmUtZ2xhc3MtYWx0JyxcbiAgaWNvbjogWzI4OCwgNTEyLCBbXSwgXCJmNWNlXCIsIFwiTTIxNiA0NjRoLTQwVjM0Ni44MWM2OC40Ny0xNS44OSAxMTguMDUtNzkuOTEgMTExLjQtMTU0LjE2bC0xNS45NS0xNzguMUMyNzAuNzEgNi4zMSAyNjMuOSAwIDI1NS43NCAwSDMyLjI2Yy04LjE1IDAtMTQuOTcgNi4zMS0xNS43IDE0LjU1TC42IDE5Mi42NkMtNi4wNSAyNjYuOTEgNDMuNTMgMzMwLjkzIDExMiAzNDYuODJWNDY0SDcyYy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDIwOGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwek02MS43NSA0OGgxNjQuNWw3LjE3IDgwSDU0LjU4bDcuMTctODB6XCJdXG59O1xudmFyIGZhV29uU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3b24tc2lnbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjE1OVwiLCBcIk01NjQgMTkyYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00OGwxOC42LTgwLjZjMS43LTcuNS00LTE0LjctMTEuNy0xNC43aC00Ni4xYy01LjcgMC0xMC42IDQtMTEuNyA5LjVMNDUwLjcgMTI4SDM0MC44bC0xOS43LTg2Yy0xLjMtNS41LTYuMS05LjMtMTEuNy05LjNoLTQ0Yy01LjYgMC0xMC40IDMuOC0xMS43IDkuM2wtMjAgODZIMTI1bC0xNy41LTg1LjdjLTEuMS01LjYtNi4xLTkuNi0xMS44LTkuNkg1My42Yy03LjcgMC0xMy40IDcuMS0xMS43IDE0LjZMNjAgMTI4SDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDYyLjNsNy4yIDMySDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDgzLjlsNDAuOSAxODIuNmMxLjIgNS41IDYuMSA5LjQgMTEuNyA5LjRoNTYuOGM1LjYgMCAxMC40LTMuOSAxMS43LTkuM0wyNTkuMyAyODhoNTUuMWw0Mi40IDE4Mi43YzEuMyA1LjQgNi4xIDkuMyAxMS43IDkuM2g1Ni44YzUuNiAwIDEwLjQtMy45IDExLjctOS4zTDQ3OS4xIDI4OEg1NjRjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTcwLjFsNy40LTMyek0xODMuOCAzNDJjLTYuMiAyNS44LTYuOCA0Ny4yLTcuMyA0Ny4yaC0xLjFzLTEuNy0yMi02LjgtNDcuMmwtMTEtNTRoMzguOHptMjcuNS0xMThoLTY2LjhsLTYuNS0zMmg4MC44em02Mi45IDBsMi04LjZjMS45LTggMy41LTE2IDQuOC0yMy40aDExLjhjMS4zIDcuNCAyLjkgMTUuNCA0LjggMjMuNGwyIDguNnptMTMwLjkgMTE4Yy01LjEgMjUuMi02LjggNDcuMi02LjggNDcuMmgtMS4xYy0uNiAwLTEuMS0yMS40LTcuMy00Ny4ybC0xMi40LTU0aDM5LjF6bTI1LjItMTE4aC02Ny40bC03LjMtMzJoODEuNnpcIl1cbn07XG52YXIgZmFXcmVuY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd3JlbmNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGFkXCIsIFwiTTUwNy43MyAxMDkuMWMtMi4yNC05LjAzLTEzLjU0LTEyLjA5LTIwLjEyLTUuNTFsLTc0LjM2IDc0LjM2LTY3Ljg4LTExLjMxLTExLjMxLTY3Ljg4IDc0LjM2LTc0LjM2YzYuNjItNi42MiAzLjQzLTE3LjktNS42Ni0yMC4xNi00Ny4zOC0xMS43NC05OS41NS45MS0xMzYuNTggMzcuOTMtMzkuNjQgMzkuNjQtNTAuNTUgOTcuMS0zNC4wNSAxNDcuMkwxOC43NCA0MDIuNzZjLTI0Ljk5IDI0Ljk5LTI0Ljk5IDY1LjUxIDAgOTAuNSAyNC45OSAyNC45OSA2NS41MSAyNC45OSA5MC41IDBsMjEzLjIxLTIxMy4yMWM1MC4xMiAxNi43MSAxMDcuNDcgNS42OCAxNDcuMzctMzQuMjIgMzcuMDctMzcuMDcgNDkuNy04OS4zMiAzNy45MS0xMzYuNzN6TTY0IDQ3MmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJdXG59O1xudmFyIGZhWFJheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd4LXJheScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ5N1wiLCBcIk0yNDAgMzg0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNi03LjItMTYtMTYtMTZ6bTE2MCAzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2ek02MjQgMEgxNkM3LjIgMCAwIDcuMiAwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNnptMCA0NDhoLTQ4Vjk2SDY0djM1MkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTQ4MCAyNDhjMCA0LjQtMy42IDgtOCA4SDMzNnYzMmgxMDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzMzZ2MzJoNjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDgtNDgtMjEuNS00OC00OHYtMTZoLTY0djE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4IDIxLjUtNDggNDgtNDhoNjR2LTMySDIwMGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTA0di0zMkgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDEzNnYtMzJIMjAwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMDR2LTI0YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2MjRoMTA0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzM2djMyaDEzNmM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJdXG59O1xudmFyIGZhWWVuU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd5ZW4tc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjE1N1wiLCBcIk0zNTEuMiAzMmgtNjUuM2MtNC42IDAtOC44IDIuNi0xMC44IDYuN2wtNTUuNCAxMTMuMmMtMTQuNSAzNC43LTI3LjEgNzEuOS0yNy4xIDcxLjloLTEuM3MtMTIuNi0zNy4yLTI3LjEtNzEuOUwxMDguOCAzOC43Yy0yLTQuMS02LjItNi43LTEwLjgtNi43SDMyLjhjLTkuMSAwLTE0LjggOS43LTEwLjYgMTcuNkwxMDIuMyAyMDBINDRjLTYuNiAwLTEyIDUuNC0xMiAxMnYzMmMwIDYuNiA1LjQgMTIgMTIgMTJoODguMmwxOS44IDM3LjJWMzIwSDQ0Yy02LjYgMC0xMiA1LjQtMTIgMTJ2MzJjMCA2LjYgNS40IDEyIDEyIDEyaDEwOHY5MmMwIDYuNiA1LjQgMTIgMTIgMTJoNTZjNi42IDAgMTItNS40IDEyLTEydi05MmgxMDhjNi42IDAgMTItNS40IDEyLTEydi0zMmMwLTYuNi01LjQtMTItMTItMTJIMjMydi0yNi44bDE5LjgtMzcuMkgzNDBjNi42IDAgMTItNS40IDEyLTEydi0zMmMwLTYuNi01LjQtMTItMTItMTJoLTU4LjNsODAuMS0xNTAuNGM0LjMtNy45LTEuNS0xNy42LTEwLjYtMTcuNnpcIl1cbn07XG52YXIgZmFZaW5ZYW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3lpbi15YW5nJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNmFkXCIsIFwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgMzc2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTEyOGMtNTMuMDIgMC05NiA0Mi45OC05NiA5NnM0Mi45OCA5NiA5NiA5NmMtMTA2LjA0IDAtMTkyLTg1Ljk2LTE5Mi0xOTJTMTQxLjk2IDY0IDI0OCA2NGM1My4wMiAwIDk2IDQyLjk4IDk2IDk2cy00Mi45OCA5Ni05NiA5NnptMC0xMjhjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJdXG59O1xudmFyIF9pY29uc0NhY2hlID0ge1xuICBmYUFkOiBmYUFkLFxuICBmYUFkZHJlc3NCb29rOiBmYUFkZHJlc3NCb29rLFxuICBmYUFkZHJlc3NDYXJkOiBmYUFkZHJlc3NDYXJkLFxuICBmYUFkanVzdDogZmFBZGp1c3QsXG4gIGZhQWlyRnJlc2hlbmVyOiBmYUFpckZyZXNoZW5lcixcbiAgZmFBbGlnbkNlbnRlcjogZmFBbGlnbkNlbnRlcixcbiAgZmFBbGlnbkp1c3RpZnk6IGZhQWxpZ25KdXN0aWZ5LFxuICBmYUFsaWduTGVmdDogZmFBbGlnbkxlZnQsXG4gIGZhQWxpZ25SaWdodDogZmFBbGlnblJpZ2h0LFxuICBmYUFsbGVyZ2llczogZmFBbGxlcmdpZXMsXG4gIGZhQW1idWxhbmNlOiBmYUFtYnVsYW5jZSxcbiAgZmFBbWVyaWNhblNpZ25MYW5ndWFnZUludGVycHJldGluZzogZmFBbWVyaWNhblNpZ25MYW5ndWFnZUludGVycHJldGluZyxcbiAgZmFBbmNob3I6IGZhQW5jaG9yLFxuICBmYUFuZ2xlRG91YmxlRG93bjogZmFBbmdsZURvdWJsZURvd24sXG4gIGZhQW5nbGVEb3VibGVMZWZ0OiBmYUFuZ2xlRG91YmxlTGVmdCxcbiAgZmFBbmdsZURvdWJsZVJpZ2h0OiBmYUFuZ2xlRG91YmxlUmlnaHQsXG4gIGZhQW5nbGVEb3VibGVVcDogZmFBbmdsZURvdWJsZVVwLFxuICBmYUFuZ2xlRG93bjogZmFBbmdsZURvd24sXG4gIGZhQW5nbGVMZWZ0OiBmYUFuZ2xlTGVmdCxcbiAgZmFBbmdsZVJpZ2h0OiBmYUFuZ2xlUmlnaHQsXG4gIGZhQW5nbGVVcDogZmFBbmdsZVVwLFxuICBmYUFuZ3J5OiBmYUFuZ3J5LFxuICBmYUFua2g6IGZhQW5raCxcbiAgZmFBcHBsZUFsdDogZmFBcHBsZUFsdCxcbiAgZmFBcmNoaXZlOiBmYUFyY2hpdmUsXG4gIGZhQXJjaHdheTogZmFBcmNod2F5LFxuICBmYUFycm93QWx0Q2lyY2xlRG93bjogZmFBcnJvd0FsdENpcmNsZURvd24sXG4gIGZhQXJyb3dBbHRDaXJjbGVMZWZ0OiBmYUFycm93QWx0Q2lyY2xlTGVmdCxcbiAgZmFBcnJvd0FsdENpcmNsZVJpZ2h0OiBmYUFycm93QWx0Q2lyY2xlUmlnaHQsXG4gIGZhQXJyb3dBbHRDaXJjbGVVcDogZmFBcnJvd0FsdENpcmNsZVVwLFxuICBmYUFycm93Q2lyY2xlRG93bjogZmFBcnJvd0NpcmNsZURvd24sXG4gIGZhQXJyb3dDaXJjbGVMZWZ0OiBmYUFycm93Q2lyY2xlTGVmdCxcbiAgZmFBcnJvd0NpcmNsZVJpZ2h0OiBmYUFycm93Q2lyY2xlUmlnaHQsXG4gIGZhQXJyb3dDaXJjbGVVcDogZmFBcnJvd0NpcmNsZVVwLFxuICBmYUFycm93RG93bjogZmFBcnJvd0Rvd24sXG4gIGZhQXJyb3dMZWZ0OiBmYUFycm93TGVmdCxcbiAgZmFBcnJvd1JpZ2h0OiBmYUFycm93UmlnaHQsXG4gIGZhQXJyb3dVcDogZmFBcnJvd1VwLFxuICBmYUFycm93c0FsdDogZmFBcnJvd3NBbHQsXG4gIGZhQXJyb3dzQWx0SDogZmFBcnJvd3NBbHRILFxuICBmYUFycm93c0FsdFY6IGZhQXJyb3dzQWx0VixcbiAgZmFBc3Npc3RpdmVMaXN0ZW5pbmdTeXN0ZW1zOiBmYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXMsXG4gIGZhQXN0ZXJpc2s6IGZhQXN0ZXJpc2ssXG4gIGZhQXQ6IGZhQXQsXG4gIGZhQXRsYXM6IGZhQXRsYXMsXG4gIGZhQXRvbTogZmFBdG9tLFxuICBmYUF1ZGlvRGVzY3JpcHRpb246IGZhQXVkaW9EZXNjcmlwdGlvbixcbiAgZmFBd2FyZDogZmFBd2FyZCxcbiAgZmFCYWJ5OiBmYUJhYnksXG4gIGZhQmFieUNhcnJpYWdlOiBmYUJhYnlDYXJyaWFnZSxcbiAgZmFCYWNrc3BhY2U6IGZhQmFja3NwYWNlLFxuICBmYUJhY2t3YXJkOiBmYUJhY2t3YXJkLFxuICBmYUJhY29uOiBmYUJhY29uLFxuICBmYUJhY3RlcmlhOiBmYUJhY3RlcmlhLFxuICBmYUJhY3Rlcml1bTogZmFCYWN0ZXJpdW0sXG4gIGZhQmFoYWk6IGZhQmFoYWksXG4gIGZhQmFsYW5jZVNjYWxlOiBmYUJhbGFuY2VTY2FsZSxcbiAgZmFCYWxhbmNlU2NhbGVMZWZ0OiBmYUJhbGFuY2VTY2FsZUxlZnQsXG4gIGZhQmFsYW5jZVNjYWxlUmlnaHQ6IGZhQmFsYW5jZVNjYWxlUmlnaHQsXG4gIGZhQmFuOiBmYUJhbixcbiAgZmFCYW5kQWlkOiBmYUJhbmRBaWQsXG4gIGZhQmFyY29kZTogZmFCYXJjb2RlLFxuICBmYUJhcnM6IGZhQmFycyxcbiAgZmFCYXNlYmFsbEJhbGw6IGZhQmFzZWJhbGxCYWxsLFxuICBmYUJhc2tldGJhbGxCYWxsOiBmYUJhc2tldGJhbGxCYWxsLFxuICBmYUJhdGg6IGZhQmF0aCxcbiAgZmFCYXR0ZXJ5RW1wdHk6IGZhQmF0dGVyeUVtcHR5LFxuICBmYUJhdHRlcnlGdWxsOiBmYUJhdHRlcnlGdWxsLFxuICBmYUJhdHRlcnlIYWxmOiBmYUJhdHRlcnlIYWxmLFxuICBmYUJhdHRlcnlRdWFydGVyOiBmYUJhdHRlcnlRdWFydGVyLFxuICBmYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzOiBmYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzLFxuICBmYUJlZDogZmFCZWQsXG4gIGZhQmVlcjogZmFCZWVyLFxuICBmYUJlbGw6IGZhQmVsbCxcbiAgZmFCZWxsU2xhc2g6IGZhQmVsbFNsYXNoLFxuICBmYUJlemllckN1cnZlOiBmYUJlemllckN1cnZlLFxuICBmYUJpYmxlOiBmYUJpYmxlLFxuICBmYUJpY3ljbGU6IGZhQmljeWNsZSxcbiAgZmFCaWtpbmc6IGZhQmlraW5nLFxuICBmYUJpbm9jdWxhcnM6IGZhQmlub2N1bGFycyxcbiAgZmFCaW9oYXphcmQ6IGZhQmlvaGF6YXJkLFxuICBmYUJpcnRoZGF5Q2FrZTogZmFCaXJ0aGRheUNha2UsXG4gIGZhQmxlbmRlcjogZmFCbGVuZGVyLFxuICBmYUJsZW5kZXJQaG9uZTogZmFCbGVuZGVyUGhvbmUsXG4gIGZhQmxpbmQ6IGZhQmxpbmQsXG4gIGZhQmxvZzogZmFCbG9nLFxuICBmYUJvbGQ6IGZhQm9sZCxcbiAgZmFCb2x0OiBmYUJvbHQsXG4gIGZhQm9tYjogZmFCb21iLFxuICBmYUJvbmU6IGZhQm9uZSxcbiAgZmFCb25nOiBmYUJvbmcsXG4gIGZhQm9vazogZmFCb29rLFxuICBmYUJvb2tEZWFkOiBmYUJvb2tEZWFkLFxuICBmYUJvb2tNZWRpY2FsOiBmYUJvb2tNZWRpY2FsLFxuICBmYUJvb2tPcGVuOiBmYUJvb2tPcGVuLFxuICBmYUJvb2tSZWFkZXI6IGZhQm9va1JlYWRlcixcbiAgZmFCb29rbWFyazogZmFCb29rbWFyayxcbiAgZmFCb3JkZXJBbGw6IGZhQm9yZGVyQWxsLFxuICBmYUJvcmRlck5vbmU6IGZhQm9yZGVyTm9uZSxcbiAgZmFCb3JkZXJTdHlsZTogZmFCb3JkZXJTdHlsZSxcbiAgZmFCb3dsaW5nQmFsbDogZmFCb3dsaW5nQmFsbCxcbiAgZmFCb3g6IGZhQm94LFxuICBmYUJveE9wZW46IGZhQm94T3BlbixcbiAgZmFCb3hUaXNzdWU6IGZhQm94VGlzc3VlLFxuICBmYUJveGVzOiBmYUJveGVzLFxuICBmYUJyYWlsbGU6IGZhQnJhaWxsZSxcbiAgZmFCcmFpbjogZmFCcmFpbixcbiAgZmFCcmVhZFNsaWNlOiBmYUJyZWFkU2xpY2UsXG4gIGZhQnJpZWZjYXNlOiBmYUJyaWVmY2FzZSxcbiAgZmFCcmllZmNhc2VNZWRpY2FsOiBmYUJyaWVmY2FzZU1lZGljYWwsXG4gIGZhQnJvYWRjYXN0VG93ZXI6IGZhQnJvYWRjYXN0VG93ZXIsXG4gIGZhQnJvb206IGZhQnJvb20sXG4gIGZhQnJ1c2g6IGZhQnJ1c2gsXG4gIGZhQnVnOiBmYUJ1ZyxcbiAgZmFCdWlsZGluZzogZmFCdWlsZGluZyxcbiAgZmFCdWxsaG9ybjogZmFCdWxsaG9ybixcbiAgZmFCdWxsc2V5ZTogZmFCdWxsc2V5ZSxcbiAgZmFCdXJuOiBmYUJ1cm4sXG4gIGZhQnVzOiBmYUJ1cyxcbiAgZmFCdXNBbHQ6IGZhQnVzQWx0LFxuICBmYUJ1c2luZXNzVGltZTogZmFCdXNpbmVzc1RpbWUsXG4gIGZhQ2FsY3VsYXRvcjogZmFDYWxjdWxhdG9yLFxuICBmYUNhbGVuZGFyOiBmYUNhbGVuZGFyLFxuICBmYUNhbGVuZGFyQWx0OiBmYUNhbGVuZGFyQWx0LFxuICBmYUNhbGVuZGFyQ2hlY2s6IGZhQ2FsZW5kYXJDaGVjayxcbiAgZmFDYWxlbmRhckRheTogZmFDYWxlbmRhckRheSxcbiAgZmFDYWxlbmRhck1pbnVzOiBmYUNhbGVuZGFyTWludXMsXG4gIGZhQ2FsZW5kYXJQbHVzOiBmYUNhbGVuZGFyUGx1cyxcbiAgZmFDYWxlbmRhclRpbWVzOiBmYUNhbGVuZGFyVGltZXMsXG4gIGZhQ2FsZW5kYXJXZWVrOiBmYUNhbGVuZGFyV2VlayxcbiAgZmFDYW1lcmE6IGZhQ2FtZXJhLFxuICBmYUNhbWVyYVJldHJvOiBmYUNhbWVyYVJldHJvLFxuICBmYUNhbXBncm91bmQ6IGZhQ2FtcGdyb3VuZCxcbiAgZmFDYW5keUNhbmU6IGZhQ2FuZHlDYW5lLFxuICBmYUNhbm5hYmlzOiBmYUNhbm5hYmlzLFxuICBmYUNhcHN1bGVzOiBmYUNhcHN1bGVzLFxuICBmYUNhcjogZmFDYXIsXG4gIGZhQ2FyQWx0OiBmYUNhckFsdCxcbiAgZmFDYXJCYXR0ZXJ5OiBmYUNhckJhdHRlcnksXG4gIGZhQ2FyQ3Jhc2g6IGZhQ2FyQ3Jhc2gsXG4gIGZhQ2FyU2lkZTogZmFDYXJTaWRlLFxuICBmYUNhcmF2YW46IGZhQ2FyYXZhbixcbiAgZmFDYXJldERvd246IGZhQ2FyZXREb3duLFxuICBmYUNhcmV0TGVmdDogZmFDYXJldExlZnQsXG4gIGZhQ2FyZXRSaWdodDogZmFDYXJldFJpZ2h0LFxuICBmYUNhcmV0U3F1YXJlRG93bjogZmFDYXJldFNxdWFyZURvd24sXG4gIGZhQ2FyZXRTcXVhcmVMZWZ0OiBmYUNhcmV0U3F1YXJlTGVmdCxcbiAgZmFDYXJldFNxdWFyZVJpZ2h0OiBmYUNhcmV0U3F1YXJlUmlnaHQsXG4gIGZhQ2FyZXRTcXVhcmVVcDogZmFDYXJldFNxdWFyZVVwLFxuICBmYUNhcmV0VXA6IGZhQ2FyZXRVcCxcbiAgZmFDYXJyb3Q6IGZhQ2Fycm90LFxuICBmYUNhcnRBcnJvd0Rvd246IGZhQ2FydEFycm93RG93bixcbiAgZmFDYXJ0UGx1czogZmFDYXJ0UGx1cyxcbiAgZmFDYXNoUmVnaXN0ZXI6IGZhQ2FzaFJlZ2lzdGVyLFxuICBmYUNhdDogZmFDYXQsXG4gIGZhQ2VydGlmaWNhdGU6IGZhQ2VydGlmaWNhdGUsXG4gIGZhQ2hhaXI6IGZhQ2hhaXIsXG4gIGZhQ2hhbGtib2FyZDogZmFDaGFsa2JvYXJkLFxuICBmYUNoYWxrYm9hcmRUZWFjaGVyOiBmYUNoYWxrYm9hcmRUZWFjaGVyLFxuICBmYUNoYXJnaW5nU3RhdGlvbjogZmFDaGFyZ2luZ1N0YXRpb24sXG4gIGZhQ2hhcnRBcmVhOiBmYUNoYXJ0QXJlYSxcbiAgZmFDaGFydEJhcjogZmFDaGFydEJhcixcbiAgZmFDaGFydExpbmU6IGZhQ2hhcnRMaW5lLFxuICBmYUNoYXJ0UGllOiBmYUNoYXJ0UGllLFxuICBmYUNoZWNrOiBmYUNoZWNrLFxuICBmYUNoZWNrQ2lyY2xlOiBmYUNoZWNrQ2lyY2xlLFxuICBmYUNoZWNrRG91YmxlOiBmYUNoZWNrRG91YmxlLFxuICBmYUNoZWNrU3F1YXJlOiBmYUNoZWNrU3F1YXJlLFxuICBmYUNoZWVzZTogZmFDaGVlc2UsXG4gIGZhQ2hlc3M6IGZhQ2hlc3MsXG4gIGZhQ2hlc3NCaXNob3A6IGZhQ2hlc3NCaXNob3AsXG4gIGZhQ2hlc3NCb2FyZDogZmFDaGVzc0JvYXJkLFxuICBmYUNoZXNzS2luZzogZmFDaGVzc0tpbmcsXG4gIGZhQ2hlc3NLbmlnaHQ6IGZhQ2hlc3NLbmlnaHQsXG4gIGZhQ2hlc3NQYXduOiBmYUNoZXNzUGF3bixcbiAgZmFDaGVzc1F1ZWVuOiBmYUNoZXNzUXVlZW4sXG4gIGZhQ2hlc3NSb29rOiBmYUNoZXNzUm9vayxcbiAgZmFDaGV2cm9uQ2lyY2xlRG93bjogZmFDaGV2cm9uQ2lyY2xlRG93bixcbiAgZmFDaGV2cm9uQ2lyY2xlTGVmdDogZmFDaGV2cm9uQ2lyY2xlTGVmdCxcbiAgZmFDaGV2cm9uQ2lyY2xlUmlnaHQ6IGZhQ2hldnJvbkNpcmNsZVJpZ2h0LFxuICBmYUNoZXZyb25DaXJjbGVVcDogZmFDaGV2cm9uQ2lyY2xlVXAsXG4gIGZhQ2hldnJvbkRvd246IGZhQ2hldnJvbkRvd24sXG4gIGZhQ2hldnJvbkxlZnQ6IGZhQ2hldnJvbkxlZnQsXG4gIGZhQ2hldnJvblJpZ2h0OiBmYUNoZXZyb25SaWdodCxcbiAgZmFDaGV2cm9uVXA6IGZhQ2hldnJvblVwLFxuICBmYUNoaWxkOiBmYUNoaWxkLFxuICBmYUNodXJjaDogZmFDaHVyY2gsXG4gIGZhQ2lyY2xlOiBmYUNpcmNsZSxcbiAgZmFDaXJjbGVOb3RjaDogZmFDaXJjbGVOb3RjaCxcbiAgZmFDaXR5OiBmYUNpdHksXG4gIGZhQ2xpbmljTWVkaWNhbDogZmFDbGluaWNNZWRpY2FsLFxuICBmYUNsaXBib2FyZDogZmFDbGlwYm9hcmQsXG4gIGZhQ2xpcGJvYXJkQ2hlY2s6IGZhQ2xpcGJvYXJkQ2hlY2ssXG4gIGZhQ2xpcGJvYXJkTGlzdDogZmFDbGlwYm9hcmRMaXN0LFxuICBmYUNsb2NrOiBmYUNsb2NrLFxuICBmYUNsb25lOiBmYUNsb25lLFxuICBmYUNsb3NlZENhcHRpb25pbmc6IGZhQ2xvc2VkQ2FwdGlvbmluZyxcbiAgZmFDbG91ZDogZmFDbG91ZCxcbiAgZmFDbG91ZERvd25sb2FkQWx0OiBmYUNsb3VkRG93bmxvYWRBbHQsXG4gIGZhQ2xvdWRNZWF0YmFsbDogZmFDbG91ZE1lYXRiYWxsLFxuICBmYUNsb3VkTW9vbjogZmFDbG91ZE1vb24sXG4gIGZhQ2xvdWRNb29uUmFpbjogZmFDbG91ZE1vb25SYWluLFxuICBmYUNsb3VkUmFpbjogZmFDbG91ZFJhaW4sXG4gIGZhQ2xvdWRTaG93ZXJzSGVhdnk6IGZhQ2xvdWRTaG93ZXJzSGVhdnksXG4gIGZhQ2xvdWRTdW46IGZhQ2xvdWRTdW4sXG4gIGZhQ2xvdWRTdW5SYWluOiBmYUNsb3VkU3VuUmFpbixcbiAgZmFDbG91ZFVwbG9hZEFsdDogZmFDbG91ZFVwbG9hZEFsdCxcbiAgZmFDb2NrdGFpbDogZmFDb2NrdGFpbCxcbiAgZmFDb2RlOiBmYUNvZGUsXG4gIGZhQ29kZUJyYW5jaDogZmFDb2RlQnJhbmNoLFxuICBmYUNvZmZlZTogZmFDb2ZmZWUsXG4gIGZhQ29nOiBmYUNvZyxcbiAgZmFDb2dzOiBmYUNvZ3MsXG4gIGZhQ29pbnM6IGZhQ29pbnMsXG4gIGZhQ29sdW1uczogZmFDb2x1bW5zLFxuICBmYUNvbW1lbnQ6IGZhQ29tbWVudCxcbiAgZmFDb21tZW50QWx0OiBmYUNvbW1lbnRBbHQsXG4gIGZhQ29tbWVudERvbGxhcjogZmFDb21tZW50RG9sbGFyLFxuICBmYUNvbW1lbnREb3RzOiBmYUNvbW1lbnREb3RzLFxuICBmYUNvbW1lbnRNZWRpY2FsOiBmYUNvbW1lbnRNZWRpY2FsLFxuICBmYUNvbW1lbnRTbGFzaDogZmFDb21tZW50U2xhc2gsXG4gIGZhQ29tbWVudHM6IGZhQ29tbWVudHMsXG4gIGZhQ29tbWVudHNEb2xsYXI6IGZhQ29tbWVudHNEb2xsYXIsXG4gIGZhQ29tcGFjdERpc2M6IGZhQ29tcGFjdERpc2MsXG4gIGZhQ29tcGFzczogZmFDb21wYXNzLFxuICBmYUNvbXByZXNzOiBmYUNvbXByZXNzLFxuICBmYUNvbXByZXNzQWx0OiBmYUNvbXByZXNzQWx0LFxuICBmYUNvbXByZXNzQXJyb3dzQWx0OiBmYUNvbXByZXNzQXJyb3dzQWx0LFxuICBmYUNvbmNpZXJnZUJlbGw6IGZhQ29uY2llcmdlQmVsbCxcbiAgZmFDb29raWU6IGZhQ29va2llLFxuICBmYUNvb2tpZUJpdGU6IGZhQ29va2llQml0ZSxcbiAgZmFDb3B5OiBmYUNvcHksXG4gIGZhQ29weXJpZ2h0OiBmYUNvcHlyaWdodCxcbiAgZmFDb3VjaDogZmFDb3VjaCxcbiAgZmFDcmVkaXRDYXJkOiBmYUNyZWRpdENhcmQsXG4gIGZhQ3JvcDogZmFDcm9wLFxuICBmYUNyb3BBbHQ6IGZhQ3JvcEFsdCxcbiAgZmFDcm9zczogZmFDcm9zcyxcbiAgZmFDcm9zc2hhaXJzOiBmYUNyb3NzaGFpcnMsXG4gIGZhQ3JvdzogZmFDcm93LFxuICBmYUNyb3duOiBmYUNyb3duLFxuICBmYUNydXRjaDogZmFDcnV0Y2gsXG4gIGZhQ3ViZTogZmFDdWJlLFxuICBmYUN1YmVzOiBmYUN1YmVzLFxuICBmYUN1dDogZmFDdXQsXG4gIGZhRGF0YWJhc2U6IGZhRGF0YWJhc2UsXG4gIGZhRGVhZjogZmFEZWFmLFxuICBmYURlbW9jcmF0OiBmYURlbW9jcmF0LFxuICBmYURlc2t0b3A6IGZhRGVza3RvcCxcbiAgZmFEaGFybWFjaGFrcmE6IGZhRGhhcm1hY2hha3JhLFxuICBmYURpYWdub3NlczogZmFEaWFnbm9zZXMsXG4gIGZhRGljZTogZmFEaWNlLFxuICBmYURpY2VEMjA6IGZhRGljZUQyMCxcbiAgZmFEaWNlRDY6IGZhRGljZUQ2LFxuICBmYURpY2VGaXZlOiBmYURpY2VGaXZlLFxuICBmYURpY2VGb3VyOiBmYURpY2VGb3VyLFxuICBmYURpY2VPbmU6IGZhRGljZU9uZSxcbiAgZmFEaWNlU2l4OiBmYURpY2VTaXgsXG4gIGZhRGljZVRocmVlOiBmYURpY2VUaHJlZSxcbiAgZmFEaWNlVHdvOiBmYURpY2VUd28sXG4gIGZhRGlnaXRhbFRhY2hvZ3JhcGg6IGZhRGlnaXRhbFRhY2hvZ3JhcGgsXG4gIGZhRGlyZWN0aW9uczogZmFEaXJlY3Rpb25zLFxuICBmYURpc2Vhc2U6IGZhRGlzZWFzZSxcbiAgZmFEaXZpZGU6IGZhRGl2aWRlLFxuICBmYURpenp5OiBmYURpenp5LFxuICBmYURuYTogZmFEbmEsXG4gIGZhRG9nOiBmYURvZyxcbiAgZmFEb2xsYXJTaWduOiBmYURvbGxhclNpZ24sXG4gIGZhRG9sbHk6IGZhRG9sbHksXG4gIGZhRG9sbHlGbGF0YmVkOiBmYURvbGx5RmxhdGJlZCxcbiAgZmFEb25hdGU6IGZhRG9uYXRlLFxuICBmYURvb3JDbG9zZWQ6IGZhRG9vckNsb3NlZCxcbiAgZmFEb29yT3BlbjogZmFEb29yT3BlbixcbiAgZmFEb3RDaXJjbGU6IGZhRG90Q2lyY2xlLFxuICBmYURvdmU6IGZhRG92ZSxcbiAgZmFEb3dubG9hZDogZmFEb3dubG9hZCxcbiAgZmFEcmFmdGluZ0NvbXBhc3M6IGZhRHJhZnRpbmdDb21wYXNzLFxuICBmYURyYWdvbjogZmFEcmFnb24sXG4gIGZhRHJhd1BvbHlnb246IGZhRHJhd1BvbHlnb24sXG4gIGZhRHJ1bTogZmFEcnVtLFxuICBmYURydW1TdGVlbHBhbjogZmFEcnVtU3RlZWxwYW4sXG4gIGZhRHJ1bXN0aWNrQml0ZTogZmFEcnVtc3RpY2tCaXRlLFxuICBmYUR1bWJiZWxsOiBmYUR1bWJiZWxsLFxuICBmYUR1bXBzdGVyOiBmYUR1bXBzdGVyLFxuICBmYUR1bXBzdGVyRmlyZTogZmFEdW1wc3RlckZpcmUsXG4gIGZhRHVuZ2VvbjogZmFEdW5nZW9uLFxuICBmYUVkaXQ6IGZhRWRpdCxcbiAgZmFFZ2c6IGZhRWdnLFxuICBmYUVqZWN0OiBmYUVqZWN0LFxuICBmYUVsbGlwc2lzSDogZmFFbGxpcHNpc0gsXG4gIGZhRWxsaXBzaXNWOiBmYUVsbGlwc2lzVixcbiAgZmFFbnZlbG9wZTogZmFFbnZlbG9wZSxcbiAgZmFFbnZlbG9wZU9wZW46IGZhRW52ZWxvcGVPcGVuLFxuICBmYUVudmVsb3BlT3BlblRleHQ6IGZhRW52ZWxvcGVPcGVuVGV4dCxcbiAgZmFFbnZlbG9wZVNxdWFyZTogZmFFbnZlbG9wZVNxdWFyZSxcbiAgZmFFcXVhbHM6IGZhRXF1YWxzLFxuICBmYUVyYXNlcjogZmFFcmFzZXIsXG4gIGZhRXRoZXJuZXQ6IGZhRXRoZXJuZXQsXG4gIGZhRXVyb1NpZ246IGZhRXVyb1NpZ24sXG4gIGZhRXhjaGFuZ2VBbHQ6IGZhRXhjaGFuZ2VBbHQsXG4gIGZhRXhjbGFtYXRpb246IGZhRXhjbGFtYXRpb24sXG4gIGZhRXhjbGFtYXRpb25DaXJjbGU6IGZhRXhjbGFtYXRpb25DaXJjbGUsXG4gIGZhRXhjbGFtYXRpb25UcmlhbmdsZTogZmFFeGNsYW1hdGlvblRyaWFuZ2xlLFxuICBmYUV4cGFuZDogZmFFeHBhbmQsXG4gIGZhRXhwYW5kQWx0OiBmYUV4cGFuZEFsdCxcbiAgZmFFeHBhbmRBcnJvd3NBbHQ6IGZhRXhwYW5kQXJyb3dzQWx0LFxuICBmYUV4dGVybmFsTGlua0FsdDogZmFFeHRlcm5hbExpbmtBbHQsXG4gIGZhRXh0ZXJuYWxMaW5rU3F1YXJlQWx0OiBmYUV4dGVybmFsTGlua1NxdWFyZUFsdCxcbiAgZmFFeWU6IGZhRXllLFxuICBmYUV5ZURyb3BwZXI6IGZhRXllRHJvcHBlcixcbiAgZmFFeWVTbGFzaDogZmFFeWVTbGFzaCxcbiAgZmFGYW46IGZhRmFuLFxuICBmYUZhc3RCYWNrd2FyZDogZmFGYXN0QmFja3dhcmQsXG4gIGZhRmFzdEZvcndhcmQ6IGZhRmFzdEZvcndhcmQsXG4gIGZhRmF1Y2V0OiBmYUZhdWNldCxcbiAgZmFGYXg6IGZhRmF4LFxuICBmYUZlYXRoZXI6IGZhRmVhdGhlcixcbiAgZmFGZWF0aGVyQWx0OiBmYUZlYXRoZXJBbHQsXG4gIGZhRmVtYWxlOiBmYUZlbWFsZSxcbiAgZmFGaWdodGVySmV0OiBmYUZpZ2h0ZXJKZXQsXG4gIGZhRmlsZTogZmFGaWxlLFxuICBmYUZpbGVBbHQ6IGZhRmlsZUFsdCxcbiAgZmFGaWxlQXJjaGl2ZTogZmFGaWxlQXJjaGl2ZSxcbiAgZmFGaWxlQXVkaW86IGZhRmlsZUF1ZGlvLFxuICBmYUZpbGVDb2RlOiBmYUZpbGVDb2RlLFxuICBmYUZpbGVDb250cmFjdDogZmFGaWxlQ29udHJhY3QsXG4gIGZhRmlsZUNzdjogZmFGaWxlQ3N2LFxuICBmYUZpbGVEb3dubG9hZDogZmFGaWxlRG93bmxvYWQsXG4gIGZhRmlsZUV4Y2VsOiBmYUZpbGVFeGNlbCxcbiAgZmFGaWxlRXhwb3J0OiBmYUZpbGVFeHBvcnQsXG4gIGZhRmlsZUltYWdlOiBmYUZpbGVJbWFnZSxcbiAgZmFGaWxlSW1wb3J0OiBmYUZpbGVJbXBvcnQsXG4gIGZhRmlsZUludm9pY2U6IGZhRmlsZUludm9pY2UsXG4gIGZhRmlsZUludm9pY2VEb2xsYXI6IGZhRmlsZUludm9pY2VEb2xsYXIsXG4gIGZhRmlsZU1lZGljYWw6IGZhRmlsZU1lZGljYWwsXG4gIGZhRmlsZU1lZGljYWxBbHQ6IGZhRmlsZU1lZGljYWxBbHQsXG4gIGZhRmlsZVBkZjogZmFGaWxlUGRmLFxuICBmYUZpbGVQb3dlcnBvaW50OiBmYUZpbGVQb3dlcnBvaW50LFxuICBmYUZpbGVQcmVzY3JpcHRpb246IGZhRmlsZVByZXNjcmlwdGlvbixcbiAgZmFGaWxlU2lnbmF0dXJlOiBmYUZpbGVTaWduYXR1cmUsXG4gIGZhRmlsZVVwbG9hZDogZmFGaWxlVXBsb2FkLFxuICBmYUZpbGVWaWRlbzogZmFGaWxlVmlkZW8sXG4gIGZhRmlsZVdvcmQ6IGZhRmlsZVdvcmQsXG4gIGZhRmlsbDogZmFGaWxsLFxuICBmYUZpbGxEcmlwOiBmYUZpbGxEcmlwLFxuICBmYUZpbG06IGZhRmlsbSxcbiAgZmFGaWx0ZXI6IGZhRmlsdGVyLFxuICBmYUZpbmdlcnByaW50OiBmYUZpbmdlcnByaW50LFxuICBmYUZpcmU6IGZhRmlyZSxcbiAgZmFGaXJlQWx0OiBmYUZpcmVBbHQsXG4gIGZhRmlyZUV4dGluZ3Vpc2hlcjogZmFGaXJlRXh0aW5ndWlzaGVyLFxuICBmYUZpcnN0QWlkOiBmYUZpcnN0QWlkLFxuICBmYUZpc2g6IGZhRmlzaCxcbiAgZmFGaXN0UmFpc2VkOiBmYUZpc3RSYWlzZWQsXG4gIGZhRmxhZzogZmFGbGFnLFxuICBmYUZsYWdDaGVja2VyZWQ6IGZhRmxhZ0NoZWNrZXJlZCxcbiAgZmFGbGFnVXNhOiBmYUZsYWdVc2EsXG4gIGZhRmxhc2s6IGZhRmxhc2ssXG4gIGZhRmx1c2hlZDogZmFGbHVzaGVkLFxuICBmYUZvbGRlcjogZmFGb2xkZXIsXG4gIGZhRm9sZGVyTWludXM6IGZhRm9sZGVyTWludXMsXG4gIGZhRm9sZGVyT3BlbjogZmFGb2xkZXJPcGVuLFxuICBmYUZvbGRlclBsdXM6IGZhRm9sZGVyUGx1cyxcbiAgZmFGb250OiBmYUZvbnQsXG4gIGZhRm9udEF3ZXNvbWVMb2dvRnVsbDogZmFGb250QXdlc29tZUxvZ29GdWxsLFxuICBmYUZvb3RiYWxsQmFsbDogZmFGb290YmFsbEJhbGwsXG4gIGZhRm9yd2FyZDogZmFGb3J3YXJkLFxuICBmYUZyb2c6IGZhRnJvZyxcbiAgZmFGcm93bjogZmFGcm93bixcbiAgZmFGcm93bk9wZW46IGZhRnJvd25PcGVuLFxuICBmYUZ1bm5lbERvbGxhcjogZmFGdW5uZWxEb2xsYXIsXG4gIGZhRnV0Ym9sOiBmYUZ1dGJvbCxcbiAgZmFHYW1lcGFkOiBmYUdhbWVwYWQsXG4gIGZhR2FzUHVtcDogZmFHYXNQdW1wLFxuICBmYUdhdmVsOiBmYUdhdmVsLFxuICBmYUdlbTogZmFHZW0sXG4gIGZhR2VuZGVybGVzczogZmFHZW5kZXJsZXNzLFxuICBmYUdob3N0OiBmYUdob3N0LFxuICBmYUdpZnQ6IGZhR2lmdCxcbiAgZmFHaWZ0czogZmFHaWZ0cyxcbiAgZmFHbGFzc0NoZWVyczogZmFHbGFzc0NoZWVycyxcbiAgZmFHbGFzc01hcnRpbmk6IGZhR2xhc3NNYXJ0aW5pLFxuICBmYUdsYXNzTWFydGluaUFsdDogZmFHbGFzc01hcnRpbmlBbHQsXG4gIGZhR2xhc3NXaGlza2V5OiBmYUdsYXNzV2hpc2tleSxcbiAgZmFHbGFzc2VzOiBmYUdsYXNzZXMsXG4gIGZhR2xvYmU6IGZhR2xvYmUsXG4gIGZhR2xvYmVBZnJpY2E6IGZhR2xvYmVBZnJpY2EsXG4gIGZhR2xvYmVBbWVyaWNhczogZmFHbG9iZUFtZXJpY2FzLFxuICBmYUdsb2JlQXNpYTogZmFHbG9iZUFzaWEsXG4gIGZhR2xvYmVFdXJvcGU6IGZhR2xvYmVFdXJvcGUsXG4gIGZhR29sZkJhbGw6IGZhR29sZkJhbGwsXG4gIGZhR29wdXJhbTogZmFHb3B1cmFtLFxuICBmYUdyYWR1YXRpb25DYXA6IGZhR3JhZHVhdGlvbkNhcCxcbiAgZmFHcmVhdGVyVGhhbjogZmFHcmVhdGVyVGhhbixcbiAgZmFHcmVhdGVyVGhhbkVxdWFsOiBmYUdyZWF0ZXJUaGFuRXF1YWwsXG4gIGZhR3JpbWFjZTogZmFHcmltYWNlLFxuICBmYUdyaW46IGZhR3JpbixcbiAgZmFHcmluQWx0OiBmYUdyaW5BbHQsXG4gIGZhR3JpbkJlYW06IGZhR3JpbkJlYW0sXG4gIGZhR3JpbkJlYW1Td2VhdDogZmFHcmluQmVhbVN3ZWF0LFxuICBmYUdyaW5IZWFydHM6IGZhR3JpbkhlYXJ0cyxcbiAgZmFHcmluU3F1aW50OiBmYUdyaW5TcXVpbnQsXG4gIGZhR3JpblNxdWludFRlYXJzOiBmYUdyaW5TcXVpbnRUZWFycyxcbiAgZmFHcmluU3RhcnM6IGZhR3JpblN0YXJzLFxuICBmYUdyaW5UZWFyczogZmFHcmluVGVhcnMsXG4gIGZhR3JpblRvbmd1ZTogZmFHcmluVG9uZ3VlLFxuICBmYUdyaW5Ub25ndWVTcXVpbnQ6IGZhR3JpblRvbmd1ZVNxdWludCxcbiAgZmFHcmluVG9uZ3VlV2luazogZmFHcmluVG9uZ3VlV2luayxcbiAgZmFHcmluV2luazogZmFHcmluV2luayxcbiAgZmFHcmlwSG9yaXpvbnRhbDogZmFHcmlwSG9yaXpvbnRhbCxcbiAgZmFHcmlwTGluZXM6IGZhR3JpcExpbmVzLFxuICBmYUdyaXBMaW5lc1ZlcnRpY2FsOiBmYUdyaXBMaW5lc1ZlcnRpY2FsLFxuICBmYUdyaXBWZXJ0aWNhbDogZmFHcmlwVmVydGljYWwsXG4gIGZhR3VpdGFyOiBmYUd1aXRhcixcbiAgZmFIU3F1YXJlOiBmYUhTcXVhcmUsXG4gIGZhSGFtYnVyZ2VyOiBmYUhhbWJ1cmdlcixcbiAgZmFIYW1tZXI6IGZhSGFtbWVyLFxuICBmYUhhbXNhOiBmYUhhbXNhLFxuICBmYUhhbmRIb2xkaW5nOiBmYUhhbmRIb2xkaW5nLFxuICBmYUhhbmRIb2xkaW5nSGVhcnQ6IGZhSGFuZEhvbGRpbmdIZWFydCxcbiAgZmFIYW5kSG9sZGluZ01lZGljYWw6IGZhSGFuZEhvbGRpbmdNZWRpY2FsLFxuICBmYUhhbmRIb2xkaW5nVXNkOiBmYUhhbmRIb2xkaW5nVXNkLFxuICBmYUhhbmRIb2xkaW5nV2F0ZXI6IGZhSGFuZEhvbGRpbmdXYXRlcixcbiAgZmFIYW5kTGl6YXJkOiBmYUhhbmRMaXphcmQsXG4gIGZhSGFuZE1pZGRsZUZpbmdlcjogZmFIYW5kTWlkZGxlRmluZ2VyLFxuICBmYUhhbmRQYXBlcjogZmFIYW5kUGFwZXIsXG4gIGZhSGFuZFBlYWNlOiBmYUhhbmRQZWFjZSxcbiAgZmFIYW5kUG9pbnREb3duOiBmYUhhbmRQb2ludERvd24sXG4gIGZhSGFuZFBvaW50TGVmdDogZmFIYW5kUG9pbnRMZWZ0LFxuICBmYUhhbmRQb2ludFJpZ2h0OiBmYUhhbmRQb2ludFJpZ2h0LFxuICBmYUhhbmRQb2ludFVwOiBmYUhhbmRQb2ludFVwLFxuICBmYUhhbmRQb2ludGVyOiBmYUhhbmRQb2ludGVyLFxuICBmYUhhbmRSb2NrOiBmYUhhbmRSb2NrLFxuICBmYUhhbmRTY2lzc29yczogZmFIYW5kU2Npc3NvcnMsXG4gIGZhSGFuZFNwYXJrbGVzOiBmYUhhbmRTcGFya2xlcyxcbiAgZmFIYW5kU3BvY2s6IGZhSGFuZFNwb2NrLFxuICBmYUhhbmRzOiBmYUhhbmRzLFxuICBmYUhhbmRzSGVscGluZzogZmFIYW5kc0hlbHBpbmcsXG4gIGZhSGFuZHNXYXNoOiBmYUhhbmRzV2FzaCxcbiAgZmFIYW5kc2hha2U6IGZhSGFuZHNoYWtlLFxuICBmYUhhbmRzaGFrZUFsdFNsYXNoOiBmYUhhbmRzaGFrZUFsdFNsYXNoLFxuICBmYUhhbmRzaGFrZVNsYXNoOiBmYUhhbmRzaGFrZVNsYXNoLFxuICBmYUhhbnVraWFoOiBmYUhhbnVraWFoLFxuICBmYUhhcmRIYXQ6IGZhSGFyZEhhdCxcbiAgZmFIYXNodGFnOiBmYUhhc2h0YWcsXG4gIGZhSGF0Q293Ym95OiBmYUhhdENvd2JveSxcbiAgZmFIYXRDb3dib3lTaWRlOiBmYUhhdENvd2JveVNpZGUsXG4gIGZhSGF0V2l6YXJkOiBmYUhhdFdpemFyZCxcbiAgZmFIZGQ6IGZhSGRkLFxuICBmYUhlYWRTaWRlQ291Z2g6IGZhSGVhZFNpZGVDb3VnaCxcbiAgZmFIZWFkU2lkZUNvdWdoU2xhc2g6IGZhSGVhZFNpZGVDb3VnaFNsYXNoLFxuICBmYUhlYWRTaWRlTWFzazogZmFIZWFkU2lkZU1hc2ssXG4gIGZhSGVhZFNpZGVWaXJ1czogZmFIZWFkU2lkZVZpcnVzLFxuICBmYUhlYWRpbmc6IGZhSGVhZGluZyxcbiAgZmFIZWFkcGhvbmVzOiBmYUhlYWRwaG9uZXMsXG4gIGZhSGVhZHBob25lc0FsdDogZmFIZWFkcGhvbmVzQWx0LFxuICBmYUhlYWRzZXQ6IGZhSGVhZHNldCxcbiAgZmFIZWFydDogZmFIZWFydCxcbiAgZmFIZWFydEJyb2tlbjogZmFIZWFydEJyb2tlbixcbiAgZmFIZWFydGJlYXQ6IGZhSGVhcnRiZWF0LFxuICBmYUhlbGljb3B0ZXI6IGZhSGVsaWNvcHRlcixcbiAgZmFIaWdobGlnaHRlcjogZmFIaWdobGlnaHRlcixcbiAgZmFIaWtpbmc6IGZhSGlraW5nLFxuICBmYUhpcHBvOiBmYUhpcHBvLFxuICBmYUhpc3Rvcnk6IGZhSGlzdG9yeSxcbiAgZmFIb2NrZXlQdWNrOiBmYUhvY2tleVB1Y2ssXG4gIGZhSG9sbHlCZXJyeTogZmFIb2xseUJlcnJ5LFxuICBmYUhvbWU6IGZhSG9tZSxcbiAgZmFIb3JzZTogZmFIb3JzZSxcbiAgZmFIb3JzZUhlYWQ6IGZhSG9yc2VIZWFkLFxuICBmYUhvc3BpdGFsOiBmYUhvc3BpdGFsLFxuICBmYUhvc3BpdGFsQWx0OiBmYUhvc3BpdGFsQWx0LFxuICBmYUhvc3BpdGFsU3ltYm9sOiBmYUhvc3BpdGFsU3ltYm9sLFxuICBmYUhvc3BpdGFsVXNlcjogZmFIb3NwaXRhbFVzZXIsXG4gIGZhSG90VHViOiBmYUhvdFR1YixcbiAgZmFIb3Rkb2c6IGZhSG90ZG9nLFxuICBmYUhvdGVsOiBmYUhvdGVsLFxuICBmYUhvdXJnbGFzczogZmFIb3VyZ2xhc3MsXG4gIGZhSG91cmdsYXNzRW5kOiBmYUhvdXJnbGFzc0VuZCxcbiAgZmFIb3VyZ2xhc3NIYWxmOiBmYUhvdXJnbGFzc0hhbGYsXG4gIGZhSG91cmdsYXNzU3RhcnQ6IGZhSG91cmdsYXNzU3RhcnQsXG4gIGZhSG91c2VEYW1hZ2U6IGZhSG91c2VEYW1hZ2UsXG4gIGZhSG91c2VVc2VyOiBmYUhvdXNlVXNlcixcbiAgZmFIcnl2bmlhOiBmYUhyeXZuaWEsXG4gIGZhSUN1cnNvcjogZmFJQ3Vyc29yLFxuICBmYUljZUNyZWFtOiBmYUljZUNyZWFtLFxuICBmYUljaWNsZXM6IGZhSWNpY2xlcyxcbiAgZmFJY29uczogZmFJY29ucyxcbiAgZmFJZEJhZGdlOiBmYUlkQmFkZ2UsXG4gIGZhSWRDYXJkOiBmYUlkQ2FyZCxcbiAgZmFJZENhcmRBbHQ6IGZhSWRDYXJkQWx0LFxuICBmYUlnbG9vOiBmYUlnbG9vLFxuICBmYUltYWdlOiBmYUltYWdlLFxuICBmYUltYWdlczogZmFJbWFnZXMsXG4gIGZhSW5ib3g6IGZhSW5ib3gsXG4gIGZhSW5kZW50OiBmYUluZGVudCxcbiAgZmFJbmR1c3RyeTogZmFJbmR1c3RyeSxcbiAgZmFJbmZpbml0eTogZmFJbmZpbml0eSxcbiAgZmFJbmZvOiBmYUluZm8sXG4gIGZhSW5mb0NpcmNsZTogZmFJbmZvQ2lyY2xlLFxuICBmYUl0YWxpYzogZmFJdGFsaWMsXG4gIGZhSmVkaTogZmFKZWRpLFxuICBmYUpvaW50OiBmYUpvaW50LFxuICBmYUpvdXJuYWxXaGlsbHM6IGZhSm91cm5hbFdoaWxscyxcbiAgZmFLYWFiYTogZmFLYWFiYSxcbiAgZmFLZXk6IGZhS2V5LFxuICBmYUtleWJvYXJkOiBmYUtleWJvYXJkLFxuICBmYUtoYW5kYTogZmFLaGFuZGEsXG4gIGZhS2lzczogZmFLaXNzLFxuICBmYUtpc3NCZWFtOiBmYUtpc3NCZWFtLFxuICBmYUtpc3NXaW5rSGVhcnQ6IGZhS2lzc1dpbmtIZWFydCxcbiAgZmFLaXdpQmlyZDogZmFLaXdpQmlyZCxcbiAgZmFMYW5kbWFyazogZmFMYW5kbWFyayxcbiAgZmFMYW5ndWFnZTogZmFMYW5ndWFnZSxcbiAgZmFMYXB0b3A6IGZhTGFwdG9wLFxuICBmYUxhcHRvcENvZGU6IGZhTGFwdG9wQ29kZSxcbiAgZmFMYXB0b3BIb3VzZTogZmFMYXB0b3BIb3VzZSxcbiAgZmFMYXB0b3BNZWRpY2FsOiBmYUxhcHRvcE1lZGljYWwsXG4gIGZhTGF1Z2g6IGZhTGF1Z2gsXG4gIGZhTGF1Z2hCZWFtOiBmYUxhdWdoQmVhbSxcbiAgZmFMYXVnaFNxdWludDogZmFMYXVnaFNxdWludCxcbiAgZmFMYXVnaFdpbms6IGZhTGF1Z2hXaW5rLFxuICBmYUxheWVyR3JvdXA6IGZhTGF5ZXJHcm91cCxcbiAgZmFMZWFmOiBmYUxlYWYsXG4gIGZhTGVtb246IGZhTGVtb24sXG4gIGZhTGVzc1RoYW46IGZhTGVzc1RoYW4sXG4gIGZhTGVzc1RoYW5FcXVhbDogZmFMZXNzVGhhbkVxdWFsLFxuICBmYUxldmVsRG93bkFsdDogZmFMZXZlbERvd25BbHQsXG4gIGZhTGV2ZWxVcEFsdDogZmFMZXZlbFVwQWx0LFxuICBmYUxpZmVSaW5nOiBmYUxpZmVSaW5nLFxuICBmYUxpZ2h0YnVsYjogZmFMaWdodGJ1bGIsXG4gIGZhTGluazogZmFMaW5rLFxuICBmYUxpcmFTaWduOiBmYUxpcmFTaWduLFxuICBmYUxpc3Q6IGZhTGlzdCxcbiAgZmFMaXN0QWx0OiBmYUxpc3RBbHQsXG4gIGZhTGlzdE9sOiBmYUxpc3RPbCxcbiAgZmFMaXN0VWw6IGZhTGlzdFVsLFxuICBmYUxvY2F0aW9uQXJyb3c6IGZhTG9jYXRpb25BcnJvdyxcbiAgZmFMb2NrOiBmYUxvY2ssXG4gIGZhTG9ja09wZW46IGZhTG9ja09wZW4sXG4gIGZhTG9uZ0Fycm93QWx0RG93bjogZmFMb25nQXJyb3dBbHREb3duLFxuICBmYUxvbmdBcnJvd0FsdExlZnQ6IGZhTG9uZ0Fycm93QWx0TGVmdCxcbiAgZmFMb25nQXJyb3dBbHRSaWdodDogZmFMb25nQXJyb3dBbHRSaWdodCxcbiAgZmFMb25nQXJyb3dBbHRVcDogZmFMb25nQXJyb3dBbHRVcCxcbiAgZmFMb3dWaXNpb246IGZhTG93VmlzaW9uLFxuICBmYUx1Z2dhZ2VDYXJ0OiBmYUx1Z2dhZ2VDYXJ0LFxuICBmYUx1bmdzOiBmYUx1bmdzLFxuICBmYUx1bmdzVmlydXM6IGZhTHVuZ3NWaXJ1cyxcbiAgZmFNYWdpYzogZmFNYWdpYyxcbiAgZmFNYWduZXQ6IGZhTWFnbmV0LFxuICBmYU1haWxCdWxrOiBmYU1haWxCdWxrLFxuICBmYU1hbGU6IGZhTWFsZSxcbiAgZmFNYXA6IGZhTWFwLFxuICBmYU1hcE1hcmtlZDogZmFNYXBNYXJrZWQsXG4gIGZhTWFwTWFya2VkQWx0OiBmYU1hcE1hcmtlZEFsdCxcbiAgZmFNYXBNYXJrZXI6IGZhTWFwTWFya2VyLFxuICBmYU1hcE1hcmtlckFsdDogZmFNYXBNYXJrZXJBbHQsXG4gIGZhTWFwUGluOiBmYU1hcFBpbixcbiAgZmFNYXBTaWduczogZmFNYXBTaWducyxcbiAgZmFNYXJrZXI6IGZhTWFya2VyLFxuICBmYU1hcnM6IGZhTWFycyxcbiAgZmFNYXJzRG91YmxlOiBmYU1hcnNEb3VibGUsXG4gIGZhTWFyc1N0cm9rZTogZmFNYXJzU3Ryb2tlLFxuICBmYU1hcnNTdHJva2VIOiBmYU1hcnNTdHJva2VILFxuICBmYU1hcnNTdHJva2VWOiBmYU1hcnNTdHJva2VWLFxuICBmYU1hc2s6IGZhTWFzayxcbiAgZmFNZWRhbDogZmFNZWRhbCxcbiAgZmFNZWRraXQ6IGZhTWVka2l0LFxuICBmYU1laDogZmFNZWgsXG4gIGZhTWVoQmxhbms6IGZhTWVoQmxhbmssXG4gIGZhTWVoUm9sbGluZ0V5ZXM6IGZhTWVoUm9sbGluZ0V5ZXMsXG4gIGZhTWVtb3J5OiBmYU1lbW9yeSxcbiAgZmFNZW5vcmFoOiBmYU1lbm9yYWgsXG4gIGZhTWVyY3VyeTogZmFNZXJjdXJ5LFxuICBmYU1ldGVvcjogZmFNZXRlb3IsXG4gIGZhTWljcm9jaGlwOiBmYU1pY3JvY2hpcCxcbiAgZmFNaWNyb3Bob25lOiBmYU1pY3JvcGhvbmUsXG4gIGZhTWljcm9waG9uZUFsdDogZmFNaWNyb3Bob25lQWx0LFxuICBmYU1pY3JvcGhvbmVBbHRTbGFzaDogZmFNaWNyb3Bob25lQWx0U2xhc2gsXG4gIGZhTWljcm9waG9uZVNsYXNoOiBmYU1pY3JvcGhvbmVTbGFzaCxcbiAgZmFNaWNyb3Njb3BlOiBmYU1pY3Jvc2NvcGUsXG4gIGZhTWludXM6IGZhTWludXMsXG4gIGZhTWludXNDaXJjbGU6IGZhTWludXNDaXJjbGUsXG4gIGZhTWludXNTcXVhcmU6IGZhTWludXNTcXVhcmUsXG4gIGZhTWl0dGVuOiBmYU1pdHRlbixcbiAgZmFNb2JpbGU6IGZhTW9iaWxlLFxuICBmYU1vYmlsZUFsdDogZmFNb2JpbGVBbHQsXG4gIGZhTW9uZXlCaWxsOiBmYU1vbmV5QmlsbCxcbiAgZmFNb25leUJpbGxBbHQ6IGZhTW9uZXlCaWxsQWx0LFxuICBmYU1vbmV5QmlsbFdhdmU6IGZhTW9uZXlCaWxsV2F2ZSxcbiAgZmFNb25leUJpbGxXYXZlQWx0OiBmYU1vbmV5QmlsbFdhdmVBbHQsXG4gIGZhTW9uZXlDaGVjazogZmFNb25leUNoZWNrLFxuICBmYU1vbmV5Q2hlY2tBbHQ6IGZhTW9uZXlDaGVja0FsdCxcbiAgZmFNb251bWVudDogZmFNb251bWVudCxcbiAgZmFNb29uOiBmYU1vb24sXG4gIGZhTW9ydGFyUGVzdGxlOiBmYU1vcnRhclBlc3RsZSxcbiAgZmFNb3NxdWU6IGZhTW9zcXVlLFxuICBmYU1vdG9yY3ljbGU6IGZhTW90b3JjeWNsZSxcbiAgZmFNb3VudGFpbjogZmFNb3VudGFpbixcbiAgZmFNb3VzZTogZmFNb3VzZSxcbiAgZmFNb3VzZVBvaW50ZXI6IGZhTW91c2VQb2ludGVyLFxuICBmYU11Z0hvdDogZmFNdWdIb3QsXG4gIGZhTXVzaWM6IGZhTXVzaWMsXG4gIGZhTmV0d29ya1dpcmVkOiBmYU5ldHdvcmtXaXJlZCxcbiAgZmFOZXV0ZXI6IGZhTmV1dGVyLFxuICBmYU5ld3NwYXBlcjogZmFOZXdzcGFwZXIsXG4gIGZhTm90RXF1YWw6IGZhTm90RXF1YWwsXG4gIGZhTm90ZXNNZWRpY2FsOiBmYU5vdGVzTWVkaWNhbCxcbiAgZmFPYmplY3RHcm91cDogZmFPYmplY3RHcm91cCxcbiAgZmFPYmplY3RVbmdyb3VwOiBmYU9iamVjdFVuZ3JvdXAsXG4gIGZhT2lsQ2FuOiBmYU9pbENhbixcbiAgZmFPbTogZmFPbSxcbiAgZmFPdHRlcjogZmFPdHRlcixcbiAgZmFPdXRkZW50OiBmYU91dGRlbnQsXG4gIGZhUGFnZXI6IGZhUGFnZXIsXG4gIGZhUGFpbnRCcnVzaDogZmFQYWludEJydXNoLFxuICBmYVBhaW50Um9sbGVyOiBmYVBhaW50Um9sbGVyLFxuICBmYVBhbGV0dGU6IGZhUGFsZXR0ZSxcbiAgZmFQYWxsZXQ6IGZhUGFsbGV0LFxuICBmYVBhcGVyUGxhbmU6IGZhUGFwZXJQbGFuZSxcbiAgZmFQYXBlcmNsaXA6IGZhUGFwZXJjbGlwLFxuICBmYVBhcmFjaHV0ZUJveDogZmFQYXJhY2h1dGVCb3gsXG4gIGZhUGFyYWdyYXBoOiBmYVBhcmFncmFwaCxcbiAgZmFQYXJraW5nOiBmYVBhcmtpbmcsXG4gIGZhUGFzc3BvcnQ6IGZhUGFzc3BvcnQsXG4gIGZhUGFzdGFmYXJpYW5pc206IGZhUGFzdGFmYXJpYW5pc20sXG4gIGZhUGFzdGU6IGZhUGFzdGUsXG4gIGZhUGF1c2U6IGZhUGF1c2UsXG4gIGZhUGF1c2VDaXJjbGU6IGZhUGF1c2VDaXJjbGUsXG4gIGZhUGF3OiBmYVBhdyxcbiAgZmFQZWFjZTogZmFQZWFjZSxcbiAgZmFQZW46IGZhUGVuLFxuICBmYVBlbkFsdDogZmFQZW5BbHQsXG4gIGZhUGVuRmFuY3k6IGZhUGVuRmFuY3ksXG4gIGZhUGVuTmliOiBmYVBlbk5pYixcbiAgZmFQZW5TcXVhcmU6IGZhUGVuU3F1YXJlLFxuICBmYVBlbmNpbEFsdDogZmFQZW5jaWxBbHQsXG4gIGZhUGVuY2lsUnVsZXI6IGZhUGVuY2lsUnVsZXIsXG4gIGZhUGVvcGxlQXJyb3dzOiBmYVBlb3BsZUFycm93cyxcbiAgZmFQZW9wbGVDYXJyeTogZmFQZW9wbGVDYXJyeSxcbiAgZmFQZXBwZXJIb3Q6IGZhUGVwcGVySG90LFxuICBmYVBlcmNlbnQ6IGZhUGVyY2VudCxcbiAgZmFQZXJjZW50YWdlOiBmYVBlcmNlbnRhZ2UsXG4gIGZhUGVyc29uQm9vdGg6IGZhUGVyc29uQm9vdGgsXG4gIGZhUGhvbmU6IGZhUGhvbmUsXG4gIGZhUGhvbmVBbHQ6IGZhUGhvbmVBbHQsXG4gIGZhUGhvbmVTbGFzaDogZmFQaG9uZVNsYXNoLFxuICBmYVBob25lU3F1YXJlOiBmYVBob25lU3F1YXJlLFxuICBmYVBob25lU3F1YXJlQWx0OiBmYVBob25lU3F1YXJlQWx0LFxuICBmYVBob25lVm9sdW1lOiBmYVBob25lVm9sdW1lLFxuICBmYVBob3RvVmlkZW86IGZhUGhvdG9WaWRlbyxcbiAgZmFQaWdneUJhbms6IGZhUGlnZ3lCYW5rLFxuICBmYVBpbGxzOiBmYVBpbGxzLFxuICBmYVBpenphU2xpY2U6IGZhUGl6emFTbGljZSxcbiAgZmFQbGFjZU9mV29yc2hpcDogZmFQbGFjZU9mV29yc2hpcCxcbiAgZmFQbGFuZTogZmFQbGFuZSxcbiAgZmFQbGFuZUFycml2YWw6IGZhUGxhbmVBcnJpdmFsLFxuICBmYVBsYW5lRGVwYXJ0dXJlOiBmYVBsYW5lRGVwYXJ0dXJlLFxuICBmYVBsYW5lU2xhc2g6IGZhUGxhbmVTbGFzaCxcbiAgZmFQbGF5OiBmYVBsYXksXG4gIGZhUGxheUNpcmNsZTogZmFQbGF5Q2lyY2xlLFxuICBmYVBsdWc6IGZhUGx1ZyxcbiAgZmFQbHVzOiBmYVBsdXMsXG4gIGZhUGx1c0NpcmNsZTogZmFQbHVzQ2lyY2xlLFxuICBmYVBsdXNTcXVhcmU6IGZhUGx1c1NxdWFyZSxcbiAgZmFQb2RjYXN0OiBmYVBvZGNhc3QsXG4gIGZhUG9sbDogZmFQb2xsLFxuICBmYVBvbGxIOiBmYVBvbGxILFxuICBmYVBvbzogZmFQb28sXG4gIGZhUG9vU3Rvcm06IGZhUG9vU3Rvcm0sXG4gIGZhUG9vcDogZmFQb29wLFxuICBmYVBvcnRyYWl0OiBmYVBvcnRyYWl0LFxuICBmYVBvdW5kU2lnbjogZmFQb3VuZFNpZ24sXG4gIGZhUG93ZXJPZmY6IGZhUG93ZXJPZmYsXG4gIGZhUHJheTogZmFQcmF5LFxuICBmYVByYXlpbmdIYW5kczogZmFQcmF5aW5nSGFuZHMsXG4gIGZhUHJlc2NyaXB0aW9uOiBmYVByZXNjcmlwdGlvbixcbiAgZmFQcmVzY3JpcHRpb25Cb3R0bGU6IGZhUHJlc2NyaXB0aW9uQm90dGxlLFxuICBmYVByZXNjcmlwdGlvbkJvdHRsZUFsdDogZmFQcmVzY3JpcHRpb25Cb3R0bGVBbHQsXG4gIGZhUHJpbnQ6IGZhUHJpbnQsXG4gIGZhUHJvY2VkdXJlczogZmFQcm9jZWR1cmVzLFxuICBmYVByb2plY3REaWFncmFtOiBmYVByb2plY3REaWFncmFtLFxuICBmYVB1bXBNZWRpY2FsOiBmYVB1bXBNZWRpY2FsLFxuICBmYVB1bXBTb2FwOiBmYVB1bXBTb2FwLFxuICBmYVB1enpsZVBpZWNlOiBmYVB1enpsZVBpZWNlLFxuICBmYVFyY29kZTogZmFRcmNvZGUsXG4gIGZhUXVlc3Rpb246IGZhUXVlc3Rpb24sXG4gIGZhUXVlc3Rpb25DaXJjbGU6IGZhUXVlc3Rpb25DaXJjbGUsXG4gIGZhUXVpZGRpdGNoOiBmYVF1aWRkaXRjaCxcbiAgZmFRdW90ZUxlZnQ6IGZhUXVvdGVMZWZ0LFxuICBmYVF1b3RlUmlnaHQ6IGZhUXVvdGVSaWdodCxcbiAgZmFRdXJhbjogZmFRdXJhbixcbiAgZmFSYWRpYXRpb246IGZhUmFkaWF0aW9uLFxuICBmYVJhZGlhdGlvbkFsdDogZmFSYWRpYXRpb25BbHQsXG4gIGZhUmFpbmJvdzogZmFSYWluYm93LFxuICBmYVJhbmRvbTogZmFSYW5kb20sXG4gIGZhUmVjZWlwdDogZmFSZWNlaXB0LFxuICBmYVJlY29yZFZpbnlsOiBmYVJlY29yZFZpbnlsLFxuICBmYVJlY3ljbGU6IGZhUmVjeWNsZSxcbiAgZmFSZWRvOiBmYVJlZG8sXG4gIGZhUmVkb0FsdDogZmFSZWRvQWx0LFxuICBmYVJlZ2lzdGVyZWQ6IGZhUmVnaXN0ZXJlZCxcbiAgZmFSZW1vdmVGb3JtYXQ6IGZhUmVtb3ZlRm9ybWF0LFxuICBmYVJlcGx5OiBmYVJlcGx5LFxuICBmYVJlcGx5QWxsOiBmYVJlcGx5QWxsLFxuICBmYVJlcHVibGljYW46IGZhUmVwdWJsaWNhbixcbiAgZmFSZXN0cm9vbTogZmFSZXN0cm9vbSxcbiAgZmFSZXR3ZWV0OiBmYVJldHdlZXQsXG4gIGZhUmliYm9uOiBmYVJpYmJvbixcbiAgZmFSaW5nOiBmYVJpbmcsXG4gIGZhUm9hZDogZmFSb2FkLFxuICBmYVJvYm90OiBmYVJvYm90LFxuICBmYVJvY2tldDogZmFSb2NrZXQsXG4gIGZhUm91dGU6IGZhUm91dGUsXG4gIGZhUnNzOiBmYVJzcyxcbiAgZmFSc3NTcXVhcmU6IGZhUnNzU3F1YXJlLFxuICBmYVJ1YmxlU2lnbjogZmFSdWJsZVNpZ24sXG4gIGZhUnVsZXI6IGZhUnVsZXIsXG4gIGZhUnVsZXJDb21iaW5lZDogZmFSdWxlckNvbWJpbmVkLFxuICBmYVJ1bGVySG9yaXpvbnRhbDogZmFSdWxlckhvcml6b250YWwsXG4gIGZhUnVsZXJWZXJ0aWNhbDogZmFSdWxlclZlcnRpY2FsLFxuICBmYVJ1bm5pbmc6IGZhUnVubmluZyxcbiAgZmFSdXBlZVNpZ246IGZhUnVwZWVTaWduLFxuICBmYVNhZENyeTogZmFTYWRDcnksXG4gIGZhU2FkVGVhcjogZmFTYWRUZWFyLFxuICBmYVNhdGVsbGl0ZTogZmFTYXRlbGxpdGUsXG4gIGZhU2F0ZWxsaXRlRGlzaDogZmFTYXRlbGxpdGVEaXNoLFxuICBmYVNhdmU6IGZhU2F2ZSxcbiAgZmFTY2hvb2w6IGZhU2Nob29sLFxuICBmYVNjcmV3ZHJpdmVyOiBmYVNjcmV3ZHJpdmVyLFxuICBmYVNjcm9sbDogZmFTY3JvbGwsXG4gIGZhU2RDYXJkOiBmYVNkQ2FyZCxcbiAgZmFTZWFyY2g6IGZhU2VhcmNoLFxuICBmYVNlYXJjaERvbGxhcjogZmFTZWFyY2hEb2xsYXIsXG4gIGZhU2VhcmNoTG9jYXRpb246IGZhU2VhcmNoTG9jYXRpb24sXG4gIGZhU2VhcmNoTWludXM6IGZhU2VhcmNoTWludXMsXG4gIGZhU2VhcmNoUGx1czogZmFTZWFyY2hQbHVzLFxuICBmYVNlZWRsaW5nOiBmYVNlZWRsaW5nLFxuICBmYVNlcnZlcjogZmFTZXJ2ZXIsXG4gIGZhU2hhcGVzOiBmYVNoYXBlcyxcbiAgZmFTaGFyZTogZmFTaGFyZSxcbiAgZmFTaGFyZUFsdDogZmFTaGFyZUFsdCxcbiAgZmFTaGFyZUFsdFNxdWFyZTogZmFTaGFyZUFsdFNxdWFyZSxcbiAgZmFTaGFyZVNxdWFyZTogZmFTaGFyZVNxdWFyZSxcbiAgZmFTaGVrZWxTaWduOiBmYVNoZWtlbFNpZ24sXG4gIGZhU2hpZWxkQWx0OiBmYVNoaWVsZEFsdCxcbiAgZmFTaGllbGRWaXJ1czogZmFTaGllbGRWaXJ1cyxcbiAgZmFTaGlwOiBmYVNoaXAsXG4gIGZhU2hpcHBpbmdGYXN0OiBmYVNoaXBwaW5nRmFzdCxcbiAgZmFTaG9lUHJpbnRzOiBmYVNob2VQcmludHMsXG4gIGZhU2hvcHBpbmdCYWc6IGZhU2hvcHBpbmdCYWcsXG4gIGZhU2hvcHBpbmdCYXNrZXQ6IGZhU2hvcHBpbmdCYXNrZXQsXG4gIGZhU2hvcHBpbmdDYXJ0OiBmYVNob3BwaW5nQ2FydCxcbiAgZmFTaG93ZXI6IGZhU2hvd2VyLFxuICBmYVNodXR0bGVWYW46IGZhU2h1dHRsZVZhbixcbiAgZmFTaWduOiBmYVNpZ24sXG4gIGZhU2lnbkluQWx0OiBmYVNpZ25JbkFsdCxcbiAgZmFTaWduTGFuZ3VhZ2U6IGZhU2lnbkxhbmd1YWdlLFxuICBmYVNpZ25PdXRBbHQ6IGZhU2lnbk91dEFsdCxcbiAgZmFTaWduYWw6IGZhU2lnbmFsLFxuICBmYVNpZ25hdHVyZTogZmFTaWduYXR1cmUsXG4gIGZhU2ltQ2FyZDogZmFTaW1DYXJkLFxuICBmYVNpbms6IGZhU2luayxcbiAgZmFTaXRlbWFwOiBmYVNpdGVtYXAsXG4gIGZhU2thdGluZzogZmFTa2F0aW5nLFxuICBmYVNraWluZzogZmFTa2lpbmcsXG4gIGZhU2tpaW5nTm9yZGljOiBmYVNraWluZ05vcmRpYyxcbiAgZmFTa3VsbDogZmFTa3VsbCxcbiAgZmFTa3VsbENyb3NzYm9uZXM6IGZhU2t1bGxDcm9zc2JvbmVzLFxuICBmYVNsYXNoOiBmYVNsYXNoLFxuICBmYVNsZWlnaDogZmFTbGVpZ2gsXG4gIGZhU2xpZGVyc0g6IGZhU2xpZGVyc0gsXG4gIGZhU21pbGU6IGZhU21pbGUsXG4gIGZhU21pbGVCZWFtOiBmYVNtaWxlQmVhbSxcbiAgZmFTbWlsZVdpbms6IGZhU21pbGVXaW5rLFxuICBmYVNtb2c6IGZhU21vZyxcbiAgZmFTbW9raW5nOiBmYVNtb2tpbmcsXG4gIGZhU21va2luZ0JhbjogZmFTbW9raW5nQmFuLFxuICBmYVNtczogZmFTbXMsXG4gIGZhU25vd2JvYXJkaW5nOiBmYVNub3dib2FyZGluZyxcbiAgZmFTbm93Zmxha2U6IGZhU25vd2ZsYWtlLFxuICBmYVNub3dtYW46IGZhU25vd21hbixcbiAgZmFTbm93cGxvdzogZmFTbm93cGxvdyxcbiAgZmFTb2FwOiBmYVNvYXAsXG4gIGZhU29ja3M6IGZhU29ja3MsXG4gIGZhU29sYXJQYW5lbDogZmFTb2xhclBhbmVsLFxuICBmYVNvcnQ6IGZhU29ydCxcbiAgZmFTb3J0QWxwaGFEb3duOiBmYVNvcnRBbHBoYURvd24sXG4gIGZhU29ydEFscGhhRG93bkFsdDogZmFTb3J0QWxwaGFEb3duQWx0LFxuICBmYVNvcnRBbHBoYVVwOiBmYVNvcnRBbHBoYVVwLFxuICBmYVNvcnRBbHBoYVVwQWx0OiBmYVNvcnRBbHBoYVVwQWx0LFxuICBmYVNvcnRBbW91bnREb3duOiBmYVNvcnRBbW91bnREb3duLFxuICBmYVNvcnRBbW91bnREb3duQWx0OiBmYVNvcnRBbW91bnREb3duQWx0LFxuICBmYVNvcnRBbW91bnRVcDogZmFTb3J0QW1vdW50VXAsXG4gIGZhU29ydEFtb3VudFVwQWx0OiBmYVNvcnRBbW91bnRVcEFsdCxcbiAgZmFTb3J0RG93bjogZmFTb3J0RG93bixcbiAgZmFTb3J0TnVtZXJpY0Rvd246IGZhU29ydE51bWVyaWNEb3duLFxuICBmYVNvcnROdW1lcmljRG93bkFsdDogZmFTb3J0TnVtZXJpY0Rvd25BbHQsXG4gIGZhU29ydE51bWVyaWNVcDogZmFTb3J0TnVtZXJpY1VwLFxuICBmYVNvcnROdW1lcmljVXBBbHQ6IGZhU29ydE51bWVyaWNVcEFsdCxcbiAgZmFTb3J0VXA6IGZhU29ydFVwLFxuICBmYVNwYTogZmFTcGEsXG4gIGZhU3BhY2VTaHV0dGxlOiBmYVNwYWNlU2h1dHRsZSxcbiAgZmFTcGVsbENoZWNrOiBmYVNwZWxsQ2hlY2ssXG4gIGZhU3BpZGVyOiBmYVNwaWRlcixcbiAgZmFTcGlubmVyOiBmYVNwaW5uZXIsXG4gIGZhU3Bsb3RjaDogZmFTcGxvdGNoLFxuICBmYVNwcmF5Q2FuOiBmYVNwcmF5Q2FuLFxuICBmYVNxdWFyZTogZmFTcXVhcmUsXG4gIGZhU3F1YXJlRnVsbDogZmFTcXVhcmVGdWxsLFxuICBmYVNxdWFyZVJvb3RBbHQ6IGZhU3F1YXJlUm9vdEFsdCxcbiAgZmFTdGFtcDogZmFTdGFtcCxcbiAgZmFTdGFyOiBmYVN0YXIsXG4gIGZhU3RhckFuZENyZXNjZW50OiBmYVN0YXJBbmRDcmVzY2VudCxcbiAgZmFTdGFySGFsZjogZmFTdGFySGFsZixcbiAgZmFTdGFySGFsZkFsdDogZmFTdGFySGFsZkFsdCxcbiAgZmFTdGFyT2ZEYXZpZDogZmFTdGFyT2ZEYXZpZCxcbiAgZmFTdGFyT2ZMaWZlOiBmYVN0YXJPZkxpZmUsXG4gIGZhU3RlcEJhY2t3YXJkOiBmYVN0ZXBCYWNrd2FyZCxcbiAgZmFTdGVwRm9yd2FyZDogZmFTdGVwRm9yd2FyZCxcbiAgZmFTdGV0aG9zY29wZTogZmFTdGV0aG9zY29wZSxcbiAgZmFTdGlja3lOb3RlOiBmYVN0aWNreU5vdGUsXG4gIGZhU3RvcDogZmFTdG9wLFxuICBmYVN0b3BDaXJjbGU6IGZhU3RvcENpcmNsZSxcbiAgZmFTdG9wd2F0Y2g6IGZhU3RvcHdhdGNoLFxuICBmYVN0b3B3YXRjaDIwOiBmYVN0b3B3YXRjaDIwLFxuICBmYVN0b3JlOiBmYVN0b3JlLFxuICBmYVN0b3JlQWx0OiBmYVN0b3JlQWx0LFxuICBmYVN0b3JlQWx0U2xhc2g6IGZhU3RvcmVBbHRTbGFzaCxcbiAgZmFTdG9yZVNsYXNoOiBmYVN0b3JlU2xhc2gsXG4gIGZhU3RyZWFtOiBmYVN0cmVhbSxcbiAgZmFTdHJlZXRWaWV3OiBmYVN0cmVldFZpZXcsXG4gIGZhU3RyaWtldGhyb3VnaDogZmFTdHJpa2V0aHJvdWdoLFxuICBmYVN0cm9vcHdhZmVsOiBmYVN0cm9vcHdhZmVsLFxuICBmYVN1YnNjcmlwdDogZmFTdWJzY3JpcHQsXG4gIGZhU3Vid2F5OiBmYVN1YndheSxcbiAgZmFTdWl0Y2FzZTogZmFTdWl0Y2FzZSxcbiAgZmFTdWl0Y2FzZVJvbGxpbmc6IGZhU3VpdGNhc2VSb2xsaW5nLFxuICBmYVN1bjogZmFTdW4sXG4gIGZhU3VwZXJzY3JpcHQ6IGZhU3VwZXJzY3JpcHQsXG4gIGZhU3VycHJpc2U6IGZhU3VycHJpc2UsXG4gIGZhU3dhdGNoYm9vazogZmFTd2F0Y2hib29rLFxuICBmYVN3aW1tZXI6IGZhU3dpbW1lcixcbiAgZmFTd2ltbWluZ1Bvb2w6IGZhU3dpbW1pbmdQb29sLFxuICBmYVN5bmFnb2d1ZTogZmFTeW5hZ29ndWUsXG4gIGZhU3luYzogZmFTeW5jLFxuICBmYVN5bmNBbHQ6IGZhU3luY0FsdCxcbiAgZmFTeXJpbmdlOiBmYVN5cmluZ2UsXG4gIGZhVGFibGU6IGZhVGFibGUsXG4gIGZhVGFibGVUZW5uaXM6IGZhVGFibGVUZW5uaXMsXG4gIGZhVGFibGV0OiBmYVRhYmxldCxcbiAgZmFUYWJsZXRBbHQ6IGZhVGFibGV0QWx0LFxuICBmYVRhYmxldHM6IGZhVGFibGV0cyxcbiAgZmFUYWNob21ldGVyQWx0OiBmYVRhY2hvbWV0ZXJBbHQsXG4gIGZhVGFnOiBmYVRhZyxcbiAgZmFUYWdzOiBmYVRhZ3MsXG4gIGZhVGFwZTogZmFUYXBlLFxuICBmYVRhc2tzOiBmYVRhc2tzLFxuICBmYVRheGk6IGZhVGF4aSxcbiAgZmFUZWV0aDogZmFUZWV0aCxcbiAgZmFUZWV0aE9wZW46IGZhVGVldGhPcGVuLFxuICBmYVRlbXBlcmF0dXJlSGlnaDogZmFUZW1wZXJhdHVyZUhpZ2gsXG4gIGZhVGVtcGVyYXR1cmVMb3c6IGZhVGVtcGVyYXR1cmVMb3csXG4gIGZhVGVuZ2U6IGZhVGVuZ2UsXG4gIGZhVGVybWluYWw6IGZhVGVybWluYWwsXG4gIGZhVGV4dEhlaWdodDogZmFUZXh0SGVpZ2h0LFxuICBmYVRleHRXaWR0aDogZmFUZXh0V2lkdGgsXG4gIGZhVGg6IGZhVGgsXG4gIGZhVGhMYXJnZTogZmFUaExhcmdlLFxuICBmYVRoTGlzdDogZmFUaExpc3QsXG4gIGZhVGhlYXRlck1hc2tzOiBmYVRoZWF0ZXJNYXNrcyxcbiAgZmFUaGVybW9tZXRlcjogZmFUaGVybW9tZXRlcixcbiAgZmFUaGVybW9tZXRlckVtcHR5OiBmYVRoZXJtb21ldGVyRW1wdHksXG4gIGZhVGhlcm1vbWV0ZXJGdWxsOiBmYVRoZXJtb21ldGVyRnVsbCxcbiAgZmFUaGVybW9tZXRlckhhbGY6IGZhVGhlcm1vbWV0ZXJIYWxmLFxuICBmYVRoZXJtb21ldGVyUXVhcnRlcjogZmFUaGVybW9tZXRlclF1YXJ0ZXIsXG4gIGZhVGhlcm1vbWV0ZXJUaHJlZVF1YXJ0ZXJzOiBmYVRoZXJtb21ldGVyVGhyZWVRdWFydGVycyxcbiAgZmFUaHVtYnNEb3duOiBmYVRodW1ic0Rvd24sXG4gIGZhVGh1bWJzVXA6IGZhVGh1bWJzVXAsXG4gIGZhVGh1bWJ0YWNrOiBmYVRodW1idGFjayxcbiAgZmFUaWNrZXRBbHQ6IGZhVGlja2V0QWx0LFxuICBmYVRpbWVzOiBmYVRpbWVzLFxuICBmYVRpbWVzQ2lyY2xlOiBmYVRpbWVzQ2lyY2xlLFxuICBmYVRpbnQ6IGZhVGludCxcbiAgZmFUaW50U2xhc2g6IGZhVGludFNsYXNoLFxuICBmYVRpcmVkOiBmYVRpcmVkLFxuICBmYVRvZ2dsZU9mZjogZmFUb2dnbGVPZmYsXG4gIGZhVG9nZ2xlT246IGZhVG9nZ2xlT24sXG4gIGZhVG9pbGV0OiBmYVRvaWxldCxcbiAgZmFUb2lsZXRQYXBlcjogZmFUb2lsZXRQYXBlcixcbiAgZmFUb2lsZXRQYXBlclNsYXNoOiBmYVRvaWxldFBhcGVyU2xhc2gsXG4gIGZhVG9vbGJveDogZmFUb29sYm94LFxuICBmYVRvb2xzOiBmYVRvb2xzLFxuICBmYVRvb3RoOiBmYVRvb3RoLFxuICBmYVRvcmFoOiBmYVRvcmFoLFxuICBmYVRvcmlpR2F0ZTogZmFUb3JpaUdhdGUsXG4gIGZhVHJhY3RvcjogZmFUcmFjdG9yLFxuICBmYVRyYWRlbWFyazogZmFUcmFkZW1hcmssXG4gIGZhVHJhZmZpY0xpZ2h0OiBmYVRyYWZmaWNMaWdodCxcbiAgZmFUcmFpbGVyOiBmYVRyYWlsZXIsXG4gIGZhVHJhaW46IGZhVHJhaW4sXG4gIGZhVHJhbTogZmFUcmFtLFxuICBmYVRyYW5zZ2VuZGVyOiBmYVRyYW5zZ2VuZGVyLFxuICBmYVRyYW5zZ2VuZGVyQWx0OiBmYVRyYW5zZ2VuZGVyQWx0LFxuICBmYVRyYXNoOiBmYVRyYXNoLFxuICBmYVRyYXNoQWx0OiBmYVRyYXNoQWx0LFxuICBmYVRyYXNoUmVzdG9yZTogZmFUcmFzaFJlc3RvcmUsXG4gIGZhVHJhc2hSZXN0b3JlQWx0OiBmYVRyYXNoUmVzdG9yZUFsdCxcbiAgZmFUcmVlOiBmYVRyZWUsXG4gIGZhVHJvcGh5OiBmYVRyb3BoeSxcbiAgZmFUcnVjazogZmFUcnVjayxcbiAgZmFUcnVja0xvYWRpbmc6IGZhVHJ1Y2tMb2FkaW5nLFxuICBmYVRydWNrTW9uc3RlcjogZmFUcnVja01vbnN0ZXIsXG4gIGZhVHJ1Y2tNb3Zpbmc6IGZhVHJ1Y2tNb3ZpbmcsXG4gIGZhVHJ1Y2tQaWNrdXA6IGZhVHJ1Y2tQaWNrdXAsXG4gIGZhVHNoaXJ0OiBmYVRzaGlydCxcbiAgZmFUdHk6IGZhVHR5LFxuICBmYVR2OiBmYVR2LFxuICBmYVVtYnJlbGxhOiBmYVVtYnJlbGxhLFxuICBmYVVtYnJlbGxhQmVhY2g6IGZhVW1icmVsbGFCZWFjaCxcbiAgZmFVbmRlcmxpbmU6IGZhVW5kZXJsaW5lLFxuICBmYVVuZG86IGZhVW5kbyxcbiAgZmFVbmRvQWx0OiBmYVVuZG9BbHQsXG4gIGZhVW5pdmVyc2FsQWNjZXNzOiBmYVVuaXZlcnNhbEFjY2VzcyxcbiAgZmFVbml2ZXJzaXR5OiBmYVVuaXZlcnNpdHksXG4gIGZhVW5saW5rOiBmYVVubGluayxcbiAgZmFVbmxvY2s6IGZhVW5sb2NrLFxuICBmYVVubG9ja0FsdDogZmFVbmxvY2tBbHQsXG4gIGZhVXBsb2FkOiBmYVVwbG9hZCxcbiAgZmFVc2VyOiBmYVVzZXIsXG4gIGZhVXNlckFsdDogZmFVc2VyQWx0LFxuICBmYVVzZXJBbHRTbGFzaDogZmFVc2VyQWx0U2xhc2gsXG4gIGZhVXNlckFzdHJvbmF1dDogZmFVc2VyQXN0cm9uYXV0LFxuICBmYVVzZXJDaGVjazogZmFVc2VyQ2hlY2ssXG4gIGZhVXNlckNpcmNsZTogZmFVc2VyQ2lyY2xlLFxuICBmYVVzZXJDbG9jazogZmFVc2VyQ2xvY2ssXG4gIGZhVXNlckNvZzogZmFVc2VyQ29nLFxuICBmYVVzZXJFZGl0OiBmYVVzZXJFZGl0LFxuICBmYVVzZXJGcmllbmRzOiBmYVVzZXJGcmllbmRzLFxuICBmYVVzZXJHcmFkdWF0ZTogZmFVc2VyR3JhZHVhdGUsXG4gIGZhVXNlckluanVyZWQ6IGZhVXNlckluanVyZWQsXG4gIGZhVXNlckxvY2s6IGZhVXNlckxvY2ssXG4gIGZhVXNlck1kOiBmYVVzZXJNZCxcbiAgZmFVc2VyTWludXM6IGZhVXNlck1pbnVzLFxuICBmYVVzZXJOaW5qYTogZmFVc2VyTmluamEsXG4gIGZhVXNlck51cnNlOiBmYVVzZXJOdXJzZSxcbiAgZmFVc2VyUGx1czogZmFVc2VyUGx1cyxcbiAgZmFVc2VyU2VjcmV0OiBmYVVzZXJTZWNyZXQsXG4gIGZhVXNlclNoaWVsZDogZmFVc2VyU2hpZWxkLFxuICBmYVVzZXJTbGFzaDogZmFVc2VyU2xhc2gsXG4gIGZhVXNlclRhZzogZmFVc2VyVGFnLFxuICBmYVVzZXJUaWU6IGZhVXNlclRpZSxcbiAgZmFVc2VyVGltZXM6IGZhVXNlclRpbWVzLFxuICBmYVVzZXJzOiBmYVVzZXJzLFxuICBmYVVzZXJzQ29nOiBmYVVzZXJzQ29nLFxuICBmYVVzZXJzU2xhc2g6IGZhVXNlcnNTbGFzaCxcbiAgZmFVdGVuc2lsU3Bvb246IGZhVXRlbnNpbFNwb29uLFxuICBmYVV0ZW5zaWxzOiBmYVV0ZW5zaWxzLFxuICBmYVZlY3RvclNxdWFyZTogZmFWZWN0b3JTcXVhcmUsXG4gIGZhVmVudXM6IGZhVmVudXMsXG4gIGZhVmVudXNEb3VibGU6IGZhVmVudXNEb3VibGUsXG4gIGZhVmVudXNNYXJzOiBmYVZlbnVzTWFycyxcbiAgZmFWZXN0OiBmYVZlc3QsXG4gIGZhVmVzdFBhdGNoZXM6IGZhVmVzdFBhdGNoZXMsXG4gIGZhVmlhbDogZmFWaWFsLFxuICBmYVZpYWxzOiBmYVZpYWxzLFxuICBmYVZpZGVvOiBmYVZpZGVvLFxuICBmYVZpZGVvU2xhc2g6IGZhVmlkZW9TbGFzaCxcbiAgZmFWaWhhcmE6IGZhVmloYXJhLFxuICBmYVZpcnVzOiBmYVZpcnVzLFxuICBmYVZpcnVzU2xhc2g6IGZhVmlydXNTbGFzaCxcbiAgZmFWaXJ1c2VzOiBmYVZpcnVzZXMsXG4gIGZhVm9pY2VtYWlsOiBmYVZvaWNlbWFpbCxcbiAgZmFWb2xsZXliYWxsQmFsbDogZmFWb2xsZXliYWxsQmFsbCxcbiAgZmFWb2x1bWVEb3duOiBmYVZvbHVtZURvd24sXG4gIGZhVm9sdW1lTXV0ZTogZmFWb2x1bWVNdXRlLFxuICBmYVZvbHVtZU9mZjogZmFWb2x1bWVPZmYsXG4gIGZhVm9sdW1lVXA6IGZhVm9sdW1lVXAsXG4gIGZhVm90ZVllYTogZmFWb3RlWWVhLFxuICBmYVZyQ2FyZGJvYXJkOiBmYVZyQ2FyZGJvYXJkLFxuICBmYVdhbGtpbmc6IGZhV2Fsa2luZyxcbiAgZmFXYWxsZXQ6IGZhV2FsbGV0LFxuICBmYVdhcmVob3VzZTogZmFXYXJlaG91c2UsXG4gIGZhV2F0ZXI6IGZhV2F0ZXIsXG4gIGZhV2F2ZVNxdWFyZTogZmFXYXZlU3F1YXJlLFxuICBmYVdlaWdodDogZmFXZWlnaHQsXG4gIGZhV2VpZ2h0SGFuZ2luZzogZmFXZWlnaHRIYW5naW5nLFxuICBmYVdoZWVsY2hhaXI6IGZhV2hlZWxjaGFpcixcbiAgZmFXaWZpOiBmYVdpZmksXG4gIGZhV2luZDogZmFXaW5kLFxuICBmYVdpbmRvd0Nsb3NlOiBmYVdpbmRvd0Nsb3NlLFxuICBmYVdpbmRvd01heGltaXplOiBmYVdpbmRvd01heGltaXplLFxuICBmYVdpbmRvd01pbmltaXplOiBmYVdpbmRvd01pbmltaXplLFxuICBmYVdpbmRvd1Jlc3RvcmU6IGZhV2luZG93UmVzdG9yZSxcbiAgZmFXaW5lQm90dGxlOiBmYVdpbmVCb3R0bGUsXG4gIGZhV2luZUdsYXNzOiBmYVdpbmVHbGFzcyxcbiAgZmFXaW5lR2xhc3NBbHQ6IGZhV2luZUdsYXNzQWx0LFxuICBmYVdvblNpZ246IGZhV29uU2lnbixcbiAgZmFXcmVuY2g6IGZhV3JlbmNoLFxuICBmYVhSYXk6IGZhWFJheSxcbiAgZmFZZW5TaWduOiBmYVllblNpZ24sXG4gIGZhWWluWWFuZzogZmFZaW5ZYW5nXG59O1xuXG5leHBvcnQgeyBfaWNvbnNDYWNoZSBhcyBmYXMsIHByZWZpeCwgZmFBZCwgZmFBZGRyZXNzQm9vaywgZmFBZGRyZXNzQ2FyZCwgZmFBZGp1c3QsIGZhQWlyRnJlc2hlbmVyLCBmYUFsaWduQ2VudGVyLCBmYUFsaWduSnVzdGlmeSwgZmFBbGlnbkxlZnQsIGZhQWxpZ25SaWdodCwgZmFBbGxlcmdpZXMsIGZhQW1idWxhbmNlLCBmYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nLCBmYUFuY2hvciwgZmFBbmdsZURvdWJsZURvd24sIGZhQW5nbGVEb3VibGVMZWZ0LCBmYUFuZ2xlRG91YmxlUmlnaHQsIGZhQW5nbGVEb3VibGVVcCwgZmFBbmdsZURvd24sIGZhQW5nbGVMZWZ0LCBmYUFuZ2xlUmlnaHQsIGZhQW5nbGVVcCwgZmFBbmdyeSwgZmFBbmtoLCBmYUFwcGxlQWx0LCBmYUFyY2hpdmUsIGZhQXJjaHdheSwgZmFBcnJvd0FsdENpcmNsZURvd24sIGZhQXJyb3dBbHRDaXJjbGVMZWZ0LCBmYUFycm93QWx0Q2lyY2xlUmlnaHQsIGZhQXJyb3dBbHRDaXJjbGVVcCwgZmFBcnJvd0NpcmNsZURvd24sIGZhQXJyb3dDaXJjbGVMZWZ0LCBmYUFycm93Q2lyY2xlUmlnaHQsIGZhQXJyb3dDaXJjbGVVcCwgZmFBcnJvd0Rvd24sIGZhQXJyb3dMZWZ0LCBmYUFycm93UmlnaHQsIGZhQXJyb3dVcCwgZmFBcnJvd3NBbHQsIGZhQXJyb3dzQWx0SCwgZmFBcnJvd3NBbHRWLCBmYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXMsIGZhQXN0ZXJpc2ssIGZhQXQsIGZhQXRsYXMsIGZhQXRvbSwgZmFBdWRpb0Rlc2NyaXB0aW9uLCBmYUF3YXJkLCBmYUJhYnksIGZhQmFieUNhcnJpYWdlLCBmYUJhY2tzcGFjZSwgZmFCYWNrd2FyZCwgZmFCYWNvbiwgZmFCYWN0ZXJpYSwgZmFCYWN0ZXJpdW0sIGZhQmFoYWksIGZhQmFsYW5jZVNjYWxlLCBmYUJhbGFuY2VTY2FsZUxlZnQsIGZhQmFsYW5jZVNjYWxlUmlnaHQsIGZhQmFuLCBmYUJhbmRBaWQsIGZhQmFyY29kZSwgZmFCYXJzLCBmYUJhc2ViYWxsQmFsbCwgZmFCYXNrZXRiYWxsQmFsbCwgZmFCYXRoLCBmYUJhdHRlcnlFbXB0eSwgZmFCYXR0ZXJ5RnVsbCwgZmFCYXR0ZXJ5SGFsZiwgZmFCYXR0ZXJ5UXVhcnRlciwgZmFCYXR0ZXJ5VGhyZWVRdWFydGVycywgZmFCZWQsIGZhQmVlciwgZmFCZWxsLCBmYUJlbGxTbGFzaCwgZmFCZXppZXJDdXJ2ZSwgZmFCaWJsZSwgZmFCaWN5Y2xlLCBmYUJpa2luZywgZmFCaW5vY3VsYXJzLCBmYUJpb2hhemFyZCwgZmFCaXJ0aGRheUNha2UsIGZhQmxlbmRlciwgZmFCbGVuZGVyUGhvbmUsIGZhQmxpbmQsIGZhQmxvZywgZmFCb2xkLCBmYUJvbHQsIGZhQm9tYiwgZmFCb25lLCBmYUJvbmcsIGZhQm9vaywgZmFCb29rRGVhZCwgZmFCb29rTWVkaWNhbCwgZmFCb29rT3BlbiwgZmFCb29rUmVhZGVyLCBmYUJvb2ttYXJrLCBmYUJvcmRlckFsbCwgZmFCb3JkZXJOb25lLCBmYUJvcmRlclN0eWxlLCBmYUJvd2xpbmdCYWxsLCBmYUJveCwgZmFCb3hPcGVuLCBmYUJveFRpc3N1ZSwgZmFCb3hlcywgZmFCcmFpbGxlLCBmYUJyYWluLCBmYUJyZWFkU2xpY2UsIGZhQnJpZWZjYXNlLCBmYUJyaWVmY2FzZU1lZGljYWwsIGZhQnJvYWRjYXN0VG93ZXIsIGZhQnJvb20sIGZhQnJ1c2gsIGZhQnVnLCBmYUJ1aWxkaW5nLCBmYUJ1bGxob3JuLCBmYUJ1bGxzZXllLCBmYUJ1cm4sIGZhQnVzLCBmYUJ1c0FsdCwgZmFCdXNpbmVzc1RpbWUsIGZhQ2FsY3VsYXRvciwgZmFDYWxlbmRhciwgZmFDYWxlbmRhckFsdCwgZmFDYWxlbmRhckNoZWNrLCBmYUNhbGVuZGFyRGF5LCBmYUNhbGVuZGFyTWludXMsIGZhQ2FsZW5kYXJQbHVzLCBmYUNhbGVuZGFyVGltZXMsIGZhQ2FsZW5kYXJXZWVrLCBmYUNhbWVyYSwgZmFDYW1lcmFSZXRybywgZmFDYW1wZ3JvdW5kLCBmYUNhbmR5Q2FuZSwgZmFDYW5uYWJpcywgZmFDYXBzdWxlcywgZmFDYXIsIGZhQ2FyQWx0LCBmYUNhckJhdHRlcnksIGZhQ2FyQ3Jhc2gsIGZhQ2FyU2lkZSwgZmFDYXJhdmFuLCBmYUNhcmV0RG93biwgZmFDYXJldExlZnQsIGZhQ2FyZXRSaWdodCwgZmFDYXJldFNxdWFyZURvd24sIGZhQ2FyZXRTcXVhcmVMZWZ0LCBmYUNhcmV0U3F1YXJlUmlnaHQsIGZhQ2FyZXRTcXVhcmVVcCwgZmFDYXJldFVwLCBmYUNhcnJvdCwgZmFDYXJ0QXJyb3dEb3duLCBmYUNhcnRQbHVzLCBmYUNhc2hSZWdpc3RlciwgZmFDYXQsIGZhQ2VydGlmaWNhdGUsIGZhQ2hhaXIsIGZhQ2hhbGtib2FyZCwgZmFDaGFsa2JvYXJkVGVhY2hlciwgZmFDaGFyZ2luZ1N0YXRpb24sIGZhQ2hhcnRBcmVhLCBmYUNoYXJ0QmFyLCBmYUNoYXJ0TGluZSwgZmFDaGFydFBpZSwgZmFDaGVjaywgZmFDaGVja0NpcmNsZSwgZmFDaGVja0RvdWJsZSwgZmFDaGVja1NxdWFyZSwgZmFDaGVlc2UsIGZhQ2hlc3MsIGZhQ2hlc3NCaXNob3AsIGZhQ2hlc3NCb2FyZCwgZmFDaGVzc0tpbmcsIGZhQ2hlc3NLbmlnaHQsIGZhQ2hlc3NQYXduLCBmYUNoZXNzUXVlZW4sIGZhQ2hlc3NSb29rLCBmYUNoZXZyb25DaXJjbGVEb3duLCBmYUNoZXZyb25DaXJjbGVMZWZ0LCBmYUNoZXZyb25DaXJjbGVSaWdodCwgZmFDaGV2cm9uQ2lyY2xlVXAsIGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvbkxlZnQsIGZhQ2hldnJvblJpZ2h0LCBmYUNoZXZyb25VcCwgZmFDaGlsZCwgZmFDaHVyY2gsIGZhQ2lyY2xlLCBmYUNpcmNsZU5vdGNoLCBmYUNpdHksIGZhQ2xpbmljTWVkaWNhbCwgZmFDbGlwYm9hcmQsIGZhQ2xpcGJvYXJkQ2hlY2ssIGZhQ2xpcGJvYXJkTGlzdCwgZmFDbG9jaywgZmFDbG9uZSwgZmFDbG9zZWRDYXB0aW9uaW5nLCBmYUNsb3VkLCBmYUNsb3VkRG93bmxvYWRBbHQsIGZhQ2xvdWRNZWF0YmFsbCwgZmFDbG91ZE1vb24sIGZhQ2xvdWRNb29uUmFpbiwgZmFDbG91ZFJhaW4sIGZhQ2xvdWRTaG93ZXJzSGVhdnksIGZhQ2xvdWRTdW4sIGZhQ2xvdWRTdW5SYWluLCBmYUNsb3VkVXBsb2FkQWx0LCBmYUNvY2t0YWlsLCBmYUNvZGUsIGZhQ29kZUJyYW5jaCwgZmFDb2ZmZWUsIGZhQ29nLCBmYUNvZ3MsIGZhQ29pbnMsIGZhQ29sdW1ucywgZmFDb21tZW50LCBmYUNvbW1lbnRBbHQsIGZhQ29tbWVudERvbGxhciwgZmFDb21tZW50RG90cywgZmFDb21tZW50TWVkaWNhbCwgZmFDb21tZW50U2xhc2gsIGZhQ29tbWVudHMsIGZhQ29tbWVudHNEb2xsYXIsIGZhQ29tcGFjdERpc2MsIGZhQ29tcGFzcywgZmFDb21wcmVzcywgZmFDb21wcmVzc0FsdCwgZmFDb21wcmVzc0Fycm93c0FsdCwgZmFDb25jaWVyZ2VCZWxsLCBmYUNvb2tpZSwgZmFDb29raWVCaXRlLCBmYUNvcHksIGZhQ29weXJpZ2h0LCBmYUNvdWNoLCBmYUNyZWRpdENhcmQsIGZhQ3JvcCwgZmFDcm9wQWx0LCBmYUNyb3NzLCBmYUNyb3NzaGFpcnMsIGZhQ3JvdywgZmFDcm93biwgZmFDcnV0Y2gsIGZhQ3ViZSwgZmFDdWJlcywgZmFDdXQsIGZhRGF0YWJhc2UsIGZhRGVhZiwgZmFEZW1vY3JhdCwgZmFEZXNrdG9wLCBmYURoYXJtYWNoYWtyYSwgZmFEaWFnbm9zZXMsIGZhRGljZSwgZmFEaWNlRDIwLCBmYURpY2VENiwgZmFEaWNlRml2ZSwgZmFEaWNlRm91ciwgZmFEaWNlT25lLCBmYURpY2VTaXgsIGZhRGljZVRocmVlLCBmYURpY2VUd28sIGZhRGlnaXRhbFRhY2hvZ3JhcGgsIGZhRGlyZWN0aW9ucywgZmFEaXNlYXNlLCBmYURpdmlkZSwgZmFEaXp6eSwgZmFEbmEsIGZhRG9nLCBmYURvbGxhclNpZ24sIGZhRG9sbHksIGZhRG9sbHlGbGF0YmVkLCBmYURvbmF0ZSwgZmFEb29yQ2xvc2VkLCBmYURvb3JPcGVuLCBmYURvdENpcmNsZSwgZmFEb3ZlLCBmYURvd25sb2FkLCBmYURyYWZ0aW5nQ29tcGFzcywgZmFEcmFnb24sIGZhRHJhd1BvbHlnb24sIGZhRHJ1bSwgZmFEcnVtU3RlZWxwYW4sIGZhRHJ1bXN0aWNrQml0ZSwgZmFEdW1iYmVsbCwgZmFEdW1wc3RlciwgZmFEdW1wc3RlckZpcmUsIGZhRHVuZ2VvbiwgZmFFZGl0LCBmYUVnZywgZmFFamVjdCwgZmFFbGxpcHNpc0gsIGZhRWxsaXBzaXNWLCBmYUVudmVsb3BlLCBmYUVudmVsb3BlT3BlbiwgZmFFbnZlbG9wZU9wZW5UZXh0LCBmYUVudmVsb3BlU3F1YXJlLCBmYUVxdWFscywgZmFFcmFzZXIsIGZhRXRoZXJuZXQsIGZhRXVyb1NpZ24sIGZhRXhjaGFuZ2VBbHQsIGZhRXhjbGFtYXRpb24sIGZhRXhjbGFtYXRpb25DaXJjbGUsIGZhRXhjbGFtYXRpb25UcmlhbmdsZSwgZmFFeHBhbmQsIGZhRXhwYW5kQWx0LCBmYUV4cGFuZEFycm93c0FsdCwgZmFFeHRlcm5hbExpbmtBbHQsIGZhRXh0ZXJuYWxMaW5rU3F1YXJlQWx0LCBmYUV5ZSwgZmFFeWVEcm9wcGVyLCBmYUV5ZVNsYXNoLCBmYUZhbiwgZmFGYXN0QmFja3dhcmQsIGZhRmFzdEZvcndhcmQsIGZhRmF1Y2V0LCBmYUZheCwgZmFGZWF0aGVyLCBmYUZlYXRoZXJBbHQsIGZhRmVtYWxlLCBmYUZpZ2h0ZXJKZXQsIGZhRmlsZSwgZmFGaWxlQWx0LCBmYUZpbGVBcmNoaXZlLCBmYUZpbGVBdWRpbywgZmFGaWxlQ29kZSwgZmFGaWxlQ29udHJhY3QsIGZhRmlsZUNzdiwgZmFGaWxlRG93bmxvYWQsIGZhRmlsZUV4Y2VsLCBmYUZpbGVFeHBvcnQsIGZhRmlsZUltYWdlLCBmYUZpbGVJbXBvcnQsIGZhRmlsZUludm9pY2UsIGZhRmlsZUludm9pY2VEb2xsYXIsIGZhRmlsZU1lZGljYWwsIGZhRmlsZU1lZGljYWxBbHQsIGZhRmlsZVBkZiwgZmFGaWxlUG93ZXJwb2ludCwgZmFGaWxlUHJlc2NyaXB0aW9uLCBmYUZpbGVTaWduYXR1cmUsIGZhRmlsZVVwbG9hZCwgZmFGaWxlVmlkZW8sIGZhRmlsZVdvcmQsIGZhRmlsbCwgZmFGaWxsRHJpcCwgZmFGaWxtLCBmYUZpbHRlciwgZmFGaW5nZXJwcmludCwgZmFGaXJlLCBmYUZpcmVBbHQsIGZhRmlyZUV4dGluZ3Vpc2hlciwgZmFGaXJzdEFpZCwgZmFGaXNoLCBmYUZpc3RSYWlzZWQsIGZhRmxhZywgZmFGbGFnQ2hlY2tlcmVkLCBmYUZsYWdVc2EsIGZhRmxhc2ssIGZhRmx1c2hlZCwgZmFGb2xkZXIsIGZhRm9sZGVyTWludXMsIGZhRm9sZGVyT3BlbiwgZmFGb2xkZXJQbHVzLCBmYUZvbnQsIGZhRm9udEF3ZXNvbWVMb2dvRnVsbCwgZmFGb290YmFsbEJhbGwsIGZhRm9yd2FyZCwgZmFGcm9nLCBmYUZyb3duLCBmYUZyb3duT3BlbiwgZmFGdW5uZWxEb2xsYXIsIGZhRnV0Ym9sLCBmYUdhbWVwYWQsIGZhR2FzUHVtcCwgZmFHYXZlbCwgZmFHZW0sIGZhR2VuZGVybGVzcywgZmFHaG9zdCwgZmFHaWZ0LCBmYUdpZnRzLCBmYUdsYXNzQ2hlZXJzLCBmYUdsYXNzTWFydGluaSwgZmFHbGFzc01hcnRpbmlBbHQsIGZhR2xhc3NXaGlza2V5LCBmYUdsYXNzZXMsIGZhR2xvYmUsIGZhR2xvYmVBZnJpY2EsIGZhR2xvYmVBbWVyaWNhcywgZmFHbG9iZUFzaWEsIGZhR2xvYmVFdXJvcGUsIGZhR29sZkJhbGwsIGZhR29wdXJhbSwgZmFHcmFkdWF0aW9uQ2FwLCBmYUdyZWF0ZXJUaGFuLCBmYUdyZWF0ZXJUaGFuRXF1YWwsIGZhR3JpbWFjZSwgZmFHcmluLCBmYUdyaW5BbHQsIGZhR3JpbkJlYW0sIGZhR3JpbkJlYW1Td2VhdCwgZmFHcmluSGVhcnRzLCBmYUdyaW5TcXVpbnQsIGZhR3JpblNxdWludFRlYXJzLCBmYUdyaW5TdGFycywgZmFHcmluVGVhcnMsIGZhR3JpblRvbmd1ZSwgZmFHcmluVG9uZ3VlU3F1aW50LCBmYUdyaW5Ub25ndWVXaW5rLCBmYUdyaW5XaW5rLCBmYUdyaXBIb3Jpem9udGFsLCBmYUdyaXBMaW5lcywgZmFHcmlwTGluZXNWZXJ0aWNhbCwgZmFHcmlwVmVydGljYWwsIGZhR3VpdGFyLCBmYUhTcXVhcmUsIGZhSGFtYnVyZ2VyLCBmYUhhbW1lciwgZmFIYW1zYSwgZmFIYW5kSG9sZGluZywgZmFIYW5kSG9sZGluZ0hlYXJ0LCBmYUhhbmRIb2xkaW5nTWVkaWNhbCwgZmFIYW5kSG9sZGluZ1VzZCwgZmFIYW5kSG9sZGluZ1dhdGVyLCBmYUhhbmRMaXphcmQsIGZhSGFuZE1pZGRsZUZpbmdlciwgZmFIYW5kUGFwZXIsIGZhSGFuZFBlYWNlLCBmYUhhbmRQb2ludERvd24sIGZhSGFuZFBvaW50TGVmdCwgZmFIYW5kUG9pbnRSaWdodCwgZmFIYW5kUG9pbnRVcCwgZmFIYW5kUG9pbnRlciwgZmFIYW5kUm9jaywgZmFIYW5kU2Npc3NvcnMsIGZhSGFuZFNwYXJrbGVzLCBmYUhhbmRTcG9jaywgZmFIYW5kcywgZmFIYW5kc0hlbHBpbmcsIGZhSGFuZHNXYXNoLCBmYUhhbmRzaGFrZSwgZmFIYW5kc2hha2VBbHRTbGFzaCwgZmFIYW5kc2hha2VTbGFzaCwgZmFIYW51a2lhaCwgZmFIYXJkSGF0LCBmYUhhc2h0YWcsIGZhSGF0Q293Ym95LCBmYUhhdENvd2JveVNpZGUsIGZhSGF0V2l6YXJkLCBmYUhkZCwgZmFIZWFkU2lkZUNvdWdoLCBmYUhlYWRTaWRlQ291Z2hTbGFzaCwgZmFIZWFkU2lkZU1hc2ssIGZhSGVhZFNpZGVWaXJ1cywgZmFIZWFkaW5nLCBmYUhlYWRwaG9uZXMsIGZhSGVhZHBob25lc0FsdCwgZmFIZWFkc2V0LCBmYUhlYXJ0LCBmYUhlYXJ0QnJva2VuLCBmYUhlYXJ0YmVhdCwgZmFIZWxpY29wdGVyLCBmYUhpZ2hsaWdodGVyLCBmYUhpa2luZywgZmFIaXBwbywgZmFIaXN0b3J5LCBmYUhvY2tleVB1Y2ssIGZhSG9sbHlCZXJyeSwgZmFIb21lLCBmYUhvcnNlLCBmYUhvcnNlSGVhZCwgZmFIb3NwaXRhbCwgZmFIb3NwaXRhbEFsdCwgZmFIb3NwaXRhbFN5bWJvbCwgZmFIb3NwaXRhbFVzZXIsIGZhSG90VHViLCBmYUhvdGRvZywgZmFIb3RlbCwgZmFIb3VyZ2xhc3MsIGZhSG91cmdsYXNzRW5kLCBmYUhvdXJnbGFzc0hhbGYsIGZhSG91cmdsYXNzU3RhcnQsIGZhSG91c2VEYW1hZ2UsIGZhSG91c2VVc2VyLCBmYUhyeXZuaWEsIGZhSUN1cnNvciwgZmFJY2VDcmVhbSwgZmFJY2ljbGVzLCBmYUljb25zLCBmYUlkQmFkZ2UsIGZhSWRDYXJkLCBmYUlkQ2FyZEFsdCwgZmFJZ2xvbywgZmFJbWFnZSwgZmFJbWFnZXMsIGZhSW5ib3gsIGZhSW5kZW50LCBmYUluZHVzdHJ5LCBmYUluZmluaXR5LCBmYUluZm8sIGZhSW5mb0NpcmNsZSwgZmFJdGFsaWMsIGZhSmVkaSwgZmFKb2ludCwgZmFKb3VybmFsV2hpbGxzLCBmYUthYWJhLCBmYUtleSwgZmFLZXlib2FyZCwgZmFLaGFuZGEsIGZhS2lzcywgZmFLaXNzQmVhbSwgZmFLaXNzV2lua0hlYXJ0LCBmYUtpd2lCaXJkLCBmYUxhbmRtYXJrLCBmYUxhbmd1YWdlLCBmYUxhcHRvcCwgZmFMYXB0b3BDb2RlLCBmYUxhcHRvcEhvdXNlLCBmYUxhcHRvcE1lZGljYWwsIGZhTGF1Z2gsIGZhTGF1Z2hCZWFtLCBmYUxhdWdoU3F1aW50LCBmYUxhdWdoV2luaywgZmFMYXllckdyb3VwLCBmYUxlYWYsIGZhTGVtb24sIGZhTGVzc1RoYW4sIGZhTGVzc1RoYW5FcXVhbCwgZmFMZXZlbERvd25BbHQsIGZhTGV2ZWxVcEFsdCwgZmFMaWZlUmluZywgZmFMaWdodGJ1bGIsIGZhTGluaywgZmFMaXJhU2lnbiwgZmFMaXN0LCBmYUxpc3RBbHQsIGZhTGlzdE9sLCBmYUxpc3RVbCwgZmFMb2NhdGlvbkFycm93LCBmYUxvY2ssIGZhTG9ja09wZW4sIGZhTG9uZ0Fycm93QWx0RG93biwgZmFMb25nQXJyb3dBbHRMZWZ0LCBmYUxvbmdBcnJvd0FsdFJpZ2h0LCBmYUxvbmdBcnJvd0FsdFVwLCBmYUxvd1Zpc2lvbiwgZmFMdWdnYWdlQ2FydCwgZmFMdW5ncywgZmFMdW5nc1ZpcnVzLCBmYU1hZ2ljLCBmYU1hZ25ldCwgZmFNYWlsQnVsaywgZmFNYWxlLCBmYU1hcCwgZmFNYXBNYXJrZWQsIGZhTWFwTWFya2VkQWx0LCBmYU1hcE1hcmtlciwgZmFNYXBNYXJrZXJBbHQsIGZhTWFwUGluLCBmYU1hcFNpZ25zLCBmYU1hcmtlciwgZmFNYXJzLCBmYU1hcnNEb3VibGUsIGZhTWFyc1N0cm9rZSwgZmFNYXJzU3Ryb2tlSCwgZmFNYXJzU3Ryb2tlViwgZmFNYXNrLCBmYU1lZGFsLCBmYU1lZGtpdCwgZmFNZWgsIGZhTWVoQmxhbmssIGZhTWVoUm9sbGluZ0V5ZXMsIGZhTWVtb3J5LCBmYU1lbm9yYWgsIGZhTWVyY3VyeSwgZmFNZXRlb3IsIGZhTWljcm9jaGlwLCBmYU1pY3JvcGhvbmUsIGZhTWljcm9waG9uZUFsdCwgZmFNaWNyb3Bob25lQWx0U2xhc2gsIGZhTWljcm9waG9uZVNsYXNoLCBmYU1pY3Jvc2NvcGUsIGZhTWludXMsIGZhTWludXNDaXJjbGUsIGZhTWludXNTcXVhcmUsIGZhTWl0dGVuLCBmYU1vYmlsZSwgZmFNb2JpbGVBbHQsIGZhTW9uZXlCaWxsLCBmYU1vbmV5QmlsbEFsdCwgZmFNb25leUJpbGxXYXZlLCBmYU1vbmV5QmlsbFdhdmVBbHQsIGZhTW9uZXlDaGVjaywgZmFNb25leUNoZWNrQWx0LCBmYU1vbnVtZW50LCBmYU1vb24sIGZhTW9ydGFyUGVzdGxlLCBmYU1vc3F1ZSwgZmFNb3RvcmN5Y2xlLCBmYU1vdW50YWluLCBmYU1vdXNlLCBmYU1vdXNlUG9pbnRlciwgZmFNdWdIb3QsIGZhTXVzaWMsIGZhTmV0d29ya1dpcmVkLCBmYU5ldXRlciwgZmFOZXdzcGFwZXIsIGZhTm90RXF1YWwsIGZhTm90ZXNNZWRpY2FsLCBmYU9iamVjdEdyb3VwLCBmYU9iamVjdFVuZ3JvdXAsIGZhT2lsQ2FuLCBmYU9tLCBmYU90dGVyLCBmYU91dGRlbnQsIGZhUGFnZXIsIGZhUGFpbnRCcnVzaCwgZmFQYWludFJvbGxlciwgZmFQYWxldHRlLCBmYVBhbGxldCwgZmFQYXBlclBsYW5lLCBmYVBhcGVyY2xpcCwgZmFQYXJhY2h1dGVCb3gsIGZhUGFyYWdyYXBoLCBmYVBhcmtpbmcsIGZhUGFzc3BvcnQsIGZhUGFzdGFmYXJpYW5pc20sIGZhUGFzdGUsIGZhUGF1c2UsIGZhUGF1c2VDaXJjbGUsIGZhUGF3LCBmYVBlYWNlLCBmYVBlbiwgZmFQZW5BbHQsIGZhUGVuRmFuY3ksIGZhUGVuTmliLCBmYVBlblNxdWFyZSwgZmFQZW5jaWxBbHQsIGZhUGVuY2lsUnVsZXIsIGZhUGVvcGxlQXJyb3dzLCBmYVBlb3BsZUNhcnJ5LCBmYVBlcHBlckhvdCwgZmFQZXJjZW50LCBmYVBlcmNlbnRhZ2UsIGZhUGVyc29uQm9vdGgsIGZhUGhvbmUsIGZhUGhvbmVBbHQsIGZhUGhvbmVTbGFzaCwgZmFQaG9uZVNxdWFyZSwgZmFQaG9uZVNxdWFyZUFsdCwgZmFQaG9uZVZvbHVtZSwgZmFQaG90b1ZpZGVvLCBmYVBpZ2d5QmFuaywgZmFQaWxscywgZmFQaXp6YVNsaWNlLCBmYVBsYWNlT2ZXb3JzaGlwLCBmYVBsYW5lLCBmYVBsYW5lQXJyaXZhbCwgZmFQbGFuZURlcGFydHVyZSwgZmFQbGFuZVNsYXNoLCBmYVBsYXksIGZhUGxheUNpcmNsZSwgZmFQbHVnLCBmYVBsdXMsIGZhUGx1c0NpcmNsZSwgZmFQbHVzU3F1YXJlLCBmYVBvZGNhc3QsIGZhUG9sbCwgZmFQb2xsSCwgZmFQb28sIGZhUG9vU3Rvcm0sIGZhUG9vcCwgZmFQb3J0cmFpdCwgZmFQb3VuZFNpZ24sIGZhUG93ZXJPZmYsIGZhUHJheSwgZmFQcmF5aW5nSGFuZHMsIGZhUHJlc2NyaXB0aW9uLCBmYVByZXNjcmlwdGlvbkJvdHRsZSwgZmFQcmVzY3JpcHRpb25Cb3R0bGVBbHQsIGZhUHJpbnQsIGZhUHJvY2VkdXJlcywgZmFQcm9qZWN0RGlhZ3JhbSwgZmFQdW1wTWVkaWNhbCwgZmFQdW1wU29hcCwgZmFQdXp6bGVQaWVjZSwgZmFRcmNvZGUsIGZhUXVlc3Rpb24sIGZhUXVlc3Rpb25DaXJjbGUsIGZhUXVpZGRpdGNoLCBmYVF1b3RlTGVmdCwgZmFRdW90ZVJpZ2h0LCBmYVF1cmFuLCBmYVJhZGlhdGlvbiwgZmFSYWRpYXRpb25BbHQsIGZhUmFpbmJvdywgZmFSYW5kb20sIGZhUmVjZWlwdCwgZmFSZWNvcmRWaW55bCwgZmFSZWN5Y2xlLCBmYVJlZG8sIGZhUmVkb0FsdCwgZmFSZWdpc3RlcmVkLCBmYVJlbW92ZUZvcm1hdCwgZmFSZXBseSwgZmFSZXBseUFsbCwgZmFSZXB1YmxpY2FuLCBmYVJlc3Ryb29tLCBmYVJldHdlZXQsIGZhUmliYm9uLCBmYVJpbmcsIGZhUm9hZCwgZmFSb2JvdCwgZmFSb2NrZXQsIGZhUm91dGUsIGZhUnNzLCBmYVJzc1NxdWFyZSwgZmFSdWJsZVNpZ24sIGZhUnVsZXIsIGZhUnVsZXJDb21iaW5lZCwgZmFSdWxlckhvcml6b250YWwsIGZhUnVsZXJWZXJ0aWNhbCwgZmFSdW5uaW5nLCBmYVJ1cGVlU2lnbiwgZmFTYWRDcnksIGZhU2FkVGVhciwgZmFTYXRlbGxpdGUsIGZhU2F0ZWxsaXRlRGlzaCwgZmFTYXZlLCBmYVNjaG9vbCwgZmFTY3Jld2RyaXZlciwgZmFTY3JvbGwsIGZhU2RDYXJkLCBmYVNlYXJjaCwgZmFTZWFyY2hEb2xsYXIsIGZhU2VhcmNoTG9jYXRpb24sIGZhU2VhcmNoTWludXMsIGZhU2VhcmNoUGx1cywgZmFTZWVkbGluZywgZmFTZXJ2ZXIsIGZhU2hhcGVzLCBmYVNoYXJlLCBmYVNoYXJlQWx0LCBmYVNoYXJlQWx0U3F1YXJlLCBmYVNoYXJlU3F1YXJlLCBmYVNoZWtlbFNpZ24sIGZhU2hpZWxkQWx0LCBmYVNoaWVsZFZpcnVzLCBmYVNoaXAsIGZhU2hpcHBpbmdGYXN0LCBmYVNob2VQcmludHMsIGZhU2hvcHBpbmdCYWcsIGZhU2hvcHBpbmdCYXNrZXQsIGZhU2hvcHBpbmdDYXJ0LCBmYVNob3dlciwgZmFTaHV0dGxlVmFuLCBmYVNpZ24sIGZhU2lnbkluQWx0LCBmYVNpZ25MYW5ndWFnZSwgZmFTaWduT3V0QWx0LCBmYVNpZ25hbCwgZmFTaWduYXR1cmUsIGZhU2ltQ2FyZCwgZmFTaW5rLCBmYVNpdGVtYXAsIGZhU2thdGluZywgZmFTa2lpbmcsIGZhU2tpaW5nTm9yZGljLCBmYVNrdWxsLCBmYVNrdWxsQ3Jvc3Nib25lcywgZmFTbGFzaCwgZmFTbGVpZ2gsIGZhU2xpZGVyc0gsIGZhU21pbGUsIGZhU21pbGVCZWFtLCBmYVNtaWxlV2luaywgZmFTbW9nLCBmYVNtb2tpbmcsIGZhU21va2luZ0JhbiwgZmFTbXMsIGZhU25vd2JvYXJkaW5nLCBmYVNub3dmbGFrZSwgZmFTbm93bWFuLCBmYVNub3dwbG93LCBmYVNvYXAsIGZhU29ja3MsIGZhU29sYXJQYW5lbCwgZmFTb3J0LCBmYVNvcnRBbHBoYURvd24sIGZhU29ydEFscGhhRG93bkFsdCwgZmFTb3J0QWxwaGFVcCwgZmFTb3J0QWxwaGFVcEFsdCwgZmFTb3J0QW1vdW50RG93biwgZmFTb3J0QW1vdW50RG93bkFsdCwgZmFTb3J0QW1vdW50VXAsIGZhU29ydEFtb3VudFVwQWx0LCBmYVNvcnREb3duLCBmYVNvcnROdW1lcmljRG93biwgZmFTb3J0TnVtZXJpY0Rvd25BbHQsIGZhU29ydE51bWVyaWNVcCwgZmFTb3J0TnVtZXJpY1VwQWx0LCBmYVNvcnRVcCwgZmFTcGEsIGZhU3BhY2VTaHV0dGxlLCBmYVNwZWxsQ2hlY2ssIGZhU3BpZGVyLCBmYVNwaW5uZXIsIGZhU3Bsb3RjaCwgZmFTcHJheUNhbiwgZmFTcXVhcmUsIGZhU3F1YXJlRnVsbCwgZmFTcXVhcmVSb290QWx0LCBmYVN0YW1wLCBmYVN0YXIsIGZhU3RhckFuZENyZXNjZW50LCBmYVN0YXJIYWxmLCBmYVN0YXJIYWxmQWx0LCBmYVN0YXJPZkRhdmlkLCBmYVN0YXJPZkxpZmUsIGZhU3RlcEJhY2t3YXJkLCBmYVN0ZXBGb3J3YXJkLCBmYVN0ZXRob3Njb3BlLCBmYVN0aWNreU5vdGUsIGZhU3RvcCwgZmFTdG9wQ2lyY2xlLCBmYVN0b3B3YXRjaCwgZmFTdG9wd2F0Y2gyMCwgZmFTdG9yZSwgZmFTdG9yZUFsdCwgZmFTdG9yZUFsdFNsYXNoLCBmYVN0b3JlU2xhc2gsIGZhU3RyZWFtLCBmYVN0cmVldFZpZXcsIGZhU3RyaWtldGhyb3VnaCwgZmFTdHJvb3B3YWZlbCwgZmFTdWJzY3JpcHQsIGZhU3Vid2F5LCBmYVN1aXRjYXNlLCBmYVN1aXRjYXNlUm9sbGluZywgZmFTdW4sIGZhU3VwZXJzY3JpcHQsIGZhU3VycHJpc2UsIGZhU3dhdGNoYm9vaywgZmFTd2ltbWVyLCBmYVN3aW1taW5nUG9vbCwgZmFTeW5hZ29ndWUsIGZhU3luYywgZmFTeW5jQWx0LCBmYVN5cmluZ2UsIGZhVGFibGUsIGZhVGFibGVUZW5uaXMsIGZhVGFibGV0LCBmYVRhYmxldEFsdCwgZmFUYWJsZXRzLCBmYVRhY2hvbWV0ZXJBbHQsIGZhVGFnLCBmYVRhZ3MsIGZhVGFwZSwgZmFUYXNrcywgZmFUYXhpLCBmYVRlZXRoLCBmYVRlZXRoT3BlbiwgZmFUZW1wZXJhdHVyZUhpZ2gsIGZhVGVtcGVyYXR1cmVMb3csIGZhVGVuZ2UsIGZhVGVybWluYWwsIGZhVGV4dEhlaWdodCwgZmFUZXh0V2lkdGgsIGZhVGgsIGZhVGhMYXJnZSwgZmFUaExpc3QsIGZhVGhlYXRlck1hc2tzLCBmYVRoZXJtb21ldGVyLCBmYVRoZXJtb21ldGVyRW1wdHksIGZhVGhlcm1vbWV0ZXJGdWxsLCBmYVRoZXJtb21ldGVySGFsZiwgZmFUaGVybW9tZXRlclF1YXJ0ZXIsIGZhVGhlcm1vbWV0ZXJUaHJlZVF1YXJ0ZXJzLCBmYVRodW1ic0Rvd24sIGZhVGh1bWJzVXAsIGZhVGh1bWJ0YWNrLCBmYVRpY2tldEFsdCwgZmFUaW1lcywgZmFUaW1lc0NpcmNsZSwgZmFUaW50LCBmYVRpbnRTbGFzaCwgZmFUaXJlZCwgZmFUb2dnbGVPZmYsIGZhVG9nZ2xlT24sIGZhVG9pbGV0LCBmYVRvaWxldFBhcGVyLCBmYVRvaWxldFBhcGVyU2xhc2gsIGZhVG9vbGJveCwgZmFUb29scywgZmFUb290aCwgZmFUb3JhaCwgZmFUb3JpaUdhdGUsIGZhVHJhY3RvciwgZmFUcmFkZW1hcmssIGZhVHJhZmZpY0xpZ2h0LCBmYVRyYWlsZXIsIGZhVHJhaW4sIGZhVHJhbSwgZmFUcmFuc2dlbmRlciwgZmFUcmFuc2dlbmRlckFsdCwgZmFUcmFzaCwgZmFUcmFzaEFsdCwgZmFUcmFzaFJlc3RvcmUsIGZhVHJhc2hSZXN0b3JlQWx0LCBmYVRyZWUsIGZhVHJvcGh5LCBmYVRydWNrLCBmYVRydWNrTG9hZGluZywgZmFUcnVja01vbnN0ZXIsIGZhVHJ1Y2tNb3ZpbmcsIGZhVHJ1Y2tQaWNrdXAsIGZhVHNoaXJ0LCBmYVR0eSwgZmFUdiwgZmFVbWJyZWxsYSwgZmFVbWJyZWxsYUJlYWNoLCBmYVVuZGVybGluZSwgZmFVbmRvLCBmYVVuZG9BbHQsIGZhVW5pdmVyc2FsQWNjZXNzLCBmYVVuaXZlcnNpdHksIGZhVW5saW5rLCBmYVVubG9jaywgZmFVbmxvY2tBbHQsIGZhVXBsb2FkLCBmYVVzZXIsIGZhVXNlckFsdCwgZmFVc2VyQWx0U2xhc2gsIGZhVXNlckFzdHJvbmF1dCwgZmFVc2VyQ2hlY2ssIGZhVXNlckNpcmNsZSwgZmFVc2VyQ2xvY2ssIGZhVXNlckNvZywgZmFVc2VyRWRpdCwgZmFVc2VyRnJpZW5kcywgZmFVc2VyR3JhZHVhdGUsIGZhVXNlckluanVyZWQsIGZhVXNlckxvY2ssIGZhVXNlck1kLCBmYVVzZXJNaW51cywgZmFVc2VyTmluamEsIGZhVXNlck51cnNlLCBmYVVzZXJQbHVzLCBmYVVzZXJTZWNyZXQsIGZhVXNlclNoaWVsZCwgZmFVc2VyU2xhc2gsIGZhVXNlclRhZywgZmFVc2VyVGllLCBmYVVzZXJUaW1lcywgZmFVc2VycywgZmFVc2Vyc0NvZywgZmFVc2Vyc1NsYXNoLCBmYVV0ZW5zaWxTcG9vbiwgZmFVdGVuc2lscywgZmFWZWN0b3JTcXVhcmUsIGZhVmVudXMsIGZhVmVudXNEb3VibGUsIGZhVmVudXNNYXJzLCBmYVZlc3QsIGZhVmVzdFBhdGNoZXMsIGZhVmlhbCwgZmFWaWFscywgZmFWaWRlbywgZmFWaWRlb1NsYXNoLCBmYVZpaGFyYSwgZmFWaXJ1cywgZmFWaXJ1c1NsYXNoLCBmYVZpcnVzZXMsIGZhVm9pY2VtYWlsLCBmYVZvbGxleWJhbGxCYWxsLCBmYVZvbHVtZURvd24sIGZhVm9sdW1lTXV0ZSwgZmFWb2x1bWVPZmYsIGZhVm9sdW1lVXAsIGZhVm90ZVllYSwgZmFWckNhcmRib2FyZCwgZmFXYWxraW5nLCBmYVdhbGxldCwgZmFXYXJlaG91c2UsIGZhV2F0ZXIsIGZhV2F2ZVNxdWFyZSwgZmFXZWlnaHQsIGZhV2VpZ2h0SGFuZ2luZywgZmFXaGVlbGNoYWlyLCBmYVdpZmksIGZhV2luZCwgZmFXaW5kb3dDbG9zZSwgZmFXaW5kb3dNYXhpbWl6ZSwgZmFXaW5kb3dNaW5pbWl6ZSwgZmFXaW5kb3dSZXN0b3JlLCBmYVdpbmVCb3R0bGUsIGZhV2luZUdsYXNzLCBmYVdpbmVHbGFzc0FsdCwgZmFXb25TaWduLCBmYVdyZW5jaCwgZmFYUmF5LCBmYVllblNpZ24sIGZhWWluWWFuZyB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@fortawesome/free-solid-svg-icons/index.es.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@fortawesome/vue-fontawesome/index.es.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@fortawesome/vue-fontawesome/index.es.js ***!
|
||
\***************************************************************/
|
||
/*! exports provided: FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontAwesomeIcon\", function() { return FontAwesomeIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontAwesomeLayers\", function() { return FontAwesomeLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontAwesomeLayersText\", function() { return FontAwesomeLayersText; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fortawesome/fontawesome-svg-core */ \"./node_modules/@fortawesome/fontawesome-svg-core/index.es.js\");\n\n\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar humps = createCommonjsModule(function (module) {\n(function(global) {\n\n var _processKeys = function(convert, obj, options) {\n if(!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {\n return obj;\n }\n\n var output,\n i = 0,\n l = 0;\n\n if(_isArray(obj)) {\n output = [];\n for(l=obj.length; i<l; i++) {\n output.push(_processKeys(convert, obj[i], options));\n }\n }\n else {\n output = {};\n for(var key in obj) {\n if(Object.prototype.hasOwnProperty.call(obj, key)) {\n output[convert(key, options)] = _processKeys(convert, obj[key], options);\n }\n }\n }\n return output;\n };\n\n // String conversion methods\n\n var separateWords = function(string, options) {\n options = options || {};\n var separator = options.separator || '_';\n var split = options.split || /(?=[A-Z])/;\n\n return string.split(split).join(separator);\n };\n\n var camelize = function(string) {\n if (_isNumerical(string)) {\n return string;\n }\n string = string.replace(/[\\-_\\s]+(.)?/g, function(match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n // Ensure 1st char is always lowercase\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n };\n\n var pascalize = function(string) {\n var camelized = camelize(string);\n // Ensure 1st char is always uppercase\n return camelized.substr(0, 1).toUpperCase() + camelized.substr(1);\n };\n\n var decamelize = function(string, options) {\n return separateWords(string, options).toLowerCase();\n };\n\n // Utilities\n // Taken from Underscore.js\n\n var toString = Object.prototype.toString;\n\n var _isFunction = function(obj) {\n return typeof(obj) === 'function';\n };\n var _isObject = function(obj) {\n return obj === Object(obj);\n };\n var _isArray = function(obj) {\n return toString.call(obj) == '[object Array]';\n };\n var _isDate = function(obj) {\n return toString.call(obj) == '[object Date]';\n };\n var _isRegExp = function(obj) {\n return toString.call(obj) == '[object RegExp]';\n };\n var _isBoolean = function(obj) {\n return toString.call(obj) == '[object Boolean]';\n };\n\n // Performant way to determine if obj coerces to a number\n var _isNumerical = function(obj) {\n obj = obj - 0;\n return obj === obj;\n };\n\n // Sets up function which handles processing keys\n // allowing the convert function to be modified by a callback\n var _processor = function(convert, options) {\n var callback = options && 'process' in options ? options.process : options;\n\n if(typeof(callback) !== 'function') {\n return convert;\n }\n\n return function(string, options) {\n return callback(string, convert, options);\n }\n };\n\n var humps = {\n camelize: camelize,\n decamelize: decamelize,\n pascalize: pascalize,\n depascalize: decamelize,\n camelizeKeys: function(object, options) {\n return _processKeys(_processor(camelize, options), object);\n },\n decamelizeKeys: function(object, options) {\n return _processKeys(_processor(decamelize, options), object, options);\n },\n pascalizeKeys: function(object, options) {\n return _processKeys(_processor(pascalize, options), object);\n },\n depascalizeKeys: function () {\n return this.decamelizeKeys.apply(this, arguments);\n }\n };\n\n if (false) {} else if ( true && module.exports) {\n module.exports = humps;\n } else {\n global.humps = humps;\n }\n\n})(commonjsGlobal);\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * Converts a CSS style into a plain Javascript object.\n * @param {String} style The style to converts into a plain Javascript object.\n * @returns {Object}\n */\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (output, pair) {\n var idx = pair.indexOf(':');\n var prop = humps.camelize(pair.slice(0, idx));\n var value = pair.slice(idx + 1).trim();\n\n output[prop] = value;\n return output;\n }, {});\n}\n\n/**\n * Converts a CSS class list into a plain Javascript object.\n * @param {Array<String>} classes The class list to convert.\n * @returns {Object}\n */\nfunction classToObject(classes) {\n return classes.split(/\\s+/).reduce(function (output, className) {\n output[className] = true;\n return output;\n }, {});\n}\n\n/**\n * Converts a FontAwesome abstract element of an icon into a Vue VNode.\n * @param {AbstractElement | String} abstractElement The element to convert.\n * @param {Object} props The user-defined props.\n * @param {Object} attrs The user-defined native HTML attributes.\n * @returns {VNode}\n */\nfunction convert(abstractElement) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n // If the abstract element is a string, we'll just return a string render function\n if (typeof abstractElement === 'string') {\n return abstractElement;\n }\n\n // Converting abstract element children into Vue VNodes\n var children = (abstractElement.children || []).map(function (child) {\n return convert(child);\n });\n\n // Converting abstract element attributes into valid Vue format\n var mixins = Object.keys(abstractElement.attributes || {}).reduce(function (mixins, key) {\n var value = abstractElement.attributes[key];\n\n switch (key) {\n case 'class':\n mixins.class = classToObject(value);\n break;\n case 'style':\n mixins.style = styleToObject(value);\n break;\n default:\n mixins.attrs[key] = value;\n }\n\n return mixins;\n }, {\n attrs: {},\n class: {},\n style: {}\n });\n\n // Now, we'll return the VNode\n\n var _attrs$class = attrs.class,\n _attrs$style = attrs.style,\n aStyle = _attrs$style === undefined ? {} : _attrs$style,\n otherAttrs = objectWithoutProperties(attrs, ['class', 'style']);\n\n return Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"h\"])(abstractElement.tag, _extends({}, props, {\n class: mixins.class,\n style: _extends({}, mixins.style, aStyle)\n }, mixins.attrs, otherAttrs), children);\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = \"development\" === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction objectWithKey(key, value) {\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? defineProperty({}, key, value) : {};\n}\n\nfunction classList(props) {\n var _classes;\n\n var classes = (_classes = {\n 'fa-spin': props.spin,\n 'fa-pulse': props.pulse,\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-li': props.listItem,\n 'fa-inverse': props.inverse,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both'\n }, defineProperty(_classes, 'fa-' + props.size, props.size !== null), defineProperty(_classes, 'fa-rotate-' + props.rotation, props.rotation !== null), defineProperty(_classes, 'fa-pull-' + props.pull, props.pull !== null), defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes);\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\nfunction normalizeIconArgs(icon$$1) {\n if (icon$$1 === null) {\n return null;\n }\n\n if ((typeof icon$$1 === 'undefined' ? 'undefined' : _typeof(icon$$1)) === 'object' && icon$$1.prefix && icon$$1.iconName) {\n return icon$$1;\n }\n\n if (Array.isArray(icon$$1) && icon$$1.length === 2) {\n return { prefix: icon$$1[0], iconName: icon$$1[1] };\n }\n\n if (typeof icon$$1 === 'string') {\n return { prefix: 'fas', iconName: icon$$1 };\n }\n}\n\nvar FontAwesomeIcon = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"defineComponent\"])({\n name: 'FontAwesomeIcon',\n\n props: {\n border: {\n type: Boolean,\n default: false\n },\n fixedWidth: {\n type: Boolean,\n default: false\n },\n flip: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['horizontal', 'vertical', 'both'].indexOf(value) > -1;\n }\n },\n icon: {\n type: [Object, Array, String],\n required: true\n },\n mask: {\n type: [Object, Array, String],\n default: null\n },\n listItem: {\n type: Boolean,\n default: false\n },\n pull: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['right', 'left'].indexOf(value) > -1;\n }\n },\n pulse: {\n type: Boolean,\n default: false\n },\n rotation: {\n type: [String, Number],\n default: null,\n validator: function validator(value) {\n return [90, 180, 270].indexOf(Number.parseInt(value, 10)) > -1;\n }\n },\n swapOpacity: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['lg', 'xs', 'sm', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x'].indexOf(value) > -1;\n }\n },\n spin: {\n type: Boolean,\n default: false\n },\n transform: {\n type: [String, Object],\n default: null\n },\n symbol: {\n type: [Boolean, String],\n default: false\n },\n title: {\n type: String,\n default: null\n },\n inverse: {\n type: Boolean,\n default: false\n }\n },\n\n setup: function setup(props, _ref) {\n var attrs = _ref.attrs;\n\n var icon$$1 = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return normalizeIconArgs(props.icon);\n });\n var classes = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return objectWithKey('classes', classList(props));\n });\n var transform = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return objectWithKey('transform', typeof props.transform === 'string' ? _fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_1__[\"parse\"].transform(props.transform) : props.transform);\n });\n var mask = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return objectWithKey('mask', normalizeIconArgs(props.mask));\n });\n\n var renderedIcon = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return Object(_fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_1__[\"icon\"])(icon$$1.value, _extends({}, classes.value, transform.value, mask.value, {\n symbol: props.symbol,\n title: props.title\n }));\n });\n\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])(renderedIcon, function (value) {\n if (!value) {\n return log('Could not find one or more icon(s)', icon$$1.value, mask.value);\n }\n }, { immediate: true });\n\n var vnode = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return renderedIcon.value ? convert(renderedIcon.value.abstract[0], {}, attrs) : null;\n });\n return function () {\n return vnode.value;\n };\n }\n});\n\nvar FontAwesomeLayers = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"defineComponent\"])({\n name: 'FontAwesomeLayers',\n\n props: {\n fixedWidth: {\n type: Boolean,\n default: false\n }\n },\n\n setup: function setup(props, _ref) {\n var slots = _ref.slots;\n var familyPrefix = _fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_1__[\"config\"].familyPrefix;\n\n\n var className = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return [familyPrefix + '-layers'].concat(toConsumableArray(props.fixedWidth ? [familyPrefix + '-fw'] : []));\n });\n\n return function () {\n return Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"h\"])('div', { class: className.value }, slots.default ? slots.default() : []);\n };\n }\n});\n\nvar FontAwesomeLayersText = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"defineComponent\"])({\n name: 'FontAwesomeLayersText',\n\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n transform: {\n type: [String, Object],\n default: null\n },\n counter: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['bottom-left', 'bottom-right', 'top-left', 'top-right'].indexOf(value) > -1;\n }\n }\n },\n\n setup: function setup(props, _ref) {\n var attrs = _ref.attrs;\n var familyPrefix = _fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_1__[\"config\"].familyPrefix;\n\n\n var classes = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return objectWithKey('classes', [].concat(toConsumableArray(props.counter ? [familyPrefix + '-layers-counter'] : []), toConsumableArray(props.position ? [familyPrefix + '-layers-' + props.position] : [])));\n });\n var transform = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return objectWithKey('transform', typeof props.transform === 'string' ? _fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_1__[\"parse\"].transform(props.transform) : props.transform);\n });\n var abstractElement = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n var _text = Object(_fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_1__[\"text\"])(props.value.toString(), _extends({}, transform.value, classes.value)),\n abstract = _text.abstract;\n\n if (props.counter) {\n abstract[0].attributes.class = abstract[0].attributes.class.replace('fa-layers-text', '');\n }\n return abstract[0];\n });\n\n var vnode = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(function () {\n return convert(abstractElement.value, {}, attrs);\n });\n return function () {\n return vnode.value;\n };\n }\n});\n\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL3Z1ZS1mb250YXdlc29tZS9pbmRleC5lcy5qcz9hZDNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRDtBQUNvQjs7QUFFOUU7O0FBRUE7QUFDQSxrQkFBa0IsWUFBWSxFQUFFO0FBQ2hDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUIsS0FBSztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sS0FBZ0QsRUFBRSxFQUVyRCxVQUFVLEtBQXdCO0FBQ3JDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsQ0FBQztBQUNELENBQUM7O0FBRUQ7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0JBQXNCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw2Q0FBNkMsZ0JBQWdCOztBQUU3RDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUcsSUFBSTtBQUNQOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7QUFFQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEMsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLDJEQUEyRDtBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCxhQUFhO0FBQ2IsYUFBYTtBQUNiO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDOztBQUVBLFNBQVMsNkNBQUMsaUNBQWlDO0FBQzNDO0FBQ0Esc0JBQXNCO0FBQ3RCLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBLGVBQWUsYUFBb0I7QUFDbkMsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUdBQXVHO0FBQ3ZHOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBLHNCQUFzQiwyREFBZTtBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBLGtCQUFrQixvREFBUTtBQUMxQjtBQUNBLEtBQUs7QUFDTCxrQkFBa0Isb0RBQVE7QUFDMUI7QUFDQSxLQUFLO0FBQ0wsb0JBQW9CLG9EQUFRO0FBQzVCLDhFQUE4RSx1RUFBSztBQUNuRixLQUFLO0FBQ0wsZUFBZSxvREFBUTtBQUN2QjtBQUNBLEtBQUs7O0FBRUwsdUJBQXVCLG9EQUFRO0FBQy9CLGFBQWEsOEVBQUksMkJBQTJCO0FBQzVDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTCxJQUFJLGlEQUFLO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSyxHQUFHLGtCQUFrQjs7QUFFMUIsZ0JBQWdCLG9EQUFRO0FBQ3hCLDRFQUE0RTtBQUM1RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELHdCQUF3QiwyREFBZTtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsdUJBQXVCLHdFQUFNOzs7QUFHN0Isb0JBQW9CLG9EQUFRO0FBQzVCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLGFBQWEsNkNBQUMsU0FBUyx5QkFBeUI7QUFDaEQ7QUFDQTtBQUNBLENBQUM7O0FBRUQsNEJBQTRCLDJEQUFlO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSx1QkFBdUIsd0VBQU07OztBQUc3QixrQkFBa0Isb0RBQVE7QUFDMUI7QUFDQSxLQUFLO0FBQ0wsb0JBQW9CLG9EQUFRO0FBQzVCLDhFQUE4RSx1RUFBSztBQUNuRixLQUFLO0FBQ0wsMEJBQTBCLG9EQUFRO0FBQ2xDLGtCQUFrQiw4RUFBSSxvQ0FBb0M7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMLGdCQUFnQixvREFBUTtBQUN4Qiw4Q0FBOEM7QUFDOUMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFb0UiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL3Z1ZS1mb250YXdlc29tZS9pbmRleC5lcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGgsIGRlZmluZUNvbXBvbmVudCwgY29tcHV0ZWQsIHdhdGNoIH0gZnJvbSAndnVlJztcbmltcG9ydCB7IHBhcnNlLCBpY29uLCBjb25maWcsIHRleHQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xuXG52YXIgY29tbW9uanNHbG9iYWwgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9O1xuXG5mdW5jdGlvbiBjcmVhdGVDb21tb25qc01vZHVsZShmbiwgbW9kdWxlKSB7XG5cdHJldHVybiBtb2R1bGUgPSB7IGV4cG9ydHM6IHt9IH0sIGZuKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMpLCBtb2R1bGUuZXhwb3J0cztcbn1cblxudmFyIGh1bXBzID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xuKGZ1bmN0aW9uKGdsb2JhbCkge1xuXG4gIHZhciBfcHJvY2Vzc0tleXMgPSBmdW5jdGlvbihjb252ZXJ0LCBvYmosIG9wdGlvbnMpIHtcbiAgICBpZighX2lzT2JqZWN0KG9iaikgfHwgX2lzRGF0ZShvYmopIHx8IF9pc1JlZ0V4cChvYmopIHx8IF9pc0Jvb2xlYW4ob2JqKSB8fCBfaXNGdW5jdGlvbihvYmopKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHZhciBvdXRwdXQsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICBsID0gMDtcblxuICAgIGlmKF9pc0FycmF5KG9iaikpIHtcbiAgICAgIG91dHB1dCA9IFtdO1xuICAgICAgZm9yKGw9b2JqLmxlbmd0aDsgaTxsOyBpKyspIHtcbiAgICAgICAgb3V0cHV0LnB1c2goX3Byb2Nlc3NLZXlzKGNvbnZlcnQsIG9ialtpXSwgb3B0aW9ucykpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG91dHB1dCA9IHt9O1xuICAgICAgZm9yKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICBvdXRwdXRbY29udmVydChrZXksIG9wdGlvbnMpXSA9IF9wcm9jZXNzS2V5cyhjb252ZXJ0LCBvYmpba2V5XSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICAvLyBTdHJpbmcgY29udmVyc2lvbiBtZXRob2RzXG5cbiAgdmFyIHNlcGFyYXRlV29yZHMgPSBmdW5jdGlvbihzdHJpbmcsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgc2VwYXJhdG9yID0gb3B0aW9ucy5zZXBhcmF0b3IgfHwgJ18nO1xuICAgIHZhciBzcGxpdCA9IG9wdGlvbnMuc3BsaXQgfHwgLyg/PVtBLVpdKS87XG5cbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KHNwbGl0KS5qb2luKHNlcGFyYXRvcik7XG4gIH07XG5cbiAgdmFyIGNhbWVsaXplID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgaWYgKF9pc051bWVyaWNhbChzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cbiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvW1xcLV9cXHNdKyguKT8vZywgZnVuY3Rpb24obWF0Y2gsIGNocikge1xuICAgICAgcmV0dXJuIGNociA/IGNoci50b1VwcGVyQ2FzZSgpIDogJyc7XG4gICAgfSk7XG4gICAgLy8gRW5zdXJlIDFzdCBjaGFyIGlzIGFsd2F5cyBsb3dlcmNhc2VcbiAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCAxKS50b0xvd2VyQ2FzZSgpICsgc3RyaW5nLnN1YnN0cigxKTtcbiAgfTtcblxuICB2YXIgcGFzY2FsaXplID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGNhbWVsaXplZCA9IGNhbWVsaXplKHN0cmluZyk7XG4gICAgLy8gRW5zdXJlIDFzdCBjaGFyIGlzIGFsd2F5cyB1cHBlcmNhc2VcbiAgICByZXR1cm4gY2FtZWxpemVkLnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpICsgY2FtZWxpemVkLnN1YnN0cigxKTtcbiAgfTtcblxuICB2YXIgZGVjYW1lbGl6ZSA9IGZ1bmN0aW9uKHN0cmluZywgb3B0aW9ucykge1xuICAgIHJldHVybiBzZXBhcmF0ZVdvcmRzKHN0cmluZywgb3B0aW9ucykudG9Mb3dlckNhc2UoKTtcbiAgfTtcblxuICAvLyBVdGlsaXRpZXNcbiAgLy8gVGFrZW4gZnJvbSBVbmRlcnNjb3JlLmpzXG5cbiAgdmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuICB2YXIgX2lzRnVuY3Rpb24gPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdHlwZW9mKG9iaikgPT09ICdmdW5jdGlvbic7XG4gIH07XG4gIHZhciBfaXNPYmplY3QgPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSBPYmplY3Qob2JqKTtcbiAgfTtcbiAgdmFyIF9pc0FycmF5ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PSAnW29iamVjdCBBcnJheV0nO1xuICB9O1xuICB2YXIgX2lzRGF0ZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT0gJ1tvYmplY3QgRGF0ZV0nO1xuICB9O1xuICB2YXIgX2lzUmVnRXhwID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PSAnW29iamVjdCBSZWdFeHBdJztcbiAgfTtcbiAgdmFyIF9pc0Jvb2xlYW4gPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09ICdbb2JqZWN0IEJvb2xlYW5dJztcbiAgfTtcblxuICAvLyBQZXJmb3JtYW50IHdheSB0byBkZXRlcm1pbmUgaWYgb2JqIGNvZXJjZXMgdG8gYSBudW1iZXJcbiAgdmFyIF9pc051bWVyaWNhbCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIG9iaiA9IG9iaiAtIDA7XG4gICAgcmV0dXJuIG9iaiA9PT0gb2JqO1xuICB9O1xuXG4gIC8vIFNldHMgdXAgZnVuY3Rpb24gd2hpY2ggaGFuZGxlcyBwcm9jZXNzaW5nIGtleXNcbiAgLy8gYWxsb3dpbmcgdGhlIGNvbnZlcnQgZnVuY3Rpb24gdG8gYmUgbW9kaWZpZWQgYnkgYSBjYWxsYmFja1xuICB2YXIgX3Byb2Nlc3NvciA9IGZ1bmN0aW9uKGNvbnZlcnQsIG9wdGlvbnMpIHtcbiAgICB2YXIgY2FsbGJhY2sgPSBvcHRpb25zICYmICdwcm9jZXNzJyBpbiBvcHRpb25zID8gb3B0aW9ucy5wcm9jZXNzIDogb3B0aW9ucztcblxuICAgIGlmKHR5cGVvZihjYWxsYmFjaykgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBjb252ZXJ0O1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhzdHJpbmcsIGNvbnZlcnQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgaHVtcHMgPSB7XG4gICAgY2FtZWxpemU6IGNhbWVsaXplLFxuICAgIGRlY2FtZWxpemU6IGRlY2FtZWxpemUsXG4gICAgcGFzY2FsaXplOiBwYXNjYWxpemUsXG4gICAgZGVwYXNjYWxpemU6IGRlY2FtZWxpemUsXG4gICAgY2FtZWxpemVLZXlzOiBmdW5jdGlvbihvYmplY3QsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBfcHJvY2Vzc0tleXMoX3Byb2Nlc3NvcihjYW1lbGl6ZSwgb3B0aW9ucyksIG9iamVjdCk7XG4gICAgfSxcbiAgICBkZWNhbWVsaXplS2V5czogZnVuY3Rpb24ob2JqZWN0LCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gX3Byb2Nlc3NLZXlzKF9wcm9jZXNzb3IoZGVjYW1lbGl6ZSwgb3B0aW9ucyksIG9iamVjdCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBwYXNjYWxpemVLZXlzOiBmdW5jdGlvbihvYmplY3QsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBfcHJvY2Vzc0tleXMoX3Byb2Nlc3NvcihwYXNjYWxpemUsIG9wdGlvbnMpLCBvYmplY3QpO1xuICAgIH0sXG4gICAgZGVwYXNjYWxpemVLZXlzOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWNhbWVsaXplS2V5cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfTtcblxuICBpZiAodHlwZW9mIHVuZGVmaW5lZCA9PT0gJ2Z1bmN0aW9uJyAmJiB1bmRlZmluZWQuYW1kKSB7XG4gICAgdW5kZWZpbmVkKGh1bXBzKTtcbiAgfSBlbHNlIGlmICgnb2JqZWN0JyAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGh1bXBzO1xuICB9IGVsc2Uge1xuICAgIGdsb2JhbC5odW1wcyA9IGh1bXBzO1xuICB9XG5cbn0pKGNvbW1vbmpzR2xvYmFsKTtcbn0pO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iajtcbn0gOiBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xufTtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxudmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKG9iaiwga2V5cykge1xuICB2YXIgdGFyZ2V0ID0ge307XG5cbiAgZm9yICh2YXIgaSBpbiBvYmopIHtcbiAgICBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlO1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlO1xuICAgIHRhcmdldFtpXSA9IG9ialtpXTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG52YXIgdG9Db25zdW1hYmxlQXJyYXkgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYXJyKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIENTUyBzdHlsZSBpbnRvIGEgcGxhaW4gSmF2YXNjcmlwdCBvYmplY3QuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3R5bGUgVGhlIHN0eWxlIHRvIGNvbnZlcnRzIGludG8gYSBwbGFpbiBKYXZhc2NyaXB0IG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIHN0eWxlVG9PYmplY3Qoc3R5bGUpIHtcbiAgcmV0dXJuIHN0eWxlLnNwbGl0KCc7JykubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMudHJpbSgpO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcbiAgICByZXR1cm4gcztcbiAgfSkucmVkdWNlKGZ1bmN0aW9uIChvdXRwdXQsIHBhaXIpIHtcbiAgICB2YXIgaWR4ID0gcGFpci5pbmRleE9mKCc6Jyk7XG4gICAgdmFyIHByb3AgPSBodW1wcy5jYW1lbGl6ZShwYWlyLnNsaWNlKDAsIGlkeCkpO1xuICAgIHZhciB2YWx1ZSA9IHBhaXIuc2xpY2UoaWR4ICsgMSkudHJpbSgpO1xuXG4gICAgb3V0cHV0W3Byb3BdID0gdmFsdWU7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfSwge30pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgQ1NTIGNsYXNzIGxpc3QgaW50byBhIHBsYWluIEphdmFzY3JpcHQgb2JqZWN0LlxuICogQHBhcmFtIHtBcnJheTxTdHJpbmc+fSBjbGFzc2VzIFRoZSBjbGFzcyBsaXN0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBjbGFzc1RvT2JqZWN0KGNsYXNzZXMpIHtcbiAgcmV0dXJuIGNsYXNzZXMuc3BsaXQoL1xccysvKS5yZWR1Y2UoZnVuY3Rpb24gKG91dHB1dCwgY2xhc3NOYW1lKSB7XG4gICAgb3V0cHV0W2NsYXNzTmFtZV0gPSB0cnVlO1xuICAgIHJldHVybiBvdXRwdXQ7XG4gIH0sIHt9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIEZvbnRBd2Vzb21lIGFic3RyYWN0IGVsZW1lbnQgb2YgYW4gaWNvbiBpbnRvIGEgVnVlIFZOb2RlLlxuICogQHBhcmFtIHtBYnN0cmFjdEVsZW1lbnQgfCBTdHJpbmd9IGFic3RyYWN0RWxlbWVudCBUaGUgZWxlbWVudCB0byBjb252ZXJ0LlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFRoZSB1c2VyLWRlZmluZWQgcHJvcHMuXG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnMgVGhlIHVzZXItZGVmaW5lZCBuYXRpdmUgSFRNTCBhdHRyaWJ1dGVzLlxuICogQHJldHVybnMge1ZOb2RlfVxuICovXG5mdW5jdGlvbiBjb252ZXJ0KGFic3RyYWN0RWxlbWVudCkge1xuICB2YXIgcHJvcHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgYXR0cnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuXG4gIC8vIElmIHRoZSBhYnN0cmFjdCBlbGVtZW50IGlzIGEgc3RyaW5nLCB3ZSdsbCBqdXN0IHJldHVybiBhIHN0cmluZyByZW5kZXIgZnVuY3Rpb25cbiAgaWYgKHR5cGVvZiBhYnN0cmFjdEVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGFic3RyYWN0RWxlbWVudDtcbiAgfVxuXG4gIC8vIENvbnZlcnRpbmcgYWJzdHJhY3QgZWxlbWVudCBjaGlsZHJlbiBpbnRvIFZ1ZSBWTm9kZXNcbiAgdmFyIGNoaWxkcmVuID0gKGFic3RyYWN0RWxlbWVudC5jaGlsZHJlbiB8fCBbXSkubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjb252ZXJ0KGNoaWxkKTtcbiAgfSk7XG5cbiAgLy8gQ29udmVydGluZyBhYnN0cmFjdCBlbGVtZW50IGF0dHJpYnV0ZXMgaW50byB2YWxpZCBWdWUgZm9ybWF0XG4gIHZhciBtaXhpbnMgPSBPYmplY3Qua2V5cyhhYnN0cmFjdEVsZW1lbnQuYXR0cmlidXRlcyB8fCB7fSkucmVkdWNlKGZ1bmN0aW9uIChtaXhpbnMsIGtleSkge1xuICAgIHZhciB2YWx1ZSA9IGFic3RyYWN0RWxlbWVudC5hdHRyaWJ1dGVzW2tleV07XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnY2xhc3MnOlxuICAgICAgICBtaXhpbnMuY2xhc3MgPSBjbGFzc1RvT2JqZWN0KHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdHlsZSc6XG4gICAgICAgIG1peGlucy5zdHlsZSA9IHN0eWxlVG9PYmplY3QodmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG1peGlucy5hdHRyc1trZXldID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1peGlucztcbiAgfSwge1xuICAgIGF0dHJzOiB7fSxcbiAgICBjbGFzczoge30sXG4gICAgc3R5bGU6IHt9XG4gIH0pO1xuXG4gIC8vIE5vdywgd2UnbGwgcmV0dXJuIHRoZSBWTm9kZVxuXG4gIHZhciBfYXR0cnMkY2xhc3MgPSBhdHRycy5jbGFzcyxcbiAgICAgIF9hdHRycyRzdHlsZSA9IGF0dHJzLnN0eWxlLFxuICAgICAgYVN0eWxlID0gX2F0dHJzJHN0eWxlID09PSB1bmRlZmluZWQgPyB7fSA6IF9hdHRycyRzdHlsZSxcbiAgICAgIG90aGVyQXR0cnMgPSBvYmplY3RXaXRob3V0UHJvcGVydGllcyhhdHRycywgWydjbGFzcycsICdzdHlsZSddKTtcblxuICByZXR1cm4gaChhYnN0cmFjdEVsZW1lbnQudGFnLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjbGFzczogbWl4aW5zLmNsYXNzLFxuICAgIHN0eWxlOiBfZXh0ZW5kcyh7fSwgbWl4aW5zLnN0eWxlLCBhU3R5bGUpXG4gIH0sIG1peGlucy5hdHRycywgb3RoZXJBdHRycyksIGNoaWxkcmVuKTtcbn1cblxudmFyIFBST0RVQ1RJT04gPSBmYWxzZTtcblxudHJ5IHtcbiAgUFJPRFVDVElPTiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbic7XG59IGNhdGNoIChlKSB7fVxuXG5mdW5jdGlvbiBsb2cgKCkge1xuICBpZiAoIVBST0RVQ1RJT04gJiYgY29uc29sZSAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBfY29uc29sZTtcblxuICAgIChfY29uc29sZSA9IGNvbnNvbGUpLmVycm9yLmFwcGx5KF9jb25zb2xlLCBhcmd1bWVudHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9iamVjdFdpdGhLZXkoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCB8fCAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUgPyBkZWZpbmVQcm9wZXJ0eSh7fSwga2V5LCB2YWx1ZSkgOiB7fTtcbn1cblxuZnVuY3Rpb24gY2xhc3NMaXN0KHByb3BzKSB7XG4gIHZhciBfY2xhc3NlcztcblxuICB2YXIgY2xhc3NlcyA9IChfY2xhc3NlcyA9IHtcbiAgICAnZmEtc3Bpbic6IHByb3BzLnNwaW4sXG4gICAgJ2ZhLXB1bHNlJzogcHJvcHMucHVsc2UsXG4gICAgJ2ZhLWZ3JzogcHJvcHMuZml4ZWRXaWR0aCxcbiAgICAnZmEtYm9yZGVyJzogcHJvcHMuYm9yZGVyLFxuICAgICdmYS1saSc6IHByb3BzLmxpc3RJdGVtLFxuICAgICdmYS1pbnZlcnNlJzogcHJvcHMuaW52ZXJzZSxcbiAgICAnZmEtZmxpcC1ob3Jpem9udGFsJzogcHJvcHMuZmxpcCA9PT0gJ2hvcml6b250YWwnIHx8IHByb3BzLmZsaXAgPT09ICdib3RoJyxcbiAgICAnZmEtZmxpcC12ZXJ0aWNhbCc6IHByb3BzLmZsaXAgPT09ICd2ZXJ0aWNhbCcgfHwgcHJvcHMuZmxpcCA9PT0gJ2JvdGgnXG4gIH0sIGRlZmluZVByb3BlcnR5KF9jbGFzc2VzLCAnZmEtJyArIHByb3BzLnNpemUsIHByb3BzLnNpemUgIT09IG51bGwpLCBkZWZpbmVQcm9wZXJ0eShfY2xhc3NlcywgJ2ZhLXJvdGF0ZS0nICsgcHJvcHMucm90YXRpb24sIHByb3BzLnJvdGF0aW9uICE9PSBudWxsKSwgZGVmaW5lUHJvcGVydHkoX2NsYXNzZXMsICdmYS1wdWxsLScgKyBwcm9wcy5wdWxsLCBwcm9wcy5wdWxsICE9PSBudWxsKSwgZGVmaW5lUHJvcGVydHkoX2NsYXNzZXMsICdmYS1zd2FwLW9wYWNpdHknLCBwcm9wcy5zd2FwT3BhY2l0eSksIF9jbGFzc2VzKTtcblxuICByZXR1cm4gT2JqZWN0LmtleXMoY2xhc3NlcykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gY2xhc3Nlc1trZXldID8ga2V5IDogbnVsbDtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4ga2V5O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSWNvbkFyZ3MoaWNvbiQkMSkge1xuICBpZiAoaWNvbiQkMSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKCh0eXBlb2YgaWNvbiQkMSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoaWNvbiQkMSkpID09PSAnb2JqZWN0JyAmJiBpY29uJCQxLnByZWZpeCAmJiBpY29uJCQxLmljb25OYW1lKSB7XG4gICAgcmV0dXJuIGljb24kJDE7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShpY29uJCQxKSAmJiBpY29uJCQxLmxlbmd0aCA9PT0gMikge1xuICAgIHJldHVybiB7IHByZWZpeDogaWNvbiQkMVswXSwgaWNvbk5hbWU6IGljb24kJDFbMV0gfTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaWNvbiQkMSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4geyBwcmVmaXg6ICdmYXMnLCBpY29uTmFtZTogaWNvbiQkMSB9O1xuICB9XG59XG5cbnZhciBGb250QXdlc29tZUljb24gPSBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiAnRm9udEF3ZXNvbWVJY29uJyxcblxuICBwcm9wczoge1xuICAgIGJvcmRlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBmaXhlZFdpZHRoOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGZsaXA6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJywgJ2JvdGgnXS5pbmRleE9mKHZhbHVlKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogW09iamVjdCwgQXJyYXksIFN0cmluZ10sXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgbWFzazoge1xuICAgICAgdHlwZTogW09iamVjdCwgQXJyYXksIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBsaXN0SXRlbToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwdWxsOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFsncmlnaHQnLCAnbGVmdCddLmluZGV4T2YodmFsdWUpID4gLTE7XG4gICAgICB9XG4gICAgfSxcbiAgICBwdWxzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICByb3RhdGlvbjoge1xuICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gWzkwLCAxODAsIDI3MF0uaW5kZXhPZihOdW1iZXIucGFyc2VJbnQodmFsdWUsIDEwKSkgPiAtMTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN3YXBPcGFjaXR5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gWydsZycsICd4cycsICdzbScsICcxeCcsICcyeCcsICczeCcsICc0eCcsICc1eCcsICc2eCcsICc3eCcsICc4eCcsICc5eCcsICcxMHgnXS5pbmRleE9mKHZhbHVlKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3Bpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB0cmFuc2Zvcm06IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBzeW1ib2w6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBpbnZlcnNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG5cbiAgc2V0dXA6IGZ1bmN0aW9uIHNldHVwKHByb3BzLCBfcmVmKSB7XG4gICAgdmFyIGF0dHJzID0gX3JlZi5hdHRycztcblxuICAgIHZhciBpY29uJCQxID0gY29tcHV0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZUljb25BcmdzKHByb3BzLmljb24pO1xuICAgIH0pO1xuICAgIHZhciBjbGFzc2VzID0gY29tcHV0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG9iamVjdFdpdGhLZXkoJ2NsYXNzZXMnLCBjbGFzc0xpc3QocHJvcHMpKTtcbiAgICB9KTtcbiAgICB2YXIgdHJhbnNmb3JtID0gY29tcHV0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG9iamVjdFdpdGhLZXkoJ3RyYW5zZm9ybScsIHR5cGVvZiBwcm9wcy50cmFuc2Zvcm0gPT09ICdzdHJpbmcnID8gcGFyc2UudHJhbnNmb3JtKHByb3BzLnRyYW5zZm9ybSkgOiBwcm9wcy50cmFuc2Zvcm0pO1xuICAgIH0pO1xuICAgIHZhciBtYXNrID0gY29tcHV0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG9iamVjdFdpdGhLZXkoJ21hc2snLCBub3JtYWxpemVJY29uQXJncyhwcm9wcy5tYXNrKSk7XG4gICAgfSk7XG5cbiAgICB2YXIgcmVuZGVyZWRJY29uID0gY29tcHV0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGljb24oaWNvbiQkMS52YWx1ZSwgX2V4dGVuZHMoe30sIGNsYXNzZXMudmFsdWUsIHRyYW5zZm9ybS52YWx1ZSwgbWFzay52YWx1ZSwge1xuICAgICAgICBzeW1ib2w6IHByb3BzLnN5bWJvbCxcbiAgICAgICAgdGl0bGU6IHByb3BzLnRpdGxlXG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICB3YXRjaChyZW5kZXJlZEljb24sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gbG9nKCdDb3VsZCBub3QgZmluZCBvbmUgb3IgbW9yZSBpY29uKHMpJywgaWNvbiQkMS52YWx1ZSwgbWFzay52YWx1ZSk7XG4gICAgICB9XG4gICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG5cbiAgICB2YXIgdm5vZGUgPSBjb21wdXRlZChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVuZGVyZWRJY29uLnZhbHVlID8gY29udmVydChyZW5kZXJlZEljb24udmFsdWUuYWJzdHJhY3RbMF0sIHt9LCBhdHRycykgOiBudWxsO1xuICAgIH0pO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdm5vZGUudmFsdWU7XG4gICAgfTtcbiAgfVxufSk7XG5cbnZhciBGb250QXdlc29tZUxheWVycyA9IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6ICdGb250QXdlc29tZUxheWVycycsXG5cbiAgcHJvcHM6IHtcbiAgICBmaXhlZFdpZHRoOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG5cbiAgc2V0dXA6IGZ1bmN0aW9uIHNldHVwKHByb3BzLCBfcmVmKSB7XG4gICAgdmFyIHNsb3RzID0gX3JlZi5zbG90cztcbiAgICB2YXIgZmFtaWx5UHJlZml4ID0gY29uZmlnLmZhbWlseVByZWZpeDtcblxuXG4gICAgdmFyIGNsYXNzTmFtZSA9IGNvbXB1dGVkKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBbZmFtaWx5UHJlZml4ICsgJy1sYXllcnMnXS5jb25jYXQodG9Db25zdW1hYmxlQXJyYXkocHJvcHMuZml4ZWRXaWR0aCA/IFtmYW1pbHlQcmVmaXggKyAnLWZ3J10gOiBbXSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoKCdkaXYnLCB7IGNsYXNzOiBjbGFzc05hbWUudmFsdWUgfSwgc2xvdHMuZGVmYXVsdCA/IHNsb3RzLmRlZmF1bHQoKSA6IFtdKTtcbiAgICB9O1xuICB9XG59KTtcblxudmFyIEZvbnRBd2Vzb21lTGF5ZXJzVGV4dCA9IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6ICdGb250QXdlc29tZUxheWVyc1RleHQnLFxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdHJhbnNmb3JtOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgY291bnRlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwb3NpdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCcsICd0b3AtbGVmdCcsICd0b3AtcmlnaHQnXS5pbmRleE9mKHZhbHVlKSA+IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBzZXR1cDogZnVuY3Rpb24gc2V0dXAocHJvcHMsIF9yZWYpIHtcbiAgICB2YXIgYXR0cnMgPSBfcmVmLmF0dHJzO1xuICAgIHZhciBmYW1pbHlQcmVmaXggPSBjb25maWcuZmFtaWx5UHJlZml4O1xuXG5cbiAgICB2YXIgY2xhc3NlcyA9IGNvbXB1dGVkKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBvYmplY3RXaXRoS2V5KCdjbGFzc2VzJywgW10uY29uY2F0KHRvQ29uc3VtYWJsZUFycmF5KHByb3BzLmNvdW50ZXIgPyBbZmFtaWx5UHJlZml4ICsgJy1sYXllcnMtY291bnRlciddIDogW10pLCB0b0NvbnN1bWFibGVBcnJheShwcm9wcy5wb3NpdGlvbiA/IFtmYW1pbHlQcmVmaXggKyAnLWxheWVycy0nICsgcHJvcHMucG9zaXRpb25dIDogW10pKSk7XG4gICAgfSk7XG4gICAgdmFyIHRyYW5zZm9ybSA9IGNvbXB1dGVkKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBvYmplY3RXaXRoS2V5KCd0cmFuc2Zvcm0nLCB0eXBlb2YgcHJvcHMudHJhbnNmb3JtID09PSAnc3RyaW5nJyA/IHBhcnNlLnRyYW5zZm9ybShwcm9wcy50cmFuc2Zvcm0pIDogcHJvcHMudHJhbnNmb3JtKTtcbiAgICB9KTtcbiAgICB2YXIgYWJzdHJhY3RFbGVtZW50ID0gY29tcHV0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90ZXh0ID0gdGV4dChwcm9wcy52YWx1ZS50b1N0cmluZygpLCBfZXh0ZW5kcyh7fSwgdHJhbnNmb3JtLnZhbHVlLCBjbGFzc2VzLnZhbHVlKSksXG4gICAgICAgICAgYWJzdHJhY3QgPSBfdGV4dC5hYnN0cmFjdDtcblxuICAgICAgaWYgKHByb3BzLmNvdW50ZXIpIHtcbiAgICAgICAgYWJzdHJhY3RbMF0uYXR0cmlidXRlcy5jbGFzcyA9IGFic3RyYWN0WzBdLmF0dHJpYnV0ZXMuY2xhc3MucmVwbGFjZSgnZmEtbGF5ZXJzLXRleHQnLCAnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWJzdHJhY3RbMF07XG4gICAgfSk7XG5cbiAgICB2YXIgdm5vZGUgPSBjb21wdXRlZChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gY29udmVydChhYnN0cmFjdEVsZW1lbnQudmFsdWUsIHt9LCBhdHRycyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB2bm9kZS52YWx1ZTtcbiAgICB9O1xuICB9XG59KTtcblxuZXhwb3J0IHsgRm9udEF3ZXNvbWVJY29uLCBGb250QXdlc29tZUxheWVycywgRm9udEF3ZXNvbWVMYXllcnNUZXh0IH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@fortawesome/vue-fontawesome/index.es.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js ***!
|
||
\***********************************************************************/
|
||
/*! exports provided: CompileErrorCodes, createCompileError, CoreErrorCodes, CoreWarnCodes, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getWarnMessage, handleMissing, initI18nDevTools, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CoreErrorCodes\", function() { return CoreErrorCodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CoreWarnCodes\", function() { return CoreWarnCodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_LOCALE\", function() { return DEFAULT_LOCALE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_MESSAGE_DATA_TYPE\", function() { return DEFAULT_MESSAGE_DATA_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MISSING_RESOLVE_VALUE\", function() { return MISSING_RESOLVE_VALUE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NOT_REOSLVED\", function() { return NOT_REOSLVED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearCompileCache\", function() { return clearCompileCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearDateTimeFormat\", function() { return clearDateTimeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearNumberFormat\", function() { return clearNumberFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compileToFunction\", function() { return compileToFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCoreContext\", function() { return createCoreContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCoreError\", function() { return createCoreError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createMessageContext\", function() { return createMessageContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"datetime\", function() { return datetime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fallbackWithLocaleChain\", function() { return fallbackWithLocaleChain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fallbackWithSimple\", function() { return fallbackWithSimple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAdditionalMeta\", function() { return getAdditionalMeta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDevToolsHook\", function() { return getDevToolsHook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFallbackContext\", function() { return getFallbackContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getWarnMessage\", function() { return getWarnMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"handleMissing\", function() { return handleMissing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initI18nDevTools\", function() { return initI18nDevTools; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMessageFunction\", function() { return isMessageFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTranslateFallbackWarn\", function() { return isTranslateFallbackWarn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTranslateMissingWarn\", function() { return isTranslateMissingWarn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"number\", function() { return number; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDateTimeArgs\", function() { return parseDateTimeArgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseNumberArgs\", function() { return parseNumberArgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTranslateArgs\", function() { return parseTranslateArgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerLocaleFallbacker\", function() { return registerLocaleFallbacker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerMessageCompiler\", function() { return registerMessageCompiler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerMessageResolver\", function() { return registerMessageResolver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveValue\", function() { return resolveValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveWithKeyValue\", function() { return resolveWithKeyValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setAdditionalMeta\", function() { return setAdditionalMeta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDevToolsHook\", function() { return setDevToolsHook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setFallbackContext\", function() { return setFallbackContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translateDevTools\", function() { return translateDevTools; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateFallbackLocale\", function() { return updateFallbackLocale; });\n/* harmony import */ var _intlify_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @intlify/shared */ \"./node_modules/@intlify/shared/dist/shared.esm-bundler.js\");\n/* harmony import */ var _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @intlify/message-compiler */ \"./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CompileErrorCodes\", function() { return _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__[\"CompileErrorCodes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createCompileError\", function() { return _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__[\"createCompileError\"]; });\n\n/* harmony import */ var _intlify_devtools_if__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @intlify/devtools-if */ \"./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js\");\n/*!\n * core-base v9.2.0-beta.34\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n\n\n\n\n\nconst pathStateMachine = [];\r\npathStateMachine[0 /* BEFORE_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[1 /* IN_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[2 /* BEFORE_IDENT */] = {\r\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\r\n};\r\npathStateMachine[3 /* IN_IDENT */] = {\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\r\n};\r\npathStateMachine[4 /* IN_SUB_PATH */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [\r\n 4 /* IN_SUB_PATH */,\r\n 2 /* INC_SUB_PATH_DEPTH */\r\n ],\r\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\r\n};\r\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\r\n};\r\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\r\n};\r\n/**\r\n * Check if an expression is a literal value.\r\n */\r\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\r\nfunction isLiteral(exp) {\r\n return literalValueRE.test(exp);\r\n}\r\n/**\r\n * Strip quotes from a string\r\n */\r\nfunction stripQuotes(str) {\r\n const a = str.charCodeAt(0);\r\n const b = str.charCodeAt(str.length - 1);\r\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\r\n}\r\n/**\r\n * Determine the type of a character in a keypath.\r\n */\r\nfunction getPathCharType(ch) {\r\n if (ch === undefined || ch === null) {\r\n return \"o\" /* END_OF_FAIL */;\r\n }\r\n const code = ch.charCodeAt(0);\r\n switch (code) {\r\n case 0x5b: // [\r\n case 0x5d: // ]\r\n case 0x2e: // .\r\n case 0x22: // \"\r\n case 0x27: // '\r\n return ch;\r\n case 0x5f: // _\r\n case 0x24: // $\r\n case 0x2d: // -\r\n return \"i\" /* IDENT */;\r\n case 0x09: // Tab (HT)\r\n case 0x0a: // Newline (LF)\r\n case 0x0d: // Return (CR)\r\n case 0xa0: // No-break space (NBSP)\r\n case 0xfeff: // Byte Order Mark (BOM)\r\n case 0x2028: // Line Separator (LS)\r\n case 0x2029: // Paragraph Separator (PS)\r\n return \"w\" /* WORKSPACE */;\r\n }\r\n return \"i\" /* IDENT */;\r\n}\r\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\r\nfunction formatSubPath(path) {\r\n const trimmed = path.trim();\r\n // invalid leading 0\r\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\r\n return false;\r\n }\r\n return isLiteral(trimmed)\r\n ? stripQuotes(trimmed)\r\n : \"*\" /* ASTARISK */ + trimmed;\r\n}\r\n/**\r\n * Parse a string path into an array of segments\r\n */\r\nfunction parse(path) {\r\n const keys = [];\r\n let index = -1;\r\n let mode = 0 /* BEFORE_PATH */;\r\n let subPathDepth = 0;\r\n let c;\r\n let key; // eslint-disable-line\r\n let newChar;\r\n let type;\r\n let transition;\r\n let action;\r\n let typeMap;\r\n const actions = [];\r\n actions[0 /* APPEND */] = () => {\r\n if (key === undefined) {\r\n key = newChar;\r\n }\r\n else {\r\n key += newChar;\r\n }\r\n };\r\n actions[1 /* PUSH */] = () => {\r\n if (key !== undefined) {\r\n keys.push(key);\r\n key = undefined;\r\n }\r\n };\r\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\r\n actions[0 /* APPEND */]();\r\n subPathDepth++;\r\n };\r\n actions[3 /* PUSH_SUB_PATH */] = () => {\r\n if (subPathDepth > 0) {\r\n subPathDepth--;\r\n mode = 4 /* IN_SUB_PATH */;\r\n actions[0 /* APPEND */]();\r\n }\r\n else {\r\n subPathDepth = 0;\r\n if (key === undefined) {\r\n return false;\r\n }\r\n key = formatSubPath(key);\r\n if (key === false) {\r\n return false;\r\n }\r\n else {\r\n actions[1 /* PUSH */]();\r\n }\r\n }\r\n };\r\n function maybeUnescapeQuote() {\r\n const nextChar = path[index + 1];\r\n if ((mode === 5 /* IN_SINGLE_QUOTE */ &&\r\n nextChar === \"'\" /* SINGLE_QUOTE */) ||\r\n (mode === 6 /* IN_DOUBLE_QUOTE */ &&\r\n nextChar === \"\\\"\" /* DOUBLE_QUOTE */)) {\r\n index++;\r\n newChar = '\\\\' + nextChar;\r\n actions[0 /* APPEND */]();\r\n return true;\r\n }\r\n }\r\n while (mode !== null) {\r\n index++;\r\n c = path[index];\r\n if (c === '\\\\' && maybeUnescapeQuote()) {\r\n continue;\r\n }\r\n type = getPathCharType(c);\r\n typeMap = pathStateMachine[mode];\r\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\r\n // check parse error\r\n if (transition === 8 /* ERROR */) {\r\n return;\r\n }\r\n mode = transition[0];\r\n if (transition[1] !== undefined) {\r\n action = actions[transition[1]];\r\n if (action) {\r\n newChar = c;\r\n if (action() === false) {\r\n return;\r\n }\r\n }\r\n }\r\n // check parse finish\r\n if (mode === 7 /* AFTER_PATH */) {\r\n return keys;\r\n }\r\n }\r\n}\r\n// path token cache\r\nconst cache = new Map();\r\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveWithKeyValue(obj, path) {\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(obj) ? obj[path] : null;\r\n}\r\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveValue(obj, path) {\r\n // check object\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(obj)) {\r\n return null;\r\n }\r\n // parse path\r\n let hit = cache.get(path);\r\n if (!hit) {\r\n hit = parse(path);\r\n if (hit) {\r\n cache.set(path, hit);\r\n }\r\n }\r\n // check hit\r\n if (!hit) {\r\n return null;\r\n }\r\n // resolve path value\r\n const len = hit.length;\r\n let last = obj;\r\n let i = 0;\r\n while (i < len) {\r\n const val = last[hit[i]];\r\n if (val === undefined) {\r\n return null;\r\n }\r\n last = val;\r\n i++;\r\n }\r\n return last;\r\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\r\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\r\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\r\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');\r\nconst DEFAULT_INTERPOLATE = _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"toDisplayString\"];\r\nfunction pluralDefault(choice, choicesLength) {\r\n choice = Math.abs(choice);\r\n if (choicesLength === 2) {\r\n // prettier-ignore\r\n return choice\r\n ? choice > 1\r\n ? 1\r\n : 0\r\n : 1;\r\n }\r\n return choice ? Math.min(choice, 2) : 0;\r\n}\r\nfunction getPluralIndex(options) {\r\n // prettier-ignore\r\n const index = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(options.pluralIndex)\r\n ? options.pluralIndex\r\n : -1;\r\n // prettier-ignore\r\n return options.named && (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(options.named.count) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(options.named.n))\r\n ? Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(options.named.count)\r\n ? options.named.count\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(options.named.n)\r\n ? options.named.n\r\n : index\r\n : index;\r\n}\r\nfunction normalizeNamed(pluralIndex, props) {\r\n if (!props.count) {\r\n props.count = pluralIndex;\r\n }\r\n if (!props.n) {\r\n props.n = pluralIndex;\r\n }\r\n}\r\nfunction createMessageContext(options = {}) {\r\n const locale = options.locale;\r\n const pluralIndex = getPluralIndex(options);\r\n const pluralRule = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(options.pluralRules) &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(locale) &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.pluralRules[locale])\r\n ? options.pluralRules[locale]\r\n : pluralDefault;\r\n const orgPluralRule = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(options.pluralRules) &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(locale) &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.pluralRules[locale])\r\n ? pluralDefault\r\n : undefined;\r\n const plural = (messages) => messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\r\n const _list = options.list || [];\r\n const list = (index) => _list[index];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _named = options.named || {};\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\r\n const named = (key) => _named[key];\r\n function message(key) {\r\n // prettier-ignore\r\n const msg = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.messages)\r\n ? options.messages(key)\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(options.messages)\r\n ? options.messages[key]\r\n : false;\r\n return !msg\r\n ? options.parent\r\n ? options.parent.message(key) // resolve from parent messages\r\n : DEFAULT_MESSAGE\r\n : msg;\r\n }\r\n const _modifier = (name) => options.modifiers\r\n ? options.modifiers[name]\r\n : DEFAULT_MODIFIER;\r\n const normalize = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.processor) && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.processor.normalize)\r\n ? options.processor.normalize\r\n : DEFAULT_NORMALIZE;\r\n const interpolate = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.processor) &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.processor.interpolate)\r\n ? options.processor.interpolate\r\n : DEFAULT_INTERPOLATE;\r\n const linked = (key, modifier) => {\r\n const msg = message(key)(ctx);\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(modifier) ? _modifier(modifier)(msg) : msg;\r\n };\r\n const type = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.processor) && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.processor.type)\r\n ? options.processor.type\r\n : DEFAULT_MESSAGE_DATA_TYPE;\r\n const ctx = {\r\n [\"list\" /* LIST */]: list,\r\n [\"named\" /* NAMED */]: named,\r\n [\"plural\" /* PLURAL */]: plural,\r\n [\"linked\" /* LINKED */]: linked,\r\n [\"message\" /* MESSAGE */]: message,\r\n [\"type\" /* TYPE */]: type,\r\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\r\n [\"normalize\" /* NORMALIZE */]: normalize\r\n };\r\n return ctx;\r\n}\n\nlet devtools = null;\r\nfunction setDevToolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction getDevToolsHook() {\r\n return devtools;\r\n}\r\nfunction initI18nDevTools(i18n, version, meta) {\r\n // TODO: queue if devtools is undefined\r\n devtools &&\r\n devtools.emit(_intlify_devtools_if__WEBPACK_IMPORTED_MODULE_2__[\"IntlifyDevToolsHooks\"].I18nInit, {\r\n timestamp: Date.now(),\r\n i18n,\r\n version,\r\n meta\r\n });\r\n}\r\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(_intlify_devtools_if__WEBPACK_IMPORTED_MODULE_2__[\"IntlifyDevToolsHooks\"].FunctionTranslate);\r\nfunction createDevToolsHook(hook) {\r\n return (payloads) => devtools && devtools.emit(hook, payloads);\r\n}\n\nconst CoreWarnCodes = {\r\n NOT_FOUND_KEY: 1,\r\n FALLBACK_TO_TRANSLATE: 2,\r\n CANNOT_FORMAT_NUMBER: 3,\r\n FALLBACK_TO_NUMBER_FORMAT: 4,\r\n CANNOT_FORMAT_DATE: 5,\r\n FALLBACK_TO_DATE_FORMAT: 6,\r\n __EXTEND_POINT__: 7\r\n};\r\n/** @internal */\r\nconst warnMessages = {\r\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\r\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"format\"])(warnMessages[code], ...args);\r\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\r\n) {\r\n // prettier-ignore\r\n return [...new Set([\r\n start,\r\n ...(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(fallback)\r\n ? fallback\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(fallback)\r\n ? Object.keys(fallback)\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(fallback)\r\n ? [fallback]\r\n : [start])\r\n ])];\r\n}\r\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\r\n const startLocale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(start) ? start : DEFAULT_LOCALE;\r\n const context = ctx;\r\n if (!context.__localeChainCache) {\r\n context.__localeChainCache = new Map();\r\n }\r\n let chain = context.__localeChainCache.get(startLocale);\r\n if (!chain) {\r\n chain = [];\r\n // first block defined by start\r\n let block = [start];\r\n // while any intervening block found\r\n while (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(block)) {\r\n block = appendBlockToChain(chain, block, fallback);\r\n }\r\n // prettier-ignore\r\n // last block defined by default\r\n const defaults = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(fallback) || !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(fallback)\r\n ? fallback\r\n : fallback['default']\r\n ? fallback['default']\r\n : null;\r\n // convert defaults to array\r\n block = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(defaults) ? [defaults] : defaults;\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(block)) {\r\n appendBlockToChain(chain, block, false);\r\n }\r\n context.__localeChainCache.set(startLocale, chain);\r\n }\r\n return chain;\r\n}\r\nfunction appendBlockToChain(chain, block, blocks) {\r\n let follow = true;\r\n for (let i = 0; i < block.length && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(follow); i++) {\r\n const locale = block[i];\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(locale)) {\r\n follow = appendLocaleToChain(chain, block[i], blocks);\r\n }\r\n }\r\n return follow;\r\n}\r\nfunction appendLocaleToChain(chain, locale, blocks) {\r\n let follow;\r\n const tokens = locale.split('-');\r\n do {\r\n const target = tokens.join('-');\r\n follow = appendItemToChain(chain, target, blocks);\r\n tokens.splice(-1, 1);\r\n } while (tokens.length && follow === true);\r\n return follow;\r\n}\r\nfunction appendItemToChain(chain, target, blocks) {\r\n let follow = false;\r\n if (!chain.includes(target)) {\r\n follow = true;\r\n if (target) {\r\n follow = target[target.length - 1] !== '!';\r\n const locale = target.replace(/!/g, '');\r\n chain.push(locale);\r\n if ((Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(blocks) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(blocks)) &&\r\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n follow = blocks[locale];\r\n }\r\n }\r\n }\r\n return follow;\r\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\r\nconst VERSION = '9.2.0-beta.34';\r\nconst NOT_REOSLVED = -1;\r\nconst DEFAULT_LOCALE = 'en-US';\r\nconst MISSING_RESOLVE_VALUE = '';\r\nfunction getDefaultLinkedModifiers() {\r\n return {\r\n upper: (val) => (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val) ? val.toUpperCase() : val),\r\n lower: (val) => (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val) ? val.toLowerCase() : val),\r\n // prettier-ignore\r\n capitalize: (val) => (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val)\r\n ? `${val.charAt(0).toLocaleUpperCase()}${val.substr(1)}`\r\n : val)\r\n };\r\n}\r\nlet _compiler;\r\nfunction registerMessageCompiler(compiler) {\r\n _compiler = compiler;\r\n}\r\nlet _resolver;\r\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerMessageResolver(resolver) {\r\n _resolver = resolver;\r\n}\r\nlet _fallbacker;\r\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerLocaleFallbacker(fallbacker) {\r\n _fallbacker = fallbacker;\r\n}\r\n// Additional Meta for Intlify DevTools\r\nlet _additionalMeta = null;\r\nconst setAdditionalMeta = (meta) => {\r\n _additionalMeta = meta;\r\n};\r\nconst getAdditionalMeta = () => _additionalMeta;\r\nlet _fallbackContext = null;\r\nconst setFallbackContext = (context) => {\r\n _fallbackContext = context;\r\n};\r\nconst getFallbackContext = () => _fallbackContext;\r\n// ID for CoreContext\r\nlet _cid = 0;\r\nfunction createCoreContext(options = {}) {\r\n // setup options\r\n const version = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.version) ? options.version : VERSION;\r\n const locale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(options.fallbackLocale) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.fallbackLocale) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const messages = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.messages)\r\n ? options.messages\r\n : { [locale]: {} };\r\n const datetimeFormats = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [locale]: {} }\r\n ;\r\n const numberFormats = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.numberFormats)\r\n ? options.numberFormats\r\n : { [locale]: {} }\r\n ;\r\n const modifiers = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, options.modifiers || {}, getDefaultLinkedModifiers());\r\n const pluralRules = options.pluralRules || {};\r\n const missing = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.missing) ? options.missing : null;\r\n const missingWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.missingWarn) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"])(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n const fallbackWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackWarn) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"])(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n const fallbackFormat = !!options.fallbackFormat;\r\n const unresolving = !!options.unresolving;\r\n const postTranslation = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n const processor = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.processor) ? options.processor : null;\r\n const warnHtmlMessage = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const escapeParameter = !!options.escapeParameter;\r\n const messageCompiler = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.messageCompiler)\r\n ? options.messageCompiler\r\n : _compiler;\r\n const messageResolver = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.messageResolver)\r\n ? options.messageResolver\r\n : _resolver || resolveWithKeyValue;\r\n const localeFallbacker = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.localeFallbacker)\r\n ? options.localeFallbacker\r\n : _fallbacker || fallbackWithSimple;\r\n const fallbackContext = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(options.fallbackContext)\r\n ? options.fallbackContext\r\n : undefined;\r\n const onWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.onWarn) ? options.onWarn : _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"];\r\n // setup internal options\r\n const internalOptions = options;\r\n const __datetimeFormatters = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(internalOptions.__datetimeFormatters)\r\n ? internalOptions.__datetimeFormatters\r\n : new Map()\r\n ;\r\n const __numberFormatters = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(internalOptions.__numberFormatters)\r\n ? internalOptions.__numberFormatters\r\n : new Map()\r\n ;\r\n const __meta = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(internalOptions.__meta) ? internalOptions.__meta : {};\r\n _cid++;\r\n const context = {\r\n version,\r\n cid: _cid,\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n modifiers,\r\n pluralRules,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackFormat,\r\n unresolving,\r\n postTranslation,\r\n processor,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageCompiler,\r\n messageResolver,\r\n localeFallbacker,\r\n fallbackContext,\r\n onWarn,\r\n __meta\r\n };\r\n {\r\n context.datetimeFormats = datetimeFormats;\r\n context.numberFormats = numberFormats;\r\n context.__datetimeFormatters = __datetimeFormatters;\r\n context.__numberFormatters = __numberFormatters;\r\n }\r\n // for vue-devtools timeline event\r\n if ((true)) {\r\n context.__v_emitter =\r\n internalOptions.__v_emitter != null\r\n ? internalOptions.__v_emitter\r\n : undefined;\r\n }\r\n // NOTE: experimental !!\r\n if (true) {\r\n initI18nDevTools(context, version, __meta);\r\n }\r\n return context;\r\n}\r\n/** @internal */\r\nfunction isTranslateFallbackWarn(fallback, key) {\r\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\r\n}\r\n/** @internal */\r\nfunction isTranslateMissingWarn(missing, key) {\r\n return missing instanceof RegExp ? missing.test(key) : missing;\r\n}\r\n/** @internal */\r\nfunction handleMissing(context, key, locale, missingWarn, type) {\r\n const { missing, onWarn } = context;\r\n // for vue-devtools timeline event\r\n if ((true)) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"missing\" /* MISSING */, {\r\n locale,\r\n key,\r\n type,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n if (missing !== null) {\r\n const ret = missing(context, locale, key, type);\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(ret) ? ret : key;\r\n }\r\n else {\r\n if (( true) && isTranslateMissingWarn(missingWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\r\n }\r\n return key;\r\n }\r\n}\r\n/** @internal */\r\nfunction updateFallbackLocale(ctx, locale, fallback) {\r\n const context = ctx;\r\n context.__localeChainCache = new Map();\r\n ctx.localeFallbacker(ctx, fallback, locale);\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\r\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\r\nfunction checkHtmlMessage(source, options) {\r\n const warnHtmlMessage = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"format\"])(WARN_MESSAGE, { source }));\r\n }\r\n}\r\nconst defaultOnCacheKey = (source) => source;\r\nlet compileCache = Object.create(null);\r\nfunction clearCompileCache() {\r\n compileCache = Object.create(null);\r\n}\r\nfunction compileToFunction(source, options = {}) {\r\n {\r\n // check HTML message\r\n ( true) && checkHtmlMessage(source, options);\r\n // check caches\r\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\r\n const key = onCacheKey(source);\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n // compile error detecting\r\n let occurred = false;\r\n const onError = options.onError || _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__[\"defaultOnError\"];\r\n options.onError = (err) => {\r\n occurred = true;\r\n onError(err);\r\n };\r\n // compile\r\n const { code } = Object(_intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__[\"baseCompile\"])(source, options);\r\n // evaluate function\r\n const msg = new Function(`return ${code}`)();\r\n // if occurred compile error, don't cache\r\n return !occurred ? (compileCache[key] = msg) : msg;\r\n }\r\n}\n\nlet code = _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__[\"CompileErrorCodes\"].__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst CoreErrorCodes = {\r\n INVALID_ARGUMENT: code,\r\n INVALID_DATE_ARGUMENT: inc(),\r\n INVALID_ISO_DATE_ARGUMENT: inc(),\r\n __EXTEND_POINT__: inc() // 18\r\n};\r\nfunction createCoreError(code) {\r\n return Object(_intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__[\"createCompileError\"])(code, null, ( true) ? { messages: errorMessages } : undefined);\r\n}\r\n/** @internal */\r\nconst errorMessages = {\r\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\r\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\r\n 'Make sure your Date represents a valid date.',\r\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\r\n};\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\r\nconst isMessageFunction = (val) => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(val);\r\n// implementation of `translate` function\r\nfunction translate(context, ...args) {\r\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\r\n const [key, options] = parseTranslateArgs(...args);\r\n const missingWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const escapeParameter = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.escapeParameter)\r\n ? options.escapeParameter\r\n : context.escapeParameter;\r\n const resolvedMessage = !!options.resolvedMessage;\r\n // prettier-ignore\r\n const defaultMsgOrKey = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.default) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.default) // default by function option\r\n ? !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.default)\r\n ? options.default\r\n : (!messageCompiler ? () => key : key)\r\n : fallbackFormat // default by `fallbackFormat` option\r\n ? (!messageCompiler ? () => key : key)\r\n : '';\r\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\r\n const locale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.locale) ? options.locale : context.locale;\r\n // escape params\r\n escapeParameter && escapeParams(options);\r\n // resolve message format\r\n // eslint-disable-next-line prefer-const\r\n let [formatScope, targetLocale, message] = !resolvedMessage\r\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\r\n : [\r\n key,\r\n locale,\r\n messages[locale] || {}\r\n ];\r\n // NOTE:\r\n // Fix to work around `ssrTransfrom` bug in Vite.\r\n // https://github.com/vitejs/vite/issues/4306\r\n // To get around this, use temporary variables.\r\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\r\n let format = formatScope;\r\n // if you use default message, set it as message format!\r\n let cacheBaseKey = key;\r\n if (!resolvedMessage &&\r\n !(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(format) || isMessageFunction(format))) {\r\n if (enableDefaultMsg) {\r\n format = defaultMsgOrKey;\r\n cacheBaseKey = format;\r\n }\r\n }\r\n // checking message format and target locale\r\n if (!resolvedMessage &&\r\n (!(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(format) || isMessageFunction(format)) ||\r\n !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(targetLocale))) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n if (( true) && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(format) && context.messageCompiler == null) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`The message format compilation is not supported in this build. ` +\r\n `Because message compiler isn't included. ` +\r\n `You need to pre-compilation all message format. ` +\r\n `So translate function return '${key}'.`);\r\n return key;\r\n }\r\n // setup compile error detecting\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n // compile message format\r\n const msg = !isMessageFunction(format)\r\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector)\r\n : format;\r\n // if occurred compile error, return the message format\r\n if (occurred) {\r\n return format;\r\n }\r\n // evaluate message with context\r\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\r\n const msgContext = createMessageContext(ctxOptions);\r\n const messaged = evaluateMessage(context, msg, msgContext);\r\n // if use post translation option, proceed it with handler\r\n const ret = postTranslation ? postTranslation(messaged) : messaged;\r\n // NOTE: experimental !!\r\n if (true) {\r\n // prettier-ignore\r\n const payloads = {\r\n timestamp: Date.now(),\r\n key: Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(key)\r\n ? key\r\n : isMessageFunction(format)\r\n ? format.key\r\n : '',\r\n locale: targetLocale || (isMessageFunction(format)\r\n ? format.locale\r\n : ''),\r\n format: Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(format)\r\n ? format\r\n : isMessageFunction(format)\r\n ? format.source\r\n : '',\r\n message: ret\r\n };\r\n payloads.meta = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, context.__meta, getAdditionalMeta() || {});\r\n translateDevTools(payloads);\r\n }\r\n return ret;\r\n}\r\nfunction escapeParams(options) {\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(options.list)) {\r\n options.list = options.list.map(item => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(item) ? Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"escapeHtml\"])(item) : item);\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(options.named)) {\r\n Object.keys(options.named).forEach(key => {\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.named[key])) {\r\n options.named[key] = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"escapeHtml\"])(options.named[key]);\r\n }\r\n });\r\n }\r\n}\r\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\r\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\r\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n let message = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'translate';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if (( true) &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if (( true) && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n message =\r\n messages[targetLocale] || {};\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if (( true) && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"inBrowser\"]) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-resolve-start';\r\n endTag = 'intlify-message-resolve-end';\r\n _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"] && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"])(startTag);\r\n }\r\n if ((format = resolveValue(message, key)) === null) {\r\n // if null, resolve with object key path\r\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n // for vue-devtools timeline event\r\n if (( true) && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"inBrowser\"]) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start && format) {\r\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\r\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\r\n key,\r\n message: format,\r\n time: end - start,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"] && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"measure\"]) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"])(endTag);\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"measure\"])('intlify message resolve', startTag, endTag);\r\n }\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(format) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(format))\r\n break;\r\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n key, targetLocale, missingWarn, type);\r\n if (missingRet !== key) {\r\n format = missingRet;\r\n }\r\n from = to;\r\n }\r\n return [format, targetLocale, message];\r\n}\r\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\r\n const { messageCompiler, warnHtmlMessage } = context;\r\n if (isMessageFunction(format)) {\r\n const msg = format;\r\n msg.locale = msg.locale || targetLocale;\r\n msg.key = msg.key || key;\r\n return msg;\r\n }\r\n if (messageCompiler == null) {\r\n const msg = (() => format);\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n return msg;\r\n }\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if (( true) && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"inBrowser\"]) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-compilation-start';\r\n endTag = 'intlify-message-compilation-end';\r\n _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"] && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"])(startTag);\r\n }\r\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\r\n // for vue-devtools timeline event\r\n if (( true) && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"inBrowser\"]) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\r\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\r\n message: format,\r\n time: end - start,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"] && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"measure\"]) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"])(endTag);\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"measure\"])('intlify message compilation', startTag, endTag);\r\n }\r\n }\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n msg.source = format;\r\n return msg;\r\n}\r\nfunction evaluateMessage(context, msg, msgCtx) {\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if (( true) && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"inBrowser\"]) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-evaluation-start';\r\n endTag = 'intlify-message-evaluation-end';\r\n _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"] && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"])(startTag);\r\n }\r\n const messaged = msg(msgCtx);\r\n // for vue-devtools timeline event\r\n if (( true) && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"inBrowser\"]) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\r\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\r\n value: messaged,\r\n time: end - start,\r\n groupId: `${'translate'}:${msg.key}`\r\n });\r\n }\r\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"] && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"measure\"]) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"mark\"])(endTag);\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"measure\"])('intlify message evaluation', startTag, endTag);\r\n }\r\n }\r\n return messaged;\r\n}\r\n/** @internal */\r\nfunction parseTranslateArgs(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg1) && !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(arg1) && !isMessageFunction(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n // prettier-ignore\r\n const key = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(arg1)\r\n ? String(arg1)\r\n : isMessageFunction(arg1)\r\n ? arg1\r\n : arg1;\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg2)) {\r\n options.default = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg2) && !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isEmptyObject\"])(arg2)) {\r\n options.named = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(arg2)) {\r\n options.list = arg2;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(arg3)) {\r\n options.plural = arg3;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg3)) {\r\n options.default = arg3;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg3)) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(options, arg3);\r\n }\r\n return [key, options];\r\n}\r\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\r\n return {\r\n warnHtmlMessage,\r\n onError: (err) => {\r\n errorDetector && errorDetector(err);\r\n if ((true)) {\r\n const message = `Message compilation error: ${err.message}`;\r\n const codeFrame = err.location &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"generateCodeFrame\"])(source, err.location.start.offset, err.location.end.offset);\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\r\n message: source,\r\n error: err.message,\r\n start: err.location && err.location.start.offset,\r\n end: err.location && err.location.end.offset,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n else {}\r\n },\r\n onCacheKey: (source) => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"generateFormatCacheKey\"])(locale, key, source)\r\n };\r\n}\r\nfunction getMessageContextOptions(context, locale, message, options) {\r\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\r\n const resolveMessage = (key) => {\r\n let val = resolveValue(message, key);\r\n // fallback to root context\r\n if (val == null && fallbackContext) {\r\n const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\r\n val = resolveValue(message, key);\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val)) {\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\r\n return !occurred\r\n ? msg\r\n : NOOP_MESSAGE_FUNCTION;\r\n }\r\n else if (isMessageFunction(val)) {\r\n return val;\r\n }\r\n else {\r\n // TODO: should be implemented warning message\r\n return NOOP_MESSAGE_FUNCTION;\r\n }\r\n };\r\n const ctxOptions = {\r\n locale,\r\n modifiers,\r\n pluralRules,\r\n messages: resolveMessage\r\n };\r\n if (context.processor) {\r\n ctxOptions.processor = context.processor;\r\n }\r\n if (options.list) {\r\n ctxOptions.list = options.list;\r\n }\r\n if (options.named) {\r\n ctxOptions.named = options.named;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(options.plural)) {\r\n ctxOptions.pluralIndex = options.plural;\r\n }\r\n return ctxOptions;\r\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\r\nconst Availabilities = {\r\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\r\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\r\n};\n\n// implementation of `datetime` function\r\nfunction datetime(context, ...args) {\r\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __datetimeFormatters } = context;\r\n if (( true) && !Availabilities.dateTimeFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\r\n const missingWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(key) || key === '') {\r\n return new Intl.DateTimeFormat(locale).format(value);\r\n }\r\n // resolve format\r\n let datetimeFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'datetime format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if (( true) &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if (( true) && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n datetimeFormat =\r\n datetimeFormats[targetLocale] || {};\r\n format = datetimeFormat[key];\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(format) || !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isEmptyObject\"])(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __datetimeFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.DateTimeFormat(targetLocale, Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, format, overrides));\r\n __datetimeFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nfunction parseDateTimeArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n let options = {};\r\n let overrides = {};\r\n let value;\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg1)) {\r\n // Only allow ISO strings - other date formats are often supported,\r\n // but may cause different results in different browsers.\r\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\r\n if (!matches) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n // Some browsers can not parse the iso datetime separated by space,\r\n // this is a compromise solution by replace the 'T'/' ' with 'T'\r\n const dateTime = matches[3]\r\n ? matches[3].trim().startsWith('T')\r\n ? `${matches[1].trim()}${matches[3].trim()}`\r\n : `${matches[1].trim()}T${matches[3].trim()}`\r\n : matches[1].trim();\r\n value = new Date(dateTime);\r\n try {\r\n // This will fail if the date is not valid\r\n value.toISOString();\r\n }\r\n catch (e) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"])(arg1)) {\r\n if (isNaN(arg1.getTime())) {\r\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\r\n }\r\n value = arg1;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(arg1)) {\r\n value = arg1;\r\n }\r\n else {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg2)) {\r\n options = arg2;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearDateTimeFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__datetimeFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__datetimeFormatters.delete(id);\r\n }\r\n}\n\n// implementation of `number` function\r\nfunction number(context, ...args) {\r\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __numberFormatters } = context;\r\n if (( true) && !Availabilities.numberFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseNumberArgs(...args);\r\n const missingWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(key) || key === '') {\r\n return new Intl.NumberFormat(locale).format(value);\r\n }\r\n // resolve format\r\n let numberFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'number format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if (( true) &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if (( true) && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n numberFormat =\r\n numberFormats[targetLocale] || {};\r\n format = numberFormat[key];\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(format) || !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isEmptyObject\"])(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __numberFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.NumberFormat(targetLocale, Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, format, overrides));\r\n __numberFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nfunction parseNumberArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n let options = {};\r\n let overrides = {};\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const value = arg1;\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg2)) {\r\n options = arg2;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearNumberFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__numberFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__numberFormatters.delete(id);\r\n }\r\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\r\n{\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"getGlobalThis\"])().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGludGxpZnkvY29yZS1iYXNlL2Rpc3QvY29yZS1iYXNlLmVzbS1idW5kbGVyLmpzPzYyNWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDc1I7QUFDdks7QUFDN0I7QUFDdEI7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0JBQWtCO0FBQ3RDO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnRUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxnRUFBUTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0EsNEJBQTRCLCtEQUFlO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsZ0VBQVE7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGdFQUFRLHlCQUF5QixnRUFBUTtBQUN0RSxVQUFVLGdFQUFRO0FBQ2xCO0FBQ0EsY0FBYyxnRUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBLHVCQUF1QixnRUFBUTtBQUMvQixRQUFRLGdFQUFRO0FBQ2hCLFFBQVEsa0VBQVU7QUFDbEI7QUFDQTtBQUNBLDBCQUEwQixnRUFBUTtBQUNsQyxRQUFRLGdFQUFRO0FBQ2hCLFFBQVEsa0VBQVU7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFRO0FBQ1o7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtFQUFVO0FBQzlCO0FBQ0EsY0FBYyxnRUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFFQUFhLHVCQUF1QixrRUFBVTtBQUNwRTtBQUNBO0FBQ0Esd0JBQXdCLHFFQUFhO0FBQ3JDLFFBQVEsa0VBQVU7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdFQUFRO0FBQ3ZCO0FBQ0EsaUJBQWlCLHFFQUFhLHVCQUF1QixnRUFBUTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHlFQUFvQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLDREQUE0RCx5RUFBb0I7QUFDaEY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsSUFBSSxXQUFXLE9BQU87QUFDdEUscUVBQXFFLElBQUksYUFBYSxPQUFPO0FBQzdGO0FBQ0EsNkVBQTZFLElBQUksYUFBYSxPQUFPO0FBQ3JHO0FBQ0EsNkVBQTZFLElBQUksYUFBYSxPQUFPO0FBQ3JHO0FBQ0E7QUFDQSxXQUFXLDhEQUFNO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwrREFBTztBQUN2QjtBQUNBLGtCQUFrQixnRUFBUTtBQUMxQjtBQUNBLHNCQUFzQixnRUFBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQix3QkFBd0I7QUFDeEIsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0VBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLCtEQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLCtEQUFPLGVBQWUscUVBQWE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnRUFBUTtBQUN4QixZQUFZLCtEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCLGlFQUFTLFNBQVM7QUFDMUQ7QUFDQSxZQUFZLGdFQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwrREFBTyxZQUFZLHFFQUFhO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGdFQUFRO0FBQ2pDLHlCQUF5QixnRUFBUTtBQUNqQztBQUNBLDhCQUE4QixnRUFBUTtBQUN0QyxpQkFBaUIsa0NBQWtDLEVBQUUsY0FBYztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHNCQUFzQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix1QkFBdUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSxvQkFBb0IsZ0VBQVE7QUFDNUIsbUJBQW1CLGdFQUFRO0FBQzNCLDJCQUEyQiwrREFBTztBQUNsQyxRQUFRLHFFQUFhO0FBQ3JCLFFBQVEsZ0VBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHFFQUFhO0FBQ2xDO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLDRCQUE0QixxRUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYTtBQUM1QjtBQUNBLDBCQUEwQixxRUFBYTtBQUN2QztBQUNBLGVBQWUsYUFBYTtBQUM1QjtBQUNBLHNCQUFzQiw4REFBTSxHQUFHLHlCQUF5QjtBQUN4RDtBQUNBLG9CQUFvQixrRUFBVTtBQUM5Qix3QkFBd0IsaUVBQVMseUJBQXlCLGdFQUFRO0FBQ2xFO0FBQ0E7QUFDQSx5QkFBeUIsaUVBQVMsMEJBQTBCLGdFQUFRO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGtFQUFVO0FBQ3RDO0FBQ0E7QUFDQSxzQkFBc0IscUVBQWE7QUFDbkMsNEJBQTRCLGlFQUFTO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrRUFBVTtBQUN0QztBQUNBO0FBQ0EsNEJBQTRCLGtFQUFVO0FBQ3RDO0FBQ0E7QUFDQSw2QkFBNkIsa0VBQVU7QUFDdkM7QUFDQTtBQUNBLDRCQUE0QixnRUFBUTtBQUNwQztBQUNBO0FBQ0EsbUJBQW1CLGtFQUFVLG9DQUFvQyxvREFBSTtBQUNyRTtBQUNBO0FBQ0EsaUNBQWlDLGdFQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixnRUFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0VBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFvRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQkFBa0I7QUFDN0I7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixLQUFLLEdBQUcsSUFBSTtBQUN4QyxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdFQUFRO0FBQ3ZCO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELGdFQUFnRSxjQUFjO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDO0FBQ3JDLHlDQUF5QyxPQUFPO0FBQ2hEO0FBQ0EsNEJBQTRCLGlFQUFTO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNERBQUksQ0FBQyw4REFBTSxnQkFBZ0IsU0FBUztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsd0VBQWM7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTyxHQUFHLDZFQUFXO0FBQ3BDO0FBQ0EsMkNBQTJDLEtBQUs7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVywyRUFBaUI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0ZBQWtCLGNBQWMsS0FBcUMsS0FBSywwQkFBMEIsR0FBRyxTQUFTO0FBQzNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQ0FBbUMsa0VBQVU7QUFDN0M7QUFDQTtBQUNBLFdBQVcsMEZBQTBGO0FBQ3JHO0FBQ0Esd0JBQXdCLGlFQUFTO0FBQ2pDO0FBQ0E7QUFDQSx5QkFBeUIsaUVBQVM7QUFDbEM7QUFDQTtBQUNBLDRCQUE0QixpRUFBUztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixnRUFBUSxxQkFBcUIsaUVBQVM7QUFDbEUsV0FBVyxpRUFBUztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0VBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsZ0VBQVE7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdFQUFRO0FBQ25CLGFBQWEsZ0VBQVE7QUFDckI7QUFDQTtBQUNBLFNBQVMsS0FBcUMsS0FBSyxnRUFBUTtBQUMzRCxRQUFRLDREQUFJO0FBQ1o7QUFDQTtBQUNBLDZDQUE2QyxJQUFJO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFvRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZ0VBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0VBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDhEQUFNLEdBQUcsMkNBQTJDO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLCtEQUFPO0FBQ2YsZ0RBQWdELGdFQUFRLFNBQVMsa0VBQVU7QUFDM0U7QUFDQSxhQUFhLGdFQUFRO0FBQ3JCO0FBQ0EsZ0JBQWdCLGdFQUFRO0FBQ3hCLHFDQUFxQyxrRUFBVTtBQUMvQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxXQUFXLG9FQUFvRTtBQUMvRSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxLQUFLLEdBQUcsSUFBSTtBQUM1QyxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUMsS0FBSyx5REFBUztBQUNoRTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFJLElBQUksNERBQUk7QUFDeEI7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLEtBQUsseURBQVM7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxLQUFLLEdBQUcsSUFBSTtBQUM1QyxpQkFBaUI7QUFDakI7QUFDQSxzQ0FBc0Msb0RBQUksSUFBSSx1REFBTztBQUNyRCxnQkFBZ0IsNERBQUk7QUFDcEIsZ0JBQWdCLCtEQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxZQUFZLGdFQUFRLFlBQVksa0VBQVU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsbUNBQW1DO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQyxLQUFLLHlEQUFTO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQUksSUFBSSw0REFBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDLEtBQUsseURBQVM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsWUFBWSxHQUFHLElBQUk7QUFDL0MsYUFBYTtBQUNiO0FBQ0Esa0NBQWtDLG9EQUFJLElBQUksdURBQU87QUFDakQsWUFBWSw0REFBSTtBQUNoQixZQUFZLCtEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUMsS0FBSyx5REFBUztBQUM1RDtBQUNBO0FBQ0E7QUFDQSxRQUFRLG9EQUFJLElBQUksNERBQUk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQyxLQUFLLHlEQUFTO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFlBQVksR0FBRyxRQUFRO0FBQ25ELGFBQWE7QUFDYjtBQUNBLGtDQUFrQyxvREFBSSxJQUFJLHVEQUFPO0FBQ2pELFlBQVksNERBQUk7QUFDaEIsWUFBWSwrREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxnRUFBUSxXQUFXLGdFQUFRO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnRUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0VBQVE7QUFDaEI7QUFDQTtBQUNBLGFBQWEsZ0VBQVE7QUFDckI7QUFDQTtBQUNBLGFBQWEscUVBQWEsV0FBVyxxRUFBYTtBQUNsRDtBQUNBO0FBQ0EsYUFBYSwrREFBTztBQUNwQjtBQUNBO0FBQ0EsUUFBUSxnRUFBUTtBQUNoQjtBQUNBO0FBQ0EsYUFBYSxnRUFBUTtBQUNyQjtBQUNBO0FBQ0EsYUFBYSxxRUFBYTtBQUMxQixRQUFRLDhEQUFNO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RCw4REFBOEQsWUFBWTtBQUMxRTtBQUNBLG9CQUFvQix5RUFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsWUFBWSxHQUFHLElBQUk7QUFDdkQscUJBQXFCO0FBQ3JCO0FBQ0EsNkNBQTZDLFFBQVEsSUFBSSxVQUFVO0FBQ25FO0FBQ0EsaUJBQWlCLEVBRUo7QUFDYixTQUFTO0FBQ1QsZ0NBQWdDLDhFQUFzQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQSxXQUFXLG9IQUFvSDtBQUMvSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0VBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0VBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyx5RUFBeUU7QUFDcEYsV0FBVyx1QkFBdUI7QUFDbEMsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpRUFBUztBQUNqQztBQUNBO0FBQ0EseUJBQXlCLGlFQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnRUFBUTtBQUMzQjtBQUNBO0FBQ0EsU0FBUyxnRUFBUTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLEtBQUssR0FBRyxJQUFJO0FBQzVDLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxRUFBYTtBQUN6QjtBQUNBLHFFQUFxRTtBQUNyRTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHFFQUFhLGFBQWEsZ0VBQVE7QUFDM0M7QUFDQTtBQUNBLGdCQUFnQixhQUFhLElBQUksSUFBSTtBQUNyQyxTQUFTLHFFQUFhO0FBQ3RCLGdCQUFnQixHQUFHLElBQUksMEJBQTBCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCw4REFBTSxHQUFHO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxnRUFBUTtBQUNoQjtBQUNBO0FBQ0Esd0NBQXdDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrQkFBa0IsRUFBRSxrQkFBa0I7QUFDM0QscUJBQXFCLGtCQUFrQixHQUFHLGtCQUFrQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOERBQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0VBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0VBQVE7QUFDaEI7QUFDQTtBQUNBLGFBQWEscUVBQWE7QUFDMUI7QUFDQTtBQUNBLFFBQVEsZ0VBQVE7QUFDaEI7QUFDQTtBQUNBLGFBQWEscUVBQWE7QUFDMUI7QUFDQTtBQUNBLFFBQVEscUVBQWE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixPQUFPLElBQUksSUFBSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsdUVBQXVFO0FBQ2xGLFdBQVcscUJBQXFCO0FBQ2hDLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUVBQVM7QUFDakM7QUFDQTtBQUNBLHlCQUF5QixpRUFBUztBQUNsQztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0VBQVE7QUFDM0I7QUFDQTtBQUNBLFNBQVMsZ0VBQVE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxLQUFLLEdBQUcsSUFBSTtBQUM1QyxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkscUVBQWE7QUFDekI7QUFDQSxxRUFBcUU7QUFDckU7QUFDQTtBQUNBO0FBQ0EsU0FBUyxxRUFBYSxhQUFhLGdFQUFRO0FBQzNDO0FBQ0E7QUFDQSxnQkFBZ0IsYUFBYSxJQUFJLElBQUk7QUFDckMsU0FBUyxxRUFBYTtBQUN0QixnQkFBZ0IsR0FBRyxJQUFJLDBCQUEwQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsOERBQU0sR0FBRztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGdFQUFRO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0VBQVE7QUFDaEI7QUFDQTtBQUNBLGFBQWEscUVBQWE7QUFDMUI7QUFDQTtBQUNBLFFBQVEsZ0VBQVE7QUFDaEI7QUFDQTtBQUNBLGFBQWEscUVBQWE7QUFDMUI7QUFDQTtBQUNBLFFBQVEscUVBQWE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixPQUFPLElBQUksSUFBSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBYTtBQUNyQjtBQUNBOztBQUVneEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGludGxpZnkvY29yZS1iYXNlL2Rpc3QvY29yZS1iYXNlLmVzbS1idW5kbGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gICogY29yZS1iYXNlIHY5LjIuMC1iZXRhLjM0XG4gICogKGMpIDIwMjIga2F6dXlhIGthd2FndWNoaVxuICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAgKi9cbmltcG9ydCB7IGlzT2JqZWN0LCBpc051bWJlciwgaXNTdHJpbmcsIGlzRnVuY3Rpb24sIGlzUGxhaW5PYmplY3QsIHRvRGlzcGxheVN0cmluZywgZm9ybWF0LCBpc0FycmF5LCBpc0Jvb2xlYW4sIGFzc2lnbiwgaXNSZWdFeHAsIHdhcm4sIGVzY2FwZUh0bWwsIGluQnJvd3NlciwgbWFyaywgbWVhc3VyZSwgZ2VuZXJhdGVDb2RlRnJhbWUsIGdlbmVyYXRlRm9ybWF0Q2FjaGVLZXksIGlzRW1wdHlPYmplY3QsIGlzRGF0ZSwgZ2V0R2xvYmFsVGhpcyB9IGZyb20gJ0BpbnRsaWZ5L3NoYXJlZCc7XG5pbXBvcnQgeyBkZWZhdWx0T25FcnJvciwgYmFzZUNvbXBpbGUsIENvbXBpbGVFcnJvckNvZGVzLCBjcmVhdGVDb21waWxlRXJyb3IgfSBmcm9tICdAaW50bGlmeS9tZXNzYWdlLWNvbXBpbGVyJztcbmV4cG9ydCB7IENvbXBpbGVFcnJvckNvZGVzLCBjcmVhdGVDb21waWxlRXJyb3IgfSBmcm9tICdAaW50bGlmeS9tZXNzYWdlLWNvbXBpbGVyJztcbmltcG9ydCB7IEludGxpZnlEZXZUb29sc0hvb2tzIH0gZnJvbSAnQGludGxpZnkvZGV2dG9vbHMtaWYnO1xuXG5jb25zdCBwYXRoU3RhdGVNYWNoaW5lID0gIFtdO1xyXG5wYXRoU3RhdGVNYWNoaW5lWzAgLyogQkVGT1JFX1BBVEggKi9dID0ge1xyXG4gICAgW1wid1wiIC8qIFdPUktTUEFDRSAqL106IFswIC8qIEJFRk9SRV9QQVRIICovXSxcclxuICAgIFtcImlcIiAvKiBJREVOVCAqL106IFszIC8qIElOX0lERU5UICovLCAwIC8qIEFQUEVORCAqL10sXHJcbiAgICBbXCJbXCIgLyogTEVGVF9CUkFDS0VUICovXTogWzQgLyogSU5fU1VCX1BBVEggKi9dLFxyXG4gICAgW1wib1wiIC8qIEVORF9PRl9GQUlMICovXTogWzcgLyogQUZURVJfUEFUSCAqL11cclxufTtcclxucGF0aFN0YXRlTWFjaGluZVsxIC8qIElOX1BBVEggKi9dID0ge1xyXG4gICAgW1wid1wiIC8qIFdPUktTUEFDRSAqL106IFsxIC8qIElOX1BBVEggKi9dLFxyXG4gICAgW1wiLlwiIC8qIERPVCAqL106IFsyIC8qIEJFRk9SRV9JREVOVCAqL10sXHJcbiAgICBbXCJbXCIgLyogTEVGVF9CUkFDS0VUICovXTogWzQgLyogSU5fU1VCX1BBVEggKi9dLFxyXG4gICAgW1wib1wiIC8qIEVORF9PRl9GQUlMICovXTogWzcgLyogQUZURVJfUEFUSCAqL11cclxufTtcclxucGF0aFN0YXRlTWFjaGluZVsyIC8qIEJFRk9SRV9JREVOVCAqL10gPSB7XHJcbiAgICBbXCJ3XCIgLyogV09SS1NQQUNFICovXTogWzIgLyogQkVGT1JFX0lERU5UICovXSxcclxuICAgIFtcImlcIiAvKiBJREVOVCAqL106IFszIC8qIElOX0lERU5UICovLCAwIC8qIEFQUEVORCAqL10sXHJcbiAgICBbXCIwXCIgLyogWkVSTyAqL106IFszIC8qIElOX0lERU5UICovLCAwIC8qIEFQUEVORCAqL11cclxufTtcclxucGF0aFN0YXRlTWFjaGluZVszIC8qIElOX0lERU5UICovXSA9IHtcclxuICAgIFtcImlcIiAvKiBJREVOVCAqL106IFszIC8qIElOX0lERU5UICovLCAwIC8qIEFQUEVORCAqL10sXHJcbiAgICBbXCIwXCIgLyogWkVSTyAqL106IFszIC8qIElOX0lERU5UICovLCAwIC8qIEFQUEVORCAqL10sXHJcbiAgICBbXCJ3XCIgLyogV09SS1NQQUNFICovXTogWzEgLyogSU5fUEFUSCAqLywgMSAvKiBQVVNIICovXSxcclxuICAgIFtcIi5cIiAvKiBET1QgKi9dOiBbMiAvKiBCRUZPUkVfSURFTlQgKi8sIDEgLyogUFVTSCAqL10sXHJcbiAgICBbXCJbXCIgLyogTEVGVF9CUkFDS0VUICovXTogWzQgLyogSU5fU1VCX1BBVEggKi8sIDEgLyogUFVTSCAqL10sXHJcbiAgICBbXCJvXCIgLyogRU5EX09GX0ZBSUwgKi9dOiBbNyAvKiBBRlRFUl9QQVRIICovLCAxIC8qIFBVU0ggKi9dXHJcbn07XHJcbnBhdGhTdGF0ZU1hY2hpbmVbNCAvKiBJTl9TVUJfUEFUSCAqL10gPSB7XHJcbiAgICBbXCInXCIgLyogU0lOR0xFX1FVT1RFICovXTogWzUgLyogSU5fU0lOR0xFX1FVT1RFICovLCAwIC8qIEFQUEVORCAqL10sXHJcbiAgICBbXCJcXFwiXCIgLyogRE9VQkxFX1FVT1RFICovXTogWzYgLyogSU5fRE9VQkxFX1FVT1RFICovLCAwIC8qIEFQUEVORCAqL10sXHJcbiAgICBbXCJbXCIgLyogTEVGVF9CUkFDS0VUICovXTogW1xyXG4gICAgICAgIDQgLyogSU5fU1VCX1BBVEggKi8sXHJcbiAgICAgICAgMiAvKiBJTkNfU1VCX1BBVEhfREVQVEggKi9cclxuICAgIF0sXHJcbiAgICBbXCJdXCIgLyogUklHSFRfQlJBQ0tFVCAqL106IFsxIC8qIElOX1BBVEggKi8sIDMgLyogUFVTSF9TVUJfUEFUSCAqL10sXHJcbiAgICBbXCJvXCIgLyogRU5EX09GX0ZBSUwgKi9dOiA4IC8qIEVSUk9SICovLFxyXG4gICAgW1wibFwiIC8qIEVMU0UgKi9dOiBbNCAvKiBJTl9TVUJfUEFUSCAqLywgMCAvKiBBUFBFTkQgKi9dXHJcbn07XHJcbnBhdGhTdGF0ZU1hY2hpbmVbNSAvKiBJTl9TSU5HTEVfUVVPVEUgKi9dID0ge1xyXG4gICAgW1wiJ1wiIC8qIFNJTkdMRV9RVU9URSAqL106IFs0IC8qIElOX1NVQl9QQVRIICovLCAwIC8qIEFQUEVORCAqL10sXHJcbiAgICBbXCJvXCIgLyogRU5EX09GX0ZBSUwgKi9dOiA4IC8qIEVSUk9SICovLFxyXG4gICAgW1wibFwiIC8qIEVMU0UgKi9dOiBbNSAvKiBJTl9TSU5HTEVfUVVPVEUgKi8sIDAgLyogQVBQRU5EICovXVxyXG59O1xyXG5wYXRoU3RhdGVNYWNoaW5lWzYgLyogSU5fRE9VQkxFX1FVT1RFICovXSA9IHtcclxuICAgIFtcIlxcXCJcIiAvKiBET1VCTEVfUVVPVEUgKi9dOiBbNCAvKiBJTl9TVUJfUEFUSCAqLywgMCAvKiBBUFBFTkQgKi9dLFxyXG4gICAgW1wib1wiIC8qIEVORF9PRl9GQUlMICovXTogOCAvKiBFUlJPUiAqLyxcclxuICAgIFtcImxcIiAvKiBFTFNFICovXTogWzYgLyogSU5fRE9VQkxFX1FVT1RFICovLCAwIC8qIEFQUEVORCAqL11cclxufTtcclxuLyoqXHJcbiAqIENoZWNrIGlmIGFuIGV4cHJlc3Npb24gaXMgYSBsaXRlcmFsIHZhbHVlLlxyXG4gKi9cclxuY29uc3QgbGl0ZXJhbFZhbHVlUkUgPSAvXlxccz8oPzp0cnVlfGZhbHNlfC0/W1xcZC5dK3wnW14nXSonfFwiW15cIl0qXCIpXFxzPyQvO1xyXG5mdW5jdGlvbiBpc0xpdGVyYWwoZXhwKSB7XHJcbiAgICByZXR1cm4gbGl0ZXJhbFZhbHVlUkUudGVzdChleHApO1xyXG59XHJcbi8qKlxyXG4gKiBTdHJpcCBxdW90ZXMgZnJvbSBhIHN0cmluZ1xyXG4gKi9cclxuZnVuY3Rpb24gc3RyaXBRdW90ZXMoc3RyKSB7XHJcbiAgICBjb25zdCBhID0gc3RyLmNoYXJDb2RlQXQoMCk7XHJcbiAgICBjb25zdCBiID0gc3RyLmNoYXJDb2RlQXQoc3RyLmxlbmd0aCAtIDEpO1xyXG4gICAgcmV0dXJuIGEgPT09IGIgJiYgKGEgPT09IDB4MjIgfHwgYSA9PT0gMHgyNykgPyBzdHIuc2xpY2UoMSwgLTEpIDogc3RyO1xyXG59XHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgdGhlIHR5cGUgb2YgYSBjaGFyYWN0ZXIgaW4gYSBrZXlwYXRoLlxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGF0aENoYXJUeXBlKGNoKSB7XHJcbiAgICBpZiAoY2ggPT09IHVuZGVmaW5lZCB8fCBjaCA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBcIm9cIiAvKiBFTkRfT0ZfRkFJTCAqLztcclxuICAgIH1cclxuICAgIGNvbnN0IGNvZGUgPSBjaC5jaGFyQ29kZUF0KDApO1xyXG4gICAgc3dpdGNoIChjb2RlKSB7XHJcbiAgICAgICAgY2FzZSAweDViOiAvLyBbXHJcbiAgICAgICAgY2FzZSAweDVkOiAvLyBdXHJcbiAgICAgICAgY2FzZSAweDJlOiAvLyAuXHJcbiAgICAgICAgY2FzZSAweDIyOiAvLyBcIlxyXG4gICAgICAgIGNhc2UgMHgyNzogLy8gJ1xyXG4gICAgICAgICAgICByZXR1cm4gY2g7XHJcbiAgICAgICAgY2FzZSAweDVmOiAvLyBfXHJcbiAgICAgICAgY2FzZSAweDI0OiAvLyAkXHJcbiAgICAgICAgY2FzZSAweDJkOiAvLyAtXHJcbiAgICAgICAgICAgIHJldHVybiBcImlcIiAvKiBJREVOVCAqLztcclxuICAgICAgICBjYXNlIDB4MDk6IC8vIFRhYiAoSFQpXHJcbiAgICAgICAgY2FzZSAweDBhOiAvLyBOZXdsaW5lIChMRilcclxuICAgICAgICBjYXNlIDB4MGQ6IC8vIFJldHVybiAoQ1IpXHJcbiAgICAgICAgY2FzZSAweGEwOiAvLyBOby1icmVhayBzcGFjZSAoTkJTUClcclxuICAgICAgICBjYXNlIDB4ZmVmZjogLy8gQnl0ZSBPcmRlciBNYXJrIChCT00pXHJcbiAgICAgICAgY2FzZSAweDIwMjg6IC8vIExpbmUgU2VwYXJhdG9yIChMUylcclxuICAgICAgICBjYXNlIDB4MjAyOTogLy8gUGFyYWdyYXBoIFNlcGFyYXRvciAoUFMpXHJcbiAgICAgICAgICAgIHJldHVybiBcIndcIiAvKiBXT1JLU1BBQ0UgKi87XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJpXCIgLyogSURFTlQgKi87XHJcbn1cclxuLyoqXHJcbiAqIEZvcm1hdCBhIHN1YlBhdGgsIHJldHVybiBpdHMgcGxhaW4gZm9ybSBpZiBpdCBpc1xyXG4gKiBhIGxpdGVyYWwgc3RyaW5nIG9yIG51bWJlci4gT3RoZXJ3aXNlIHByZXBlbmQgdGhlXHJcbiAqIGR5bmFtaWMgaW5kaWNhdG9yICgqKS5cclxuICovXHJcbmZ1bmN0aW9uIGZvcm1hdFN1YlBhdGgocGF0aCkge1xyXG4gICAgY29uc3QgdHJpbW1lZCA9IHBhdGgudHJpbSgpO1xyXG4gICAgLy8gaW52YWxpZCBsZWFkaW5nIDBcclxuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJzAnICYmIGlzTmFOKHBhcnNlSW50KHBhdGgpKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0xpdGVyYWwodHJpbW1lZClcclxuICAgICAgICA/IHN0cmlwUXVvdGVzKHRyaW1tZWQpXHJcbiAgICAgICAgOiBcIipcIiAvKiBBU1RBUklTSyAqLyArIHRyaW1tZWQ7XHJcbn1cclxuLyoqXHJcbiAqIFBhcnNlIGEgc3RyaW5nIHBhdGggaW50byBhbiBhcnJheSBvZiBzZWdtZW50c1xyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2UocGF0aCkge1xyXG4gICAgY29uc3Qga2V5cyA9IFtdO1xyXG4gICAgbGV0IGluZGV4ID0gLTE7XHJcbiAgICBsZXQgbW9kZSA9IDAgLyogQkVGT1JFX1BBVEggKi87XHJcbiAgICBsZXQgc3ViUGF0aERlcHRoID0gMDtcclxuICAgIGxldCBjO1xyXG4gICAgbGV0IGtleTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxyXG4gICAgbGV0IG5ld0NoYXI7XHJcbiAgICBsZXQgdHlwZTtcclxuICAgIGxldCB0cmFuc2l0aW9uO1xyXG4gICAgbGV0IGFjdGlvbjtcclxuICAgIGxldCB0eXBlTWFwO1xyXG4gICAgY29uc3QgYWN0aW9ucyA9IFtdO1xyXG4gICAgYWN0aW9uc1swIC8qIEFQUEVORCAqL10gPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGtleSA9IG5ld0NoYXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBrZXkgKz0gbmV3Q2hhcjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgYWN0aW9uc1sxIC8qIFBVU0ggKi9dID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcclxuICAgICAgICAgICAga2V5ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBhY3Rpb25zWzIgLyogSU5DX1NVQl9QQVRIX0RFUFRIICovXSA9ICgpID0+IHtcclxuICAgICAgICBhY3Rpb25zWzAgLyogQVBQRU5EICovXSgpO1xyXG4gICAgICAgIHN1YlBhdGhEZXB0aCsrO1xyXG4gICAgfTtcclxuICAgIGFjdGlvbnNbMyAvKiBQVVNIX1NVQl9QQVRIICovXSA9ICgpID0+IHtcclxuICAgICAgICBpZiAoc3ViUGF0aERlcHRoID4gMCkge1xyXG4gICAgICAgICAgICBzdWJQYXRoRGVwdGgtLTtcclxuICAgICAgICAgICAgbW9kZSA9IDQgLyogSU5fU1VCX1BBVEggKi87XHJcbiAgICAgICAgICAgIGFjdGlvbnNbMCAvKiBBUFBFTkQgKi9dKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzdWJQYXRoRGVwdGggPSAwO1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBrZXkgPSBmb3JtYXRTdWJQYXRoKGtleSk7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb25zWzEgLyogUFVTSCAqL10oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBtYXliZVVuZXNjYXBlUXVvdGUoKSB7XHJcbiAgICAgICAgY29uc3QgbmV4dENoYXIgPSBwYXRoW2luZGV4ICsgMV07XHJcbiAgICAgICAgaWYgKChtb2RlID09PSA1IC8qIElOX1NJTkdMRV9RVU9URSAqLyAmJlxyXG4gICAgICAgICAgICBuZXh0Q2hhciA9PT0gXCInXCIgLyogU0lOR0xFX1FVT1RFICovKSB8fFxyXG4gICAgICAgICAgICAobW9kZSA9PT0gNiAvKiBJTl9ET1VCTEVfUVVPVEUgKi8gJiZcclxuICAgICAgICAgICAgICAgIG5leHRDaGFyID09PSBcIlxcXCJcIiAvKiBET1VCTEVfUVVPVEUgKi8pKSB7XHJcbiAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgIG5ld0NoYXIgPSAnXFxcXCcgKyBuZXh0Q2hhcjtcclxuICAgICAgICAgICAgYWN0aW9uc1swIC8qIEFQUEVORCAqL10oKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2hpbGUgKG1vZGUgIT09IG51bGwpIHtcclxuICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgIGMgPSBwYXRoW2luZGV4XTtcclxuICAgICAgICBpZiAoYyA9PT0gJ1xcXFwnICYmIG1heWJlVW5lc2NhcGVRdW90ZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0eXBlID0gZ2V0UGF0aENoYXJUeXBlKGMpO1xyXG4gICAgICAgIHR5cGVNYXAgPSBwYXRoU3RhdGVNYWNoaW5lW21vZGVdO1xyXG4gICAgICAgIHRyYW5zaXRpb24gPSB0eXBlTWFwW3R5cGVdIHx8IHR5cGVNYXBbXCJsXCIgLyogRUxTRSAqL10gfHwgOCAvKiBFUlJPUiAqLztcclxuICAgICAgICAvLyBjaGVjayBwYXJzZSBlcnJvclxyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uID09PSA4IC8qIEVSUk9SICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbW9kZSA9IHRyYW5zaXRpb25bMF07XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb25bMV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBhY3Rpb24gPSBhY3Rpb25zW3RyYW5zaXRpb25bMV1dO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdDaGFyID0gYztcclxuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24oKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hlY2sgcGFyc2UgZmluaXNoXHJcbiAgICAgICAgaWYgKG1vZGUgPT09IDcgLyogQUZURVJfUEFUSCAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4ga2V5cztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLy8gcGF0aCB0b2tlbiBjYWNoZVxyXG5jb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcclxuLyoqXHJcbiAqIGtleS12YWx1ZSBtZXNzYWdlIHJlc29sdmVyXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIFJlc29sdmVzIG1lc3NhZ2VzIHdpdGggdGhlIGtleS12YWx1ZSBzdHJ1Y3R1cmUuIE5vdGUgdGhhdCBtZXNzYWdlcyB3aXRoIGEgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSBzdWNoIGFzIG9iamVjdHMgY2Fubm90IGJlIHJlc29sdmVkXHJcbiAqXHJcbiAqIEBwYXJhbSBvYmogLSBBIHRhcmdldCBvYmplY3QgdG8gYmUgcmVzb2x2ZWQgd2l0aCBwYXRoXHJcbiAqIEBwYXJhbSBwYXRoIC0gQSB7QGxpbmsgUGF0aCB8IHBhdGh9IHRvIHJlc29sdmUgdGhlIHZhbHVlIG9mIG1lc3NhZ2VcclxuICpcclxuICogQHJldHVybnMgQSByZXNvbHZlZCB7QGxpbmsgUGF0aFZhbHVlIHwgcGF0aCB2YWx1ZX1cclxuICpcclxuICogQFZ1ZUkxOG5HZW5lcmFsXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNvbHZlV2l0aEtleVZhbHVlKG9iaiwgcGF0aCkge1xyXG4gICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgPyBvYmpbcGF0aF0gOiBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBtZXNzYWdlIHJlc29sdmVyXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIFJlc29sdmVzIG1lc3NhZ2VzLiBtZXNzYWdlcyB3aXRoIGEgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSBzdWNoIGFzIG9iamVjdHMgY2FuIGJlIHJlc29sdmVkLiBUaGlzIHJlc29sdmVyIGlzIHVzZWQgaW4gVnVlSTE4biBhcyBkZWZhdWx0LlxyXG4gKlxyXG4gKiBAcGFyYW0gb2JqIC0gQSB0YXJnZXQgb2JqZWN0IHRvIGJlIHJlc29sdmVkIHdpdGggcGF0aFxyXG4gKiBAcGFyYW0gcGF0aCAtIEEge0BsaW5rIFBhdGggfCBwYXRofSB0byByZXNvbHZlIHRoZSB2YWx1ZSBvZiBtZXNzYWdlXHJcbiAqXHJcbiAqIEByZXR1cm5zIEEgcmVzb2x2ZWQge0BsaW5rIFBhdGhWYWx1ZSB8IHBhdGggdmFsdWV9XHJcbiAqXHJcbiAqIEBWdWVJMThuR2VuZXJhbFxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZVZhbHVlKG9iaiwgcGF0aCkge1xyXG4gICAgLy8gY2hlY2sgb2JqZWN0XHJcbiAgICBpZiAoIWlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIC8vIHBhcnNlIHBhdGhcclxuICAgIGxldCBoaXQgPSBjYWNoZS5nZXQocGF0aCk7XHJcbiAgICBpZiAoIWhpdCkge1xyXG4gICAgICAgIGhpdCA9IHBhcnNlKHBhdGgpO1xyXG4gICAgICAgIGlmIChoaXQpIHtcclxuICAgICAgICAgICAgY2FjaGUuc2V0KHBhdGgsIGhpdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gY2hlY2sgaGl0XHJcbiAgICBpZiAoIWhpdCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gcmVzb2x2ZSBwYXRoIHZhbHVlXHJcbiAgICBjb25zdCBsZW4gPSBoaXQubGVuZ3RoO1xyXG4gICAgbGV0IGxhc3QgPSBvYmo7XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICB3aGlsZSAoaSA8IGxlbikge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGxhc3RbaGl0W2ldXTtcclxuICAgICAgICBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhc3QgPSB2YWw7XHJcbiAgICAgICAgaSsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxhc3Q7XHJcbn1cblxuY29uc3QgREVGQVVMVF9NT0RJRklFUiA9IChzdHIpID0+IHN0cjtcclxuY29uc3QgREVGQVVMVF9NRVNTQUdFID0gKGN0eCkgPT4gJyc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcclxuY29uc3QgREVGQVVMVF9NRVNTQUdFX0RBVEFfVFlQRSA9ICd0ZXh0JztcclxuY29uc3QgREVGQVVMVF9OT1JNQUxJWkUgPSAodmFsdWVzKSA9PiB2YWx1ZXMubGVuZ3RoID09PSAwID8gJycgOiB2YWx1ZXMuam9pbignJyk7XHJcbmNvbnN0IERFRkFVTFRfSU5URVJQT0xBVEUgPSB0b0Rpc3BsYXlTdHJpbmc7XHJcbmZ1bmN0aW9uIHBsdXJhbERlZmF1bHQoY2hvaWNlLCBjaG9pY2VzTGVuZ3RoKSB7XHJcbiAgICBjaG9pY2UgPSBNYXRoLmFicyhjaG9pY2UpO1xyXG4gICAgaWYgKGNob2ljZXNMZW5ndGggPT09IDIpIHtcclxuICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgICAgICByZXR1cm4gY2hvaWNlXHJcbiAgICAgICAgICAgID8gY2hvaWNlID4gMVxyXG4gICAgICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgOiAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNob2ljZSA/IE1hdGgubWluKGNob2ljZSwgMikgOiAwO1xyXG59XHJcbmZ1bmN0aW9uIGdldFBsdXJhbEluZGV4KG9wdGlvbnMpIHtcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgY29uc3QgaW5kZXggPSBpc051bWJlcihvcHRpb25zLnBsdXJhbEluZGV4KVxyXG4gICAgICAgID8gb3B0aW9ucy5wbHVyYWxJbmRleFxyXG4gICAgICAgIDogLTE7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIHJldHVybiBvcHRpb25zLm5hbWVkICYmIChpc051bWJlcihvcHRpb25zLm5hbWVkLmNvdW50KSB8fCBpc051bWJlcihvcHRpb25zLm5hbWVkLm4pKVxyXG4gICAgICAgID8gaXNOdW1iZXIob3B0aW9ucy5uYW1lZC5jb3VudClcclxuICAgICAgICAgICAgPyBvcHRpb25zLm5hbWVkLmNvdW50XHJcbiAgICAgICAgICAgIDogaXNOdW1iZXIob3B0aW9ucy5uYW1lZC5uKVxyXG4gICAgICAgICAgICAgICAgPyBvcHRpb25zLm5hbWVkLm5cclxuICAgICAgICAgICAgICAgIDogaW5kZXhcclxuICAgICAgICA6IGluZGV4O1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWVkKHBsdXJhbEluZGV4LCBwcm9wcykge1xyXG4gICAgaWYgKCFwcm9wcy5jb3VudCkge1xyXG4gICAgICAgIHByb3BzLmNvdW50ID0gcGx1cmFsSW5kZXg7XHJcbiAgICB9XHJcbiAgICBpZiAoIXByb3BzLm4pIHtcclxuICAgICAgICBwcm9wcy5uID0gcGx1cmFsSW5kZXg7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlTWVzc2FnZUNvbnRleHQob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBsb2NhbGUgPSBvcHRpb25zLmxvY2FsZTtcclxuICAgIGNvbnN0IHBsdXJhbEluZGV4ID0gZ2V0UGx1cmFsSW5kZXgob3B0aW9ucyk7XHJcbiAgICBjb25zdCBwbHVyYWxSdWxlID0gaXNPYmplY3Qob3B0aW9ucy5wbHVyYWxSdWxlcykgJiZcclxuICAgICAgICBpc1N0cmluZyhsb2NhbGUpICYmXHJcbiAgICAgICAgaXNGdW5jdGlvbihvcHRpb25zLnBsdXJhbFJ1bGVzW2xvY2FsZV0pXHJcbiAgICAgICAgPyBvcHRpb25zLnBsdXJhbFJ1bGVzW2xvY2FsZV1cclxuICAgICAgICA6IHBsdXJhbERlZmF1bHQ7XHJcbiAgICBjb25zdCBvcmdQbHVyYWxSdWxlID0gaXNPYmplY3Qob3B0aW9ucy5wbHVyYWxSdWxlcykgJiZcclxuICAgICAgICBpc1N0cmluZyhsb2NhbGUpICYmXHJcbiAgICAgICAgaXNGdW5jdGlvbihvcHRpb25zLnBsdXJhbFJ1bGVzW2xvY2FsZV0pXHJcbiAgICAgICAgPyBwbHVyYWxEZWZhdWx0XHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBwbHVyYWwgPSAobWVzc2FnZXMpID0+IG1lc3NhZ2VzW3BsdXJhbFJ1bGUocGx1cmFsSW5kZXgsIG1lc3NhZ2VzLmxlbmd0aCwgb3JnUGx1cmFsUnVsZSldO1xyXG4gICAgY29uc3QgX2xpc3QgPSBvcHRpb25zLmxpc3QgfHwgW107XHJcbiAgICBjb25zdCBsaXN0ID0gKGluZGV4KSA9PiBfbGlzdFtpbmRleF07XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgY29uc3QgX25hbWVkID0gb3B0aW9ucy5uYW1lZCB8fCB7fTtcclxuICAgIGlzTnVtYmVyKG9wdGlvbnMucGx1cmFsSW5kZXgpICYmIG5vcm1hbGl6ZU5hbWVkKHBsdXJhbEluZGV4LCBfbmFtZWQpO1xyXG4gICAgY29uc3QgbmFtZWQgPSAoa2V5KSA9PiBfbmFtZWRba2V5XTtcclxuICAgIGZ1bmN0aW9uIG1lc3NhZ2Uoa2V5KSB7XHJcbiAgICAgICAgLy8gcHJldHRpZXItaWdub3JlXHJcbiAgICAgICAgY29uc3QgbXNnID0gaXNGdW5jdGlvbihvcHRpb25zLm1lc3NhZ2VzKVxyXG4gICAgICAgICAgICA/IG9wdGlvbnMubWVzc2FnZXMoa2V5KVxyXG4gICAgICAgICAgICA6IGlzT2JqZWN0KG9wdGlvbnMubWVzc2FnZXMpXHJcbiAgICAgICAgICAgICAgICA/IG9wdGlvbnMubWVzc2FnZXNba2V5XVxyXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gIW1zZ1xyXG4gICAgICAgICAgICA/IG9wdGlvbnMucGFyZW50XHJcbiAgICAgICAgICAgICAgICA/IG9wdGlvbnMucGFyZW50Lm1lc3NhZ2Uoa2V5KSAvLyByZXNvbHZlIGZyb20gcGFyZW50IG1lc3NhZ2VzXHJcbiAgICAgICAgICAgICAgICA6IERFRkFVTFRfTUVTU0FHRVxyXG4gICAgICAgICAgICA6IG1zZztcclxuICAgIH1cclxuICAgIGNvbnN0IF9tb2RpZmllciA9IChuYW1lKSA9PiBvcHRpb25zLm1vZGlmaWVyc1xyXG4gICAgICAgID8gb3B0aW9ucy5tb2RpZmllcnNbbmFtZV1cclxuICAgICAgICA6IERFRkFVTFRfTU9ESUZJRVI7XHJcbiAgICBjb25zdCBub3JtYWxpemUgPSBpc1BsYWluT2JqZWN0KG9wdGlvbnMucHJvY2Vzc29yKSAmJiBpc0Z1bmN0aW9uKG9wdGlvbnMucHJvY2Vzc29yLm5vcm1hbGl6ZSlcclxuICAgICAgICA/IG9wdGlvbnMucHJvY2Vzc29yLm5vcm1hbGl6ZVxyXG4gICAgICAgIDogREVGQVVMVF9OT1JNQUxJWkU7XHJcbiAgICBjb25zdCBpbnRlcnBvbGF0ZSA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucy5wcm9jZXNzb3IpICYmXHJcbiAgICAgICAgaXNGdW5jdGlvbihvcHRpb25zLnByb2Nlc3Nvci5pbnRlcnBvbGF0ZSlcclxuICAgICAgICA/IG9wdGlvbnMucHJvY2Vzc29yLmludGVycG9sYXRlXHJcbiAgICAgICAgOiBERUZBVUxUX0lOVEVSUE9MQVRFO1xyXG4gICAgY29uc3QgbGlua2VkID0gKGtleSwgbW9kaWZpZXIpID0+IHtcclxuICAgICAgICBjb25zdCBtc2cgPSBtZXNzYWdlKGtleSkoY3R4KTtcclxuICAgICAgICByZXR1cm4gaXNTdHJpbmcobW9kaWZpZXIpID8gX21vZGlmaWVyKG1vZGlmaWVyKShtc2cpIDogbXNnO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHR5cGUgPSBpc1BsYWluT2JqZWN0KG9wdGlvbnMucHJvY2Vzc29yKSAmJiBpc1N0cmluZyhvcHRpb25zLnByb2Nlc3Nvci50eXBlKVxyXG4gICAgICAgID8gb3B0aW9ucy5wcm9jZXNzb3IudHlwZVxyXG4gICAgICAgIDogREVGQVVMVF9NRVNTQUdFX0RBVEFfVFlQRTtcclxuICAgIGNvbnN0IGN0eCA9IHtcclxuICAgICAgICBbXCJsaXN0XCIgLyogTElTVCAqL106IGxpc3QsXHJcbiAgICAgICAgW1wibmFtZWRcIiAvKiBOQU1FRCAqL106IG5hbWVkLFxyXG4gICAgICAgIFtcInBsdXJhbFwiIC8qIFBMVVJBTCAqL106IHBsdXJhbCxcclxuICAgICAgICBbXCJsaW5rZWRcIiAvKiBMSU5LRUQgKi9dOiBsaW5rZWQsXHJcbiAgICAgICAgW1wibWVzc2FnZVwiIC8qIE1FU1NBR0UgKi9dOiBtZXNzYWdlLFxyXG4gICAgICAgIFtcInR5cGVcIiAvKiBUWVBFICovXTogdHlwZSxcclxuICAgICAgICBbXCJpbnRlcnBvbGF0ZVwiIC8qIElOVEVSUE9MQVRFICovXTogaW50ZXJwb2xhdGUsXHJcbiAgICAgICAgW1wibm9ybWFsaXplXCIgLyogTk9STUFMSVpFICovXTogbm9ybWFsaXplXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGN0eDtcclxufVxuXG5sZXQgZGV2dG9vbHMgPSBudWxsO1xyXG5mdW5jdGlvbiBzZXREZXZUb29sc0hvb2soaG9vaykge1xyXG4gICAgZGV2dG9vbHMgPSBob29rO1xyXG59XHJcbmZ1bmN0aW9uIGdldERldlRvb2xzSG9vaygpIHtcclxuICAgIHJldHVybiBkZXZ0b29scztcclxufVxyXG5mdW5jdGlvbiBpbml0STE4bkRldlRvb2xzKGkxOG4sIHZlcnNpb24sIG1ldGEpIHtcclxuICAgIC8vIFRPRE86IHF1ZXVlIGlmIGRldnRvb2xzIGlzIHVuZGVmaW5lZFxyXG4gICAgZGV2dG9vbHMgJiZcclxuICAgICAgICBkZXZ0b29scy5lbWl0KEludGxpZnlEZXZUb29sc0hvb2tzLkkxOG5Jbml0LCB7XHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgaTE4bixcclxuICAgICAgICAgICAgdmVyc2lvbixcclxuICAgICAgICAgICAgbWV0YVxyXG4gICAgICAgIH0pO1xyXG59XHJcbmNvbnN0IHRyYW5zbGF0ZURldlRvb2xzID0gLyogI19fUFVSRV9fKi8gY3JlYXRlRGV2VG9vbHNIb29rKEludGxpZnlEZXZUb29sc0hvb2tzLkZ1bmN0aW9uVHJhbnNsYXRlKTtcclxuZnVuY3Rpb24gY3JlYXRlRGV2VG9vbHNIb29rKGhvb2spIHtcclxuICAgIHJldHVybiAocGF5bG9hZHMpID0+IGRldnRvb2xzICYmIGRldnRvb2xzLmVtaXQoaG9vaywgcGF5bG9hZHMpO1xyXG59XG5cbmNvbnN0IENvcmVXYXJuQ29kZXMgPSB7XHJcbiAgICBOT1RfRk9VTkRfS0VZOiAxLFxyXG4gICAgRkFMTEJBQ0tfVE9fVFJBTlNMQVRFOiAyLFxyXG4gICAgQ0FOTk9UX0ZPUk1BVF9OVU1CRVI6IDMsXHJcbiAgICBGQUxMQkFDS19UT19OVU1CRVJfRk9STUFUOiA0LFxyXG4gICAgQ0FOTk9UX0ZPUk1BVF9EQVRFOiA1LFxyXG4gICAgRkFMTEJBQ0tfVE9fREFURV9GT1JNQVQ6IDYsXHJcbiAgICBfX0VYVEVORF9QT0lOVF9fOiA3XHJcbn07XHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuY29uc3Qgd2Fybk1lc3NhZ2VzID0ge1xyXG4gICAgW0NvcmVXYXJuQ29kZXMuTk9UX0ZPVU5EX0tFWV06IGBOb3QgZm91bmQgJ3trZXl9JyBrZXkgaW4gJ3tsb2NhbGV9JyBsb2NhbGUgbWVzc2FnZXMuYCxcclxuICAgIFtDb3JlV2FybkNvZGVzLkZBTExCQUNLX1RPX1RSQU5TTEFURV06IGBGYWxsIGJhY2sgdG8gdHJhbnNsYXRlICd7a2V5fScga2V5IHdpdGggJ3t0YXJnZXR9JyBsb2NhbGUuYCxcclxuICAgIFtDb3JlV2FybkNvZGVzLkNBTk5PVF9GT1JNQVRfTlVNQkVSXTogYENhbm5vdCBmb3JtYXQgYSBudW1iZXIgdmFsdWUgZHVlIHRvIG5vdCBzdXBwb3J0ZWQgSW50bC5OdW1iZXJGb3JtYXQuYCxcclxuICAgIFtDb3JlV2FybkNvZGVzLkZBTExCQUNLX1RPX05VTUJFUl9GT1JNQVRdOiBgRmFsbCBiYWNrIHRvIG51bWJlciBmb3JtYXQgJ3trZXl9JyBrZXkgd2l0aCAne3RhcmdldH0nIGxvY2FsZS5gLFxyXG4gICAgW0NvcmVXYXJuQ29kZXMuQ0FOTk9UX0ZPUk1BVF9EQVRFXTogYENhbm5vdCBmb3JtYXQgYSBkYXRlIHZhbHVlIGR1ZSB0byBub3Qgc3VwcG9ydGVkIEludGwuRGF0ZVRpbWVGb3JtYXQuYCxcclxuICAgIFtDb3JlV2FybkNvZGVzLkZBTExCQUNLX1RPX0RBVEVfRk9STUFUXTogYEZhbGwgYmFjayB0byBkYXRldGltZSBmb3JtYXQgJ3trZXl9JyBrZXkgd2l0aCAne3RhcmdldH0nIGxvY2FsZS5gXHJcbn07XHJcbmZ1bmN0aW9uIGdldFdhcm5NZXNzYWdlKGNvZGUsIC4uLmFyZ3MpIHtcclxuICAgIHJldHVybiBmb3JtYXQod2Fybk1lc3NhZ2VzW2NvZGVdLCAuLi5hcmdzKTtcclxufVxuXG4vKipcclxuICogRmFsbGJhY2sgd2l0aCBzaW1wbGUgaW1wbGVtZW5hdGlvblxyXG4gKlxyXG4gKiBAcmVtYXJrc1xyXG4gKiBBIGZhbGxiYWNrIGxvY2FsZSBmdW5jdGlvbiBpbXBsZW1lbnRlZCB3aXRoIGEgc2ltcGxlIGZhbGxiYWNrIGFsZ29yaXRobS5cclxuICpcclxuICogQmFzaWNhbGx5LCBpdCByZXR1cm5zIHRoZSB2YWx1ZSBhcyBzcGVjaWZpZWQgaW4gdGhlIGBmYWxsYmFja0xvY2FsZWAgcHJvcHMsIGFuZCBpcyBwcm9jZXNzZWQgd2l0aCB0aGUgZmFsbGJhY2sgaW5zaWRlIGludGxpZnkuXHJcbiAqXHJcbiAqIEBwYXJhbSBjdHggLSBBIHtAbGluayBDb3JlQ29udGV4dCB8IGNvbnRleHR9XHJcbiAqIEBwYXJhbSBmYWxsYmFjayAtIEEge0BsaW5rIEZhbGxiYWNrTG9jYWxlIHwgZmFsbGJhY2sgbG9jYWxlfVxyXG4gKiBAcGFyYW0gc3RhcnQgLSBBIHN0YXJ0aW5nIHtAbGluayBMb2NhbGUgfCBsb2NhbGV9XHJcbiAqXHJcbiAqIEByZXR1cm5zIEZhbGxiYWNrIGxvY2FsZXNcclxuICpcclxuICogQFZ1ZUkxOG5HZW5lcmFsXHJcbiAqL1xyXG5mdW5jdGlvbiBmYWxsYmFja1dpdGhTaW1wbGUoY3R4LCBmYWxsYmFjaywgc3RhcnQgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuKSB7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIHJldHVybiBbLi4ubmV3IFNldChbXHJcbiAgICAgICAgICAgIHN0YXJ0LFxyXG4gICAgICAgICAgICAuLi4oaXNBcnJheShmYWxsYmFjaylcclxuICAgICAgICAgICAgICAgID8gZmFsbGJhY2tcclxuICAgICAgICAgICAgICAgIDogaXNPYmplY3QoZmFsbGJhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgPyBPYmplY3Qua2V5cyhmYWxsYmFjaylcclxuICAgICAgICAgICAgICAgICAgICA6IGlzU3RyaW5nKGZhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtmYWxsYmFja11cclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbc3RhcnRdKVxyXG4gICAgICAgIF0pXTtcclxufVxyXG4vKipcclxuICogRmFsbGJhY2sgd2l0aCBsb2NhbGUgY2hhaW5cclxuICpcclxuICogQHJlbWFya3NcclxuICogQSBmYWxsYmFjayBsb2NhbGUgZnVuY3Rpb24gaW1wbGVtZW50ZWQgd2l0aCBhIGZhbGxiYWNrIGNoYWluIGFsZ29yaXRobS4gSXQncyB1c2VkIGluIFZ1ZUkxOG4gYXMgZGVmYXVsdC5cclxuICpcclxuICogQHBhcmFtIGN0eCAtIEEge0BsaW5rIENvcmVDb250ZXh0IHwgY29udGV4dH1cclxuICogQHBhcmFtIGZhbGxiYWNrIC0gQSB7QGxpbmsgRmFsbGJhY2tMb2NhbGUgfCBmYWxsYmFjayBsb2NhbGV9XHJcbiAqIEBwYXJhbSBzdGFydCAtIEEgc3RhcnRpbmcge0BsaW5rIExvY2FsZSB8IGxvY2FsZX1cclxuICpcclxuICogQHJldHVybnMgRmFsbGJhY2sgbG9jYWxlc1xyXG4gKlxyXG4gKiBAVnVlSTE4blNlZSBbRmFsbGJhY2tpbmddKC4uL2d1aWRlL2Vzc2VudGlhbHMvZmFsbGJhY2spXHJcbiAqXHJcbiAqIEBWdWVJMThuR2VuZXJhbFxyXG4gKi9cclxuZnVuY3Rpb24gZmFsbGJhY2tXaXRoTG9jYWxlQ2hhaW4oY3R4LCBmYWxsYmFjaywgc3RhcnQpIHtcclxuICAgIGNvbnN0IHN0YXJ0TG9jYWxlID0gaXNTdHJpbmcoc3RhcnQpID8gc3RhcnQgOiBERUZBVUxUX0xPQ0FMRTtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjdHg7XHJcbiAgICBpZiAoIWNvbnRleHQuX19sb2NhbGVDaGFpbkNhY2hlKSB7XHJcbiAgICAgICAgY29udGV4dC5fX2xvY2FsZUNoYWluQ2FjaGUgPSBuZXcgTWFwKCk7XHJcbiAgICB9XHJcbiAgICBsZXQgY2hhaW4gPSBjb250ZXh0Ll9fbG9jYWxlQ2hhaW5DYWNoZS5nZXQoc3RhcnRMb2NhbGUpO1xyXG4gICAgaWYgKCFjaGFpbikge1xyXG4gICAgICAgIGNoYWluID0gW107XHJcbiAgICAgICAgLy8gZmlyc3QgYmxvY2sgZGVmaW5lZCBieSBzdGFydFxyXG4gICAgICAgIGxldCBibG9jayA9IFtzdGFydF07XHJcbiAgICAgICAgLy8gd2hpbGUgYW55IGludGVydmVuaW5nIGJsb2NrIGZvdW5kXHJcbiAgICAgICAgd2hpbGUgKGlzQXJyYXkoYmxvY2spKSB7XHJcbiAgICAgICAgICAgIGJsb2NrID0gYXBwZW5kQmxvY2tUb0NoYWluKGNoYWluLCBibG9jaywgZmFsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgICAgICAvLyBsYXN0IGJsb2NrIGRlZmluZWQgYnkgZGVmYXVsdFxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRzID0gaXNBcnJheShmYWxsYmFjaykgfHwgIWlzUGxhaW5PYmplY3QoZmFsbGJhY2spXHJcbiAgICAgICAgICAgID8gZmFsbGJhY2tcclxuICAgICAgICAgICAgOiBmYWxsYmFja1snZGVmYXVsdCddXHJcbiAgICAgICAgICAgICAgICA/IGZhbGxiYWNrWydkZWZhdWx0J11cclxuICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAvLyBjb252ZXJ0IGRlZmF1bHRzIHRvIGFycmF5XHJcbiAgICAgICAgYmxvY2sgPSBpc1N0cmluZyhkZWZhdWx0cykgPyBbZGVmYXVsdHNdIDogZGVmYXVsdHM7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoYmxvY2spKSB7XHJcbiAgICAgICAgICAgIGFwcGVuZEJsb2NrVG9DaGFpbihjaGFpbiwgYmxvY2ssIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5fX2xvY2FsZUNoYWluQ2FjaGUuc2V0KHN0YXJ0TG9jYWxlLCBjaGFpbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2hhaW47XHJcbn1cclxuZnVuY3Rpb24gYXBwZW5kQmxvY2tUb0NoYWluKGNoYWluLCBibG9jaywgYmxvY2tzKSB7XHJcbiAgICBsZXQgZm9sbG93ID0gdHJ1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxvY2subGVuZ3RoICYmIGlzQm9vbGVhbihmb2xsb3cpOyBpKyspIHtcclxuICAgICAgICBjb25zdCBsb2NhbGUgPSBibG9ja1tpXTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcobG9jYWxlKSkge1xyXG4gICAgICAgICAgICBmb2xsb3cgPSBhcHBlbmRMb2NhbGVUb0NoYWluKGNoYWluLCBibG9ja1tpXSwgYmxvY2tzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9sbG93O1xyXG59XHJcbmZ1bmN0aW9uIGFwcGVuZExvY2FsZVRvQ2hhaW4oY2hhaW4sIGxvY2FsZSwgYmxvY2tzKSB7XHJcbiAgICBsZXQgZm9sbG93O1xyXG4gICAgY29uc3QgdG9rZW5zID0gbG9jYWxlLnNwbGl0KCctJyk7XHJcbiAgICBkbyB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdG9rZW5zLmpvaW4oJy0nKTtcclxuICAgICAgICBmb2xsb3cgPSBhcHBlbmRJdGVtVG9DaGFpbihjaGFpbiwgdGFyZ2V0LCBibG9ja3MpO1xyXG4gICAgICAgIHRva2Vucy5zcGxpY2UoLTEsIDEpO1xyXG4gICAgfSB3aGlsZSAodG9rZW5zLmxlbmd0aCAmJiBmb2xsb3cgPT09IHRydWUpO1xyXG4gICAgcmV0dXJuIGZvbGxvdztcclxufVxyXG5mdW5jdGlvbiBhcHBlbmRJdGVtVG9DaGFpbihjaGFpbiwgdGFyZ2V0LCBibG9ja3MpIHtcclxuICAgIGxldCBmb2xsb3cgPSBmYWxzZTtcclxuICAgIGlmICghY2hhaW4uaW5jbHVkZXModGFyZ2V0KSkge1xyXG4gICAgICAgIGZvbGxvdyA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICBmb2xsb3cgPSB0YXJnZXRbdGFyZ2V0Lmxlbmd0aCAtIDFdICE9PSAnISc7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IHRhcmdldC5yZXBsYWNlKC8hL2csICcnKTtcclxuICAgICAgICAgICAgY2hhaW4ucHVzaChsb2NhbGUpO1xyXG4gICAgICAgICAgICBpZiAoKGlzQXJyYXkoYmxvY2tzKSB8fCBpc1BsYWluT2JqZWN0KGJsb2NrcykpICYmXHJcbiAgICAgICAgICAgICAgICBibG9ja3NbbG9jYWxlXSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgICAgICAgZm9sbG93ID0gYmxvY2tzW2xvY2FsZV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9sbG93O1xyXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyoqXHJcbiAqIEludGxpZnkgY29yZS1iYXNlIHZlcnNpb25cclxuICogQGludGVybmFsXHJcbiAqL1xyXG5jb25zdCBWRVJTSU9OID0gJzkuMi4wLWJldGEuMzQnO1xyXG5jb25zdCBOT1RfUkVPU0xWRUQgPSAtMTtcclxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSAnZW4tVVMnO1xyXG5jb25zdCBNSVNTSU5HX1JFU09MVkVfVkFMVUUgPSAnJztcclxuZnVuY3Rpb24gZ2V0RGVmYXVsdExpbmtlZE1vZGlmaWVycygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdXBwZXI6ICh2YWwpID0+IChpc1N0cmluZyh2YWwpID8gdmFsLnRvVXBwZXJDYXNlKCkgOiB2YWwpLFxyXG4gICAgICAgIGxvd2VyOiAodmFsKSA9PiAoaXNTdHJpbmcodmFsKSA/IHZhbC50b0xvd2VyQ2FzZSgpIDogdmFsKSxcclxuICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgICAgICBjYXBpdGFsaXplOiAodmFsKSA9PiAoaXNTdHJpbmcodmFsKVxyXG4gICAgICAgICAgICA/IGAke3ZhbC5jaGFyQXQoMCkudG9Mb2NhbGVVcHBlckNhc2UoKX0ke3ZhbC5zdWJzdHIoMSl9YFxyXG4gICAgICAgICAgICA6IHZhbClcclxuICAgIH07XHJcbn1cclxubGV0IF9jb21waWxlcjtcclxuZnVuY3Rpb24gcmVnaXN0ZXJNZXNzYWdlQ29tcGlsZXIoY29tcGlsZXIpIHtcclxuICAgIF9jb21waWxlciA9IGNvbXBpbGVyO1xyXG59XHJcbmxldCBfcmVzb2x2ZXI7XHJcbi8qKlxyXG4gKiBSZWdpc3RlciB0aGUgbWVzc2FnZSByZXNvbHZlclxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzb2x2ZXIgLSBBIHtAbGluayBNZXNzYWdlUmVzb2x2ZXJ9IGZ1bmN0aW9uXHJcbiAqXHJcbiAqIEBWdWVJMThuR2VuZXJhbFxyXG4gKi9cclxuZnVuY3Rpb24gcmVnaXN0ZXJNZXNzYWdlUmVzb2x2ZXIocmVzb2x2ZXIpIHtcclxuICAgIF9yZXNvbHZlciA9IHJlc29sdmVyO1xyXG59XHJcbmxldCBfZmFsbGJhY2tlcjtcclxuLyoqXHJcbiAqIFJlZ2lzdGVyIHRoZSBsb2NhbGUgZmFsbGJhY2tlclxyXG4gKlxyXG4gKiBAcGFyYW0gZmFsbGJhY2tlciAtIEEge0BsaW5rIExvY2FsZUZhbGxiYWNrZXJ9IGZ1bmN0aW9uXHJcbiAqXHJcbiAqIEBWdWVJMThuR2VuZXJhbFxyXG4gKi9cclxuZnVuY3Rpb24gcmVnaXN0ZXJMb2NhbGVGYWxsYmFja2VyKGZhbGxiYWNrZXIpIHtcclxuICAgIF9mYWxsYmFja2VyID0gZmFsbGJhY2tlcjtcclxufVxyXG4vLyBBZGRpdGlvbmFsIE1ldGEgZm9yIEludGxpZnkgRGV2VG9vbHNcclxubGV0IF9hZGRpdGlvbmFsTWV0YSA9IG51bGw7XHJcbmNvbnN0IHNldEFkZGl0aW9uYWxNZXRhID0gIChtZXRhKSA9PiB7XHJcbiAgICBfYWRkaXRpb25hbE1ldGEgPSBtZXRhO1xyXG59O1xyXG5jb25zdCBnZXRBZGRpdGlvbmFsTWV0YSA9ICAoKSA9PiBfYWRkaXRpb25hbE1ldGE7XHJcbmxldCBfZmFsbGJhY2tDb250ZXh0ID0gbnVsbDtcclxuY29uc3Qgc2V0RmFsbGJhY2tDb250ZXh0ID0gKGNvbnRleHQpID0+IHtcclxuICAgIF9mYWxsYmFja0NvbnRleHQgPSBjb250ZXh0O1xyXG59O1xyXG5jb25zdCBnZXRGYWxsYmFja0NvbnRleHQgPSAoKSA9PiBfZmFsbGJhY2tDb250ZXh0O1xyXG4vLyBJRCBmb3IgQ29yZUNvbnRleHRcclxubGV0IF9jaWQgPSAwO1xyXG5mdW5jdGlvbiBjcmVhdGVDb3JlQ29udGV4dChvcHRpb25zID0ge30pIHtcclxuICAgIC8vIHNldHVwIG9wdGlvbnNcclxuICAgIGNvbnN0IHZlcnNpb24gPSBpc1N0cmluZyhvcHRpb25zLnZlcnNpb24pID8gb3B0aW9ucy52ZXJzaW9uIDogVkVSU0lPTjtcclxuICAgIGNvbnN0IGxvY2FsZSA9IGlzU3RyaW5nKG9wdGlvbnMubG9jYWxlKSA/IG9wdGlvbnMubG9jYWxlIDogREVGQVVMVF9MT0NBTEU7XHJcbiAgICBjb25zdCBmYWxsYmFja0xvY2FsZSA9IGlzQXJyYXkob3B0aW9ucy5mYWxsYmFja0xvY2FsZSkgfHxcclxuICAgICAgICBpc1BsYWluT2JqZWN0KG9wdGlvbnMuZmFsbGJhY2tMb2NhbGUpIHx8XHJcbiAgICAgICAgaXNTdHJpbmcob3B0aW9ucy5mYWxsYmFja0xvY2FsZSkgfHxcclxuICAgICAgICBvcHRpb25zLmZhbGxiYWNrTG9jYWxlID09PSBmYWxzZVxyXG4gICAgICAgID8gb3B0aW9ucy5mYWxsYmFja0xvY2FsZVxyXG4gICAgICAgIDogbG9jYWxlO1xyXG4gICAgY29uc3QgbWVzc2FnZXMgPSBpc1BsYWluT2JqZWN0KG9wdGlvbnMubWVzc2FnZXMpXHJcbiAgICAgICAgPyBvcHRpb25zLm1lc3NhZ2VzXHJcbiAgICAgICAgOiB7IFtsb2NhbGVdOiB7fSB9O1xyXG4gICAgY29uc3QgZGF0ZXRpbWVGb3JtYXRzID0gaXNQbGFpbk9iamVjdChvcHRpb25zLmRhdGV0aW1lRm9ybWF0cylcclxuICAgICAgICAgICAgPyBvcHRpb25zLmRhdGV0aW1lRm9ybWF0c1xyXG4gICAgICAgICAgICA6IHsgW2xvY2FsZV06IHt9IH1cclxuICAgICAgICA7XHJcbiAgICBjb25zdCBudW1iZXJGb3JtYXRzID0gaXNQbGFpbk9iamVjdChvcHRpb25zLm51bWJlckZvcm1hdHMpXHJcbiAgICAgICAgICAgID8gb3B0aW9ucy5udW1iZXJGb3JtYXRzXHJcbiAgICAgICAgICAgIDogeyBbbG9jYWxlXToge30gfVxyXG4gICAgICAgIDtcclxuICAgIGNvbnN0IG1vZGlmaWVycyA9IGFzc2lnbih7fSwgb3B0aW9ucy5tb2RpZmllcnMgfHwge30sIGdldERlZmF1bHRMaW5rZWRNb2RpZmllcnMoKSk7XHJcbiAgICBjb25zdCBwbHVyYWxSdWxlcyA9IG9wdGlvbnMucGx1cmFsUnVsZXMgfHwge307XHJcbiAgICBjb25zdCBtaXNzaW5nID0gaXNGdW5jdGlvbihvcHRpb25zLm1pc3NpbmcpID8gb3B0aW9ucy5taXNzaW5nIDogbnVsbDtcclxuICAgIGNvbnN0IG1pc3NpbmdXYXJuID0gaXNCb29sZWFuKG9wdGlvbnMubWlzc2luZ1dhcm4pIHx8IGlzUmVnRXhwKG9wdGlvbnMubWlzc2luZ1dhcm4pXHJcbiAgICAgICAgPyBvcHRpb25zLm1pc3NpbmdXYXJuXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgY29uc3QgZmFsbGJhY2tXYXJuID0gaXNCb29sZWFuKG9wdGlvbnMuZmFsbGJhY2tXYXJuKSB8fCBpc1JlZ0V4cChvcHRpb25zLmZhbGxiYWNrV2FybilcclxuICAgICAgICA/IG9wdGlvbnMuZmFsbGJhY2tXYXJuXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgY29uc3QgZmFsbGJhY2tGb3JtYXQgPSAhIW9wdGlvbnMuZmFsbGJhY2tGb3JtYXQ7XHJcbiAgICBjb25zdCB1bnJlc29sdmluZyA9ICEhb3B0aW9ucy51bnJlc29sdmluZztcclxuICAgIGNvbnN0IHBvc3RUcmFuc2xhdGlvbiA9IGlzRnVuY3Rpb24ob3B0aW9ucy5wb3N0VHJhbnNsYXRpb24pXHJcbiAgICAgICAgPyBvcHRpb25zLnBvc3RUcmFuc2xhdGlvblxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IHByb2Nlc3NvciA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucy5wcm9jZXNzb3IpID8gb3B0aW9ucy5wcm9jZXNzb3IgOiBudWxsO1xyXG4gICAgY29uc3Qgd2Fybkh0bWxNZXNzYWdlID0gaXNCb29sZWFuKG9wdGlvbnMud2Fybkh0bWxNZXNzYWdlKVxyXG4gICAgICAgID8gb3B0aW9ucy53YXJuSHRtbE1lc3NhZ2VcclxuICAgICAgICA6IHRydWU7XHJcbiAgICBjb25zdCBlc2NhcGVQYXJhbWV0ZXIgPSAhIW9wdGlvbnMuZXNjYXBlUGFyYW1ldGVyO1xyXG4gICAgY29uc3QgbWVzc2FnZUNvbXBpbGVyID0gaXNGdW5jdGlvbihvcHRpb25zLm1lc3NhZ2VDb21waWxlcilcclxuICAgICAgICA/IG9wdGlvbnMubWVzc2FnZUNvbXBpbGVyXHJcbiAgICAgICAgOiBfY29tcGlsZXI7XHJcbiAgICBjb25zdCBtZXNzYWdlUmVzb2x2ZXIgPSBpc0Z1bmN0aW9uKG9wdGlvbnMubWVzc2FnZVJlc29sdmVyKVxyXG4gICAgICAgID8gb3B0aW9ucy5tZXNzYWdlUmVzb2x2ZXJcclxuICAgICAgICA6IF9yZXNvbHZlciB8fCByZXNvbHZlV2l0aEtleVZhbHVlO1xyXG4gICAgY29uc3QgbG9jYWxlRmFsbGJhY2tlciA9IGlzRnVuY3Rpb24ob3B0aW9ucy5sb2NhbGVGYWxsYmFja2VyKVxyXG4gICAgICAgID8gb3B0aW9ucy5sb2NhbGVGYWxsYmFja2VyXHJcbiAgICAgICAgOiBfZmFsbGJhY2tlciB8fCBmYWxsYmFja1dpdGhTaW1wbGU7XHJcbiAgICBjb25zdCBmYWxsYmFja0NvbnRleHQgPSBpc09iamVjdChvcHRpb25zLmZhbGxiYWNrQ29udGV4dClcclxuICAgICAgICA/IG9wdGlvbnMuZmFsbGJhY2tDb250ZXh0XHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBvbldhcm4gPSBpc0Z1bmN0aW9uKG9wdGlvbnMub25XYXJuKSA/IG9wdGlvbnMub25XYXJuIDogd2FybjtcclxuICAgIC8vIHNldHVwIGludGVybmFsIG9wdGlvbnNcclxuICAgIGNvbnN0IGludGVybmFsT3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBfX2RhdGV0aW1lRm9ybWF0dGVycyA9IGlzT2JqZWN0KGludGVybmFsT3B0aW9ucy5fX2RhdGV0aW1lRm9ybWF0dGVycylcclxuICAgICAgICAgICAgPyBpbnRlcm5hbE9wdGlvbnMuX19kYXRldGltZUZvcm1hdHRlcnNcclxuICAgICAgICAgICAgOiBuZXcgTWFwKClcclxuICAgICAgICA7XHJcbiAgICBjb25zdCBfX251bWJlckZvcm1hdHRlcnMgPSBpc09iamVjdChpbnRlcm5hbE9wdGlvbnMuX19udW1iZXJGb3JtYXR0ZXJzKVxyXG4gICAgICAgICAgICA/IGludGVybmFsT3B0aW9ucy5fX251bWJlckZvcm1hdHRlcnNcclxuICAgICAgICAgICAgOiBuZXcgTWFwKClcclxuICAgICAgICA7XHJcbiAgICBjb25zdCBfX21ldGEgPSBpc09iamVjdChpbnRlcm5hbE9wdGlvbnMuX19tZXRhKSA/IGludGVybmFsT3B0aW9ucy5fX21ldGEgOiB7fTtcclxuICAgIF9jaWQrKztcclxuICAgIGNvbnN0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgdmVyc2lvbixcclxuICAgICAgICBjaWQ6IF9jaWQsXHJcbiAgICAgICAgbG9jYWxlLFxyXG4gICAgICAgIGZhbGxiYWNrTG9jYWxlLFxyXG4gICAgICAgIG1lc3NhZ2VzLFxyXG4gICAgICAgIG1vZGlmaWVycyxcclxuICAgICAgICBwbHVyYWxSdWxlcyxcclxuICAgICAgICBtaXNzaW5nLFxyXG4gICAgICAgIG1pc3NpbmdXYXJuLFxyXG4gICAgICAgIGZhbGxiYWNrV2FybixcclxuICAgICAgICBmYWxsYmFja0Zvcm1hdCxcclxuICAgICAgICB1bnJlc29sdmluZyxcclxuICAgICAgICBwb3N0VHJhbnNsYXRpb24sXHJcbiAgICAgICAgcHJvY2Vzc29yLFxyXG4gICAgICAgIHdhcm5IdG1sTWVzc2FnZSxcclxuICAgICAgICBlc2NhcGVQYXJhbWV0ZXIsXHJcbiAgICAgICAgbWVzc2FnZUNvbXBpbGVyLFxyXG4gICAgICAgIG1lc3NhZ2VSZXNvbHZlcixcclxuICAgICAgICBsb2NhbGVGYWxsYmFja2VyLFxyXG4gICAgICAgIGZhbGxiYWNrQ29udGV4dCxcclxuICAgICAgICBvbldhcm4sXHJcbiAgICAgICAgX19tZXRhXHJcbiAgICB9O1xyXG4gICAge1xyXG4gICAgICAgIGNvbnRleHQuZGF0ZXRpbWVGb3JtYXRzID0gZGF0ZXRpbWVGb3JtYXRzO1xyXG4gICAgICAgIGNvbnRleHQubnVtYmVyRm9ybWF0cyA9IG51bWJlckZvcm1hdHM7XHJcbiAgICAgICAgY29udGV4dC5fX2RhdGV0aW1lRm9ybWF0dGVycyA9IF9fZGF0ZXRpbWVGb3JtYXR0ZXJzO1xyXG4gICAgICAgIGNvbnRleHQuX19udW1iZXJGb3JtYXR0ZXJzID0gX19udW1iZXJGb3JtYXR0ZXJzO1xyXG4gICAgfVxyXG4gICAgLy8gZm9yIHZ1ZS1kZXZ0b29scyB0aW1lbGluZSBldmVudFxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnRleHQuX192X2VtaXR0ZXIgPVxyXG4gICAgICAgICAgICBpbnRlcm5hbE9wdGlvbnMuX192X2VtaXR0ZXIgIT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgPyBpbnRlcm5hbE9wdGlvbnMuX192X2VtaXR0ZXJcclxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgLy8gTk9URTogZXhwZXJpbWVudGFsICEhXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fSU5UTElGWV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICBpbml0STE4bkRldlRvb2xzKGNvbnRleHQsIHZlcnNpb24sIF9fbWV0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGV4dDtcclxufVxyXG4vKiogQGludGVybmFsICovXHJcbmZ1bmN0aW9uIGlzVHJhbnNsYXRlRmFsbGJhY2tXYXJuKGZhbGxiYWNrLCBrZXkpIHtcclxuICAgIHJldHVybiBmYWxsYmFjayBpbnN0YW5jZW9mIFJlZ0V4cCA/IGZhbGxiYWNrLnRlc3Qoa2V5KSA6IGZhbGxiYWNrO1xyXG59XHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZnVuY3Rpb24gaXNUcmFuc2xhdGVNaXNzaW5nV2FybihtaXNzaW5nLCBrZXkpIHtcclxuICAgIHJldHVybiBtaXNzaW5nIGluc3RhbmNlb2YgUmVnRXhwID8gbWlzc2luZy50ZXN0KGtleSkgOiBtaXNzaW5nO1xyXG59XHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZnVuY3Rpb24gaGFuZGxlTWlzc2luZyhjb250ZXh0LCBrZXksIGxvY2FsZSwgbWlzc2luZ1dhcm4sIHR5cGUpIHtcclxuICAgIGNvbnN0IHsgbWlzc2luZywgb25XYXJuIH0gPSBjb250ZXh0O1xyXG4gICAgLy8gZm9yIHZ1ZS1kZXZ0b29scyB0aW1lbGluZSBldmVudFxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGVtaXR0ZXIgPSBjb250ZXh0Ll9fdl9lbWl0dGVyO1xyXG4gICAgICAgIGlmIChlbWl0dGVyKSB7XHJcbiAgICAgICAgICAgIGVtaXR0ZXIuZW1pdChcIm1pc3NpbmdcIiAvKiBNSVNTSU5HICovLCB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbGUsXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICAgICAgZ3JvdXBJZDogYCR7dHlwZX06JHtrZXl9YFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobWlzc2luZyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IG1pc3NpbmcoY29udGV4dCwgbG9jYWxlLCBrZXksIHR5cGUpO1xyXG4gICAgICAgIHJldHVybiBpc1N0cmluZyhyZXQpID8gcmV0IDoga2V5O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc1RyYW5zbGF0ZU1pc3NpbmdXYXJuKG1pc3NpbmdXYXJuLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIG9uV2FybihnZXRXYXJuTWVzc2FnZShDb3JlV2FybkNvZGVzLk5PVF9GT1VORF9LRVksIHsga2V5LCBsb2NhbGUgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ga2V5O1xyXG4gICAgfVxyXG59XHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZnVuY3Rpb24gdXBkYXRlRmFsbGJhY2tMb2NhbGUoY3R4LCBsb2NhbGUsIGZhbGxiYWNrKSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3R4O1xyXG4gICAgY29udGV4dC5fX2xvY2FsZUNoYWluQ2FjaGUgPSBuZXcgTWFwKCk7XHJcbiAgICBjdHgubG9jYWxlRmFsbGJhY2tlcihjdHgsIGZhbGxiYWNrLCBsb2NhbGUpO1xyXG59XHJcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5jb25zdCBSRV9IVE1MX1RBRyA9IC88XFwvP1tcXHdcXHM9XCIvLic6OyMtXFwvXSs+LztcclxuY29uc3QgV0FSTl9NRVNTQUdFID0gYERldGVjdGVkIEhUTUwgaW4gJ3tzb3VyY2V9JyBtZXNzYWdlLiBSZWNvbW1lbmQgbm90IHVzaW5nIEhUTUwgbWVzc2FnZXMgdG8gYXZvaWQgWFNTLmA7XHJcbmZ1bmN0aW9uIGNoZWNrSHRtbE1lc3NhZ2Uoc291cmNlLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB3YXJuSHRtbE1lc3NhZ2UgPSBpc0Jvb2xlYW4ob3B0aW9ucy53YXJuSHRtbE1lc3NhZ2UpXHJcbiAgICAgICAgPyBvcHRpb25zLndhcm5IdG1sTWVzc2FnZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICh3YXJuSHRtbE1lc3NhZ2UgJiYgUkVfSFRNTF9UQUcudGVzdChzb3VyY2UpKSB7XHJcbiAgICAgICAgd2Fybihmb3JtYXQoV0FSTl9NRVNTQUdFLCB7IHNvdXJjZSB9KSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgZGVmYXVsdE9uQ2FjaGVLZXkgPSAoc291cmNlKSA9PiBzb3VyY2U7XHJcbmxldCBjb21waWxlQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG5mdW5jdGlvbiBjbGVhckNvbXBpbGVDYWNoZSgpIHtcclxuICAgIGNvbXBpbGVDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbn1cclxuZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rpb24oc291cmNlLCBvcHRpb25zID0ge30pIHtcclxuICAgIHtcclxuICAgICAgICAvLyBjaGVjayBIVE1MIG1lc3NhZ2VcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tIdG1sTWVzc2FnZShzb3VyY2UsIG9wdGlvbnMpO1xyXG4gICAgICAgIC8vIGNoZWNrIGNhY2hlc1xyXG4gICAgICAgIGNvbnN0IG9uQ2FjaGVLZXkgPSBvcHRpb25zLm9uQ2FjaGVLZXkgfHwgZGVmYXVsdE9uQ2FjaGVLZXk7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gb25DYWNoZUtleShzb3VyY2UpO1xyXG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IGNvbXBpbGVDYWNoZVtrZXldO1xyXG4gICAgICAgIGlmIChjYWNoZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29tcGlsZSBlcnJvciBkZXRlY3RpbmdcclxuICAgICAgICBsZXQgb2NjdXJyZWQgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBvbkVycm9yID0gb3B0aW9ucy5vbkVycm9yIHx8IGRlZmF1bHRPbkVycm9yO1xyXG4gICAgICAgIG9wdGlvbnMub25FcnJvciA9IChlcnIpID0+IHtcclxuICAgICAgICAgICAgb2NjdXJyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBjb21waWxlXHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSBiYXNlQ29tcGlsZShzb3VyY2UsIG9wdGlvbnMpO1xyXG4gICAgICAgIC8vIGV2YWx1YXRlIGZ1bmN0aW9uXHJcbiAgICAgICAgY29uc3QgbXNnID0gbmV3IEZ1bmN0aW9uKGByZXR1cm4gJHtjb2RlfWApKCk7XHJcbiAgICAgICAgLy8gaWYgb2NjdXJyZWQgY29tcGlsZSBlcnJvciwgZG9uJ3QgY2FjaGVcclxuICAgICAgICByZXR1cm4gIW9jY3VycmVkID8gKGNvbXBpbGVDYWNoZVtrZXldID0gbXNnKSA6IG1zZztcclxuICAgIH1cclxufVxuXG5sZXQgY29kZSA9IENvbXBpbGVFcnJvckNvZGVzLl9fRVhURU5EX1BPSU5UX187XHJcbmNvbnN0IGluYyA9ICgpID0+ICsrY29kZTtcclxuY29uc3QgQ29yZUVycm9yQ29kZXMgPSB7XHJcbiAgICBJTlZBTElEX0FSR1VNRU5UOiBjb2RlLFxyXG4gICAgSU5WQUxJRF9EQVRFX0FSR1VNRU5UOiBpbmMoKSxcclxuICAgIElOVkFMSURfSVNPX0RBVEVfQVJHVU1FTlQ6IGluYygpLFxyXG4gICAgX19FWFRFTkRfUE9JTlRfXzogaW5jKCkgLy8gMThcclxufTtcclxuZnVuY3Rpb24gY3JlYXRlQ29yZUVycm9yKGNvZGUpIHtcclxuICAgIHJldHVybiBjcmVhdGVDb21waWxlRXJyb3IoY29kZSwgbnVsbCwgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8geyBtZXNzYWdlczogZXJyb3JNZXNzYWdlcyB9IDogdW5kZWZpbmVkKTtcclxufVxyXG4vKiogQGludGVybmFsICovXHJcbmNvbnN0IGVycm9yTWVzc2FnZXMgPSB7XHJcbiAgICBbQ29yZUVycm9yQ29kZXMuSU5WQUxJRF9BUkdVTUVOVF06ICdJbnZhbGlkIGFyZ3VtZW50cycsXHJcbiAgICBbQ29yZUVycm9yQ29kZXMuSU5WQUxJRF9EQVRFX0FSR1VNRU5UXTogJ1RoZSBkYXRlIHByb3ZpZGVkIGlzIGFuIGludmFsaWQgRGF0ZSBvYmplY3QuJyArXHJcbiAgICAgICAgJ01ha2Ugc3VyZSB5b3VyIERhdGUgcmVwcmVzZW50cyBhIHZhbGlkIGRhdGUuJyxcclxuICAgIFtDb3JlRXJyb3JDb2Rlcy5JTlZBTElEX0lTT19EQVRFX0FSR1VNRU5UXTogJ1RoZSBhcmd1bWVudCBwcm92aWRlZCBpcyBub3QgYSB2YWxpZCBJU08gZGF0ZSBzdHJpbmcnXHJcbn07XG5cbmNvbnN0IE5PT1BfTUVTU0FHRV9GVU5DVElPTiA9ICgpID0+ICcnO1xyXG5jb25zdCBpc01lc3NhZ2VGdW5jdGlvbiA9ICh2YWwpID0+IGlzRnVuY3Rpb24odmFsKTtcclxuLy8gaW1wbGVtZW50YXRpb24gb2YgYHRyYW5zbGF0ZWAgZnVuY3Rpb25cclxuZnVuY3Rpb24gdHJhbnNsYXRlKGNvbnRleHQsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IHsgZmFsbGJhY2tGb3JtYXQsIHBvc3RUcmFuc2xhdGlvbiwgdW5yZXNvbHZpbmcsIG1lc3NhZ2VDb21waWxlciwgZmFsbGJhY2tMb2NhbGUsIG1lc3NhZ2VzIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgW2tleSwgb3B0aW9uc10gPSBwYXJzZVRyYW5zbGF0ZUFyZ3MoLi4uYXJncyk7XHJcbiAgICBjb25zdCBtaXNzaW5nV2FybiA9IGlzQm9vbGVhbihvcHRpb25zLm1pc3NpbmdXYXJuKVxyXG4gICAgICAgID8gb3B0aW9ucy5taXNzaW5nV2FyblxyXG4gICAgICAgIDogY29udGV4dC5taXNzaW5nV2FybjtcclxuICAgIGNvbnN0IGZhbGxiYWNrV2FybiA9IGlzQm9vbGVhbihvcHRpb25zLmZhbGxiYWNrV2FybilcclxuICAgICAgICA/IG9wdGlvbnMuZmFsbGJhY2tXYXJuXHJcbiAgICAgICAgOiBjb250ZXh0LmZhbGxiYWNrV2FybjtcclxuICAgIGNvbnN0IGVzY2FwZVBhcmFtZXRlciA9IGlzQm9vbGVhbihvcHRpb25zLmVzY2FwZVBhcmFtZXRlcilcclxuICAgICAgICA/IG9wdGlvbnMuZXNjYXBlUGFyYW1ldGVyXHJcbiAgICAgICAgOiBjb250ZXh0LmVzY2FwZVBhcmFtZXRlcjtcclxuICAgIGNvbnN0IHJlc29sdmVkTWVzc2FnZSA9ICEhb3B0aW9ucy5yZXNvbHZlZE1lc3NhZ2U7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IGRlZmF1bHRNc2dPcktleSA9IGlzU3RyaW5nKG9wdGlvbnMuZGVmYXVsdCkgfHwgaXNCb29sZWFuKG9wdGlvbnMuZGVmYXVsdCkgLy8gZGVmYXVsdCBieSBmdW5jdGlvbiBvcHRpb25cclxuICAgICAgICA/ICFpc0Jvb2xlYW4ob3B0aW9ucy5kZWZhdWx0KVxyXG4gICAgICAgICAgICA/IG9wdGlvbnMuZGVmYXVsdFxyXG4gICAgICAgICAgICA6ICghbWVzc2FnZUNvbXBpbGVyID8gKCkgPT4ga2V5IDoga2V5KVxyXG4gICAgICAgIDogZmFsbGJhY2tGb3JtYXQgLy8gZGVmYXVsdCBieSBgZmFsbGJhY2tGb3JtYXRgIG9wdGlvblxyXG4gICAgICAgICAgICA/ICghbWVzc2FnZUNvbXBpbGVyID8gKCkgPT4ga2V5IDoga2V5KVxyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgY29uc3QgZW5hYmxlRGVmYXVsdE1zZyA9IGZhbGxiYWNrRm9ybWF0IHx8IGRlZmF1bHRNc2dPcktleSAhPT0gJyc7XHJcbiAgICBjb25zdCBsb2NhbGUgPSBpc1N0cmluZyhvcHRpb25zLmxvY2FsZSkgPyBvcHRpb25zLmxvY2FsZSA6IGNvbnRleHQubG9jYWxlO1xyXG4gICAgLy8gZXNjYXBlIHBhcmFtc1xyXG4gICAgZXNjYXBlUGFyYW1ldGVyICYmIGVzY2FwZVBhcmFtcyhvcHRpb25zKTtcclxuICAgIC8vIHJlc29sdmUgbWVzc2FnZSBmb3JtYXRcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcclxuICAgIGxldCBbZm9ybWF0U2NvcGUsIHRhcmdldExvY2FsZSwgbWVzc2FnZV0gPSAhcmVzb2x2ZWRNZXNzYWdlXHJcbiAgICAgICAgPyByZXNvbHZlTWVzc2FnZUZvcm1hdChjb250ZXh0LCBrZXksIGxvY2FsZSwgZmFsbGJhY2tMb2NhbGUsIGZhbGxiYWNrV2FybiwgbWlzc2luZ1dhcm4pXHJcbiAgICAgICAgOiBbXHJcbiAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgbG9jYWxlLFxyXG4gICAgICAgICAgICBtZXNzYWdlc1tsb2NhbGVdIHx8IHt9XHJcbiAgICAgICAgXTtcclxuICAgIC8vIE5PVEU6XHJcbiAgICAvLyAgRml4IHRvIHdvcmsgYXJvdW5kIGBzc3JUcmFuc2Zyb21gIGJ1ZyBpbiBWaXRlLlxyXG4gICAgLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS92aXRlanMvdml0ZS9pc3N1ZXMvNDMwNlxyXG4gICAgLy8gIFRvIGdldCBhcm91bmQgdGhpcywgdXNlIHRlbXBvcmFyeSB2YXJpYWJsZXMuXHJcbiAgICAvLyAgaHR0cHM6Ly9naXRodWIuY29tL251eHQvZnJhbWV3b3JrL2lzc3Vlcy8xNDYxI2lzc3VlY29tbWVudC05NTQ2MDYyNDNcclxuICAgIGxldCBmb3JtYXQgPSBmb3JtYXRTY29wZTtcclxuICAgIC8vIGlmIHlvdSB1c2UgZGVmYXVsdCBtZXNzYWdlLCBzZXQgaXQgYXMgbWVzc2FnZSBmb3JtYXQhXHJcbiAgICBsZXQgY2FjaGVCYXNlS2V5ID0ga2V5O1xyXG4gICAgaWYgKCFyZXNvbHZlZE1lc3NhZ2UgJiZcclxuICAgICAgICAhKGlzU3RyaW5nKGZvcm1hdCkgfHwgaXNNZXNzYWdlRnVuY3Rpb24oZm9ybWF0KSkpIHtcclxuICAgICAgICBpZiAoZW5hYmxlRGVmYXVsdE1zZykge1xyXG4gICAgICAgICAgICBmb3JtYXQgPSBkZWZhdWx0TXNnT3JLZXk7XHJcbiAgICAgICAgICAgIGNhY2hlQmFzZUtleSA9IGZvcm1hdDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjaGVja2luZyBtZXNzYWdlIGZvcm1hdCBhbmQgdGFyZ2V0IGxvY2FsZVxyXG4gICAgaWYgKCFyZXNvbHZlZE1lc3NhZ2UgJiZcclxuICAgICAgICAoIShpc1N0cmluZyhmb3JtYXQpIHx8IGlzTWVzc2FnZUZ1bmN0aW9uKGZvcm1hdCkpIHx8XHJcbiAgICAgICAgICAgICFpc1N0cmluZyh0YXJnZXRMb2NhbGUpKSkge1xyXG4gICAgICAgIHJldHVybiB1bnJlc29sdmluZyA/IE5PVF9SRU9TTFZFRCA6IGtleTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNTdHJpbmcoZm9ybWF0KSAmJiBjb250ZXh0Lm1lc3NhZ2VDb21waWxlciA9PSBudWxsKSB7XHJcbiAgICAgICAgd2FybihgVGhlIG1lc3NhZ2UgZm9ybWF0IGNvbXBpbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZC4gYCArXHJcbiAgICAgICAgICAgIGBCZWNhdXNlIG1lc3NhZ2UgY29tcGlsZXIgaXNuJ3QgaW5jbHVkZWQuIGAgK1xyXG4gICAgICAgICAgICBgWW91IG5lZWQgdG8gcHJlLWNvbXBpbGF0aW9uIGFsbCBtZXNzYWdlIGZvcm1hdC4gYCArXHJcbiAgICAgICAgICAgIGBTbyB0cmFuc2xhdGUgZnVuY3Rpb24gcmV0dXJuICcke2tleX0nLmApO1xyXG4gICAgICAgIHJldHVybiBrZXk7XHJcbiAgICB9XHJcbiAgICAvLyBzZXR1cCBjb21waWxlIGVycm9yIGRldGVjdGluZ1xyXG4gICAgbGV0IG9jY3VycmVkID0gZmFsc2U7XHJcbiAgICBjb25zdCBlcnJvckRldGVjdG9yID0gKCkgPT4ge1xyXG4gICAgICAgIG9jY3VycmVkID0gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvLyBjb21waWxlIG1lc3NhZ2UgZm9ybWF0XHJcbiAgICBjb25zdCBtc2cgPSAhaXNNZXNzYWdlRnVuY3Rpb24oZm9ybWF0KVxyXG4gICAgICAgID8gY29tcGlsZU1lc3NhZ2VGb3JtYXQoY29udGV4dCwga2V5LCB0YXJnZXRMb2NhbGUsIGZvcm1hdCwgY2FjaGVCYXNlS2V5LCBlcnJvckRldGVjdG9yKVxyXG4gICAgICAgIDogZm9ybWF0O1xyXG4gICAgLy8gaWYgb2NjdXJyZWQgY29tcGlsZSBlcnJvciwgcmV0dXJuIHRoZSBtZXNzYWdlIGZvcm1hdFxyXG4gICAgaWYgKG9jY3VycmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcclxuICAgIH1cclxuICAgIC8vIGV2YWx1YXRlIG1lc3NhZ2Ugd2l0aCBjb250ZXh0XHJcbiAgICBjb25zdCBjdHhPcHRpb25zID0gZ2V0TWVzc2FnZUNvbnRleHRPcHRpb25zKGNvbnRleHQsIHRhcmdldExvY2FsZSwgbWVzc2FnZSwgb3B0aW9ucyk7XHJcbiAgICBjb25zdCBtc2dDb250ZXh0ID0gY3JlYXRlTWVzc2FnZUNvbnRleHQoY3R4T3B0aW9ucyk7XHJcbiAgICBjb25zdCBtZXNzYWdlZCA9IGV2YWx1YXRlTWVzc2FnZShjb250ZXh0LCBtc2csIG1zZ0NvbnRleHQpO1xyXG4gICAgLy8gaWYgdXNlIHBvc3QgdHJhbnNsYXRpb24gb3B0aW9uLCBwcm9jZWVkIGl0IHdpdGggaGFuZGxlclxyXG4gICAgY29uc3QgcmV0ID0gcG9zdFRyYW5zbGF0aW9uID8gcG9zdFRyYW5zbGF0aW9uKG1lc3NhZ2VkKSA6IG1lc3NhZ2VkO1xyXG4gICAgLy8gTk9URTogZXhwZXJpbWVudGFsICEhXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fSU5UTElGWV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgICAgICBjb25zdCBwYXlsb2FkcyA9IHtcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgICBrZXk6IGlzU3RyaW5nKGtleSlcclxuICAgICAgICAgICAgICAgID8ga2V5XHJcbiAgICAgICAgICAgICAgICA6IGlzTWVzc2FnZUZ1bmN0aW9uKGZvcm1hdClcclxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1hdC5rZXlcclxuICAgICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICBsb2NhbGU6IHRhcmdldExvY2FsZSB8fCAoaXNNZXNzYWdlRnVuY3Rpb24oZm9ybWF0KVxyXG4gICAgICAgICAgICAgICAgPyBmb3JtYXQubG9jYWxlXHJcbiAgICAgICAgICAgICAgICA6ICcnKSxcclxuICAgICAgICAgICAgZm9ybWF0OiBpc1N0cmluZyhmb3JtYXQpXHJcbiAgICAgICAgICAgICAgICA/IGZvcm1hdFxyXG4gICAgICAgICAgICAgICAgOiBpc01lc3NhZ2VGdW5jdGlvbihmb3JtYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBmb3JtYXQuc291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogcmV0XHJcbiAgICAgICAgfTtcclxuICAgICAgICBwYXlsb2Fkcy5tZXRhID0gYXNzaWduKHt9LCBjb250ZXh0Ll9fbWV0YSwgZ2V0QWRkaXRpb25hbE1ldGEoKSB8fCB7fSk7XHJcbiAgICAgICAgdHJhbnNsYXRlRGV2VG9vbHMocGF5bG9hZHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5mdW5jdGlvbiBlc2NhcGVQYXJhbXMob3B0aW9ucykge1xyXG4gICAgaWYgKGlzQXJyYXkob3B0aW9ucy5saXN0KSkge1xyXG4gICAgICAgIG9wdGlvbnMubGlzdCA9IG9wdGlvbnMubGlzdC5tYXAoaXRlbSA9PiBpc1N0cmluZyhpdGVtKSA/IGVzY2FwZUh0bWwoaXRlbSkgOiBpdGVtKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9wdGlvbnMubmFtZWQpKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucy5uYW1lZCkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNTdHJpbmcob3B0aW9ucy5uYW1lZFtrZXldKSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5uYW1lZFtrZXldID0gZXNjYXBlSHRtbChvcHRpb25zLm5hbWVkW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcmVzb2x2ZU1lc3NhZ2VGb3JtYXQoY29udGV4dCwga2V5LCBsb2NhbGUsIGZhbGxiYWNrTG9jYWxlLCBmYWxsYmFja1dhcm4sIG1pc3NpbmdXYXJuKSB7XHJcbiAgICBjb25zdCB7IG1lc3NhZ2VzLCBvbldhcm4sIG1lc3NhZ2VSZXNvbHZlcjogcmVzb2x2ZVZhbHVlLCBsb2NhbGVGYWxsYmFja2VyIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgbG9jYWxlcyA9IGxvY2FsZUZhbGxiYWNrZXIoY29udGV4dCwgZmFsbGJhY2tMb2NhbGUsIGxvY2FsZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgbGV0IG1lc3NhZ2UgPSB7fTtcclxuICAgIGxldCB0YXJnZXRMb2NhbGU7XHJcbiAgICBsZXQgZm9ybWF0ID0gbnVsbDtcclxuICAgIGxldCBmcm9tID0gbG9jYWxlO1xyXG4gICAgbGV0IHRvID0gbnVsbDtcclxuICAgIGNvbnN0IHR5cGUgPSAndHJhbnNsYXRlJztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9jYWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRhcmdldExvY2FsZSA9IHRvID0gbG9jYWxlc1tpXTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIGxvY2FsZSAhPT0gdGFyZ2V0TG9jYWxlICYmXHJcbiAgICAgICAgICAgIGlzVHJhbnNsYXRlRmFsbGJhY2tXYXJuKGZhbGxiYWNrV2Fybiwga2V5KSkge1xyXG4gICAgICAgICAgICBvbldhcm4oZ2V0V2Fybk1lc3NhZ2UoQ29yZVdhcm5Db2Rlcy5GQUxMQkFDS19UT19UUkFOU0xBVEUsIHtcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0TG9jYWxlXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZm9yIHZ1ZS1kZXZ0b29scyB0aW1lbGluZSBldmVudFxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbG9jYWxlICE9PSB0YXJnZXRMb2NhbGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZW1pdHRlciA9IGNvbnRleHQuX192X2VtaXR0ZXI7XHJcbiAgICAgICAgICAgIGlmIChlbWl0dGVyKSB7XHJcbiAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoXCJmYWxsYmFja1wiIC8qIEZBTEJBQ0sgKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgICAgICBmcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvLFxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwSWQ6IGAke3R5cGV9OiR7a2V5fWBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lc3NhZ2UgPVxyXG4gICAgICAgICAgICBtZXNzYWdlc1t0YXJnZXRMb2NhbGVdIHx8IHt9O1xyXG4gICAgICAgIC8vIGZvciB2dWUtZGV2dG9vbHMgdGltZWxpbmUgZXZlbnRcclxuICAgICAgICBsZXQgc3RhcnQgPSBudWxsO1xyXG4gICAgICAgIGxldCBzdGFydFRhZztcclxuICAgICAgICBsZXQgZW5kVGFnO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5Ccm93c2VyKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0ID0gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgICAgICAgICBzdGFydFRhZyA9ICdpbnRsaWZ5LW1lc3NhZ2UtcmVzb2x2ZS1zdGFydCc7XHJcbiAgICAgICAgICAgIGVuZFRhZyA9ICdpbnRsaWZ5LW1lc3NhZ2UtcmVzb2x2ZS1lbmQnO1xyXG4gICAgICAgICAgICBtYXJrICYmIG1hcmsoc3RhcnRUYWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGZvcm1hdCA9IHJlc29sdmVWYWx1ZShtZXNzYWdlLCBrZXkpKSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvLyBpZiBudWxsLCByZXNvbHZlIHdpdGggb2JqZWN0IGtleSBwYXRoXHJcbiAgICAgICAgICAgIGZvcm1hdCA9IG1lc3NhZ2Vba2V5XTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGZvciB2dWUtZGV2dG9vbHMgdGltZWxpbmUgZXZlbnRcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGluQnJvd3Nlcikge1xyXG4gICAgICAgICAgICBjb25zdCBlbmQgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVtaXR0ZXIgPSBjb250ZXh0Ll9fdl9lbWl0dGVyO1xyXG4gICAgICAgICAgICBpZiAoZW1pdHRlciAmJiBzdGFydCAmJiBmb3JtYXQpIHtcclxuICAgICAgICAgICAgICAgIGVtaXR0ZXIuZW1pdChcIm1lc3NhZ2UtcmVzb2x2ZVwiIC8qIE1FU1NBR0VfUkVTT0xWRSAqLywge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibWVzc2FnZS1yZXNvbHZlXCIgLyogTUVTU0FHRV9SRVNPTFZFICovLFxyXG4gICAgICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBmb3JtYXQsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZTogZW5kIC0gc3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZDogYCR7dHlwZX06JHtrZXl9YFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0YXJ0VGFnICYmIGVuZFRhZyAmJiBtYXJrICYmIG1lYXN1cmUpIHtcclxuICAgICAgICAgICAgICAgIG1hcmsoZW5kVGFnKTtcclxuICAgICAgICAgICAgICAgIG1lYXN1cmUoJ2ludGxpZnkgbWVzc2FnZSByZXNvbHZlJywgc3RhcnRUYWcsIGVuZFRhZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKGZvcm1hdCkgfHwgaXNGdW5jdGlvbihmb3JtYXQpKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjb25zdCBtaXNzaW5nUmV0ID0gaGFuZGxlTWlzc2luZyhjb250ZXh0LCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBrZXksIHRhcmdldExvY2FsZSwgbWlzc2luZ1dhcm4sIHR5cGUpO1xyXG4gICAgICAgIGlmIChtaXNzaW5nUmV0ICE9PSBrZXkpIHtcclxuICAgICAgICAgICAgZm9ybWF0ID0gbWlzc2luZ1JldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnJvbSA9IHRvO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtmb3JtYXQsIHRhcmdldExvY2FsZSwgbWVzc2FnZV07XHJcbn1cclxuZnVuY3Rpb24gY29tcGlsZU1lc3NhZ2VGb3JtYXQoY29udGV4dCwga2V5LCB0YXJnZXRMb2NhbGUsIGZvcm1hdCwgY2FjaGVCYXNlS2V5LCBlcnJvckRldGVjdG9yKSB7XHJcbiAgICBjb25zdCB7IG1lc3NhZ2VDb21waWxlciwgd2Fybkh0bWxNZXNzYWdlIH0gPSBjb250ZXh0O1xyXG4gICAgaWYgKGlzTWVzc2FnZUZ1bmN0aW9uKGZvcm1hdCkpIHtcclxuICAgICAgICBjb25zdCBtc2cgPSBmb3JtYXQ7XHJcbiAgICAgICAgbXNnLmxvY2FsZSA9IG1zZy5sb2NhbGUgfHwgdGFyZ2V0TG9jYWxlO1xyXG4gICAgICAgIG1zZy5rZXkgPSBtc2cua2V5IHx8IGtleTtcclxuICAgICAgICByZXR1cm4gbXNnO1xyXG4gICAgfVxyXG4gICAgaWYgKG1lc3NhZ2VDb21waWxlciA9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgbXNnID0gKCgpID0+IGZvcm1hdCk7XHJcbiAgICAgICAgbXNnLmxvY2FsZSA9IHRhcmdldExvY2FsZTtcclxuICAgICAgICBtc2cua2V5ID0ga2V5O1xyXG4gICAgICAgIHJldHVybiBtc2c7XHJcbiAgICB9XHJcbiAgICAvLyBmb3IgdnVlLWRldnRvb2xzIHRpbWVsaW5lIGV2ZW50XHJcbiAgICBsZXQgc3RhcnQgPSBudWxsO1xyXG4gICAgbGV0IHN0YXJ0VGFnO1xyXG4gICAgbGV0IGVuZFRhZztcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5Ccm93c2VyKSB7XHJcbiAgICAgICAgc3RhcnQgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgc3RhcnRUYWcgPSAnaW50bGlmeS1tZXNzYWdlLWNvbXBpbGF0aW9uLXN0YXJ0JztcclxuICAgICAgICBlbmRUYWcgPSAnaW50bGlmeS1tZXNzYWdlLWNvbXBpbGF0aW9uLWVuZCc7XHJcbiAgICAgICAgbWFyayAmJiBtYXJrKHN0YXJ0VGFnKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1zZyA9IG1lc3NhZ2VDb21waWxlcihmb3JtYXQsIGdldENvbXBpbGVPcHRpb25zKGNvbnRleHQsIHRhcmdldExvY2FsZSwgY2FjaGVCYXNlS2V5LCBmb3JtYXQsIHdhcm5IdG1sTWVzc2FnZSwgZXJyb3JEZXRlY3RvcikpO1xyXG4gICAgLy8gZm9yIHZ1ZS1kZXZ0b29scyB0aW1lbGluZSBldmVudFxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbkJyb3dzZXIpIHtcclxuICAgICAgICBjb25zdCBlbmQgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgY29uc3QgZW1pdHRlciA9IGNvbnRleHQuX192X2VtaXR0ZXI7XHJcbiAgICAgICAgaWYgKGVtaXR0ZXIgJiYgc3RhcnQpIHtcclxuICAgICAgICAgICAgZW1pdHRlci5lbWl0KFwibWVzc2FnZS1jb21waWxhdGlvblwiIC8qIE1FU1NBR0VfQ09NUElMQVRJT04gKi8sIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwibWVzc2FnZS1jb21waWxhdGlvblwiIC8qIE1FU1NBR0VfQ09NUElMQVRJT04gKi8sXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBmb3JtYXQsXHJcbiAgICAgICAgICAgICAgICB0aW1lOiBlbmQgLSBzdGFydCxcclxuICAgICAgICAgICAgICAgIGdyb3VwSWQ6IGAkeyd0cmFuc2xhdGUnfToke2tleX1gXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc3RhcnRUYWcgJiYgZW5kVGFnICYmIG1hcmsgJiYgbWVhc3VyZSkge1xyXG4gICAgICAgICAgICBtYXJrKGVuZFRhZyk7XHJcbiAgICAgICAgICAgIG1lYXN1cmUoJ2ludGxpZnkgbWVzc2FnZSBjb21waWxhdGlvbicsIHN0YXJ0VGFnLCBlbmRUYWcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG1zZy5sb2NhbGUgPSB0YXJnZXRMb2NhbGU7XHJcbiAgICBtc2cua2V5ID0ga2V5O1xyXG4gICAgbXNnLnNvdXJjZSA9IGZvcm1hdDtcclxuICAgIHJldHVybiBtc2c7XHJcbn1cclxuZnVuY3Rpb24gZXZhbHVhdGVNZXNzYWdlKGNvbnRleHQsIG1zZywgbXNnQ3R4KSB7XHJcbiAgICAvLyBmb3IgdnVlLWRldnRvb2xzIHRpbWVsaW5lIGV2ZW50XHJcbiAgICBsZXQgc3RhcnQgPSBudWxsO1xyXG4gICAgbGV0IHN0YXJ0VGFnO1xyXG4gICAgbGV0IGVuZFRhZztcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5Ccm93c2VyKSB7XHJcbiAgICAgICAgc3RhcnQgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgc3RhcnRUYWcgPSAnaW50bGlmeS1tZXNzYWdlLWV2YWx1YXRpb24tc3RhcnQnO1xyXG4gICAgICAgIGVuZFRhZyA9ICdpbnRsaWZ5LW1lc3NhZ2UtZXZhbHVhdGlvbi1lbmQnO1xyXG4gICAgICAgIG1hcmsgJiYgbWFyayhzdGFydFRhZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtZXNzYWdlZCA9IG1zZyhtc2dDdHgpO1xyXG4gICAgLy8gZm9yIHZ1ZS1kZXZ0b29scyB0aW1lbGluZSBldmVudFxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbkJyb3dzZXIpIHtcclxuICAgICAgICBjb25zdCBlbmQgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgY29uc3QgZW1pdHRlciA9IGNvbnRleHQuX192X2VtaXR0ZXI7XHJcbiAgICAgICAgaWYgKGVtaXR0ZXIgJiYgc3RhcnQpIHtcclxuICAgICAgICAgICAgZW1pdHRlci5lbWl0KFwibWVzc2FnZS1ldmFsdWF0aW9uXCIgLyogTUVTU0FHRV9FVkFMVUFUSU9OICovLCB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm1lc3NhZ2UtZXZhbHVhdGlvblwiIC8qIE1FU1NBR0VfRVZBTFVBVElPTiAqLyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBtZXNzYWdlZCxcclxuICAgICAgICAgICAgICAgIHRpbWU6IGVuZCAtIHN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgZ3JvdXBJZDogYCR7J3RyYW5zbGF0ZSd9OiR7bXNnLmtleX1gXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc3RhcnRUYWcgJiYgZW5kVGFnICYmIG1hcmsgJiYgbWVhc3VyZSkge1xyXG4gICAgICAgICAgICBtYXJrKGVuZFRhZyk7XHJcbiAgICAgICAgICAgIG1lYXN1cmUoJ2ludGxpZnkgbWVzc2FnZSBldmFsdWF0aW9uJywgc3RhcnRUYWcsIGVuZFRhZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1lc3NhZ2VkO1xyXG59XHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZnVuY3Rpb24gcGFyc2VUcmFuc2xhdGVBcmdzKC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IFthcmcxLCBhcmcyLCBhcmczXSA9IGFyZ3M7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge307XHJcbiAgICBpZiAoIWlzU3RyaW5nKGFyZzEpICYmICFpc051bWJlcihhcmcxKSAmJiAhaXNNZXNzYWdlRnVuY3Rpb24oYXJnMSkpIHtcclxuICAgICAgICB0aHJvdyBjcmVhdGVDb3JlRXJyb3IoQ29yZUVycm9yQ29kZXMuSU5WQUxJRF9BUkdVTUVOVCk7XHJcbiAgICB9XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IGtleSA9IGlzTnVtYmVyKGFyZzEpXHJcbiAgICAgICAgPyBTdHJpbmcoYXJnMSlcclxuICAgICAgICA6IGlzTWVzc2FnZUZ1bmN0aW9uKGFyZzEpXHJcbiAgICAgICAgICAgID8gYXJnMVxyXG4gICAgICAgICAgICA6IGFyZzE7XHJcbiAgICBpZiAoaXNOdW1iZXIoYXJnMikpIHtcclxuICAgICAgICBvcHRpb25zLnBsdXJhbCA9IGFyZzI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1N0cmluZyhhcmcyKSkge1xyXG4gICAgICAgIG9wdGlvbnMuZGVmYXVsdCA9IGFyZzI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGFyZzIpICYmICFpc0VtcHR5T2JqZWN0KGFyZzIpKSB7XHJcbiAgICAgICAgb3B0aW9ucy5uYW1lZCA9IGFyZzI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KGFyZzIpKSB7XHJcbiAgICAgICAgb3B0aW9ucy5saXN0ID0gYXJnMjtcclxuICAgIH1cclxuICAgIGlmIChpc051bWJlcihhcmczKSkge1xyXG4gICAgICAgIG9wdGlvbnMucGx1cmFsID0gYXJnMztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU3RyaW5nKGFyZzMpKSB7XHJcbiAgICAgICAgb3B0aW9ucy5kZWZhdWx0ID0gYXJnMztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoYXJnMykpIHtcclxuICAgICAgICBhc3NpZ24ob3B0aW9ucywgYXJnMyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW2tleSwgb3B0aW9uc107XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29tcGlsZU9wdGlvbnMoY29udGV4dCwgbG9jYWxlLCBrZXksIHNvdXJjZSwgd2Fybkh0bWxNZXNzYWdlLCBlcnJvckRldGVjdG9yKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHdhcm5IdG1sTWVzc2FnZSxcclxuICAgICAgICBvbkVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGVycm9yRGV0ZWN0b3IgJiYgZXJyb3JEZXRlY3RvcihlcnIpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYE1lc3NhZ2UgY29tcGlsYXRpb24gZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVGcmFtZSA9IGVyci5sb2NhdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQ29kZUZyYW1lKHNvdXJjZSwgZXJyLmxvY2F0aW9uLnN0YXJ0Lm9mZnNldCwgZXJyLmxvY2F0aW9uLmVuZC5vZmZzZXQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW1pdHRlciA9IGNvbnRleHQuX192X2VtaXR0ZXI7XHJcbiAgICAgICAgICAgICAgICBpZiAoZW1pdHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXR0ZXIuZW1pdChcImNvbXBpbGUtZXJyb3JcIiAvKiBDT01QSUxFX0VSUk9SICovLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogZXJyLmxvY2F0aW9uICYmIGVyci5sb2NhdGlvbi5zdGFydC5vZmZzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogZXJyLmxvY2F0aW9uICYmIGVyci5sb2NhdGlvbi5lbmQub2Zmc2V0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cElkOiBgJHsndHJhbnNsYXRlJ306JHtrZXl9YFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihjb2RlRnJhbWUgPyBgJHttZXNzYWdlfVxcbiR7Y29kZUZyYW1lfWAgOiBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25DYWNoZUtleTogKHNvdXJjZSkgPT4gZ2VuZXJhdGVGb3JtYXRDYWNoZUtleShsb2NhbGUsIGtleSwgc291cmNlKVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBnZXRNZXNzYWdlQ29udGV4dE9wdGlvbnMoY29udGV4dCwgbG9jYWxlLCBtZXNzYWdlLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7IG1vZGlmaWVycywgcGx1cmFsUnVsZXMsIG1lc3NhZ2VSZXNvbHZlcjogcmVzb2x2ZVZhbHVlLCBmYWxsYmFja0xvY2FsZSwgZmFsbGJhY2tXYXJuLCBtaXNzaW5nV2FybiwgZmFsbGJhY2tDb250ZXh0IH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgcmVzb2x2ZU1lc3NhZ2UgPSAoa2V5KSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbCA9IHJlc29sdmVWYWx1ZShtZXNzYWdlLCBrZXkpO1xyXG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIHJvb3QgY29udGV4dFxyXG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCAmJiBmYWxsYmFja0NvbnRleHQpIHtcclxuICAgICAgICAgICAgY29uc3QgWywgLCBtZXNzYWdlXSA9IHJlc29sdmVNZXNzYWdlRm9ybWF0KGZhbGxiYWNrQ29udGV4dCwga2V5LCBsb2NhbGUsIGZhbGxiYWNrTG9jYWxlLCBmYWxsYmFja1dhcm4sIG1pc3NpbmdXYXJuKTtcclxuICAgICAgICAgICAgdmFsID0gcmVzb2x2ZVZhbHVlKG1lc3NhZ2UsIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1N0cmluZyh2YWwpKSB7XHJcbiAgICAgICAgICAgIGxldCBvY2N1cnJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvckRldGVjdG9yID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2NjdXJyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBjb21waWxlTWVzc2FnZUZvcm1hdChjb250ZXh0LCBrZXksIGxvY2FsZSwgdmFsLCBrZXksIGVycm9yRGV0ZWN0b3IpO1xyXG4gICAgICAgICAgICByZXR1cm4gIW9jY3VycmVkXHJcbiAgICAgICAgICAgICAgICA/IG1zZ1xyXG4gICAgICAgICAgICAgICAgOiBOT09QX01FU1NBR0VfRlVOQ1RJT047XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzTWVzc2FnZUZ1bmN0aW9uKHZhbCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE86IHNob3VsZCBiZSBpbXBsZW1lbnRlZCB3YXJuaW5nIG1lc3NhZ2VcclxuICAgICAgICAgICAgcmV0dXJuIE5PT1BfTUVTU0FHRV9GVU5DVElPTjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY3R4T3B0aW9ucyA9IHtcclxuICAgICAgICBsb2NhbGUsXHJcbiAgICAgICAgbW9kaWZpZXJzLFxyXG4gICAgICAgIHBsdXJhbFJ1bGVzLFxyXG4gICAgICAgIG1lc3NhZ2VzOiByZXNvbHZlTWVzc2FnZVxyXG4gICAgfTtcclxuICAgIGlmIChjb250ZXh0LnByb2Nlc3Nvcikge1xyXG4gICAgICAgIGN0eE9wdGlvbnMucHJvY2Vzc29yID0gY29udGV4dC5wcm9jZXNzb3I7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5saXN0KSB7XHJcbiAgICAgICAgY3R4T3B0aW9ucy5saXN0ID0gb3B0aW9ucy5saXN0O1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMubmFtZWQpIHtcclxuICAgICAgICBjdHhPcHRpb25zLm5hbWVkID0gb3B0aW9ucy5uYW1lZDtcclxuICAgIH1cclxuICAgIGlmIChpc051bWJlcihvcHRpb25zLnBsdXJhbCkpIHtcclxuICAgICAgICBjdHhPcHRpb25zLnBsdXJhbEluZGV4ID0gb3B0aW9ucy5wbHVyYWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3R4T3B0aW9ucztcclxufVxuXG5jb25zdCBpbnRsRGVmaW5lZCA9IHR5cGVvZiBJbnRsICE9PSAndW5kZWZpbmVkJztcclxuY29uc3QgQXZhaWxhYmlsaXRpZXMgPSB7XHJcbiAgICBkYXRlVGltZUZvcm1hdDogaW50bERlZmluZWQgJiYgdHlwZW9mIEludGwuRGF0ZVRpbWVGb3JtYXQgIT09ICd1bmRlZmluZWQnLFxyXG4gICAgbnVtYmVyRm9ybWF0OiBpbnRsRGVmaW5lZCAmJiB0eXBlb2YgSW50bC5OdW1iZXJGb3JtYXQgIT09ICd1bmRlZmluZWQnXHJcbn07XG5cbi8vIGltcGxlbWVudGF0aW9uIG9mIGBkYXRldGltZWAgZnVuY3Rpb25cclxuZnVuY3Rpb24gZGF0ZXRpbWUoY29udGV4dCwgLi4uYXJncykge1xyXG4gICAgY29uc3QgeyBkYXRldGltZUZvcm1hdHMsIHVucmVzb2x2aW5nLCBmYWxsYmFja0xvY2FsZSwgb25XYXJuLCBsb2NhbGVGYWxsYmFja2VyIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBfX2RhdGV0aW1lRm9ybWF0dGVycyB9ID0gY29udGV4dDtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIUF2YWlsYWJpbGl0aWVzLmRhdGVUaW1lRm9ybWF0KSB7XHJcbiAgICAgICAgb25XYXJuKGdldFdhcm5NZXNzYWdlKENvcmVXYXJuQ29kZXMuQ0FOTk9UX0ZPUk1BVF9EQVRFKSk7XHJcbiAgICAgICAgcmV0dXJuIE1JU1NJTkdfUkVTT0xWRV9WQUxVRTtcclxuICAgIH1cclxuICAgIGNvbnN0IFtrZXksIHZhbHVlLCBvcHRpb25zLCBvdmVycmlkZXNdID0gcGFyc2VEYXRlVGltZUFyZ3MoLi4uYXJncyk7XHJcbiAgICBjb25zdCBtaXNzaW5nV2FybiA9IGlzQm9vbGVhbihvcHRpb25zLm1pc3NpbmdXYXJuKVxyXG4gICAgICAgID8gb3B0aW9ucy5taXNzaW5nV2FyblxyXG4gICAgICAgIDogY29udGV4dC5taXNzaW5nV2FybjtcclxuICAgIGNvbnN0IGZhbGxiYWNrV2FybiA9IGlzQm9vbGVhbihvcHRpb25zLmZhbGxiYWNrV2FybilcclxuICAgICAgICA/IG9wdGlvbnMuZmFsbGJhY2tXYXJuXHJcbiAgICAgICAgOiBjb250ZXh0LmZhbGxiYWNrV2FybjtcclxuICAgIGNvbnN0IHBhcnQgPSAhIW9wdGlvbnMucGFydDtcclxuICAgIGNvbnN0IGxvY2FsZSA9IGlzU3RyaW5nKG9wdGlvbnMubG9jYWxlKSA/IG9wdGlvbnMubG9jYWxlIDogY29udGV4dC5sb2NhbGU7XHJcbiAgICBjb25zdCBsb2NhbGVzID0gbG9jYWxlRmFsbGJhY2tlcihjb250ZXh0LCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIGZhbGxiYWNrTG9jYWxlLCBsb2NhbGUpO1xyXG4gICAgaWYgKCFpc1N0cmluZyhrZXkpIHx8IGtleSA9PT0gJycpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlKS5mb3JtYXQodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gcmVzb2x2ZSBmb3JtYXRcclxuICAgIGxldCBkYXRldGltZUZvcm1hdCA9IHt9O1xyXG4gICAgbGV0IHRhcmdldExvY2FsZTtcclxuICAgIGxldCBmb3JtYXQgPSBudWxsO1xyXG4gICAgbGV0IGZyb20gPSBsb2NhbGU7XHJcbiAgICBsZXQgdG8gPSBudWxsO1xyXG4gICAgY29uc3QgdHlwZSA9ICdkYXRldGltZSBmb3JtYXQnO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2NhbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGFyZ2V0TG9jYWxlID0gdG8gPSBsb2NhbGVzW2ldO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgbG9jYWxlICE9PSB0YXJnZXRMb2NhbGUgJiZcclxuICAgICAgICAgICAgaXNUcmFuc2xhdGVGYWxsYmFja1dhcm4oZmFsbGJhY2tXYXJuLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIG9uV2FybihnZXRXYXJuTWVzc2FnZShDb3JlV2FybkNvZGVzLkZBTExCQUNLX1RPX0RBVEVfRk9STUFULCB7XHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldExvY2FsZVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGZvciB2dWUtZGV2dG9vbHMgdGltZWxpbmUgZXZlbnRcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGxvY2FsZSAhPT0gdGFyZ2V0TG9jYWxlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVtaXR0ZXIgPSBjb250ZXh0Ll9fdl9lbWl0dGVyO1xyXG4gICAgICAgICAgICBpZiAoZW1pdHRlcikge1xyXG4gICAgICAgICAgICAgICAgZW1pdHRlci5lbWl0KFwiZmFsbGJhY2tcIiAvKiBGQUxCQUNLICovLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbSxcclxuICAgICAgICAgICAgICAgICAgICB0byxcclxuICAgICAgICAgICAgICAgICAgICBncm91cElkOiBgJHt0eXBlfToke2tleX1gXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRldGltZUZvcm1hdCA9XHJcbiAgICAgICAgICAgIGRhdGV0aW1lRm9ybWF0c1t0YXJnZXRMb2NhbGVdIHx8IHt9O1xyXG4gICAgICAgIGZvcm1hdCA9IGRhdGV0aW1lRm9ybWF0W2tleV07XHJcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoZm9ybWF0KSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgaGFuZGxlTWlzc2luZyhjb250ZXh0LCBrZXksIHRhcmdldExvY2FsZSwgbWlzc2luZ1dhcm4sIHR5cGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBmcm9tID0gdG87XHJcbiAgICB9XHJcbiAgICAvLyBjaGVja2luZyBmb3JtYXQgYW5kIHRhcmdldCBsb2NhbGVcclxuICAgIGlmICghaXNQbGFpbk9iamVjdChmb3JtYXQpIHx8ICFpc1N0cmluZyh0YXJnZXRMb2NhbGUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVucmVzb2x2aW5nID8gTk9UX1JFT1NMVkVEIDoga2V5O1xyXG4gICAgfVxyXG4gICAgbGV0IGlkID0gYCR7dGFyZ2V0TG9jYWxlfV9fJHtrZXl9YDtcclxuICAgIGlmICghaXNFbXB0eU9iamVjdChvdmVycmlkZXMpKSB7XHJcbiAgICAgICAgaWQgPSBgJHtpZH1fXyR7SlNPTi5zdHJpbmdpZnkob3ZlcnJpZGVzKX1gO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1hdHRlciA9IF9fZGF0ZXRpbWVGb3JtYXR0ZXJzLmdldChpZCk7XHJcbiAgICBpZiAoIWZvcm1hdHRlcikge1xyXG4gICAgICAgIGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRhcmdldExvY2FsZSwgYXNzaWduKHt9LCBmb3JtYXQsIG92ZXJyaWRlcykpO1xyXG4gICAgICAgIF9fZGF0ZXRpbWVGb3JtYXR0ZXJzLnNldChpZCwgZm9ybWF0dGVyKTtcclxuICAgIH1cclxuICAgIHJldHVybiAhcGFydCA/IGZvcm1hdHRlci5mb3JtYXQodmFsdWUpIDogZm9ybWF0dGVyLmZvcm1hdFRvUGFydHModmFsdWUpO1xyXG59XHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZnVuY3Rpb24gcGFyc2VEYXRlVGltZUFyZ3MoLi4uYXJncykge1xyXG4gICAgY29uc3QgW2FyZzEsIGFyZzIsIGFyZzMsIGFyZzRdID0gYXJncztcclxuICAgIGxldCBvcHRpb25zID0ge307XHJcbiAgICBsZXQgb3ZlcnJpZGVzID0ge307XHJcbiAgICBsZXQgdmFsdWU7XHJcbiAgICBpZiAoaXNTdHJpbmcoYXJnMSkpIHtcclxuICAgICAgICAvLyBPbmx5IGFsbG93IElTTyBzdHJpbmdzIC0gb3RoZXIgZGF0ZSBmb3JtYXRzIGFyZSBvZnRlbiBzdXBwb3J0ZWQsXHJcbiAgICAgICAgLy8gYnV0IG1heSBjYXVzZSBkaWZmZXJlbnQgcmVzdWx0cyBpbiBkaWZmZXJlbnQgYnJvd3NlcnMuXHJcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGFyZzEubWF0Y2goLyhcXGR7NH0tXFxkezJ9LVxcZHsyfSkoVHxcXHMpPyguKikvKTtcclxuICAgICAgICBpZiAoIW1hdGNoZXMpIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlQ29yZUVycm9yKENvcmVFcnJvckNvZGVzLklOVkFMSURfSVNPX0RBVEVfQVJHVU1FTlQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTb21lIGJyb3dzZXJzIGNhbiBub3QgcGFyc2UgdGhlIGlzbyBkYXRldGltZSBzZXBhcmF0ZWQgYnkgc3BhY2UsXHJcbiAgICAgICAgLy8gdGhpcyBpcyBhIGNvbXByb21pc2Ugc29sdXRpb24gYnkgcmVwbGFjZSB0aGUgJ1QnLycgJyB3aXRoICdUJ1xyXG4gICAgICAgIGNvbnN0IGRhdGVUaW1lID0gbWF0Y2hlc1szXVxyXG4gICAgICAgICAgICA/IG1hdGNoZXNbM10udHJpbSgpLnN0YXJ0c1dpdGgoJ1QnKVxyXG4gICAgICAgICAgICAgICAgPyBgJHttYXRjaGVzWzFdLnRyaW0oKX0ke21hdGNoZXNbM10udHJpbSgpfWBcclxuICAgICAgICAgICAgICAgIDogYCR7bWF0Y2hlc1sxXS50cmltKCl9VCR7bWF0Y2hlc1szXS50cmltKCl9YFxyXG4gICAgICAgICAgICA6IG1hdGNoZXNbMV0udHJpbSgpO1xyXG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoZGF0ZVRpbWUpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBmYWlsIGlmIHRoZSBkYXRlIGlzIG5vdCB2YWxpZFxyXG4gICAgICAgICAgICB2YWx1ZS50b0lTT1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVDb3JlRXJyb3IoQ29yZUVycm9yQ29kZXMuSU5WQUxJRF9JU09fREFURV9BUkdVTUVOVCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNEYXRlKGFyZzEpKSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZzEuZ2V0VGltZSgpKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVDb3JlRXJyb3IoQ29yZUVycm9yQ29kZXMuSU5WQUxJRF9EQVRFX0FSR1VNRU5UKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFsdWUgPSBhcmcxO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNOdW1iZXIoYXJnMSkpIHtcclxuICAgICAgICB2YWx1ZSA9IGFyZzE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB0aHJvdyBjcmVhdGVDb3JlRXJyb3IoQ29yZUVycm9yQ29kZXMuSU5WQUxJRF9BUkdVTUVOVCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTdHJpbmcoYXJnMikpIHtcclxuICAgICAgICBvcHRpb25zLmtleSA9IGFyZzI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGFyZzIpKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IGFyZzI7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTdHJpbmcoYXJnMykpIHtcclxuICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGFyZzM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGFyZzMpKSB7XHJcbiAgICAgICAgb3ZlcnJpZGVzID0gYXJnMztcclxuICAgIH1cclxuICAgIGlmIChpc1BsYWluT2JqZWN0KGFyZzQpKSB7XHJcbiAgICAgICAgb3ZlcnJpZGVzID0gYXJnNDtcclxuICAgIH1cclxuICAgIHJldHVybiBbb3B0aW9ucy5rZXkgfHwgJycsIHZhbHVlLCBvcHRpb25zLCBvdmVycmlkZXNdO1xyXG59XHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZnVuY3Rpb24gY2xlYXJEYXRlVGltZUZvcm1hdChjdHgsIGxvY2FsZSwgZm9ybWF0KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3R4O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybWF0KSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBgJHtsb2NhbGV9X18ke2tleX1gO1xyXG4gICAgICAgIGlmICghY29udGV4dC5fX2RhdGV0aW1lRm9ybWF0dGVycy5oYXMoaWQpKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0Ll9fZGF0ZXRpbWVGb3JtYXR0ZXJzLmRlbGV0ZShpZCk7XHJcbiAgICB9XHJcbn1cblxuLy8gaW1wbGVtZW50YXRpb24gb2YgYG51bWJlcmAgZnVuY3Rpb25cclxuZnVuY3Rpb24gbnVtYmVyKGNvbnRleHQsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IHsgbnVtYmVyRm9ybWF0cywgdW5yZXNvbHZpbmcsIGZhbGxiYWNrTG9jYWxlLCBvbldhcm4sIGxvY2FsZUZhbGxiYWNrZXIgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IF9fbnVtYmVyRm9ybWF0dGVycyB9ID0gY29udGV4dDtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIUF2YWlsYWJpbGl0aWVzLm51bWJlckZvcm1hdCkge1xyXG4gICAgICAgIG9uV2FybihnZXRXYXJuTWVzc2FnZShDb3JlV2FybkNvZGVzLkNBTk5PVF9GT1JNQVRfTlVNQkVSKSk7XHJcbiAgICAgICAgcmV0dXJuIE1JU1NJTkdfUkVTT0xWRV9WQUxVRTtcclxuICAgIH1cclxuICAgIGNvbnN0IFtrZXksIHZhbHVlLCBvcHRpb25zLCBvdmVycmlkZXNdID0gcGFyc2VOdW1iZXJBcmdzKC4uLmFyZ3MpO1xyXG4gICAgY29uc3QgbWlzc2luZ1dhcm4gPSBpc0Jvb2xlYW4ob3B0aW9ucy5taXNzaW5nV2FybilcclxuICAgICAgICA/IG9wdGlvbnMubWlzc2luZ1dhcm5cclxuICAgICAgICA6IGNvbnRleHQubWlzc2luZ1dhcm47XHJcbiAgICBjb25zdCBmYWxsYmFja1dhcm4gPSBpc0Jvb2xlYW4ob3B0aW9ucy5mYWxsYmFja1dhcm4pXHJcbiAgICAgICAgPyBvcHRpb25zLmZhbGxiYWNrV2FyblxyXG4gICAgICAgIDogY29udGV4dC5mYWxsYmFja1dhcm47XHJcbiAgICBjb25zdCBwYXJ0ID0gISFvcHRpb25zLnBhcnQ7XHJcbiAgICBjb25zdCBsb2NhbGUgPSBpc1N0cmluZyhvcHRpb25zLmxvY2FsZSkgPyBvcHRpb25zLmxvY2FsZSA6IGNvbnRleHQubG9jYWxlO1xyXG4gICAgY29uc3QgbG9jYWxlcyA9IGxvY2FsZUZhbGxiYWNrZXIoY29udGV4dCwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBmYWxsYmFja0xvY2FsZSwgbG9jYWxlKTtcclxuICAgIGlmICghaXNTdHJpbmcoa2V5KSB8fCBrZXkgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUpLmZvcm1hdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyByZXNvbHZlIGZvcm1hdFxyXG4gICAgbGV0IG51bWJlckZvcm1hdCA9IHt9O1xyXG4gICAgbGV0IHRhcmdldExvY2FsZTtcclxuICAgIGxldCBmb3JtYXQgPSBudWxsO1xyXG4gICAgbGV0IGZyb20gPSBsb2NhbGU7XHJcbiAgICBsZXQgdG8gPSBudWxsO1xyXG4gICAgY29uc3QgdHlwZSA9ICdudW1iZXIgZm9ybWF0JztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9jYWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRhcmdldExvY2FsZSA9IHRvID0gbG9jYWxlc1tpXTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIGxvY2FsZSAhPT0gdGFyZ2V0TG9jYWxlICYmXHJcbiAgICAgICAgICAgIGlzVHJhbnNsYXRlRmFsbGJhY2tXYXJuKGZhbGxiYWNrV2Fybiwga2V5KSkge1xyXG4gICAgICAgICAgICBvbldhcm4oZ2V0V2Fybk1lc3NhZ2UoQ29yZVdhcm5Db2Rlcy5GQUxMQkFDS19UT19OVU1CRVJfRk9STUFULCB7XHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldExvY2FsZVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGZvciB2dWUtZGV2dG9vbHMgdGltZWxpbmUgZXZlbnRcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGxvY2FsZSAhPT0gdGFyZ2V0TG9jYWxlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVtaXR0ZXIgPSBjb250ZXh0Ll9fdl9lbWl0dGVyO1xyXG4gICAgICAgICAgICBpZiAoZW1pdHRlcikge1xyXG4gICAgICAgICAgICAgICAgZW1pdHRlci5lbWl0KFwiZmFsbGJhY2tcIiAvKiBGQUxCQUNLICovLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbSxcclxuICAgICAgICAgICAgICAgICAgICB0byxcclxuICAgICAgICAgICAgICAgICAgICBncm91cElkOiBgJHt0eXBlfToke2tleX1gXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBudW1iZXJGb3JtYXQgPVxyXG4gICAgICAgICAgICBudW1iZXJGb3JtYXRzW3RhcmdldExvY2FsZV0gfHwge307XHJcbiAgICAgICAgZm9ybWF0ID0gbnVtYmVyRm9ybWF0W2tleV07XHJcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoZm9ybWF0KSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgaGFuZGxlTWlzc2luZyhjb250ZXh0LCBrZXksIHRhcmdldExvY2FsZSwgbWlzc2luZ1dhcm4sIHR5cGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBmcm9tID0gdG87XHJcbiAgICB9XHJcbiAgICAvLyBjaGVja2luZyBmb3JtYXQgYW5kIHRhcmdldCBsb2NhbGVcclxuICAgIGlmICghaXNQbGFpbk9iamVjdChmb3JtYXQpIHx8ICFpc1N0cmluZyh0YXJnZXRMb2NhbGUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVucmVzb2x2aW5nID8gTk9UX1JFT1NMVkVEIDoga2V5O1xyXG4gICAgfVxyXG4gICAgbGV0IGlkID0gYCR7dGFyZ2V0TG9jYWxlfV9fJHtrZXl9YDtcclxuICAgIGlmICghaXNFbXB0eU9iamVjdChvdmVycmlkZXMpKSB7XHJcbiAgICAgICAgaWQgPSBgJHtpZH1fXyR7SlNPTi5zdHJpbmdpZnkob3ZlcnJpZGVzKX1gO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1hdHRlciA9IF9fbnVtYmVyRm9ybWF0dGVycy5nZXQoaWQpO1xyXG4gICAgaWYgKCFmb3JtYXR0ZXIpIHtcclxuICAgICAgICBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGFyZ2V0TG9jYWxlLCBhc3NpZ24oe30sIGZvcm1hdCwgb3ZlcnJpZGVzKSk7XHJcbiAgICAgICAgX19udW1iZXJGb3JtYXR0ZXJzLnNldChpZCwgZm9ybWF0dGVyKTtcclxuICAgIH1cclxuICAgIHJldHVybiAhcGFydCA/IGZvcm1hdHRlci5mb3JtYXQodmFsdWUpIDogZm9ybWF0dGVyLmZvcm1hdFRvUGFydHModmFsdWUpO1xyXG59XHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZnVuY3Rpb24gcGFyc2VOdW1iZXJBcmdzKC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IFthcmcxLCBhcmcyLCBhcmczLCBhcmc0XSA9IGFyZ3M7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHt9O1xyXG4gICAgbGV0IG92ZXJyaWRlcyA9IHt9O1xyXG4gICAgaWYgKCFpc051bWJlcihhcmcxKSkge1xyXG4gICAgICAgIHRocm93IGNyZWF0ZUNvcmVFcnJvcihDb3JlRXJyb3JDb2Rlcy5JTlZBTElEX0FSR1VNRU5UKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlID0gYXJnMTtcclxuICAgIGlmIChpc1N0cmluZyhhcmcyKSkge1xyXG4gICAgICAgIG9wdGlvbnMua2V5ID0gYXJnMjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoYXJnMikpIHtcclxuICAgICAgICBvcHRpb25zID0gYXJnMjtcclxuICAgIH1cclxuICAgIGlmIChpc1N0cmluZyhhcmczKSkge1xyXG4gICAgICAgIG9wdGlvbnMubG9jYWxlID0gYXJnMztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoYXJnMykpIHtcclxuICAgICAgICBvdmVycmlkZXMgPSBhcmczO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzUGxhaW5PYmplY3QoYXJnNCkpIHtcclxuICAgICAgICBvdmVycmlkZXMgPSBhcmc0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtvcHRpb25zLmtleSB8fCAnJywgdmFsdWUsIG9wdGlvbnMsIG92ZXJyaWRlc107XHJcbn1cclxuLyoqIEBpbnRlcm5hbCAqL1xyXG5mdW5jdGlvbiBjbGVhck51bWJlckZvcm1hdChjdHgsIGxvY2FsZSwgZm9ybWF0KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3R4O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybWF0KSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBgJHtsb2NhbGV9X18ke2tleX1gO1xyXG4gICAgICAgIGlmICghY29udGV4dC5fX251bWJlckZvcm1hdHRlcnMuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5fX251bWJlckZvcm1hdHRlcnMuZGVsZXRlKGlkKTtcclxuICAgIH1cclxufVxuXG4vLyBUT0RPOiB3ZSBjb3VsZCBub3QgZXhwb3J0cyBmb3IgTm9kZSBuYXRpdmUgRVMgTW91ZGxlcyB5ZXQuLi5cclxue1xyXG4gICAgaWYgKHR5cGVvZiBfX0lOVExJRllfUFJPRF9ERVZUT09MU19fICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICBnZXRHbG9iYWxUaGlzKCkuX19JTlRMSUZZX1BST0RfREVWVE9PTFNfXyA9IGZhbHNlO1xyXG4gICAgfVxyXG59XG5cbmV4cG9ydCB7IENvcmVFcnJvckNvZGVzLCBDb3JlV2FybkNvZGVzLCBERUZBVUxUX0xPQ0FMRSwgREVGQVVMVF9NRVNTQUdFX0RBVEFfVFlQRSwgTUlTU0lOR19SRVNPTFZFX1ZBTFVFLCBOT1RfUkVPU0xWRUQsIFZFUlNJT04sIGNsZWFyQ29tcGlsZUNhY2hlLCBjbGVhckRhdGVUaW1lRm9ybWF0LCBjbGVhck51bWJlckZvcm1hdCwgY29tcGlsZVRvRnVuY3Rpb24sIGNyZWF0ZUNvcmVDb250ZXh0LCBjcmVhdGVDb3JlRXJyb3IsIGNyZWF0ZU1lc3NhZ2VDb250ZXh0LCBkYXRldGltZSwgZmFsbGJhY2tXaXRoTG9jYWxlQ2hhaW4sIGZhbGxiYWNrV2l0aFNpbXBsZSwgZ2V0QWRkaXRpb25hbE1ldGEsIGdldERldlRvb2xzSG9vaywgZ2V0RmFsbGJhY2tDb250ZXh0LCBnZXRXYXJuTWVzc2FnZSwgaGFuZGxlTWlzc2luZywgaW5pdEkxOG5EZXZUb29scywgaXNNZXNzYWdlRnVuY3Rpb24sIGlzVHJhbnNsYXRlRmFsbGJhY2tXYXJuLCBpc1RyYW5zbGF0ZU1pc3NpbmdXYXJuLCBudW1iZXIsIHBhcnNlLCBwYXJzZURhdGVUaW1lQXJncywgcGFyc2VOdW1iZXJBcmdzLCBwYXJzZVRyYW5zbGF0ZUFyZ3MsIHJlZ2lzdGVyTG9jYWxlRmFsbGJhY2tlciwgcmVnaXN0ZXJNZXNzYWdlQ29tcGlsZXIsIHJlZ2lzdGVyTWVzc2FnZVJlc29sdmVyLCByZXNvbHZlVmFsdWUsIHJlc29sdmVXaXRoS2V5VmFsdWUsIHNldEFkZGl0aW9uYWxNZXRhLCBzZXREZXZUb29sc0hvb2ssIHNldEZhbGxiYWNrQ29udGV4dCwgdHJhbnNsYXRlLCB0cmFuc2xhdGVEZXZUb29scywgdXBkYXRlRmFsbGJhY2tMb2NhbGUgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js ***!
|
||
\***************************************************************************/
|
||
/*! exports provided: IntlifyDevToolsHooks */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IntlifyDevToolsHooks\", function() { return IntlifyDevToolsHooks; });\n/*!\n * devtools-if v9.2.0-beta.34\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\r\n I18nInit: 'i18n:init',\r\n FunctionTranslate: 'function:translate'\r\n};\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGludGxpZnkvZGV2dG9vbHMtaWYvZGlzdC9kZXZ0b29scy1pZi5lc20tYnVuZGxlci5qcz9mNDU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWdDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BpbnRsaWZ5L2RldnRvb2xzLWlmL2Rpc3QvZGV2dG9vbHMtaWYuZXNtLWJ1bmRsZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAgKiBkZXZ0b29scy1pZiB2OS4yLjAtYmV0YS4zNFxuICAqIChjKSAyMDIyIGthenV5YSBrYXdhZ3VjaGlcbiAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gICovXG5jb25zdCBJbnRsaWZ5RGV2VG9vbHNIb29rcyA9ICB7XHJcbiAgICBJMThuSW5pdDogJ2kxOG46aW5pdCcsXHJcbiAgICBGdW5jdGlvblRyYW5zbGF0ZTogJ2Z1bmN0aW9uOnRyYW5zbGF0ZSdcclxufTtcblxuZXhwb3J0IHsgSW50bGlmeURldlRvb2xzSG9va3MgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js":
|
||
/*!*************************************************************************************!*\
|
||
!*** ./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js ***!
|
||
\*************************************************************************************/
|
||
/*! exports provided: CompileErrorCodes, ERROR_DOMAIN, LocationStub, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, errorMessages */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CompileErrorCodes\", function() { return CompileErrorCodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERROR_DOMAIN\", function() { return ERROR_DOMAIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LocationStub\", function() { return LocationStub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"baseCompile\", function() { return baseCompile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCompileError\", function() { return createCompileError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createLocation\", function() { return createLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createParser\", function() { return createParser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createPosition\", function() { return createPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultOnError\", function() { return defaultOnError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorMessages\", function() { return errorMessages; });\n/* harmony import */ var _intlify_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @intlify/shared */ \"./node_modules/@intlify/shared/dist/shared.esm-bundler.js\");\n/*!\n * message-compiler v9.2.0-beta.34\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n\n\nconst CompileErrorCodes = {\r\n // tokenizer error codes\r\n EXPECTED_TOKEN: 1,\r\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\r\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\r\n UNKNOWN_ESCAPE_SEQUENCE: 4,\r\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\r\n UNBALANCED_CLOSING_BRACE: 6,\r\n UNTERMINATED_CLOSING_BRACE: 7,\r\n EMPTY_PLACEHOLDER: 8,\r\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\r\n INVALID_LINKED_FORMAT: 10,\r\n // parser error codes\r\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\r\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\r\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\r\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\r\n // Special value for higher-order compilers to pick up the last code\r\n // to avoid collision of error codes. This should always be kept as the last\r\n // item.\r\n __EXTEND_POINT__: 15\r\n};\r\n/** @internal */\r\nconst errorMessages = {\r\n // tokenizer error messages\r\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\r\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\r\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\r\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\r\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\r\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\r\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\r\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\r\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\r\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\r\n // parser error messages\r\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\r\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\r\n};\r\nfunction createCompileError(code, loc, options = {}) {\r\n const { domain, messages, args } = options;\r\n const msg = ( true)\r\n ? Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"format\"])((messages || errorMessages)[code] || '', ...(args || []))\r\n : undefined;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n if (loc) {\r\n error.location = loc;\r\n }\r\n error.domain = domain;\r\n return error;\r\n}\r\n/** @internal */\r\nfunction defaultOnError(error) {\r\n throw error;\r\n}\n\nconst LocationStub = {\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createPosition(line, column, offset) {\r\n return { line, column, offset };\r\n}\r\nfunction createLocation(start, end, source) {\r\n const loc = { start, end };\r\n if (source != null) {\r\n loc.source = source;\r\n }\r\n return loc;\r\n}\n\nconst CHAR_SP = ' ';\r\nconst CHAR_CR = '\\r';\r\nconst CHAR_LF = '\\n';\r\nconst CHAR_LS = String.fromCharCode(0x2028);\r\nconst CHAR_PS = String.fromCharCode(0x2029);\r\nfunction createScanner(str) {\r\n const _buf = str;\r\n let _index = 0;\r\n let _line = 1;\r\n let _column = 1;\r\n let _peekOffset = 0;\r\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\r\n const isLF = (index) => _buf[index] === CHAR_LF;\r\n const isPS = (index) => _buf[index] === CHAR_PS;\r\n const isLS = (index) => _buf[index] === CHAR_LS;\r\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\r\n const index = () => _index;\r\n const line = () => _line;\r\n const column = () => _column;\r\n const peekOffset = () => _peekOffset;\r\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\r\n const currentChar = () => charAt(_index);\r\n const currentPeek = () => charAt(_index + _peekOffset);\r\n function next() {\r\n _peekOffset = 0;\r\n if (isLineEnd(_index)) {\r\n _line++;\r\n _column = 0;\r\n }\r\n if (isCRLF(_index)) {\r\n _index++;\r\n }\r\n _index++;\r\n _column++;\r\n return _buf[_index];\r\n }\r\n function peek() {\r\n if (isCRLF(_index + _peekOffset)) {\r\n _peekOffset++;\r\n }\r\n _peekOffset++;\r\n return _buf[_index + _peekOffset];\r\n }\r\n function reset() {\r\n _index = 0;\r\n _line = 1;\r\n _column = 1;\r\n _peekOffset = 0;\r\n }\r\n function resetPeek(offset = 0) {\r\n _peekOffset = offset;\r\n }\r\n function skipToPeek() {\r\n const target = _index + _peekOffset;\r\n // eslint-disable-next-line no-unmodified-loop-condition\r\n while (target !== _index) {\r\n next();\r\n }\r\n _peekOffset = 0;\r\n }\r\n return {\r\n index,\r\n line,\r\n column,\r\n peekOffset,\r\n charAt,\r\n currentChar,\r\n currentPeek,\r\n next,\r\n peek,\r\n reset,\r\n resetPeek,\r\n skipToPeek\r\n };\r\n}\n\nconst EOF = undefined;\r\nconst LITERAL_DELIMITER = \"'\";\r\nconst ERROR_DOMAIN$1 = 'tokenizer';\r\nfunction createTokenizer(source, options = {}) {\r\n const location = options.location !== false;\r\n const _scnr = createScanner(source);\r\n const currentOffset = () => _scnr.index();\r\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\r\n const _initLoc = currentPosition();\r\n const _initOffset = currentOffset();\r\n const _context = {\r\n currentType: 14 /* EOF */,\r\n offset: _initOffset,\r\n startLoc: _initLoc,\r\n endLoc: _initLoc,\r\n lastType: 14 /* EOF */,\r\n lastOffset: _initOffset,\r\n lastStartLoc: _initLoc,\r\n lastEndLoc: _initLoc,\r\n braceNest: 0,\r\n inLinked: false,\r\n text: ''\r\n };\r\n const context = () => _context;\r\n const { onError } = options;\r\n function emitError(code, pos, offset, ...args) {\r\n const ctx = context();\r\n pos.column += offset;\r\n pos.offset += offset;\r\n if (onError) {\r\n const loc = createLocation(ctx.startLoc, pos);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN$1,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function getToken(context, type, value) {\r\n context.endLoc = currentPosition();\r\n context.currentType = type;\r\n const token = { type };\r\n if (location) {\r\n token.loc = createLocation(context.startLoc, context.endLoc);\r\n }\r\n if (value != null) {\r\n token.value = value;\r\n }\r\n return token;\r\n }\r\n const getEndToken = (context) => getToken(context, 14 /* EOF */);\r\n function eat(scnr, ch) {\r\n if (scnr.currentChar() === ch) {\r\n scnr.next();\r\n return ch;\r\n }\r\n else {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function peekSpaces(scnr) {\r\n let buf = '';\r\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\r\n buf += scnr.currentPeek();\r\n scnr.peek();\r\n }\r\n return buf;\r\n }\r\n function skipSpaces(scnr) {\r\n const buf = peekSpaces(scnr);\r\n scnr.skipToPeek();\r\n return buf;\r\n }\r\n function isIdentifierStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n cc === 95 // _\r\n );\r\n }\r\n function isNumberStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n }\r\n function isNamedIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isListIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\r\n const ret = isNumberStart(ch);\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLiteralStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDotStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 8 /* LinkedAlias */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedModifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 9 /* LinkedDot */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDelimiterStart(scnr, context) {\r\n const { currentType } = context;\r\n if (!(currentType === 8 /* LinkedAlias */ ||\r\n currentType === 12 /* LinkedModifier */)) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedReferStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 10 /* LinkedDelimiter */) {\r\n return false;\r\n }\r\n const fn = () => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return isIdentifierStart(scnr.peek());\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n ch === \":\" /* LinkedDelimiter */ ||\r\n ch === \".\" /* LinkedDot */ ||\r\n ch === CHAR_SP ||\r\n !ch) {\r\n return false;\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn();\r\n }\r\n else {\r\n // other characters\r\n return isIdentifierStart(ch);\r\n }\r\n };\r\n const ret = fn();\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isPluralStart(scnr) {\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isTextStart(scnr, reset = true) {\r\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ || !ch) {\r\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n scnr.peek();\r\n return fn(hasSpace, \"%\" /* Modulo */, true);\r\n }\r\n else if (ch === \"|\" /* Pipe */) {\r\n return prev === \"%\" /* Modulo */ || detectModulo\r\n ? true\r\n : !(prev === CHAR_SP || prev === CHAR_LF);\r\n }\r\n else if (ch === CHAR_SP) {\r\n scnr.peek();\r\n return fn(true, CHAR_SP, detectModulo);\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn(true, CHAR_LF, detectModulo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n const ret = fn();\r\n reset && scnr.resetPeek();\r\n return ret;\r\n }\r\n function takeChar(scnr, fn) {\r\n const ch = scnr.currentChar();\r\n if (ch === EOF) {\r\n return EOF;\r\n }\r\n if (fn(ch)) {\r\n scnr.next();\r\n return ch;\r\n }\r\n return null;\r\n }\r\n function takeIdentifierChar(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n (cc >= 48 && cc <= 57) || // 0-9\r\n cc === 95 || // _\r\n cc === 36 // $\r\n );\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeHexDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 48 && cc <= 57) || // 0-9\r\n (cc >= 65 && cc <= 70) || // A-F\r\n (cc >= 97 && cc <= 102)); // a-f\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function getDigits(scnr) {\r\n let ch = '';\r\n let num = '';\r\n while ((ch = takeDigit(scnr))) {\r\n num += ch;\r\n }\r\n return num;\r\n }\r\n function readText(scnr) {\r\n let buf = '';\r\n while (true) {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"}\" /* BraceRight */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n break;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else if (ch === CHAR_SP || ch === CHAR_LF) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else if (isPluralStart(scnr)) {\r\n break;\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n return buf;\r\n }\r\n function readNamedIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return name;\r\n }\r\n function readListIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let value = '';\r\n if (scnr.currentChar() === '-') {\r\n scnr.next();\r\n value += `-${getDigits(scnr)}`;\r\n }\r\n else {\r\n value += getDigits(scnr);\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return value;\r\n }\r\n function readLiteral(scnr) {\r\n skipSpaces(scnr);\r\n eat(scnr, `\\'`);\r\n let ch = '';\r\n let literal = '';\r\n const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\r\n while ((ch = takeChar(scnr, fn))) {\r\n if (ch === '\\\\') {\r\n literal += readEscapeSequence(scnr);\r\n }\r\n else {\r\n literal += ch;\r\n }\r\n }\r\n const current = scnr.currentChar();\r\n if (current === CHAR_LF || current === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\r\n // TODO: Is it correct really?\r\n if (current === CHAR_LF) {\r\n scnr.next();\r\n eat(scnr, `\\'`);\r\n }\r\n return literal;\r\n }\r\n eat(scnr, `\\'`);\r\n return literal;\r\n }\r\n function readEscapeSequence(scnr) {\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case '\\\\':\r\n case `\\'`:\r\n scnr.next();\r\n return `\\\\${ch}`;\r\n case 'u':\r\n return readUnicodeEscapeSequence(scnr, ch, 4);\r\n case 'U':\r\n return readUnicodeEscapeSequence(scnr, ch, 6);\r\n default:\r\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\r\n eat(scnr, unicode);\r\n let sequence = '';\r\n for (let i = 0; i < digits; i++) {\r\n const ch = takeHexDigit(scnr);\r\n if (!ch) {\r\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\r\n break;\r\n }\r\n sequence += ch;\r\n }\r\n return `\\\\${unicode}${sequence}`;\r\n }\r\n function readInvalidIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let identifiers = '';\r\n const closure = (ch) => ch !== \"{\" /* BraceLeft */ &&\r\n ch !== \"}\" /* BraceRight */ &&\r\n ch !== CHAR_SP &&\r\n ch !== CHAR_LF;\r\n while ((ch = takeChar(scnr, closure))) {\r\n identifiers += ch;\r\n }\r\n return identifiers;\r\n }\r\n function readLinkedModifier(scnr) {\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n return name;\r\n }\r\n function readLinkedRefer(scnr) {\r\n const fn = (detect = false, buf) => {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_SP) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_LF) {\r\n buf += ch;\r\n scnr.next();\r\n return fn(detect, buf);\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n return fn(true, buf);\r\n }\r\n };\r\n return fn(false, '');\r\n }\r\n function readPlural(scnr) {\r\n skipSpaces(scnr);\r\n const plural = eat(scnr, \"|\" /* Pipe */);\r\n skipSpaces(scnr);\r\n return plural;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInPlaceholder(scnr, context) {\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n if (context.braceNest >= 1) {\r\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\r\n skipSpaces(scnr);\r\n context.braceNest++;\r\n return token;\r\n case \"}\" /* BraceRight */:\r\n if (context.braceNest > 0 &&\r\n context.currentType === 2 /* BraceLeft */) {\r\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n context.braceNest--;\r\n context.braceNest > 0 && skipSpaces(scnr);\r\n if (context.inLinked && context.braceNest === 0) {\r\n context.inLinked = false;\r\n }\r\n return token;\r\n case \"@\" /* LinkedAlias */:\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = readTokenInLinked(scnr, context) || getEndToken(context);\r\n context.braceNest = 0;\r\n return token;\r\n default:\r\n let validNamedIdentifier = true;\r\n let validListIdentifier = true;\r\n let validLiteral = true;\r\n if (isPluralStart(scnr)) {\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (context.braceNest > 0 &&\r\n (context.currentType === 5 /* Named */ ||\r\n context.currentType === 6 /* List */ ||\r\n context.currentType === 7 /* Literal */)) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n context.braceNest = 0;\r\n return readToken(scnr, context);\r\n }\r\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\r\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\r\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validLiteral = isLiteralStart(scnr, context))) {\r\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\r\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\r\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\r\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInLinked(scnr, context) {\r\n const { currentType } = context;\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n if ((currentType === 8 /* LinkedAlias */ ||\r\n currentType === 9 /* LinkedDot */ ||\r\n currentType === 12 /* LinkedModifier */ ||\r\n currentType === 10 /* LinkedDelimiter */) &&\r\n (ch === CHAR_LF || ch === CHAR_SP)) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n switch (ch) {\r\n case \"@\" /* LinkedAlias */:\r\n scnr.next();\r\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\r\n context.inLinked = true;\r\n return token;\r\n case \".\" /* LinkedDot */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\r\n case \":\" /* LinkedDelimiter */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isLinkedDotStart(scnr, context) ||\r\n isLinkedDelimiterStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return readTokenInLinked(scnr, context);\r\n }\r\n if (isLinkedModifierStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\r\n }\r\n if (isLinkedReferStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n if (ch === \"{\" /* BraceLeft */) {\r\n // scan the placeholder\r\n return readTokenInPlaceholder(scnr, context) || token;\r\n }\r\n else {\r\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\r\n }\r\n }\r\n if (currentType === 8 /* LinkedAlias */) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return readToken(scnr, context);\r\n }\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readToken(scnr, context) {\r\n let token = { type: 14 /* EOF */ };\r\n if (context.braceNest > 0) {\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n }\r\n if (context.inLinked) {\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n }\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n case \"}\" /* BraceRight */:\r\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\r\n scnr.next();\r\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n case \"@\" /* LinkedAlias */:\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isTextStart(scnr)) {\r\n return getToken(context, 0 /* Text */, readText(scnr));\r\n }\r\n if (ch === \"%\" /* Modulo */) {\r\n scnr.next();\r\n return getToken(context, 4 /* Modulo */, \"%\" /* Modulo */);\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n function nextToken() {\r\n const { currentType, offset, startLoc, endLoc } = _context;\r\n _context.lastType = currentType;\r\n _context.lastOffset = offset;\r\n _context.lastStartLoc = startLoc;\r\n _context.lastEndLoc = endLoc;\r\n _context.offset = currentOffset();\r\n _context.startLoc = currentPosition();\r\n if (_scnr.currentChar() === EOF) {\r\n return getToken(_context, 14 /* EOF */);\r\n }\r\n return readToken(_scnr, _context);\r\n }\r\n return {\r\n nextToken,\r\n currentOffset,\r\n currentPosition,\r\n context\r\n };\r\n}\n\nconst ERROR_DOMAIN = 'parser';\r\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\r\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\r\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\r\n switch (match) {\r\n case `\\\\\\\\`:\r\n return `\\\\`;\r\n case `\\\\\\'`:\r\n return `\\'`;\r\n default: {\r\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\r\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\r\n return String.fromCodePoint(codePoint);\r\n }\r\n // invalid ...\r\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\r\n return '<27>';\r\n }\r\n }\r\n}\r\nfunction createParser(options = {}) {\r\n const location = options.location !== false;\r\n const { onError } = options;\r\n function emitError(tokenzer, code, start, offset, ...args) {\r\n const end = tokenzer.currentPosition();\r\n end.offset += offset;\r\n end.column += offset;\r\n if (onError) {\r\n const loc = createLocation(start, end);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function startNode(type, offset, loc) {\r\n const node = {\r\n type,\r\n start: offset,\r\n end: offset\r\n };\r\n if (location) {\r\n node.loc = { start: loc, end: loc };\r\n }\r\n return node;\r\n }\r\n function endNode(node, offset, pos, type) {\r\n node.end = offset;\r\n if (type) {\r\n node.type = type;\r\n }\r\n if (location && node.loc) {\r\n node.loc.end = pos;\r\n }\r\n }\r\n function parseText(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseList(tokenizer, index) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(5 /* List */, offset, loc);\r\n node.index = parseInt(index, 10);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseNamed(tokenizer, key) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(4 /* Named */, offset, loc);\r\n node.key = key;\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLiteral(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(9 /* Literal */, offset, loc);\r\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinkedModifier(tokenizer) {\r\n const token = tokenizer.nextToken();\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\r\n const node = startNode(8 /* LinkedModifier */, offset, loc);\r\n if (token.type !== 12 /* LinkedModifier */) {\r\n // empty modifier\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\r\n node.value = '';\r\n endNode(node, offset, loc);\r\n return {\r\n nextConsumeToken: token,\r\n node\r\n };\r\n }\r\n // check token\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.value = token.value || '';\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node\r\n };\r\n }\r\n function parseLinkedKey(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinked(tokenizer) {\r\n const context = tokenizer.context();\r\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\r\n let token = tokenizer.nextToken();\r\n if (token.type === 9 /* LinkedDot */) {\r\n const parsed = parseLinkedModifier(tokenizer);\r\n linkedNode.modifier = parsed.node;\r\n token = parsed.nextConsumeToken || tokenizer.nextToken();\r\n }\r\n // asset check token\r\n if (token.type !== 10 /* LinkedDelimiter */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n token = tokenizer.nextToken();\r\n // skip brace left\r\n if (token.type === 2 /* BraceLeft */) {\r\n token = tokenizer.nextToken();\r\n }\r\n switch (token.type) {\r\n case 11 /* LinkedKey */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseNamed(tokenizer, token.value || '');\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseList(tokenizer, token.value || '');\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\r\n break;\r\n default:\r\n // empty key\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\r\n const nextContext = tokenizer.context();\r\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\r\n emptyLinkedKeyNode.value = '';\r\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\r\n linkedNode.key = emptyLinkedKeyNode;\r\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\r\n return {\r\n nextConsumeToken: token,\r\n node: linkedNode\r\n };\r\n }\r\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node: linkedNode\r\n };\r\n }\r\n function parseMessage(tokenizer) {\r\n const context = tokenizer.context();\r\n const startOffset = context.currentType === 1 /* Pipe */\r\n ? tokenizer.currentOffset()\r\n : context.offset;\r\n const startLoc = context.currentType === 1 /* Pipe */\r\n ? context.endLoc\r\n : context.startLoc;\r\n const node = startNode(2 /* Message */, startOffset, startLoc);\r\n node.items = [];\r\n let nextToken = null;\r\n do {\r\n const token = nextToken || tokenizer.nextToken();\r\n nextToken = null;\r\n switch (token.type) {\r\n case 0 /* Text */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseText(tokenizer, token.value || ''));\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseList(tokenizer, token.value || ''));\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseNamed(tokenizer, token.value || ''));\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseLiteral(tokenizer, token.value || ''));\r\n break;\r\n case 8 /* LinkedAlias */:\r\n const parsed = parseLinked(tokenizer);\r\n node.items.push(parsed.node);\r\n nextToken = parsed.nextConsumeToken || null;\r\n break;\r\n }\r\n } while (context.currentType !== 14 /* EOF */ &&\r\n context.currentType !== 1 /* Pipe */);\r\n // adjust message node loc\r\n const endOffset = context.currentType === 1 /* Pipe */\r\n ? context.lastOffset\r\n : tokenizer.currentOffset();\r\n const endLoc = context.currentType === 1 /* Pipe */\r\n ? context.lastEndLoc\r\n : tokenizer.currentPosition();\r\n endNode(node, endOffset, endLoc);\r\n return node;\r\n }\r\n function parsePlural(tokenizer, offset, loc, msgNode) {\r\n const context = tokenizer.context();\r\n let hasEmptyMessage = msgNode.items.length === 0;\r\n const node = startNode(1 /* Plural */, offset, loc);\r\n node.cases = [];\r\n node.cases.push(msgNode);\r\n do {\r\n const msg = parseMessage(tokenizer);\r\n if (!hasEmptyMessage) {\r\n hasEmptyMessage = msg.items.length === 0;\r\n }\r\n node.cases.push(msg);\r\n } while (context.currentType !== 14 /* EOF */);\r\n if (hasEmptyMessage) {\r\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseResource(tokenizer) {\r\n const context = tokenizer.context();\r\n const { offset, startLoc } = context;\r\n const msgNode = parseMessage(tokenizer);\r\n if (context.currentType === 14 /* EOF */) {\r\n return msgNode;\r\n }\r\n else {\r\n return parsePlural(tokenizer, offset, startLoc, msgNode);\r\n }\r\n }\r\n function parse(source) {\r\n const tokenizer = createTokenizer(source, Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, options));\r\n const context = tokenizer.context();\r\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\r\n if (location && node.loc) {\r\n node.loc.source = source;\r\n }\r\n node.body = parseResource(tokenizer);\r\n // assert whether achieved to EOF\r\n if (context.currentType !== 14 /* EOF */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n return { parse };\r\n}\r\nfunction getTokenCaption(token) {\r\n if (token.type === 14 /* EOF */) {\r\n return 'EOF';\r\n }\r\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\r\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\r\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\r\n) {\r\n const _context = {\r\n ast,\r\n helpers: new Set()\r\n };\r\n const context = () => _context;\r\n const helper = (name) => {\r\n _context.helpers.add(name);\r\n return name;\r\n };\r\n return { context, helper };\r\n}\r\nfunction traverseNodes(nodes, transformer) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n traverseNode(nodes[i], transformer);\r\n }\r\n}\r\nfunction traverseNode(node, transformer) {\r\n // TODO: if we need pre-hook of transform, should be implemented to here\r\n switch (node.type) {\r\n case 1 /* Plural */:\r\n traverseNodes(node.cases, transformer);\r\n transformer.helper(\"plural\" /* PLURAL */);\r\n break;\r\n case 2 /* Message */:\r\n traverseNodes(node.items, transformer);\r\n break;\r\n case 6 /* Linked */:\r\n const linked = node;\r\n traverseNode(linked.key, transformer);\r\n transformer.helper(\"linked\" /* LINKED */);\r\n break;\r\n case 5 /* List */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"list\" /* LIST */);\r\n break;\r\n case 4 /* Named */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"named\" /* NAMED */);\r\n break;\r\n }\r\n // TODO: if we need post-hook of transform, should be implemented to here\r\n}\r\n// transform AST\r\nfunction transform(ast, options = {} // eslint-disable-line\r\n) {\r\n const transformer = createTransformer(ast);\r\n transformer.helper(\"normalize\" /* NORMALIZE */);\r\n // traverse\r\n ast.body && traverseNode(ast.body, transformer);\r\n // set meta information\r\n const context = transformer.context();\r\n ast.helpers = Array.from(context.helpers);\r\n}\n\nfunction createCodeGenerator(ast, options) {\r\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\r\n const _context = {\r\n source: ast.loc.source,\r\n filename,\r\n code: '',\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n map: undefined,\r\n breakLineCode,\r\n needIndent: _needIndent,\r\n indentLevel: 0\r\n };\r\n const context = () => _context;\r\n function push(code, node) {\r\n _context.code += code;\r\n }\r\n function _newline(n, withBreakLine = true) {\r\n const _breakLineCode = withBreakLine ? breakLineCode : '';\r\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\r\n }\r\n function indent(withNewLine = true) {\r\n const level = ++_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function deindent(withNewLine = true) {\r\n const level = --_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function newline() {\r\n _newline(_context.indentLevel);\r\n }\r\n const helper = (key) => `_${key}`;\r\n const needIndent = () => _context.needIndent;\r\n return {\r\n context,\r\n push,\r\n indent,\r\n deindent,\r\n newline,\r\n helper,\r\n needIndent\r\n };\r\n}\r\nfunction generateLinkedNode(generator, node) {\r\n const { helper } = generator;\r\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\r\n generateNode(generator, node.key);\r\n if (node.modifier) {\r\n generator.push(`, `);\r\n generateNode(generator, node.modifier);\r\n }\r\n generator.push(`)`);\r\n}\r\nfunction generateMessageNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.items.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.items[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push('])');\r\n}\r\nfunction generatePluralNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n if (node.cases.length > 1) {\r\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.cases.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.cases[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push(`])`);\r\n }\r\n}\r\nfunction generateResource(generator, node) {\r\n if (node.body) {\r\n generateNode(generator, node.body);\r\n }\r\n else {\r\n generator.push('null');\r\n }\r\n}\r\nfunction generateNode(generator, node) {\r\n const { helper } = generator;\r\n switch (node.type) {\r\n case 0 /* Resource */:\r\n generateResource(generator, node);\r\n break;\r\n case 1 /* Plural */:\r\n generatePluralNode(generator, node);\r\n break;\r\n case 2 /* Message */:\r\n generateMessageNode(generator, node);\r\n break;\r\n case 6 /* Linked */:\r\n generateLinkedNode(generator, node);\r\n break;\r\n case 8 /* LinkedModifier */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 7 /* LinkedKey */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 5 /* List */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\r\n break;\r\n case 4 /* Named */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\r\n break;\r\n case 9 /* Literal */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 3 /* Text */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n default:\r\n if ((true)) {\r\n throw new Error(`unhandled codegen node type: ${node.type}`);\r\n }\r\n }\r\n}\r\n// generate code from AST\r\nconst generate = (ast, options = {} // eslint-disable-line\r\n) => {\r\n const mode = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.mode) ? options.mode : 'normal';\r\n const filename = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.filename)\r\n ? options.filename\r\n : 'message.intl';\r\n const sourceMap = !!options.sourceMap;\r\n // prettier-ignore\r\n const breakLineCode = options.breakLineCode != null\r\n ? options.breakLineCode\r\n : mode === 'arrow'\r\n ? ';'\r\n : '\\n';\r\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\r\n const helpers = ast.helpers || [];\r\n const generator = createCodeGenerator(ast, {\r\n mode,\r\n filename,\r\n sourceMap,\r\n breakLineCode,\r\n needIndent\r\n });\r\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\r\n generator.indent(needIndent);\r\n if (helpers.length > 0) {\r\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\r\n generator.newline();\r\n }\r\n generator.push(`return `);\r\n generateNode(generator, ast);\r\n generator.deindent(needIndent);\r\n generator.push(`}`);\r\n const { code, map } = generator.context();\r\n return {\r\n ast,\r\n code,\r\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\r\n };\r\n};\n\nfunction baseCompile(source, options = {}) {\r\n const assignedOptions = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, options);\r\n // parse source codes\r\n const parser = createParser(assignedOptions);\r\n const ast = parser.parse(source);\r\n // transform ASTs\r\n transform(ast, assignedOptions);\r\n // generate javascript codes\r\n return generate(ast, assignedOptions);\r\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGludGxpZnkvbWVzc2FnZS1jb21waWxlci9kaXN0L21lc3NhZ2UtY29tcGlsZXIuZXNtLWJ1bmRsZXIuanM/ZjkyZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzJEOztBQUUzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxFQUFFO0FBQzdELHVGQUF1RixFQUFFO0FBQ3pGO0FBQ0EsOEVBQThFLEVBQUU7QUFDaEYsNEZBQTRGLEVBQUU7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEZBQThGLEVBQUU7QUFDaEc7QUFDQSxtREFBbUQ7QUFDbkQsV0FBVyx5QkFBeUI7QUFDcEMsaUJBQWlCLEtBQXFDO0FBQ3RELFVBQVUsOERBQU07QUFDaEIsVUFBVSxTQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxnQ0FBZ0M7QUFDNUMsVUFBVTtBQUNWO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBLGVBQWUsY0FBYztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGNBQWM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGNBQWM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxjQUFjO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsY0FBYztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGNBQWM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGNBQWM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGdCQUFnQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsR0FBRztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsWUFBWTtBQUNuQztBQUNBO0FBQ0Esd0dBQXdHLFFBQVEsRUFBRSxTQUFTLEVBQUUsbUJBQW1CO0FBQ2hKO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVEsRUFBRSxTQUFTO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekMscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0U7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxjQUFjO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsd0NBQXdDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbURBQW1ELEVBQUUsa0JBQWtCLEVBQUU7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx3Q0FBd0MsV0FBVztBQUNsRTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdDQUF3QyxXQUFXO0FBQ2xFO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsd0NBQXdDLFdBQVc7QUFDbEU7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdDQUF3QyxXQUFXO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsOERBQU0sR0FBRztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyw4REFBOEQ7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsSUFBSTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsc0JBQXNCLDhCQUE4QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxQkFBcUI7QUFDaEMsc0JBQXNCLG9DQUFvQztBQUMxRDtBQUNBO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFCQUFxQjtBQUNoQztBQUNBLDBCQUEwQiw4QkFBOEI7QUFDeEQ7QUFDQTtBQUNBLHVCQUF1QixZQUFZO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsd0NBQXdDLEdBQUcsMEJBQTBCLEdBQUcsV0FBVztBQUNqSDtBQUNBO0FBQ0EsOEJBQThCLHdDQUF3QyxHQUFHLDRCQUE0QixHQUFHLHlCQUF5QjtBQUNqSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLElBQXFDO0FBQ3RELGdFQUFnRSxVQUFVO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0EsaUJBQWlCLGdFQUFRO0FBQ3pCLHFCQUFxQixnRUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZ0VBQWdFLGVBQWU7QUFDL0U7QUFDQTtBQUNBLCtCQUErQixHQUFHLG9CQUFvQixFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixXQUFXLFlBQVk7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlDQUF5QztBQUN6Qyw0QkFBNEIsOERBQU0sR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUV1SyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AaW50bGlmeS9tZXNzYWdlLWNvbXBpbGVyL2Rpc3QvbWVzc2FnZS1jb21waWxlci5lc20tYnVuZGxlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICAqIG1lc3NhZ2UtY29tcGlsZXIgdjkuMi4wLWJldGEuMzRcbiAgKiAoYykgMjAyMiBrYXp1eWEga2F3YWd1Y2hpXG4gICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICAqL1xuaW1wb3J0IHsgZm9ybWF0LCBhc3NpZ24sIGlzU3RyaW5nIH0gZnJvbSAnQGludGxpZnkvc2hhcmVkJztcblxuY29uc3QgQ29tcGlsZUVycm9yQ29kZXMgPSB7XHJcbiAgICAvLyB0b2tlbml6ZXIgZXJyb3IgY29kZXNcclxuICAgIEVYUEVDVEVEX1RPS0VOOiAxLFxyXG4gICAgSU5WQUxJRF9UT0tFTl9JTl9QTEFDRUhPTERFUjogMixcclxuICAgIFVOVEVSTUlOQVRFRF9TSU5HTEVfUVVPVEVfSU5fUExBQ0VIT0xERVI6IDMsXHJcbiAgICBVTktOT1dOX0VTQ0FQRV9TRVFVRU5DRTogNCxcclxuICAgIElOVkFMSURfVU5JQ09ERV9FU0NBUEVfU0VRVUVOQ0U6IDUsXHJcbiAgICBVTkJBTEFOQ0VEX0NMT1NJTkdfQlJBQ0U6IDYsXHJcbiAgICBVTlRFUk1JTkFURURfQ0xPU0lOR19CUkFDRTogNyxcclxuICAgIEVNUFRZX1BMQUNFSE9MREVSOiA4LFxyXG4gICAgTk9UX0FMTE9XX05FU1RfUExBQ0VIT0xERVI6IDksXHJcbiAgICBJTlZBTElEX0xJTktFRF9GT1JNQVQ6IDEwLFxyXG4gICAgLy8gcGFyc2VyIGVycm9yIGNvZGVzXHJcbiAgICBNVVNUX0hBVkVfTUVTU0FHRVNfSU5fUExVUkFMOiAxMSxcclxuICAgIFVORVhQRUNURURfRU1QVFlfTElOS0VEX01PRElGSUVSOiAxMixcclxuICAgIFVORVhQRUNURURfRU1QVFlfTElOS0VEX0tFWTogMTMsXHJcbiAgICBVTkVYUEVDVEVEX0xFWElDQUxfQU5BTFlTSVM6IDE0LFxyXG4gICAgLy8gU3BlY2lhbCB2YWx1ZSBmb3IgaGlnaGVyLW9yZGVyIGNvbXBpbGVycyB0byBwaWNrIHVwIHRoZSBsYXN0IGNvZGVcclxuICAgIC8vIHRvIGF2b2lkIGNvbGxpc2lvbiBvZiBlcnJvciBjb2Rlcy4gVGhpcyBzaG91bGQgYWx3YXlzIGJlIGtlcHQgYXMgdGhlIGxhc3RcclxuICAgIC8vIGl0ZW0uXHJcbiAgICBfX0VYVEVORF9QT0lOVF9fOiAxNVxyXG59O1xyXG4vKiogQGludGVybmFsICovXHJcbmNvbnN0IGVycm9yTWVzc2FnZXMgPSB7XHJcbiAgICAvLyB0b2tlbml6ZXIgZXJyb3IgbWVzc2FnZXNcclxuICAgIFtDb21waWxlRXJyb3JDb2Rlcy5FWFBFQ1RFRF9UT0tFTl06IGBFeHBlY3RlZCB0b2tlbjogJ3swfSdgLFxyXG4gICAgW0NvbXBpbGVFcnJvckNvZGVzLklOVkFMSURfVE9LRU5fSU5fUExBQ0VIT0xERVJdOiBgSW52YWxpZCB0b2tlbiBpbiBwbGFjZWhvbGRlcjogJ3swfSdgLFxyXG4gICAgW0NvbXBpbGVFcnJvckNvZGVzLlVOVEVSTUlOQVRFRF9TSU5HTEVfUVVPVEVfSU5fUExBQ0VIT0xERVJdOiBgVW50ZXJtaW5hdGVkIHNpbmdsZSBxdW90ZSBpbiBwbGFjZWhvbGRlcmAsXHJcbiAgICBbQ29tcGlsZUVycm9yQ29kZXMuVU5LTk9XTl9FU0NBUEVfU0VRVUVOQ0VdOiBgVW5rbm93biBlc2NhcGUgc2VxdWVuY2U6IFxcXFx7MH1gLFxyXG4gICAgW0NvbXBpbGVFcnJvckNvZGVzLklOVkFMSURfVU5JQ09ERV9FU0NBUEVfU0VRVUVOQ0VdOiBgSW52YWxpZCB1bmljb2RlIGVzY2FwZSBzZXF1ZW5jZTogezB9YCxcclxuICAgIFtDb21waWxlRXJyb3JDb2Rlcy5VTkJBTEFOQ0VEX0NMT1NJTkdfQlJBQ0VdOiBgVW5iYWxhbmNlZCBjbG9zaW5nIGJyYWNlYCxcclxuICAgIFtDb21waWxlRXJyb3JDb2Rlcy5VTlRFUk1JTkFURURfQ0xPU0lOR19CUkFDRV06IGBVbnRlcm1pbmF0ZWQgY2xvc2luZyBicmFjZWAsXHJcbiAgICBbQ29tcGlsZUVycm9yQ29kZXMuRU1QVFlfUExBQ0VIT0xERVJdOiBgRW1wdHkgcGxhY2Vob2xkZXJgLFxyXG4gICAgW0NvbXBpbGVFcnJvckNvZGVzLk5PVF9BTExPV19ORVNUX1BMQUNFSE9MREVSXTogYE5vdCBhbGxvd2VkIG5lc3QgcGxhY2Vob2xkZXJgLFxyXG4gICAgW0NvbXBpbGVFcnJvckNvZGVzLklOVkFMSURfTElOS0VEX0ZPUk1BVF06IGBJbnZhbGlkIGxpbmtlZCBmb3JtYXRgLFxyXG4gICAgLy8gcGFyc2VyIGVycm9yIG1lc3NhZ2VzXHJcbiAgICBbQ29tcGlsZUVycm9yQ29kZXMuTVVTVF9IQVZFX01FU1NBR0VTX0lOX1BMVVJBTF06IGBQbHVyYWwgbXVzdCBoYXZlIG1lc3NhZ2VzYCxcclxuICAgIFtDb21waWxlRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0VNUFRZX0xJTktFRF9NT0RJRklFUl06IGBVbmV4cGVjdGVkIGVtcHR5IGxpbmtlZCBtb2RpZmllcmAsXHJcbiAgICBbQ29tcGlsZUVycm9yQ29kZXMuVU5FWFBFQ1RFRF9FTVBUWV9MSU5LRURfS0VZXTogYFVuZXhwZWN0ZWQgZW1wdHkgbGlua2VkIGtleWAsXHJcbiAgICBbQ29tcGlsZUVycm9yQ29kZXMuVU5FWFBFQ1RFRF9MRVhJQ0FMX0FOQUxZU0lTXTogYFVuZXhwZWN0ZWQgbGV4aWNhbCBhbmFseXNpcyBpbiB0b2tlbjogJ3swfSdgXHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbXBpbGVFcnJvcihjb2RlLCBsb2MsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3QgeyBkb21haW4sIG1lc3NhZ2VzLCBhcmdzIH0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgbXNnID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyBmb3JtYXQoKG1lc3NhZ2VzIHx8IGVycm9yTWVzc2FnZXMpW2NvZGVdIHx8ICcnLCAuLi4oYXJncyB8fCBbXSkpXHJcbiAgICAgICAgOiBjb2RlO1xyXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgU3ludGF4RXJyb3IoU3RyaW5nKG1zZykpO1xyXG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XHJcbiAgICBpZiAobG9jKSB7XHJcbiAgICAgICAgZXJyb3IubG9jYXRpb24gPSBsb2M7XHJcbiAgICB9XHJcbiAgICBlcnJvci5kb21haW4gPSBkb21haW47XHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbn1cclxuLyoqIEBpbnRlcm5hbCAqL1xyXG5mdW5jdGlvbiBkZWZhdWx0T25FcnJvcihlcnJvcikge1xyXG4gICAgdGhyb3cgZXJyb3I7XHJcbn1cblxuY29uc3QgTG9jYXRpb25TdHViID0ge1xyXG4gICAgc3RhcnQ6IHsgbGluZTogMSwgY29sdW1uOiAxLCBvZmZzZXQ6IDAgfSxcclxuICAgIGVuZDogeyBsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMCB9XHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uKGxpbmUsIGNvbHVtbiwgb2Zmc2V0KSB7XHJcbiAgICByZXR1cm4geyBsaW5lLCBjb2x1bW4sIG9mZnNldCB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUxvY2F0aW9uKHN0YXJ0LCBlbmQsIHNvdXJjZSkge1xyXG4gICAgY29uc3QgbG9jID0geyBzdGFydCwgZW5kIH07XHJcbiAgICBpZiAoc291cmNlICE9IG51bGwpIHtcclxuICAgICAgICBsb2Muc291cmNlID0gc291cmNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxvYztcclxufVxuXG5jb25zdCBDSEFSX1NQID0gJyAnO1xyXG5jb25zdCBDSEFSX0NSID0gJ1xccic7XHJcbmNvbnN0IENIQVJfTEYgPSAnXFxuJztcclxuY29uc3QgQ0hBUl9MUyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgyMDI4KTtcclxuY29uc3QgQ0hBUl9QUyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgyMDI5KTtcclxuZnVuY3Rpb24gY3JlYXRlU2Nhbm5lcihzdHIpIHtcclxuICAgIGNvbnN0IF9idWYgPSBzdHI7XHJcbiAgICBsZXQgX2luZGV4ID0gMDtcclxuICAgIGxldCBfbGluZSA9IDE7XHJcbiAgICBsZXQgX2NvbHVtbiA9IDE7XHJcbiAgICBsZXQgX3BlZWtPZmZzZXQgPSAwO1xyXG4gICAgY29uc3QgaXNDUkxGID0gKGluZGV4KSA9PiBfYnVmW2luZGV4XSA9PT0gQ0hBUl9DUiAmJiBfYnVmW2luZGV4ICsgMV0gPT09IENIQVJfTEY7XHJcbiAgICBjb25zdCBpc0xGID0gKGluZGV4KSA9PiBfYnVmW2luZGV4XSA9PT0gQ0hBUl9MRjtcclxuICAgIGNvbnN0IGlzUFMgPSAoaW5kZXgpID0+IF9idWZbaW5kZXhdID09PSBDSEFSX1BTO1xyXG4gICAgY29uc3QgaXNMUyA9IChpbmRleCkgPT4gX2J1ZltpbmRleF0gPT09IENIQVJfTFM7XHJcbiAgICBjb25zdCBpc0xpbmVFbmQgPSAoaW5kZXgpID0+IGlzQ1JMRihpbmRleCkgfHwgaXNMRihpbmRleCkgfHwgaXNQUyhpbmRleCkgfHwgaXNMUyhpbmRleCk7XHJcbiAgICBjb25zdCBpbmRleCA9ICgpID0+IF9pbmRleDtcclxuICAgIGNvbnN0IGxpbmUgPSAoKSA9PiBfbGluZTtcclxuICAgIGNvbnN0IGNvbHVtbiA9ICgpID0+IF9jb2x1bW47XHJcbiAgICBjb25zdCBwZWVrT2Zmc2V0ID0gKCkgPT4gX3BlZWtPZmZzZXQ7XHJcbiAgICBjb25zdCBjaGFyQXQgPSAob2Zmc2V0KSA9PiBpc0NSTEYob2Zmc2V0KSB8fCBpc1BTKG9mZnNldCkgfHwgaXNMUyhvZmZzZXQpID8gQ0hBUl9MRiA6IF9idWZbb2Zmc2V0XTtcclxuICAgIGNvbnN0IGN1cnJlbnRDaGFyID0gKCkgPT4gY2hhckF0KF9pbmRleCk7XHJcbiAgICBjb25zdCBjdXJyZW50UGVlayA9ICgpID0+IGNoYXJBdChfaW5kZXggKyBfcGVla09mZnNldCk7XHJcbiAgICBmdW5jdGlvbiBuZXh0KCkge1xyXG4gICAgICAgIF9wZWVrT2Zmc2V0ID0gMDtcclxuICAgICAgICBpZiAoaXNMaW5lRW5kKF9pbmRleCkpIHtcclxuICAgICAgICAgICAgX2xpbmUrKztcclxuICAgICAgICAgICAgX2NvbHVtbiA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0NSTEYoX2luZGV4KSkge1xyXG4gICAgICAgICAgICBfaW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgX2luZGV4Kys7XHJcbiAgICAgICAgX2NvbHVtbisrO1xyXG4gICAgICAgIHJldHVybiBfYnVmW19pbmRleF07XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwZWVrKCkge1xyXG4gICAgICAgIGlmIChpc0NSTEYoX2luZGV4ICsgX3BlZWtPZmZzZXQpKSB7XHJcbiAgICAgICAgICAgIF9wZWVrT2Zmc2V0Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9wZWVrT2Zmc2V0Kys7XHJcbiAgICAgICAgcmV0dXJuIF9idWZbX2luZGV4ICsgX3BlZWtPZmZzZXRdO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVzZXQoKSB7XHJcbiAgICAgICAgX2luZGV4ID0gMDtcclxuICAgICAgICBfbGluZSA9IDE7XHJcbiAgICAgICAgX2NvbHVtbiA9IDE7XHJcbiAgICAgICAgX3BlZWtPZmZzZXQgPSAwO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVzZXRQZWVrKG9mZnNldCA9IDApIHtcclxuICAgICAgICBfcGVla09mZnNldCA9IG9mZnNldDtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNraXBUb1BlZWsoKSB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gX2luZGV4ICsgX3BlZWtPZmZzZXQ7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVubW9kaWZpZWQtbG9vcC1jb25kaXRpb25cclxuICAgICAgICB3aGlsZSAodGFyZ2V0ICE9PSBfaW5kZXgpIHtcclxuICAgICAgICAgICAgbmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfcGVla09mZnNldCA9IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICAgIGxpbmUsXHJcbiAgICAgICAgY29sdW1uLFxyXG4gICAgICAgIHBlZWtPZmZzZXQsXHJcbiAgICAgICAgY2hhckF0LFxyXG4gICAgICAgIGN1cnJlbnRDaGFyLFxyXG4gICAgICAgIGN1cnJlbnRQZWVrLFxyXG4gICAgICAgIG5leHQsXHJcbiAgICAgICAgcGVlayxcclxuICAgICAgICByZXNldCxcclxuICAgICAgICByZXNldFBlZWssXHJcbiAgICAgICAgc2tpcFRvUGVla1xyXG4gICAgfTtcclxufVxuXG5jb25zdCBFT0YgPSB1bmRlZmluZWQ7XHJcbmNvbnN0IExJVEVSQUxfREVMSU1JVEVSID0gXCInXCI7XHJcbmNvbnN0IEVSUk9SX0RPTUFJTiQxID0gJ3Rva2VuaXplcic7XHJcbmZ1bmN0aW9uIGNyZWF0ZVRva2VuaXplcihzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3QgbG9jYXRpb24gPSBvcHRpb25zLmxvY2F0aW9uICE9PSBmYWxzZTtcclxuICAgIGNvbnN0IF9zY25yID0gY3JlYXRlU2Nhbm5lcihzb3VyY2UpO1xyXG4gICAgY29uc3QgY3VycmVudE9mZnNldCA9ICgpID0+IF9zY25yLmluZGV4KCk7XHJcbiAgICBjb25zdCBjdXJyZW50UG9zaXRpb24gPSAoKSA9PiBjcmVhdGVQb3NpdGlvbihfc2Nuci5saW5lKCksIF9zY25yLmNvbHVtbigpLCBfc2Nuci5pbmRleCgpKTtcclxuICAgIGNvbnN0IF9pbml0TG9jID0gY3VycmVudFBvc2l0aW9uKCk7XHJcbiAgICBjb25zdCBfaW5pdE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTtcclxuICAgIGNvbnN0IF9jb250ZXh0ID0ge1xyXG4gICAgICAgIGN1cnJlbnRUeXBlOiAxNCAvKiBFT0YgKi8sXHJcbiAgICAgICAgb2Zmc2V0OiBfaW5pdE9mZnNldCxcclxuICAgICAgICBzdGFydExvYzogX2luaXRMb2MsXHJcbiAgICAgICAgZW5kTG9jOiBfaW5pdExvYyxcclxuICAgICAgICBsYXN0VHlwZTogMTQgLyogRU9GICovLFxyXG4gICAgICAgIGxhc3RPZmZzZXQ6IF9pbml0T2Zmc2V0LFxyXG4gICAgICAgIGxhc3RTdGFydExvYzogX2luaXRMb2MsXHJcbiAgICAgICAgbGFzdEVuZExvYzogX2luaXRMb2MsXHJcbiAgICAgICAgYnJhY2VOZXN0OiAwLFxyXG4gICAgICAgIGluTGlua2VkOiBmYWxzZSxcclxuICAgICAgICB0ZXh0OiAnJ1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNvbnRleHQgPSAoKSA9PiBfY29udGV4dDtcclxuICAgIGNvbnN0IHsgb25FcnJvciB9ID0gb3B0aW9ucztcclxuICAgIGZ1bmN0aW9uIGVtaXRFcnJvcihjb2RlLCBwb3MsIG9mZnNldCwgLi4uYXJncykge1xyXG4gICAgICAgIGNvbnN0IGN0eCA9IGNvbnRleHQoKTtcclxuICAgICAgICBwb3MuY29sdW1uICs9IG9mZnNldDtcclxuICAgICAgICBwb3Mub2Zmc2V0ICs9IG9mZnNldDtcclxuICAgICAgICBpZiAob25FcnJvcikge1xyXG4gICAgICAgICAgICBjb25zdCBsb2MgPSBjcmVhdGVMb2NhdGlvbihjdHguc3RhcnRMb2MsIHBvcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IGNyZWF0ZUNvbXBpbGVFcnJvcihjb2RlLCBsb2MsIHtcclxuICAgICAgICAgICAgICAgIGRvbWFpbjogRVJST1JfRE9NQUlOJDEsXHJcbiAgICAgICAgICAgICAgICBhcmdzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZ2V0VG9rZW4oY29udGV4dCwgdHlwZSwgdmFsdWUpIHtcclxuICAgICAgICBjb250ZXh0LmVuZExvYyA9IGN1cnJlbnRQb3NpdGlvbigpO1xyXG4gICAgICAgIGNvbnRleHQuY3VycmVudFR5cGUgPSB0eXBlO1xyXG4gICAgICAgIGNvbnN0IHRva2VuID0geyB0eXBlIH07XHJcbiAgICAgICAgaWYgKGxvY2F0aW9uKSB7XHJcbiAgICAgICAgICAgIHRva2VuLmxvYyA9IGNyZWF0ZUxvY2F0aW9uKGNvbnRleHQuc3RhcnRMb2MsIGNvbnRleHQuZW5kTG9jKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdG9rZW4udmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRva2VuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZ2V0RW5kVG9rZW4gPSAoY29udGV4dCkgPT4gZ2V0VG9rZW4oY29udGV4dCwgMTQgLyogRU9GICovKTtcclxuICAgIGZ1bmN0aW9uIGVhdChzY25yLCBjaCkge1xyXG4gICAgICAgIGlmIChzY25yLmN1cnJlbnRDaGFyKCkgPT09IGNoKSB7XHJcbiAgICAgICAgICAgIHNjbnIubmV4dCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gY2g7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoQ29tcGlsZUVycm9yQ29kZXMuRVhQRUNURURfVE9LRU4sIGN1cnJlbnRQb3NpdGlvbigpLCAwLCBjaCk7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwZWVrU3BhY2VzKHNjbnIpIHtcclxuICAgICAgICBsZXQgYnVmID0gJyc7XHJcbiAgICAgICAgd2hpbGUgKHNjbnIuY3VycmVudFBlZWsoKSA9PT0gQ0hBUl9TUCB8fCBzY25yLmN1cnJlbnRQZWVrKCkgPT09IENIQVJfTEYpIHtcclxuICAgICAgICAgICAgYnVmICs9IHNjbnIuY3VycmVudFBlZWsoKTtcclxuICAgICAgICAgICAgc2Nuci5wZWVrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBidWY7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBza2lwU3BhY2VzKHNjbnIpIHtcclxuICAgICAgICBjb25zdCBidWYgPSBwZWVrU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgIHNjbnIuc2tpcFRvUGVlaygpO1xyXG4gICAgICAgIHJldHVybiBidWY7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydChjaCkge1xyXG4gICAgICAgIGlmIChjaCA9PT0gRU9GKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY2MgPSBjaC5jaGFyQ29kZUF0KDApO1xyXG4gICAgICAgIHJldHVybiAoKGNjID49IDk3ICYmIGNjIDw9IDEyMikgfHwgLy8gYS16XHJcbiAgICAgICAgICAgIChjYyA+PSA2NSAmJiBjYyA8PSA5MCkgfHwgLy8gQS1aXHJcbiAgICAgICAgICAgIGNjID09PSA5NSAvLyBfXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyU3RhcnQoY2gpIHtcclxuICAgICAgICBpZiAoY2ggPT09IEVPRikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNjID0gY2guY2hhckNvZGVBdCgwKTtcclxuICAgICAgICByZXR1cm4gY2MgPj0gNDggJiYgY2MgPD0gNTc7IC8vIDAtOVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNOYW1lZElkZW50aWZpZXJTdGFydChzY25yLCBjb250ZXh0KSB7XHJcbiAgICAgICAgY29uc3QgeyBjdXJyZW50VHlwZSB9ID0gY29udGV4dDtcclxuICAgICAgICBpZiAoY3VycmVudFR5cGUgIT09IDIgLyogQnJhY2VMZWZ0ICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGVla1NwYWNlcyhzY25yKTtcclxuICAgICAgICBjb25zdCByZXQgPSBpc0lkZW50aWZpZXJTdGFydChzY25yLmN1cnJlbnRQZWVrKCkpO1xyXG4gICAgICAgIHNjbnIucmVzZXRQZWVrKCk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGlzTGlzdElkZW50aWZpZXJTdGFydChzY25yLCBjb250ZXh0KSB7XHJcbiAgICAgICAgY29uc3QgeyBjdXJyZW50VHlwZSB9ID0gY29udGV4dDtcclxuICAgICAgICBpZiAoY3VycmVudFR5cGUgIT09IDIgLyogQnJhY2VMZWZ0ICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGVla1NwYWNlcyhzY25yKTtcclxuICAgICAgICBjb25zdCBjaCA9IHNjbnIuY3VycmVudFBlZWsoKSA9PT0gJy0nID8gc2Nuci5wZWVrKCkgOiBzY25yLmN1cnJlbnRQZWVrKCk7XHJcbiAgICAgICAgY29uc3QgcmV0ID0gaXNOdW1iZXJTdGFydChjaCk7XHJcbiAgICAgICAgc2Nuci5yZXNldFBlZWsoKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNMaXRlcmFsU3RhcnQoc2NuciwgY29udGV4dCkge1xyXG4gICAgICAgIGNvbnN0IHsgY3VycmVudFR5cGUgfSA9IGNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRUeXBlICE9PSAyIC8qIEJyYWNlTGVmdCAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBlZWtTcGFjZXMoc2Nucik7XHJcbiAgICAgICAgY29uc3QgcmV0ID0gc2Nuci5jdXJyZW50UGVlaygpID09PSBMSVRFUkFMX0RFTElNSVRFUjtcclxuICAgICAgICBzY25yLnJlc2V0UGVlaygpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBpc0xpbmtlZERvdFN0YXJ0KHNjbnIsIGNvbnRleHQpIHtcclxuICAgICAgICBjb25zdCB7IGN1cnJlbnRUeXBlIH0gPSBjb250ZXh0O1xyXG4gICAgICAgIGlmIChjdXJyZW50VHlwZSAhPT0gOCAvKiBMaW5rZWRBbGlhcyAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBlZWtTcGFjZXMoc2Nucik7XHJcbiAgICAgICAgY29uc3QgcmV0ID0gc2Nuci5jdXJyZW50UGVlaygpID09PSBcIi5cIiAvKiBMaW5rZWREb3QgKi87XHJcbiAgICAgICAgc2Nuci5yZXNldFBlZWsoKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNMaW5rZWRNb2RpZmllclN0YXJ0KHNjbnIsIGNvbnRleHQpIHtcclxuICAgICAgICBjb25zdCB7IGN1cnJlbnRUeXBlIH0gPSBjb250ZXh0O1xyXG4gICAgICAgIGlmIChjdXJyZW50VHlwZSAhPT0gOSAvKiBMaW5rZWREb3QgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwZWVrU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGlzSWRlbnRpZmllclN0YXJ0KHNjbnIuY3VycmVudFBlZWsoKSk7XHJcbiAgICAgICAgc2Nuci5yZXNldFBlZWsoKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNMaW5rZWREZWxpbWl0ZXJTdGFydChzY25yLCBjb250ZXh0KSB7XHJcbiAgICAgICAgY29uc3QgeyBjdXJyZW50VHlwZSB9ID0gY29udGV4dDtcclxuICAgICAgICBpZiAoIShjdXJyZW50VHlwZSA9PT0gOCAvKiBMaW5rZWRBbGlhcyAqLyB8fFxyXG4gICAgICAgICAgICBjdXJyZW50VHlwZSA9PT0gMTIgLyogTGlua2VkTW9kaWZpZXIgKi8pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGVla1NwYWNlcyhzY25yKTtcclxuICAgICAgICBjb25zdCByZXQgPSBzY25yLmN1cnJlbnRQZWVrKCkgPT09IFwiOlwiIC8qIExpbmtlZERlbGltaXRlciAqLztcclxuICAgICAgICBzY25yLnJlc2V0UGVlaygpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBpc0xpbmtlZFJlZmVyU3RhcnQoc2NuciwgY29udGV4dCkge1xyXG4gICAgICAgIGNvbnN0IHsgY3VycmVudFR5cGUgfSA9IGNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRUeXBlICE9PSAxMCAvKiBMaW5rZWREZWxpbWl0ZXIgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2ggPSBzY25yLmN1cnJlbnRQZWVrKCk7XHJcbiAgICAgICAgICAgIGlmIChjaCA9PT0gXCJ7XCIgLyogQnJhY2VMZWZ0ICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNJZGVudGlmaWVyU3RhcnQoc2Nuci5wZWVrKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoID09PSBcIkBcIiAvKiBMaW5rZWRBbGlhcyAqLyB8fFxyXG4gICAgICAgICAgICAgICAgY2ggPT09IFwiJVwiIC8qIE1vZHVsbyAqLyB8fFxyXG4gICAgICAgICAgICAgICAgY2ggPT09IFwifFwiIC8qIFBpcGUgKi8gfHxcclxuICAgICAgICAgICAgICAgIGNoID09PSBcIjpcIiAvKiBMaW5rZWREZWxpbWl0ZXIgKi8gfHxcclxuICAgICAgICAgICAgICAgIGNoID09PSBcIi5cIiAvKiBMaW5rZWREb3QgKi8gfHxcclxuICAgICAgICAgICAgICAgIGNoID09PSBDSEFSX1NQIHx8XHJcbiAgICAgICAgICAgICAgICAhY2gpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gQ0hBUl9MRikge1xyXG4gICAgICAgICAgICAgICAgc2Nuci5wZWVrKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIG90aGVyIGNoYXJhY3RlcnNcclxuICAgICAgICAgICAgICAgIHJldHVybiBpc0lkZW50aWZpZXJTdGFydChjaCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGZuKCk7XHJcbiAgICAgICAgc2Nuci5yZXNldFBlZWsoKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNQbHVyYWxTdGFydChzY25yKSB7XHJcbiAgICAgICAgcGVla1NwYWNlcyhzY25yKTtcclxuICAgICAgICBjb25zdCByZXQgPSBzY25yLmN1cnJlbnRQZWVrKCkgPT09IFwifFwiIC8qIFBpcGUgKi87XHJcbiAgICAgICAgc2Nuci5yZXNldFBlZWsoKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNUZXh0U3RhcnQoc2NuciwgcmVzZXQgPSB0cnVlKSB7XHJcbiAgICAgICAgY29uc3QgZm4gPSAoaGFzU3BhY2UgPSBmYWxzZSwgcHJldiA9ICcnLCBkZXRlY3RNb2R1bG8gPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjaCA9IHNjbnIuY3VycmVudFBlZWsoKTtcclxuICAgICAgICAgICAgaWYgKGNoID09PSBcIntcIiAvKiBCcmFjZUxlZnQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2ID09PSBcIiVcIiAvKiBNb2R1bG8gKi8gPyBmYWxzZSA6IGhhc1NwYWNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoID09PSBcIkBcIiAvKiBMaW5rZWRBbGlhcyAqLyB8fCAhY2gpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2ID09PSBcIiVcIiAvKiBNb2R1bG8gKi8gPyB0cnVlIDogaGFzU3BhY2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09IFwiJVwiIC8qIE1vZHVsbyAqLykge1xyXG4gICAgICAgICAgICAgICAgc2Nuci5wZWVrKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm4oaGFzU3BhY2UsIFwiJVwiIC8qIE1vZHVsbyAqLywgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09IFwifFwiIC8qIFBpcGUgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2ID09PSBcIiVcIiAvKiBNb2R1bG8gKi8gfHwgZGV0ZWN0TW9kdWxvXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgOiAhKHByZXYgPT09IENIQVJfU1AgfHwgcHJldiA9PT0gQ0hBUl9MRik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09IENIQVJfU1ApIHtcclxuICAgICAgICAgICAgICAgIHNjbnIucGVlaygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZuKHRydWUsIENIQVJfU1AsIGRldGVjdE1vZHVsbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09IENIQVJfTEYpIHtcclxuICAgICAgICAgICAgICAgIHNjbnIucGVlaygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZuKHRydWUsIENIQVJfTEYsIGRldGVjdE1vZHVsbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgcmV0ID0gZm4oKTtcclxuICAgICAgICByZXNldCAmJiBzY25yLnJlc2V0UGVlaygpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiB0YWtlQ2hhcihzY25yLCBmbikge1xyXG4gICAgICAgIGNvbnN0IGNoID0gc2Nuci5jdXJyZW50Q2hhcigpO1xyXG4gICAgICAgIGlmIChjaCA9PT0gRU9GKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBFT0Y7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmbihjaCkpIHtcclxuICAgICAgICAgICAgc2Nuci5uZXh0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiBjaDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiB0YWtlSWRlbnRpZmllckNoYXIoc2Nucikge1xyXG4gICAgICAgIGNvbnN0IGNsb3N1cmUgPSAoY2gpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2MgPSBjaC5jaGFyQ29kZUF0KDApO1xyXG4gICAgICAgICAgICByZXR1cm4gKChjYyA+PSA5NyAmJiBjYyA8PSAxMjIpIHx8IC8vIGEtelxyXG4gICAgICAgICAgICAgICAgKGNjID49IDY1ICYmIGNjIDw9IDkwKSB8fCAvLyBBLVpcclxuICAgICAgICAgICAgICAgIChjYyA+PSA0OCAmJiBjYyA8PSA1NykgfHwgLy8gMC05XHJcbiAgICAgICAgICAgICAgICBjYyA9PT0gOTUgfHwgLy8gX1xyXG4gICAgICAgICAgICAgICAgY2MgPT09IDM2IC8vICRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0YWtlQ2hhcihzY25yLCBjbG9zdXJlKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHRha2VEaWdpdChzY25yKSB7XHJcbiAgICAgICAgY29uc3QgY2xvc3VyZSA9IChjaCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjYyA9IGNoLmNoYXJDb2RlQXQoMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBjYyA+PSA0OCAmJiBjYyA8PSA1NzsgLy8gMC05XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGFrZUNoYXIoc2NuciwgY2xvc3VyZSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiB0YWtlSGV4RGlnaXQoc2Nucikge1xyXG4gICAgICAgIGNvbnN0IGNsb3N1cmUgPSAoY2gpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2MgPSBjaC5jaGFyQ29kZUF0KDApO1xyXG4gICAgICAgICAgICByZXR1cm4gKChjYyA+PSA0OCAmJiBjYyA8PSA1NykgfHwgLy8gMC05XHJcbiAgICAgICAgICAgICAgICAoY2MgPj0gNjUgJiYgY2MgPD0gNzApIHx8IC8vIEEtRlxyXG4gICAgICAgICAgICAgICAgKGNjID49IDk3ICYmIGNjIDw9IDEwMikpOyAvLyBhLWZcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0YWtlQ2hhcihzY25yLCBjbG9zdXJlKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdldERpZ2l0cyhzY25yKSB7XHJcbiAgICAgICAgbGV0IGNoID0gJyc7XHJcbiAgICAgICAgbGV0IG51bSA9ICcnO1xyXG4gICAgICAgIHdoaWxlICgoY2ggPSB0YWtlRGlnaXQoc2NucikpKSB7XHJcbiAgICAgICAgICAgIG51bSArPSBjaDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlYWRUZXh0KHNjbnIpIHtcclxuICAgICAgICBsZXQgYnVmID0gJyc7XHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgY29uc3QgY2ggPSBzY25yLmN1cnJlbnRDaGFyKCk7XHJcbiAgICAgICAgICAgIGlmIChjaCA9PT0gXCJ7XCIgLyogQnJhY2VMZWZ0ICovIHx8XHJcbiAgICAgICAgICAgICAgICBjaCA9PT0gXCJ9XCIgLyogQnJhY2VSaWdodCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgY2ggPT09IFwiQFwiIC8qIExpbmtlZEFsaWFzICovIHx8XHJcbiAgICAgICAgICAgICAgICBjaCA9PT0gXCJ8XCIgLyogUGlwZSAqLyB8fFxyXG4gICAgICAgICAgICAgICAgIWNoKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gXCIlXCIgLyogTW9kdWxvICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNUZXh0U3RhcnQoc2NucikpIHtcclxuICAgICAgICAgICAgICAgICAgICBidWYgKz0gY2g7XHJcbiAgICAgICAgICAgICAgICAgICAgc2Nuci5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gQ0hBUl9TUCB8fCBjaCA9PT0gQ0hBUl9MRikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVGV4dFN0YXJ0KHNjbnIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnVmICs9IGNoO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjbnIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQbHVyYWxTdGFydChzY25yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnVmICs9IGNoO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjbnIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnVmICs9IGNoO1xyXG4gICAgICAgICAgICAgICAgc2Nuci5uZXh0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGJ1ZjtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlYWROYW1lZElkZW50aWZpZXIoc2Nucikge1xyXG4gICAgICAgIHNraXBTcGFjZXMoc2Nucik7XHJcbiAgICAgICAgbGV0IGNoID0gJyc7XHJcbiAgICAgICAgbGV0IG5hbWUgPSAnJztcclxuICAgICAgICB3aGlsZSAoKGNoID0gdGFrZUlkZW50aWZpZXJDaGFyKHNjbnIpKSkge1xyXG4gICAgICAgICAgICBuYW1lICs9IGNoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2Nuci5jdXJyZW50Q2hhcigpID09PSBFT0YpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKENvbXBpbGVFcnJvckNvZGVzLlVOVEVSTUlOQVRFRF9DTE9TSU5HX0JSQUNFLCBjdXJyZW50UG9zaXRpb24oKSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVhZExpc3RJZGVudGlmaWVyKHNjbnIpIHtcclxuICAgICAgICBza2lwU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9ICcnO1xyXG4gICAgICAgIGlmIChzY25yLmN1cnJlbnRDaGFyKCkgPT09ICctJykge1xyXG4gICAgICAgICAgICBzY25yLm5leHQoKTtcclxuICAgICAgICAgICAgdmFsdWUgKz0gYC0ke2dldERpZ2l0cyhzY25yKX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWUgKz0gZ2V0RGlnaXRzKHNjbnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2Nuci5jdXJyZW50Q2hhcigpID09PSBFT0YpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKENvbXBpbGVFcnJvckNvZGVzLlVOVEVSTUlOQVRFRF9DTE9TSU5HX0JSQUNFLCBjdXJyZW50UG9zaXRpb24oKSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlYWRMaXRlcmFsKHNjbnIpIHtcclxuICAgICAgICBza2lwU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgIGVhdChzY25yLCBgXFwnYCk7XHJcbiAgICAgICAgbGV0IGNoID0gJyc7XHJcbiAgICAgICAgbGV0IGxpdGVyYWwgPSAnJztcclxuICAgICAgICBjb25zdCBmbiA9ICh4KSA9PiB4ICE9PSBMSVRFUkFMX0RFTElNSVRFUiAmJiB4ICE9PSBDSEFSX0xGO1xyXG4gICAgICAgIHdoaWxlICgoY2ggPSB0YWtlQ2hhcihzY25yLCBmbikpKSB7XHJcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xcXFwnKSB7XHJcbiAgICAgICAgICAgICAgICBsaXRlcmFsICs9IHJlYWRFc2NhcGVTZXF1ZW5jZShzY25yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxpdGVyYWwgKz0gY2g7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHNjbnIuY3VycmVudENoYXIoKTtcclxuICAgICAgICBpZiAoY3VycmVudCA9PT0gQ0hBUl9MRiB8fCBjdXJyZW50ID09PSBFT0YpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKENvbXBpbGVFcnJvckNvZGVzLlVOVEVSTUlOQVRFRF9TSU5HTEVfUVVPVEVfSU5fUExBQ0VIT0xERVIsIGN1cnJlbnRQb3NpdGlvbigpLCAwKTtcclxuICAgICAgICAgICAgLy8gVE9ETzogSXMgaXQgY29ycmVjdCByZWFsbHk/XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50ID09PSBDSEFSX0xGKSB7XHJcbiAgICAgICAgICAgICAgICBzY25yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIGVhdChzY25yLCBgXFwnYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGxpdGVyYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVhdChzY25yLCBgXFwnYCk7XHJcbiAgICAgICAgcmV0dXJuIGxpdGVyYWw7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiByZWFkRXNjYXBlU2VxdWVuY2Uoc2Nucikge1xyXG4gICAgICAgIGNvbnN0IGNoID0gc2Nuci5jdXJyZW50Q2hhcigpO1xyXG4gICAgICAgIHN3aXRjaCAoY2gpIHtcclxuICAgICAgICAgICAgY2FzZSAnXFxcXCc6XHJcbiAgICAgICAgICAgIGNhc2UgYFxcJ2A6XHJcbiAgICAgICAgICAgICAgICBzY25yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgXFxcXCR7Y2h9YDtcclxuICAgICAgICAgICAgY2FzZSAndSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVhZFVuaWNvZGVFc2NhcGVTZXF1ZW5jZShzY25yLCBjaCwgNCk7XHJcbiAgICAgICAgICAgIGNhc2UgJ1UnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRVbmljb2RlRXNjYXBlU2VxdWVuY2Uoc2NuciwgY2gsIDYpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgZW1pdEVycm9yKENvbXBpbGVFcnJvckNvZGVzLlVOS05PV05fRVNDQVBFX1NFUVVFTkNFLCBjdXJyZW50UG9zaXRpb24oKSwgMCwgY2gpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlYWRVbmljb2RlRXNjYXBlU2VxdWVuY2Uoc2NuciwgdW5pY29kZSwgZGlnaXRzKSB7XHJcbiAgICAgICAgZWF0KHNjbnIsIHVuaWNvZGUpO1xyXG4gICAgICAgIGxldCBzZXF1ZW5jZSA9ICcnO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlnaXRzOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY2ggPSB0YWtlSGV4RGlnaXQoc2Nucik7XHJcbiAgICAgICAgICAgIGlmICghY2gpIHtcclxuICAgICAgICAgICAgICAgIGVtaXRFcnJvcihDb21waWxlRXJyb3JDb2Rlcy5JTlZBTElEX1VOSUNPREVfRVNDQVBFX1NFUVVFTkNFLCBjdXJyZW50UG9zaXRpb24oKSwgMCwgYFxcXFwke3VuaWNvZGV9JHtzZXF1ZW5jZX0ke3NjbnIuY3VycmVudENoYXIoKX1gKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlcXVlbmNlICs9IGNoO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYFxcXFwke3VuaWNvZGV9JHtzZXF1ZW5jZX1gO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVhZEludmFsaWRJZGVudGlmaWVyKHNjbnIpIHtcclxuICAgICAgICBza2lwU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgIGxldCBjaCA9ICcnO1xyXG4gICAgICAgIGxldCBpZGVudGlmaWVycyA9ICcnO1xyXG4gICAgICAgIGNvbnN0IGNsb3N1cmUgPSAoY2gpID0+IGNoICE9PSBcIntcIiAvKiBCcmFjZUxlZnQgKi8gJiZcclxuICAgICAgICAgICAgY2ggIT09IFwifVwiIC8qIEJyYWNlUmlnaHQgKi8gJiZcclxuICAgICAgICAgICAgY2ggIT09IENIQVJfU1AgJiZcclxuICAgICAgICAgICAgY2ggIT09IENIQVJfTEY7XHJcbiAgICAgICAgd2hpbGUgKChjaCA9IHRha2VDaGFyKHNjbnIsIGNsb3N1cmUpKSkge1xyXG4gICAgICAgICAgICBpZGVudGlmaWVycyArPSBjaDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGlkZW50aWZpZXJzO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVhZExpbmtlZE1vZGlmaWVyKHNjbnIpIHtcclxuICAgICAgICBsZXQgY2ggPSAnJztcclxuICAgICAgICBsZXQgbmFtZSA9ICcnO1xyXG4gICAgICAgIHdoaWxlICgoY2ggPSB0YWtlSWRlbnRpZmllckNoYXIoc2NucikpKSB7XHJcbiAgICAgICAgICAgIG5hbWUgKz0gY2g7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVhZExpbmtlZFJlZmVyKHNjbnIpIHtcclxuICAgICAgICBjb25zdCBmbiA9IChkZXRlY3QgPSBmYWxzZSwgYnVmKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoID0gc2Nuci5jdXJyZW50Q2hhcigpO1xyXG4gICAgICAgICAgICBpZiAoY2ggPT09IFwie1wiIC8qIEJyYWNlTGVmdCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgY2ggPT09IFwiJVwiIC8qIE1vZHVsbyAqLyB8fFxyXG4gICAgICAgICAgICAgICAgY2ggPT09IFwiQFwiIC8qIExpbmtlZEFsaWFzICovIHx8XHJcbiAgICAgICAgICAgICAgICBjaCA9PT0gXCJ8XCIgLyogUGlwZSAqLyB8fFxyXG4gICAgICAgICAgICAgICAgIWNoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoID09PSBDSEFSX1NQKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoID09PSBDSEFSX0xGKSB7XHJcbiAgICAgICAgICAgICAgICBidWYgKz0gY2g7XHJcbiAgICAgICAgICAgICAgICBzY25yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmbihkZXRlY3QsIGJ1Zik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBidWYgKz0gY2g7XHJcbiAgICAgICAgICAgICAgICBzY25yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmbih0cnVlLCBidWYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gZm4oZmFsc2UsICcnKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlYWRQbHVyYWwoc2Nucikge1xyXG4gICAgICAgIHNraXBTcGFjZXMoc2Nucik7XHJcbiAgICAgICAgY29uc3QgcGx1cmFsID0gZWF0KHNjbnIsIFwifFwiIC8qIFBpcGUgKi8pO1xyXG4gICAgICAgIHNraXBTcGFjZXMoc2Nucik7XHJcbiAgICAgICAgcmV0dXJuIHBsdXJhbDtcclxuICAgIH1cclxuICAgIC8vIFRPRE86IFdlIG5lZWQgcmVmYWN0b3Jpbmcgb2YgdG9rZW4gcGFyc2luZyAuLi5cclxuICAgIGZ1bmN0aW9uIHJlYWRUb2tlbkluUGxhY2Vob2xkZXIoc2NuciwgY29udGV4dCkge1xyXG4gICAgICAgIGxldCB0b2tlbiA9IG51bGw7XHJcbiAgICAgICAgY29uc3QgY2ggPSBzY25yLmN1cnJlbnRDaGFyKCk7XHJcbiAgICAgICAgc3dpdGNoIChjaCkge1xyXG4gICAgICAgICAgICBjYXNlIFwie1wiIC8qIEJyYWNlTGVmdCAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmJyYWNlTmVzdCA+PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKENvbXBpbGVFcnJvckNvZGVzLk5PVF9BTExPV19ORVNUX1BMQUNFSE9MREVSLCBjdXJyZW50UG9zaXRpb24oKSwgMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzY25yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHRva2VuID0gZ2V0VG9rZW4oY29udGV4dCwgMiAvKiBCcmFjZUxlZnQgKi8sIFwie1wiIC8qIEJyYWNlTGVmdCAqLyk7XHJcbiAgICAgICAgICAgICAgICBza2lwU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5icmFjZU5lc3QrKztcclxuICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcclxuICAgICAgICAgICAgY2FzZSBcIn1cIiAvKiBCcmFjZVJpZ2h0ICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuYnJhY2VOZXN0ID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudFR5cGUgPT09IDIgLyogQnJhY2VMZWZ0ICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKENvbXBpbGVFcnJvckNvZGVzLkVNUFRZX1BMQUNFSE9MREVSLCBjdXJyZW50UG9zaXRpb24oKSwgMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzY25yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHRva2VuID0gZ2V0VG9rZW4oY29udGV4dCwgMyAvKiBCcmFjZVJpZ2h0ICovLCBcIn1cIiAvKiBCcmFjZVJpZ2h0ICovKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYnJhY2VOZXN0LS07XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJyYWNlTmVzdCA+IDAgJiYgc2tpcFNwYWNlcyhzY25yKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmluTGlua2VkICYmIGNvbnRleHQuYnJhY2VOZXN0ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5pbkxpbmtlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xyXG4gICAgICAgICAgICBjYXNlIFwiQFwiIC8qIExpbmtlZEFsaWFzICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuYnJhY2VOZXN0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihDb21waWxlRXJyb3JDb2Rlcy5VTlRFUk1JTkFURURfQ0xPU0lOR19CUkFDRSwgY3VycmVudFBvc2l0aW9uKCksIDApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG9rZW4gPSByZWFkVG9rZW5JbkxpbmtlZChzY25yLCBjb250ZXh0KSB8fCBnZXRFbmRUb2tlbihjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYnJhY2VOZXN0ID0gMDtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGxldCB2YWxpZE5hbWVkSWRlbnRpZmllciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsaWRMaXN0SWRlbnRpZmllciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsaWRMaXRlcmFsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1BsdXJhbFN0YXJ0KHNjbnIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuYnJhY2VOZXN0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoQ29tcGlsZUVycm9yQ29kZXMuVU5URVJNSU5BVEVEX0NMT1NJTkdfQlJBQ0UsIGN1cnJlbnRQb3NpdGlvbigpLCAwKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBnZXRUb2tlbihjb250ZXh0LCAxIC8qIFBpcGUgKi8sIHJlYWRQbHVyYWwoc2NucikpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5icmFjZU5lc3QgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaW5MaW5rZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5icmFjZU5lc3QgPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGNvbnRleHQuY3VycmVudFR5cGUgPT09IDUgLyogTmFtZWQgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jdXJyZW50VHlwZSA9PT0gNiAvKiBMaXN0ICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudFR5cGUgPT09IDcgLyogTGl0ZXJhbCAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoQ29tcGlsZUVycm9yQ29kZXMuVU5URVJNSU5BVEVEX0NMT1NJTkdfQlJBQ0UsIGN1cnJlbnRQb3NpdGlvbigpLCAwKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmJyYWNlTmVzdCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRUb2tlbihzY25yLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgodmFsaWROYW1lZElkZW50aWZpZXIgPSBpc05hbWVkSWRlbnRpZmllclN0YXJ0KHNjbnIsIGNvbnRleHQpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gZ2V0VG9rZW4oY29udGV4dCwgNSAvKiBOYW1lZCAqLywgcmVhZE5hbWVkSWRlbnRpZmllcihzY25yKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcFNwYWNlcyhzY25yKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHZhbGlkTGlzdElkZW50aWZpZXIgPSBpc0xpc3RJZGVudGlmaWVyU3RhcnQoc2NuciwgY29udGV4dCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBnZXRUb2tlbihjb250ZXh0LCA2IC8qIExpc3QgKi8sIHJlYWRMaXN0SWRlbnRpZmllcihzY25yKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcFNwYWNlcyhzY25yKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHZhbGlkTGl0ZXJhbCA9IGlzTGl0ZXJhbFN0YXJ0KHNjbnIsIGNvbnRleHQpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gZ2V0VG9rZW4oY29udGV4dCwgNyAvKiBMaXRlcmFsICovLCByZWFkTGl0ZXJhbChzY25yKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcFNwYWNlcyhzY25yKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkTmFtZWRJZGVudGlmaWVyICYmICF2YWxpZExpc3RJZGVudGlmaWVyICYmICF2YWxpZExpdGVyYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgYmUgcmUtZGVzaWduZWQgaW52YWxpZCBjYXNlcywgd2hlbiB3ZSB3aWxsIGV4dGVuZCBtZXNzYWdlIHN5bnRheCBuZWFyIHRoZSBmdXR1cmUgLi4uXHJcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBnZXRUb2tlbihjb250ZXh0LCAxMyAvKiBJbnZhbGlkUGxhY2UgKi8sIHJlYWRJbnZhbGlkSWRlbnRpZmllcihzY25yKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKENvbXBpbGVFcnJvckNvZGVzLklOVkFMSURfVE9LRU5fSU5fUExBQ0VIT0xERVIsIGN1cnJlbnRQb3NpdGlvbigpLCAwLCB0b2tlbi52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcFNwYWNlcyhzY25yKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRva2VuO1xyXG4gICAgfVxyXG4gICAgLy8gVE9ETzogV2UgbmVlZCByZWZhY3RvcmluZyBvZiB0b2tlbiBwYXJzaW5nIC4uLlxyXG4gICAgZnVuY3Rpb24gcmVhZFRva2VuSW5MaW5rZWQoc2NuciwgY29udGV4dCkge1xyXG4gICAgICAgIGNvbnN0IHsgY3VycmVudFR5cGUgfSA9IGNvbnRleHQ7XHJcbiAgICAgICAgbGV0IHRva2VuID0gbnVsbDtcclxuICAgICAgICBjb25zdCBjaCA9IHNjbnIuY3VycmVudENoYXIoKTtcclxuICAgICAgICBpZiAoKGN1cnJlbnRUeXBlID09PSA4IC8qIExpbmtlZEFsaWFzICovIHx8XHJcbiAgICAgICAgICAgIGN1cnJlbnRUeXBlID09PSA5IC8qIExpbmtlZERvdCAqLyB8fFxyXG4gICAgICAgICAgICBjdXJyZW50VHlwZSA9PT0gMTIgLyogTGlua2VkTW9kaWZpZXIgKi8gfHxcclxuICAgICAgICAgICAgY3VycmVudFR5cGUgPT09IDEwIC8qIExpbmtlZERlbGltaXRlciAqLykgJiZcclxuICAgICAgICAgICAgKGNoID09PSBDSEFSX0xGIHx8IGNoID09PSBDSEFSX1NQKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoQ29tcGlsZUVycm9yQ29kZXMuSU5WQUxJRF9MSU5LRURfRk9STUFULCBjdXJyZW50UG9zaXRpb24oKSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAoY2gpIHtcclxuICAgICAgICAgICAgY2FzZSBcIkBcIiAvKiBMaW5rZWRBbGlhcyAqLzpcclxuICAgICAgICAgICAgICAgIHNjbnIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgdG9rZW4gPSBnZXRUb2tlbihjb250ZXh0LCA4IC8qIExpbmtlZEFsaWFzICovLCBcIkBcIiAvKiBMaW5rZWRBbGlhcyAqLyk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmluTGlua2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcclxuICAgICAgICAgICAgY2FzZSBcIi5cIiAvKiBMaW5rZWREb3QgKi86XHJcbiAgICAgICAgICAgICAgICBza2lwU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgICAgICAgICAgc2Nuci5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VG9rZW4oY29udGV4dCwgOSAvKiBMaW5rZWREb3QgKi8sIFwiLlwiIC8qIExpbmtlZERvdCAqLyk7XHJcbiAgICAgICAgICAgIGNhc2UgXCI6XCIgLyogTGlua2VkRGVsaW1pdGVyICovOlxyXG4gICAgICAgICAgICAgICAgc2tpcFNwYWNlcyhzY25yKTtcclxuICAgICAgICAgICAgICAgIHNjbnIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFRva2VuKGNvbnRleHQsIDEwIC8qIExpbmtlZERlbGltaXRlciAqLywgXCI6XCIgLyogTGlua2VkRGVsaW1pdGVyICovKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGlmIChpc1BsdXJhbFN0YXJ0KHNjbnIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBnZXRUb2tlbihjb250ZXh0LCAxIC8qIFBpcGUgKi8sIHJlYWRQbHVyYWwoc2NucikpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5icmFjZU5lc3QgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaW5MaW5rZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNMaW5rZWREb3RTdGFydChzY25yLCBjb250ZXh0KSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGlzTGlua2VkRGVsaW1pdGVyU3RhcnQoc2NuciwgY29udGV4dCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBza2lwU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWFkVG9rZW5JbkxpbmtlZChzY25yLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpc0xpbmtlZE1vZGlmaWVyU3RhcnQoc2NuciwgY29udGV4dCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBza2lwU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRUb2tlbihjb250ZXh0LCAxMiAvKiBMaW5rZWRNb2RpZmllciAqLywgcmVhZExpbmtlZE1vZGlmaWVyKHNjbnIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpc0xpbmtlZFJlZmVyU3RhcnQoc2NuciwgY29udGV4dCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBza2lwU3BhY2VzKHNjbnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gXCJ7XCIgLyogQnJhY2VMZWZ0ICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjYW4gdGhlIHBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWFkVG9rZW5JblBsYWNlaG9sZGVyKHNjbnIsIGNvbnRleHQpIHx8IHRva2VuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFRva2VuKGNvbnRleHQsIDExIC8qIExpbmtlZEtleSAqLywgcmVhZExpbmtlZFJlZmVyKHNjbnIpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFR5cGUgPT09IDggLyogTGlua2VkQWxpYXMgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoQ29tcGlsZUVycm9yQ29kZXMuSU5WQUxJRF9MSU5LRURfRk9STUFULCBjdXJyZW50UG9zaXRpb24oKSwgMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJyYWNlTmVzdCA9IDA7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmluTGlua2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVhZFRva2VuKHNjbnIsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFRPRE86IFdlIG5lZWQgcmVmYWN0b3Jpbmcgb2YgdG9rZW4gcGFyc2luZyAuLi5cclxuICAgIGZ1bmN0aW9uIHJlYWRUb2tlbihzY25yLCBjb250ZXh0KSB7XHJcbiAgICAgICAgbGV0IHRva2VuID0geyB0eXBlOiAxNCAvKiBFT0YgKi8gfTtcclxuICAgICAgICBpZiAoY29udGV4dC5icmFjZU5lc3QgPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZWFkVG9rZW5JblBsYWNlaG9sZGVyKHNjbnIsIGNvbnRleHQpIHx8IGdldEVuZFRva2VuKGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29udGV4dC5pbkxpbmtlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVhZFRva2VuSW5MaW5rZWQoc2NuciwgY29udGV4dCkgfHwgZ2V0RW5kVG9rZW4oY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNoID0gc2Nuci5jdXJyZW50Q2hhcigpO1xyXG4gICAgICAgIHN3aXRjaCAoY2gpIHtcclxuICAgICAgICAgICAgY2FzZSBcIntcIiAvKiBCcmFjZUxlZnQgKi86XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVhZFRva2VuSW5QbGFjZWhvbGRlcihzY25yLCBjb250ZXh0KSB8fCBnZXRFbmRUb2tlbihjb250ZXh0KTtcclxuICAgICAgICAgICAgY2FzZSBcIn1cIiAvKiBCcmFjZVJpZ2h0ICovOlxyXG4gICAgICAgICAgICAgICAgZW1pdEVycm9yKENvbXBpbGVFcnJvckNvZGVzLlVOQkFMQU5DRURfQ0xPU0lOR19CUkFDRSwgY3VycmVudFBvc2l0aW9uKCksIDApO1xyXG4gICAgICAgICAgICAgICAgc2Nuci5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VG9rZW4oY29udGV4dCwgMyAvKiBCcmFjZVJpZ2h0ICovLCBcIn1cIiAvKiBCcmFjZVJpZ2h0ICovKTtcclxuICAgICAgICAgICAgY2FzZSBcIkBcIiAvKiBMaW5rZWRBbGlhcyAqLzpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZWFkVG9rZW5JbkxpbmtlZChzY25yLCBjb250ZXh0KSB8fCBnZXRFbmRUb2tlbihjb250ZXh0KTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGlmIChpc1BsdXJhbFN0YXJ0KHNjbnIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBnZXRUb2tlbihjb250ZXh0LCAxIC8qIFBpcGUgKi8sIHJlYWRQbHVyYWwoc2NucikpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5icmFjZU5lc3QgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaW5MaW5rZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNUZXh0U3RhcnQoc2NucikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VG9rZW4oY29udGV4dCwgMCAvKiBUZXh0ICovLCByZWFkVGV4dChzY25yKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09IFwiJVwiIC8qIE1vZHVsbyAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjbnIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRUb2tlbihjb250ZXh0LCA0IC8qIE1vZHVsbyAqLywgXCIlXCIgLyogTW9kdWxvICovKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdG9rZW47XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBuZXh0VG9rZW4oKSB7XHJcbiAgICAgICAgY29uc3QgeyBjdXJyZW50VHlwZSwgb2Zmc2V0LCBzdGFydExvYywgZW5kTG9jIH0gPSBfY29udGV4dDtcclxuICAgICAgICBfY29udGV4dC5sYXN0VHlwZSA9IGN1cnJlbnRUeXBlO1xyXG4gICAgICAgIF9jb250ZXh0Lmxhc3RPZmZzZXQgPSBvZmZzZXQ7XHJcbiAgICAgICAgX2NvbnRleHQubGFzdFN0YXJ0TG9jID0gc3RhcnRMb2M7XHJcbiAgICAgICAgX2NvbnRleHQubGFzdEVuZExvYyA9IGVuZExvYztcclxuICAgICAgICBfY29udGV4dC5vZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7XHJcbiAgICAgICAgX2NvbnRleHQuc3RhcnRMb2MgPSBjdXJyZW50UG9zaXRpb24oKTtcclxuICAgICAgICBpZiAoX3NjbnIuY3VycmVudENoYXIoKSA9PT0gRU9GKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRUb2tlbihfY29udGV4dCwgMTQgLyogRU9GICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlYWRUb2tlbihfc2NuciwgX2NvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0VG9rZW4sXHJcbiAgICAgICAgY3VycmVudE9mZnNldCxcclxuICAgICAgICBjdXJyZW50UG9zaXRpb24sXHJcbiAgICAgICAgY29udGV4dFxyXG4gICAgfTtcclxufVxuXG5jb25zdCBFUlJPUl9ET01BSU4gPSAncGFyc2VyJztcclxuLy8gQmFja3NsYXNoIGJhY2tzbGFzaCwgYmFja3NsYXNoIHF1b3RlLCB1SEhISCwgVUhISEhISC5cclxuY29uc3QgS05PV05fRVNDQVBFUyA9IC8oPzpcXFxcXFxcXHxcXFxcJ3xcXFxcdShbMC05YS1mQS1GXXs0fSl8XFxcXFUoWzAtOWEtZkEtRl17Nn0pKS9nO1xyXG5mdW5jdGlvbiBmcm9tRXNjYXBlU2VxdWVuY2UobWF0Y2gsIGNvZGVQb2ludDQsIGNvZGVQb2ludDYpIHtcclxuICAgIHN3aXRjaCAobWF0Y2gpIHtcclxuICAgICAgICBjYXNlIGBcXFxcXFxcXGA6XHJcbiAgICAgICAgICAgIHJldHVybiBgXFxcXGA7XHJcbiAgICAgICAgY2FzZSBgXFxcXFxcJ2A6XHJcbiAgICAgICAgICAgIHJldHVybiBgXFwnYDtcclxuICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVQb2ludCA9IHBhcnNlSW50KGNvZGVQb2ludDQgfHwgY29kZVBvaW50NiwgMTYpO1xyXG4gICAgICAgICAgICBpZiAoY29kZVBvaW50IDw9IDB4ZDdmZiB8fCBjb2RlUG9pbnQgPj0gMHhlMDAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZVBvaW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpbnZhbGlkIC4uLlxyXG4gICAgICAgICAgICAvLyBSZXBsYWNlIHRoZW0gd2l0aCBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSLlxyXG4gICAgICAgICAgICByZXR1cm4gJ++/vSc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlcihvcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IGxvY2F0aW9uID0gb3B0aW9ucy5sb2NhdGlvbiAhPT0gZmFsc2U7XHJcbiAgICBjb25zdCB7IG9uRXJyb3IgfSA9IG9wdGlvbnM7XHJcbiAgICBmdW5jdGlvbiBlbWl0RXJyb3IodG9rZW56ZXIsIGNvZGUsIHN0YXJ0LCBvZmZzZXQsIC4uLmFyZ3MpIHtcclxuICAgICAgICBjb25zdCBlbmQgPSB0b2tlbnplci5jdXJyZW50UG9zaXRpb24oKTtcclxuICAgICAgICBlbmQub2Zmc2V0ICs9IG9mZnNldDtcclxuICAgICAgICBlbmQuY29sdW1uICs9IG9mZnNldDtcclxuICAgICAgICBpZiAob25FcnJvcikge1xyXG4gICAgICAgICAgICBjb25zdCBsb2MgPSBjcmVhdGVMb2NhdGlvbihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgY29uc3QgZXJyID0gY3JlYXRlQ29tcGlsZUVycm9yKGNvZGUsIGxvYywge1xyXG4gICAgICAgICAgICAgICAgZG9tYWluOiBFUlJPUl9ET01BSU4sXHJcbiAgICAgICAgICAgICAgICBhcmdzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc3RhcnROb2RlKHR5cGUsIG9mZnNldCwgbG9jKSB7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHtcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgc3RhcnQ6IG9mZnNldCxcclxuICAgICAgICAgICAgZW5kOiBvZmZzZXRcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChsb2NhdGlvbikge1xyXG4gICAgICAgICAgICBub2RlLmxvYyA9IHsgc3RhcnQ6IGxvYywgZW5kOiBsb2MgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBlbmROb2RlKG5vZGUsIG9mZnNldCwgcG9zLCB0eXBlKSB7XHJcbiAgICAgICAgbm9kZS5lbmQgPSBvZmZzZXQ7XHJcbiAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgICAgbm9kZS50eXBlID0gdHlwZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvY2F0aW9uICYmIG5vZGUubG9jKSB7XHJcbiAgICAgICAgICAgIG5vZGUubG9jLmVuZCA9IHBvcztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwYXJzZVRleHQodG9rZW5pemVyLCB2YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0b2tlbml6ZXIuY29udGV4dCgpO1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSBzdGFydE5vZGUoMyAvKiBUZXh0ICovLCBjb250ZXh0Lm9mZnNldCwgY29udGV4dC5zdGFydExvYyk7XHJcbiAgICAgICAgbm9kZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIGVuZE5vZGUobm9kZSwgdG9rZW5pemVyLmN1cnJlbnRPZmZzZXQoKSwgdG9rZW5pemVyLmN1cnJlbnRQb3NpdGlvbigpKTtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHBhcnNlTGlzdCh0b2tlbml6ZXIsIGluZGV4KSB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRva2VuaXplci5jb250ZXh0KCk7XHJcbiAgICAgICAgY29uc3QgeyBsYXN0T2Zmc2V0OiBvZmZzZXQsIGxhc3RTdGFydExvYzogbG9jIH0gPSBjb250ZXh0OyAvLyBnZXQgYnJhY2UgbGVmdCBsb2NcclxuICAgICAgICBjb25zdCBub2RlID0gc3RhcnROb2RlKDUgLyogTGlzdCAqLywgb2Zmc2V0LCBsb2MpO1xyXG4gICAgICAgIG5vZGUuaW5kZXggPSBwYXJzZUludChpbmRleCwgMTApO1xyXG4gICAgICAgIHRva2VuaXplci5uZXh0VG9rZW4oKTsgLy8gc2tpcCBicmFjaCByaWdodFxyXG4gICAgICAgIGVuZE5vZGUobm9kZSwgdG9rZW5pemVyLmN1cnJlbnRPZmZzZXQoKSwgdG9rZW5pemVyLmN1cnJlbnRQb3NpdGlvbigpKTtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHBhcnNlTmFtZWQodG9rZW5pemVyLCBrZXkpIHtcclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdG9rZW5pemVyLmNvbnRleHQoKTtcclxuICAgICAgICBjb25zdCB7IGxhc3RPZmZzZXQ6IG9mZnNldCwgbGFzdFN0YXJ0TG9jOiBsb2MgfSA9IGNvbnRleHQ7IC8vIGdldCBicmFjZSBsZWZ0IGxvY1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSBzdGFydE5vZGUoNCAvKiBOYW1lZCAqLywgb2Zmc2V0LCBsb2MpO1xyXG4gICAgICAgIG5vZGUua2V5ID0ga2V5O1xyXG4gICAgICAgIHRva2VuaXplci5uZXh0VG9rZW4oKTsgLy8gc2tpcCBicmFjaCByaWdodFxyXG4gICAgICAgIGVuZE5vZGUobm9kZSwgdG9rZW5pemVyLmN1cnJlbnRPZmZzZXQoKSwgdG9rZW5pemVyLmN1cnJlbnRQb3NpdGlvbigpKTtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHBhcnNlTGl0ZXJhbCh0b2tlbml6ZXIsIHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRva2VuaXplci5jb250ZXh0KCk7XHJcbiAgICAgICAgY29uc3QgeyBsYXN0T2Zmc2V0OiBvZmZzZXQsIGxhc3RTdGFydExvYzogbG9jIH0gPSBjb250ZXh0OyAvLyBnZXQgYnJhY2UgbGVmdCBsb2NcclxuICAgICAgICBjb25zdCBub2RlID0gc3RhcnROb2RlKDkgLyogTGl0ZXJhbCAqLywgb2Zmc2V0LCBsb2MpO1xyXG4gICAgICAgIG5vZGUudmFsdWUgPSB2YWx1ZS5yZXBsYWNlKEtOT1dOX0VTQ0FQRVMsIGZyb21Fc2NhcGVTZXF1ZW5jZSk7XHJcbiAgICAgICAgdG9rZW5pemVyLm5leHRUb2tlbigpOyAvLyBza2lwIGJyYWNoIHJpZ2h0XHJcbiAgICAgICAgZW5kTm9kZShub2RlLCB0b2tlbml6ZXIuY3VycmVudE9mZnNldCgpLCB0b2tlbml6ZXIuY3VycmVudFBvc2l0aW9uKCkpO1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcGFyc2VMaW5rZWRNb2RpZmllcih0b2tlbml6ZXIpIHtcclxuICAgICAgICBjb25zdCB0b2tlbiA9IHRva2VuaXplci5uZXh0VG9rZW4oKTtcclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdG9rZW5pemVyLmNvbnRleHQoKTtcclxuICAgICAgICBjb25zdCB7IGxhc3RPZmZzZXQ6IG9mZnNldCwgbGFzdFN0YXJ0TG9jOiBsb2MgfSA9IGNvbnRleHQ7IC8vIGdldCBsaW5rZWQgZG90IGxvY1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSBzdGFydE5vZGUoOCAvKiBMaW5rZWRNb2RpZmllciAqLywgb2Zmc2V0LCBsb2MpO1xyXG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSAxMiAvKiBMaW5rZWRNb2RpZmllciAqLykge1xyXG4gICAgICAgICAgICAvLyBlbXB0eSBtb2RpZmllclxyXG4gICAgICAgICAgICBlbWl0RXJyb3IodG9rZW5pemVyLCBDb21waWxlRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0VNUFRZX0xJTktFRF9NT0RJRklFUiwgY29udGV4dC5sYXN0U3RhcnRMb2MsIDApO1xyXG4gICAgICAgICAgICBub2RlLnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgIGVuZE5vZGUobm9kZSwgb2Zmc2V0LCBsb2MpO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgbmV4dENvbnN1bWVUb2tlbjogdG9rZW4sXHJcbiAgICAgICAgICAgICAgICBub2RlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoZWNrIHRva2VuXHJcbiAgICAgICAgaWYgKHRva2VuLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKHRva2VuaXplciwgQ29tcGlsZUVycm9yQ29kZXMuVU5FWFBFQ1RFRF9MRVhJQ0FMX0FOQUxZU0lTLCBjb250ZXh0Lmxhc3RTdGFydExvYywgMCwgZ2V0VG9rZW5DYXB0aW9uKHRva2VuKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5vZGUudmFsdWUgPSB0b2tlbi52YWx1ZSB8fCAnJztcclxuICAgICAgICBlbmROb2RlKG5vZGUsIHRva2VuaXplci5jdXJyZW50T2Zmc2V0KCksIHRva2VuaXplci5jdXJyZW50UG9zaXRpb24oKSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwYXJzZUxpbmtlZEtleSh0b2tlbml6ZXIsIHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRva2VuaXplci5jb250ZXh0KCk7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHN0YXJ0Tm9kZSg3IC8qIExpbmtlZEtleSAqLywgY29udGV4dC5vZmZzZXQsIGNvbnRleHQuc3RhcnRMb2MpO1xyXG4gICAgICAgIG5vZGUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBlbmROb2RlKG5vZGUsIHRva2VuaXplci5jdXJyZW50T2Zmc2V0KCksIHRva2VuaXplci5jdXJyZW50UG9zaXRpb24oKSk7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwYXJzZUxpbmtlZCh0b2tlbml6ZXIpIHtcclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdG9rZW5pemVyLmNvbnRleHQoKTtcclxuICAgICAgICBjb25zdCBsaW5rZWROb2RlID0gc3RhcnROb2RlKDYgLyogTGlua2VkICovLCBjb250ZXh0Lm9mZnNldCwgY29udGV4dC5zdGFydExvYyk7XHJcbiAgICAgICAgbGV0IHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpO1xyXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSA5IC8qIExpbmtlZERvdCAqLykge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUxpbmtlZE1vZGlmaWVyKHRva2VuaXplcik7XHJcbiAgICAgICAgICAgIGxpbmtlZE5vZGUubW9kaWZpZXIgPSBwYXJzZWQubm9kZTtcclxuICAgICAgICAgICAgdG9rZW4gPSBwYXJzZWQubmV4dENvbnN1bWVUb2tlbiB8fCB0b2tlbml6ZXIubmV4dFRva2VuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFzc2V0IGNoZWNrIHRva2VuXHJcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IDEwIC8qIExpbmtlZERlbGltaXRlciAqLykge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IodG9rZW5pemVyLCBDb21waWxlRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0xFWElDQUxfQU5BTFlTSVMsIGNvbnRleHQubGFzdFN0YXJ0TG9jLCAwLCBnZXRUb2tlbkNhcHRpb24odG9rZW4pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdG9rZW4gPSB0b2tlbml6ZXIubmV4dFRva2VuKCk7XHJcbiAgICAgICAgLy8gc2tpcCBicmFjZSBsZWZ0XHJcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IDIgLyogQnJhY2VMZWZ0ICovKSB7XHJcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAxMSAvKiBMaW5rZWRLZXkgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcih0b2tlbml6ZXIsIENvbXBpbGVFcnJvckNvZGVzLlVORVhQRUNURURfTEVYSUNBTF9BTkFMWVNJUywgY29udGV4dC5sYXN0U3RhcnRMb2MsIDAsIGdldFRva2VuQ2FwdGlvbih0b2tlbikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGlua2VkTm9kZS5rZXkgPSBwYXJzZUxpbmtlZEtleSh0b2tlbml6ZXIsIHRva2VuLnZhbHVlIHx8ICcnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDUgLyogTmFtZWQgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcih0b2tlbml6ZXIsIENvbXBpbGVFcnJvckNvZGVzLlVORVhQRUNURURfTEVYSUNBTF9BTkFMWVNJUywgY29udGV4dC5sYXN0U3RhcnRMb2MsIDAsIGdldFRva2VuQ2FwdGlvbih0b2tlbikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGlua2VkTm9kZS5rZXkgPSBwYXJzZU5hbWVkKHRva2VuaXplciwgdG9rZW4udmFsdWUgfHwgJycpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNiAvKiBMaXN0ICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IodG9rZW5pemVyLCBDb21waWxlRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0xFWElDQUxfQU5BTFlTSVMsIGNvbnRleHQubGFzdFN0YXJ0TG9jLCAwLCBnZXRUb2tlbkNhcHRpb24odG9rZW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxpbmtlZE5vZGUua2V5ID0gcGFyc2VMaXN0KHRva2VuaXplciwgdG9rZW4udmFsdWUgfHwgJycpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNyAvKiBMaXRlcmFsICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IodG9rZW5pemVyLCBDb21waWxlRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0xFWElDQUxfQU5BTFlTSVMsIGNvbnRleHQubGFzdFN0YXJ0TG9jLCAwLCBnZXRUb2tlbkNhcHRpb24odG9rZW4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxpbmtlZE5vZGUua2V5ID0gcGFyc2VMaXRlcmFsKHRva2VuaXplciwgdG9rZW4udmFsdWUgfHwgJycpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAvLyBlbXB0eSBrZXlcclxuICAgICAgICAgICAgICAgIGVtaXRFcnJvcih0b2tlbml6ZXIsIENvbXBpbGVFcnJvckNvZGVzLlVORVhQRUNURURfRU1QVFlfTElOS0VEX0tFWSwgY29udGV4dC5sYXN0U3RhcnRMb2MsIDApO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dENvbnRleHQgPSB0b2tlbml6ZXIuY29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW1wdHlMaW5rZWRLZXlOb2RlID0gc3RhcnROb2RlKDcgLyogTGlua2VkS2V5ICovLCBuZXh0Q29udGV4dC5vZmZzZXQsIG5leHRDb250ZXh0LnN0YXJ0TG9jKTtcclxuICAgICAgICAgICAgICAgIGVtcHR5TGlua2VkS2V5Tm9kZS52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZW5kTm9kZShlbXB0eUxpbmtlZEtleU5vZGUsIG5leHRDb250ZXh0Lm9mZnNldCwgbmV4dENvbnRleHQuc3RhcnRMb2MpO1xyXG4gICAgICAgICAgICAgICAgbGlua2VkTm9kZS5rZXkgPSBlbXB0eUxpbmtlZEtleU5vZGU7XHJcbiAgICAgICAgICAgICAgICBlbmROb2RlKGxpbmtlZE5vZGUsIG5leHRDb250ZXh0Lm9mZnNldCwgbmV4dENvbnRleHQuc3RhcnRMb2MpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Q29uc3VtZVRva2VuOiB0b2tlbixcclxuICAgICAgICAgICAgICAgICAgICBub2RlOiBsaW5rZWROb2RlXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbmROb2RlKGxpbmtlZE5vZGUsIHRva2VuaXplci5jdXJyZW50T2Zmc2V0KCksIHRva2VuaXplci5jdXJyZW50UG9zaXRpb24oKSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbm9kZTogbGlua2VkTm9kZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwYXJzZU1lc3NhZ2UodG9rZW5pemVyKSB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRva2VuaXplci5jb250ZXh0KCk7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBjb250ZXh0LmN1cnJlbnRUeXBlID09PSAxIC8qIFBpcGUgKi9cclxuICAgICAgICAgICAgPyB0b2tlbml6ZXIuY3VycmVudE9mZnNldCgpXHJcbiAgICAgICAgICAgIDogY29udGV4dC5vZmZzZXQ7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRMb2MgPSBjb250ZXh0LmN1cnJlbnRUeXBlID09PSAxIC8qIFBpcGUgKi9cclxuICAgICAgICAgICAgPyBjb250ZXh0LmVuZExvY1xyXG4gICAgICAgICAgICA6IGNvbnRleHQuc3RhcnRMb2M7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHN0YXJ0Tm9kZSgyIC8qIE1lc3NhZ2UgKi8sIHN0YXJ0T2Zmc2V0LCBzdGFydExvYyk7XHJcbiAgICAgICAgbm9kZS5pdGVtcyA9IFtdO1xyXG4gICAgICAgIGxldCBuZXh0VG9rZW4gPSBudWxsO1xyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgY29uc3QgdG9rZW4gPSBuZXh0VG9rZW4gfHwgdG9rZW5pemVyLm5leHRUb2tlbigpO1xyXG4gICAgICAgICAgICBuZXh0VG9rZW4gPSBudWxsO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMCAvKiBUZXh0ICovOlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcih0b2tlbml6ZXIsIENvbXBpbGVFcnJvckNvZGVzLlVORVhQRUNURURfTEVYSUNBTF9BTkFMWVNJUywgY29udGV4dC5sYXN0U3RhcnRMb2MsIDAsIGdldFRva2VuQ2FwdGlvbih0b2tlbikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBub2RlLml0ZW1zLnB1c2gocGFyc2VUZXh0KHRva2VuaXplciwgdG9rZW4udmFsdWUgfHwgJycpKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNiAvKiBMaXN0ICovOlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcih0b2tlbml6ZXIsIENvbXBpbGVFcnJvckNvZGVzLlVORVhQRUNURURfTEVYSUNBTF9BTkFMWVNJUywgY29udGV4dC5sYXN0U3RhcnRMb2MsIDAsIGdldFRva2VuQ2FwdGlvbih0b2tlbikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBub2RlLml0ZW1zLnB1c2gocGFyc2VMaXN0KHRva2VuaXplciwgdG9rZW4udmFsdWUgfHwgJycpKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNSAvKiBOYW1lZCAqLzpcclxuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IodG9rZW5pemVyLCBDb21waWxlRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0xFWElDQUxfQU5BTFlTSVMsIGNvbnRleHQubGFzdFN0YXJ0TG9jLCAwLCBnZXRUb2tlbkNhcHRpb24odG9rZW4pKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pdGVtcy5wdXNoKHBhcnNlTmFtZWQodG9rZW5pemVyLCB0b2tlbi52YWx1ZSB8fCAnJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3IC8qIExpdGVyYWwgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKHRva2VuaXplciwgQ29tcGlsZUVycm9yQ29kZXMuVU5FWFBFQ1RFRF9MRVhJQ0FMX0FOQUxZU0lTLCBjb250ZXh0Lmxhc3RTdGFydExvYywgMCwgZ2V0VG9rZW5DYXB0aW9uKHRva2VuKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuaXRlbXMucHVzaChwYXJzZUxpdGVyYWwodG9rZW5pemVyLCB0b2tlbi52YWx1ZSB8fCAnJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA4IC8qIExpbmtlZEFsaWFzICovOlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlTGlua2VkKHRva2VuaXplcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pdGVtcy5wdXNoKHBhcnNlZC5ub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0VG9rZW4gPSBwYXJzZWQubmV4dENvbnN1bWVUb2tlbiB8fCBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSB3aGlsZSAoY29udGV4dC5jdXJyZW50VHlwZSAhPT0gMTQgLyogRU9GICovICYmXHJcbiAgICAgICAgICAgIGNvbnRleHQuY3VycmVudFR5cGUgIT09IDEgLyogUGlwZSAqLyk7XHJcbiAgICAgICAgLy8gYWRqdXN0IG1lc3NhZ2Ugbm9kZSBsb2NcclxuICAgICAgICBjb25zdCBlbmRPZmZzZXQgPSBjb250ZXh0LmN1cnJlbnRUeXBlID09PSAxIC8qIFBpcGUgKi9cclxuICAgICAgICAgICAgPyBjb250ZXh0Lmxhc3RPZmZzZXRcclxuICAgICAgICAgICAgOiB0b2tlbml6ZXIuY3VycmVudE9mZnNldCgpO1xyXG4gICAgICAgIGNvbnN0IGVuZExvYyA9IGNvbnRleHQuY3VycmVudFR5cGUgPT09IDEgLyogUGlwZSAqL1xyXG4gICAgICAgICAgICA/IGNvbnRleHQubGFzdEVuZExvY1xyXG4gICAgICAgICAgICA6IHRva2VuaXplci5jdXJyZW50UG9zaXRpb24oKTtcclxuICAgICAgICBlbmROb2RlKG5vZGUsIGVuZE9mZnNldCwgZW5kTG9jKTtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHBhcnNlUGx1cmFsKHRva2VuaXplciwgb2Zmc2V0LCBsb2MsIG1zZ05vZGUpIHtcclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdG9rZW5pemVyLmNvbnRleHQoKTtcclxuICAgICAgICBsZXQgaGFzRW1wdHlNZXNzYWdlID0gbXNnTm9kZS5pdGVtcy5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHN0YXJ0Tm9kZSgxIC8qIFBsdXJhbCAqLywgb2Zmc2V0LCBsb2MpO1xyXG4gICAgICAgIG5vZGUuY2FzZXMgPSBbXTtcclxuICAgICAgICBub2RlLmNhc2VzLnB1c2gobXNnTm9kZSk7XHJcbiAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBwYXJzZU1lc3NhZ2UodG9rZW5pemVyKTtcclxuICAgICAgICAgICAgaWYgKCFoYXNFbXB0eU1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGhhc0VtcHR5TWVzc2FnZSA9IG1zZy5pdGVtcy5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZS5jYXNlcy5wdXNoKG1zZyk7XHJcbiAgICAgICAgfSB3aGlsZSAoY29udGV4dC5jdXJyZW50VHlwZSAhPT0gMTQgLyogRU9GICovKTtcclxuICAgICAgICBpZiAoaGFzRW1wdHlNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcih0b2tlbml6ZXIsIENvbXBpbGVFcnJvckNvZGVzLk1VU1RfSEFWRV9NRVNTQUdFU19JTl9QTFVSQUwsIGxvYywgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVuZE5vZGUobm9kZSwgdG9rZW5pemVyLmN1cnJlbnRPZmZzZXQoKSwgdG9rZW5pemVyLmN1cnJlbnRQb3NpdGlvbigpKTtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHBhcnNlUmVzb3VyY2UodG9rZW5pemVyKSB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRva2VuaXplci5jb250ZXh0KCk7XHJcbiAgICAgICAgY29uc3QgeyBvZmZzZXQsIHN0YXJ0TG9jIH0gPSBjb250ZXh0O1xyXG4gICAgICAgIGNvbnN0IG1zZ05vZGUgPSBwYXJzZU1lc3NhZ2UodG9rZW5pemVyKTtcclxuICAgICAgICBpZiAoY29udGV4dC5jdXJyZW50VHlwZSA9PT0gMTQgLyogRU9GICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtc2dOb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlUGx1cmFsKHRva2VuaXplciwgb2Zmc2V0LCBzdGFydExvYywgbXNnTm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcGFyc2Uoc291cmNlKSB7XHJcbiAgICAgICAgY29uc3QgdG9rZW5pemVyID0gY3JlYXRlVG9rZW5pemVyKHNvdXJjZSwgYXNzaWduKHt9LCBvcHRpb25zKSk7XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRva2VuaXplci5jb250ZXh0KCk7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHN0YXJ0Tm9kZSgwIC8qIFJlc291cmNlICovLCBjb250ZXh0Lm9mZnNldCwgY29udGV4dC5zdGFydExvYyk7XHJcbiAgICAgICAgaWYgKGxvY2F0aW9uICYmIG5vZGUubG9jKSB7XHJcbiAgICAgICAgICAgIG5vZGUubG9jLnNvdXJjZSA9IHNvdXJjZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZS5ib2R5ID0gcGFyc2VSZXNvdXJjZSh0b2tlbml6ZXIpO1xyXG4gICAgICAgIC8vIGFzc2VydCB3aGV0aGVyIGFjaGlldmVkIHRvIEVPRlxyXG4gICAgICAgIGlmIChjb250ZXh0LmN1cnJlbnRUeXBlICE9PSAxNCAvKiBFT0YgKi8pIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKHRva2VuaXplciwgQ29tcGlsZUVycm9yQ29kZXMuVU5FWFBFQ1RFRF9MRVhJQ0FMX0FOQUxZU0lTLCBjb250ZXh0Lmxhc3RTdGFydExvYywgMCwgc291cmNlW2NvbnRleHQub2Zmc2V0XSB8fCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVuZE5vZGUobm9kZSwgdG9rZW5pemVyLmN1cnJlbnRPZmZzZXQoKSwgdG9rZW5pemVyLmN1cnJlbnRQb3NpdGlvbigpKTtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHBhcnNlIH07XHJcbn1cclxuZnVuY3Rpb24gZ2V0VG9rZW5DYXB0aW9uKHRva2VuKSB7XHJcbiAgICBpZiAodG9rZW4udHlwZSA9PT0gMTQgLyogRU9GICovKSB7XHJcbiAgICAgICAgcmV0dXJuICdFT0YnO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbmFtZSA9ICh0b2tlbi52YWx1ZSB8fCAnJykucmVwbGFjZSgvXFxyP1xcbi9ndSwgJ1xcXFxuJyk7XHJcbiAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAxMCA/IG5hbWUuc2xpY2UoMCwgOSkgKyAn4oCmJyA6IG5hbWU7XHJcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtZXIoYXN0LCBvcHRpb25zID0ge30gLy8gZXNsaW50LWRpc2FibGUtbGluZVxyXG4pIHtcclxuICAgIGNvbnN0IF9jb250ZXh0ID0ge1xyXG4gICAgICAgIGFzdCxcclxuICAgICAgICBoZWxwZXJzOiBuZXcgU2V0KClcclxuICAgIH07XHJcbiAgICBjb25zdCBjb250ZXh0ID0gKCkgPT4gX2NvbnRleHQ7XHJcbiAgICBjb25zdCBoZWxwZXIgPSAobmFtZSkgPT4ge1xyXG4gICAgICAgIF9jb250ZXh0LmhlbHBlcnMuYWRkKG5hbWUpO1xyXG4gICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfTtcclxuICAgIHJldHVybiB7IGNvbnRleHQsIGhlbHBlciB9O1xyXG59XHJcbmZ1bmN0aW9uIHRyYXZlcnNlTm9kZXMobm9kZXMsIHRyYW5zZm9ybWVyKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdHJhdmVyc2VOb2RlKG5vZGVzW2ldLCB0cmFuc2Zvcm1lcik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJhdmVyc2VOb2RlKG5vZGUsIHRyYW5zZm9ybWVyKSB7XHJcbiAgICAvLyBUT0RPOiBpZiB3ZSBuZWVkIHByZS1ob29rIG9mIHRyYW5zZm9ybSwgc2hvdWxkIGJlIGltcGxlbWVudGVkIHRvIGhlcmVcclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAxIC8qIFBsdXJhbCAqLzpcclxuICAgICAgICAgICAgdHJhdmVyc2VOb2Rlcyhub2RlLmNhc2VzLCB0cmFuc2Zvcm1lcik7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybWVyLmhlbHBlcihcInBsdXJhbFwiIC8qIFBMVVJBTCAqLyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMiAvKiBNZXNzYWdlICovOlxyXG4gICAgICAgICAgICB0cmF2ZXJzZU5vZGVzKG5vZGUuaXRlbXMsIHRyYW5zZm9ybWVyKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA2IC8qIExpbmtlZCAqLzpcclxuICAgICAgICAgICAgY29uc3QgbGlua2VkID0gbm9kZTtcclxuICAgICAgICAgICAgdHJhdmVyc2VOb2RlKGxpbmtlZC5rZXksIHRyYW5zZm9ybWVyKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtZXIuaGVscGVyKFwibGlua2VkXCIgLyogTElOS0VEICovKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1IC8qIExpc3QgKi86XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybWVyLmhlbHBlcihcImludGVycG9sYXRlXCIgLyogSU5URVJQT0xBVEUgKi8pO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm1lci5oZWxwZXIoXCJsaXN0XCIgLyogTElTVCAqLyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNCAvKiBOYW1lZCAqLzpcclxuICAgICAgICAgICAgdHJhbnNmb3JtZXIuaGVscGVyKFwiaW50ZXJwb2xhdGVcIiAvKiBJTlRFUlBPTEFURSAqLyk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybWVyLmhlbHBlcihcIm5hbWVkXCIgLyogTkFNRUQgKi8pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIFRPRE86IGlmIHdlIG5lZWQgcG9zdC1ob29rIG9mIHRyYW5zZm9ybSwgc2hvdWxkIGJlIGltcGxlbWVudGVkIHRvIGhlcmVcclxufVxyXG4vLyB0cmFuc2Zvcm0gQVNUXHJcbmZ1bmN0aW9uIHRyYW5zZm9ybShhc3QsIG9wdGlvbnMgPSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXHJcbikge1xyXG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBjcmVhdGVUcmFuc2Zvcm1lcihhc3QpO1xyXG4gICAgdHJhbnNmb3JtZXIuaGVscGVyKFwibm9ybWFsaXplXCIgLyogTk9STUFMSVpFICovKTtcclxuICAgIC8vIHRyYXZlcnNlXHJcbiAgICBhc3QuYm9keSAmJiB0cmF2ZXJzZU5vZGUoYXN0LmJvZHksIHRyYW5zZm9ybWVyKTtcclxuICAgIC8vIHNldCBtZXRhIGluZm9ybWF0aW9uXHJcbiAgICBjb25zdCBjb250ZXh0ID0gdHJhbnNmb3JtZXIuY29udGV4dCgpO1xyXG4gICAgYXN0LmhlbHBlcnMgPSBBcnJheS5mcm9tKGNvbnRleHQuaGVscGVycyk7XHJcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29kZUdlbmVyYXRvcihhc3QsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgc291cmNlTWFwLCBmaWxlbmFtZSwgYnJlYWtMaW5lQ29kZSwgbmVlZEluZGVudDogX25lZWRJbmRlbnQgfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBfY29udGV4dCA9IHtcclxuICAgICAgICBzb3VyY2U6IGFzdC5sb2Muc291cmNlLFxyXG4gICAgICAgIGZpbGVuYW1lLFxyXG4gICAgICAgIGNvZGU6ICcnLFxyXG4gICAgICAgIGNvbHVtbjogMSxcclxuICAgICAgICBsaW5lOiAxLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBtYXA6IHVuZGVmaW5lZCxcclxuICAgICAgICBicmVha0xpbmVDb2RlLFxyXG4gICAgICAgIG5lZWRJbmRlbnQ6IF9uZWVkSW5kZW50LFxyXG4gICAgICAgIGluZGVudExldmVsOiAwXHJcbiAgICB9O1xyXG4gICAgY29uc3QgY29udGV4dCA9ICgpID0+IF9jb250ZXh0O1xyXG4gICAgZnVuY3Rpb24gcHVzaChjb2RlLCBub2RlKSB7XHJcbiAgICAgICAgX2NvbnRleHQuY29kZSArPSBjb2RlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gX25ld2xpbmUobiwgd2l0aEJyZWFrTGluZSA9IHRydWUpIHtcclxuICAgICAgICBjb25zdCBfYnJlYWtMaW5lQ29kZSA9IHdpdGhCcmVha0xpbmUgPyBicmVha0xpbmVDb2RlIDogJyc7XHJcbiAgICAgICAgcHVzaChfbmVlZEluZGVudCA/IF9icmVha0xpbmVDb2RlICsgYCAgYC5yZXBlYXQobikgOiBfYnJlYWtMaW5lQ29kZSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBpbmRlbnQod2l0aE5ld0xpbmUgPSB0cnVlKSB7XHJcbiAgICAgICAgY29uc3QgbGV2ZWwgPSArK19jb250ZXh0LmluZGVudExldmVsO1xyXG4gICAgICAgIHdpdGhOZXdMaW5lICYmIF9uZXdsaW5lKGxldmVsKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGRlaW5kZW50KHdpdGhOZXdMaW5lID0gdHJ1ZSkge1xyXG4gICAgICAgIGNvbnN0IGxldmVsID0gLS1fY29udGV4dC5pbmRlbnRMZXZlbDtcclxuICAgICAgICB3aXRoTmV3TGluZSAmJiBfbmV3bGluZShsZXZlbCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBuZXdsaW5lKCkge1xyXG4gICAgICAgIF9uZXdsaW5lKF9jb250ZXh0LmluZGVudExldmVsKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGhlbHBlciA9IChrZXkpID0+IGBfJHtrZXl9YDtcclxuICAgIGNvbnN0IG5lZWRJbmRlbnQgPSAoKSA9PiBfY29udGV4dC5uZWVkSW5kZW50O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb250ZXh0LFxyXG4gICAgICAgIHB1c2gsXHJcbiAgICAgICAgaW5kZW50LFxyXG4gICAgICAgIGRlaW5kZW50LFxyXG4gICAgICAgIG5ld2xpbmUsXHJcbiAgICAgICAgaGVscGVyLFxyXG4gICAgICAgIG5lZWRJbmRlbnRcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVMaW5rZWROb2RlKGdlbmVyYXRvciwgbm9kZSkge1xyXG4gICAgY29uc3QgeyBoZWxwZXIgfSA9IGdlbmVyYXRvcjtcclxuICAgIGdlbmVyYXRvci5wdXNoKGAke2hlbHBlcihcImxpbmtlZFwiIC8qIExJTktFRCAqLyl9KGApO1xyXG4gICAgZ2VuZXJhdGVOb2RlKGdlbmVyYXRvciwgbm9kZS5rZXkpO1xyXG4gICAgaWYgKG5vZGUubW9kaWZpZXIpIHtcclxuICAgICAgICBnZW5lcmF0b3IucHVzaChgLCBgKTtcclxuICAgICAgICBnZW5lcmF0ZU5vZGUoZ2VuZXJhdG9yLCBub2RlLm1vZGlmaWVyKTtcclxuICAgIH1cclxuICAgIGdlbmVyYXRvci5wdXNoKGApYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVNZXNzYWdlTm9kZShnZW5lcmF0b3IsIG5vZGUpIHtcclxuICAgIGNvbnN0IHsgaGVscGVyLCBuZWVkSW5kZW50IH0gPSBnZW5lcmF0b3I7XHJcbiAgICBnZW5lcmF0b3IucHVzaChgJHtoZWxwZXIoXCJub3JtYWxpemVcIiAvKiBOT1JNQUxJWkUgKi8pfShbYCk7XHJcbiAgICBnZW5lcmF0b3IuaW5kZW50KG5lZWRJbmRlbnQoKSk7XHJcbiAgICBjb25zdCBsZW5ndGggPSBub2RlLml0ZW1zLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBnZW5lcmF0ZU5vZGUoZ2VuZXJhdG9yLCBub2RlLml0ZW1zW2ldKTtcclxuICAgICAgICBpZiAoaSA9PT0gbGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2VuZXJhdG9yLnB1c2goJywgJyk7XHJcbiAgICB9XHJcbiAgICBnZW5lcmF0b3IuZGVpbmRlbnQobmVlZEluZGVudCgpKTtcclxuICAgIGdlbmVyYXRvci5wdXNoKCddKScpO1xyXG59XHJcbmZ1bmN0aW9uIGdlbmVyYXRlUGx1cmFsTm9kZShnZW5lcmF0b3IsIG5vZGUpIHtcclxuICAgIGNvbnN0IHsgaGVscGVyLCBuZWVkSW5kZW50IH0gPSBnZW5lcmF0b3I7XHJcbiAgICBpZiAobm9kZS5jYXNlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZ2VuZXJhdG9yLnB1c2goYCR7aGVscGVyKFwicGx1cmFsXCIgLyogUExVUkFMICovKX0oW2ApO1xyXG4gICAgICAgIGdlbmVyYXRvci5pbmRlbnQobmVlZEluZGVudCgpKTtcclxuICAgICAgICBjb25zdCBsZW5ndGggPSBub2RlLmNhc2VzLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGdlbmVyYXRlTm9kZShnZW5lcmF0b3IsIG5vZGUuY2FzZXNbaV0pO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gbGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZ2VuZXJhdG9yLnB1c2goJywgJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdlbmVyYXRvci5kZWluZGVudChuZWVkSW5kZW50KCkpO1xyXG4gICAgICAgIGdlbmVyYXRvci5wdXNoKGBdKWApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbmVyYXRlUmVzb3VyY2UoZ2VuZXJhdG9yLCBub2RlKSB7XHJcbiAgICBpZiAobm9kZS5ib2R5KSB7XHJcbiAgICAgICAgZ2VuZXJhdGVOb2RlKGdlbmVyYXRvciwgbm9kZS5ib2R5KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGdlbmVyYXRvci5wdXNoKCdudWxsJyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVOb2RlKGdlbmVyYXRvciwgbm9kZSkge1xyXG4gICAgY29uc3QgeyBoZWxwZXIgfSA9IGdlbmVyYXRvcjtcclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAwIC8qIFJlc291cmNlICovOlxyXG4gICAgICAgICAgICBnZW5lcmF0ZVJlc291cmNlKGdlbmVyYXRvciwgbm9kZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMSAvKiBQbHVyYWwgKi86XHJcbiAgICAgICAgICAgIGdlbmVyYXRlUGx1cmFsTm9kZShnZW5lcmF0b3IsIG5vZGUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDIgLyogTWVzc2FnZSAqLzpcclxuICAgICAgICAgICAgZ2VuZXJhdGVNZXNzYWdlTm9kZShnZW5lcmF0b3IsIG5vZGUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDYgLyogTGlua2VkICovOlxyXG4gICAgICAgICAgICBnZW5lcmF0ZUxpbmtlZE5vZGUoZ2VuZXJhdG9yLCBub2RlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA4IC8qIExpbmtlZE1vZGlmaWVyICovOlxyXG4gICAgICAgICAgICBnZW5lcmF0b3IucHVzaChKU09OLnN0cmluZ2lmeShub2RlLnZhbHVlKSwgbm9kZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNyAvKiBMaW5rZWRLZXkgKi86XHJcbiAgICAgICAgICAgIGdlbmVyYXRvci5wdXNoKEpTT04uc3RyaW5naWZ5KG5vZGUudmFsdWUpLCBub2RlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1IC8qIExpc3QgKi86XHJcbiAgICAgICAgICAgIGdlbmVyYXRvci5wdXNoKGAke2hlbHBlcihcImludGVycG9sYXRlXCIgLyogSU5URVJQT0xBVEUgKi8pfSgke2hlbHBlcihcImxpc3RcIiAvKiBMSVNUICovKX0oJHtub2RlLmluZGV4fSkpYCwgbm9kZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNCAvKiBOYW1lZCAqLzpcclxuICAgICAgICAgICAgZ2VuZXJhdG9yLnB1c2goYCR7aGVscGVyKFwiaW50ZXJwb2xhdGVcIiAvKiBJTlRFUlBPTEFURSAqLyl9KCR7aGVscGVyKFwibmFtZWRcIiAvKiBOQU1FRCAqLyl9KCR7SlNPTi5zdHJpbmdpZnkobm9kZS5rZXkpfSkpYCwgbm9kZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgOSAvKiBMaXRlcmFsICovOlxyXG4gICAgICAgICAgICBnZW5lcmF0b3IucHVzaChKU09OLnN0cmluZ2lmeShub2RlLnZhbHVlKSwgbm9kZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMyAvKiBUZXh0ICovOlxyXG4gICAgICAgICAgICBnZW5lcmF0b3IucHVzaChKU09OLnN0cmluZ2lmeShub2RlLnZhbHVlKSwgbm9kZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5oYW5kbGVkIGNvZGVnZW4gbm9kZSB0eXBlOiAke25vZGUudHlwZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi8vIGdlbmVyYXRlIGNvZGUgZnJvbSBBU1RcclxuY29uc3QgZ2VuZXJhdGUgPSAoYXN0LCBvcHRpb25zID0ge30gLy8gZXNsaW50LWRpc2FibGUtbGluZVxyXG4pID0+IHtcclxuICAgIGNvbnN0IG1vZGUgPSBpc1N0cmluZyhvcHRpb25zLm1vZGUpID8gb3B0aW9ucy5tb2RlIDogJ25vcm1hbCc7XHJcbiAgICBjb25zdCBmaWxlbmFtZSA9IGlzU3RyaW5nKG9wdGlvbnMuZmlsZW5hbWUpXHJcbiAgICAgICAgPyBvcHRpb25zLmZpbGVuYW1lXHJcbiAgICAgICAgOiAnbWVzc2FnZS5pbnRsJztcclxuICAgIGNvbnN0IHNvdXJjZU1hcCA9ICEhb3B0aW9ucy5zb3VyY2VNYXA7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IGJyZWFrTGluZUNvZGUgPSBvcHRpb25zLmJyZWFrTGluZUNvZGUgIT0gbnVsbFxyXG4gICAgICAgID8gb3B0aW9ucy5icmVha0xpbmVDb2RlXHJcbiAgICAgICAgOiBtb2RlID09PSAnYXJyb3cnXHJcbiAgICAgICAgICAgID8gJzsnXHJcbiAgICAgICAgICAgIDogJ1xcbic7XHJcbiAgICBjb25zdCBuZWVkSW5kZW50ID0gb3B0aW9ucy5uZWVkSW5kZW50ID8gb3B0aW9ucy5uZWVkSW5kZW50IDogbW9kZSAhPT0gJ2Fycm93JztcclxuICAgIGNvbnN0IGhlbHBlcnMgPSBhc3QuaGVscGVycyB8fCBbXTtcclxuICAgIGNvbnN0IGdlbmVyYXRvciA9IGNyZWF0ZUNvZGVHZW5lcmF0b3IoYXN0LCB7XHJcbiAgICAgICAgbW9kZSxcclxuICAgICAgICBmaWxlbmFtZSxcclxuICAgICAgICBzb3VyY2VNYXAsXHJcbiAgICAgICAgYnJlYWtMaW5lQ29kZSxcclxuICAgICAgICBuZWVkSW5kZW50XHJcbiAgICB9KTtcclxuICAgIGdlbmVyYXRvci5wdXNoKG1vZGUgPT09ICdub3JtYWwnID8gYGZ1bmN0aW9uIF9fbXNnX18gKGN0eCkge2AgOiBgKGN0eCkgPT4ge2ApO1xyXG4gICAgZ2VuZXJhdG9yLmluZGVudChuZWVkSW5kZW50KTtcclxuICAgIGlmIChoZWxwZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBnZW5lcmF0b3IucHVzaChgY29uc3QgeyAke2hlbHBlcnMubWFwKHMgPT4gYCR7c306IF8ke3N9YCkuam9pbignLCAnKX0gfSA9IGN0eGApO1xyXG4gICAgICAgIGdlbmVyYXRvci5uZXdsaW5lKCk7XHJcbiAgICB9XHJcbiAgICBnZW5lcmF0b3IucHVzaChgcmV0dXJuIGApO1xyXG4gICAgZ2VuZXJhdGVOb2RlKGdlbmVyYXRvciwgYXN0KTtcclxuICAgIGdlbmVyYXRvci5kZWluZGVudChuZWVkSW5kZW50KTtcclxuICAgIGdlbmVyYXRvci5wdXNoKGB9YCk7XHJcbiAgICBjb25zdCB7IGNvZGUsIG1hcCB9ID0gZ2VuZXJhdG9yLmNvbnRleHQoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYXN0LFxyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgbWFwOiBtYXAgPyBtYXAudG9KU09OKCkgOiB1bmRlZmluZWQgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICB9O1xyXG59O1xuXG5mdW5jdGlvbiBiYXNlQ29tcGlsZShzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3QgYXNzaWduZWRPcHRpb25zID0gYXNzaWduKHt9LCBvcHRpb25zKTtcclxuICAgIC8vIHBhcnNlIHNvdXJjZSBjb2Rlc1xyXG4gICAgY29uc3QgcGFyc2VyID0gY3JlYXRlUGFyc2VyKGFzc2lnbmVkT3B0aW9ucyk7XHJcbiAgICBjb25zdCBhc3QgPSBwYXJzZXIucGFyc2Uoc291cmNlKTtcclxuICAgIC8vIHRyYW5zZm9ybSBBU1RzXHJcbiAgICB0cmFuc2Zvcm0oYXN0LCBhc3NpZ25lZE9wdGlvbnMpO1xyXG4gICAgLy8gZ2VuZXJhdGUgamF2YXNjcmlwdCBjb2Rlc1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlKGFzdCwgYXNzaWduZWRPcHRpb25zKTtcclxufVxuXG5leHBvcnQgeyBDb21waWxlRXJyb3JDb2RlcywgRVJST1JfRE9NQUlOLCBMb2NhdGlvblN0dWIsIGJhc2VDb21waWxlLCBjcmVhdGVDb21waWxlRXJyb3IsIGNyZWF0ZUxvY2F0aW9uLCBjcmVhdGVQYXJzZXIsIGNyZWF0ZVBvc2l0aW9uLCBkZWZhdWx0T25FcnJvciwgZXJyb3JNZXNzYWdlcyB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@intlify/shared/dist/shared.esm-bundler.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@intlify/shared/dist/shared.esm-bundler.js ***!
|
||
\*****************************************************************/
|
||
/*! exports provided: assign, createEmitter, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createEmitter\", function() { return createEmitter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeHtml\", function() { return escapeHtml; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"friendlyJSONstringify\", function() { return friendlyJSONstringify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateCodeFrame\", function() { return generateCodeFrame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateFormatCacheKey\", function() { return generateFormatCacheKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getGlobalThis\", function() { return getGlobalThis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwn\", function() { return hasOwn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inBrowser\", function() { return inBrowser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEmptyObject\", function() { return isEmptyObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPlainObject\", function() { return isPlainObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPromise\", function() { return isPromise; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSymbol\", function() { return isSymbol; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeSymbol\", function() { return makeSymbol; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mark\", function() { return mark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"measure\", function() { return measure; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"objectToString\", function() { return objectToString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDisplayString\", function() { return toDisplayString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toTypeString\", function() { return toTypeString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"warn\", function() { return warn; });\n/*!\n * shared v9.2.0-beta.34\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\r\n * Original Utilities\r\n * written by kazuya kawaguchi\r\n */\r\nconst inBrowser = typeof window !== 'undefined';\r\nlet mark;\r\nlet measure;\r\nif ((true)) {\r\n const perf = inBrowser && window.performance;\r\n if (perf &&\r\n perf.mark &&\r\n perf.measure &&\r\n perf.clearMarks &&\r\n perf.clearMeasures) {\r\n mark = (tag) => perf.mark(tag);\r\n measure = (name, startTag, endTag) => {\r\n perf.measure(name, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n };\r\n }\r\n}\r\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\r\n/* eslint-disable */\r\nfunction format(message, ...args) {\r\n if (args.length === 1 && isObject(args[0])) {\r\n args = args[0];\r\n }\r\n if (!args || !args.hasOwnProperty) {\r\n args = {};\r\n }\r\n return message.replace(RE_ARGS, (match, identifier) => {\r\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\r\n });\r\n}\r\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst makeSymbol = (name) => hasSymbol ? Symbol(name) : name;\r\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\r\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\r\n .replace(/\\u2028/g, '\\\\u2028')\r\n .replace(/\\u2029/g, '\\\\u2029')\r\n .replace(/\\u0027/g, '\\\\u0027');\r\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\r\nconst isDate = (val) => toTypeString(val) === '[object Date]';\r\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\r\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\r\nfunction warn(msg, err) {\r\n if (typeof console !== 'undefined') {\r\n console.warn(`[intlify] ` + msg);\r\n /* istanbul ignore if */\r\n if (err) {\r\n console.warn(err.stack);\r\n }\r\n }\r\n}\r\nconst assign = Object.assign;\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n // prettier-ignore\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\r\nfunction escapeHtml(rawText) {\r\n return rawText\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n}\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/* eslint-enable */\r\n/**\r\n * Useful Utilities By Evan you\r\n * Modified by kazuya kawaguchi\r\n * MIT License\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\r\n */\r\nconst isArray = Array.isArray;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isBoolean = (val) => typeof val === 'boolean';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => // eslint-disable-line\r\n val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\n// for converting list and named values to displayed strings.\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n};\r\nconst RANGE = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n const lines = source.split(/\\r?\\n/);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - lineLength) + 1;\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * Event emitter, forked from the below:\r\n * - original repository url: https://github.com/developit/mitt\r\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\r\n * - author: Jason Miller (https://github.com/developit)\r\n * - license: MIT\r\n */\r\n/**\r\n * Create a event emitter\r\n *\r\n * @returns An event emitter\r\n */\r\nfunction createEmitter() {\r\n const events = new Map();\r\n const emitter = {\r\n events,\r\n on(event, handler) {\r\n const handlers = events.get(event);\r\n const added = handlers && handlers.push(handler);\r\n if (!added) {\r\n events.set(event, [handler]);\r\n }\r\n },\r\n off(event, handler) {\r\n const handlers = events.get(event);\r\n if (handlers) {\r\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\r\n }\r\n },\r\n emit(event, payload) {\r\n (events.get(event) || [])\r\n .slice()\r\n .map(handler => handler(payload));\r\n (events.get('*') || [])\r\n .slice()\r\n .map(handler => handler(event, payload));\r\n }\r\n };\r\n return emitter;\r\n}\n\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGludGxpZnkvc2hhcmVkL2Rpc3Qvc2hhcmVkLmVzbS1idW5kbGVyLmpzP2Y4M2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxJQUFxQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwrRUFBK0UsK0JBQStCO0FBQzlHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsOEJBQThCO0FBQzlCLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQSxtQ0FBbUMsK0JBQStCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixLQUFLLEVBQUUsb0NBQW9DLEtBQUssU0FBUztBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFNFciLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGludGxpZnkvc2hhcmVkL2Rpc3Qvc2hhcmVkLmVzbS1idW5kbGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gICogc2hhcmVkIHY5LjIuMC1iZXRhLjM0XG4gICogKGMpIDIwMjIga2F6dXlhIGthd2FndWNoaVxuICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAgKi9cbi8qKlxyXG4gKiBPcmlnaW5hbCBVdGlsaXRpZXNcclxuICogd3JpdHRlbiBieSBrYXp1eWEga2F3YWd1Y2hpXHJcbiAqL1xyXG5jb25zdCBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcclxubGV0IG1hcms7XHJcbmxldCBtZWFzdXJlO1xyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICBjb25zdCBwZXJmID0gaW5Ccm93c2VyICYmIHdpbmRvdy5wZXJmb3JtYW5jZTtcclxuICAgIGlmIChwZXJmICYmXHJcbiAgICAgICAgcGVyZi5tYXJrICYmXHJcbiAgICAgICAgcGVyZi5tZWFzdXJlICYmXHJcbiAgICAgICAgcGVyZi5jbGVhck1hcmtzICYmXHJcbiAgICAgICAgcGVyZi5jbGVhck1lYXN1cmVzKSB7XHJcbiAgICAgICAgbWFyayA9ICh0YWcpID0+IHBlcmYubWFyayh0YWcpO1xyXG4gICAgICAgIG1lYXN1cmUgPSAobmFtZSwgc3RhcnRUYWcsIGVuZFRhZykgPT4ge1xyXG4gICAgICAgICAgICBwZXJmLm1lYXN1cmUobmFtZSwgc3RhcnRUYWcsIGVuZFRhZyk7XHJcbiAgICAgICAgICAgIHBlcmYuY2xlYXJNYXJrcyhzdGFydFRhZyk7XHJcbiAgICAgICAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuY29uc3QgUkVfQVJHUyA9IC9cXHsoWzAtOWEtekEtWl0rKVxcfS9nO1xyXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG5mdW5jdGlvbiBmb3JtYXQobWVzc2FnZSwgLi4uYXJncykge1xyXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIGlzT2JqZWN0KGFyZ3NbMF0pKSB7XHJcbiAgICAgICAgYXJncyA9IGFyZ3NbMF07XHJcbiAgICB9XHJcbiAgICBpZiAoIWFyZ3MgfHwgIWFyZ3MuaGFzT3duUHJvcGVydHkpIHtcclxuICAgICAgICBhcmdzID0ge307XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKFJFX0FSR1MsIChtYXRjaCwgaWRlbnRpZmllcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBhcmdzLmhhc093blByb3BlcnR5KGlkZW50aWZpZXIpID8gYXJnc1tpZGVudGlmaWVyXSA6ICcnO1xyXG4gICAgfSk7XHJcbn1cclxuY29uc3QgaGFzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcclxuY29uc3QgbWFrZVN5bWJvbCA9IChuYW1lKSA9PiBoYXNTeW1ib2wgPyBTeW1ib2wobmFtZSkgOiBuYW1lO1xyXG5jb25zdCBnZW5lcmF0ZUZvcm1hdENhY2hlS2V5ID0gKGxvY2FsZSwga2V5LCBzb3VyY2UpID0+IGZyaWVuZGx5SlNPTnN0cmluZ2lmeSh7IGw6IGxvY2FsZSwgazoga2V5LCBzOiBzb3VyY2UgfSk7XHJcbmNvbnN0IGZyaWVuZGx5SlNPTnN0cmluZ2lmeSA9IChqc29uKSA9PiBKU09OLnN0cmluZ2lmeShqc29uKVxyXG4gICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgJ1xcXFx1MjAyOCcpXHJcbiAgICAucmVwbGFjZSgvXFx1MjAyOS9nLCAnXFxcXHUyMDI5JylcclxuICAgIC5yZXBsYWNlKC9cXHUwMDI3L2csICdcXFxcdTAwMjcnKTtcclxuY29uc3QgaXNOdW1iZXIgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh2YWwpO1xyXG5jb25zdCBpc0RhdGUgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xyXG5jb25zdCBpc1JlZ0V4cCA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBSZWdFeHBdJztcclxuY29uc3QgaXNFbXB0eU9iamVjdCA9ICh2YWwpID0+IGlzUGxhaW5PYmplY3QodmFsKSAmJiBPYmplY3Qua2V5cyh2YWwpLmxlbmd0aCA9PT0gMDtcclxuZnVuY3Rpb24gd2Fybihtc2csIGVycikge1xyXG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgW2ludGxpZnldIGAgKyBtc2cpO1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGVyci5zdGFjayk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmNvbnN0IGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XHJcbmxldCBfZ2xvYmFsVGhpcztcclxuY29uc3QgZ2V0R2xvYmFsVGhpcyA9ICgpID0+IHtcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgcmV0dXJuIChfZ2xvYmFsVGhpcyB8fFxyXG4gICAgICAgIChfZ2xvYmFsVGhpcyA9XHJcbiAgICAgICAgICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgPyBnbG9iYWxUaGlzXHJcbiAgICAgICAgICAgICAgICA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gc2VsZlxyXG4gICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB3aW5kb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnbG9iYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pKTtcclxufTtcclxuZnVuY3Rpb24gZXNjYXBlSHRtbChyYXdUZXh0KSB7XHJcbiAgICByZXR1cm4gcmF3VGV4dFxyXG4gICAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcclxuICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXHJcbiAgICAgICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKVxyXG4gICAgICAgIC5yZXBsYWNlKC8nL2csICcmYXBvczsnKTtcclxufVxyXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XHJcbmZ1bmN0aW9uIGhhc093bihvYmosIGtleSkge1xyXG4gICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xyXG59XHJcbi8qIGVzbGludC1lbmFibGUgKi9cclxuLyoqXHJcbiAqIFVzZWZ1bCBVdGlsaXRpZXMgQnkgRXZhbiB5b3VcclxuICogTW9kaWZpZWQgYnkga2F6dXlhIGthd2FndWNoaVxyXG4gKiBNSVQgTGljZW5zZVxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLW5leHQvYmxvYi9tYXN0ZXIvcGFja2FnZXMvc2hhcmVkL3NyYy9pbmRleC50c1xyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLW5leHQvYmxvYi9tYXN0ZXIvcGFja2FnZXMvc2hhcmVkL3NyYy9jb2RlZnJhbWUudHNcclxuICovXHJcbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xyXG5jb25zdCBpc0Z1bmN0aW9uID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJztcclxuY29uc3QgaXNTdHJpbmcgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcclxuY29uc3QgaXNCb29sZWFuID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nO1xyXG5jb25zdCBpc1N5bWJvbCA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdzeW1ib2wnO1xyXG5jb25zdCBpc09iamVjdCA9ICh2YWwpID0+IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcclxuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcclxuY29uc3QgaXNQcm9taXNlID0gKHZhbCkgPT4ge1xyXG4gICAgcmV0dXJuIGlzT2JqZWN0KHZhbCkgJiYgaXNGdW5jdGlvbih2YWwudGhlbikgJiYgaXNGdW5jdGlvbih2YWwuY2F0Y2gpO1xyXG59O1xyXG5jb25zdCBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XHJcbmNvbnN0IHRvVHlwZVN0cmluZyA9ICh2YWx1ZSkgPT4gb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XHJcbmNvbnN0IGlzUGxhaW5PYmplY3QgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XHJcbi8vIGZvciBjb252ZXJ0aW5nIGxpc3QgYW5kIG5hbWVkIHZhbHVlcyB0byBkaXNwbGF5ZWQgc3RyaW5ncy5cclxuY29uc3QgdG9EaXNwbGF5U3RyaW5nID0gKHZhbCkgPT4ge1xyXG4gICAgcmV0dXJuIHZhbCA9PSBudWxsXHJcbiAgICAgICAgPyAnJ1xyXG4gICAgICAgIDogaXNBcnJheSh2YWwpIHx8IChpc1BsYWluT2JqZWN0KHZhbCkgJiYgdmFsLnRvU3RyaW5nID09PSBvYmplY3RUb1N0cmluZylcclxuICAgICAgICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIG51bGwsIDIpXHJcbiAgICAgICAgICAgIDogU3RyaW5nKHZhbCk7XHJcbn07XHJcbmNvbnN0IFJBTkdFID0gMjtcclxuZnVuY3Rpb24gZ2VuZXJhdGVDb2RlRnJhbWUoc291cmNlLCBzdGFydCA9IDAsIGVuZCA9IHNvdXJjZS5sZW5ndGgpIHtcclxuICAgIGNvbnN0IGxpbmVzID0gc291cmNlLnNwbGl0KC9cXHI/XFxuLyk7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgY29uc3QgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY291bnQgKz0gbGluZXNbaV0ubGVuZ3RoICsgMTtcclxuICAgICAgICBpZiAoY291bnQgPj0gc3RhcnQpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgLSBSQU5HRTsgaiA8PSBpICsgUkFOR0UgfHwgZW5kID4gY291bnQ7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGogPCAwIHx8IGogPj0gbGluZXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGogKyAxO1xyXG4gICAgICAgICAgICAgICAgcmVzLnB1c2goYCR7bGluZX0keycgJy5yZXBlYXQoMyAtIFN0cmluZyhsaW5lKS5sZW5ndGgpfXwgICR7bGluZXNbal19YCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lTGVuZ3RoID0gbGluZXNbal0ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBwdXNoIHVuZGVybGluZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZCA9IHN0YXJ0IC0gKGNvdW50IC0gbGluZUxlbmd0aCkgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KDEsIGVuZCA+IGNvdW50ID8gbGluZUxlbmd0aCAtIHBhZCA6IGVuZCAtIHN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChgICAgfCAgYCArICcgJy5yZXBlYXQocGFkKSArICdeJy5yZXBlYXQobGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChqID4gaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmQgPiBjb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heChNYXRoLm1pbihlbmQgLSBjb3VudCwgbGluZUxlbmd0aCksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaChgICAgfCAgYCArICdeJy5yZXBlYXQobGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IGxpbmVMZW5ndGggKyAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXMuam9pbignXFxuJyk7XHJcbn1cblxuLyoqXHJcbiAqIEV2ZW50IGVtaXR0ZXIsIGZvcmtlZCBmcm9tIHRoZSBiZWxvdzpcclxuICogLSBvcmlnaW5hbCByZXBvc2l0b3J5IHVybDogaHR0cHM6Ly9naXRodWIuY29tL2RldmVsb3BpdC9taXR0XHJcbiAqIC0gY29kZSB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9kZXZlbG9waXQvbWl0dC9ibG9iL21hc3Rlci9zcmMvaW5kZXgudHNcclxuICogLSBhdXRob3I6IEphc29uIE1pbGxlciAoaHR0cHM6Ly9naXRodWIuY29tL2RldmVsb3BpdClcclxuICogLSBsaWNlbnNlOiBNSVRcclxuICovXHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBldmVudCBlbWl0dGVyXHJcbiAqXHJcbiAqIEByZXR1cm5zIEFuIGV2ZW50IGVtaXR0ZXJcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUVtaXR0ZXIoKSB7XHJcbiAgICBjb25zdCBldmVudHMgPSBuZXcgTWFwKCk7XHJcbiAgICBjb25zdCBlbWl0dGVyID0ge1xyXG4gICAgICAgIGV2ZW50cyxcclxuICAgICAgICBvbihldmVudCwgaGFuZGxlcikge1xyXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IGV2ZW50cy5nZXQoZXZlbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRlZCA9IGhhbmRsZXJzICYmIGhhbmRsZXJzLnB1c2goaGFuZGxlcik7XHJcbiAgICAgICAgICAgIGlmICghYWRkZWQpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50cy5zZXQoZXZlbnQsIFtoYW5kbGVyXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG9mZihldmVudCwgaGFuZGxlcikge1xyXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IGV2ZW50cy5nZXQoZXZlbnQpO1xyXG4gICAgICAgICAgICBpZiAoaGFuZGxlcnMpIHtcclxuICAgICAgICAgICAgICAgIGhhbmRsZXJzLnNwbGljZShoYW5kbGVycy5pbmRleE9mKGhhbmRsZXIpID4+PiAwLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW1pdChldmVudCwgcGF5bG9hZCkge1xyXG4gICAgICAgICAgICAoZXZlbnRzLmdldChldmVudCkgfHwgW10pXHJcbiAgICAgICAgICAgICAgICAuc2xpY2UoKVxyXG4gICAgICAgICAgICAgICAgLm1hcChoYW5kbGVyID0+IGhhbmRsZXIocGF5bG9hZCkpO1xyXG4gICAgICAgICAgICAoZXZlbnRzLmdldCgnKicpIHx8IFtdKVxyXG4gICAgICAgICAgICAgICAgLnNsaWNlKClcclxuICAgICAgICAgICAgICAgIC5tYXAoaGFuZGxlciA9PiBoYW5kbGVyKGV2ZW50LCBwYXlsb2FkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBlbWl0dGVyO1xyXG59XG5cbmV4cG9ydCB7IGFzc2lnbiwgY3JlYXRlRW1pdHRlciwgZXNjYXBlSHRtbCwgZm9ybWF0LCBmcmllbmRseUpTT05zdHJpbmdpZnksIGdlbmVyYXRlQ29kZUZyYW1lLCBnZW5lcmF0ZUZvcm1hdENhY2hlS2V5LCBnZXRHbG9iYWxUaGlzLCBoYXNPd24sIGluQnJvd3NlciwgaXNBcnJheSwgaXNCb29sZWFuLCBpc0RhdGUsIGlzRW1wdHlPYmplY3QsIGlzRnVuY3Rpb24sIGlzTnVtYmVyLCBpc09iamVjdCwgaXNQbGFpbk9iamVjdCwgaXNQcm9taXNlLCBpc1JlZ0V4cCwgaXNTdHJpbmcsIGlzU3ltYm9sLCBtYWtlU3ltYm9sLCBtYXJrLCBtZWFzdXJlLCBvYmplY3RUb1N0cmluZywgdG9EaXNwbGF5U3RyaW5nLCB0b1R5cGVTdHJpbmcsIHdhcm4gfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@intlify/shared/dist/shared.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js ***!
|
||
\*****************************************************************************/
|
||
/*! exports provided: VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VueDevToolsLabels\", function() { return VueDevToolsLabels; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VueDevToolsPlaceholders\", function() { return VueDevToolsPlaceholders; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VueDevToolsTimelineColors\", function() { return VueDevToolsTimelineColors; });\n/*!\n * vue-devtools v9.2.0-beta.34\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst VueDevToolsLabels = {\r\n [\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */]: 'Vue I18n devtools',\r\n [\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]: 'I18n Resources',\r\n [\"vue-i18n-timeline\" /* TIMELINE */]: 'Vue I18n'\r\n};\r\nconst VueDevToolsPlaceholders = {\r\n [\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]: 'Search for scopes ...'\r\n};\r\nconst VueDevToolsTimelineColors = {\r\n [\"vue-i18n-timeline\" /* TIMELINE */]: 0xffcd19\r\n};\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGludGxpZnkvdnVlLWRldnRvb2xzL2Rpc3QvdnVlLWRldnRvb2xzLmVzbS1idW5kbGVyLmpzPzg1YTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFaUYiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGludGxpZnkvdnVlLWRldnRvb2xzL2Rpc3QvdnVlLWRldnRvb2xzLmVzbS1idW5kbGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gICogdnVlLWRldnRvb2xzIHY5LjIuMC1iZXRhLjM0XG4gICogKGMpIDIwMjIga2F6dXlhIGthd2FndWNoaVxuICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAgKi9cbmNvbnN0IFZ1ZURldlRvb2xzTGFiZWxzID0ge1xyXG4gICAgW1widnVlLWRldnRvb2xzLXBsdWdpbi12dWUtaTE4blwiIC8qIFBMVUdJTiAqL106ICdWdWUgSTE4biBkZXZ0b29scycsXHJcbiAgICBbXCJ2dWUtaTE4bi1yZXNvdXJjZS1pbnNwZWN0b3JcIiAvKiBDVVNUT01fSU5TUEVDVE9SICovXTogJ0kxOG4gUmVzb3VyY2VzJyxcclxuICAgIFtcInZ1ZS1pMThuLXRpbWVsaW5lXCIgLyogVElNRUxJTkUgKi9dOiAnVnVlIEkxOG4nXHJcbn07XHJcbmNvbnN0IFZ1ZURldlRvb2xzUGxhY2Vob2xkZXJzID0ge1xyXG4gICAgW1widnVlLWkxOG4tcmVzb3VyY2UtaW5zcGVjdG9yXCIgLyogQ1VTVE9NX0lOU1BFQ1RPUiAqL106ICdTZWFyY2ggZm9yIHNjb3BlcyAuLi4nXHJcbn07XHJcbmNvbnN0IFZ1ZURldlRvb2xzVGltZWxpbmVDb2xvcnMgPSB7XHJcbiAgICBbXCJ2dWUtaTE4bi10aW1lbGluZVwiIC8qIFRJTUVMSU5FICovXTogMHhmZmNkMTlcclxufTtcblxuZXhwb3J0IHsgVnVlRGV2VG9vbHNMYWJlbHMsIFZ1ZURldlRvb2xzUGxhY2Vob2xkZXJzLCBWdWVEZXZUb29sc1RpbWVsaW5lQ29sb3JzIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@kazvmoe-infra/pinch-zoom-element/dist/pinch-zoom.es.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/@kazvmoe-infra/pinch-zoom-element/dist/pinch-zoom.es.js ***!
|
||
\******************************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var pointer_tracker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pointer-tracker */ \"./node_modules/pointer-tracker/dist/PointerTracker.mjs\");\n\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \"pinch-zoom {\\n display: block;\\n overflow: hidden;\\n touch-action: none;\\n --scale: 1;\\n --x: 0;\\n --y: 0;\\n}\\n\\npinch-zoom > * {\\n transform: translate(var(--x), var(--y)) scale(var(--scale));\\n transform-origin: 0 0;\\n will-change: transform;\\n}\\n\";\nstyleInject(css);\n\nconst minScaleAttr = 'min-scale';\r\nconst allowPanMinScaleAttr = 'allow-pan-min-scale';\r\nconst resetToMinScaleLimitAttr = 'reset-to-min-scale-limit';\r\nconst reachMinScaleStrategyAttr = 'reach-min-scale-strategy';\r\nconst stopPropagateHandledAttr = 'stop-propagate-handled';\r\nconst reachMinScaleStrategyDefault = 'none';\r\nfunction getDistance(a, b) {\r\n if (!b)\r\n return 0;\r\n return Math.sqrt((b.clientX - a.clientX) ** 2 + (b.clientY - a.clientY) ** 2);\r\n}\r\nfunction getMidpoint(a, b) {\r\n if (!b)\r\n return a;\r\n return {\r\n clientX: (a.clientX + b.clientX) / 2,\r\n clientY: (a.clientY + b.clientY) / 2,\r\n };\r\n}\r\nfunction getAbsoluteValue(value, max) {\r\n if (typeof value === 'number')\r\n return value;\r\n if (value.trimRight().endsWith('%')) {\r\n return max * parseFloat(value) / 100;\r\n }\r\n return parseFloat(value);\r\n}\r\n// I'd rather use DOMMatrix/DOMPoint here, but the browser support isn't good enough.\r\n// Given that, better to use something everything supports.\r\nlet cachedSvg;\r\nfunction getSVG() {\r\n return cachedSvg || (cachedSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'));\r\n}\r\nfunction createMatrix() {\r\n return getSVG().createSVGMatrix();\r\n}\r\nfunction createPoint() {\r\n return getSVG().createSVGPoint();\r\n}\r\nconst MIN_SCALE = 0.01;\r\nconst ALLOW_PAN_MIN_SCALE = -1;\r\nconst RESET_TO_MIN_SCALE_LIMIT = -1;\r\nconst BUTTON_LEFT = 0;\r\nconst roundedCmp = (a, b) => {\r\n return Math.round(a * 100) - Math.round(b * 100);\r\n};\r\nclass PinchZoom extends HTMLElement {\r\n constructor() {\r\n super();\r\n // Current transform.\r\n this._transform = createMatrix();\r\n // Watch for children changes.\r\n // Note this won't fire for initial contents,\r\n // so _stageElChange is also called in connectedCallback.\r\n new MutationObserver(() => this._stageElChange())\r\n .observe(this, { childList: true });\r\n // Watch for pointers\r\n const pointerTracker = new pointer_tracker__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this, {\r\n start: (pointer, event) => {\r\n // We only want to track 2 pointers at most\r\n if (pointerTracker.currentPointers.length === 2 || !this._positioningEl)\r\n return false;\r\n const isPan = pointerTracker.currentPointers.length + 1 === 1;\r\n const handled = !(isPan && !this._allowPan());\r\n if (handled) {\r\n this._maybeStopPropagate(event);\r\n if (!isPan) { // only cancel if something was propagated\r\n this._maybeEmitCancel([pointer, ...pointerTracker.currentPointers]);\r\n }\r\n }\r\n event.preventDefault();\r\n return true;\r\n },\r\n move: (previousPointers, _, event) => {\r\n this._onPointerMove(previousPointers, pointerTracker.currentPointers, event);\r\n },\r\n end: (pointer, event) => {\r\n this._onPointerEnd(pointer, pointerTracker.currentPointers, event);\r\n },\r\n });\r\n this.addEventListener('wheel', event => this._onWheel(event));\r\n this.addEventListener('click', event => this._onClick(event, pointerTracker));\r\n }\r\n static get observedAttributes() { return [minScaleAttr]; }\r\n attributeChangedCallback(name, oldValue, newValue) {\r\n if (name === minScaleAttr) {\r\n if (this.scale < this.minScale) {\r\n this.setTransform({ scale: this.minScale });\r\n }\r\n }\r\n }\r\n get minScale() {\r\n const attrValue = this.getAttribute(minScaleAttr);\r\n if (!attrValue)\r\n return MIN_SCALE;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(MIN_SCALE, value);\r\n return MIN_SCALE;\r\n }\r\n set minScale(value) {\r\n this.setAttribute(minScaleAttr, String(value));\r\n }\r\n get reachMinScaleStrategy() {\r\n const attrValue = this.getAttribute(reachMinScaleStrategyAttr);\r\n const v = attrValue;\r\n return v || reachMinScaleStrategyDefault;\r\n }\r\n set reachMinScaleStrategy(value) {\r\n this.setAttribute(reachMinScaleStrategyAttr, value);\r\n }\r\n get allowPanMinScale() {\r\n const attrValue = this.getAttribute(allowPanMinScaleAttr);\r\n if (!attrValue)\r\n return ALLOW_PAN_MIN_SCALE;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(ALLOW_PAN_MIN_SCALE, value);\r\n return ALLOW_PAN_MIN_SCALE;\r\n }\r\n set allowPanMinScale(value) {\r\n this.setAttribute(allowPanMinScaleAttr, String(value));\r\n }\r\n get resetToMinScaleLimit() {\r\n const attrValue = this.getAttribute(resetToMinScaleLimitAttr);\r\n if (!attrValue)\r\n return RESET_TO_MIN_SCALE_LIMIT;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(RESET_TO_MIN_SCALE_LIMIT, value);\r\n return RESET_TO_MIN_SCALE_LIMIT;\r\n }\r\n set resetToMinScaleLimit(value) {\r\n this.setAttribute(resetToMinScaleLimitAttr, String(value));\r\n }\r\n get stopPropagateHandled() {\r\n return this.hasAttribute(stopPropagateHandledAttr);\r\n }\r\n set stopPropagateHandled(value) {\r\n if (value) {\r\n this.setAttribute(stopPropagateHandledAttr, '');\r\n }\r\n else {\r\n this.removeAttribute(stopPropagateHandledAttr);\r\n }\r\n }\r\n connectedCallback() {\r\n this._stageElChange();\r\n }\r\n get x() {\r\n return this._transform.e;\r\n }\r\n get y() {\r\n return this._transform.f;\r\n }\r\n get scale() {\r\n return this._transform.a;\r\n }\r\n /**\r\n * Change the scale, adjusting x/y by a given transform origin.\r\n */\r\n scaleTo(scale, opts = {}) {\r\n let { originX = 0, originY = 0, } = opts;\r\n const { relativeTo = 'content', allowChangeEvent = false, } = opts;\r\n const relativeToEl = (relativeTo === 'content' ? this._positioningEl : this);\r\n // No content element? Fall back to just setting scale\r\n if (!relativeToEl || !this._positioningEl) {\r\n this.setTransform({ scale, allowChangeEvent });\r\n return;\r\n }\r\n const rect = relativeToEl.getBoundingClientRect();\r\n originX = getAbsoluteValue(originX, rect.width);\r\n originY = getAbsoluteValue(originY, rect.height);\r\n if (relativeTo === 'content') {\r\n originX += this.x;\r\n originY += this.y;\r\n }\r\n else {\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n originX -= currentRect.left;\r\n originY -= currentRect.top;\r\n }\r\n this._applyChange({\r\n allowChangeEvent,\r\n originX,\r\n originY,\r\n scaleDiff: scale / this.scale,\r\n });\r\n }\r\n /**\r\n * Update the stage with a given scale/x/y.\r\n */\r\n setTransform(opts = {}) {\r\n const { scale = this.scale, allowChangeEvent = false, } = opts;\r\n let { x = this.x, y = this.y, } = opts;\r\n // If we don't have an element to position, just set the value as given.\r\n // We'll check bounds later.\r\n if (!this._positioningEl) {\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n return;\r\n }\r\n // Get current layout\r\n const thisBounds = this.getBoundingClientRect();\r\n const positioningElBounds = this._positioningEl.getBoundingClientRect();\r\n // Not displayed. May be disconnected or display:none.\r\n // Just take the values, and we'll check bounds later.\r\n if (!thisBounds.width || !thisBounds.height) {\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n return;\r\n }\r\n // Create points for _positioningEl.\r\n let topLeft = createPoint();\r\n topLeft.x = positioningElBounds.left - thisBounds.left;\r\n topLeft.y = positioningElBounds.top - thisBounds.top;\r\n let bottomRight = createPoint();\r\n bottomRight.x = positioningElBounds.width + topLeft.x;\r\n bottomRight.y = positioningElBounds.height + topLeft.y;\r\n // Calculate the intended position of _positioningEl.\r\n const matrix = createMatrix()\r\n .translate(x, y)\r\n .scale(scale)\r\n // Undo current transform\r\n .multiply(this._transform.inverse());\r\n topLeft = topLeft.matrixTransform(matrix);\r\n bottomRight = bottomRight.matrixTransform(matrix);\r\n // Ensure _positioningEl can't move beyond out-of-bounds.\r\n // Correct for x\r\n if (topLeft.x > thisBounds.width) {\r\n x += thisBounds.width - topLeft.x;\r\n }\r\n else if (bottomRight.x < 0) {\r\n x += -bottomRight.x;\r\n }\r\n // Correct for y\r\n if (topLeft.y > thisBounds.height) {\r\n y += thisBounds.height - topLeft.y;\r\n }\r\n else if (bottomRight.y < 0) {\r\n y += -bottomRight.y;\r\n }\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n }\r\n /**\r\n * Update transform values without checking bounds. This is only called in setTransform.\r\n */\r\n _updateTransform(scale, x, y, allowChangeEvent) {\r\n // Avoid scaling to zero\r\n if (scale < this.minScale) {\r\n scale = this.minScale;\r\n }\r\n // Return if there's no change\r\n if (scale === this.scale &&\r\n x === this.x &&\r\n y === this.y)\r\n return;\r\n this._transform.e = x;\r\n this._transform.f = y;\r\n this._transform.d = this._transform.a = scale;\r\n this.style.setProperty('--x', this.x + 'px');\r\n this.style.setProperty('--y', this.y + 'px');\r\n this.style.setProperty('--scale', this.scale + '');\r\n if (allowChangeEvent) {\r\n const event = new Event('change', { bubbles: true });\r\n this.dispatchEvent(event);\r\n }\r\n }\r\n /**\r\n * Called when the direct children of this element change.\r\n * Until we have have shadow dom support across the board, we\r\n * require a single element to be the child of <pinch-zoom>, and\r\n * that's the element we pan/scale.\r\n */\r\n _stageElChange() {\r\n this._positioningEl = undefined;\r\n if (this.children.length === 0)\r\n return;\r\n this._positioningEl = this.children[0];\r\n if (this.children.length > 1) {\r\n console.warn('<pinch-zoom> must not have more than one child.');\r\n }\r\n // Do a bounds check\r\n this.setTransform({ allowChangeEvent: true });\r\n }\r\n _onWheel(event) {\r\n if (!this._positioningEl)\r\n return;\r\n event.preventDefault();\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n let { deltaY } = event;\r\n const { ctrlKey, deltaMode } = event;\r\n if (deltaMode === 1) { // 1 is \"lines\", 0 is \"pixels\"\r\n // Firefox uses \"lines\" for some types of mouse\r\n deltaY *= 15;\r\n }\r\n // ctrlKey is true when pinch-zooming on a trackpad.\r\n const divisor = ctrlKey ? 100 : 300;\r\n const scaleDiff = 1 - deltaY / divisor;\r\n const isZoomOut = scaleDiff < 1;\r\n this._applyChange({\r\n scaleDiff,\r\n originX: event.clientX - currentRect.left,\r\n originY: event.clientY - currentRect.top,\r\n allowChangeEvent: true,\r\n });\r\n if (isZoomOut) {\r\n this._maybeResetScale();\r\n }\r\n }\r\n _onPointerMove(previousPointers, currentPointers, event) {\r\n if (!this._positioningEl)\r\n return;\r\n const isPan = previousPointers.length < 2;\r\n if (isPan && !this._allowPan()) {\r\n return;\r\n }\r\n // Combine next points with previous points\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n // For calculating panning movement\r\n const prevMidpoint = getMidpoint(previousPointers[0], previousPointers[1]);\r\n const newMidpoint = getMidpoint(currentPointers[0], currentPointers[1]);\r\n // Midpoint within the element\r\n const originX = prevMidpoint.clientX - currentRect.left;\r\n const originY = prevMidpoint.clientY - currentRect.top;\r\n // Calculate the desired change in scale\r\n const prevDistance = getDistance(previousPointers[0], previousPointers[1]);\r\n const newDistance = getDistance(currentPointers[0], currentPointers[1]);\r\n const scaleDiff = prevDistance ? newDistance / prevDistance : 1;\r\n this._applyChange({\r\n originX, originY, scaleDiff,\r\n panX: newMidpoint.clientX - prevMidpoint.clientX,\r\n panY: newMidpoint.clientY - prevMidpoint.clientY,\r\n allowChangeEvent: true,\r\n });\r\n this._maybeStopPropagate(event);\r\n }\r\n _maybeResetScale() {\r\n if (roundedCmp(this.scale, this.resetToMinScaleLimit) <= 0) {\r\n this._resetToMinScale();\r\n }\r\n }\r\n _onPointerEnd(pointer, currentPointers, event) {\r\n if (!this._positioningEl)\r\n return;\r\n const totalPointers = 1 + currentPointers.length;\r\n const isPinch = totalPointers >= 2;\r\n const isPan = totalPointers == 1;\r\n if (isPinch) {\r\n this._maybeResetScale();\r\n }\r\n if (isPan && !this._allowPan()) {\r\n return;\r\n }\r\n this._maybeStopPropagate(event);\r\n }\r\n _resetToMinScale() {\r\n if (this.reachMinScaleStrategy === 'reset') {\r\n this.setTransform({ scale: this.minScale, x: 0, y: 0 });\r\n }\r\n else {\r\n this.setTransform({ scale: this.minScale });\r\n }\r\n }\r\n /** Transform the view & fire a change event */\r\n _applyChange(opts = {}) {\r\n const { panX = 0, panY = 0, originX = 0, originY = 0, scaleDiff = 1, allowChangeEvent = false, } = opts;\r\n const matrix = createMatrix()\r\n // Translate according to panning.\r\n .translate(panX, panY)\r\n // Scale about the origin.\r\n .translate(originX, originY)\r\n // Apply current translate\r\n .translate(this.x, this.y)\r\n .scale(scaleDiff)\r\n .translate(-originX, -originY)\r\n // Apply current scale.\r\n .scale(this.scale);\r\n // Convert the transform into basic translate & scale.\r\n this.setTransform({\r\n allowChangeEvent,\r\n scale: matrix.a,\r\n x: matrix.e,\r\n y: matrix.f,\r\n });\r\n }\r\n _maybeStopPropagate(event) {\r\n if (this.stopPropagateHandled) {\r\n event.stopPropagation();\r\n }\r\n }\r\n _allowPan() {\r\n return (this.allowPanMinScale > 0\r\n && roundedCmp(this.scale, this.allowPanMinScale) > 0);\r\n }\r\n _maybeEmitCancel(pointers) {\r\n const makeCancelEvent = (pointer) => (new PointerEvent('pointercancel', {\r\n pointerId: pointer.id,\r\n clientX: pointer.clientX,\r\n clientY: pointer.clientY,\r\n }));\r\n if (this.stopPropagateHandled) {\r\n pointers.forEach(p => {\r\n if (this.parentElement && typeof this.parentElement.dispatchEvent === 'function') {\r\n this.parentElement.dispatchEvent(makeCancelEvent(p));\r\n }\r\n });\r\n }\r\n }\r\n _onClick(event, pointerTracker) {\r\n // We never handle non-left-clicks\r\n if (event.button !== BUTTON_LEFT) {\r\n return;\r\n }\r\n const wasPanning = pointerTracker.currentPointers.length === 0;\r\n const handled = !(wasPanning && !this._allowPan());\r\n if (handled) {\r\n this._maybeStopPropagate(event);\r\n }\r\n }\r\n}\n\ncustomElements.define('pinch-zoom', PinchZoom);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (PinchZoom);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGthenZtb2UtaW5mcmEvcGluY2gtem9vbS1lbGVtZW50L2Rpc3QvcGluY2gtem9vbS5lcy5qcz85M2E1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBNkM7O0FBRTdDO0FBQ0E7QUFDQTs7QUFFQSxnREFBZ0QsUUFBUTs7QUFFeEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLG1CQUFtQixxQkFBcUIsdUJBQXVCLGVBQWUsV0FBVyxXQUFXLEdBQUcsb0JBQW9CLGlFQUFpRSwwQkFBMEIsMkJBQTJCLEdBQUc7QUFDM1E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0JBQWtCO0FBQzlDO0FBQ0EsbUNBQW1DLHVEQUFjO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx1QkFBdUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHVCQUF1QjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QixhQUFhLDRCQUE0QjtBQUN6QyxlQUFlLG9EQUFvRDtBQUNuRTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMEJBQTBCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGVBQWUsZ0RBQWdEO0FBQy9ELGFBQWEsMEJBQTBCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLGdCQUFnQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIseUJBQXlCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUztBQUN0QixlQUFlLHFCQUFxQjtBQUNwQyw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsbUNBQW1DO0FBQ2xFO0FBQ0E7QUFDQSwrQkFBK0IsdUJBQXVCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixlQUFlLHlGQUF5RjtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRWUsd0VBQVMsRUFBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9Aa2F6dm1vZS1pbmZyYS9waW5jaC16b29tLWVsZW1lbnQvZGlzdC9waW5jaC16b29tLmVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBvaW50ZXJUcmFja2VyIGZyb20gJ3BvaW50ZXItdHJhY2tlcic7XG5cbmZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxudmFyIGNzcyA9IFwicGluY2gtem9vbSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0b3VjaC1hY3Rpb246IG5vbmU7XFxuICAtLXNjYWxlOiAxO1xcbiAgLS14OiAwO1xcbiAgLS15OiAwO1xcbn1cXG5cXG5waW5jaC16b29tID4gKiB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS14KSwgdmFyKC0teSkpIHNjYWxlKHZhcigtLXNjYWxlKSk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG5cIjtcbnN0eWxlSW5qZWN0KGNzcyk7XG5cbmNvbnN0IG1pblNjYWxlQXR0ciA9ICdtaW4tc2NhbGUnO1xyXG5jb25zdCBhbGxvd1Bhbk1pblNjYWxlQXR0ciA9ICdhbGxvdy1wYW4tbWluLXNjYWxlJztcclxuY29uc3QgcmVzZXRUb01pblNjYWxlTGltaXRBdHRyID0gJ3Jlc2V0LXRvLW1pbi1zY2FsZS1saW1pdCc7XHJcbmNvbnN0IHJlYWNoTWluU2NhbGVTdHJhdGVneUF0dHIgPSAncmVhY2gtbWluLXNjYWxlLXN0cmF0ZWd5JztcclxuY29uc3Qgc3RvcFByb3BhZ2F0ZUhhbmRsZWRBdHRyID0gJ3N0b3AtcHJvcGFnYXRlLWhhbmRsZWQnO1xyXG5jb25zdCByZWFjaE1pblNjYWxlU3RyYXRlZ3lEZWZhdWx0ID0gJ25vbmUnO1xyXG5mdW5jdGlvbiBnZXREaXN0YW5jZShhLCBiKSB7XHJcbiAgICBpZiAoIWIpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gTWF0aC5zcXJ0KChiLmNsaWVudFggLSBhLmNsaWVudFgpICoqIDIgKyAoYi5jbGllbnRZIC0gYS5jbGllbnRZKSAqKiAyKTtcclxufVxyXG5mdW5jdGlvbiBnZXRNaWRwb2ludChhLCBiKSB7XHJcbiAgICBpZiAoIWIpXHJcbiAgICAgICAgcmV0dXJuIGE7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGNsaWVudFg6IChhLmNsaWVudFggKyBiLmNsaWVudFgpIC8gMixcclxuICAgICAgICBjbGllbnRZOiAoYS5jbGllbnRZICsgYi5jbGllbnRZKSAvIDIsXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGdldEFic29sdXRlVmFsdWUodmFsdWUsIG1heCkge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgaWYgKHZhbHVlLnRyaW1SaWdodCgpLmVuZHNXaXRoKCclJykpIHtcclxuICAgICAgICByZXR1cm4gbWF4ICogcGFyc2VGbG9hdCh2YWx1ZSkgLyAxMDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbn1cclxuLy8gSSdkIHJhdGhlciB1c2UgRE9NTWF0cml4L0RPTVBvaW50IGhlcmUsIGJ1dCB0aGUgYnJvd3NlciBzdXBwb3J0IGlzbid0IGdvb2QgZW5vdWdoLlxyXG4vLyBHaXZlbiB0aGF0LCBiZXR0ZXIgdG8gdXNlIHNvbWV0aGluZyBldmVyeXRoaW5nIHN1cHBvcnRzLlxyXG5sZXQgY2FjaGVkU3ZnO1xyXG5mdW5jdGlvbiBnZXRTVkcoKSB7XHJcbiAgICByZXR1cm4gY2FjaGVkU3ZnIHx8IChjYWNoZWRTdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N2ZycpKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVNYXRyaXgoKSB7XHJcbiAgICByZXR1cm4gZ2V0U1ZHKCkuY3JlYXRlU1ZHTWF0cml4KCk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUG9pbnQoKSB7XHJcbiAgICByZXR1cm4gZ2V0U1ZHKCkuY3JlYXRlU1ZHUG9pbnQoKTtcclxufVxyXG5jb25zdCBNSU5fU0NBTEUgPSAwLjAxO1xyXG5jb25zdCBBTExPV19QQU5fTUlOX1NDQUxFID0gLTE7XHJcbmNvbnN0IFJFU0VUX1RPX01JTl9TQ0FMRV9MSU1JVCA9IC0xO1xyXG5jb25zdCBCVVRUT05fTEVGVCA9IDA7XHJcbmNvbnN0IHJvdW5kZWRDbXAgPSAoYSwgYikgPT4ge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQoYSAqIDEwMCkgLSBNYXRoLnJvdW5kKGIgKiAxMDApO1xyXG59O1xyXG5jbGFzcyBQaW5jaFpvb20gZXh0ZW5kcyBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIC8vIEN1cnJlbnQgdHJhbnNmb3JtLlxyXG4gICAgICAgIHRoaXMuX3RyYW5zZm9ybSA9IGNyZWF0ZU1hdHJpeCgpO1xyXG4gICAgICAgIC8vIFdhdGNoIGZvciBjaGlsZHJlbiBjaGFuZ2VzLlxyXG4gICAgICAgIC8vIE5vdGUgdGhpcyB3b24ndCBmaXJlIGZvciBpbml0aWFsIGNvbnRlbnRzLFxyXG4gICAgICAgIC8vIHNvIF9zdGFnZUVsQ2hhbmdlIGlzIGFsc28gY2FsbGVkIGluIGNvbm5lY3RlZENhbGxiYWNrLlxyXG4gICAgICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMuX3N0YWdlRWxDaGFuZ2UoKSlcclxuICAgICAgICAgICAgLm9ic2VydmUodGhpcywgeyBjaGlsZExpc3Q6IHRydWUgfSk7XHJcbiAgICAgICAgLy8gV2F0Y2ggZm9yIHBvaW50ZXJzXHJcbiAgICAgICAgY29uc3QgcG9pbnRlclRyYWNrZXIgPSBuZXcgUG9pbnRlclRyYWNrZXIodGhpcywge1xyXG4gICAgICAgICAgICBzdGFydDogKHBvaW50ZXIsIGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gdHJhY2sgMiBwb2ludGVycyBhdCBtb3N0XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRlclRyYWNrZXIuY3VycmVudFBvaW50ZXJzLmxlbmd0aCA9PT0gMiB8fCAhdGhpcy5fcG9zaXRpb25pbmdFbClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc1BhbiA9IHBvaW50ZXJUcmFja2VyLmN1cnJlbnRQb2ludGVycy5sZW5ndGggKyAxID09PSAxO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlZCA9ICEoaXNQYW4gJiYgIXRoaXMuX2FsbG93UGFuKCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXliZVN0b3BQcm9wYWdhdGUoZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNQYW4pIHsgLy8gb25seSBjYW5jZWwgaWYgc29tZXRoaW5nIHdhcyBwcm9wYWdhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21heWJlRW1pdENhbmNlbChbcG9pbnRlciwgLi4ucG9pbnRlclRyYWNrZXIuY3VycmVudFBvaW50ZXJzXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtb3ZlOiAocHJldmlvdXNQb2ludGVycywgXywgZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uUG9pbnRlck1vdmUocHJldmlvdXNQb2ludGVycywgcG9pbnRlclRyYWNrZXIuY3VycmVudFBvaW50ZXJzLCBldmVudCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVuZDogKHBvaW50ZXIsIGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vblBvaW50ZXJFbmQocG9pbnRlciwgcG9pbnRlclRyYWNrZXIuY3VycmVudFBvaW50ZXJzLCBldmVudCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIGV2ZW50ID0+IHRoaXMuX29uV2hlZWwoZXZlbnQpKTtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnQgPT4gdGhpcy5fb25DbGljayhldmVudCwgcG9pbnRlclRyYWNrZXIpKTtcclxuICAgIH1cclxuICAgIHN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCkgeyByZXR1cm4gW21pblNjYWxlQXR0cl07IH1cclxuICAgIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpIHtcclxuICAgICAgICBpZiAobmFtZSA9PT0gbWluU2NhbGVBdHRyKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNjYWxlIDwgdGhpcy5taW5TY2FsZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUcmFuc2Zvcm0oeyBzY2FsZTogdGhpcy5taW5TY2FsZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBtaW5TY2FsZSgpIHtcclxuICAgICAgICBjb25zdCBhdHRyVmFsdWUgPSB0aGlzLmdldEF0dHJpYnV0ZShtaW5TY2FsZUF0dHIpO1xyXG4gICAgICAgIGlmICghYXR0clZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm4gTUlOX1NDQUxFO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChhdHRyVmFsdWUpO1xyXG4gICAgICAgIGlmIChOdW1iZXIuaXNGaW5pdGUodmFsdWUpKVxyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoTUlOX1NDQUxFLCB2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIE1JTl9TQ0FMRTtcclxuICAgIH1cclxuICAgIHNldCBtaW5TY2FsZSh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKG1pblNjYWxlQXR0ciwgU3RyaW5nKHZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBnZXQgcmVhY2hNaW5TY2FsZVN0cmF0ZWd5KCkge1xyXG4gICAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKHJlYWNoTWluU2NhbGVTdHJhdGVneUF0dHIpO1xyXG4gICAgICAgIGNvbnN0IHYgPSBhdHRyVmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHYgfHwgcmVhY2hNaW5TY2FsZVN0cmF0ZWd5RGVmYXVsdDtcclxuICAgIH1cclxuICAgIHNldCByZWFjaE1pblNjYWxlU3RyYXRlZ3kodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShyZWFjaE1pblNjYWxlU3RyYXRlZ3lBdHRyLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBnZXQgYWxsb3dQYW5NaW5TY2FsZSgpIHtcclxuICAgICAgICBjb25zdCBhdHRyVmFsdWUgPSB0aGlzLmdldEF0dHJpYnV0ZShhbGxvd1Bhbk1pblNjYWxlQXR0cik7XHJcbiAgICAgICAgaWYgKCFhdHRyVmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybiBBTExPV19QQU5fTUlOX1NDQUxFO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChhdHRyVmFsdWUpO1xyXG4gICAgICAgIGlmIChOdW1iZXIuaXNGaW5pdGUodmFsdWUpKVxyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoQUxMT1dfUEFOX01JTl9TQ0FMRSwgdmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBBTExPV19QQU5fTUlOX1NDQUxFO1xyXG4gICAgfVxyXG4gICAgc2V0IGFsbG93UGFuTWluU2NhbGUodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShhbGxvd1Bhbk1pblNjYWxlQXR0ciwgU3RyaW5nKHZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBnZXQgcmVzZXRUb01pblNjYWxlTGltaXQoKSB7XHJcbiAgICAgICAgY29uc3QgYXR0clZhbHVlID0gdGhpcy5nZXRBdHRyaWJ1dGUocmVzZXRUb01pblNjYWxlTGltaXRBdHRyKTtcclxuICAgICAgICBpZiAoIWF0dHJWYWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuIFJFU0VUX1RPX01JTl9TQ0FMRV9MSU1JVDtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcnNlRmxvYXQoYXR0clZhbHVlKTtcclxuICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZhbHVlKSlcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KFJFU0VUX1RPX01JTl9TQ0FMRV9MSU1JVCwgdmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBSRVNFVF9UT19NSU5fU0NBTEVfTElNSVQ7XHJcbiAgICB9XHJcbiAgICBzZXQgcmVzZXRUb01pblNjYWxlTGltaXQodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShyZXNldFRvTWluU2NhbGVMaW1pdEF0dHIsIFN0cmluZyh2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHN0b3BQcm9wYWdhdGVIYW5kbGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZShzdG9wUHJvcGFnYXRlSGFuZGxlZEF0dHIpO1xyXG4gICAgfVxyXG4gICAgc2V0IHN0b3BQcm9wYWdhdGVIYW5kbGVkKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKHN0b3BQcm9wYWdhdGVIYW5kbGVkQXR0ciwgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoc3RvcFByb3BhZ2F0ZUhhbmRsZWRBdHRyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcclxuICAgICAgICB0aGlzLl9zdGFnZUVsQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICBnZXQgeCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtLmU7XHJcbiAgICB9XHJcbiAgICBnZXQgeSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtLmY7XHJcbiAgICB9XHJcbiAgICBnZXQgc2NhbGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybS5hO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGFuZ2UgdGhlIHNjYWxlLCBhZGp1c3RpbmcgeC95IGJ5IGEgZ2l2ZW4gdHJhbnNmb3JtIG9yaWdpbi5cclxuICAgICAqL1xyXG4gICAgc2NhbGVUbyhzY2FsZSwgb3B0cyA9IHt9KSB7XHJcbiAgICAgICAgbGV0IHsgb3JpZ2luWCA9IDAsIG9yaWdpblkgPSAwLCB9ID0gb3B0cztcclxuICAgICAgICBjb25zdCB7IHJlbGF0aXZlVG8gPSAnY29udGVudCcsIGFsbG93Q2hhbmdlRXZlbnQgPSBmYWxzZSwgfSA9IG9wdHM7XHJcbiAgICAgICAgY29uc3QgcmVsYXRpdmVUb0VsID0gKHJlbGF0aXZlVG8gPT09ICdjb250ZW50JyA/IHRoaXMuX3Bvc2l0aW9uaW5nRWwgOiB0aGlzKTtcclxuICAgICAgICAvLyBObyBjb250ZW50IGVsZW1lbnQ/IEZhbGwgYmFjayB0byBqdXN0IHNldHRpbmcgc2NhbGVcclxuICAgICAgICBpZiAoIXJlbGF0aXZlVG9FbCB8fCAhdGhpcy5fcG9zaXRpb25pbmdFbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFRyYW5zZm9ybSh7IHNjYWxlLCBhbGxvd0NoYW5nZUV2ZW50IH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlY3QgPSByZWxhdGl2ZVRvRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgb3JpZ2luWCA9IGdldEFic29sdXRlVmFsdWUob3JpZ2luWCwgcmVjdC53aWR0aCk7XHJcbiAgICAgICAgb3JpZ2luWSA9IGdldEFic29sdXRlVmFsdWUob3JpZ2luWSwgcmVjdC5oZWlnaHQpO1xyXG4gICAgICAgIGlmIChyZWxhdGl2ZVRvID09PSAnY29udGVudCcpIHtcclxuICAgICAgICAgICAgb3JpZ2luWCArPSB0aGlzLng7XHJcbiAgICAgICAgICAgIG9yaWdpblkgKz0gdGhpcy55O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFJlY3QgPSB0aGlzLl9wb3NpdGlvbmluZ0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBvcmlnaW5YIC09IGN1cnJlbnRSZWN0LmxlZnQ7XHJcbiAgICAgICAgICAgIG9yaWdpblkgLT0gY3VycmVudFJlY3QudG9wO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9hcHBseUNoYW5nZSh7XHJcbiAgICAgICAgICAgIGFsbG93Q2hhbmdlRXZlbnQsXHJcbiAgICAgICAgICAgIG9yaWdpblgsXHJcbiAgICAgICAgICAgIG9yaWdpblksXHJcbiAgICAgICAgICAgIHNjYWxlRGlmZjogc2NhbGUgLyB0aGlzLnNjYWxlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIHN0YWdlIHdpdGggYSBnaXZlbiBzY2FsZS94L3kuXHJcbiAgICAgKi9cclxuICAgIHNldFRyYW5zZm9ybShvcHRzID0ge30pIHtcclxuICAgICAgICBjb25zdCB7IHNjYWxlID0gdGhpcy5zY2FsZSwgYWxsb3dDaGFuZ2VFdmVudCA9IGZhbHNlLCB9ID0gb3B0cztcclxuICAgICAgICBsZXQgeyB4ID0gdGhpcy54LCB5ID0gdGhpcy55LCB9ID0gb3B0cztcclxuICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFuIGVsZW1lbnQgdG8gcG9zaXRpb24sIGp1c3Qgc2V0IHRoZSB2YWx1ZSBhcyBnaXZlbi5cclxuICAgICAgICAvLyBXZSdsbCBjaGVjayBib3VuZHMgbGF0ZXIuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9wb3NpdGlvbmluZ0VsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRyYW5zZm9ybShzY2FsZSwgeCwgeSwgYWxsb3dDaGFuZ2VFdmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gR2V0IGN1cnJlbnQgbGF5b3V0XHJcbiAgICAgICAgY29uc3QgdGhpc0JvdW5kcyA9IHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25pbmdFbEJvdW5kcyA9IHRoaXMuX3Bvc2l0aW9uaW5nRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgLy8gTm90IGRpc3BsYXllZC4gTWF5IGJlIGRpc2Nvbm5lY3RlZCBvciBkaXNwbGF5Om5vbmUuXHJcbiAgICAgICAgLy8gSnVzdCB0YWtlIHRoZSB2YWx1ZXMsIGFuZCB3ZSdsbCBjaGVjayBib3VuZHMgbGF0ZXIuXHJcbiAgICAgICAgaWYgKCF0aGlzQm91bmRzLndpZHRoIHx8ICF0aGlzQm91bmRzLmhlaWdodCkge1xyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUcmFuc2Zvcm0oc2NhbGUsIHgsIHksIGFsbG93Q2hhbmdlRXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIENyZWF0ZSBwb2ludHMgZm9yIF9wb3NpdGlvbmluZ0VsLlxyXG4gICAgICAgIGxldCB0b3BMZWZ0ID0gY3JlYXRlUG9pbnQoKTtcclxuICAgICAgICB0b3BMZWZ0LnggPSBwb3NpdGlvbmluZ0VsQm91bmRzLmxlZnQgLSB0aGlzQm91bmRzLmxlZnQ7XHJcbiAgICAgICAgdG9wTGVmdC55ID0gcG9zaXRpb25pbmdFbEJvdW5kcy50b3AgLSB0aGlzQm91bmRzLnRvcDtcclxuICAgICAgICBsZXQgYm90dG9tUmlnaHQgPSBjcmVhdGVQb2ludCgpO1xyXG4gICAgICAgIGJvdHRvbVJpZ2h0LnggPSBwb3NpdGlvbmluZ0VsQm91bmRzLndpZHRoICsgdG9wTGVmdC54O1xyXG4gICAgICAgIGJvdHRvbVJpZ2h0LnkgPSBwb3NpdGlvbmluZ0VsQm91bmRzLmhlaWdodCArIHRvcExlZnQueTtcclxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGludGVuZGVkIHBvc2l0aW9uIG9mIF9wb3NpdGlvbmluZ0VsLlxyXG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IGNyZWF0ZU1hdHJpeCgpXHJcbiAgICAgICAgICAgIC50cmFuc2xhdGUoeCwgeSlcclxuICAgICAgICAgICAgLnNjYWxlKHNjYWxlKVxyXG4gICAgICAgICAgICAvLyBVbmRvIGN1cnJlbnQgdHJhbnNmb3JtXHJcbiAgICAgICAgICAgIC5tdWx0aXBseSh0aGlzLl90cmFuc2Zvcm0uaW52ZXJzZSgpKTtcclxuICAgICAgICB0b3BMZWZ0ID0gdG9wTGVmdC5tYXRyaXhUcmFuc2Zvcm0obWF0cml4KTtcclxuICAgICAgICBib3R0b21SaWdodCA9IGJvdHRvbVJpZ2h0Lm1hdHJpeFRyYW5zZm9ybShtYXRyaXgpO1xyXG4gICAgICAgIC8vIEVuc3VyZSBfcG9zaXRpb25pbmdFbCBjYW4ndCBtb3ZlIGJleW9uZCBvdXQtb2YtYm91bmRzLlxyXG4gICAgICAgIC8vIENvcnJlY3QgZm9yIHhcclxuICAgICAgICBpZiAodG9wTGVmdC54ID4gdGhpc0JvdW5kcy53aWR0aCkge1xyXG4gICAgICAgICAgICB4ICs9IHRoaXNCb3VuZHMud2lkdGggLSB0b3BMZWZ0Lng7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJvdHRvbVJpZ2h0LnggPCAwKSB7XHJcbiAgICAgICAgICAgIHggKz0gLWJvdHRvbVJpZ2h0Lng7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIENvcnJlY3QgZm9yIHlcclxuICAgICAgICBpZiAodG9wTGVmdC55ID4gdGhpc0JvdW5kcy5oZWlnaHQpIHtcclxuICAgICAgICAgICAgeSArPSB0aGlzQm91bmRzLmhlaWdodCAtIHRvcExlZnQueTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYm90dG9tUmlnaHQueSA8IDApIHtcclxuICAgICAgICAgICAgeSArPSAtYm90dG9tUmlnaHQueTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlVHJhbnNmb3JtKHNjYWxlLCB4LCB5LCBhbGxvd0NoYW5nZUV2ZW50KTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRyYW5zZm9ybSB2YWx1ZXMgd2l0aG91dCBjaGVja2luZyBib3VuZHMuIFRoaXMgaXMgb25seSBjYWxsZWQgaW4gc2V0VHJhbnNmb3JtLlxyXG4gICAgICovXHJcbiAgICBfdXBkYXRlVHJhbnNmb3JtKHNjYWxlLCB4LCB5LCBhbGxvd0NoYW5nZUV2ZW50KSB7XHJcbiAgICAgICAgLy8gQXZvaWQgc2NhbGluZyB0byB6ZXJvXHJcbiAgICAgICAgaWYgKHNjYWxlIDwgdGhpcy5taW5TY2FsZSkge1xyXG4gICAgICAgICAgICBzY2FsZSA9IHRoaXMubWluU2NhbGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFJldHVybiBpZiB0aGVyZSdzIG5vIGNoYW5nZVxyXG4gICAgICAgIGlmIChzY2FsZSA9PT0gdGhpcy5zY2FsZSAmJlxyXG4gICAgICAgICAgICB4ID09PSB0aGlzLnggJiZcclxuICAgICAgICAgICAgeSA9PT0gdGhpcy55KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtLmUgPSB4O1xyXG4gICAgICAgIHRoaXMuX3RyYW5zZm9ybS5mID0geTtcclxuICAgICAgICB0aGlzLl90cmFuc2Zvcm0uZCA9IHRoaXMuX3RyYW5zZm9ybS5hID0gc2NhbGU7XHJcbiAgICAgICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS14JywgdGhpcy54ICsgJ3B4Jyk7XHJcbiAgICAgICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS15JywgdGhpcy55ICsgJ3B4Jyk7XHJcbiAgICAgICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zY2FsZScsIHRoaXMuc2NhbGUgKyAnJyk7XHJcbiAgICAgICAgaWYgKGFsbG93Q2hhbmdlRXZlbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBkaXJlY3QgY2hpbGRyZW4gb2YgdGhpcyBlbGVtZW50IGNoYW5nZS5cclxuICAgICAqIFVudGlsIHdlIGhhdmUgaGF2ZSBzaGFkb3cgZG9tIHN1cHBvcnQgYWNyb3NzIHRoZSBib2FyZCwgd2VcclxuICAgICAqIHJlcXVpcmUgYSBzaW5nbGUgZWxlbWVudCB0byBiZSB0aGUgY2hpbGQgb2YgPHBpbmNoLXpvb20+LCBhbmRcclxuICAgICAqIHRoYXQncyB0aGUgZWxlbWVudCB3ZSBwYW4vc2NhbGUuXHJcbiAgICAgKi9cclxuICAgIF9zdGFnZUVsQ2hhbmdlKCkge1xyXG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uaW5nRWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdGhpcy5fcG9zaXRpb25pbmdFbCA9IHRoaXMuY2hpbGRyZW5bMF07XHJcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJzxwaW5jaC16b29tPiBtdXN0IG5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgY2hpbGQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIERvIGEgYm91bmRzIGNoZWNrXHJcbiAgICAgICAgdGhpcy5zZXRUcmFuc2Zvcm0oeyBhbGxvd0NoYW5nZUV2ZW50OiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gICAgX29uV2hlZWwoZXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3Bvc2l0aW9uaW5nRWwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWN0ID0gdGhpcy5fcG9zaXRpb25pbmdFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBsZXQgeyBkZWx0YVkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IHsgY3RybEtleSwgZGVsdGFNb2RlIH0gPSBldmVudDtcclxuICAgICAgICBpZiAoZGVsdGFNb2RlID09PSAxKSB7IC8vIDEgaXMgXCJsaW5lc1wiLCAwIGlzIFwicGl4ZWxzXCJcclxuICAgICAgICAgICAgLy8gRmlyZWZveCB1c2VzIFwibGluZXNcIiBmb3Igc29tZSB0eXBlcyBvZiBtb3VzZVxyXG4gICAgICAgICAgICBkZWx0YVkgKj0gMTU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGN0cmxLZXkgaXMgdHJ1ZSB3aGVuIHBpbmNoLXpvb21pbmcgb24gYSB0cmFja3BhZC5cclxuICAgICAgICBjb25zdCBkaXZpc29yID0gY3RybEtleSA/IDEwMCA6IDMwMDtcclxuICAgICAgICBjb25zdCBzY2FsZURpZmYgPSAxIC0gZGVsdGFZIC8gZGl2aXNvcjtcclxuICAgICAgICBjb25zdCBpc1pvb21PdXQgPSBzY2FsZURpZmYgPCAxO1xyXG4gICAgICAgIHRoaXMuX2FwcGx5Q2hhbmdlKHtcclxuICAgICAgICAgICAgc2NhbGVEaWZmLFxyXG4gICAgICAgICAgICBvcmlnaW5YOiBldmVudC5jbGllbnRYIC0gY3VycmVudFJlY3QubGVmdCxcclxuICAgICAgICAgICAgb3JpZ2luWTogZXZlbnQuY2xpZW50WSAtIGN1cnJlbnRSZWN0LnRvcCxcclxuICAgICAgICAgICAgYWxsb3dDaGFuZ2VFdmVudDogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaXNab29tT3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21heWJlUmVzZXRTY2FsZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9vblBvaW50ZXJNb3ZlKHByZXZpb3VzUG9pbnRlcnMsIGN1cnJlbnRQb2ludGVycywgZXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3Bvc2l0aW9uaW5nRWwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjb25zdCBpc1BhbiA9IHByZXZpb3VzUG9pbnRlcnMubGVuZ3RoIDwgMjtcclxuICAgICAgICBpZiAoaXNQYW4gJiYgIXRoaXMuX2FsbG93UGFuKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBDb21iaW5lIG5leHQgcG9pbnRzIHdpdGggcHJldmlvdXMgcG9pbnRzXHJcbiAgICAgICAgY29uc3QgY3VycmVudFJlY3QgPSB0aGlzLl9wb3NpdGlvbmluZ0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIC8vIEZvciBjYWxjdWxhdGluZyBwYW5uaW5nIG1vdmVtZW50XHJcbiAgICAgICAgY29uc3QgcHJldk1pZHBvaW50ID0gZ2V0TWlkcG9pbnQocHJldmlvdXNQb2ludGVyc1swXSwgcHJldmlvdXNQb2ludGVyc1sxXSk7XHJcbiAgICAgICAgY29uc3QgbmV3TWlkcG9pbnQgPSBnZXRNaWRwb2ludChjdXJyZW50UG9pbnRlcnNbMF0sIGN1cnJlbnRQb2ludGVyc1sxXSk7XHJcbiAgICAgICAgLy8gTWlkcG9pbnQgd2l0aGluIHRoZSBlbGVtZW50XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luWCA9IHByZXZNaWRwb2ludC5jbGllbnRYIC0gY3VycmVudFJlY3QubGVmdDtcclxuICAgICAgICBjb25zdCBvcmlnaW5ZID0gcHJldk1pZHBvaW50LmNsaWVudFkgLSBjdXJyZW50UmVjdC50b3A7XHJcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBkZXNpcmVkIGNoYW5nZSBpbiBzY2FsZVxyXG4gICAgICAgIGNvbnN0IHByZXZEaXN0YW5jZSA9IGdldERpc3RhbmNlKHByZXZpb3VzUG9pbnRlcnNbMF0sIHByZXZpb3VzUG9pbnRlcnNbMV0pO1xyXG4gICAgICAgIGNvbnN0IG5ld0Rpc3RhbmNlID0gZ2V0RGlzdGFuY2UoY3VycmVudFBvaW50ZXJzWzBdLCBjdXJyZW50UG9pbnRlcnNbMV0pO1xyXG4gICAgICAgIGNvbnN0IHNjYWxlRGlmZiA9IHByZXZEaXN0YW5jZSA/IG5ld0Rpc3RhbmNlIC8gcHJldkRpc3RhbmNlIDogMTtcclxuICAgICAgICB0aGlzLl9hcHBseUNoYW5nZSh7XHJcbiAgICAgICAgICAgIG9yaWdpblgsIG9yaWdpblksIHNjYWxlRGlmZixcclxuICAgICAgICAgICAgcGFuWDogbmV3TWlkcG9pbnQuY2xpZW50WCAtIHByZXZNaWRwb2ludC5jbGllbnRYLFxyXG4gICAgICAgICAgICBwYW5ZOiBuZXdNaWRwb2ludC5jbGllbnRZIC0gcHJldk1pZHBvaW50LmNsaWVudFksXHJcbiAgICAgICAgICAgIGFsbG93Q2hhbmdlRXZlbnQ6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fbWF5YmVTdG9wUHJvcGFnYXRlKGV2ZW50KTtcclxuICAgIH1cclxuICAgIF9tYXliZVJlc2V0U2NhbGUoKSB7XHJcbiAgICAgICAgaWYgKHJvdW5kZWRDbXAodGhpcy5zY2FsZSwgdGhpcy5yZXNldFRvTWluU2NhbGVMaW1pdCkgPD0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNldFRvTWluU2NhbGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfb25Qb2ludGVyRW5kKHBvaW50ZXIsIGN1cnJlbnRQb2ludGVycywgZXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3Bvc2l0aW9uaW5nRWwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjb25zdCB0b3RhbFBvaW50ZXJzID0gMSArIGN1cnJlbnRQb2ludGVycy5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgaXNQaW5jaCA9IHRvdGFsUG9pbnRlcnMgPj0gMjtcclxuICAgICAgICBjb25zdCBpc1BhbiA9IHRvdGFsUG9pbnRlcnMgPT0gMTtcclxuICAgICAgICBpZiAoaXNQaW5jaCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXliZVJlc2V0U2NhbGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzUGFuICYmICF0aGlzLl9hbGxvd1BhbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWF5YmVTdG9wUHJvcGFnYXRlKGV2ZW50KTtcclxuICAgIH1cclxuICAgIF9yZXNldFRvTWluU2NhbGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVhY2hNaW5TY2FsZVN0cmF0ZWd5ID09PSAncmVzZXQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VHJhbnNmb3JtKHsgc2NhbGU6IHRoaXMubWluU2NhbGUsIHg6IDAsIHk6IDAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldFRyYW5zZm9ybSh7IHNjYWxlOiB0aGlzLm1pblNjYWxlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKiBUcmFuc2Zvcm0gdGhlIHZpZXcgJiBmaXJlIGEgY2hhbmdlIGV2ZW50ICovXHJcbiAgICBfYXBwbHlDaGFuZ2Uob3B0cyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3QgeyBwYW5YID0gMCwgcGFuWSA9IDAsIG9yaWdpblggPSAwLCBvcmlnaW5ZID0gMCwgc2NhbGVEaWZmID0gMSwgYWxsb3dDaGFuZ2VFdmVudCA9IGZhbHNlLCB9ID0gb3B0cztcclxuICAgICAgICBjb25zdCBtYXRyaXggPSBjcmVhdGVNYXRyaXgoKVxyXG4gICAgICAgICAgICAvLyBUcmFuc2xhdGUgYWNjb3JkaW5nIHRvIHBhbm5pbmcuXHJcbiAgICAgICAgICAgIC50cmFuc2xhdGUocGFuWCwgcGFuWSlcclxuICAgICAgICAgICAgLy8gU2NhbGUgYWJvdXQgdGhlIG9yaWdpbi5cclxuICAgICAgICAgICAgLnRyYW5zbGF0ZShvcmlnaW5YLCBvcmlnaW5ZKVxyXG4gICAgICAgICAgICAvLyBBcHBseSBjdXJyZW50IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAudHJhbnNsYXRlKHRoaXMueCwgdGhpcy55KVxyXG4gICAgICAgICAgICAuc2NhbGUoc2NhbGVEaWZmKVxyXG4gICAgICAgICAgICAudHJhbnNsYXRlKC1vcmlnaW5YLCAtb3JpZ2luWSlcclxuICAgICAgICAgICAgLy8gQXBwbHkgY3VycmVudCBzY2FsZS5cclxuICAgICAgICAgICAgLnNjYWxlKHRoaXMuc2NhbGUpO1xyXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIHRyYW5zZm9ybSBpbnRvIGJhc2ljIHRyYW5zbGF0ZSAmIHNjYWxlLlxyXG4gICAgICAgIHRoaXMuc2V0VHJhbnNmb3JtKHtcclxuICAgICAgICAgICAgYWxsb3dDaGFuZ2VFdmVudCxcclxuICAgICAgICAgICAgc2NhbGU6IG1hdHJpeC5hLFxyXG4gICAgICAgICAgICB4OiBtYXRyaXguZSxcclxuICAgICAgICAgICAgeTogbWF0cml4LmYsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfbWF5YmVTdG9wUHJvcGFnYXRlKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RvcFByb3BhZ2F0ZUhhbmRsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgX2FsbG93UGFuKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5hbGxvd1Bhbk1pblNjYWxlID4gMFxyXG4gICAgICAgICAgICAmJiByb3VuZGVkQ21wKHRoaXMuc2NhbGUsIHRoaXMuYWxsb3dQYW5NaW5TY2FsZSkgPiAwKTtcclxuICAgIH1cclxuICAgIF9tYXliZUVtaXRDYW5jZWwocG9pbnRlcnMpIHtcclxuICAgICAgICBjb25zdCBtYWtlQ2FuY2VsRXZlbnQgPSAocG9pbnRlcikgPT4gKG5ldyBQb2ludGVyRXZlbnQoJ3BvaW50ZXJjYW5jZWwnLCB7XHJcbiAgICAgICAgICAgIHBvaW50ZXJJZDogcG9pbnRlci5pZCxcclxuICAgICAgICAgICAgY2xpZW50WDogcG9pbnRlci5jbGllbnRYLFxyXG4gICAgICAgICAgICBjbGllbnRZOiBwb2ludGVyLmNsaWVudFksXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIGlmICh0aGlzLnN0b3BQcm9wYWdhdGVIYW5kbGVkKSB7XHJcbiAgICAgICAgICAgIHBvaW50ZXJzLmZvckVhY2gocCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnRFbGVtZW50ICYmIHR5cGVvZiB0aGlzLnBhcmVudEVsZW1lbnQuZGlzcGF0Y2hFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50RWxlbWVudC5kaXNwYXRjaEV2ZW50KG1ha2VDYW5jZWxFdmVudChwKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9vbkNsaWNrKGV2ZW50LCBwb2ludGVyVHJhY2tlcikge1xyXG4gICAgICAgIC8vIFdlIG5ldmVyIGhhbmRsZSBub24tbGVmdC1jbGlja3NcclxuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSBCVVRUT05fTEVGVCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHdhc1Bhbm5pbmcgPSBwb2ludGVyVHJhY2tlci5jdXJyZW50UG9pbnRlcnMubGVuZ3RoID09PSAwO1xyXG4gICAgICAgIGNvbnN0IGhhbmRsZWQgPSAhKHdhc1Bhbm5pbmcgJiYgIXRoaXMuX2FsbG93UGFuKCkpO1xyXG4gICAgICAgIGlmIChoYW5kbGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21heWJlU3RvcFByb3BhZ2F0ZShldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmN1c3RvbUVsZW1lbnRzLmRlZmluZSgncGluY2gtem9vbScsIFBpbmNoWm9vbSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbmNoWm9vbTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@kazvmoe-infra/pinch-zoom-element/dist/pinch-zoom.es.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@ungap/event-target/esm/index.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/@ungap/event-target/esm/index.js ***!
|
||
\*******************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\ntry {\n self.EventTarget = (new EventTarget).constructor;\n} catch(EventTarget) {\n (function (Object, wm) {\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var proto = EventTarget.prototype;\n define(proto, 'addEventListener', function (type, listener, options) {\n for (var\n secret = wm.get(this),\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener)\n return;\n }\n listeners.push({target: this, listener: listener, options: options});\n });\n define(proto, 'dispatchEvent', function (event) {\n var secret = wm.get(this);\n var listeners = secret[event.type];\n if (listeners) {\n define(event, 'target', this);\n define(event, 'currentTarget', this);\n listeners.slice(0).some(dispatch, event);\n delete event.currentTarget;\n delete event.target;\n }\n return true;\n });\n define(proto, 'removeEventListener', function (type, listener) {\n for (var\n secret = wm.get(this),\n /* istanbul ignore next */\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener) {\n listeners.splice(i, 1);\n return;\n }\n }\n });\n self.EventTarget = EventTarget;\n function EventTarget() {'use strict';\n wm.set(this, create(null));\n }\n function define(target, name, value) {\n defineProperty(\n target,\n name,\n {\n configurable: true,\n writable: true,\n value: value\n }\n );\n }\n function dispatch(info) {\n var options = info.options;\n if (options && options.once)\n info.target.removeEventListener(this.type, info.listener);\n if (typeof info.listener === 'function')\n info.listener.call(info.target, this);\n else\n info.listener.handleEvent(this);\n return this._stopImmediatePropagationFlag;\n }\n }(Object, new WeakMap));\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (self.EventTarget);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHVuZ2FwL2V2ZW50LXRhcmdldC9lc20vaW5kZXguanM/YTM1NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsWUFBWTtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixtREFBbUQ7QUFDekUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxZQUFZO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ2UsK0VBQWdCLEVBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHVuZ2FwL2V2ZW50LXRhcmdldC9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKGMpIEFuZHJlYSBHaWFtbWFyY2hpIC0gSVNDICovXG52YXIgc2VsZiA9IHt9O1xudHJ5IHtcbiAgc2VsZi5FdmVudFRhcmdldCA9IChuZXcgRXZlbnRUYXJnZXQpLmNvbnN0cnVjdG9yO1xufSBjYXRjaChFdmVudFRhcmdldCkge1xuICAoZnVuY3Rpb24gKE9iamVjdCwgd20pIHtcbiAgICB2YXIgY3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcbiAgICB2YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4gICAgdmFyIHByb3RvID0gRXZlbnRUYXJnZXQucHJvdG90eXBlO1xuICAgIGRlZmluZShwcm90bywgJ2FkZEV2ZW50TGlzdGVuZXInLCBmdW5jdGlvbiAodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpIHtcbiAgICAgIGZvciAodmFyXG4gICAgICAgIHNlY3JldCA9IHdtLmdldCh0aGlzKSxcbiAgICAgICAgbGlzdGVuZXJzID0gc2VjcmV0W3R5cGVdIHx8IChzZWNyZXRbdHlwZV0gPSBbXSksXG4gICAgICAgIGkgPSAwLCBsZW5ndGggPSBsaXN0ZW5lcnMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKytcbiAgICAgICkge1xuICAgICAgICBpZiAobGlzdGVuZXJzW2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcilcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsaXN0ZW5lcnMucHVzaCh7dGFyZ2V0OiB0aGlzLCBsaXN0ZW5lcjogbGlzdGVuZXIsIG9wdGlvbnM6IG9wdGlvbnN9KTtcbiAgICB9KTtcbiAgICBkZWZpbmUocHJvdG8sICdkaXNwYXRjaEV2ZW50JywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgc2VjcmV0ID0gd20uZ2V0KHRoaXMpO1xuICAgICAgdmFyIGxpc3RlbmVycyA9IHNlY3JldFtldmVudC50eXBlXTtcbiAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgZGVmaW5lKGV2ZW50LCAndGFyZ2V0JywgdGhpcyk7XG4gICAgICAgIGRlZmluZShldmVudCwgJ2N1cnJlbnRUYXJnZXQnLCB0aGlzKTtcbiAgICAgICAgbGlzdGVuZXJzLnNsaWNlKDApLnNvbWUoZGlzcGF0Y2gsIGV2ZW50KTtcbiAgICAgICAgZGVsZXRlIGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGRlbGV0ZSBldmVudC50YXJnZXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBkZWZpbmUocHJvdG8sICdyZW1vdmVFdmVudExpc3RlbmVyJywgZnVuY3Rpb24gKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICBmb3IgKHZhclxuICAgICAgICBzZWNyZXQgPSB3bS5nZXQodGhpcyksXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGxpc3RlbmVycyA9IHNlY3JldFt0eXBlXSB8fCAoc2VjcmV0W3R5cGVdID0gW10pLFxuICAgICAgICBpID0gMCwgbGVuZ3RoID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrXG4gICAgICApIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyc1tpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHNlbGYuRXZlbnRUYXJnZXQgPSBFdmVudFRhcmdldDtcbiAgICBmdW5jdGlvbiBFdmVudFRhcmdldCgpIHsndXNlIHN0cmljdCc7XG4gICAgICB3bS5zZXQodGhpcywgY3JlYXRlKG51bGwpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVmaW5lKHRhcmdldCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRpc3BhdGNoKGluZm8pIHtcbiAgICAgIHZhciBvcHRpb25zID0gaW5mby5vcHRpb25zO1xuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5vbmNlKVxuICAgICAgICBpbmZvLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMudHlwZSwgaW5mby5saXN0ZW5lcik7XG4gICAgICBpZiAodHlwZW9mIGluZm8ubGlzdGVuZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIGluZm8ubGlzdGVuZXIuY2FsbChpbmZvLnRhcmdldCwgdGhpcyk7XG4gICAgICBlbHNlXG4gICAgICAgIGluZm8ubGlzdGVuZXIuaGFuZGxlRXZlbnQodGhpcyk7XG4gICAgICByZXR1cm4gdGhpcy5fc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uRmxhZztcbiAgICB9XG4gIH0oT2JqZWN0LCBuZXcgV2Vha01hcCkpO1xufVxuZXhwb3J0IGRlZmF1bHQgc2VsZi5FdmVudFRhcmdldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@ungap/event-target/esm/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js ***!
|
||
\***************************************************************************/
|
||
/*! exports provided: generateCodeFrame, BASE_TRANSITION, CAMELIZE, CAPITALIZE, CREATE_BLOCK, CREATE_COMMENT, CREATE_ELEMENT_BLOCK, CREATE_ELEMENT_VNODE, CREATE_SLOTS, CREATE_STATIC, CREATE_TEXT, CREATE_VNODE, FRAGMENT, GUARD_REACTIVE_PROPS, IS_MEMO_SAME, IS_REF, KEEP_ALIVE, MERGE_PROPS, NORMALIZE_CLASS, NORMALIZE_PROPS, NORMALIZE_STYLE, OPEN_BLOCK, POP_SCOPE_ID, PUSH_SCOPE_ID, RENDER_LIST, RENDER_SLOT, RESOLVE_COMPONENT, RESOLVE_DIRECTIVE, RESOLVE_DYNAMIC_COMPONENT, RESOLVE_FILTER, SET_BLOCK_TRACKING, SUSPENSE, TELEPORT, TO_DISPLAY_STRING, TO_HANDLERS, TO_HANDLER_KEY, UNREF, WITH_CTX, WITH_DIRECTIVES, WITH_MEMO, advancePositionWithClone, advancePositionWithMutation, assert, baseCompile, baseParse, buildDirectiveArgs, buildProps, buildSlots, checkCompatEnabled, createArrayExpression, createAssignmentExpression, createBlockStatement, createCacheExpression, createCallExpression, createCompilerError, createCompoundExpression, createConditionalExpression, createForLoopParams, createFunctionExpression, createIfStatement, createInterpolation, createObjectExpression, createObjectProperty, createReturnStatement, createRoot, createSequenceExpression, createSimpleExpression, createStructuralDirectiveTransform, createTemplateLiteral, createTransformContext, createVNodeCall, extractIdentifiers, findDir, findProp, generate, getBaseTransformPreset, getInnerRange, getMemoedVNodeCall, getVNodeBlockHelper, getVNodeHelper, hasDynamicKeyVBind, hasScopeRef, helperNameMap, injectProp, isBuiltInType, isCoreComponent, isFunctionType, isInDestructureAssignment, isMemberExpression, isMemberExpressionBrowser, isMemberExpressionNode, isReferencedIdentifier, isSimpleIdentifier, isSlotOutlet, isStaticArgOf, isStaticExp, isStaticProperty, isStaticPropertyKey, isTemplateNode, isText, isVSlot, locStub, makeBlock, noopDirectiveTransform, processExpression, processFor, processIf, processSlotOutlet, registerRuntimeHelpers, resolveComponentType, toValidAssetId, trackSlotScopes, trackVForSlotScopes, transform, transformBind, transformElement, transformExpression, transformModel, transformOn, traverseNode, walkBlockDeclarations, walkFunctionParams, walkIdentifiers, warnDeprecation */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BASE_TRANSITION\", function() { return BASE_TRANSITION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMELIZE\", function() { return CAMELIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAPITALIZE\", function() { return CAPITALIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_BLOCK\", function() { return CREATE_BLOCK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_COMMENT\", function() { return CREATE_COMMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_ELEMENT_BLOCK\", function() { return CREATE_ELEMENT_BLOCK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_ELEMENT_VNODE\", function() { return CREATE_ELEMENT_VNODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_SLOTS\", function() { return CREATE_SLOTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_STATIC\", function() { return CREATE_STATIC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_TEXT\", function() { return CREATE_TEXT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_VNODE\", function() { return CREATE_VNODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FRAGMENT\", function() { return FRAGMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GUARD_REACTIVE_PROPS\", function() { return GUARD_REACTIVE_PROPS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_MEMO_SAME\", function() { return IS_MEMO_SAME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_REF\", function() { return IS_REF; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KEEP_ALIVE\", function() { return KEEP_ALIVE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MERGE_PROPS\", function() { return MERGE_PROPS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NORMALIZE_CLASS\", function() { return NORMALIZE_CLASS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NORMALIZE_PROPS\", function() { return NORMALIZE_PROPS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NORMALIZE_STYLE\", function() { return NORMALIZE_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OPEN_BLOCK\", function() { return OPEN_BLOCK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"POP_SCOPE_ID\", function() { return POP_SCOPE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PUSH_SCOPE_ID\", function() { return PUSH_SCOPE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RENDER_LIST\", function() { return RENDER_LIST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RENDER_SLOT\", function() { return RENDER_SLOT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RESOLVE_COMPONENT\", function() { return RESOLVE_COMPONENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RESOLVE_DIRECTIVE\", function() { return RESOLVE_DIRECTIVE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RESOLVE_DYNAMIC_COMPONENT\", function() { return RESOLVE_DYNAMIC_COMPONENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RESOLVE_FILTER\", function() { return RESOLVE_FILTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_BLOCK_TRACKING\", function() { return SET_BLOCK_TRACKING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SUSPENSE\", function() { return SUSPENSE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TELEPORT\", function() { return TELEPORT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TO_DISPLAY_STRING\", function() { return TO_DISPLAY_STRING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TO_HANDLERS\", function() { return TO_HANDLERS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TO_HANDLER_KEY\", function() { return TO_HANDLER_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UNREF\", function() { return UNREF; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WITH_CTX\", function() { return WITH_CTX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WITH_DIRECTIVES\", function() { return WITH_DIRECTIVES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WITH_MEMO\", function() { return WITH_MEMO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"advancePositionWithClone\", function() { return advancePositionWithClone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"advancePositionWithMutation\", function() { return advancePositionWithMutation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assert\", function() { return assert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"baseCompile\", function() { return baseCompile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"baseParse\", function() { return baseParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildDirectiveArgs\", function() { return buildDirectiveArgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildProps\", function() { return buildProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildSlots\", function() { return buildSlots; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkCompatEnabled\", function() { return checkCompatEnabled; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createArrayExpression\", function() { return createArrayExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createAssignmentExpression\", function() { return createAssignmentExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createBlockStatement\", function() { return createBlockStatement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCacheExpression\", function() { return createCacheExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCallExpression\", function() { return createCallExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCompilerError\", function() { return createCompilerError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCompoundExpression\", function() { return createCompoundExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createConditionalExpression\", function() { return createConditionalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createForLoopParams\", function() { return createForLoopParams; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createFunctionExpression\", function() { return createFunctionExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createIfStatement\", function() { return createIfStatement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createInterpolation\", function() { return createInterpolation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createObjectExpression\", function() { return createObjectExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createObjectProperty\", function() { return createObjectProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createReturnStatement\", function() { return createReturnStatement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRoot\", function() { return createRoot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSequenceExpression\", function() { return createSequenceExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSimpleExpression\", function() { return createSimpleExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createStructuralDirectiveTransform\", function() { return createStructuralDirectiveTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createTemplateLiteral\", function() { return createTemplateLiteral; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createTransformContext\", function() { return createTransformContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVNodeCall\", function() { return createVNodeCall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractIdentifiers\", function() { return extractIdentifiers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDir\", function() { return findDir; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findProp\", function() { return findProp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return generate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBaseTransformPreset\", function() { return getBaseTransformPreset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInnerRange\", function() { return getInnerRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMemoedVNodeCall\", function() { return getMemoedVNodeCall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVNodeBlockHelper\", function() { return getVNodeBlockHelper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVNodeHelper\", function() { return getVNodeHelper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasDynamicKeyVBind\", function() { return hasDynamicKeyVBind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasScopeRef\", function() { return hasScopeRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"helperNameMap\", function() { return helperNameMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"injectProp\", function() { return injectProp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBuiltInType\", function() { return isBuiltInType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCoreComponent\", function() { return isCoreComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunctionType\", function() { return isFunctionType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInDestructureAssignment\", function() { return isInDestructureAssignment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMemberExpression\", function() { return isMemberExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMemberExpressionBrowser\", function() { return isMemberExpressionBrowser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMemberExpressionNode\", function() { return isMemberExpressionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isReferencedIdentifier\", function() { return isReferencedIdentifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSimpleIdentifier\", function() { return isSimpleIdentifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSlotOutlet\", function() { return isSlotOutlet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isStaticArgOf\", function() { return isStaticArgOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isStaticExp\", function() { return isStaticExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isStaticProperty\", function() { return isStaticProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isStaticPropertyKey\", function() { return isStaticPropertyKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTemplateNode\", function() { return isTemplateNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isText\", function() { return isText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVSlot\", function() { return isVSlot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"locStub\", function() { return locStub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeBlock\", function() { return makeBlock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"noopDirectiveTransform\", function() { return noopDirectiveTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"processExpression\", function() { return processExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"processFor\", function() { return processFor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"processIf\", function() { return processIf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"processSlotOutlet\", function() { return processSlotOutlet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerRuntimeHelpers\", function() { return registerRuntimeHelpers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveComponentType\", function() { return resolveComponentType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toValidAssetId\", function() { return toValidAssetId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trackSlotScopes\", function() { return trackSlotScopes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trackVForSlotScopes\", function() { return trackVForSlotScopes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformBind\", function() { return transformBind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformElement\", function() { return transformElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformExpression\", function() { return transformExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformModel\", function() { return transformModel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformOn\", function() { return transformOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseNode\", function() { return traverseNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"walkBlockDeclarations\", function() { return walkBlockDeclarations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"walkFunctionParams\", function() { return walkFunctionParams; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"walkIdentifiers\", function() { return walkIdentifiers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"warnDeprecation\", function() { return warnDeprecation; });\n/* harmony import */ var _vue_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vue/shared */ \"./node_modules/@vue/shared/dist/shared.esm-bundler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateCodeFrame\", function() { return _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"generateCodeFrame\"]; });\n\n\n\n\nfunction defaultOnError(error) {\r\n throw error;\r\n}\r\nfunction defaultOnWarn(msg) {\r\n ( true) && console.warn(`[Vue warn] ${msg.message}`);\r\n}\r\nfunction createCompilerError(code, loc, messages, additionalMessage) {\r\n const msg = true\r\n ? (messages || errorMessages)[code] + (additionalMessage || ``)\r\n : undefined;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n error.loc = loc;\r\n return error;\r\n}\r\nconst errorMessages = {\r\n // parse errors\r\n [0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */]: 'Illegal comment.',\r\n [1 /* CDATA_IN_HTML_CONTENT */]: 'CDATA section is allowed only in XML context.',\r\n [2 /* DUPLICATE_ATTRIBUTE */]: 'Duplicate attribute.',\r\n [3 /* END_TAG_WITH_ATTRIBUTES */]: 'End tag cannot have attributes.',\r\n [4 /* END_TAG_WITH_TRAILING_SOLIDUS */]: \"Illegal '/' in tags.\",\r\n [5 /* EOF_BEFORE_TAG_NAME */]: 'Unexpected EOF in tag.',\r\n [6 /* EOF_IN_CDATA */]: 'Unexpected EOF in CDATA section.',\r\n [7 /* EOF_IN_COMMENT */]: 'Unexpected EOF in comment.',\r\n [8 /* EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT */]: 'Unexpected EOF in script.',\r\n [9 /* EOF_IN_TAG */]: 'Unexpected EOF in tag.',\r\n [10 /* INCORRECTLY_CLOSED_COMMENT */]: 'Incorrectly closed comment.',\r\n [11 /* INCORRECTLY_OPENED_COMMENT */]: 'Incorrectly opened comment.',\r\n [12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */]: \"Illegal tag name. Use '<' to print '<'.\",\r\n [13 /* MISSING_ATTRIBUTE_VALUE */]: 'Attribute value was expected.',\r\n [14 /* MISSING_END_TAG_NAME */]: 'End tag name was expected.',\r\n [15 /* MISSING_WHITESPACE_BETWEEN_ATTRIBUTES */]: 'Whitespace was expected.',\r\n [16 /* NESTED_COMMENT */]: \"Unexpected '<!--' in comment.\",\r\n [17 /* UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME */]: 'Attribute name cannot contain U+0022 (\"), U+0027 (\\'), and U+003C (<).',\r\n [18 /* UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE */]: 'Unquoted attribute value cannot contain U+0022 (\"), U+0027 (\\'), U+003C (<), U+003D (=), and U+0060 (`).',\r\n [19 /* UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME */]: \"Attribute name cannot start with '='.\",\r\n [21 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */]: \"'<?' is allowed only in XML context.\",\r\n [20 /* UNEXPECTED_NULL_CHARACTER */]: `Unexpected null character.`,\r\n [22 /* UNEXPECTED_SOLIDUS_IN_TAG */]: \"Illegal '/' in tags.\",\r\n // Vue-specific parse errors\r\n [23 /* X_INVALID_END_TAG */]: 'Invalid end tag.',\r\n [24 /* X_MISSING_END_TAG */]: 'Element is missing end tag.',\r\n [25 /* X_MISSING_INTERPOLATION_END */]: 'Interpolation end sign was not found.',\r\n [27 /* X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END */]: 'End bracket for dynamic directive argument was not found. ' +\r\n 'Note that dynamic directive argument cannot contain spaces.',\r\n [26 /* X_MISSING_DIRECTIVE_NAME */]: 'Legal directive name was expected.',\r\n // transform errors\r\n [28 /* X_V_IF_NO_EXPRESSION */]: `v-if/v-else-if is missing expression.`,\r\n [29 /* X_V_IF_SAME_KEY */]: `v-if/else branches must use unique keys.`,\r\n [30 /* X_V_ELSE_NO_ADJACENT_IF */]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,\r\n [31 /* X_V_FOR_NO_EXPRESSION */]: `v-for is missing expression.`,\r\n [32 /* X_V_FOR_MALFORMED_EXPRESSION */]: `v-for has invalid expression.`,\r\n [33 /* X_V_FOR_TEMPLATE_KEY_PLACEMENT */]: `<template v-for> key should be placed on the <template> tag.`,\r\n [34 /* X_V_BIND_NO_EXPRESSION */]: `v-bind is missing expression.`,\r\n [35 /* X_V_ON_NO_EXPRESSION */]: `v-on is missing expression.`,\r\n [36 /* X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET */]: `Unexpected custom directive on <slot> outlet.`,\r\n [37 /* X_V_SLOT_MIXED_SLOT_USAGE */]: `Mixed v-slot usage on both the component and nested <template>.` +\r\n `When there are multiple named slots, all slots should use <template> ` +\r\n `syntax to avoid scope ambiguity.`,\r\n [38 /* X_V_SLOT_DUPLICATE_SLOT_NAMES */]: `Duplicate slot names found. `,\r\n [39 /* X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN */]: `Extraneous children found when component already has explicitly named ` +\r\n `default slot. These children will be ignored.`,\r\n [40 /* X_V_SLOT_MISPLACED */]: `v-slot can only be used on components or <template> tags.`,\r\n [41 /* X_V_MODEL_NO_EXPRESSION */]: `v-model is missing expression.`,\r\n [42 /* X_V_MODEL_MALFORMED_EXPRESSION */]: `v-model value must be a valid JavaScript member expression.`,\r\n [43 /* X_V_MODEL_ON_SCOPE_VARIABLE */]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,\r\n [44 /* X_INVALID_EXPRESSION */]: `Error parsing JavaScript expression: `,\r\n [45 /* X_KEEP_ALIVE_INVALID_CHILDREN */]: `<KeepAlive> expects exactly one child component.`,\r\n // generic errors\r\n [46 /* X_PREFIX_ID_NOT_SUPPORTED */]: `\"prefixIdentifiers\" option is not supported in this build of compiler.`,\r\n [47 /* X_MODULE_MODE_NOT_SUPPORTED */]: `ES module mode is not supported in this build of compiler.`,\r\n [48 /* X_CACHE_HANDLER_NOT_SUPPORTED */]: `\"cacheHandlers\" option is only supported when the \"prefixIdentifiers\" option is enabled.`,\r\n [49 /* X_SCOPE_ID_NOT_SUPPORTED */]: `\"scopeId\" option is only supported in module mode.`,\r\n // just to fulfill types\r\n [50 /* __EXTEND_POINT__ */]: ``\r\n};\n\nconst FRAGMENT = Symbol(( true) ? `Fragment` : undefined);\r\nconst TELEPORT = Symbol(( true) ? `Teleport` : undefined);\r\nconst SUSPENSE = Symbol(( true) ? `Suspense` : undefined);\r\nconst KEEP_ALIVE = Symbol(( true) ? `KeepAlive` : undefined);\r\nconst BASE_TRANSITION = Symbol(( true) ? `BaseTransition` : undefined);\r\nconst OPEN_BLOCK = Symbol(( true) ? `openBlock` : undefined);\r\nconst CREATE_BLOCK = Symbol(( true) ? `createBlock` : undefined);\r\nconst CREATE_ELEMENT_BLOCK = Symbol(( true) ? `createElementBlock` : undefined);\r\nconst CREATE_VNODE = Symbol(( true) ? `createVNode` : undefined);\r\nconst CREATE_ELEMENT_VNODE = Symbol(( true) ? `createElementVNode` : undefined);\r\nconst CREATE_COMMENT = Symbol(( true) ? `createCommentVNode` : undefined);\r\nconst CREATE_TEXT = Symbol(( true) ? `createTextVNode` : undefined);\r\nconst CREATE_STATIC = Symbol(( true) ? `createStaticVNode` : undefined);\r\nconst RESOLVE_COMPONENT = Symbol(( true) ? `resolveComponent` : undefined);\r\nconst RESOLVE_DYNAMIC_COMPONENT = Symbol(( true) ? `resolveDynamicComponent` : undefined);\r\nconst RESOLVE_DIRECTIVE = Symbol(( true) ? `resolveDirective` : undefined);\r\nconst RESOLVE_FILTER = Symbol(( true) ? `resolveFilter` : undefined);\r\nconst WITH_DIRECTIVES = Symbol(( true) ? `withDirectives` : undefined);\r\nconst RENDER_LIST = Symbol(( true) ? `renderList` : undefined);\r\nconst RENDER_SLOT = Symbol(( true) ? `renderSlot` : undefined);\r\nconst CREATE_SLOTS = Symbol(( true) ? `createSlots` : undefined);\r\nconst TO_DISPLAY_STRING = Symbol(( true) ? `toDisplayString` : undefined);\r\nconst MERGE_PROPS = Symbol(( true) ? `mergeProps` : undefined);\r\nconst NORMALIZE_CLASS = Symbol(( true) ? `normalizeClass` : undefined);\r\nconst NORMALIZE_STYLE = Symbol(( true) ? `normalizeStyle` : undefined);\r\nconst NORMALIZE_PROPS = Symbol(( true) ? `normalizeProps` : undefined);\r\nconst GUARD_REACTIVE_PROPS = Symbol(( true) ? `guardReactiveProps` : undefined);\r\nconst TO_HANDLERS = Symbol(( true) ? `toHandlers` : undefined);\r\nconst CAMELIZE = Symbol(( true) ? `camelize` : undefined);\r\nconst CAPITALIZE = Symbol(( true) ? `capitalize` : undefined);\r\nconst TO_HANDLER_KEY = Symbol(( true) ? `toHandlerKey` : undefined);\r\nconst SET_BLOCK_TRACKING = Symbol(( true) ? `setBlockTracking` : undefined);\r\nconst PUSH_SCOPE_ID = Symbol(( true) ? `pushScopeId` : undefined);\r\nconst POP_SCOPE_ID = Symbol(( true) ? `popScopeId` : undefined);\r\nconst WITH_CTX = Symbol(( true) ? `withCtx` : undefined);\r\nconst UNREF = Symbol(( true) ? `unref` : undefined);\r\nconst IS_REF = Symbol(( true) ? `isRef` : undefined);\r\nconst WITH_MEMO = Symbol(( true) ? `withMemo` : undefined);\r\nconst IS_MEMO_SAME = Symbol(( true) ? `isMemoSame` : undefined);\r\n// Name mapping for runtime helpers that need to be imported from 'vue' in\r\n// generated code. Make sure these are correctly exported in the runtime!\r\n// Using `any` here because TS doesn't allow symbols as index type.\r\nconst helperNameMap = {\r\n [FRAGMENT]: `Fragment`,\r\n [TELEPORT]: `Teleport`,\r\n [SUSPENSE]: `Suspense`,\r\n [KEEP_ALIVE]: `KeepAlive`,\r\n [BASE_TRANSITION]: `BaseTransition`,\r\n [OPEN_BLOCK]: `openBlock`,\r\n [CREATE_BLOCK]: `createBlock`,\r\n [CREATE_ELEMENT_BLOCK]: `createElementBlock`,\r\n [CREATE_VNODE]: `createVNode`,\r\n [CREATE_ELEMENT_VNODE]: `createElementVNode`,\r\n [CREATE_COMMENT]: `createCommentVNode`,\r\n [CREATE_TEXT]: `createTextVNode`,\r\n [CREATE_STATIC]: `createStaticVNode`,\r\n [RESOLVE_COMPONENT]: `resolveComponent`,\r\n [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,\r\n [RESOLVE_DIRECTIVE]: `resolveDirective`,\r\n [RESOLVE_FILTER]: `resolveFilter`,\r\n [WITH_DIRECTIVES]: `withDirectives`,\r\n [RENDER_LIST]: `renderList`,\r\n [RENDER_SLOT]: `renderSlot`,\r\n [CREATE_SLOTS]: `createSlots`,\r\n [TO_DISPLAY_STRING]: `toDisplayString`,\r\n [MERGE_PROPS]: `mergeProps`,\r\n [NORMALIZE_CLASS]: `normalizeClass`,\r\n [NORMALIZE_STYLE]: `normalizeStyle`,\r\n [NORMALIZE_PROPS]: `normalizeProps`,\r\n [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,\r\n [TO_HANDLERS]: `toHandlers`,\r\n [CAMELIZE]: `camelize`,\r\n [CAPITALIZE]: `capitalize`,\r\n [TO_HANDLER_KEY]: `toHandlerKey`,\r\n [SET_BLOCK_TRACKING]: `setBlockTracking`,\r\n [PUSH_SCOPE_ID]: `pushScopeId`,\r\n [POP_SCOPE_ID]: `popScopeId`,\r\n [WITH_CTX]: `withCtx`,\r\n [UNREF]: `unref`,\r\n [IS_REF]: `isRef`,\r\n [WITH_MEMO]: `withMemo`,\r\n [IS_MEMO_SAME]: `isMemoSame`\r\n};\r\nfunction registerRuntimeHelpers(helpers) {\r\n Object.getOwnPropertySymbols(helpers).forEach(s => {\r\n helperNameMap[s] = helpers[s];\r\n });\r\n}\n\n// AST Utilities ---------------------------------------------------------------\r\n// Some expressions, e.g. sequence and conditional expressions, are never\r\n// associated with template nodes, so their source locations are just a stub.\r\n// Container types like CompoundExpression also don't need a real location.\r\nconst locStub = {\r\n source: '',\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createRoot(children, loc = locStub) {\r\n return {\r\n type: 0 /* ROOT */,\r\n children,\r\n helpers: [],\r\n components: [],\r\n directives: [],\r\n hoists: [],\r\n imports: [],\r\n cached: 0,\r\n temps: 0,\r\n codegenNode: undefined,\r\n loc\r\n };\r\n}\r\nfunction createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {\r\n if (context) {\r\n if (isBlock) {\r\n context.helper(OPEN_BLOCK);\r\n context.helper(getVNodeBlockHelper(context.inSSR, isComponent));\r\n }\r\n else {\r\n context.helper(getVNodeHelper(context.inSSR, isComponent));\r\n }\r\n if (directives) {\r\n context.helper(WITH_DIRECTIVES);\r\n }\r\n }\r\n return {\r\n type: 13 /* VNODE_CALL */,\r\n tag,\r\n props,\r\n children,\r\n patchFlag,\r\n dynamicProps,\r\n directives,\r\n isBlock,\r\n disableTracking,\r\n isComponent,\r\n loc\r\n };\r\n}\r\nfunction createArrayExpression(elements, loc = locStub) {\r\n return {\r\n type: 17 /* JS_ARRAY_EXPRESSION */,\r\n loc,\r\n elements\r\n };\r\n}\r\nfunction createObjectExpression(properties, loc = locStub) {\r\n return {\r\n type: 15 /* JS_OBJECT_EXPRESSION */,\r\n loc,\r\n properties\r\n };\r\n}\r\nfunction createObjectProperty(key, value) {\r\n return {\r\n type: 16 /* JS_PROPERTY */,\r\n loc: locStub,\r\n key: Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(key) ? createSimpleExpression(key, true) : key,\r\n value\r\n };\r\n}\r\nfunction createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0 /* NOT_CONSTANT */) {\r\n return {\r\n type: 4 /* SIMPLE_EXPRESSION */,\r\n loc,\r\n content,\r\n isStatic,\r\n constType: isStatic ? 3 /* CAN_STRINGIFY */ : constType\r\n };\r\n}\r\nfunction createInterpolation(content, loc) {\r\n return {\r\n type: 5 /* INTERPOLATION */,\r\n loc,\r\n content: Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(content)\r\n ? createSimpleExpression(content, false, loc)\r\n : content\r\n };\r\n}\r\nfunction createCompoundExpression(children, loc = locStub) {\r\n return {\r\n type: 8 /* COMPOUND_EXPRESSION */,\r\n loc,\r\n children\r\n };\r\n}\r\nfunction createCallExpression(callee, args = [], loc = locStub) {\r\n return {\r\n type: 14 /* JS_CALL_EXPRESSION */,\r\n loc,\r\n callee,\r\n arguments: args\r\n };\r\n}\r\nfunction createFunctionExpression(params, returns = undefined, newline = false, isSlot = false, loc = locStub) {\r\n return {\r\n type: 18 /* JS_FUNCTION_EXPRESSION */,\r\n params,\r\n returns,\r\n newline,\r\n isSlot,\r\n loc\r\n };\r\n}\r\nfunction createConditionalExpression(test, consequent, alternate, newline = true) {\r\n return {\r\n type: 19 /* JS_CONDITIONAL_EXPRESSION */,\r\n test,\r\n consequent,\r\n alternate,\r\n newline,\r\n loc: locStub\r\n };\r\n}\r\nfunction createCacheExpression(index, value, isVNode = false) {\r\n return {\r\n type: 20 /* JS_CACHE_EXPRESSION */,\r\n index,\r\n value,\r\n isVNode,\r\n loc: locStub\r\n };\r\n}\r\nfunction createBlockStatement(body) {\r\n return {\r\n type: 21 /* JS_BLOCK_STATEMENT */,\r\n body,\r\n loc: locStub\r\n };\r\n}\r\nfunction createTemplateLiteral(elements) {\r\n return {\r\n type: 22 /* JS_TEMPLATE_LITERAL */,\r\n elements,\r\n loc: locStub\r\n };\r\n}\r\nfunction createIfStatement(test, consequent, alternate) {\r\n return {\r\n type: 23 /* JS_IF_STATEMENT */,\r\n test,\r\n consequent,\r\n alternate,\r\n loc: locStub\r\n };\r\n}\r\nfunction createAssignmentExpression(left, right) {\r\n return {\r\n type: 24 /* JS_ASSIGNMENT_EXPRESSION */,\r\n left,\r\n right,\r\n loc: locStub\r\n };\r\n}\r\nfunction createSequenceExpression(expressions) {\r\n return {\r\n type: 25 /* JS_SEQUENCE_EXPRESSION */,\r\n expressions,\r\n loc: locStub\r\n };\r\n}\r\nfunction createReturnStatement(returns) {\r\n return {\r\n type: 26 /* JS_RETURN_STATEMENT */,\r\n returns,\r\n loc: locStub\r\n };\r\n}\n\nconst isStaticExp = (p) => p.type === 4 /* SIMPLE_EXPRESSION */ && p.isStatic;\r\nconst isBuiltInType = (tag, expected) => tag === expected || tag === Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"hyphenate\"])(expected);\r\nfunction isCoreComponent(tag) {\r\n if (isBuiltInType(tag, 'Teleport')) {\r\n return TELEPORT;\r\n }\r\n else if (isBuiltInType(tag, 'Suspense')) {\r\n return SUSPENSE;\r\n }\r\n else if (isBuiltInType(tag, 'KeepAlive')) {\r\n return KEEP_ALIVE;\r\n }\r\n else if (isBuiltInType(tag, 'BaseTransition')) {\r\n return BASE_TRANSITION;\r\n }\r\n}\r\nconst nonIdentifierRE = /^\\d|[^\\$\\w]/;\r\nconst isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);\r\nconst validFirstIdentCharRE = /[A-Za-z_$\\xA0-\\uFFFF]/;\r\nconst validIdentCharRE = /[\\.\\?\\w$\\xA0-\\uFFFF]/;\r\nconst whitespaceRE = /\\s+[.[]\\s*|\\s*[.[]\\s+/g;\r\n/**\r\n * Simple lexer to check if an expression is a member expression. This is\r\n * lax and only checks validity at the root level (i.e. does not validate exps\r\n * inside square brackets), but it's ok since these are only used on template\r\n * expressions and false positives are invalid expressions in the first place.\r\n */\r\nconst isMemberExpressionBrowser = (path) => {\r\n // remove whitespaces around . or [ first\r\n path = path.trim().replace(whitespaceRE, s => s.trim());\r\n let state = 0 /* inMemberExp */;\r\n let stateStack = [];\r\n let currentOpenBracketCount = 0;\r\n let currentOpenParensCount = 0;\r\n let currentStringType = null;\r\n for (let i = 0; i < path.length; i++) {\r\n const char = path.charAt(i);\r\n switch (state) {\r\n case 0 /* inMemberExp */:\r\n if (char === '[') {\r\n stateStack.push(state);\r\n state = 1 /* inBrackets */;\r\n currentOpenBracketCount++;\r\n }\r\n else if (char === '(') {\r\n stateStack.push(state);\r\n state = 2 /* inParens */;\r\n currentOpenParensCount++;\r\n }\r\n else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {\r\n return false;\r\n }\r\n break;\r\n case 1 /* inBrackets */:\r\n if (char === `'` || char === `\"` || char === '`') {\r\n stateStack.push(state);\r\n state = 3 /* inString */;\r\n currentStringType = char;\r\n }\r\n else if (char === `[`) {\r\n currentOpenBracketCount++;\r\n }\r\n else if (char === `]`) {\r\n if (!--currentOpenBracketCount) {\r\n state = stateStack.pop();\r\n }\r\n }\r\n break;\r\n case 2 /* inParens */:\r\n if (char === `'` || char === `\"` || char === '`') {\r\n stateStack.push(state);\r\n state = 3 /* inString */;\r\n currentStringType = char;\r\n }\r\n else if (char === `(`) {\r\n currentOpenParensCount++;\r\n }\r\n else if (char === `)`) {\r\n // if the exp ends as a call then it should not be considered valid\r\n if (i === path.length - 1) {\r\n return false;\r\n }\r\n if (!--currentOpenParensCount) {\r\n state = stateStack.pop();\r\n }\r\n }\r\n break;\r\n case 3 /* inString */:\r\n if (char === currentStringType) {\r\n state = stateStack.pop();\r\n currentStringType = null;\r\n }\r\n break;\r\n }\r\n }\r\n return !currentOpenBracketCount && !currentOpenParensCount;\r\n};\r\nconst isMemberExpressionNode = _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"NOOP\"]\r\n ;\r\nconst isMemberExpression = isMemberExpressionBrowser\r\n ;\r\nfunction getInnerRange(loc, offset, length) {\r\n const source = loc.source.slice(offset, offset + length);\r\n const newLoc = {\r\n source,\r\n start: advancePositionWithClone(loc.start, loc.source, offset),\r\n end: loc.end\r\n };\r\n if (length != null) {\r\n newLoc.end = advancePositionWithClone(loc.start, loc.source, offset + length);\r\n }\r\n return newLoc;\r\n}\r\nfunction advancePositionWithClone(pos, source, numberOfCharacters = source.length) {\r\n return advancePositionWithMutation(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, pos), source, numberOfCharacters);\r\n}\r\n// advance by mutation without cloning (for performance reasons), since this\r\n// gets called a lot in the parser\r\nfunction advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {\r\n let linesCount = 0;\r\n let lastNewLinePos = -1;\r\n for (let i = 0; i < numberOfCharacters; i++) {\r\n if (source.charCodeAt(i) === 10 /* newline char code */) {\r\n linesCount++;\r\n lastNewLinePos = i;\r\n }\r\n }\r\n pos.offset += numberOfCharacters;\r\n pos.line += linesCount;\r\n pos.column =\r\n lastNewLinePos === -1\r\n ? pos.column + numberOfCharacters\r\n : numberOfCharacters - lastNewLinePos;\r\n return pos;\r\n}\r\nfunction assert(condition, msg) {\r\n /* istanbul ignore if */\r\n if (!condition) {\r\n throw new Error(msg || `unexpected compiler condition`);\r\n }\r\n}\r\nfunction findDir(node, name, allowEmpty = false) {\r\n for (let i = 0; i < node.props.length; i++) {\r\n const p = node.props[i];\r\n if (p.type === 7 /* DIRECTIVE */ &&\r\n (allowEmpty || p.exp) &&\r\n (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(name) ? p.name === name : name.test(p.name))) {\r\n return p;\r\n }\r\n }\r\n}\r\nfunction findProp(node, name, dynamicOnly = false, allowEmpty = false) {\r\n for (let i = 0; i < node.props.length; i++) {\r\n const p = node.props[i];\r\n if (p.type === 6 /* ATTRIBUTE */) {\r\n if (dynamicOnly)\r\n continue;\r\n if (p.name === name && (p.value || allowEmpty)) {\r\n return p;\r\n }\r\n }\r\n else if (p.name === 'bind' &&\r\n (p.exp || allowEmpty) &&\r\n isStaticArgOf(p.arg, name)) {\r\n return p;\r\n }\r\n }\r\n}\r\nfunction isStaticArgOf(arg, name) {\r\n return !!(arg && isStaticExp(arg) && arg.content === name);\r\n}\r\nfunction hasDynamicKeyVBind(node) {\r\n return node.props.some(p => p.type === 7 /* DIRECTIVE */ &&\r\n p.name === 'bind' &&\r\n (!p.arg || // v-bind=\"obj\"\r\n p.arg.type !== 4 /* SIMPLE_EXPRESSION */ || // v-bind:[_ctx.foo]\r\n !p.arg.isStatic) // v-bind:[foo]\r\n );\r\n}\r\nfunction isText(node) {\r\n return node.type === 5 /* INTERPOLATION */ || node.type === 2 /* TEXT */;\r\n}\r\nfunction isVSlot(p) {\r\n return p.type === 7 /* DIRECTIVE */ && p.name === 'slot';\r\n}\r\nfunction isTemplateNode(node) {\r\n return (node.type === 1 /* ELEMENT */ && node.tagType === 3 /* TEMPLATE */);\r\n}\r\nfunction isSlotOutlet(node) {\r\n return node.type === 1 /* ELEMENT */ && node.tagType === 2 /* SLOT */;\r\n}\r\nfunction getVNodeHelper(ssr, isComponent) {\r\n return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;\r\n}\r\nfunction getVNodeBlockHelper(ssr, isComponent) {\r\n return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;\r\n}\r\nconst propsHelperSet = new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);\r\nfunction getUnnormalizedProps(props, callPath = []) {\r\n if (props &&\r\n !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(props) &&\r\n props.type === 14 /* JS_CALL_EXPRESSION */) {\r\n const callee = props.callee;\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(callee) && propsHelperSet.has(callee)) {\r\n return getUnnormalizedProps(props.arguments[0], callPath.concat(props));\r\n }\r\n }\r\n return [props, callPath];\r\n}\r\nfunction injectProp(node, prop, context) {\r\n let propsWithInjection;\r\n /**\r\n * 1. mergeProps(...)\r\n * 2. toHandlers(...)\r\n * 3. normalizeProps(...)\r\n * 4. normalizeProps(guardReactiveProps(...))\r\n *\r\n * we need to get the real props before normalization\r\n */\r\n let props = node.type === 13 /* VNODE_CALL */ ? node.props : node.arguments[2];\r\n let callPath = [];\r\n let parentCall;\r\n if (props &&\r\n !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(props) &&\r\n props.type === 14 /* JS_CALL_EXPRESSION */) {\r\n const ret = getUnnormalizedProps(props);\r\n props = ret[0];\r\n callPath = ret[1];\r\n parentCall = callPath[callPath.length - 1];\r\n }\r\n if (props == null || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(props)) {\r\n propsWithInjection = createObjectExpression([prop]);\r\n }\r\n else if (props.type === 14 /* JS_CALL_EXPRESSION */) {\r\n // merged props... add ours\r\n // only inject key to object literal if it's the first argument so that\r\n // if doesn't override user provided keys\r\n const first = props.arguments[0];\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(first) && first.type === 15 /* JS_OBJECT_EXPRESSION */) {\r\n first.properties.unshift(prop);\r\n }\r\n else {\r\n if (props.callee === TO_HANDLERS) {\r\n // #2366\r\n propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [\r\n createObjectExpression([prop]),\r\n props\r\n ]);\r\n }\r\n else {\r\n props.arguments.unshift(createObjectExpression([prop]));\r\n }\r\n }\r\n !propsWithInjection && (propsWithInjection = props);\r\n }\r\n else if (props.type === 15 /* JS_OBJECT_EXPRESSION */) {\r\n let alreadyExists = false;\r\n // check existing key to avoid overriding user provided keys\r\n if (prop.key.type === 4 /* SIMPLE_EXPRESSION */) {\r\n const propKeyName = prop.key.content;\r\n alreadyExists = props.properties.some(p => p.key.type === 4 /* SIMPLE_EXPRESSION */ &&\r\n p.key.content === propKeyName);\r\n }\r\n if (!alreadyExists) {\r\n props.properties.unshift(prop);\r\n }\r\n propsWithInjection = props;\r\n }\r\n else {\r\n // single v-bind with expression, return a merged replacement\r\n propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [\r\n createObjectExpression([prop]),\r\n props\r\n ]);\r\n // in the case of nested helper call, e.g. `normalizeProps(guardReactiveProps(props))`,\r\n // it will be rewritten as `normalizeProps(mergeProps({ key: 0 }, props))`,\r\n // the `guardReactiveProps` will no longer be needed\r\n if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {\r\n parentCall = callPath[callPath.length - 2];\r\n }\r\n }\r\n if (node.type === 13 /* VNODE_CALL */) {\r\n if (parentCall) {\r\n parentCall.arguments[0] = propsWithInjection;\r\n }\r\n else {\r\n node.props = propsWithInjection;\r\n }\r\n }\r\n else {\r\n if (parentCall) {\r\n parentCall.arguments[0] = propsWithInjection;\r\n }\r\n else {\r\n node.arguments[2] = propsWithInjection;\r\n }\r\n }\r\n}\r\nfunction toValidAssetId(name, type) {\r\n // see issue#4422, we need adding identifier on validAssetId if variable `name` has specific character\r\n return `_${type}_${name.replace(/[^\\w]/g, (searchValue, replaceValue) => {\r\n return searchValue === '-' ? '_' : name.charCodeAt(replaceValue).toString();\r\n })}`;\r\n}\r\n// Check if a node contains expressions that reference current context scope ids\r\nfunction hasScopeRef(node, ids) {\r\n if (!node || Object.keys(ids).length === 0) {\r\n return false;\r\n }\r\n switch (node.type) {\r\n case 1 /* ELEMENT */:\r\n for (let i = 0; i < node.props.length; i++) {\r\n const p = node.props[i];\r\n if (p.type === 7 /* DIRECTIVE */ &&\r\n (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) {\r\n return true;\r\n }\r\n }\r\n return node.children.some(c => hasScopeRef(c, ids));\r\n case 11 /* FOR */:\r\n if (hasScopeRef(node.source, ids)) {\r\n return true;\r\n }\r\n return node.children.some(c => hasScopeRef(c, ids));\r\n case 9 /* IF */:\r\n return node.branches.some(b => hasScopeRef(b, ids));\r\n case 10 /* IF_BRANCH */:\r\n if (hasScopeRef(node.condition, ids)) {\r\n return true;\r\n }\r\n return node.children.some(c => hasScopeRef(c, ids));\r\n case 4 /* SIMPLE_EXPRESSION */:\r\n return (!node.isStatic &&\r\n isSimpleIdentifier(node.content) &&\r\n !!ids[node.content]);\r\n case 8 /* COMPOUND_EXPRESSION */:\r\n return node.children.some(c => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(c) && hasScopeRef(c, ids));\r\n case 5 /* INTERPOLATION */:\r\n case 12 /* TEXT_CALL */:\r\n return hasScopeRef(node.content, ids);\r\n case 2 /* TEXT */:\r\n case 3 /* COMMENT */:\r\n return false;\r\n default:\r\n if ((true)) ;\r\n return false;\r\n }\r\n}\r\nfunction getMemoedVNodeCall(node) {\r\n if (node.type === 14 /* JS_CALL_EXPRESSION */ && node.callee === WITH_MEMO) {\r\n return node.arguments[1].returns;\r\n }\r\n else {\r\n return node;\r\n }\r\n}\r\nfunction makeBlock(node, { helper, removeHelper, inSSR }) {\r\n if (!node.isBlock) {\r\n node.isBlock = true;\r\n removeHelper(getVNodeHelper(inSSR, node.isComponent));\r\n helper(OPEN_BLOCK);\r\n helper(getVNodeBlockHelper(inSSR, node.isComponent));\r\n }\r\n}\n\nconst deprecationData = {\r\n [\"COMPILER_IS_ON_ELEMENT\" /* COMPILER_IS_ON_ELEMENT */]: {\r\n message: `Platform-native elements with \"is\" prop will no longer be ` +\r\n `treated as components in Vue 3 unless the \"is\" value is explicitly ` +\r\n `prefixed with \"vue:\".`,\r\n link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`\r\n },\r\n [\"COMPILER_V_BIND_SYNC\" /* COMPILER_V_BIND_SYNC */]: {\r\n message: key => `.sync modifier for v-bind has been removed. Use v-model with ` +\r\n `argument instead. \\`v-bind:${key}.sync\\` should be changed to ` +\r\n `\\`v-model:${key}\\`.`,\r\n link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`\r\n },\r\n [\"COMPILER_V_BIND_PROP\" /* COMPILER_V_BIND_PROP */]: {\r\n message: `.prop modifier for v-bind has been removed and no longer necessary. ` +\r\n `Vue 3 will automatically set a binding as DOM property when appropriate.`\r\n },\r\n [\"COMPILER_V_BIND_OBJECT_ORDER\" /* COMPILER_V_BIND_OBJECT_ORDER */]: {\r\n message: `v-bind=\"obj\" usage is now order sensitive and behaves like JavaScript ` +\r\n `object spread: it will now overwrite an existing non-mergeable attribute ` +\r\n `that appears before v-bind in the case of conflict. ` +\r\n `To retain 2.x behavior, move v-bind to make it the first attribute. ` +\r\n `You can also suppress this warning if the usage is intended.`,\r\n link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`\r\n },\r\n [\"COMPILER_V_ON_NATIVE\" /* COMPILER_V_ON_NATIVE */]: {\r\n message: `.native modifier for v-on has been removed as is no longer necessary.`,\r\n link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`\r\n },\r\n [\"COMPILER_V_IF_V_FOR_PRECEDENCE\" /* COMPILER_V_IF_V_FOR_PRECEDENCE */]: {\r\n message: `v-if / v-for precedence when used on the same element has changed ` +\r\n `in Vue 3: v-if now takes higher precedence and will no longer have ` +\r\n `access to v-for scope variables. It is best to avoid the ambiguity ` +\r\n `with <template> tags or use a computed property that filters v-for ` +\r\n `data source.`,\r\n link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`\r\n },\r\n [\"COMPILER_NATIVE_TEMPLATE\" /* COMPILER_NATIVE_TEMPLATE */]: {\r\n message: `<template> with no special directives will render as a native template ` +\r\n `element instead of its inner content in Vue 3.`\r\n },\r\n [\"COMPILER_INLINE_TEMPLATE\" /* COMPILER_INLINE_TEMPLATE */]: {\r\n message: `\"inline-template\" has been removed in Vue 3.`,\r\n link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`\r\n },\r\n [\"COMPILER_FILTER\" /* COMPILER_FILTERS */]: {\r\n message: `filters have been removed in Vue 3. ` +\r\n `The \"|\" symbol will be treated as native JavaScript bitwise OR operator. ` +\r\n `Use method calls or computed properties instead.`,\r\n link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`\r\n }\r\n};\r\nfunction getCompatValue(key, context) {\r\n const config = context.options\r\n ? context.options.compatConfig\r\n : context.compatConfig;\r\n const value = config && config[key];\r\n if (key === 'MODE') {\r\n return value || 3; // compiler defaults to v3 behavior\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction isCompatEnabled(key, context) {\r\n const mode = getCompatValue('MODE', context);\r\n const value = getCompatValue(key, context);\r\n // in v3 mode, only enable if explicitly set to true\r\n // otherwise enable for any non-false value\r\n return mode === 3 ? value === true : value !== false;\r\n}\r\nfunction checkCompatEnabled(key, context, loc, ...args) {\r\n const enabled = isCompatEnabled(key, context);\r\n if (( true) && enabled) {\r\n warnDeprecation(key, context, loc, ...args);\r\n }\r\n return enabled;\r\n}\r\nfunction warnDeprecation(key, context, loc, ...args) {\r\n const val = getCompatValue(key, context);\r\n if (val === 'suppress-warning') {\r\n return;\r\n }\r\n const { message, link } = deprecationData[key];\r\n const msg = `(deprecation ${key}) ${typeof message === 'function' ? message(...args) : message}${link ? `\\n Details: ${link}` : ``}`;\r\n const err = new SyntaxError(msg);\r\n err.code = key;\r\n if (loc)\r\n err.loc = loc;\r\n context.onWarn(err);\r\n}\n\n// The default decoder only provides escapes for characters reserved as part of\r\n// the template syntax, and is only used if the custom renderer did not provide\r\n// a platform-specific decoder.\r\nconst decodeRE = /&(gt|lt|amp|apos|quot);/g;\r\nconst decodeMap = {\r\n gt: '>',\r\n lt: '<',\r\n amp: '&',\r\n apos: \"'\",\r\n quot: '\"'\r\n};\r\nconst defaultParserOptions = {\r\n delimiters: [`{{`, `}}`],\r\n getNamespace: () => 0 /* HTML */,\r\n getTextMode: () => 0 /* DATA */,\r\n isVoidTag: _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"NO\"],\r\n isPreTag: _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"NO\"],\r\n isCustomElement: _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"NO\"],\r\n decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),\r\n onError: defaultOnError,\r\n onWarn: defaultOnWarn,\r\n comments: (\"development\" !== 'production')\r\n};\r\nfunction baseParse(content, options = {}) {\r\n const context = createParserContext(content, options);\r\n const start = getCursor(context);\r\n return createRoot(parseChildren(context, 0 /* DATA */, []), getSelection(context, start));\r\n}\r\nfunction createParserContext(content, rawOptions) {\r\n const options = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, defaultParserOptions);\r\n let key;\r\n for (key in rawOptions) {\r\n // @ts-ignore\r\n options[key] =\r\n rawOptions[key] === undefined\r\n ? defaultParserOptions[key]\r\n : rawOptions[key];\r\n }\r\n return {\r\n options,\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n originalSource: content,\r\n source: content,\r\n inPre: false,\r\n inVPre: false,\r\n onWarn: options.onWarn\r\n };\r\n}\r\nfunction parseChildren(context, mode, ancestors) {\r\n const parent = last(ancestors);\r\n const ns = parent ? parent.ns : 0 /* HTML */;\r\n const nodes = [];\r\n while (!isEnd(context, mode, ancestors)) {\r\n const s = context.source;\r\n let node = undefined;\r\n if (mode === 0 /* DATA */ || mode === 1 /* RCDATA */) {\r\n if (!context.inVPre && startsWith(s, context.options.delimiters[0])) {\r\n // '{{'\r\n node = parseInterpolation(context, mode);\r\n }\r\n else if (mode === 0 /* DATA */ && s[0] === '<') {\r\n // https://html.spec.whatwg.org/multipage/parsing.html#tag-open-state\r\n if (s.length === 1) {\r\n emitError(context, 5 /* EOF_BEFORE_TAG_NAME */, 1);\r\n }\r\n else if (s[1] === '!') {\r\n // https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state\r\n if (startsWith(s, '<!--')) {\r\n node = parseComment(context);\r\n }\r\n else if (startsWith(s, '<!DOCTYPE')) {\r\n // Ignore DOCTYPE by a limitation.\r\n node = parseBogusComment(context);\r\n }\r\n else if (startsWith(s, '<![CDATA[')) {\r\n if (ns !== 0 /* HTML */) {\r\n node = parseCDATA(context, ancestors);\r\n }\r\n else {\r\n emitError(context, 1 /* CDATA_IN_HTML_CONTENT */);\r\n node = parseBogusComment(context);\r\n }\r\n }\r\n else {\r\n emitError(context, 11 /* INCORRECTLY_OPENED_COMMENT */);\r\n node = parseBogusComment(context);\r\n }\r\n }\r\n else if (s[1] === '/') {\r\n // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state\r\n if (s.length === 2) {\r\n emitError(context, 5 /* EOF_BEFORE_TAG_NAME */, 2);\r\n }\r\n else if (s[2] === '>') {\r\n emitError(context, 14 /* MISSING_END_TAG_NAME */, 2);\r\n advanceBy(context, 3);\r\n continue;\r\n }\r\n else if (/[a-z]/i.test(s[2])) {\r\n emitError(context, 23 /* X_INVALID_END_TAG */);\r\n parseTag(context, 1 /* End */, parent);\r\n continue;\r\n }\r\n else {\r\n emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2);\r\n node = parseBogusComment(context);\r\n }\r\n }\r\n else if (/[a-z]/i.test(s[1])) {\r\n node = parseElement(context, ancestors);\r\n // 2.x <template> with no directive compat\r\n if (isCompatEnabled(\"COMPILER_NATIVE_TEMPLATE\" /* COMPILER_NATIVE_TEMPLATE */, context) &&\r\n node &&\r\n node.tag === 'template' &&\r\n !node.props.some(p => p.type === 7 /* DIRECTIVE */ &&\r\n isSpecialTemplateDirective(p.name))) {\r\n ( true) &&\r\n warnDeprecation(\"COMPILER_NATIVE_TEMPLATE\" /* COMPILER_NATIVE_TEMPLATE */, context, node.loc);\r\n node = node.children;\r\n }\r\n }\r\n else if (s[1] === '?') {\r\n emitError(context, 21 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1);\r\n node = parseBogusComment(context);\r\n }\r\n else {\r\n emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1);\r\n }\r\n }\r\n }\r\n if (!node) {\r\n node = parseText(context, mode);\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(node)) {\r\n for (let i = 0; i < node.length; i++) {\r\n pushNode(nodes, node[i]);\r\n }\r\n }\r\n else {\r\n pushNode(nodes, node);\r\n }\r\n }\r\n // Whitespace handling strategy like v2\r\n let removedWhitespace = false;\r\n if (mode !== 2 /* RAWTEXT */ && mode !== 1 /* RCDATA */) {\r\n const shouldCondense = context.options.whitespace !== 'preserve';\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n if (!context.inPre && node.type === 2 /* TEXT */) {\r\n if (!/[^\\t\\r\\n\\f ]/.test(node.content)) {\r\n const prev = nodes[i - 1];\r\n const next = nodes[i + 1];\r\n // Remove if:\r\n // - the whitespace is the first or last node, or:\r\n // - (condense mode) the whitespace is adjacent to a comment, or:\r\n // - (condense mode) the whitespace is between two elements AND contains newline\r\n if (!prev ||\r\n !next ||\r\n (shouldCondense &&\r\n (prev.type === 3 /* COMMENT */ ||\r\n next.type === 3 /* COMMENT */ ||\r\n (prev.type === 1 /* ELEMENT */ &&\r\n next.type === 1 /* ELEMENT */ &&\r\n /[\\r\\n]/.test(node.content))))) {\r\n removedWhitespace = true;\r\n nodes[i] = null;\r\n }\r\n else {\r\n // Otherwise, the whitespace is condensed into a single space\r\n node.content = ' ';\r\n }\r\n }\r\n else if (shouldCondense) {\r\n // in condense mode, consecutive whitespaces in text are condensed\r\n // down to a single space.\r\n node.content = node.content.replace(/[\\t\\r\\n\\f ]+/g, ' ');\r\n }\r\n }\r\n // Remove comment nodes if desired by configuration.\r\n else if (node.type === 3 /* COMMENT */ && !context.options.comments) {\r\n removedWhitespace = true;\r\n nodes[i] = null;\r\n }\r\n }\r\n if (context.inPre && parent && context.options.isPreTag(parent.tag)) {\r\n // remove leading newline per html spec\r\n // https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element\r\n const first = nodes[0];\r\n if (first && first.type === 2 /* TEXT */) {\r\n first.content = first.content.replace(/^\\r?\\n/, '');\r\n }\r\n }\r\n }\r\n return removedWhitespace ? nodes.filter(Boolean) : nodes;\r\n}\r\nfunction pushNode(nodes, node) {\r\n if (node.type === 2 /* TEXT */) {\r\n const prev = last(nodes);\r\n // Merge if both this and the previous node are text and those are\r\n // consecutive. This happens for cases like \"a < b\".\r\n if (prev &&\r\n prev.type === 2 /* TEXT */ &&\r\n prev.loc.end.offset === node.loc.start.offset) {\r\n prev.content += node.content;\r\n prev.loc.end = node.loc.end;\r\n prev.loc.source += node.loc.source;\r\n return;\r\n }\r\n }\r\n nodes.push(node);\r\n}\r\nfunction parseCDATA(context, ancestors) {\r\n advanceBy(context, 9);\r\n const nodes = parseChildren(context, 3 /* CDATA */, ancestors);\r\n if (context.source.length === 0) {\r\n emitError(context, 6 /* EOF_IN_CDATA */);\r\n }\r\n else {\r\n advanceBy(context, 3);\r\n }\r\n return nodes;\r\n}\r\nfunction parseComment(context) {\r\n const start = getCursor(context);\r\n let content;\r\n // Regular comment.\r\n const match = /--(\\!)?>/.exec(context.source);\r\n if (!match) {\r\n content = context.source.slice(4);\r\n advanceBy(context, context.source.length);\r\n emitError(context, 7 /* EOF_IN_COMMENT */);\r\n }\r\n else {\r\n if (match.index <= 3) {\r\n emitError(context, 0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */);\r\n }\r\n if (match[1]) {\r\n emitError(context, 10 /* INCORRECTLY_CLOSED_COMMENT */);\r\n }\r\n content = context.source.slice(4, match.index);\r\n // Advancing with reporting nested comments.\r\n const s = context.source.slice(0, match.index);\r\n let prevIndex = 1, nestedIndex = 0;\r\n while ((nestedIndex = s.indexOf('<!--', prevIndex)) !== -1) {\r\n advanceBy(context, nestedIndex - prevIndex + 1);\r\n if (nestedIndex + 4 < s.length) {\r\n emitError(context, 16 /* NESTED_COMMENT */);\r\n }\r\n prevIndex = nestedIndex + 1;\r\n }\r\n advanceBy(context, match.index + match[0].length - prevIndex + 1);\r\n }\r\n return {\r\n type: 3 /* COMMENT */,\r\n content,\r\n loc: getSelection(context, start)\r\n };\r\n}\r\nfunction parseBogusComment(context) {\r\n const start = getCursor(context);\r\n const contentStart = context.source[1] === '?' ? 1 : 2;\r\n let content;\r\n const closeIndex = context.source.indexOf('>');\r\n if (closeIndex === -1) {\r\n content = context.source.slice(contentStart);\r\n advanceBy(context, context.source.length);\r\n }\r\n else {\r\n content = context.source.slice(contentStart, closeIndex);\r\n advanceBy(context, closeIndex + 1);\r\n }\r\n return {\r\n type: 3 /* COMMENT */,\r\n content,\r\n loc: getSelection(context, start)\r\n };\r\n}\r\nfunction parseElement(context, ancestors) {\r\n // Start tag.\r\n const wasInPre = context.inPre;\r\n const wasInVPre = context.inVPre;\r\n const parent = last(ancestors);\r\n const element = parseTag(context, 0 /* Start */, parent);\r\n const isPreBoundary = context.inPre && !wasInPre;\r\n const isVPreBoundary = context.inVPre && !wasInVPre;\r\n if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {\r\n // #4030 self-closing <pre> tag\r\n if (isPreBoundary) {\r\n context.inPre = false;\r\n }\r\n if (isVPreBoundary) {\r\n context.inVPre = false;\r\n }\r\n return element;\r\n }\r\n // Children.\r\n ancestors.push(element);\r\n const mode = context.options.getTextMode(element, parent);\r\n const children = parseChildren(context, mode, ancestors);\r\n ancestors.pop();\r\n // 2.x inline-template compat\r\n {\r\n const inlineTemplateProp = element.props.find(p => p.type === 6 /* ATTRIBUTE */ && p.name === 'inline-template');\r\n if (inlineTemplateProp &&\r\n checkCompatEnabled(\"COMPILER_INLINE_TEMPLATE\" /* COMPILER_INLINE_TEMPLATE */, context, inlineTemplateProp.loc)) {\r\n const loc = getSelection(context, element.loc.end);\r\n inlineTemplateProp.value = {\r\n type: 2 /* TEXT */,\r\n content: loc.source,\r\n loc\r\n };\r\n }\r\n }\r\n element.children = children;\r\n // End tag.\r\n if (startsWithEndTagOpen(context.source, element.tag)) {\r\n parseTag(context, 1 /* End */, parent);\r\n }\r\n else {\r\n emitError(context, 24 /* X_MISSING_END_TAG */, 0, element.loc.start);\r\n if (context.source.length === 0 && element.tag.toLowerCase() === 'script') {\r\n const first = children[0];\r\n if (first && startsWith(first.loc.source, '<!--')) {\r\n emitError(context, 8 /* EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT */);\r\n }\r\n }\r\n }\r\n element.loc = getSelection(context, element.loc.start);\r\n if (isPreBoundary) {\r\n context.inPre = false;\r\n }\r\n if (isVPreBoundary) {\r\n context.inVPre = false;\r\n }\r\n return element;\r\n}\r\nconst isSpecialTemplateDirective = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeMap\"])(`if,else,else-if,for,slot`);\r\nfunction parseTag(context, type, parent) {\r\n // Tag open.\r\n const start = getCursor(context);\r\n const match = /^<\\/?([a-z][^\\t\\r\\n\\f />]*)/i.exec(context.source);\r\n const tag = match[1];\r\n const ns = context.options.getNamespace(tag, parent);\r\n advanceBy(context, match[0].length);\r\n advanceSpaces(context);\r\n // save current state in case we need to re-parse attributes with v-pre\r\n const cursor = getCursor(context);\r\n const currentSource = context.source;\r\n // check <pre> tag\r\n if (context.options.isPreTag(tag)) {\r\n context.inPre = true;\r\n }\r\n // Attributes.\r\n let props = parseAttributes(context, type);\r\n // check v-pre\r\n if (type === 0 /* Start */ &&\r\n !context.inVPre &&\r\n props.some(p => p.type === 7 /* DIRECTIVE */ && p.name === 'pre')) {\r\n context.inVPre = true;\r\n // reset context\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(context, cursor);\r\n context.source = currentSource;\r\n // re-parse attrs and filter out v-pre itself\r\n props = parseAttributes(context, type).filter(p => p.name !== 'v-pre');\r\n }\r\n // Tag close.\r\n let isSelfClosing = false;\r\n if (context.source.length === 0) {\r\n emitError(context, 9 /* EOF_IN_TAG */);\r\n }\r\n else {\r\n isSelfClosing = startsWith(context.source, '/>');\r\n if (type === 1 /* End */ && isSelfClosing) {\r\n emitError(context, 4 /* END_TAG_WITH_TRAILING_SOLIDUS */);\r\n }\r\n advanceBy(context, isSelfClosing ? 2 : 1);\r\n }\r\n if (type === 1 /* End */) {\r\n return;\r\n }\r\n // 2.x deprecation checks\r\n if (( true) &&\r\n isCompatEnabled(\"COMPILER_V_IF_V_FOR_PRECEDENCE\" /* COMPILER_V_IF_V_FOR_PRECEDENCE */, context)) {\r\n let hasIf = false;\r\n let hasFor = false;\r\n for (let i = 0; i < props.length; i++) {\r\n const p = props[i];\r\n if (p.type === 7 /* DIRECTIVE */) {\r\n if (p.name === 'if') {\r\n hasIf = true;\r\n }\r\n else if (p.name === 'for') {\r\n hasFor = true;\r\n }\r\n }\r\n if (hasIf && hasFor) {\r\n warnDeprecation(\"COMPILER_V_IF_V_FOR_PRECEDENCE\" /* COMPILER_V_IF_V_FOR_PRECEDENCE */, context, getSelection(context, start));\r\n break;\r\n }\r\n }\r\n }\r\n let tagType = 0 /* ELEMENT */;\r\n if (!context.inVPre) {\r\n if (tag === 'slot') {\r\n tagType = 2 /* SLOT */;\r\n }\r\n else if (tag === 'template') {\r\n if (props.some(p => p.type === 7 /* DIRECTIVE */ && isSpecialTemplateDirective(p.name))) {\r\n tagType = 3 /* TEMPLATE */;\r\n }\r\n }\r\n else if (isComponent(tag, props, context)) {\r\n tagType = 1 /* COMPONENT */;\r\n }\r\n }\r\n return {\r\n type: 1 /* ELEMENT */,\r\n ns,\r\n tag,\r\n tagType,\r\n props,\r\n isSelfClosing,\r\n children: [],\r\n loc: getSelection(context, start),\r\n codegenNode: undefined // to be created during transform phase\r\n };\r\n}\r\nfunction isComponent(tag, props, context) {\r\n const options = context.options;\r\n if (options.isCustomElement(tag)) {\r\n return false;\r\n }\r\n if (tag === 'component' ||\r\n /^[A-Z]/.test(tag) ||\r\n isCoreComponent(tag) ||\r\n (options.isBuiltInComponent && options.isBuiltInComponent(tag)) ||\r\n (options.isNativeTag && !options.isNativeTag(tag))) {\r\n return true;\r\n }\r\n // at this point the tag should be a native tag, but check for potential \"is\"\r\n // casting\r\n for (let i = 0; i < props.length; i++) {\r\n const p = props[i];\r\n if (p.type === 6 /* ATTRIBUTE */) {\r\n if (p.name === 'is' && p.value) {\r\n if (p.value.content.startsWith('vue:')) {\r\n return true;\r\n }\r\n else if (checkCompatEnabled(\"COMPILER_IS_ON_ELEMENT\" /* COMPILER_IS_ON_ELEMENT */, context, p.loc)) {\r\n return true;\r\n }\r\n }\r\n }\r\n else {\r\n // directive\r\n // v-is (TODO Deprecate)\r\n if (p.name === 'is') {\r\n return true;\r\n }\r\n else if (\r\n // :is on plain element - only treat as component in compat mode\r\n p.name === 'bind' &&\r\n isStaticArgOf(p.arg, 'is') &&\r\n true &&\r\n checkCompatEnabled(\"COMPILER_IS_ON_ELEMENT\" /* COMPILER_IS_ON_ELEMENT */, context, p.loc)) {\r\n return true;\r\n }\r\n }\r\n }\r\n}\r\nfunction parseAttributes(context, type) {\r\n const props = [];\r\n const attributeNames = new Set();\r\n while (context.source.length > 0 &&\r\n !startsWith(context.source, '>') &&\r\n !startsWith(context.source, '/>')) {\r\n if (startsWith(context.source, '/')) {\r\n emitError(context, 22 /* UNEXPECTED_SOLIDUS_IN_TAG */);\r\n advanceBy(context, 1);\r\n advanceSpaces(context);\r\n continue;\r\n }\r\n if (type === 1 /* End */) {\r\n emitError(context, 3 /* END_TAG_WITH_ATTRIBUTES */);\r\n }\r\n const attr = parseAttribute(context, attributeNames);\r\n // Trim whitespace between class\r\n // https://github.com/vuejs/core/issues/4251\r\n if (attr.type === 6 /* ATTRIBUTE */ &&\r\n attr.value &&\r\n attr.name === 'class') {\r\n attr.value.content = attr.value.content.replace(/\\s+/g, ' ').trim();\r\n }\r\n if (type === 0 /* Start */) {\r\n props.push(attr);\r\n }\r\n if (/^[^\\t\\r\\n\\f />]/.test(context.source)) {\r\n emitError(context, 15 /* MISSING_WHITESPACE_BETWEEN_ATTRIBUTES */);\r\n }\r\n advanceSpaces(context);\r\n }\r\n return props;\r\n}\r\nfunction parseAttribute(context, nameSet) {\r\n // Name.\r\n const start = getCursor(context);\r\n const match = /^[^\\t\\r\\n\\f />][^\\t\\r\\n\\f />=]*/.exec(context.source);\r\n const name = match[0];\r\n if (nameSet.has(name)) {\r\n emitError(context, 2 /* DUPLICATE_ATTRIBUTE */);\r\n }\r\n nameSet.add(name);\r\n if (name[0] === '=') {\r\n emitError(context, 19 /* UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME */);\r\n }\r\n {\r\n const pattern = /[\"'<]/g;\r\n let m;\r\n while ((m = pattern.exec(name))) {\r\n emitError(context, 17 /* UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME */, m.index);\r\n }\r\n }\r\n advanceBy(context, name.length);\r\n // Value\r\n let value = undefined;\r\n if (/^[\\t\\r\\n\\f ]*=/.test(context.source)) {\r\n advanceSpaces(context);\r\n advanceBy(context, 1);\r\n advanceSpaces(context);\r\n value = parseAttributeValue(context);\r\n if (!value) {\r\n emitError(context, 13 /* MISSING_ATTRIBUTE_VALUE */);\r\n }\r\n }\r\n const loc = getSelection(context, start);\r\n if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\\.|@|#)/.test(name)) {\r\n const match = /(?:^v-([a-z0-9-]+))?(?:(?::|^\\.|^@|^#)(\\[[^\\]]+\\]|[^\\.]+))?(.+)?$/i.exec(name);\r\n let isPropShorthand = startsWith(name, '.');\r\n let dirName = match[1] ||\r\n (isPropShorthand || startsWith(name, ':')\r\n ? 'bind'\r\n : startsWith(name, '@')\r\n ? 'on'\r\n : 'slot');\r\n let arg;\r\n if (match[2]) {\r\n const isSlot = dirName === 'slot';\r\n const startOffset = name.lastIndexOf(match[2]);\r\n const loc = getSelection(context, getNewPosition(context, start, startOffset), getNewPosition(context, start, startOffset + match[2].length + ((isSlot && match[3]) || '').length));\r\n let content = match[2];\r\n let isStatic = true;\r\n if (content.startsWith('[')) {\r\n isStatic = false;\r\n if (!content.endsWith(']')) {\r\n emitError(context, 27 /* X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END */);\r\n content = content.slice(1);\r\n }\r\n else {\r\n content = content.slice(1, content.length - 1);\r\n }\r\n }\r\n else if (isSlot) {\r\n // #1241 special case for v-slot: vuetify relies extensively on slot\r\n // names containing dots. v-slot doesn't have any modifiers and Vue 2.x\r\n // supports such usage so we are keeping it consistent with 2.x.\r\n content += match[3] || '';\r\n }\r\n arg = {\r\n type: 4 /* SIMPLE_EXPRESSION */,\r\n content,\r\n isStatic,\r\n constType: isStatic\r\n ? 3 /* CAN_STRINGIFY */\r\n : 0 /* NOT_CONSTANT */,\r\n loc\r\n };\r\n }\r\n if (value && value.isQuoted) {\r\n const valueLoc = value.loc;\r\n valueLoc.start.offset++;\r\n valueLoc.start.column++;\r\n valueLoc.end = advancePositionWithClone(valueLoc.start, value.content);\r\n valueLoc.source = valueLoc.source.slice(1, -1);\r\n }\r\n const modifiers = match[3] ? match[3].slice(1).split('.') : [];\r\n if (isPropShorthand)\r\n modifiers.push('prop');\r\n // 2.x compat v-bind:foo.sync -> v-model:foo\r\n if (dirName === 'bind' && arg) {\r\n if (modifiers.includes('sync') &&\r\n checkCompatEnabled(\"COMPILER_V_BIND_SYNC\" /* COMPILER_V_BIND_SYNC */, context, loc, arg.loc.source)) {\r\n dirName = 'model';\r\n modifiers.splice(modifiers.indexOf('sync'), 1);\r\n }\r\n if (( true) && modifiers.includes('prop')) {\r\n checkCompatEnabled(\"COMPILER_V_BIND_PROP\" /* COMPILER_V_BIND_PROP */, context, loc);\r\n }\r\n }\r\n return {\r\n type: 7 /* DIRECTIVE */,\r\n name: dirName,\r\n exp: value && {\r\n type: 4 /* SIMPLE_EXPRESSION */,\r\n content: value.content,\r\n isStatic: false,\r\n // Treat as non-constant by default. This can be potentially set to\r\n // other values by `transformExpression` to make it eligible for hoisting.\r\n constType: 0 /* NOT_CONSTANT */,\r\n loc: value.loc\r\n },\r\n arg,\r\n modifiers,\r\n loc\r\n };\r\n }\r\n // missing directive name or illegal directive name\r\n if (!context.inVPre && startsWith(name, 'v-')) {\r\n emitError(context, 26 /* X_MISSING_DIRECTIVE_NAME */);\r\n }\r\n return {\r\n type: 6 /* ATTRIBUTE */,\r\n name,\r\n value: value && {\r\n type: 2 /* TEXT */,\r\n content: value.content,\r\n loc: value.loc\r\n },\r\n loc\r\n };\r\n}\r\nfunction parseAttributeValue(context) {\r\n const start = getCursor(context);\r\n let content;\r\n const quote = context.source[0];\r\n const isQuoted = quote === `\"` || quote === `'`;\r\n if (isQuoted) {\r\n // Quoted value.\r\n advanceBy(context, 1);\r\n const endIndex = context.source.indexOf(quote);\r\n if (endIndex === -1) {\r\n content = parseTextData(context, context.source.length, 4 /* ATTRIBUTE_VALUE */);\r\n }\r\n else {\r\n content = parseTextData(context, endIndex, 4 /* ATTRIBUTE_VALUE */);\r\n advanceBy(context, 1);\r\n }\r\n }\r\n else {\r\n // Unquoted\r\n const match = /^[^\\t\\r\\n\\f >]+/.exec(context.source);\r\n if (!match) {\r\n return undefined;\r\n }\r\n const unexpectedChars = /[\"'<=`]/g;\r\n let m;\r\n while ((m = unexpectedChars.exec(match[0]))) {\r\n emitError(context, 18 /* UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE */, m.index);\r\n }\r\n content = parseTextData(context, match[0].length, 4 /* ATTRIBUTE_VALUE */);\r\n }\r\n return { content, isQuoted, loc: getSelection(context, start) };\r\n}\r\nfunction parseInterpolation(context, mode) {\r\n const [open, close] = context.options.delimiters;\r\n const closeIndex = context.source.indexOf(close, open.length);\r\n if (closeIndex === -1) {\r\n emitError(context, 25 /* X_MISSING_INTERPOLATION_END */);\r\n return undefined;\r\n }\r\n const start = getCursor(context);\r\n advanceBy(context, open.length);\r\n const innerStart = getCursor(context);\r\n const innerEnd = getCursor(context);\r\n const rawContentLength = closeIndex - open.length;\r\n const rawContent = context.source.slice(0, rawContentLength);\r\n const preTrimContent = parseTextData(context, rawContentLength, mode);\r\n const content = preTrimContent.trim();\r\n const startOffset = preTrimContent.indexOf(content);\r\n if (startOffset > 0) {\r\n advancePositionWithMutation(innerStart, rawContent, startOffset);\r\n }\r\n const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);\r\n advancePositionWithMutation(innerEnd, rawContent, endOffset);\r\n advanceBy(context, close.length);\r\n return {\r\n type: 5 /* INTERPOLATION */,\r\n content: {\r\n type: 4 /* SIMPLE_EXPRESSION */,\r\n isStatic: false,\r\n // Set `isConstant` to false by default and will decide in transformExpression\r\n constType: 0 /* NOT_CONSTANT */,\r\n content,\r\n loc: getSelection(context, innerStart, innerEnd)\r\n },\r\n loc: getSelection(context, start)\r\n };\r\n}\r\nfunction parseText(context, mode) {\r\n const endTokens = mode === 3 /* CDATA */ ? [']]>'] : ['<', context.options.delimiters[0]];\r\n let endIndex = context.source.length;\r\n for (let i = 0; i < endTokens.length; i++) {\r\n const index = context.source.indexOf(endTokens[i], 1);\r\n if (index !== -1 && endIndex > index) {\r\n endIndex = index;\r\n }\r\n }\r\n const start = getCursor(context);\r\n const content = parseTextData(context, endIndex, mode);\r\n return {\r\n type: 2 /* TEXT */,\r\n content,\r\n loc: getSelection(context, start)\r\n };\r\n}\r\n/**\r\n * Get text data with a given length from the current location.\r\n * This translates HTML entities in the text data.\r\n */\r\nfunction parseTextData(context, length, mode) {\r\n const rawText = context.source.slice(0, length);\r\n advanceBy(context, length);\r\n if (mode === 2 /* RAWTEXT */ ||\r\n mode === 3 /* CDATA */ ||\r\n !rawText.includes('&')) {\r\n return rawText;\r\n }\r\n else {\r\n // DATA or RCDATA containing \"&\"\". Entity decoding required.\r\n return context.options.decodeEntities(rawText, mode === 4 /* ATTRIBUTE_VALUE */);\r\n }\r\n}\r\nfunction getCursor(context) {\r\n const { column, line, offset } = context;\r\n return { column, line, offset };\r\n}\r\nfunction getSelection(context, start, end) {\r\n end = end || getCursor(context);\r\n return {\r\n start,\r\n end,\r\n source: context.originalSource.slice(start.offset, end.offset)\r\n };\r\n}\r\nfunction last(xs) {\r\n return xs[xs.length - 1];\r\n}\r\nfunction startsWith(source, searchString) {\r\n return source.startsWith(searchString);\r\n}\r\nfunction advanceBy(context, numberOfCharacters) {\r\n const { source } = context;\r\n advancePositionWithMutation(context, source, numberOfCharacters);\r\n context.source = source.slice(numberOfCharacters);\r\n}\r\nfunction advanceSpaces(context) {\r\n const match = /^[\\t\\r\\n\\f ]+/.exec(context.source);\r\n if (match) {\r\n advanceBy(context, match[0].length);\r\n }\r\n}\r\nfunction getNewPosition(context, start, numberOfCharacters) {\r\n return advancePositionWithClone(start, context.originalSource.slice(start.offset, numberOfCharacters), numberOfCharacters);\r\n}\r\nfunction emitError(context, code, offset, loc = getCursor(context)) {\r\n if (offset) {\r\n loc.offset += offset;\r\n loc.column += offset;\r\n }\r\n context.options.onError(createCompilerError(code, {\r\n start: loc,\r\n end: loc,\r\n source: ''\r\n }));\r\n}\r\nfunction isEnd(context, mode, ancestors) {\r\n const s = context.source;\r\n switch (mode) {\r\n case 0 /* DATA */:\r\n if (startsWith(s, '</')) {\r\n // TODO: probably bad performance\r\n for (let i = ancestors.length - 1; i >= 0; --i) {\r\n if (startsWithEndTagOpen(s, ancestors[i].tag)) {\r\n return true;\r\n }\r\n }\r\n }\r\n break;\r\n case 1 /* RCDATA */:\r\n case 2 /* RAWTEXT */: {\r\n const parent = last(ancestors);\r\n if (parent && startsWithEndTagOpen(s, parent.tag)) {\r\n return true;\r\n }\r\n break;\r\n }\r\n case 3 /* CDATA */:\r\n if (startsWith(s, ']]>')) {\r\n return true;\r\n }\r\n break;\r\n }\r\n return !s;\r\n}\r\nfunction startsWithEndTagOpen(source, tag) {\r\n return (startsWith(source, '</') &&\r\n source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() &&\r\n /[\\t\\r\\n\\f />]/.test(source[2 + tag.length] || '>'));\r\n}\n\nfunction hoistStatic(root, context) {\r\n walk(root, context, \r\n // Root node is unfortunately non-hoistable due to potential parent\r\n // fallthrough attributes.\r\n isSingleElementRoot(root, root.children[0]));\r\n}\r\nfunction isSingleElementRoot(root, child) {\r\n const { children } = root;\r\n return (children.length === 1 &&\r\n child.type === 1 /* ELEMENT */ &&\r\n !isSlotOutlet(child));\r\n}\r\nfunction walk(node, context, doNotHoistNode = false) {\r\n const { children } = node;\r\n const originalCount = children.length;\r\n let hoistedCount = 0;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n // only plain elements & text calls are eligible for hoisting.\r\n if (child.type === 1 /* ELEMENT */ &&\r\n child.tagType === 0 /* ELEMENT */) {\r\n const constantType = doNotHoistNode\r\n ? 0 /* NOT_CONSTANT */\r\n : getConstantType(child, context);\r\n if (constantType > 0 /* NOT_CONSTANT */) {\r\n if (constantType >= 2 /* CAN_HOIST */) {\r\n child.codegenNode.patchFlag =\r\n -1 /* HOISTED */ + (( true) ? ` /* HOISTED */` : undefined);\r\n child.codegenNode = context.hoist(child.codegenNode);\r\n hoistedCount++;\r\n continue;\r\n }\r\n }\r\n else {\r\n // node may contain dynamic children, but its props may be eligible for\r\n // hoisting.\r\n const codegenNode = child.codegenNode;\r\n if (codegenNode.type === 13 /* VNODE_CALL */) {\r\n const flag = getPatchFlag(codegenNode);\r\n if ((!flag ||\r\n flag === 512 /* NEED_PATCH */ ||\r\n flag === 1 /* TEXT */) &&\r\n getGeneratedPropsConstantType(child, context) >=\r\n 2 /* CAN_HOIST */) {\r\n const props = getNodeProps(child);\r\n if (props) {\r\n codegenNode.props = context.hoist(props);\r\n }\r\n }\r\n if (codegenNode.dynamicProps) {\r\n codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);\r\n }\r\n }\r\n }\r\n }\r\n else if (child.type === 12 /* TEXT_CALL */ &&\r\n getConstantType(child.content, context) >= 2 /* CAN_HOIST */) {\r\n child.codegenNode = context.hoist(child.codegenNode);\r\n hoistedCount++;\r\n }\r\n // walk further\r\n if (child.type === 1 /* ELEMENT */) {\r\n const isComponent = child.tagType === 1 /* COMPONENT */;\r\n if (isComponent) {\r\n context.scopes.vSlot++;\r\n }\r\n walk(child, context);\r\n if (isComponent) {\r\n context.scopes.vSlot--;\r\n }\r\n }\r\n else if (child.type === 11 /* FOR */) {\r\n // Do not hoist v-for single child because it has to be a block\r\n walk(child, context, child.children.length === 1);\r\n }\r\n else if (child.type === 9 /* IF */) {\r\n for (let i = 0; i < child.branches.length; i++) {\r\n // Do not hoist v-if single child because it has to be a block\r\n walk(child.branches[i], context, child.branches[i].children.length === 1);\r\n }\r\n }\r\n }\r\n if (hoistedCount && context.transformHoist) {\r\n context.transformHoist(children, context, node);\r\n }\r\n // all children were hoisted - the entire children array is hoistable.\r\n if (hoistedCount &&\r\n hoistedCount === originalCount &&\r\n node.type === 1 /* ELEMENT */ &&\r\n node.tagType === 0 /* ELEMENT */ &&\r\n node.codegenNode &&\r\n node.codegenNode.type === 13 /* VNODE_CALL */ &&\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(node.codegenNode.children)) {\r\n node.codegenNode.children = context.hoist(createArrayExpression(node.codegenNode.children));\r\n }\r\n}\r\nfunction getConstantType(node, context) {\r\n const { constantCache } = context;\r\n switch (node.type) {\r\n case 1 /* ELEMENT */:\r\n if (node.tagType !== 0 /* ELEMENT */) {\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n const cached = constantCache.get(node);\r\n if (cached !== undefined) {\r\n return cached;\r\n }\r\n const codegenNode = node.codegenNode;\r\n if (codegenNode.type !== 13 /* VNODE_CALL */) {\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n if (codegenNode.isBlock &&\r\n node.tag !== 'svg' &&\r\n node.tag !== 'foreignObject') {\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n const flag = getPatchFlag(codegenNode);\r\n if (!flag) {\r\n let returnType = 3 /* CAN_STRINGIFY */;\r\n // Element itself has no patch flag. However we still need to check:\r\n // 1. Even for a node with no patch flag, it is possible for it to contain\r\n // non-hoistable expressions that refers to scope variables, e.g. compiler\r\n // injected keys or cached event handlers. Therefore we need to always\r\n // check the codegenNode's props to be sure.\r\n const generatedPropsType = getGeneratedPropsConstantType(node, context);\r\n if (generatedPropsType === 0 /* NOT_CONSTANT */) {\r\n constantCache.set(node, 0 /* NOT_CONSTANT */);\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n if (generatedPropsType < returnType) {\r\n returnType = generatedPropsType;\r\n }\r\n // 2. its children.\r\n for (let i = 0; i < node.children.length; i++) {\r\n const childType = getConstantType(node.children[i], context);\r\n if (childType === 0 /* NOT_CONSTANT */) {\r\n constantCache.set(node, 0 /* NOT_CONSTANT */);\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n if (childType < returnType) {\r\n returnType = childType;\r\n }\r\n }\r\n // 3. if the type is not already CAN_SKIP_PATCH which is the lowest non-0\r\n // type, check if any of the props can cause the type to be lowered\r\n // we can skip can_patch because it's guaranteed by the absence of a\r\n // patchFlag.\r\n if (returnType > 1 /* CAN_SKIP_PATCH */) {\r\n for (let i = 0; i < node.props.length; i++) {\r\n const p = node.props[i];\r\n if (p.type === 7 /* DIRECTIVE */ && p.name === 'bind' && p.exp) {\r\n const expType = getConstantType(p.exp, context);\r\n if (expType === 0 /* NOT_CONSTANT */) {\r\n constantCache.set(node, 0 /* NOT_CONSTANT */);\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n if (expType < returnType) {\r\n returnType = expType;\r\n }\r\n }\r\n }\r\n }\r\n // only svg/foreignObject could be block here, however if they are\r\n // static then they don't need to be blocks since there will be no\r\n // nested updates.\r\n if (codegenNode.isBlock) {\r\n context.removeHelper(OPEN_BLOCK);\r\n context.removeHelper(getVNodeBlockHelper(context.inSSR, codegenNode.isComponent));\r\n codegenNode.isBlock = false;\r\n context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));\r\n }\r\n constantCache.set(node, returnType);\r\n return returnType;\r\n }\r\n else {\r\n constantCache.set(node, 0 /* NOT_CONSTANT */);\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n case 2 /* TEXT */:\r\n case 3 /* COMMENT */:\r\n return 3 /* CAN_STRINGIFY */;\r\n case 9 /* IF */:\r\n case 11 /* FOR */:\r\n case 10 /* IF_BRANCH */:\r\n return 0 /* NOT_CONSTANT */;\r\n case 5 /* INTERPOLATION */:\r\n case 12 /* TEXT_CALL */:\r\n return getConstantType(node.content, context);\r\n case 4 /* SIMPLE_EXPRESSION */:\r\n return node.constType;\r\n case 8 /* COMPOUND_EXPRESSION */:\r\n let returnType = 3 /* CAN_STRINGIFY */;\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(child) || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isSymbol\"])(child)) {\r\n continue;\r\n }\r\n const childType = getConstantType(child, context);\r\n if (childType === 0 /* NOT_CONSTANT */) {\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n else if (childType < returnType) {\r\n returnType = childType;\r\n }\r\n }\r\n return returnType;\r\n default:\r\n if ((true)) ;\r\n return 0 /* NOT_CONSTANT */;\r\n }\r\n}\r\nconst allowHoistedHelperSet = new Set([\r\n NORMALIZE_CLASS,\r\n NORMALIZE_STYLE,\r\n NORMALIZE_PROPS,\r\n GUARD_REACTIVE_PROPS\r\n]);\r\nfunction getConstantTypeOfHelperCall(value, context) {\r\n if (value.type === 14 /* JS_CALL_EXPRESSION */ &&\r\n !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(value.callee) &&\r\n allowHoistedHelperSet.has(value.callee)) {\r\n const arg = value.arguments[0];\r\n if (arg.type === 4 /* SIMPLE_EXPRESSION */) {\r\n return getConstantType(arg, context);\r\n }\r\n else if (arg.type === 14 /* JS_CALL_EXPRESSION */) {\r\n // in the case of nested helper call, e.g. `normalizeProps(guardReactiveProps(exp))`\r\n return getConstantTypeOfHelperCall(arg, context);\r\n }\r\n }\r\n return 0 /* NOT_CONSTANT */;\r\n}\r\nfunction getGeneratedPropsConstantType(node, context) {\r\n let returnType = 3 /* CAN_STRINGIFY */;\r\n const props = getNodeProps(node);\r\n if (props && props.type === 15 /* JS_OBJECT_EXPRESSION */) {\r\n const { properties } = props;\r\n for (let i = 0; i < properties.length; i++) {\r\n const { key, value } = properties[i];\r\n const keyType = getConstantType(key, context);\r\n if (keyType === 0 /* NOT_CONSTANT */) {\r\n return keyType;\r\n }\r\n if (keyType < returnType) {\r\n returnType = keyType;\r\n }\r\n let valueType;\r\n if (value.type === 4 /* SIMPLE_EXPRESSION */) {\r\n valueType = getConstantType(value, context);\r\n }\r\n else if (value.type === 14 /* JS_CALL_EXPRESSION */) {\r\n // some helper calls can be hoisted,\r\n // such as the `normalizeProps` generated by the compiler for pre-normalize class,\r\n // in this case we need to respect the ConstantType of the helper's arguments\r\n valueType = getConstantTypeOfHelperCall(value, context);\r\n }\r\n else {\r\n valueType = 0 /* NOT_CONSTANT */;\r\n }\r\n if (valueType === 0 /* NOT_CONSTANT */) {\r\n return valueType;\r\n }\r\n if (valueType < returnType) {\r\n returnType = valueType;\r\n }\r\n }\r\n }\r\n return returnType;\r\n}\r\nfunction getNodeProps(node) {\r\n const codegenNode = node.codegenNode;\r\n if (codegenNode.type === 13 /* VNODE_CALL */) {\r\n return codegenNode.props;\r\n }\r\n}\r\nfunction getPatchFlag(node) {\r\n const flag = node.patchFlag;\r\n return flag ? parseInt(flag, 10) : undefined;\r\n}\n\nfunction createTransformContext(root, { filename = '', prefixIdentifiers = false, hoistStatic = false, cacheHandlers = false, nodeTransforms = [], directiveTransforms = {}, transformHoist = null, isBuiltInComponent = _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"NOOP\"], isCustomElement = _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"NOOP\"], expressionPlugins = [], scopeId = null, slotted = true, ssr = false, inSSR = false, ssrCssVars = ``, bindingMetadata = _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"EMPTY_OBJ\"], inline = false, isTS = false, onError = defaultOnError, onWarn = defaultOnWarn, compatConfig }) {\r\n const nameMatch = filename.replace(/\\?.*$/, '').match(/([^/\\\\]+)\\.\\w+$/);\r\n const context = {\r\n // options\r\n selfName: nameMatch && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"capitalize\"])(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"])(nameMatch[1])),\r\n prefixIdentifiers,\r\n hoistStatic,\r\n cacheHandlers,\r\n nodeTransforms,\r\n directiveTransforms,\r\n transformHoist,\r\n isBuiltInComponent,\r\n isCustomElement,\r\n expressionPlugins,\r\n scopeId,\r\n slotted,\r\n ssr,\r\n inSSR,\r\n ssrCssVars,\r\n bindingMetadata,\r\n inline,\r\n isTS,\r\n onError,\r\n onWarn,\r\n compatConfig,\r\n // state\r\n root,\r\n helpers: new Map(),\r\n components: new Set(),\r\n directives: new Set(),\r\n hoists: [],\r\n imports: [],\r\n constantCache: new Map(),\r\n temps: 0,\r\n cached: 0,\r\n identifiers: Object.create(null),\r\n scopes: {\r\n vFor: 0,\r\n vSlot: 0,\r\n vPre: 0,\r\n vOnce: 0\r\n },\r\n parent: null,\r\n currentNode: root,\r\n childIndex: 0,\r\n inVOnce: false,\r\n // methods\r\n helper(name) {\r\n const count = context.helpers.get(name) || 0;\r\n context.helpers.set(name, count + 1);\r\n return name;\r\n },\r\n removeHelper(name) {\r\n const count = context.helpers.get(name);\r\n if (count) {\r\n const currentCount = count - 1;\r\n if (!currentCount) {\r\n context.helpers.delete(name);\r\n }\r\n else {\r\n context.helpers.set(name, currentCount);\r\n }\r\n }\r\n },\r\n helperString(name) {\r\n return `_${helperNameMap[context.helper(name)]}`;\r\n },\r\n replaceNode(node) {\r\n /* istanbul ignore if */\r\n if ((true)) {\r\n if (!context.currentNode) {\r\n throw new Error(`Node being replaced is already removed.`);\r\n }\r\n if (!context.parent) {\r\n throw new Error(`Cannot replace root node.`);\r\n }\r\n }\r\n context.parent.children[context.childIndex] = context.currentNode = node;\r\n },\r\n removeNode(node) {\r\n if (( true) && !context.parent) {\r\n throw new Error(`Cannot remove root node.`);\r\n }\r\n const list = context.parent.children;\r\n const removalIndex = node\r\n ? list.indexOf(node)\r\n : context.currentNode\r\n ? context.childIndex\r\n : -1;\r\n /* istanbul ignore if */\r\n if (( true) && removalIndex < 0) {\r\n throw new Error(`node being removed is not a child of current parent`);\r\n }\r\n if (!node || node === context.currentNode) {\r\n // current node removed\r\n context.currentNode = null;\r\n context.onNodeRemoved();\r\n }\r\n else {\r\n // sibling node removed\r\n if (context.childIndex > removalIndex) {\r\n context.childIndex--;\r\n context.onNodeRemoved();\r\n }\r\n }\r\n context.parent.children.splice(removalIndex, 1);\r\n },\r\n onNodeRemoved: () => { },\r\n addIdentifiers(exp) {\r\n },\r\n removeIdentifiers(exp) {\r\n },\r\n hoist(exp) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(exp))\r\n exp = createSimpleExpression(exp);\r\n context.hoists.push(exp);\r\n const identifier = createSimpleExpression(`_hoisted_${context.hoists.length}`, false, exp.loc, 2 /* CAN_HOIST */);\r\n identifier.hoisted = exp;\r\n return identifier;\r\n },\r\n cache(exp, isVNode = false) {\r\n return createCacheExpression(context.cached++, exp, isVNode);\r\n }\r\n };\r\n {\r\n context.filters = new Set();\r\n }\r\n return context;\r\n}\r\nfunction transform(root, options) {\r\n const context = createTransformContext(root, options);\r\n traverseNode(root, context);\r\n if (options.hoistStatic) {\r\n hoistStatic(root, context);\r\n }\r\n if (!options.ssr) {\r\n createRootCodegen(root, context);\r\n }\r\n // finalize meta information\r\n root.helpers = [...context.helpers.keys()];\r\n root.components = [...context.components];\r\n root.directives = [...context.directives];\r\n root.imports = context.imports;\r\n root.hoists = context.hoists;\r\n root.temps = context.temps;\r\n root.cached = context.cached;\r\n {\r\n root.filters = [...context.filters];\r\n }\r\n}\r\nfunction createRootCodegen(root, context) {\r\n const { helper } = context;\r\n const { children } = root;\r\n if (children.length === 1) {\r\n const child = children[0];\r\n // if the single child is an element, turn it into a block.\r\n if (isSingleElementRoot(root, child) && child.codegenNode) {\r\n // single element root is never hoisted so codegenNode will never be\r\n // SimpleExpressionNode\r\n const codegenNode = child.codegenNode;\r\n if (codegenNode.type === 13 /* VNODE_CALL */) {\r\n makeBlock(codegenNode, context);\r\n }\r\n root.codegenNode = codegenNode;\r\n }\r\n else {\r\n // - single <slot/>, IfNode, ForNode: already blocks.\r\n // - single text node: always patched.\r\n // root codegen falls through via genNode()\r\n root.codegenNode = child;\r\n }\r\n }\r\n else if (children.length > 1) {\r\n // root has multiple nodes - return a fragment block.\r\n let patchFlag = 64 /* STABLE_FRAGMENT */;\r\n let patchFlagText = _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][64 /* STABLE_FRAGMENT */];\r\n // check if the fragment actually contains a single valid child with\r\n // the rest being comments\r\n if (( true) &&\r\n children.filter(c => c.type !== 3 /* COMMENT */).length === 1) {\r\n patchFlag |= 2048 /* DEV_ROOT_FRAGMENT */;\r\n patchFlagText += `, ${_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][2048 /* DEV_ROOT_FRAGMENT */]}`;\r\n }\r\n root.codegenNode = createVNodeCall(context, helper(FRAGMENT), undefined, root.children, patchFlag + (( true) ? ` /* ${patchFlagText} */` : undefined), undefined, undefined, true, undefined, false /* isComponent */);\r\n }\r\n else ;\r\n}\r\nfunction traverseChildren(parent, context) {\r\n let i = 0;\r\n const nodeRemoved = () => {\r\n i--;\r\n };\r\n for (; i < parent.children.length; i++) {\r\n const child = parent.children[i];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(child))\r\n continue;\r\n context.parent = parent;\r\n context.childIndex = i;\r\n context.onNodeRemoved = nodeRemoved;\r\n traverseNode(child, context);\r\n }\r\n}\r\nfunction traverseNode(node, context) {\r\n context.currentNode = node;\r\n // apply transform plugins\r\n const { nodeTransforms } = context;\r\n const exitFns = [];\r\n for (let i = 0; i < nodeTransforms.length; i++) {\r\n const onExit = nodeTransforms[i](node, context);\r\n if (onExit) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(onExit)) {\r\n exitFns.push(...onExit);\r\n }\r\n else {\r\n exitFns.push(onExit);\r\n }\r\n }\r\n if (!context.currentNode) {\r\n // node was removed\r\n return;\r\n }\r\n else {\r\n // node may have been replaced\r\n node = context.currentNode;\r\n }\r\n }\r\n switch (node.type) {\r\n case 3 /* COMMENT */:\r\n if (!context.ssr) {\r\n // inject import for the Comment symbol, which is needed for creating\r\n // comment nodes with `createVNode`\r\n context.helper(CREATE_COMMENT);\r\n }\r\n break;\r\n case 5 /* INTERPOLATION */:\r\n // no need to traverse, but we need to inject toString helper\r\n if (!context.ssr) {\r\n context.helper(TO_DISPLAY_STRING);\r\n }\r\n break;\r\n // for container types, further traverse downwards\r\n case 9 /* IF */:\r\n for (let i = 0; i < node.branches.length; i++) {\r\n traverseNode(node.branches[i], context);\r\n }\r\n break;\r\n case 10 /* IF_BRANCH */:\r\n case 11 /* FOR */:\r\n case 1 /* ELEMENT */:\r\n case 0 /* ROOT */:\r\n traverseChildren(node, context);\r\n break;\r\n }\r\n // exit transforms\r\n context.currentNode = node;\r\n let i = exitFns.length;\r\n while (i--) {\r\n exitFns[i]();\r\n }\r\n}\r\nfunction createStructuralDirectiveTransform(name, fn) {\r\n const matches = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(name)\r\n ? (n) => n === name\r\n : (n) => name.test(n);\r\n return (node, context) => {\r\n if (node.type === 1 /* ELEMENT */) {\r\n const { props } = node;\r\n // structural directive transforms are not concerned with slots\r\n // as they are handled separately in vSlot.ts\r\n if (node.tagType === 3 /* TEMPLATE */ && props.some(isVSlot)) {\r\n return;\r\n }\r\n const exitFns = [];\r\n for (let i = 0; i < props.length; i++) {\r\n const prop = props[i];\r\n if (prop.type === 7 /* DIRECTIVE */ && matches(prop.name)) {\r\n // structural directives are removed to avoid infinite recursion\r\n // also we remove them *before* applying so that it can further\r\n // traverse itself in case it moves the node around\r\n props.splice(i, 1);\r\n i--;\r\n const onExit = fn(node, prop, context);\r\n if (onExit)\r\n exitFns.push(onExit);\r\n }\r\n }\r\n return exitFns;\r\n }\r\n };\r\n}\n\nconst PURE_ANNOTATION = `/*#__PURE__*/`;\r\nfunction createCodegenContext(ast, { mode = 'function', prefixIdentifiers = mode === 'module', sourceMap = false, filename = `template.vue.html`, scopeId = null, optimizeImports = false, runtimeGlobalName = `Vue`, runtimeModuleName = `vue`, ssrRuntimeModuleName = 'vue/server-renderer', ssr = false, isTS = false, inSSR = false }) {\r\n const context = {\r\n mode,\r\n prefixIdentifiers,\r\n sourceMap,\r\n filename,\r\n scopeId,\r\n optimizeImports,\r\n runtimeGlobalName,\r\n runtimeModuleName,\r\n ssrRuntimeModuleName,\r\n ssr,\r\n isTS,\r\n inSSR,\r\n source: ast.loc.source,\r\n code: ``,\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n indentLevel: 0,\r\n pure: false,\r\n map: undefined,\r\n helper(key) {\r\n return `_${helperNameMap[key]}`;\r\n },\r\n push(code, node) {\r\n context.code += code;\r\n },\r\n indent() {\r\n newline(++context.indentLevel);\r\n },\r\n deindent(withoutNewLine = false) {\r\n if (withoutNewLine) {\r\n --context.indentLevel;\r\n }\r\n else {\r\n newline(--context.indentLevel);\r\n }\r\n },\r\n newline() {\r\n newline(context.indentLevel);\r\n }\r\n };\r\n function newline(n) {\r\n context.push('\\n' + ` `.repeat(n));\r\n }\r\n return context;\r\n}\r\nfunction generate(ast, options = {}) {\r\n const context = createCodegenContext(ast, options);\r\n if (options.onContextCreated)\r\n options.onContextCreated(context);\r\n const { mode, push, prefixIdentifiers, indent, deindent, newline, scopeId, ssr } = context;\r\n const hasHelpers = ast.helpers.length > 0;\r\n const useWithBlock = !prefixIdentifiers && mode !== 'module';\r\n // preambles\r\n // in setup() inline mode, the preamble is generated in a sub context\r\n // and returned separately.\r\n const preambleContext = context;\r\n {\r\n genFunctionPreamble(ast, preambleContext);\r\n }\r\n // enter render function\r\n const functionName = ssr ? `ssrRender` : `render`;\r\n const args = ssr ? ['_ctx', '_push', '_parent', '_attrs'] : ['_ctx', '_cache'];\r\n const signature = args.join(', ');\r\n {\r\n push(`function ${functionName}(${signature}) {`);\r\n }\r\n indent();\r\n if (useWithBlock) {\r\n push(`with (_ctx) {`);\r\n indent();\r\n // function mode const declarations should be inside with block\r\n // also they should be renamed to avoid collision with user properties\r\n if (hasHelpers) {\r\n push(`const { ${ast.helpers\r\n .map(s => `${helperNameMap[s]}: _${helperNameMap[s]}`)\r\n .join(', ')} } = _Vue`);\r\n push(`\\n`);\r\n newline();\r\n }\r\n }\r\n // generate asset resolution statements\r\n if (ast.components.length) {\r\n genAssets(ast.components, 'component', context);\r\n if (ast.directives.length || ast.temps > 0) {\r\n newline();\r\n }\r\n }\r\n if (ast.directives.length) {\r\n genAssets(ast.directives, 'directive', context);\r\n if (ast.temps > 0) {\r\n newline();\r\n }\r\n }\r\n if (ast.filters && ast.filters.length) {\r\n newline();\r\n genAssets(ast.filters, 'filter', context);\r\n newline();\r\n }\r\n if (ast.temps > 0) {\r\n push(`let `);\r\n for (let i = 0; i < ast.temps; i++) {\r\n push(`${i > 0 ? `, ` : ``}_temp${i}`);\r\n }\r\n }\r\n if (ast.components.length || ast.directives.length || ast.temps) {\r\n push(`\\n`);\r\n newline();\r\n }\r\n // generate the VNode tree expression\r\n if (!ssr) {\r\n push(`return `);\r\n }\r\n if (ast.codegenNode) {\r\n genNode(ast.codegenNode, context);\r\n }\r\n else {\r\n push(`null`);\r\n }\r\n if (useWithBlock) {\r\n deindent();\r\n push(`}`);\r\n }\r\n deindent();\r\n push(`}`);\r\n return {\r\n ast,\r\n code: context.code,\r\n preamble: ``,\r\n // SourceMapGenerator does have toJSON() method but it's not in the types\r\n map: context.map ? context.map.toJSON() : undefined\r\n };\r\n}\r\nfunction genFunctionPreamble(ast, context) {\r\n const { ssr, prefixIdentifiers, push, newline, runtimeModuleName, runtimeGlobalName, ssrRuntimeModuleName } = context;\r\n const VueBinding = runtimeGlobalName;\r\n const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;\r\n // Generate const declaration for helpers\r\n // In prefix mode, we place the const declaration at top so it's done\r\n // only once; But if we not prefixing, we place the declaration inside the\r\n // with block so it doesn't incur the `in` check cost for every helper access.\r\n if (ast.helpers.length > 0) {\r\n {\r\n // \"with\" mode.\r\n // save Vue in a separate variable to avoid collision\r\n push(`const _Vue = ${VueBinding}\\n`);\r\n // in \"with\" mode, helpers are declared inside the with block to avoid\r\n // has check cost, but hoists are lifted out of the function - we need\r\n // to provide the helper here.\r\n if (ast.hoists.length) {\r\n const staticHelpers = [\r\n CREATE_VNODE,\r\n CREATE_ELEMENT_VNODE,\r\n CREATE_COMMENT,\r\n CREATE_TEXT,\r\n CREATE_STATIC\r\n ]\r\n .filter(helper => ast.helpers.includes(helper))\r\n .map(aliasHelper)\r\n .join(', ');\r\n push(`const { ${staticHelpers} } = _Vue\\n`);\r\n }\r\n }\r\n }\r\n genHoists(ast.hoists, context);\r\n newline();\r\n push(`return `);\r\n}\r\nfunction genAssets(assets, type, { helper, push, newline, isTS }) {\r\n const resolver = helper(type === 'filter'\r\n ? RESOLVE_FILTER\r\n : type === 'component'\r\n ? RESOLVE_COMPONENT\r\n : RESOLVE_DIRECTIVE);\r\n for (let i = 0; i < assets.length; i++) {\r\n let id = assets[i];\r\n // potential component implicit self-reference inferred from SFC filename\r\n const maybeSelfReference = id.endsWith('__self');\r\n if (maybeSelfReference) {\r\n id = id.slice(0, -6);\r\n }\r\n push(`const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`);\r\n if (i < assets.length - 1) {\r\n newline();\r\n }\r\n }\r\n}\r\nfunction genHoists(hoists, context) {\r\n if (!hoists.length) {\r\n return;\r\n }\r\n context.pure = true;\r\n const { push, newline, helper, scopeId, mode } = context;\r\n newline();\r\n for (let i = 0; i < hoists.length; i++) {\r\n const exp = hoists[i];\r\n if (exp) {\r\n push(`const _hoisted_${i + 1} = ${``}`);\r\n genNode(exp, context);\r\n newline();\r\n }\r\n }\r\n context.pure = false;\r\n}\r\nfunction isText$1(n) {\r\n return (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(n) ||\r\n n.type === 4 /* SIMPLE_EXPRESSION */ ||\r\n n.type === 2 /* TEXT */ ||\r\n n.type === 5 /* INTERPOLATION */ ||\r\n n.type === 8 /* COMPOUND_EXPRESSION */);\r\n}\r\nfunction genNodeListAsArray(nodes, context) {\r\n const multilines = nodes.length > 3 ||\r\n ((( true)) && nodes.some(n => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(n) || !isText$1(n)));\r\n context.push(`[`);\r\n multilines && context.indent();\r\n genNodeList(nodes, context, multilines);\r\n multilines && context.deindent();\r\n context.push(`]`);\r\n}\r\nfunction genNodeList(nodes, context, multilines = false, comma = true) {\r\n const { push, newline } = context;\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(node)) {\r\n push(node);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(node)) {\r\n genNodeListAsArray(node, context);\r\n }\r\n else {\r\n genNode(node, context);\r\n }\r\n if (i < nodes.length - 1) {\r\n if (multilines) {\r\n comma && push(',');\r\n newline();\r\n }\r\n else {\r\n comma && push(', ');\r\n }\r\n }\r\n }\r\n}\r\nfunction genNode(node, context) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(node)) {\r\n context.push(node);\r\n return;\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isSymbol\"])(node)) {\r\n context.push(context.helper(node));\r\n return;\r\n }\r\n switch (node.type) {\r\n case 1 /* ELEMENT */:\r\n case 9 /* IF */:\r\n case 11 /* FOR */:\r\n ( true) &&\r\n assert(node.codegenNode != null, `Codegen node is missing for element/if/for node. ` +\r\n `Apply appropriate transforms first.`);\r\n genNode(node.codegenNode, context);\r\n break;\r\n case 2 /* TEXT */:\r\n genText(node, context);\r\n break;\r\n case 4 /* SIMPLE_EXPRESSION */:\r\n genExpression(node, context);\r\n break;\r\n case 5 /* INTERPOLATION */:\r\n genInterpolation(node, context);\r\n break;\r\n case 12 /* TEXT_CALL */:\r\n genNode(node.codegenNode, context);\r\n break;\r\n case 8 /* COMPOUND_EXPRESSION */:\r\n genCompoundExpression(node, context);\r\n break;\r\n case 3 /* COMMENT */:\r\n genComment(node, context);\r\n break;\r\n case 13 /* VNODE_CALL */:\r\n genVNodeCall(node, context);\r\n break;\r\n case 14 /* JS_CALL_EXPRESSION */:\r\n genCallExpression(node, context);\r\n break;\r\n case 15 /* JS_OBJECT_EXPRESSION */:\r\n genObjectExpression(node, context);\r\n break;\r\n case 17 /* JS_ARRAY_EXPRESSION */:\r\n genArrayExpression(node, context);\r\n break;\r\n case 18 /* JS_FUNCTION_EXPRESSION */:\r\n genFunctionExpression(node, context);\r\n break;\r\n case 19 /* JS_CONDITIONAL_EXPRESSION */:\r\n genConditionalExpression(node, context);\r\n break;\r\n case 20 /* JS_CACHE_EXPRESSION */:\r\n genCacheExpression(node, context);\r\n break;\r\n case 21 /* JS_BLOCK_STATEMENT */:\r\n genNodeList(node.body, context, true, false);\r\n break;\r\n // SSR only types\r\n case 22 /* JS_TEMPLATE_LITERAL */:\r\n break;\r\n case 23 /* JS_IF_STATEMENT */:\r\n break;\r\n case 24 /* JS_ASSIGNMENT_EXPRESSION */:\r\n break;\r\n case 25 /* JS_SEQUENCE_EXPRESSION */:\r\n break;\r\n case 26 /* JS_RETURN_STATEMENT */:\r\n break;\r\n /* istanbul ignore next */\r\n case 10 /* IF_BRANCH */:\r\n // noop\r\n break;\r\n default:\r\n if ((true)) {\r\n assert(false, `unhandled codegen node type: ${node.type}`);\r\n // make sure we exhaust all possible types\r\n const exhaustiveCheck = node;\r\n return exhaustiveCheck;\r\n }\r\n }\r\n}\r\nfunction genText(node, context) {\r\n context.push(JSON.stringify(node.content), node);\r\n}\r\nfunction genExpression(node, context) {\r\n const { content, isStatic } = node;\r\n context.push(isStatic ? JSON.stringify(content) : content, node);\r\n}\r\nfunction genInterpolation(node, context) {\r\n const { push, helper, pure } = context;\r\n if (pure)\r\n push(PURE_ANNOTATION);\r\n push(`${helper(TO_DISPLAY_STRING)}(`);\r\n genNode(node.content, context);\r\n push(`)`);\r\n}\r\nfunction genCompoundExpression(node, context) {\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(child)) {\r\n context.push(child);\r\n }\r\n else {\r\n genNode(child, context);\r\n }\r\n }\r\n}\r\nfunction genExpressionAsPropertyKey(node, context) {\r\n const { push } = context;\r\n if (node.type === 8 /* COMPOUND_EXPRESSION */) {\r\n push(`[`);\r\n genCompoundExpression(node, context);\r\n push(`]`);\r\n }\r\n else if (node.isStatic) {\r\n // only quote keys if necessary\r\n const text = isSimpleIdentifier(node.content)\r\n ? node.content\r\n : JSON.stringify(node.content);\r\n push(text, node);\r\n }\r\n else {\r\n push(`[${node.content}]`, node);\r\n }\r\n}\r\nfunction genComment(node, context) {\r\n const { push, helper, pure } = context;\r\n if (pure) {\r\n push(PURE_ANNOTATION);\r\n }\r\n push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node);\r\n}\r\nfunction genVNodeCall(node, context) {\r\n const { push, helper, pure } = context;\r\n const { tag, props, children, patchFlag, dynamicProps, directives, isBlock, disableTracking, isComponent } = node;\r\n if (directives) {\r\n push(helper(WITH_DIRECTIVES) + `(`);\r\n }\r\n if (isBlock) {\r\n push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);\r\n }\r\n if (pure) {\r\n push(PURE_ANNOTATION);\r\n }\r\n const callHelper = isBlock\r\n ? getVNodeBlockHelper(context.inSSR, isComponent)\r\n : getVNodeHelper(context.inSSR, isComponent);\r\n push(helper(callHelper) + `(`, node);\r\n genNodeList(genNullableArgs([tag, props, children, patchFlag, dynamicProps]), context);\r\n push(`)`);\r\n if (isBlock) {\r\n push(`)`);\r\n }\r\n if (directives) {\r\n push(`, `);\r\n genNode(directives, context);\r\n push(`)`);\r\n }\r\n}\r\nfunction genNullableArgs(args) {\r\n let i = args.length;\r\n while (i--) {\r\n if (args[i] != null)\r\n break;\r\n }\r\n return args.slice(0, i + 1).map(arg => arg || `null`);\r\n}\r\n// JavaScript\r\nfunction genCallExpression(node, context) {\r\n const { push, helper, pure } = context;\r\n const callee = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(node.callee) ? node.callee : helper(node.callee);\r\n if (pure) {\r\n push(PURE_ANNOTATION);\r\n }\r\n push(callee + `(`, node);\r\n genNodeList(node.arguments, context);\r\n push(`)`);\r\n}\r\nfunction genObjectExpression(node, context) {\r\n const { push, indent, deindent, newline } = context;\r\n const { properties } = node;\r\n if (!properties.length) {\r\n push(`{}`, node);\r\n return;\r\n }\r\n const multilines = properties.length > 1 ||\r\n ((( true)) &&\r\n properties.some(p => p.value.type !== 4 /* SIMPLE_EXPRESSION */));\r\n push(multilines ? `{` : `{ `);\r\n multilines && indent();\r\n for (let i = 0; i < properties.length; i++) {\r\n const { key, value } = properties[i];\r\n // key\r\n genExpressionAsPropertyKey(key, context);\r\n push(`: `);\r\n // value\r\n genNode(value, context);\r\n if (i < properties.length - 1) {\r\n // will only reach this if it's multilines\r\n push(`,`);\r\n newline();\r\n }\r\n }\r\n multilines && deindent();\r\n push(multilines ? `}` : ` }`);\r\n}\r\nfunction genArrayExpression(node, context) {\r\n genNodeListAsArray(node.elements, context);\r\n}\r\nfunction genFunctionExpression(node, context) {\r\n const { push, indent, deindent } = context;\r\n const { params, returns, body, newline, isSlot } = node;\r\n if (isSlot) {\r\n // wrap slot functions with owner context\r\n push(`_${helperNameMap[WITH_CTX]}(`);\r\n }\r\n push(`(`, node);\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(params)) {\r\n genNodeList(params, context);\r\n }\r\n else if (params) {\r\n genNode(params, context);\r\n }\r\n push(`) => `);\r\n if (newline || body) {\r\n push(`{`);\r\n indent();\r\n }\r\n if (returns) {\r\n if (newline) {\r\n push(`return `);\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(returns)) {\r\n genNodeListAsArray(returns, context);\r\n }\r\n else {\r\n genNode(returns, context);\r\n }\r\n }\r\n else if (body) {\r\n genNode(body, context);\r\n }\r\n if (newline || body) {\r\n deindent();\r\n push(`}`);\r\n }\r\n if (isSlot) {\r\n if (node.isNonScopedSlot) {\r\n push(`, undefined, true`);\r\n }\r\n push(`)`);\r\n }\r\n}\r\nfunction genConditionalExpression(node, context) {\r\n const { test, consequent, alternate, newline: needNewline } = node;\r\n const { push, indent, deindent, newline } = context;\r\n if (test.type === 4 /* SIMPLE_EXPRESSION */) {\r\n const needsParens = !isSimpleIdentifier(test.content);\r\n needsParens && push(`(`);\r\n genExpression(test, context);\r\n needsParens && push(`)`);\r\n }\r\n else {\r\n push(`(`);\r\n genNode(test, context);\r\n push(`)`);\r\n }\r\n needNewline && indent();\r\n context.indentLevel++;\r\n needNewline || push(` `);\r\n push(`? `);\r\n genNode(consequent, context);\r\n context.indentLevel--;\r\n needNewline && newline();\r\n needNewline || push(` `);\r\n push(`: `);\r\n const isNested = alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */;\r\n if (!isNested) {\r\n context.indentLevel++;\r\n }\r\n genNode(alternate, context);\r\n if (!isNested) {\r\n context.indentLevel--;\r\n }\r\n needNewline && deindent(true /* without newline */);\r\n}\r\nfunction genCacheExpression(node, context) {\r\n const { push, helper, indent, deindent, newline } = context;\r\n push(`_cache[${node.index}] || (`);\r\n if (node.isVNode) {\r\n indent();\r\n push(`${helper(SET_BLOCK_TRACKING)}(-1),`);\r\n newline();\r\n }\r\n push(`_cache[${node.index}] = `);\r\n genNode(node.value, context);\r\n if (node.isVNode) {\r\n push(`,`);\r\n newline();\r\n push(`${helper(SET_BLOCK_TRACKING)}(1),`);\r\n newline();\r\n push(`_cache[${node.index}]`);\r\n deindent();\r\n }\r\n push(`)`);\r\n}\n\nfunction walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = Object.create(null)) {\r\n {\r\n return;\r\n }\r\n}\r\nfunction isReferencedIdentifier(id, parent, parentStack) {\r\n {\r\n return false;\r\n }\r\n}\r\nfunction isInDestructureAssignment(parent, parentStack) {\r\n if (parent &&\r\n (parent.type === 'ObjectProperty' || parent.type === 'ArrayPattern')) {\r\n let i = parentStack.length;\r\n while (i--) {\r\n const p = parentStack[i];\r\n if (p.type === 'AssignmentExpression') {\r\n return true;\r\n }\r\n else if (p.type !== 'ObjectProperty' && !p.type.endsWith('Pattern')) {\r\n break;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction walkFunctionParams(node, onIdent) {\r\n for (const p of node.params) {\r\n for (const id of extractIdentifiers(p)) {\r\n onIdent(id);\r\n }\r\n }\r\n}\r\nfunction walkBlockDeclarations(block, onIdent) {\r\n for (const stmt of block.body) {\r\n if (stmt.type === 'VariableDeclaration') {\r\n if (stmt.declare)\r\n continue;\r\n for (const decl of stmt.declarations) {\r\n for (const id of extractIdentifiers(decl.id)) {\r\n onIdent(id);\r\n }\r\n }\r\n }\r\n else if (stmt.type === 'FunctionDeclaration' ||\r\n stmt.type === 'ClassDeclaration') {\r\n if (stmt.declare || !stmt.id)\r\n continue;\r\n onIdent(stmt.id);\r\n }\r\n }\r\n}\r\nfunction extractIdentifiers(param, nodes = []) {\r\n switch (param.type) {\r\n case 'Identifier':\r\n nodes.push(param);\r\n break;\r\n case 'MemberExpression':\r\n let object = param;\r\n while (object.type === 'MemberExpression') {\r\n object = object.object;\r\n }\r\n nodes.push(object);\r\n break;\r\n case 'ObjectPattern':\r\n for (const prop of param.properties) {\r\n if (prop.type === 'RestElement') {\r\n extractIdentifiers(prop.argument, nodes);\r\n }\r\n else {\r\n extractIdentifiers(prop.value, nodes);\r\n }\r\n }\r\n break;\r\n case 'ArrayPattern':\r\n param.elements.forEach(element => {\r\n if (element)\r\n extractIdentifiers(element, nodes);\r\n });\r\n break;\r\n case 'RestElement':\r\n extractIdentifiers(param.argument, nodes);\r\n break;\r\n case 'AssignmentPattern':\r\n extractIdentifiers(param.left, nodes);\r\n break;\r\n }\r\n return nodes;\r\n}\r\nconst isFunctionType = (node) => {\r\n return /Function(?:Expression|Declaration)$|Method$/.test(node.type);\r\n};\r\nconst isStaticProperty = (node) => node &&\r\n (node.type === 'ObjectProperty' || node.type === 'ObjectMethod') &&\r\n !node.computed;\r\nconst isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;\n\n// these keywords should not appear inside expressions, but operators like\r\n// typeof, instanceof and in are allowed\r\nconst prohibitedKeywordRE = new RegExp('\\\\b' +\r\n ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\r\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\r\n 'extends,finally,continue,debugger,function,arguments,typeof,void')\r\n .split(',')\r\n .join('\\\\b|\\\\b') +\r\n '\\\\b');\r\n// strip strings in expressions\r\nconst stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\r\n/**\r\n * Validate a non-prefixed expression.\r\n * This is only called when using the in-browser runtime compiler since it\r\n * doesn't prefix expressions.\r\n */\r\nfunction validateBrowserExpression(node, context, asParams = false, asRawStatements = false) {\r\n const exp = node.content;\r\n // empty expressions are validated per-directive since some directives\r\n // do allow empty expressions.\r\n if (!exp.trim()) {\r\n return;\r\n }\r\n try {\r\n new Function(asRawStatements\r\n ? ` ${exp} `\r\n : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}`);\r\n }\r\n catch (e) {\r\n let message = e.message;\r\n const keywordMatch = exp\r\n .replace(stripStringRE, '')\r\n .match(prohibitedKeywordRE);\r\n if (keywordMatch) {\r\n message = `avoid using JavaScript keyword as property name: \"${keywordMatch[0]}\"`;\r\n }\r\n context.onError(createCompilerError(44 /* X_INVALID_EXPRESSION */, node.loc, undefined, message));\r\n }\r\n}\n\nconst transformExpression = (node, context) => {\r\n if (node.type === 5 /* INTERPOLATION */) {\r\n node.content = processExpression(node.content, context);\r\n }\r\n else if (node.type === 1 /* ELEMENT */) {\r\n // handle directives on element\r\n for (let i = 0; i < node.props.length; i++) {\r\n const dir = node.props[i];\r\n // do not process for v-on & v-for since they are special handled\r\n if (dir.type === 7 /* DIRECTIVE */ && dir.name !== 'for') {\r\n const exp = dir.exp;\r\n const arg = dir.arg;\r\n // do not process exp if this is v-on:arg - we need special handling\r\n // for wrapping inline statements.\r\n if (exp &&\r\n exp.type === 4 /* SIMPLE_EXPRESSION */ &&\r\n !(dir.name === 'on' && arg)) {\r\n dir.exp = processExpression(exp, context, \r\n // slot args must be processed as function params\r\n dir.name === 'slot');\r\n }\r\n if (arg && arg.type === 4 /* SIMPLE_EXPRESSION */ && !arg.isStatic) {\r\n dir.arg = processExpression(arg, context);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n// Important: since this function uses Node.js only dependencies, it should\r\n// always be used with a leading !true check so that it can be\r\n// tree-shaken from the browser build.\r\nfunction processExpression(node, context, \r\n// some expressions like v-slot props & v-for aliases should be parsed as\r\n// function params\r\nasParams = false, \r\n// v-on handler values may contain multiple statements\r\nasRawStatements = false, localVars = Object.create(context.identifiers)) {\r\n {\r\n if ((true)) {\r\n // simple in-browser validation (same logic in 2.x)\r\n validateBrowserExpression(node, context, asParams, asRawStatements);\r\n }\r\n return node;\r\n }\r\n}\n\nconst transformIf = createStructuralDirectiveTransform(/^(if|else|else-if)$/, (node, dir, context) => {\r\n return processIf(node, dir, context, (ifNode, branch, isRoot) => {\r\n // #1587: We need to dynamically increment the key based on the current\r\n // node's sibling nodes, since chained v-if/else branches are\r\n // rendered at the same depth\r\n const siblings = context.parent.children;\r\n let i = siblings.indexOf(ifNode);\r\n let key = 0;\r\n while (i-- >= 0) {\r\n const sibling = siblings[i];\r\n if (sibling && sibling.type === 9 /* IF */) {\r\n key += sibling.branches.length;\r\n }\r\n }\r\n // Exit callback. Complete the codegenNode when all children have been\r\n // transformed.\r\n return () => {\r\n if (isRoot) {\r\n ifNode.codegenNode = createCodegenNodeForBranch(branch, key, context);\r\n }\r\n else {\r\n // attach this branch's codegen node to the v-if root.\r\n const parentCondition = getParentCondition(ifNode.codegenNode);\r\n parentCondition.alternate = createCodegenNodeForBranch(branch, key + ifNode.branches.length - 1, context);\r\n }\r\n };\r\n });\r\n});\r\n// target-agnostic transform used for both Client and SSR\r\nfunction processIf(node, dir, context, processCodegen) {\r\n if (dir.name !== 'else' &&\r\n (!dir.exp || !dir.exp.content.trim())) {\r\n const loc = dir.exp ? dir.exp.loc : node.loc;\r\n context.onError(createCompilerError(28 /* X_V_IF_NO_EXPRESSION */, dir.loc));\r\n dir.exp = createSimpleExpression(`true`, false, loc);\r\n }\r\n if ( true && dir.exp) {\r\n validateBrowserExpression(dir.exp, context);\r\n }\r\n if (dir.name === 'if') {\r\n const branch = createIfBranch(node, dir);\r\n const ifNode = {\r\n type: 9 /* IF */,\r\n loc: node.loc,\r\n branches: [branch]\r\n };\r\n context.replaceNode(ifNode);\r\n if (processCodegen) {\r\n return processCodegen(ifNode, branch, true);\r\n }\r\n }\r\n else {\r\n // locate the adjacent v-if\r\n const siblings = context.parent.children;\r\n const comments = [];\r\n let i = siblings.indexOf(node);\r\n while (i-- >= -1) {\r\n const sibling = siblings[i];\r\n if (( true) && sibling && sibling.type === 3 /* COMMENT */) {\r\n context.removeNode(sibling);\r\n comments.unshift(sibling);\r\n continue;\r\n }\r\n if (sibling &&\r\n sibling.type === 2 /* TEXT */ &&\r\n !sibling.content.trim().length) {\r\n context.removeNode(sibling);\r\n continue;\r\n }\r\n if (sibling && sibling.type === 9 /* IF */) {\r\n // Check if v-else was followed by v-else-if\r\n if (dir.name === 'else-if' &&\r\n sibling.branches[sibling.branches.length - 1].condition === undefined) {\r\n context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, node.loc));\r\n }\r\n // move the node to the if node's branches\r\n context.removeNode();\r\n const branch = createIfBranch(node, dir);\r\n if (( true) &&\r\n comments.length &&\r\n // #3619 ignore comments if the v-if is direct child of <transition>\r\n !(context.parent &&\r\n context.parent.type === 1 /* ELEMENT */ &&\r\n isBuiltInType(context.parent.tag, 'transition'))) {\r\n branch.children = [...comments, ...branch.children];\r\n }\r\n // check if user is forcing same key on different branches\r\n if (true) {\r\n const key = branch.userKey;\r\n if (key) {\r\n sibling.branches.forEach(({ userKey }) => {\r\n if (isSameKey(userKey, key)) {\r\n context.onError(createCompilerError(29 /* X_V_IF_SAME_KEY */, branch.userKey.loc));\r\n }\r\n });\r\n }\r\n }\r\n sibling.branches.push(branch);\r\n const onExit = processCodegen && processCodegen(sibling, branch, false);\r\n // since the branch was removed, it will not be traversed.\r\n // make sure to traverse here.\r\n traverseNode(branch, context);\r\n // call on exit\r\n if (onExit)\r\n onExit();\r\n // make sure to reset currentNode after traversal to indicate this\r\n // node has been removed.\r\n context.currentNode = null;\r\n }\r\n else {\r\n context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, node.loc));\r\n }\r\n break;\r\n }\r\n }\r\n}\r\nfunction createIfBranch(node, dir) {\r\n return {\r\n type: 10 /* IF_BRANCH */,\r\n loc: node.loc,\r\n condition: dir.name === 'else' ? undefined : dir.exp,\r\n children: node.tagType === 3 /* TEMPLATE */ && !findDir(node, 'for')\r\n ? node.children\r\n : [node],\r\n userKey: findProp(node, `key`)\r\n };\r\n}\r\nfunction createCodegenNodeForBranch(branch, keyIndex, context) {\r\n if (branch.condition) {\r\n return createConditionalExpression(branch.condition, createChildrenCodegenNode(branch, keyIndex, context), \r\n // make sure to pass in asBlock: true so that the comment node call\r\n // closes the current block.\r\n createCallExpression(context.helper(CREATE_COMMENT), [\r\n ( true) ? '\"v-if\"' : undefined,\r\n 'true'\r\n ]));\r\n }\r\n else {\r\n return createChildrenCodegenNode(branch, keyIndex, context);\r\n }\r\n}\r\nfunction createChildrenCodegenNode(branch, keyIndex, context) {\r\n const { helper } = context;\r\n const keyProperty = createObjectProperty(`key`, createSimpleExpression(`${keyIndex}`, false, locStub, 2 /* CAN_HOIST */));\r\n const { children } = branch;\r\n const firstChild = children[0];\r\n const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1 /* ELEMENT */;\r\n if (needFragmentWrapper) {\r\n if (children.length === 1 && firstChild.type === 11 /* FOR */) {\r\n // optimize away nested fragments when child is a ForNode\r\n const vnodeCall = firstChild.codegenNode;\r\n injectProp(vnodeCall, keyProperty, context);\r\n return vnodeCall;\r\n }\r\n else {\r\n let patchFlag = 64 /* STABLE_FRAGMENT */;\r\n let patchFlagText = _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][64 /* STABLE_FRAGMENT */];\r\n // check if the fragment actually contains a single valid child with\r\n // the rest being comments\r\n if (( true) &&\r\n children.filter(c => c.type !== 3 /* COMMENT */).length === 1) {\r\n patchFlag |= 2048 /* DEV_ROOT_FRAGMENT */;\r\n patchFlagText += `, ${_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][2048 /* DEV_ROOT_FRAGMENT */]}`;\r\n }\r\n return createVNodeCall(context, helper(FRAGMENT), createObjectExpression([keyProperty]), children, patchFlag + (( true) ? ` /* ${patchFlagText} */` : undefined), undefined, undefined, true, false, false /* isComponent */, branch.loc);\r\n }\r\n }\r\n else {\r\n const ret = firstChild.codegenNode;\r\n const vnodeCall = getMemoedVNodeCall(ret);\r\n // Change createVNode to createBlock.\r\n if (vnodeCall.type === 13 /* VNODE_CALL */) {\r\n makeBlock(vnodeCall, context);\r\n }\r\n // inject branch key\r\n injectProp(vnodeCall, keyProperty, context);\r\n return ret;\r\n }\r\n}\r\nfunction isSameKey(a, b) {\r\n if (!a || a.type !== b.type) {\r\n return false;\r\n }\r\n if (a.type === 6 /* ATTRIBUTE */) {\r\n if (a.value.content !== b.value.content) {\r\n return false;\r\n }\r\n }\r\n else {\r\n // directive\r\n const exp = a.exp;\r\n const branchExp = b.exp;\r\n if (exp.type !== branchExp.type) {\r\n return false;\r\n }\r\n if (exp.type !== 4 /* SIMPLE_EXPRESSION */ ||\r\n exp.isStatic !== branchExp.isStatic ||\r\n exp.content !== branchExp.content) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction getParentCondition(node) {\r\n while (true) {\r\n if (node.type === 19 /* JS_CONDITIONAL_EXPRESSION */) {\r\n if (node.alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */) {\r\n node = node.alternate;\r\n }\r\n else {\r\n return node;\r\n }\r\n }\r\n else if (node.type === 20 /* JS_CACHE_EXPRESSION */) {\r\n node = node.value;\r\n }\r\n }\r\n}\n\nconst transformFor = createStructuralDirectiveTransform('for', (node, dir, context) => {\r\n const { helper, removeHelper } = context;\r\n return processFor(node, dir, context, forNode => {\r\n // create the loop render function expression now, and add the\r\n // iterator on exit after all children have been traversed\r\n const renderExp = createCallExpression(helper(RENDER_LIST), [\r\n forNode.source\r\n ]);\r\n const isTemplate = isTemplateNode(node);\r\n const memo = findDir(node, 'memo');\r\n const keyProp = findProp(node, `key`);\r\n const keyExp = keyProp &&\r\n (keyProp.type === 6 /* ATTRIBUTE */\r\n ? createSimpleExpression(keyProp.value.content, true)\r\n : keyProp.exp);\r\n const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;\r\n const isStableFragment = forNode.source.type === 4 /* SIMPLE_EXPRESSION */ &&\r\n forNode.source.constType > 0 /* NOT_CONSTANT */;\r\n const fragmentFlag = isStableFragment\r\n ? 64 /* STABLE_FRAGMENT */\r\n : keyProp\r\n ? 128 /* KEYED_FRAGMENT */\r\n : 256 /* UNKEYED_FRAGMENT */;\r\n forNode.codegenNode = createVNodeCall(context, helper(FRAGMENT), undefined, renderExp, fragmentFlag +\r\n (( true) ? ` /* ${_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][fragmentFlag]} */` : undefined), undefined, undefined, true /* isBlock */, !isStableFragment /* disableTracking */, false /* isComponent */, node.loc);\r\n return () => {\r\n // finish the codegen now that all children have been traversed\r\n let childBlock;\r\n const { children } = forNode;\r\n // check <template v-for> key placement\r\n if (( true) && isTemplate) {\r\n node.children.some(c => {\r\n if (c.type === 1 /* ELEMENT */) {\r\n const key = findProp(c, 'key');\r\n if (key) {\r\n context.onError(createCompilerError(33 /* X_V_FOR_TEMPLATE_KEY_PLACEMENT */, key.loc));\r\n return true;\r\n }\r\n }\r\n });\r\n }\r\n const needFragmentWrapper = children.length !== 1 || children[0].type !== 1 /* ELEMENT */;\r\n const slotOutlet = isSlotOutlet(node)\r\n ? node\r\n : isTemplate &&\r\n node.children.length === 1 &&\r\n isSlotOutlet(node.children[0])\r\n ? node.children[0] // api-extractor somehow fails to infer this\r\n : null;\r\n if (slotOutlet) {\r\n // <slot v-for=\"...\"> or <template v-for=\"...\"><slot/></template>\r\n childBlock = slotOutlet.codegenNode;\r\n if (isTemplate && keyProperty) {\r\n // <template v-for=\"...\" :key=\"...\"><slot/></template>\r\n // we need to inject the key to the renderSlot() call.\r\n // the props for renderSlot is passed as the 3rd argument.\r\n injectProp(childBlock, keyProperty, context);\r\n }\r\n }\r\n else if (needFragmentWrapper) {\r\n // <template v-for=\"...\"> with text or multi-elements\r\n // should generate a fragment block for each loop\r\n childBlock = createVNodeCall(context, helper(FRAGMENT), keyProperty ? createObjectExpression([keyProperty]) : undefined, node.children, 64 /* STABLE_FRAGMENT */ +\r\n (( true)\r\n ? ` /* ${_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][64 /* STABLE_FRAGMENT */]} */`\r\n : undefined), undefined, undefined, true, undefined, false /* isComponent */);\r\n }\r\n else {\r\n // Normal element v-for. Directly use the child's codegenNode\r\n // but mark it as a block.\r\n childBlock = children[0]\r\n .codegenNode;\r\n if (isTemplate && keyProperty) {\r\n injectProp(childBlock, keyProperty, context);\r\n }\r\n if (childBlock.isBlock !== !isStableFragment) {\r\n if (childBlock.isBlock) {\r\n // switch from block to vnode\r\n removeHelper(OPEN_BLOCK);\r\n removeHelper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));\r\n }\r\n else {\r\n // switch from vnode to block\r\n removeHelper(getVNodeHelper(context.inSSR, childBlock.isComponent));\r\n }\r\n }\r\n childBlock.isBlock = !isStableFragment;\r\n if (childBlock.isBlock) {\r\n helper(OPEN_BLOCK);\r\n helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));\r\n }\r\n else {\r\n helper(getVNodeHelper(context.inSSR, childBlock.isComponent));\r\n }\r\n }\r\n if (memo) {\r\n const loop = createFunctionExpression(createForLoopParams(forNode.parseResult, [\r\n createSimpleExpression(`_cached`)\r\n ]));\r\n loop.body = createBlockStatement([\r\n createCompoundExpression([`const _memo = (`, memo.exp, `)`]),\r\n createCompoundExpression([\r\n `if (_cached`,\r\n ...(keyExp ? [` && _cached.key === `, keyExp] : []),\r\n ` && ${context.helperString(IS_MEMO_SAME)}(_cached, _memo)) return _cached`\r\n ]),\r\n createCompoundExpression([`const _item = `, childBlock]),\r\n createSimpleExpression(`_item.memo = _memo`),\r\n createSimpleExpression(`return _item`)\r\n ]);\r\n renderExp.arguments.push(loop, createSimpleExpression(`_cache`), createSimpleExpression(String(context.cached++)));\r\n }\r\n else {\r\n renderExp.arguments.push(createFunctionExpression(createForLoopParams(forNode.parseResult), childBlock, true /* force newline */));\r\n }\r\n };\r\n });\r\n});\r\n// target-agnostic transform used for both Client and SSR\r\nfunction processFor(node, dir, context, processCodegen) {\r\n if (!dir.exp) {\r\n context.onError(createCompilerError(31 /* X_V_FOR_NO_EXPRESSION */, dir.loc));\r\n return;\r\n }\r\n const parseResult = parseForExpression(\r\n // can only be simple expression because vFor transform is applied\r\n // before expression transform.\r\n dir.exp, context);\r\n if (!parseResult) {\r\n context.onError(createCompilerError(32 /* X_V_FOR_MALFORMED_EXPRESSION */, dir.loc));\r\n return;\r\n }\r\n const { addIdentifiers, removeIdentifiers, scopes } = context;\r\n const { source, value, key, index } = parseResult;\r\n const forNode = {\r\n type: 11 /* FOR */,\r\n loc: dir.loc,\r\n source,\r\n valueAlias: value,\r\n keyAlias: key,\r\n objectIndexAlias: index,\r\n parseResult,\r\n children: isTemplateNode(node) ? node.children : [node]\r\n };\r\n context.replaceNode(forNode);\r\n // bookkeeping\r\n scopes.vFor++;\r\n const onExit = processCodegen && processCodegen(forNode);\r\n return () => {\r\n scopes.vFor--;\r\n if (onExit)\r\n onExit();\r\n };\r\n}\r\nconst forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\r\n// This regex doesn't cover the case if key or index aliases have destructuring,\r\n// but those do not make sense in the first place, so this works in practice.\r\nconst forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\r\nconst stripParensRE = /^\\(|\\)$/g;\r\nfunction parseForExpression(input, context) {\r\n const loc = input.loc;\r\n const exp = input.content;\r\n const inMatch = exp.match(forAliasRE);\r\n if (!inMatch)\r\n return;\r\n const [, LHS, RHS] = inMatch;\r\n const result = {\r\n source: createAliasExpression(loc, RHS.trim(), exp.indexOf(RHS, LHS.length)),\r\n value: undefined,\r\n key: undefined,\r\n index: undefined\r\n };\r\n if (true) {\r\n validateBrowserExpression(result.source, context);\r\n }\r\n let valueContent = LHS.trim().replace(stripParensRE, '').trim();\r\n const trimmedOffset = LHS.indexOf(valueContent);\r\n const iteratorMatch = valueContent.match(forIteratorRE);\r\n if (iteratorMatch) {\r\n valueContent = valueContent.replace(forIteratorRE, '').trim();\r\n const keyContent = iteratorMatch[1].trim();\r\n let keyOffset;\r\n if (keyContent) {\r\n keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);\r\n result.key = createAliasExpression(loc, keyContent, keyOffset);\r\n if (true) {\r\n validateBrowserExpression(result.key, context, true);\r\n }\r\n }\r\n if (iteratorMatch[2]) {\r\n const indexContent = iteratorMatch[2].trim();\r\n if (indexContent) {\r\n result.index = createAliasExpression(loc, indexContent, exp.indexOf(indexContent, result.key\r\n ? keyOffset + keyContent.length\r\n : trimmedOffset + valueContent.length));\r\n if (true) {\r\n validateBrowserExpression(result.index, context, true);\r\n }\r\n }\r\n }\r\n }\r\n if (valueContent) {\r\n result.value = createAliasExpression(loc, valueContent, trimmedOffset);\r\n if (true) {\r\n validateBrowserExpression(result.value, context, true);\r\n }\r\n }\r\n return result;\r\n}\r\nfunction createAliasExpression(range, content, offset) {\r\n return createSimpleExpression(content, false, getInnerRange(range, offset, content.length));\r\n}\r\nfunction createForLoopParams({ value, key, index }, memoArgs = []) {\r\n return createParamsList([value, key, index, ...memoArgs]);\r\n}\r\nfunction createParamsList(args) {\r\n let i = args.length;\r\n while (i--) {\r\n if (args[i])\r\n break;\r\n }\r\n return args\r\n .slice(0, i + 1)\r\n .map((arg, i) => arg || createSimpleExpression(`_`.repeat(i + 1), false));\r\n}\n\nconst defaultFallback = createSimpleExpression(`undefined`, false);\r\n// A NodeTransform that:\r\n// 1. Tracks scope identifiers for scoped slots so that they don't get prefixed\r\n// by transformExpression. This is only applied in non-browser builds with\r\n// { prefixIdentifiers: true }.\r\n// 2. Track v-slot depths so that we know a slot is inside another slot.\r\n// Note the exit callback is executed before buildSlots() on the same node,\r\n// so only nested slots see positive numbers.\r\nconst trackSlotScopes = (node, context) => {\r\n if (node.type === 1 /* ELEMENT */ &&\r\n (node.tagType === 1 /* COMPONENT */ ||\r\n node.tagType === 3 /* TEMPLATE */)) {\r\n // We are only checking non-empty v-slot here\r\n // since we only care about slots that introduce scope variables.\r\n const vSlot = findDir(node, 'slot');\r\n if (vSlot) {\r\n vSlot.exp;\r\n context.scopes.vSlot++;\r\n return () => {\r\n context.scopes.vSlot--;\r\n };\r\n }\r\n }\r\n};\r\n// A NodeTransform that tracks scope identifiers for scoped slots with v-for.\r\n// This transform is only applied in non-browser builds with { prefixIdentifiers: true }\r\nconst trackVForSlotScopes = (node, context) => {\r\n let vFor;\r\n if (isTemplateNode(node) &&\r\n node.props.some(isVSlot) &&\r\n (vFor = findDir(node, 'for'))) {\r\n const result = (vFor.parseResult = parseForExpression(vFor.exp, context));\r\n if (result) {\r\n const { value, key, index } = result;\r\n const { addIdentifiers, removeIdentifiers } = context;\r\n value && addIdentifiers(value);\r\n key && addIdentifiers(key);\r\n index && addIdentifiers(index);\r\n return () => {\r\n value && removeIdentifiers(value);\r\n key && removeIdentifiers(key);\r\n index && removeIdentifiers(index);\r\n };\r\n }\r\n }\r\n};\r\nconst buildClientSlotFn = (props, children, loc) => createFunctionExpression(props, children, false /* newline */, true /* isSlot */, children.length ? children[0].loc : loc);\r\n// Instead of being a DirectiveTransform, v-slot processing is called during\r\n// transformElement to build the slots object for a component.\r\nfunction buildSlots(node, context, buildSlotFn = buildClientSlotFn) {\r\n context.helper(WITH_CTX);\r\n const { children, loc } = node;\r\n const slotsProperties = [];\r\n const dynamicSlots = [];\r\n // If the slot is inside a v-for or another v-slot, force it to be dynamic\r\n // since it likely uses a scope variable.\r\n let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;\r\n // 1. Check for slot with slotProps on component itself.\r\n // <Comp v-slot=\"{ prop }\"/>\r\n const onComponentSlot = findDir(node, 'slot', true);\r\n if (onComponentSlot) {\r\n const { arg, exp } = onComponentSlot;\r\n if (arg && !isStaticExp(arg)) {\r\n hasDynamicSlots = true;\r\n }\r\n slotsProperties.push(createObjectProperty(arg || createSimpleExpression('default', true), buildSlotFn(exp, children, loc)));\r\n }\r\n // 2. Iterate through children and check for template slots\r\n // <template v-slot:foo=\"{ prop }\">\r\n let hasTemplateSlots = false;\r\n let hasNamedDefaultSlot = false;\r\n const implicitDefaultChildren = [];\r\n const seenSlotNames = new Set();\r\n for (let i = 0; i < children.length; i++) {\r\n const slotElement = children[i];\r\n let slotDir;\r\n if (!isTemplateNode(slotElement) ||\r\n !(slotDir = findDir(slotElement, 'slot', true))) {\r\n // not a <template v-slot>, skip.\r\n if (slotElement.type !== 3 /* COMMENT */) {\r\n implicitDefaultChildren.push(slotElement);\r\n }\r\n continue;\r\n }\r\n if (onComponentSlot) {\r\n // already has on-component slot - this is incorrect usage.\r\n context.onError(createCompilerError(37 /* X_V_SLOT_MIXED_SLOT_USAGE */, slotDir.loc));\r\n break;\r\n }\r\n hasTemplateSlots = true;\r\n const { children: slotChildren, loc: slotLoc } = slotElement;\r\n const { arg: slotName = createSimpleExpression(`default`, true), exp: slotProps, loc: dirLoc } = slotDir;\r\n // check if name is dynamic.\r\n let staticSlotName;\r\n if (isStaticExp(slotName)) {\r\n staticSlotName = slotName ? slotName.content : `default`;\r\n }\r\n else {\r\n hasDynamicSlots = true;\r\n }\r\n const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc);\r\n // check if this slot is conditional (v-if/v-for)\r\n let vIf;\r\n let vElse;\r\n let vFor;\r\n if ((vIf = findDir(slotElement, 'if'))) {\r\n hasDynamicSlots = true;\r\n dynamicSlots.push(createConditionalExpression(vIf.exp, buildDynamicSlot(slotName, slotFunction), defaultFallback));\r\n }\r\n else if ((vElse = findDir(slotElement, /^else(-if)?$/, true /* allowEmpty */))) {\r\n // find adjacent v-if\r\n let j = i;\r\n let prev;\r\n while (j--) {\r\n prev = children[j];\r\n if (prev.type !== 3 /* COMMENT */) {\r\n break;\r\n }\r\n }\r\n if (prev && isTemplateNode(prev) && findDir(prev, 'if')) {\r\n // remove node\r\n children.splice(i, 1);\r\n i--;\r\n // attach this slot to previous conditional\r\n let conditional = dynamicSlots[dynamicSlots.length - 1];\r\n while (conditional.alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */) {\r\n conditional = conditional.alternate;\r\n }\r\n conditional.alternate = vElse.exp\r\n ? createConditionalExpression(vElse.exp, buildDynamicSlot(slotName, slotFunction), defaultFallback)\r\n : buildDynamicSlot(slotName, slotFunction);\r\n }\r\n else {\r\n context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, vElse.loc));\r\n }\r\n }\r\n else if ((vFor = findDir(slotElement, 'for'))) {\r\n hasDynamicSlots = true;\r\n const parseResult = vFor.parseResult ||\r\n parseForExpression(vFor.exp, context);\r\n if (parseResult) {\r\n // Render the dynamic slots as an array and add it to the createSlot()\r\n // args. The runtime knows how to handle it appropriately.\r\n dynamicSlots.push(createCallExpression(context.helper(RENDER_LIST), [\r\n parseResult.source,\r\n createFunctionExpression(createForLoopParams(parseResult), buildDynamicSlot(slotName, slotFunction), true /* force newline */)\r\n ]));\r\n }\r\n else {\r\n context.onError(createCompilerError(32 /* X_V_FOR_MALFORMED_EXPRESSION */, vFor.loc));\r\n }\r\n }\r\n else {\r\n // check duplicate static names\r\n if (staticSlotName) {\r\n if (seenSlotNames.has(staticSlotName)) {\r\n context.onError(createCompilerError(38 /* X_V_SLOT_DUPLICATE_SLOT_NAMES */, dirLoc));\r\n continue;\r\n }\r\n seenSlotNames.add(staticSlotName);\r\n if (staticSlotName === 'default') {\r\n hasNamedDefaultSlot = true;\r\n }\r\n }\r\n slotsProperties.push(createObjectProperty(slotName, slotFunction));\r\n }\r\n }\r\n if (!onComponentSlot) {\r\n const buildDefaultSlotProperty = (props, children) => {\r\n const fn = buildSlotFn(props, children, loc);\r\n if (context.compatConfig) {\r\n fn.isNonScopedSlot = true;\r\n }\r\n return createObjectProperty(`default`, fn);\r\n };\r\n if (!hasTemplateSlots) {\r\n // implicit default slot (on component)\r\n slotsProperties.push(buildDefaultSlotProperty(undefined, children));\r\n }\r\n else if (implicitDefaultChildren.length &&\r\n // #3766\r\n // with whitespace: 'preserve', whitespaces between slots will end up in\r\n // implicitDefaultChildren. Ignore if all implicit children are whitespaces.\r\n implicitDefaultChildren.some(node => isNonWhitespaceContent(node))) {\r\n // implicit default slot (mixed with named slots)\r\n if (hasNamedDefaultSlot) {\r\n context.onError(createCompilerError(39 /* X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN */, implicitDefaultChildren[0].loc));\r\n }\r\n else {\r\n slotsProperties.push(buildDefaultSlotProperty(undefined, implicitDefaultChildren));\r\n }\r\n }\r\n }\r\n const slotFlag = hasDynamicSlots\r\n ? 2 /* DYNAMIC */\r\n : hasForwardedSlots(node.children)\r\n ? 3 /* FORWARDED */\r\n : 1 /* STABLE */;\r\n let slots = createObjectExpression(slotsProperties.concat(createObjectProperty(`_`, \r\n // 2 = compiled but dynamic = can skip normalization, but must run diff\r\n // 1 = compiled and static = can skip normalization AND diff as optimized\r\n createSimpleExpression(slotFlag + (( true) ? ` /* ${_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"slotFlagsText\"][slotFlag]} */` : undefined), false))), loc);\r\n if (dynamicSlots.length) {\r\n slots = createCallExpression(context.helper(CREATE_SLOTS), [\r\n slots,\r\n createArrayExpression(dynamicSlots)\r\n ]);\r\n }\r\n return {\r\n slots,\r\n hasDynamicSlots\r\n };\r\n}\r\nfunction buildDynamicSlot(name, fn) {\r\n return createObjectExpression([\r\n createObjectProperty(`name`, name),\r\n createObjectProperty(`fn`, fn)\r\n ]);\r\n}\r\nfunction hasForwardedSlots(children) {\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n switch (child.type) {\r\n case 1 /* ELEMENT */:\r\n if (child.tagType === 2 /* SLOT */ ||\r\n hasForwardedSlots(child.children)) {\r\n return true;\r\n }\r\n break;\r\n case 9 /* IF */:\r\n if (hasForwardedSlots(child.branches))\r\n return true;\r\n break;\r\n case 10 /* IF_BRANCH */:\r\n case 11 /* FOR */:\r\n if (hasForwardedSlots(child.children))\r\n return true;\r\n break;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction isNonWhitespaceContent(node) {\r\n if (node.type !== 2 /* TEXT */ && node.type !== 12 /* TEXT_CALL */)\r\n return true;\r\n return node.type === 2 /* TEXT */\r\n ? !!node.content.trim()\r\n : isNonWhitespaceContent(node.content);\r\n}\n\n// some directive transforms (e.g. v-model) may return a symbol for runtime\r\n// import, which should be used instead of a resolveDirective call.\r\nconst directiveImportMap = new WeakMap();\r\n// generate a JavaScript AST for this element's codegen\r\nconst transformElement = (node, context) => {\r\n // perform the work on exit, after all child expressions have been\r\n // processed and merged.\r\n return function postTransformElement() {\r\n node = context.currentNode;\r\n if (!(node.type === 1 /* ELEMENT */ &&\r\n (node.tagType === 0 /* ELEMENT */ ||\r\n node.tagType === 1 /* COMPONENT */))) {\r\n return;\r\n }\r\n const { tag, props } = node;\r\n const isComponent = node.tagType === 1 /* COMPONENT */;\r\n // The goal of the transform is to create a codegenNode implementing the\r\n // VNodeCall interface.\r\n let vnodeTag = isComponent\r\n ? resolveComponentType(node, context)\r\n : `\"${tag}\"`;\r\n const isDynamicComponent = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;\r\n let vnodeProps;\r\n let vnodeChildren;\r\n let vnodePatchFlag;\r\n let patchFlag = 0;\r\n let vnodeDynamicProps;\r\n let dynamicPropNames;\r\n let vnodeDirectives;\r\n let shouldUseBlock = \r\n // dynamic component may resolve to plain elements\r\n isDynamicComponent ||\r\n vnodeTag === TELEPORT ||\r\n vnodeTag === SUSPENSE ||\r\n (!isComponent &&\r\n // <svg> and <foreignObject> must be forced into blocks so that block\r\n // updates inside get proper isSVG flag at runtime. (#639, #643)\r\n // This is technically web-specific, but splitting the logic out of core\r\n // leads to too much unnecessary complexity.\r\n (tag === 'svg' || tag === 'foreignObject'));\r\n // props\r\n if (props.length > 0) {\r\n const propsBuildResult = buildProps(node, context);\r\n vnodeProps = propsBuildResult.props;\r\n patchFlag = propsBuildResult.patchFlag;\r\n dynamicPropNames = propsBuildResult.dynamicPropNames;\r\n const directives = propsBuildResult.directives;\r\n vnodeDirectives =\r\n directives && directives.length\r\n ? createArrayExpression(directives.map(dir => buildDirectiveArgs(dir, context)))\r\n : undefined;\r\n if (propsBuildResult.shouldUseBlock) {\r\n shouldUseBlock = true;\r\n }\r\n }\r\n // children\r\n if (node.children.length > 0) {\r\n if (vnodeTag === KEEP_ALIVE) {\r\n // Although a built-in component, we compile KeepAlive with raw children\r\n // instead of slot functions so that it can be used inside Transition\r\n // or other Transition-wrapping HOCs.\r\n // To ensure correct updates with block optimizations, we need to:\r\n // 1. Force keep-alive into a block. This avoids its children being\r\n // collected by a parent block.\r\n shouldUseBlock = true;\r\n // 2. Force keep-alive to always be updated, since it uses raw children.\r\n patchFlag |= 1024 /* DYNAMIC_SLOTS */;\r\n if (( true) && node.children.length > 1) {\r\n context.onError(createCompilerError(45 /* X_KEEP_ALIVE_INVALID_CHILDREN */, {\r\n start: node.children[0].loc.start,\r\n end: node.children[node.children.length - 1].loc.end,\r\n source: ''\r\n }));\r\n }\r\n }\r\n const shouldBuildAsSlots = isComponent &&\r\n // Teleport is not a real component and has dedicated runtime handling\r\n vnodeTag !== TELEPORT &&\r\n // explained above.\r\n vnodeTag !== KEEP_ALIVE;\r\n if (shouldBuildAsSlots) {\r\n const { slots, hasDynamicSlots } = buildSlots(node, context);\r\n vnodeChildren = slots;\r\n if (hasDynamicSlots) {\r\n patchFlag |= 1024 /* DYNAMIC_SLOTS */;\r\n }\r\n }\r\n else if (node.children.length === 1 && vnodeTag !== TELEPORT) {\r\n const child = node.children[0];\r\n const type = child.type;\r\n // check for dynamic text children\r\n const hasDynamicTextChild = type === 5 /* INTERPOLATION */ ||\r\n type === 8 /* COMPOUND_EXPRESSION */;\r\n if (hasDynamicTextChild &&\r\n getConstantType(child, context) === 0 /* NOT_CONSTANT */) {\r\n patchFlag |= 1 /* TEXT */;\r\n }\r\n // pass directly if the only child is a text node\r\n // (plain / interpolation / expression)\r\n if (hasDynamicTextChild || type === 2 /* TEXT */) {\r\n vnodeChildren = child;\r\n }\r\n else {\r\n vnodeChildren = node.children;\r\n }\r\n }\r\n else {\r\n vnodeChildren = node.children;\r\n }\r\n }\r\n // patchFlag & dynamicPropNames\r\n if (patchFlag !== 0) {\r\n if ((true)) {\r\n if (patchFlag < 0) {\r\n // special flags (negative and mutually exclusive)\r\n vnodePatchFlag = patchFlag + ` /* ${_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][patchFlag]} */`;\r\n }\r\n else {\r\n // bitwise flags\r\n const flagNames = Object.keys(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"])\r\n .map(Number)\r\n .filter(n => n > 0 && patchFlag & n)\r\n .map(n => _vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][n])\r\n .join(`, `);\r\n vnodePatchFlag = patchFlag + ` /* ${flagNames} */`;\r\n }\r\n }\r\n else {}\r\n if (dynamicPropNames && dynamicPropNames.length) {\r\n vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);\r\n }\r\n }\r\n node.codegenNode = createVNodeCall(context, vnodeTag, vnodeProps, vnodeChildren, vnodePatchFlag, vnodeDynamicProps, vnodeDirectives, !!shouldUseBlock, false /* disableTracking */, isComponent, node.loc);\r\n };\r\n};\r\nfunction resolveComponentType(node, context, ssr = false) {\r\n let { tag } = node;\r\n // 1. dynamic component\r\n const isExplicitDynamic = isComponentTag(tag);\r\n const isProp = findProp(node, 'is');\r\n if (isProp) {\r\n if (isExplicitDynamic ||\r\n (isCompatEnabled(\"COMPILER_IS_ON_ELEMENT\" /* COMPILER_IS_ON_ELEMENT */, context))) {\r\n const exp = isProp.type === 6 /* ATTRIBUTE */\r\n ? isProp.value && createSimpleExpression(isProp.value.content, true)\r\n : isProp.exp;\r\n if (exp) {\r\n return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [\r\n exp\r\n ]);\r\n }\r\n }\r\n else if (isProp.type === 6 /* ATTRIBUTE */ &&\r\n isProp.value.content.startsWith('vue:')) {\r\n // <button is=\"vue:xxx\">\r\n // if not <component>, only is value that starts with \"vue:\" will be\r\n // treated as component by the parse phase and reach here, unless it's\r\n // compat mode where all is values are considered components\r\n tag = isProp.value.content.slice(4);\r\n }\r\n }\r\n // 1.5 v-is (TODO: Deprecate)\r\n const isDir = !isExplicitDynamic && findDir(node, 'is');\r\n if (isDir && isDir.exp) {\r\n return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [\r\n isDir.exp\r\n ]);\r\n }\r\n // 2. built-in components (Teleport, Transition, KeepAlive, Suspense...)\r\n const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);\r\n if (builtIn) {\r\n // built-ins are simply fallthroughs / have special handling during ssr\r\n // so we don't need to import their runtime equivalents\r\n if (!ssr)\r\n context.helper(builtIn);\r\n return builtIn;\r\n }\r\n // 5. user component (resolve)\r\n context.helper(RESOLVE_COMPONENT);\r\n context.components.add(tag);\r\n return toValidAssetId(tag, `component`);\r\n}\r\nfunction buildProps(node, context, props = node.props, ssr = false) {\r\n const { tag, loc: elementLoc, children } = node;\r\n const isComponent = node.tagType === 1 /* COMPONENT */;\r\n let properties = [];\r\n const mergeArgs = [];\r\n const runtimeDirectives = [];\r\n const hasChildren = children.length > 0;\r\n let shouldUseBlock = false;\r\n // patchFlag analysis\r\n let patchFlag = 0;\r\n let hasRef = false;\r\n let hasClassBinding = false;\r\n let hasStyleBinding = false;\r\n let hasHydrationEventBinding = false;\r\n let hasDynamicKeys = false;\r\n let hasVnodeHook = false;\r\n const dynamicPropNames = [];\r\n const analyzePatchFlag = ({ key, value }) => {\r\n if (isStaticExp(key)) {\r\n const name = key.content;\r\n const isEventHandler = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isOn\"])(name);\r\n if (!isComponent &&\r\n isEventHandler &&\r\n // omit the flag for click handlers because hydration gives click\r\n // dedicated fast path.\r\n name.toLowerCase() !== 'onclick' &&\r\n // omit v-model handlers\r\n name !== 'onUpdate:modelValue' &&\r\n // omit onVnodeXXX hooks\r\n !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isReservedProp\"])(name)) {\r\n hasHydrationEventBinding = true;\r\n }\r\n if (isEventHandler && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isReservedProp\"])(name)) {\r\n hasVnodeHook = true;\r\n }\r\n if (value.type === 20 /* JS_CACHE_EXPRESSION */ ||\r\n ((value.type === 4 /* SIMPLE_EXPRESSION */ ||\r\n value.type === 8 /* COMPOUND_EXPRESSION */) &&\r\n getConstantType(value, context) > 0)) {\r\n // skip if the prop is a cached handler or has constant value\r\n return;\r\n }\r\n if (name === 'ref') {\r\n hasRef = true;\r\n }\r\n else if (name === 'class') {\r\n hasClassBinding = true;\r\n }\r\n else if (name === 'style') {\r\n hasStyleBinding = true;\r\n }\r\n else if (name !== 'key' && !dynamicPropNames.includes(name)) {\r\n dynamicPropNames.push(name);\r\n }\r\n // treat the dynamic class and style binding of the component as dynamic props\r\n if (isComponent &&\r\n (name === 'class' || name === 'style') &&\r\n !dynamicPropNames.includes(name)) {\r\n dynamicPropNames.push(name);\r\n }\r\n }\r\n else {\r\n hasDynamicKeys = true;\r\n }\r\n };\r\n for (let i = 0; i < props.length; i++) {\r\n // static attribute\r\n const prop = props[i];\r\n if (prop.type === 6 /* ATTRIBUTE */) {\r\n const { loc, name, value } = prop;\r\n let isStatic = true;\r\n if (name === 'ref') {\r\n hasRef = true;\r\n if (context.scopes.vFor > 0) {\r\n properties.push(createObjectProperty(createSimpleExpression('ref_for', true), createSimpleExpression('true')));\r\n }\r\n }\r\n // skip is on <component>, or is=\"vue:xxx\"\r\n if (name === 'is' &&\r\n (isComponentTag(tag) ||\r\n (value && value.content.startsWith('vue:')) ||\r\n (isCompatEnabled(\"COMPILER_IS_ON_ELEMENT\" /* COMPILER_IS_ON_ELEMENT */, context)))) {\r\n continue;\r\n }\r\n properties.push(createObjectProperty(createSimpleExpression(name, true, getInnerRange(loc, 0, name.length)), createSimpleExpression(value ? value.content : '', isStatic, value ? value.loc : loc)));\r\n }\r\n else {\r\n // directives\r\n const { name, arg, exp, loc } = prop;\r\n const isVBind = name === 'bind';\r\n const isVOn = name === 'on';\r\n // skip v-slot - it is handled by its dedicated transform.\r\n if (name === 'slot') {\r\n if (!isComponent) {\r\n context.onError(createCompilerError(40 /* X_V_SLOT_MISPLACED */, loc));\r\n }\r\n continue;\r\n }\r\n // skip v-once/v-memo - they are handled by dedicated transforms.\r\n if (name === 'once' || name === 'memo') {\r\n continue;\r\n }\r\n // skip v-is and :is on <component>\r\n if (name === 'is' ||\r\n (isVBind &&\r\n isStaticArgOf(arg, 'is') &&\r\n (isComponentTag(tag) ||\r\n (isCompatEnabled(\"COMPILER_IS_ON_ELEMENT\" /* COMPILER_IS_ON_ELEMENT */, context))))) {\r\n continue;\r\n }\r\n // skip v-on in SSR compilation\r\n if (isVOn && ssr) {\r\n continue;\r\n }\r\n if (\r\n // #938: elements with dynamic keys should be forced into blocks\r\n (isVBind && isStaticArgOf(arg, 'key')) ||\r\n // inline before-update hooks need to force block so that it is invoked\r\n // before children\r\n (isVOn && hasChildren && isStaticArgOf(arg, 'vue:before-update'))) {\r\n shouldUseBlock = true;\r\n }\r\n if (isVBind && isStaticArgOf(arg, 'ref') && context.scopes.vFor > 0) {\r\n properties.push(createObjectProperty(createSimpleExpression('ref_for', true), createSimpleExpression('true')));\r\n }\r\n // special case for v-bind and v-on with no argument\r\n if (!arg && (isVBind || isVOn)) {\r\n hasDynamicKeys = true;\r\n if (exp) {\r\n if (properties.length) {\r\n mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc));\r\n properties = [];\r\n }\r\n if (isVBind) {\r\n {\r\n // 2.x v-bind object order compat\r\n if ((true)) {\r\n const hasOverridableKeys = mergeArgs.some(arg => {\r\n if (arg.type === 15 /* JS_OBJECT_EXPRESSION */) {\r\n return arg.properties.some(({ key }) => {\r\n if (key.type !== 4 /* SIMPLE_EXPRESSION */ ||\r\n !key.isStatic) {\r\n return true;\r\n }\r\n return (key.content !== 'class' &&\r\n key.content !== 'style' &&\r\n !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isOn\"])(key.content));\r\n });\r\n }\r\n else {\r\n // dynamic expression\r\n return true;\r\n }\r\n });\r\n if (hasOverridableKeys) {\r\n checkCompatEnabled(\"COMPILER_V_BIND_OBJECT_ORDER\" /* COMPILER_V_BIND_OBJECT_ORDER */, context, loc);\r\n }\r\n }\r\n if (isCompatEnabled(\"COMPILER_V_BIND_OBJECT_ORDER\" /* COMPILER_V_BIND_OBJECT_ORDER */, context)) {\r\n mergeArgs.unshift(exp);\r\n continue;\r\n }\r\n }\r\n mergeArgs.push(exp);\r\n }\r\n else {\r\n // v-on=\"obj\" -> toHandlers(obj)\r\n mergeArgs.push({\r\n type: 14 /* JS_CALL_EXPRESSION */,\r\n loc,\r\n callee: context.helper(TO_HANDLERS),\r\n arguments: [exp]\r\n });\r\n }\r\n }\r\n else {\r\n context.onError(createCompilerError(isVBind\r\n ? 34 /* X_V_BIND_NO_EXPRESSION */\r\n : 35 /* X_V_ON_NO_EXPRESSION */, loc));\r\n }\r\n continue;\r\n }\r\n const directiveTransform = context.directiveTransforms[name];\r\n if (directiveTransform) {\r\n // has built-in directive transform.\r\n const { props, needRuntime } = directiveTransform(prop, node, context);\r\n !ssr && props.forEach(analyzePatchFlag);\r\n properties.push(...props);\r\n if (needRuntime) {\r\n runtimeDirectives.push(prop);\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isSymbol\"])(needRuntime)) {\r\n directiveImportMap.set(prop, needRuntime);\r\n }\r\n }\r\n }\r\n else if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBuiltInDirective\"])(name)) {\r\n // no built-in transform, this is a user custom directive.\r\n runtimeDirectives.push(prop);\r\n // custom dirs may use beforeUpdate so they need to force blocks\r\n // to ensure before-update gets called before children update\r\n if (hasChildren) {\r\n shouldUseBlock = true;\r\n }\r\n }\r\n }\r\n }\r\n let propsExpression = undefined;\r\n // has v-bind=\"object\" or v-on=\"object\", wrap with mergeProps\r\n if (mergeArgs.length) {\r\n if (properties.length) {\r\n mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc));\r\n }\r\n if (mergeArgs.length > 1) {\r\n propsExpression = createCallExpression(context.helper(MERGE_PROPS), mergeArgs, elementLoc);\r\n }\r\n else {\r\n // single v-bind with nothing else - no need for a mergeProps call\r\n propsExpression = mergeArgs[0];\r\n }\r\n }\r\n else if (properties.length) {\r\n propsExpression = createObjectExpression(dedupeProperties(properties), elementLoc);\r\n }\r\n // patchFlag analysis\r\n if (hasDynamicKeys) {\r\n patchFlag |= 16 /* FULL_PROPS */;\r\n }\r\n else {\r\n if (hasClassBinding && !isComponent) {\r\n patchFlag |= 2 /* CLASS */;\r\n }\r\n if (hasStyleBinding && !isComponent) {\r\n patchFlag |= 4 /* STYLE */;\r\n }\r\n if (dynamicPropNames.length) {\r\n patchFlag |= 8 /* PROPS */;\r\n }\r\n if (hasHydrationEventBinding) {\r\n patchFlag |= 32 /* HYDRATE_EVENTS */;\r\n }\r\n }\r\n if (!shouldUseBlock &&\r\n (patchFlag === 0 || patchFlag === 32 /* HYDRATE_EVENTS */) &&\r\n (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {\r\n patchFlag |= 512 /* NEED_PATCH */;\r\n }\r\n // pre-normalize props, SSR is skipped for now\r\n if (!context.inSSR && propsExpression) {\r\n switch (propsExpression.type) {\r\n case 15 /* JS_OBJECT_EXPRESSION */:\r\n // means that there is no v-bind,\r\n // but still need to deal with dynamic key binding\r\n let classKeyIndex = -1;\r\n let styleKeyIndex = -1;\r\n let hasDynamicKey = false;\r\n for (let i = 0; i < propsExpression.properties.length; i++) {\r\n const key = propsExpression.properties[i].key;\r\n if (isStaticExp(key)) {\r\n if (key.content === 'class') {\r\n classKeyIndex = i;\r\n }\r\n else if (key.content === 'style') {\r\n styleKeyIndex = i;\r\n }\r\n }\r\n else if (!key.isHandlerKey) {\r\n hasDynamicKey = true;\r\n }\r\n }\r\n const classProp = propsExpression.properties[classKeyIndex];\r\n const styleProp = propsExpression.properties[styleKeyIndex];\r\n // no dynamic key\r\n if (!hasDynamicKey) {\r\n if (classProp && !isStaticExp(classProp.value)) {\r\n classProp.value = createCallExpression(context.helper(NORMALIZE_CLASS), [classProp.value]);\r\n }\r\n if (styleProp &&\r\n !isStaticExp(styleProp.value) &&\r\n // the static style is compiled into an object,\r\n // so use `hasStyleBinding` to ensure that it is a dynamic style binding\r\n (hasStyleBinding ||\r\n // v-bind:style and style both exist,\r\n // v-bind:style with static literal object\r\n styleProp.value.type === 17 /* JS_ARRAY_EXPRESSION */)) {\r\n styleProp.value = createCallExpression(context.helper(NORMALIZE_STYLE), [styleProp.value]);\r\n }\r\n }\r\n else {\r\n // dynamic key binding, wrap with `normalizeProps`\r\n propsExpression = createCallExpression(context.helper(NORMALIZE_PROPS), [propsExpression]);\r\n }\r\n break;\r\n case 14 /* JS_CALL_EXPRESSION */:\r\n // mergeProps call, do nothing\r\n break;\r\n default:\r\n // single v-bind\r\n propsExpression = createCallExpression(context.helper(NORMALIZE_PROPS), [\r\n createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [\r\n propsExpression\r\n ])\r\n ]);\r\n break;\r\n }\r\n }\r\n return {\r\n props: propsExpression,\r\n directives: runtimeDirectives,\r\n patchFlag,\r\n dynamicPropNames,\r\n shouldUseBlock\r\n };\r\n}\r\n// Dedupe props in an object literal.\r\n// Literal duplicated attributes would have been warned during the parse phase,\r\n// however, it's possible to encounter duplicated `onXXX` handlers with different\r\n// modifiers. We also need to merge static and dynamic class / style attributes.\r\n// - onXXX handlers / style: merge into array\r\n// - class: merge into single expression with concatenation\r\nfunction dedupeProperties(properties) {\r\n const knownProps = new Map();\r\n const deduped = [];\r\n for (let i = 0; i < properties.length; i++) {\r\n const prop = properties[i];\r\n // dynamic keys are always allowed\r\n if (prop.key.type === 8 /* COMPOUND_EXPRESSION */ || !prop.key.isStatic) {\r\n deduped.push(prop);\r\n continue;\r\n }\r\n const name = prop.key.content;\r\n const existing = knownProps.get(name);\r\n if (existing) {\r\n if (name === 'style' || name === 'class' || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isOn\"])(name)) {\r\n mergeAsArray(existing, prop);\r\n }\r\n // unexpected duplicate, should have emitted error during parse\r\n }\r\n else {\r\n knownProps.set(name, prop);\r\n deduped.push(prop);\r\n }\r\n }\r\n return deduped;\r\n}\r\nfunction mergeAsArray(existing, incoming) {\r\n if (existing.value.type === 17 /* JS_ARRAY_EXPRESSION */) {\r\n existing.value.elements.push(incoming.value);\r\n }\r\n else {\r\n existing.value = createArrayExpression([existing.value, incoming.value], existing.loc);\r\n }\r\n}\r\nfunction buildDirectiveArgs(dir, context) {\r\n const dirArgs = [];\r\n const runtime = directiveImportMap.get(dir);\r\n if (runtime) {\r\n // built-in directive with runtime\r\n dirArgs.push(context.helperString(runtime));\r\n }\r\n else {\r\n {\r\n // inject statement for resolving directive\r\n context.helper(RESOLVE_DIRECTIVE);\r\n context.directives.add(dir.name);\r\n dirArgs.push(toValidAssetId(dir.name, `directive`));\r\n }\r\n }\r\n const { loc } = dir;\r\n if (dir.exp)\r\n dirArgs.push(dir.exp);\r\n if (dir.arg) {\r\n if (!dir.exp) {\r\n dirArgs.push(`void 0`);\r\n }\r\n dirArgs.push(dir.arg);\r\n }\r\n if (Object.keys(dir.modifiers).length) {\r\n if (!dir.arg) {\r\n if (!dir.exp) {\r\n dirArgs.push(`void 0`);\r\n }\r\n dirArgs.push(`void 0`);\r\n }\r\n const trueExpression = createSimpleExpression(`true`, false, loc);\r\n dirArgs.push(createObjectExpression(dir.modifiers.map(modifier => createObjectProperty(modifier, trueExpression)), loc));\r\n }\r\n return createArrayExpression(dirArgs, dir.loc);\r\n}\r\nfunction stringifyDynamicPropNames(props) {\r\n let propsNamesString = `[`;\r\n for (let i = 0, l = props.length; i < l; i++) {\r\n propsNamesString += JSON.stringify(props[i]);\r\n if (i < l - 1)\r\n propsNamesString += ', ';\r\n }\r\n return propsNamesString + `]`;\r\n}\r\nfunction isComponentTag(tag) {\r\n return tag === 'component' || tag === 'Component';\r\n}\n\n( true)\r\n ? Object.freeze({})\r\n : undefined;\r\n( true) ? Object.freeze([]) : undefined;\r\nconst cacheStringFunction = (fn) => {\r\n const cache = Object.create(null);\r\n return ((str) => {\r\n const hit = cache[str];\r\n return hit || (cache[str] = fn(str));\r\n });\r\n};\r\nconst camelizeRE = /-(\\w)/g;\r\n/**\r\n * @private\r\n */\r\nconst camelize = cacheStringFunction((str) => {\r\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\r\n});\n\nconst transformSlotOutlet = (node, context) => {\r\n if (isSlotOutlet(node)) {\r\n const { children, loc } = node;\r\n const { slotName, slotProps } = processSlotOutlet(node, context);\r\n const slotArgs = [\r\n context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,\r\n slotName,\r\n '{}',\r\n 'undefined',\r\n 'true'\r\n ];\r\n let expectedLen = 2;\r\n if (slotProps) {\r\n slotArgs[2] = slotProps;\r\n expectedLen = 3;\r\n }\r\n if (children.length) {\r\n slotArgs[3] = createFunctionExpression([], children, false, false, loc);\r\n expectedLen = 4;\r\n }\r\n if (context.scopeId && !context.slotted) {\r\n expectedLen = 5;\r\n }\r\n slotArgs.splice(expectedLen); // remove unused arguments\r\n node.codegenNode = createCallExpression(context.helper(RENDER_SLOT), slotArgs, loc);\r\n }\r\n};\r\nfunction processSlotOutlet(node, context) {\r\n let slotName = `\"default\"`;\r\n let slotProps = undefined;\r\n const nonNameProps = [];\r\n for (let i = 0; i < node.props.length; i++) {\r\n const p = node.props[i];\r\n if (p.type === 6 /* ATTRIBUTE */) {\r\n if (p.value) {\r\n if (p.name === 'name') {\r\n slotName = JSON.stringify(p.value.content);\r\n }\r\n else {\r\n p.name = camelize(p.name);\r\n nonNameProps.push(p);\r\n }\r\n }\r\n }\r\n else {\r\n if (p.name === 'bind' && isStaticArgOf(p.arg, 'name')) {\r\n if (p.exp)\r\n slotName = p.exp;\r\n }\r\n else {\r\n if (p.name === 'bind' && p.arg && isStaticExp(p.arg)) {\r\n p.arg.content = camelize(p.arg.content);\r\n }\r\n nonNameProps.push(p);\r\n }\r\n }\r\n }\r\n if (nonNameProps.length > 0) {\r\n const { props, directives } = buildProps(node, context, nonNameProps);\r\n slotProps = props;\r\n if (directives.length) {\r\n context.onError(createCompilerError(36 /* X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET */, directives[0].loc));\r\n }\r\n }\r\n return {\r\n slotName,\r\n slotProps\r\n };\r\n}\n\nconst fnExpRE = /^\\s*([\\w$_]+|(async\\s*)?\\([^)]*?\\))\\s*=>|^\\s*(async\\s+)?function(?:\\s+[\\w$]+)?\\s*\\(/;\r\nconst transformOn = (dir, node, context, augmentor) => {\r\n const { loc, modifiers, arg } = dir;\r\n if (!dir.exp && !modifiers.length) {\r\n context.onError(createCompilerError(35 /* X_V_ON_NO_EXPRESSION */, loc));\r\n }\r\n let eventName;\r\n if (arg.type === 4 /* SIMPLE_EXPRESSION */) {\r\n if (arg.isStatic) {\r\n let rawName = arg.content;\r\n // TODO deprecate @vnodeXXX usage\r\n if (rawName.startsWith('vue:')) {\r\n rawName = `vnode-${rawName.slice(4)}`;\r\n }\r\n // for all event listeners, auto convert it to camelCase. See issue #2249\r\n eventName = createSimpleExpression(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"toHandlerKey\"])(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"])(rawName)), true, arg.loc);\r\n }\r\n else {\r\n // #2388\r\n eventName = createCompoundExpression([\r\n `${context.helperString(TO_HANDLER_KEY)}(`,\r\n arg,\r\n `)`\r\n ]);\r\n }\r\n }\r\n else {\r\n // already a compound expression.\r\n eventName = arg;\r\n eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);\r\n eventName.children.push(`)`);\r\n }\r\n // handler processing\r\n let exp = dir.exp;\r\n if (exp && !exp.content.trim()) {\r\n exp = undefined;\r\n }\r\n let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;\r\n if (exp) {\r\n const isMemberExp = isMemberExpression(exp.content);\r\n const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));\r\n const hasMultipleStatements = exp.content.includes(`;`);\r\n if (true) {\r\n validateBrowserExpression(exp, context, false, hasMultipleStatements);\r\n }\r\n if (isInlineStatement || (shouldCache && isMemberExp)) {\r\n // wrap inline statement in a function expression\r\n exp = createCompoundExpression([\r\n `${isInlineStatement\r\n ? `$event`\r\n : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,\r\n exp,\r\n hasMultipleStatements ? `}` : `)`\r\n ]);\r\n }\r\n }\r\n let ret = {\r\n props: [\r\n createObjectProperty(eventName, exp || createSimpleExpression(`() => {}`, false, loc))\r\n ]\r\n };\r\n // apply extended compiler augmentor\r\n if (augmentor) {\r\n ret = augmentor(ret);\r\n }\r\n if (shouldCache) {\r\n // cache handlers so that it's always the same handler being passed down.\r\n // this avoids unnecessary re-renders when users use inline handlers on\r\n // components.\r\n ret.props[0].value = context.cache(ret.props[0].value);\r\n }\r\n // mark the key as handler for props normalization check\r\n ret.props.forEach(p => (p.key.isHandlerKey = true));\r\n return ret;\r\n};\n\n// v-bind without arg is handled directly in ./transformElements.ts due to it affecting\r\n// codegen for the entire props object. This transform here is only for v-bind\r\n// *with* args.\r\nconst transformBind = (dir, _node, context) => {\r\n const { exp, modifiers, loc } = dir;\r\n const arg = dir.arg;\r\n if (arg.type !== 4 /* SIMPLE_EXPRESSION */) {\r\n arg.children.unshift(`(`);\r\n arg.children.push(`) || \"\"`);\r\n }\r\n else if (!arg.isStatic) {\r\n arg.content = `${arg.content} || \"\"`;\r\n }\r\n // .sync is replaced by v-model:arg\r\n if (modifiers.includes('camel')) {\r\n if (arg.type === 4 /* SIMPLE_EXPRESSION */) {\r\n if (arg.isStatic) {\r\n arg.content = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"])(arg.content);\r\n }\r\n else {\r\n arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;\r\n }\r\n }\r\n else {\r\n arg.children.unshift(`${context.helperString(CAMELIZE)}(`);\r\n arg.children.push(`)`);\r\n }\r\n }\r\n if (!context.inSSR) {\r\n if (modifiers.includes('prop')) {\r\n injectPrefix(arg, '.');\r\n }\r\n if (modifiers.includes('attr')) {\r\n injectPrefix(arg, '^');\r\n }\r\n }\r\n if (!exp ||\r\n (exp.type === 4 /* SIMPLE_EXPRESSION */ && !exp.content.trim())) {\r\n context.onError(createCompilerError(34 /* X_V_BIND_NO_EXPRESSION */, loc));\r\n return {\r\n props: [createObjectProperty(arg, createSimpleExpression('', true, loc))]\r\n };\r\n }\r\n return {\r\n props: [createObjectProperty(arg, exp)]\r\n };\r\n};\r\nconst injectPrefix = (arg, prefix) => {\r\n if (arg.type === 4 /* SIMPLE_EXPRESSION */) {\r\n if (arg.isStatic) {\r\n arg.content = prefix + arg.content;\r\n }\r\n else {\r\n arg.content = `\\`${prefix}\\${${arg.content}}\\``;\r\n }\r\n }\r\n else {\r\n arg.children.unshift(`'${prefix}' + (`);\r\n arg.children.push(`)`);\r\n }\r\n};\n\n// Merge adjacent text nodes and expressions into a single expression\r\n// e.g. <div>abc {{ d }} {{ e }}</div> should have a single expression node as child.\r\nconst transformText = (node, context) => {\r\n if (node.type === 0 /* ROOT */ ||\r\n node.type === 1 /* ELEMENT */ ||\r\n node.type === 11 /* FOR */ ||\r\n node.type === 10 /* IF_BRANCH */) {\r\n // perform the transform on node exit so that all expressions have already\r\n // been processed.\r\n return () => {\r\n const children = node.children;\r\n let currentContainer = undefined;\r\n let hasText = false;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (isText(child)) {\r\n hasText = true;\r\n for (let j = i + 1; j < children.length; j++) {\r\n const next = children[j];\r\n if (isText(next)) {\r\n if (!currentContainer) {\r\n currentContainer = children[i] = {\r\n type: 8 /* COMPOUND_EXPRESSION */,\r\n loc: child.loc,\r\n children: [child]\r\n };\r\n }\r\n // merge adjacent text node into current\r\n currentContainer.children.push(` + `, next);\r\n children.splice(j, 1);\r\n j--;\r\n }\r\n else {\r\n currentContainer = undefined;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!hasText ||\r\n // if this is a plain element with a single text child, leave it\r\n // as-is since the runtime has dedicated fast path for this by directly\r\n // setting textContent of the element.\r\n // for component root it's always normalized anyway.\r\n (children.length === 1 &&\r\n (node.type === 0 /* ROOT */ ||\r\n (node.type === 1 /* ELEMENT */ &&\r\n node.tagType === 0 /* ELEMENT */ &&\r\n // #3756\r\n // custom directives can potentially add DOM elements arbitrarily,\r\n // we need to avoid setting textContent of the element at runtime\r\n // to avoid accidentally overwriting the DOM elements added\r\n // by the user through custom directives.\r\n !node.props.find(p => p.type === 7 /* DIRECTIVE */ &&\r\n !context.directiveTransforms[p.name]) &&\r\n // in compat mode, <template> tags with no special directives\r\n // will be rendered as a fragment so its children must be\r\n // converted into vnodes.\r\n !(node.tag === 'template'))))) {\r\n return;\r\n }\r\n // pre-convert text nodes into createTextVNode(text) calls to avoid\r\n // runtime normalization.\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (isText(child) || child.type === 8 /* COMPOUND_EXPRESSION */) {\r\n const callArgs = [];\r\n // createTextVNode defaults to single whitespace, so if it is a\r\n // single space the code could be an empty call to save bytes.\r\n if (child.type !== 2 /* TEXT */ || child.content !== ' ') {\r\n callArgs.push(child);\r\n }\r\n // mark dynamic text with flag so it gets patched inside a block\r\n if (!context.ssr &&\r\n getConstantType(child, context) === 0 /* NOT_CONSTANT */) {\r\n callArgs.push(1 /* TEXT */ +\r\n (( true) ? ` /* ${_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"PatchFlagNames\"][1 /* TEXT */]} */` : undefined));\r\n }\r\n children[i] = {\r\n type: 12 /* TEXT_CALL */,\r\n content: child,\r\n loc: child.loc,\r\n codegenNode: createCallExpression(context.helper(CREATE_TEXT), callArgs)\r\n };\r\n }\r\n }\r\n };\r\n }\r\n};\n\nconst seen = new WeakSet();\r\nconst transformOnce = (node, context) => {\r\n if (node.type === 1 /* ELEMENT */ && findDir(node, 'once', true)) {\r\n if (seen.has(node) || context.inVOnce) {\r\n return;\r\n }\r\n seen.add(node);\r\n context.inVOnce = true;\r\n context.helper(SET_BLOCK_TRACKING);\r\n return () => {\r\n context.inVOnce = false;\r\n const cur = context.currentNode;\r\n if (cur.codegenNode) {\r\n cur.codegenNode = context.cache(cur.codegenNode, true /* isVNode */);\r\n }\r\n };\r\n }\r\n};\n\nconst transformModel = (dir, node, context) => {\r\n const { exp, arg } = dir;\r\n if (!exp) {\r\n context.onError(createCompilerError(41 /* X_V_MODEL_NO_EXPRESSION */, dir.loc));\r\n return createTransformProps();\r\n }\r\n const rawExp = exp.loc.source;\r\n const expString = exp.type === 4 /* SIMPLE_EXPRESSION */ ? exp.content : rawExp;\r\n // im SFC <script setup> inline mode, the exp may have been transformed into\r\n // _unref(exp)\r\n context.bindingMetadata[rawExp];\r\n const maybeRef = !true /* SETUP_CONST */;\r\n if (!expString.trim() ||\r\n (!isMemberExpression(expString) && !maybeRef)) {\r\n context.onError(createCompilerError(42 /* X_V_MODEL_MALFORMED_EXPRESSION */, exp.loc));\r\n return createTransformProps();\r\n }\r\n const propName = arg ? arg : createSimpleExpression('modelValue', true);\r\n const eventName = arg\r\n ? isStaticExp(arg)\r\n ? `onUpdate:${arg.content}`\r\n : createCompoundExpression(['\"onUpdate:\" + ', arg])\r\n : `onUpdate:modelValue`;\r\n let assignmentExp;\r\n const eventArg = context.isTS ? `($event: any)` : `$event`;\r\n {\r\n assignmentExp = createCompoundExpression([\r\n `${eventArg} => ((`,\r\n exp,\r\n `) = $event)`\r\n ]);\r\n }\r\n const props = [\r\n // modelValue: foo\r\n createObjectProperty(propName, dir.exp),\r\n // \"onUpdate:modelValue\": $event => (foo = $event)\r\n createObjectProperty(eventName, assignmentExp)\r\n ];\r\n // modelModifiers: { foo: true, \"bar-baz\": true }\r\n if (dir.modifiers.length && node.tagType === 1 /* COMPONENT */) {\r\n const modifiers = dir.modifiers\r\n .map(m => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`)\r\n .join(`, `);\r\n const modifiersKey = arg\r\n ? isStaticExp(arg)\r\n ? `${arg.content}Modifiers`\r\n : createCompoundExpression([arg, ' + \"Modifiers\"'])\r\n : `modelModifiers`;\r\n props.push(createObjectProperty(modifiersKey, createSimpleExpression(`{ ${modifiers} }`, false, dir.loc, 2 /* CAN_HOIST */)));\r\n }\r\n return createTransformProps(props);\r\n};\r\nfunction createTransformProps(props = []) {\r\n return { props };\r\n}\n\nconst validDivisionCharRE = /[\\w).+\\-_$\\]]/;\r\nconst transformFilter = (node, context) => {\r\n if (!isCompatEnabled(\"COMPILER_FILTER\" /* COMPILER_FILTERS */, context)) {\r\n return;\r\n }\r\n if (node.type === 5 /* INTERPOLATION */) {\r\n // filter rewrite is applied before expression transform so only\r\n // simple expressions are possible at this stage\r\n rewriteFilter(node.content, context);\r\n }\r\n if (node.type === 1 /* ELEMENT */) {\r\n node.props.forEach((prop) => {\r\n if (prop.type === 7 /* DIRECTIVE */ &&\r\n prop.name !== 'for' &&\r\n prop.exp) {\r\n rewriteFilter(prop.exp, context);\r\n }\r\n });\r\n }\r\n};\r\nfunction rewriteFilter(node, context) {\r\n if (node.type === 4 /* SIMPLE_EXPRESSION */) {\r\n parseFilter(node, context);\r\n }\r\n else {\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n if (typeof child !== 'object')\r\n continue;\r\n if (child.type === 4 /* SIMPLE_EXPRESSION */) {\r\n parseFilter(child, context);\r\n }\r\n else if (child.type === 8 /* COMPOUND_EXPRESSION */) {\r\n rewriteFilter(node, context);\r\n }\r\n else if (child.type === 5 /* INTERPOLATION */) {\r\n rewriteFilter(child.content, context);\r\n }\r\n }\r\n }\r\n}\r\nfunction parseFilter(node, context) {\r\n const exp = node.content;\r\n let inSingle = false;\r\n let inDouble = false;\r\n let inTemplateString = false;\r\n let inRegex = false;\r\n let curly = 0;\r\n let square = 0;\r\n let paren = 0;\r\n let lastFilterIndex = 0;\r\n let c, prev, i, expression, filters = [];\r\n for (i = 0; i < exp.length; i++) {\r\n prev = c;\r\n c = exp.charCodeAt(i);\r\n if (inSingle) {\r\n if (c === 0x27 && prev !== 0x5c)\r\n inSingle = false;\r\n }\r\n else if (inDouble) {\r\n if (c === 0x22 && prev !== 0x5c)\r\n inDouble = false;\r\n }\r\n else if (inTemplateString) {\r\n if (c === 0x60 && prev !== 0x5c)\r\n inTemplateString = false;\r\n }\r\n else if (inRegex) {\r\n if (c === 0x2f && prev !== 0x5c)\r\n inRegex = false;\r\n }\r\n else if (c === 0x7c && // pipe\r\n exp.charCodeAt(i + 1) !== 0x7c &&\r\n exp.charCodeAt(i - 1) !== 0x7c &&\r\n !curly &&\r\n !square &&\r\n !paren) {\r\n if (expression === undefined) {\r\n // first filter, end of expression\r\n lastFilterIndex = i + 1;\r\n expression = exp.slice(0, i).trim();\r\n }\r\n else {\r\n pushFilter();\r\n }\r\n }\r\n else {\r\n switch (c) {\r\n case 0x22:\r\n inDouble = true;\r\n break; // \"\r\n case 0x27:\r\n inSingle = true;\r\n break; // '\r\n case 0x60:\r\n inTemplateString = true;\r\n break; // `\r\n case 0x28:\r\n paren++;\r\n break; // (\r\n case 0x29:\r\n paren--;\r\n break; // )\r\n case 0x5b:\r\n square++;\r\n break; // [\r\n case 0x5d:\r\n square--;\r\n break; // ]\r\n case 0x7b:\r\n curly++;\r\n break; // {\r\n case 0x7d:\r\n curly--;\r\n break; // }\r\n }\r\n if (c === 0x2f) {\r\n // /\r\n let j = i - 1;\r\n let p;\r\n // find first non-whitespace prev char\r\n for (; j >= 0; j--) {\r\n p = exp.charAt(j);\r\n if (p !== ' ')\r\n break;\r\n }\r\n if (!p || !validDivisionCharRE.test(p)) {\r\n inRegex = true;\r\n }\r\n }\r\n }\r\n }\r\n if (expression === undefined) {\r\n expression = exp.slice(0, i).trim();\r\n }\r\n else if (lastFilterIndex !== 0) {\r\n pushFilter();\r\n }\r\n function pushFilter() {\r\n filters.push(exp.slice(lastFilterIndex, i).trim());\r\n lastFilterIndex = i + 1;\r\n }\r\n if (filters.length) {\r\n ( true) &&\r\n warnDeprecation(\"COMPILER_FILTER\" /* COMPILER_FILTERS */, context, node.loc);\r\n for (i = 0; i < filters.length; i++) {\r\n expression = wrapFilter(expression, filters[i], context);\r\n }\r\n node.content = expression;\r\n }\r\n}\r\nfunction wrapFilter(exp, filter, context) {\r\n context.helper(RESOLVE_FILTER);\r\n const i = filter.indexOf('(');\r\n if (i < 0) {\r\n context.filters.add(filter);\r\n return `${toValidAssetId(filter, 'filter')}(${exp})`;\r\n }\r\n else {\r\n const name = filter.slice(0, i);\r\n const args = filter.slice(i + 1);\r\n context.filters.add(name);\r\n return `${toValidAssetId(name, 'filter')}(${exp}${args !== ')' ? ',' + args : args}`;\r\n }\r\n}\n\nconst seen$1 = new WeakSet();\r\nconst transformMemo = (node, context) => {\r\n if (node.type === 1 /* ELEMENT */) {\r\n const dir = findDir(node, 'memo');\r\n if (!dir || seen$1.has(node)) {\r\n return;\r\n }\r\n seen$1.add(node);\r\n return () => {\r\n const codegenNode = node.codegenNode ||\r\n context.currentNode.codegenNode;\r\n if (codegenNode && codegenNode.type === 13 /* VNODE_CALL */) {\r\n // non-component sub tree should be turned into a block\r\n if (node.tagType !== 1 /* COMPONENT */) {\r\n makeBlock(codegenNode, context);\r\n }\r\n node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [\r\n dir.exp,\r\n createFunctionExpression(undefined, codegenNode),\r\n `_cache`,\r\n String(context.cached++)\r\n ]);\r\n }\r\n };\r\n }\r\n};\n\nfunction getBaseTransformPreset(prefixIdentifiers) {\r\n return [\r\n [\r\n transformOnce,\r\n transformIf,\r\n transformMemo,\r\n transformFor,\r\n ...([transformFilter] ),\r\n ...(( true)\r\n ? [transformExpression]\r\n : undefined),\r\n transformSlotOutlet,\r\n transformElement,\r\n trackSlotScopes,\r\n transformText\r\n ],\r\n {\r\n on: transformOn,\r\n bind: transformBind,\r\n model: transformModel\r\n }\r\n ];\r\n}\r\n// we name it `baseCompile` so that higher order compilers like\r\n// @vue/compiler-dom can export `compile` while re-exporting everything else.\r\nfunction baseCompile(template, options = {}) {\r\n const onError = options.onError || defaultOnError;\r\n const isModuleMode = options.mode === 'module';\r\n /* istanbul ignore if */\r\n {\r\n if (options.prefixIdentifiers === true) {\r\n onError(createCompilerError(46 /* X_PREFIX_ID_NOT_SUPPORTED */));\r\n }\r\n else if (isModuleMode) {\r\n onError(createCompilerError(47 /* X_MODULE_MODE_NOT_SUPPORTED */));\r\n }\r\n }\r\n const prefixIdentifiers = !true ;\r\n if (options.cacheHandlers) {\r\n onError(createCompilerError(48 /* X_CACHE_HANDLER_NOT_SUPPORTED */));\r\n }\r\n if (options.scopeId && !isModuleMode) {\r\n onError(createCompilerError(49 /* X_SCOPE_ID_NOT_SUPPORTED */));\r\n }\r\n const ast = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(template) ? baseParse(template, options) : template;\r\n const [nodeTransforms, directiveTransforms] = getBaseTransformPreset();\r\n transform(ast, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, options, {\r\n prefixIdentifiers,\r\n nodeTransforms: [\r\n ...nodeTransforms,\r\n ...(options.nodeTransforms || []) // user transforms\r\n ],\r\n directiveTransforms: Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, directiveTransforms, options.directiveTransforms || {} // user transforms\r\n )\r\n }));\r\n return generate(ast, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, options, {\r\n prefixIdentifiers\r\n }));\r\n}\n\nconst noopDirectiveTransform = () => ({ props: [] });\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1jb3JlL2Rpc3QvY29tcGlsZXItY29yZS5lc20tYnVuZGxlci5qcz8yYmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWdQO0FBQ2hNOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssS0FBcUMsZ0NBQWdDLFlBQVk7QUFDdEY7QUFDQTtBQUNBLGdCQUFnQixLQUFnRDtBQUNoRTtBQUNBLFVBQVUsU0FBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0ZBQWdGO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLEtBQXFDLGlCQUFpQixTQUFFO0FBQ2pGLHlCQUF5QixLQUFxQyxpQkFBaUIsU0FBRTtBQUNqRix5QkFBeUIsS0FBcUMsaUJBQWlCLFNBQUU7QUFDakYsMkJBQTJCLEtBQXFDLGtCQUFrQixTQUFFO0FBQ3BGLGdDQUFnQyxLQUFxQyx1QkFBdUIsU0FBRTtBQUM5RiwyQkFBMkIsS0FBcUMsa0JBQWtCLFNBQUU7QUFDcEYsNkJBQTZCLEtBQXFDLG9CQUFvQixTQUFFO0FBQ3hGLHFDQUFxQyxLQUFxQywyQkFBMkIsU0FBRTtBQUN2Ryw2QkFBNkIsS0FBcUMsb0JBQW9CLFNBQUU7QUFDeEYscUNBQXFDLEtBQXFDLDJCQUEyQixTQUFFO0FBQ3ZHLCtCQUErQixLQUFxQywyQkFBMkIsU0FBRTtBQUNqRyw0QkFBNEIsS0FBcUMsd0JBQXdCLFNBQUU7QUFDM0YsOEJBQThCLEtBQXFDLDBCQUEwQixTQUFFO0FBQy9GLGtDQUFrQyxLQUFxQyx5QkFBeUIsU0FBRTtBQUNsRywwQ0FBMEMsS0FBcUMsZ0NBQWdDLFNBQUU7QUFDakgsa0NBQWtDLEtBQXFDLHlCQUF5QixTQUFFO0FBQ2xHLCtCQUErQixLQUFxQyxzQkFBc0IsU0FBRTtBQUM1RixnQ0FBZ0MsS0FBcUMsdUJBQXVCLFNBQUU7QUFDOUYsNEJBQTRCLEtBQXFDLG1CQUFtQixTQUFFO0FBQ3RGLDRCQUE0QixLQUFxQyxtQkFBbUIsU0FBRTtBQUN0Riw2QkFBNkIsS0FBcUMsb0JBQW9CLFNBQUU7QUFDeEYsa0NBQWtDLEtBQXFDLHdCQUF3QixTQUFFO0FBQ2pHLDRCQUE0QixLQUFxQyxtQkFBbUIsU0FBRTtBQUN0RixnQ0FBZ0MsS0FBcUMsdUJBQXVCLFNBQUU7QUFDOUYsZ0NBQWdDLEtBQXFDLHVCQUF1QixTQUFFO0FBQzlGLGdDQUFnQyxLQUFxQyx1QkFBdUIsU0FBRTtBQUM5RixxQ0FBcUMsS0FBcUMsMkJBQTJCLFNBQUU7QUFDdkcsNEJBQTRCLEtBQXFDLG1CQUFtQixTQUFFO0FBQ3RGLHlCQUF5QixLQUFxQyxpQkFBaUIsU0FBRTtBQUNqRiwyQkFBMkIsS0FBcUMsbUJBQW1CLFNBQUU7QUFDckYsK0JBQStCLEtBQXFDLHFCQUFxQixTQUFFO0FBQzNGLG1DQUFtQyxLQUFxQyx5QkFBeUIsU0FBRTtBQUNuRyw4QkFBOEIsS0FBcUMsb0JBQW9CLFNBQUU7QUFDekYsNkJBQTZCLEtBQXFDLG1CQUFtQixTQUFFO0FBQ3ZGLHlCQUF5QixLQUFxQyxnQkFBZ0IsU0FBRTtBQUNoRixzQkFBc0IsS0FBcUMsY0FBYyxTQUFFO0FBQzNFLHVCQUF1QixLQUFxQyxjQUFjLFNBQUU7QUFDNUUsMEJBQTBCLEtBQXFDLGlCQUFpQixTQUFFO0FBQ2xGLDZCQUE2QixLQUFxQyxtQkFBbUIsU0FBRTtBQUN2RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0NBQWdDO0FBQzVDLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNERBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNERBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUVBQXFFLDZEQUFTO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0RBQUk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsMERBQU0sR0FBRztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsd0JBQXdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNERBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1QkFBdUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsNERBQVE7QUFDakI7QUFDQTtBQUNBLGFBQWEsNERBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDREQUFRO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw0REFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNERBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELFNBQVM7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxLQUFLLEdBQUc7QUFDdkI7QUFDQSxLQUFLLEVBQUU7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHVCQUF1QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsNERBQVE7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiw4QkFBOEI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwwQ0FBMEMsSUFBSTtBQUM5Qyx5QkFBeUIsSUFBSTtBQUM3QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0IsZ0NBQWdDLElBQUksSUFBSSwyREFBMkQsRUFBRSx1QkFBdUIsS0FBSyxPQUFPO0FBQ3hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFNO0FBQzFCO0FBQ0E7QUFDQSxlQUFlLDhDQUFFO0FBQ2pCLGNBQWMsOENBQUU7QUFDaEIscUJBQXFCLDhDQUFFO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsYUFBb0I7QUFDbkM7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwwREFBTSxHQUFHO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFPO0FBQ25CLDJCQUEyQixpQkFBaUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQkFBa0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELDJEQUFPO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFNO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHVCQUF1QjtBQUNsQyxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELFFBQVE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsS0FBcUMsdUJBQXVCLFNBQUU7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDBCQUEwQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHVCQUF1QjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiwwQkFBMEI7QUFDckQ7QUFDQSxvQkFBb0IsNERBQVEsV0FBVyw0REFBUTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsNERBQVE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGFBQWE7QUFDNUIsdUJBQXVCLHVCQUF1QjtBQUM5QyxtQkFBbUIsYUFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUMsb0lBQW9JLDhDQUE4QyxnREFBSSxvQkFBb0IsZ0RBQUkseUhBQXlILHFEQUFTLGdHQUFnRztBQUN2ZDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsOERBQVUsQ0FBQyw0REFBVTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSx1QkFBdUIsb0NBQW9DO0FBQzNELFNBQVM7QUFDVDtBQUNBO0FBQ0EsaUJBQWlCLElBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCw4QkFBOEIsRUFBRTtBQUNoQztBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLGdCQUFnQiw0REFBUTtBQUN4QjtBQUNBO0FBQ0Esa0VBQWtFLHNCQUFzQjtBQUN4RjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsV0FBVztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwwREFBYztBQUMxQztBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0Esa0NBQWtDLDBEQUFjLCtCQUErQjtBQUMvRTtBQUNBLDhHQUE4RyxLQUFxQyxXQUFXLGNBQWMsT0FBTyxTQUFFO0FBQ3JMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDRCQUE0QjtBQUN0QztBQUNBLFlBQVksNERBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlCQUFpQjtBQUM1QjtBQUNBLG1CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBLGdCQUFnQiwyREFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiwwQkFBMEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDREQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGtCQUFrQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxxU0FBcVM7QUFDelU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUVBQXlFO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsYUFBYSxHQUFHLFVBQVUsR0FBRztBQUN0RDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsR0FBRztBQUM1Qiw2QkFBNkIsaUJBQWlCLEtBQUssaUJBQWlCO0FBQ3BFLDRCQUE0QixFQUFFO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixlQUFlO0FBQ3RDLG9CQUFvQixrQkFBa0IsT0FBTyxFQUFFO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0dBQW9HO0FBQy9HO0FBQ0Esa0NBQWtDLGlCQUFpQixLQUFLLGlCQUFpQjtBQUN6RTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsV0FBVztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLEdBQUcsY0FBYyxFQUFFO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDhCQUE4QjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IseUJBQXlCLEtBQUssU0FBUyxHQUFHLG1CQUFtQixFQUFFLG1DQUFtQyxHQUFHLGdCQUFnQjtBQUMzSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdUNBQXVDO0FBQ2xEO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0EsbUNBQW1DLE1BQU0sS0FBSyxHQUFHO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw0REFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBcUMsc0JBQXNCLDJEQUFPO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0IsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBLFlBQVksNERBQVE7QUFDcEI7QUFDQTtBQUNBLGlCQUFpQiwyREFBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw0REFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLDREQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLElBQXFDO0FBQ3RELDhEQUE4RCxVQUFVO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxQkFBcUI7QUFDaEM7QUFDQTtBQUNBLFlBQVksMEJBQTBCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDBCQUEwQjtBQUM3QztBQUNBLFlBQVksNERBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixhQUFhO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCLEdBQUcsNkJBQTZCO0FBQ25FO0FBQ0E7QUFDQSxXQUFXLHFCQUFxQjtBQUNoQyxXQUFXLG1HQUFtRztBQUM5RztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtQkFBbUIsR0FBRyw4QkFBOEI7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDLG1CQUFtQiw0REFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQ0FBa0M7QUFDN0MsV0FBVyxhQUFhO0FBQ3hCO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBcUM7QUFDaEQ7QUFDQSx3QkFBd0IsTUFBTTtBQUM5QjtBQUNBLG1CQUFtQix1QkFBdUI7QUFDMUMsZUFBZSxhQUFhO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQyxXQUFXLHlDQUF5QztBQUNwRDtBQUNBO0FBQ0EsaUJBQWlCLHdCQUF3QjtBQUN6QztBQUNBO0FBQ0EsUUFBUSwyREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLG9EQUFvRDtBQUMvRCxXQUFXLGtDQUFrQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsMENBQTBDO0FBQ3JELG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQSxnQkFBZ0IsMkJBQTJCO0FBQzNDO0FBQ0E7QUFDQSxtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyQkFBMkI7QUFDM0M7QUFDQSx1QkFBdUIsV0FBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRSxHQUFHO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsSUFBSTtBQUN0Qix3QkFBd0IsZUFBZSxJQUFJLE9BQU8sUUFBUSxJQUFJLEdBQUc7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyRUFBMkUsZ0JBQWdCO0FBQzNGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix1QkFBdUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxLQUErQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUFnRDtBQUNwRTtBQUNBO0FBQ0EsbURBQW1ELFVBQVU7QUFDN0Q7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLGVBQWUsU0FBSTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLDhFQUE4RSxTQUFTO0FBQ3ZGLFdBQVcsV0FBVztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDBEQUFjO0FBQzlDO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBLHNDQUFzQywwREFBYywrQkFBK0I7QUFDbkY7QUFDQSw2SEFBNkgsS0FBcUMsV0FBVyxjQUFjLE9BQU8sU0FBRTtBQUNwTTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyx1QkFBdUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLEtBQXFDLFdBQVcsMERBQWMsZUFBZSxPQUFPLFNBQUU7QUFDcEc7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQSxpQkFBaUIsS0FBZ0Q7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLEtBQXFDO0FBQzNELGlDQUFpQywwREFBYywyQkFBMkI7QUFDMUUsMEJBQTBCLFNBQUU7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixtQ0FBbUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNENBQTRDO0FBQ3ZELFdBQVcsNEJBQTRCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsZUFBZTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUErQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBK0M7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLElBQStDO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUErQztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9CQUFvQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLDBCQUEwQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QyxtQkFBbUIsb0NBQW9DO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLE9BQU87QUFDaEM7QUFDQTtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsT0FBTztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHVDQUF1QztBQUN0RCxlQUFlLHVGQUF1RjtBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxLQUFxQyxXQUFXLHlEQUFhLFdBQVcsT0FBTyxTQUFFO0FBQ3pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsYUFBYTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLElBQUk7QUFDdEIsbUNBQW1DLDREQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixLQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHlCQUF5QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBLHdEQUF3RCwwREFBYyxZQUFZO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCwwREFBYztBQUNoRTtBQUNBO0FBQ0Esa0NBQWtDLDBEQUFjO0FBQ2hEO0FBQ0Esd0RBQXdELFVBQVU7QUFDbEU7QUFDQTtBQUNBLGlCQUFpQixFQUVKO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsTUFBTTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpQ0FBaUM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGFBQWE7QUFDNUM7QUFDQTtBQUNBLG1DQUFtQyx3REFBSTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFjO0FBQy9CO0FBQ0E7QUFDQSxrQ0FBa0Msa0VBQWM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsSUFBcUM7QUFDdEU7QUFDQTtBQUNBLHFFQUFxRSxNQUFNO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCx3REFBSTtBQUNyRCx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw0REFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzRUFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix1Q0FBdUM7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Qsd0RBQUk7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQyxLQUFxQztBQUN0QyxzQkFBc0I7QUFDdEIsTUFBTSxTQUFFO0FBQ1IsQ0FBQyxLQUFxQyx3QkFBd0IsU0FBRTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsZUFBZSxnQkFBZ0I7QUFDL0IsZUFBZSxzQkFBc0I7QUFDckM7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1QkFBdUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0JBQW9CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLHNCQUFzQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BEO0FBQ0E7QUFDQSwrQ0FBK0MsZ0VBQVksQ0FBQyw0REFBVTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQ0FBcUM7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxxQ0FBcUM7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RCxZQUFZLElBQStDO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQSx5QkFBeUIsR0FBRyxXQUFXLE1BQU0sMEJBQTBCLFFBQVE7QUFDL0U7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsc0JBQXNCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixZQUFZO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsNERBQVU7QUFDeEM7QUFDQTtBQUNBLGlDQUFpQywrQkFBK0IsR0FBRyxZQUFZO0FBQy9FO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywrQkFBK0I7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsT0FBTyxHQUFHLEVBQUUsYUFBYTtBQUN4RDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsT0FBTztBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsS0FBSyxHQUFHLEtBQUs7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxQkFBcUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHFCQUFxQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIscUJBQXFCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixLQUFxQyxXQUFXLDBEQUFjLGVBQWUsT0FBTyxTQUFFO0FBQ3BIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLFlBQVk7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixZQUFZO0FBQ2pDO0FBQ0E7QUFDQSwrRUFBK0UsR0FBRyxVQUFVLEVBQUU7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwwQkFBMEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsZ0JBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsUUFBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixpQ0FBaUMsR0FBRyxJQUFJO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsK0JBQStCLEdBQUcsSUFBSSxFQUFFLGlDQUFpQztBQUMzRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBLHNCQUFzQixTQUFFO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDREQUFRO0FBQ3hCO0FBQ0EsbUJBQW1CLDBEQUFNLEdBQUc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwwREFBTSxHQUFHLHdEQUF3RDtBQUM5RjtBQUNBLEtBQUs7QUFDTCx5QkFBeUIsMERBQU0sR0FBRztBQUNsQztBQUNBLEtBQUs7QUFDTDs7QUFFQSx1Q0FBdUMsWUFBWTs7QUFFcWpFIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0B2dWUvY29tcGlsZXItY29yZS9kaXN0L2NvbXBpbGVyLWNvcmUuZXNtLWJ1bmRsZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZywgaHlwaGVuYXRlLCBOT09QLCBleHRlbmQsIGlzT2JqZWN0LCBOTywgaXNBcnJheSwgbWFrZU1hcCwgaXNTeW1ib2wsIEVNUFRZX09CSiwgY2FwaXRhbGl6ZSwgY2FtZWxpemUgYXMgY2FtZWxpemUkMSwgUGF0Y2hGbGFnTmFtZXMsIHNsb3RGbGFnc1RleHQsIGlzT24sIGlzQnVpbHRJbkRpcmVjdGl2ZSwgaXNSZXNlcnZlZFByb3AsIHRvSGFuZGxlcktleSB9IGZyb20gJ0B2dWUvc2hhcmVkJztcbmV4cG9ydCB7IGdlbmVyYXRlQ29kZUZyYW1lIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5mdW5jdGlvbiBkZWZhdWx0T25FcnJvcihlcnJvcikge1xyXG4gICAgdGhyb3cgZXJyb3I7XHJcbn1cclxuZnVuY3Rpb24gZGVmYXVsdE9uV2Fybihtc2cpIHtcclxuICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjb25zb2xlLndhcm4oYFtWdWUgd2Fybl0gJHttc2cubWVzc2FnZX1gKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb21waWxlckVycm9yKGNvZGUsIGxvYywgbWVzc2FnZXMsIGFkZGl0aW9uYWxNZXNzYWdlKSB7XHJcbiAgICBjb25zdCBtc2cgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWVcclxuICAgICAgICA/IChtZXNzYWdlcyB8fCBlcnJvck1lc3NhZ2VzKVtjb2RlXSArIChhZGRpdGlvbmFsTWVzc2FnZSB8fCBgYClcclxuICAgICAgICA6IGNvZGU7XHJcbiAgICBjb25zdCBlcnJvciA9IG5ldyBTeW50YXhFcnJvcihTdHJpbmcobXNnKSk7XHJcbiAgICBlcnJvci5jb2RlID0gY29kZTtcclxuICAgIGVycm9yLmxvYyA9IGxvYztcclxuICAgIHJldHVybiBlcnJvcjtcclxufVxyXG5jb25zdCBlcnJvck1lc3NhZ2VzID0ge1xyXG4gICAgLy8gcGFyc2UgZXJyb3JzXHJcbiAgICBbMCAvKiBBQlJVUFRfQ0xPU0lOR19PRl9FTVBUWV9DT01NRU5UICovXTogJ0lsbGVnYWwgY29tbWVudC4nLFxyXG4gICAgWzEgLyogQ0RBVEFfSU5fSFRNTF9DT05URU5UICovXTogJ0NEQVRBIHNlY3Rpb24gaXMgYWxsb3dlZCBvbmx5IGluIFhNTCBjb250ZXh0LicsXHJcbiAgICBbMiAvKiBEVVBMSUNBVEVfQVRUUklCVVRFICovXTogJ0R1cGxpY2F0ZSBhdHRyaWJ1dGUuJyxcclxuICAgIFszIC8qIEVORF9UQUdfV0lUSF9BVFRSSUJVVEVTICovXTogJ0VuZCB0YWcgY2Fubm90IGhhdmUgYXR0cmlidXRlcy4nLFxyXG4gICAgWzQgLyogRU5EX1RBR19XSVRIX1RSQUlMSU5HX1NPTElEVVMgKi9dOiBcIklsbGVnYWwgJy8nIGluIHRhZ3MuXCIsXHJcbiAgICBbNSAvKiBFT0ZfQkVGT1JFX1RBR19OQU1FICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIHRhZy4nLFxyXG4gICAgWzYgLyogRU9GX0lOX0NEQVRBICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIENEQVRBIHNlY3Rpb24uJyxcclxuICAgIFs3IC8qIEVPRl9JTl9DT01NRU5UICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIGNvbW1lbnQuJyxcclxuICAgIFs4IC8qIEVPRl9JTl9TQ1JJUFRfSFRNTF9DT01NRU5UX0xJS0VfVEVYVCAqL106ICdVbmV4cGVjdGVkIEVPRiBpbiBzY3JpcHQuJyxcclxuICAgIFs5IC8qIEVPRl9JTl9UQUcgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gdGFnLicsXHJcbiAgICBbMTAgLyogSU5DT1JSRUNUTFlfQ0xPU0VEX0NPTU1FTlQgKi9dOiAnSW5jb3JyZWN0bHkgY2xvc2VkIGNvbW1lbnQuJyxcclxuICAgIFsxMSAvKiBJTkNPUlJFQ1RMWV9PUEVORURfQ09NTUVOVCAqL106ICdJbmNvcnJlY3RseSBvcGVuZWQgY29tbWVudC4nLFxyXG4gICAgWzEyIC8qIElOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FICovXTogXCJJbGxlZ2FsIHRhZyBuYW1lLiBVc2UgJyZsdDsnIHRvIHByaW50ICc8Jy5cIixcclxuICAgIFsxMyAvKiBNSVNTSU5HX0FUVFJJQlVURV9WQUxVRSAqL106ICdBdHRyaWJ1dGUgdmFsdWUgd2FzIGV4cGVjdGVkLicsXHJcbiAgICBbMTQgLyogTUlTU0lOR19FTkRfVEFHX05BTUUgKi9dOiAnRW5kIHRhZyBuYW1lIHdhcyBleHBlY3RlZC4nLFxyXG4gICAgWzE1IC8qIE1JU1NJTkdfV0hJVEVTUEFDRV9CRVRXRUVOX0FUVFJJQlVURVMgKi9dOiAnV2hpdGVzcGFjZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIFsxNiAvKiBORVNURURfQ09NTUVOVCAqL106IFwiVW5leHBlY3RlZCAnPCEtLScgaW4gY29tbWVudC5cIixcclxuICAgIFsxNyAvKiBVTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9BVFRSSUJVVEVfTkFNRSAqL106ICdBdHRyaWJ1dGUgbmFtZSBjYW5ub3QgY29udGFpbiBVKzAwMjIgKFwiKSwgVSswMDI3IChcXCcpLCBhbmQgVSswMDNDICg8KS4nLFxyXG4gICAgWzE4IC8qIFVORVhQRUNURURfQ0hBUkFDVEVSX0lOX1VOUVVPVEVEX0FUVFJJQlVURV9WQUxVRSAqL106ICdVbnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUgY2Fubm90IGNvbnRhaW4gVSswMDIyIChcIiksIFUrMDAyNyAoXFwnKSwgVSswMDNDICg8KSwgVSswMDNEICg9KSwgYW5kIFUrMDA2MCAoYCkuJyxcclxuICAgIFsxOSAvKiBVTkVYUEVDVEVEX0VRVUFMU19TSUdOX0JFRk9SRV9BVFRSSUJVVEVfTkFNRSAqL106IFwiQXR0cmlidXRlIG5hbWUgY2Fubm90IHN0YXJ0IHdpdGggJz0nLlwiLFxyXG4gICAgWzIxIC8qIFVORVhQRUNURURfUVVFU1RJT05fTUFSS19JTlNURUFEX09GX1RBR19OQU1FICovXTogXCInPD8nIGlzIGFsbG93ZWQgb25seSBpbiBYTUwgY29udGV4dC5cIixcclxuICAgIFsyMCAvKiBVTkVYUEVDVEVEX05VTExfQ0hBUkFDVEVSICovXTogYFVuZXhwZWN0ZWQgbnVsbCBjaGFyYWN0ZXIuYCxcclxuICAgIFsyMiAvKiBVTkVYUEVDVEVEX1NPTElEVVNfSU5fVEFHICovXTogXCJJbGxlZ2FsICcvJyBpbiB0YWdzLlwiLFxyXG4gICAgLy8gVnVlLXNwZWNpZmljIHBhcnNlIGVycm9yc1xyXG4gICAgWzIzIC8qIFhfSU5WQUxJRF9FTkRfVEFHICovXTogJ0ludmFsaWQgZW5kIHRhZy4nLFxyXG4gICAgWzI0IC8qIFhfTUlTU0lOR19FTkRfVEFHICovXTogJ0VsZW1lbnQgaXMgbWlzc2luZyBlbmQgdGFnLicsXHJcbiAgICBbMjUgLyogWF9NSVNTSU5HX0lOVEVSUE9MQVRJT05fRU5EICovXTogJ0ludGVycG9sYXRpb24gZW5kIHNpZ24gd2FzIG5vdCBmb3VuZC4nLFxyXG4gICAgWzI3IC8qIFhfTUlTU0lOR19EWU5BTUlDX0RJUkVDVElWRV9BUkdVTUVOVF9FTkQgKi9dOiAnRW5kIGJyYWNrZXQgZm9yIGR5bmFtaWMgZGlyZWN0aXZlIGFyZ3VtZW50IHdhcyBub3QgZm91bmQuICcgK1xyXG4gICAgICAgICdOb3RlIHRoYXQgZHluYW1pYyBkaXJlY3RpdmUgYXJndW1lbnQgY2Fubm90IGNvbnRhaW4gc3BhY2VzLicsXHJcbiAgICBbMjYgLyogWF9NSVNTSU5HX0RJUkVDVElWRV9OQU1FICovXTogJ0xlZ2FsIGRpcmVjdGl2ZSBuYW1lIHdhcyBleHBlY3RlZC4nLFxyXG4gICAgLy8gdHJhbnNmb3JtIGVycm9yc1xyXG4gICAgWzI4IC8qIFhfVl9JRl9OT19FWFBSRVNTSU9OICovXTogYHYtaWYvdi1lbHNlLWlmIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzI5IC8qIFhfVl9JRl9TQU1FX0tFWSAqL106IGB2LWlmL2Vsc2UgYnJhbmNoZXMgbXVzdCB1c2UgdW5pcXVlIGtleXMuYCxcclxuICAgIFszMCAvKiBYX1ZfRUxTRV9OT19BREpBQ0VOVF9JRiAqL106IGB2LWVsc2Uvdi1lbHNlLWlmIGhhcyBubyBhZGphY2VudCB2LWlmIG9yIHYtZWxzZS1pZi5gLFxyXG4gICAgWzMxIC8qIFhfVl9GT1JfTk9fRVhQUkVTU0lPTiAqL106IGB2LWZvciBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFszMiAvKiBYX1ZfRk9SX01BTEZPUk1FRF9FWFBSRVNTSU9OICovXTogYHYtZm9yIGhhcyBpbnZhbGlkIGV4cHJlc3Npb24uYCxcclxuICAgIFszMyAvKiBYX1ZfRk9SX1RFTVBMQVRFX0tFWV9QTEFDRU1FTlQgKi9dOiBgPHRlbXBsYXRlIHYtZm9yPiBrZXkgc2hvdWxkIGJlIHBsYWNlZCBvbiB0aGUgPHRlbXBsYXRlPiB0YWcuYCxcclxuICAgIFszNCAvKiBYX1ZfQklORF9OT19FWFBSRVNTSU9OICovXTogYHYtYmluZCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFszNSAvKiBYX1ZfT05fTk9fRVhQUkVTU0lPTiAqL106IGB2LW9uIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzM2IC8qIFhfVl9TTE9UX1VORVhQRUNURURfRElSRUNUSVZFX09OX1NMT1RfT1VUTEVUICovXTogYFVuZXhwZWN0ZWQgY3VzdG9tIGRpcmVjdGl2ZSBvbiA8c2xvdD4gb3V0bGV0LmAsXHJcbiAgICBbMzcgLyogWF9WX1NMT1RfTUlYRURfU0xPVF9VU0FHRSAqL106IGBNaXhlZCB2LXNsb3QgdXNhZ2Ugb24gYm90aCB0aGUgY29tcG9uZW50IGFuZCBuZXN0ZWQgPHRlbXBsYXRlPi5gICtcclxuICAgICAgICBgV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbmFtZWQgc2xvdHMsIGFsbCBzbG90cyBzaG91bGQgdXNlIDx0ZW1wbGF0ZT4gYCArXHJcbiAgICAgICAgYHN5bnRheCB0byBhdm9pZCBzY29wZSBhbWJpZ3VpdHkuYCxcclxuICAgIFszOCAvKiBYX1ZfU0xPVF9EVVBMSUNBVEVfU0xPVF9OQU1FUyAqL106IGBEdXBsaWNhdGUgc2xvdCBuYW1lcyBmb3VuZC4gYCxcclxuICAgIFszOSAvKiBYX1ZfU0xPVF9FWFRSQU5FT1VTX0RFRkFVTFRfU0xPVF9DSElMRFJFTiAqL106IGBFeHRyYW5lb3VzIGNoaWxkcmVuIGZvdW5kIHdoZW4gY29tcG9uZW50IGFscmVhZHkgaGFzIGV4cGxpY2l0bHkgbmFtZWQgYCArXHJcbiAgICAgICAgYGRlZmF1bHQgc2xvdC4gVGhlc2UgY2hpbGRyZW4gd2lsbCBiZSBpZ25vcmVkLmAsXHJcbiAgICBbNDAgLyogWF9WX1NMT1RfTUlTUExBQ0VEICovXTogYHYtc2xvdCBjYW4gb25seSBiZSB1c2VkIG9uIGNvbXBvbmVudHMgb3IgPHRlbXBsYXRlPiB0YWdzLmAsXHJcbiAgICBbNDEgLyogWF9WX01PREVMX05PX0VYUFJFU1NJT04gKi9dOiBgdi1tb2RlbCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFs0MiAvKiBYX1ZfTU9ERUxfTUFMRk9STUVEX0VYUFJFU1NJT04gKi9dOiBgdi1tb2RlbCB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSmF2YVNjcmlwdCBtZW1iZXIgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzQzIC8qIFhfVl9NT0RFTF9PTl9TQ09QRV9WQVJJQUJMRSAqL106IGB2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIHYtZm9yIG9yIHYtc2xvdCBzY29wZSB2YXJpYWJsZXMgYmVjYXVzZSB0aGV5IGFyZSBub3Qgd3JpdGFibGUuYCxcclxuICAgIFs0NCAvKiBYX0lOVkFMSURfRVhQUkVTU0lPTiAqL106IGBFcnJvciBwYXJzaW5nIEphdmFTY3JpcHQgZXhwcmVzc2lvbjogYCxcclxuICAgIFs0NSAvKiBYX0tFRVBfQUxJVkVfSU5WQUxJRF9DSElMRFJFTiAqL106IGA8S2VlcEFsaXZlPiBleHBlY3RzIGV4YWN0bHkgb25lIGNoaWxkIGNvbXBvbmVudC5gLFxyXG4gICAgLy8gZ2VuZXJpYyBlcnJvcnNcclxuICAgIFs0NiAvKiBYX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEICovXTogYFwicHJlZml4SWRlbnRpZmllcnNcIiBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIG9mIGNvbXBpbGVyLmAsXHJcbiAgICBbNDcgLyogWF9NT0RVTEVfTU9ERV9OT1RfU1VQUE9SVEVEICovXTogYEVTIG1vZHVsZSBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBjb21waWxlci5gLFxyXG4gICAgWzQ4IC8qIFhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEICovXTogYFwiY2FjaGVIYW5kbGVyc1wiIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSBcInByZWZpeElkZW50aWZpZXJzXCIgb3B0aW9uIGlzIGVuYWJsZWQuYCxcclxuICAgIFs0OSAvKiBYX1NDT1BFX0lEX05PVF9TVVBQT1JURUQgKi9dOiBgXCJzY29wZUlkXCIgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIG1vZHVsZSBtb2RlLmAsXHJcbiAgICAvLyBqdXN0IHRvIGZ1bGZpbGwgdHlwZXNcclxuICAgIFs1MCAvKiBfX0VYVEVORF9QT0lOVF9fICovXTogYGBcclxufTtcblxuY29uc3QgRlJBR01FTlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYEZyYWdtZW50YCA6IGBgKTtcclxuY29uc3QgVEVMRVBPUlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYFRlbGVwb3J0YCA6IGBgKTtcclxuY29uc3QgU1VTUEVOU0UgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYFN1c3BlbnNlYCA6IGBgKTtcclxuY29uc3QgS0VFUF9BTElWRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgS2VlcEFsaXZlYCA6IGBgKTtcclxuY29uc3QgQkFTRV9UUkFOU0lUSU9OID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBCYXNlVHJhbnNpdGlvbmAgOiBgYCk7XHJcbmNvbnN0IE9QRU5fQkxPQ0sgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG9wZW5CbG9ja2AgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9CTE9DSyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlQmxvY2tgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfRUxFTUVOVF9CTE9DSyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlRWxlbWVudEJsb2NrYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX1ZOT0RFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9FTEVNRU5UX1ZOT0RFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVFbGVtZW50Vk5vZGVgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfQ09NTUVOVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlQ29tbWVudFZOb2RlYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX1RFWFQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZVRleHRWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9TVEFUSUMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZVN0YXRpY1ZOb2RlYCA6IGBgKTtcclxuY29uc3QgUkVTT0xWRV9DT01QT05FTlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlc29sdmVDb21wb25lbnRgIDogYGApO1xyXG5jb25zdCBSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZXNvbHZlRHluYW1pY0NvbXBvbmVudGAgOiBgYCk7XHJcbmNvbnN0IFJFU09MVkVfRElSRUNUSVZFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZXNvbHZlRGlyZWN0aXZlYCA6IGBgKTtcclxuY29uc3QgUkVTT0xWRV9GSUxURVIgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlc29sdmVGaWx0ZXJgIDogYGApO1xyXG5jb25zdCBXSVRIX0RJUkVDVElWRVMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHdpdGhEaXJlY3RpdmVzYCA6IGBgKTtcclxuY29uc3QgUkVOREVSX0xJU1QgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlbmRlckxpc3RgIDogYGApO1xyXG5jb25zdCBSRU5ERVJfU0xPVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVuZGVyU2xvdGAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9TTE9UUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlU2xvdHNgIDogYGApO1xyXG5jb25zdCBUT19ESVNQTEFZX1NUUklORyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdG9EaXNwbGF5U3RyaW5nYCA6IGBgKTtcclxuY29uc3QgTUVSR0VfUFJPUFMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG1lcmdlUHJvcHNgIDogYGApO1xyXG5jb25zdCBOT1JNQUxJWkVfQ0xBU1MgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG5vcm1hbGl6ZUNsYXNzYCA6IGBgKTtcclxuY29uc3QgTk9STUFMSVpFX1NUWUxFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBub3JtYWxpemVTdHlsZWAgOiBgYCk7XHJcbmNvbnN0IE5PUk1BTElaRV9QUk9QUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgbm9ybWFsaXplUHJvcHNgIDogYGApO1xyXG5jb25zdCBHVUFSRF9SRUFDVElWRV9QUk9QUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgZ3VhcmRSZWFjdGl2ZVByb3BzYCA6IGBgKTtcclxuY29uc3QgVE9fSEFORExFUlMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHRvSGFuZGxlcnNgIDogYGApO1xyXG5jb25zdCBDQU1FTElaRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY2FtZWxpemVgIDogYGApO1xyXG5jb25zdCBDQVBJVEFMSVpFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjYXBpdGFsaXplYCA6IGBgKTtcclxuY29uc3QgVE9fSEFORExFUl9LRVkgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHRvSGFuZGxlcktleWAgOiBgYCk7XHJcbmNvbnN0IFNFVF9CTE9DS19UUkFDS0lORyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgc2V0QmxvY2tUcmFja2luZ2AgOiBgYCk7XHJcbmNvbnN0IFBVU0hfU0NPUEVfSUQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHB1c2hTY29wZUlkYCA6IGBgKTtcclxuY29uc3QgUE9QX1NDT1BFX0lEID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBwb3BTY29wZUlkYCA6IGBgKTtcclxuY29uc3QgV0lUSF9DVFggPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHdpdGhDdHhgIDogYGApO1xyXG5jb25zdCBVTlJFRiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdW5yZWZgIDogYGApO1xyXG5jb25zdCBJU19SRUYgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGlzUmVmYCA6IGBgKTtcclxuY29uc3QgV0lUSF9NRU1PID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB3aXRoTWVtb2AgOiBgYCk7XHJcbmNvbnN0IElTX01FTU9fU0FNRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgaXNNZW1vU2FtZWAgOiBgYCk7XHJcbi8vIE5hbWUgbWFwcGluZyBmb3IgcnVudGltZSBoZWxwZXJzIHRoYXQgbmVlZCB0byBiZSBpbXBvcnRlZCBmcm9tICd2dWUnIGluXHJcbi8vIGdlbmVyYXRlZCBjb2RlLiBNYWtlIHN1cmUgdGhlc2UgYXJlIGNvcnJlY3RseSBleHBvcnRlZCBpbiB0aGUgcnVudGltZSFcclxuLy8gVXNpbmcgYGFueWAgaGVyZSBiZWNhdXNlIFRTIGRvZXNuJ3QgYWxsb3cgc3ltYm9scyBhcyBpbmRleCB0eXBlLlxyXG5jb25zdCBoZWxwZXJOYW1lTWFwID0ge1xyXG4gICAgW0ZSQUdNRU5UXTogYEZyYWdtZW50YCxcclxuICAgIFtURUxFUE9SVF06IGBUZWxlcG9ydGAsXHJcbiAgICBbU1VTUEVOU0VdOiBgU3VzcGVuc2VgLFxyXG4gICAgW0tFRVBfQUxJVkVdOiBgS2VlcEFsaXZlYCxcclxuICAgIFtCQVNFX1RSQU5TSVRJT05dOiBgQmFzZVRyYW5zaXRpb25gLFxyXG4gICAgW09QRU5fQkxPQ0tdOiBgb3BlbkJsb2NrYCxcclxuICAgIFtDUkVBVEVfQkxPQ0tdOiBgY3JlYXRlQmxvY2tgLFxyXG4gICAgW0NSRUFURV9FTEVNRU5UX0JMT0NLXTogYGNyZWF0ZUVsZW1lbnRCbG9ja2AsXHJcbiAgICBbQ1JFQVRFX1ZOT0RFXTogYGNyZWF0ZVZOb2RlYCxcclxuICAgIFtDUkVBVEVfRUxFTUVOVF9WTk9ERV06IGBjcmVhdGVFbGVtZW50Vk5vZGVgLFxyXG4gICAgW0NSRUFURV9DT01NRU5UXTogYGNyZWF0ZUNvbW1lbnRWTm9kZWAsXHJcbiAgICBbQ1JFQVRFX1RFWFRdOiBgY3JlYXRlVGV4dFZOb2RlYCxcclxuICAgIFtDUkVBVEVfU1RBVElDXTogYGNyZWF0ZVN0YXRpY1ZOb2RlYCxcclxuICAgIFtSRVNPTFZFX0NPTVBPTkVOVF06IGByZXNvbHZlQ29tcG9uZW50YCxcclxuICAgIFtSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UXTogYHJlc29sdmVEeW5hbWljQ29tcG9uZW50YCxcclxuICAgIFtSRVNPTFZFX0RJUkVDVElWRV06IGByZXNvbHZlRGlyZWN0aXZlYCxcclxuICAgIFtSRVNPTFZFX0ZJTFRFUl06IGByZXNvbHZlRmlsdGVyYCxcclxuICAgIFtXSVRIX0RJUkVDVElWRVNdOiBgd2l0aERpcmVjdGl2ZXNgLFxyXG4gICAgW1JFTkRFUl9MSVNUXTogYHJlbmRlckxpc3RgLFxyXG4gICAgW1JFTkRFUl9TTE9UXTogYHJlbmRlclNsb3RgLFxyXG4gICAgW0NSRUFURV9TTE9UU106IGBjcmVhdGVTbG90c2AsXHJcbiAgICBbVE9fRElTUExBWV9TVFJJTkddOiBgdG9EaXNwbGF5U3RyaW5nYCxcclxuICAgIFtNRVJHRV9QUk9QU106IGBtZXJnZVByb3BzYCxcclxuICAgIFtOT1JNQUxJWkVfQ0xBU1NdOiBgbm9ybWFsaXplQ2xhc3NgLFxyXG4gICAgW05PUk1BTElaRV9TVFlMRV06IGBub3JtYWxpemVTdHlsZWAsXHJcbiAgICBbTk9STUFMSVpFX1BST1BTXTogYG5vcm1hbGl6ZVByb3BzYCxcclxuICAgIFtHVUFSRF9SRUFDVElWRV9QUk9QU106IGBndWFyZFJlYWN0aXZlUHJvcHNgLFxyXG4gICAgW1RPX0hBTkRMRVJTXTogYHRvSGFuZGxlcnNgLFxyXG4gICAgW0NBTUVMSVpFXTogYGNhbWVsaXplYCxcclxuICAgIFtDQVBJVEFMSVpFXTogYGNhcGl0YWxpemVgLFxyXG4gICAgW1RPX0hBTkRMRVJfS0VZXTogYHRvSGFuZGxlcktleWAsXHJcbiAgICBbU0VUX0JMT0NLX1RSQUNLSU5HXTogYHNldEJsb2NrVHJhY2tpbmdgLFxyXG4gICAgW1BVU0hfU0NPUEVfSURdOiBgcHVzaFNjb3BlSWRgLFxyXG4gICAgW1BPUF9TQ09QRV9JRF06IGBwb3BTY29wZUlkYCxcclxuICAgIFtXSVRIX0NUWF06IGB3aXRoQ3R4YCxcclxuICAgIFtVTlJFRl06IGB1bnJlZmAsXHJcbiAgICBbSVNfUkVGXTogYGlzUmVmYCxcclxuICAgIFtXSVRIX01FTU9dOiBgd2l0aE1lbW9gLFxyXG4gICAgW0lTX01FTU9fU0FNRV06IGBpc01lbW9TYW1lYFxyXG59O1xyXG5mdW5jdGlvbiByZWdpc3RlclJ1bnRpbWVIZWxwZXJzKGhlbHBlcnMpIHtcclxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaGVscGVycykuZm9yRWFjaChzID0+IHtcclxuICAgICAgICBoZWxwZXJOYW1lTWFwW3NdID0gaGVscGVyc1tzXTtcclxuICAgIH0pO1xyXG59XG5cbi8vIEFTVCBVdGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFNvbWUgZXhwcmVzc2lvbnMsIGUuZy4gc2VxdWVuY2UgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLCBhcmUgbmV2ZXJcclxuLy8gYXNzb2NpYXRlZCB3aXRoIHRlbXBsYXRlIG5vZGVzLCBzbyB0aGVpciBzb3VyY2UgbG9jYXRpb25zIGFyZSBqdXN0IGEgc3R1Yi5cclxuLy8gQ29udGFpbmVyIHR5cGVzIGxpa2UgQ29tcG91bmRFeHByZXNzaW9uIGFsc28gZG9uJ3QgbmVlZCBhIHJlYWwgbG9jYXRpb24uXHJcbmNvbnN0IGxvY1N0dWIgPSB7XHJcbiAgICBzb3VyY2U6ICcnLFxyXG4gICAgc3RhcnQ6IHsgbGluZTogMSwgY29sdW1uOiAxLCBvZmZzZXQ6IDAgfSxcclxuICAgIGVuZDogeyBsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMCB9XHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZVJvb3QoY2hpbGRyZW4sIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMCAvKiBST09UICovLFxyXG4gICAgICAgIGNoaWxkcmVuLFxyXG4gICAgICAgIGhlbHBlcnM6IFtdLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IFtdLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IFtdLFxyXG4gICAgICAgIGhvaXN0czogW10sXHJcbiAgICAgICAgaW1wb3J0czogW10sXHJcbiAgICAgICAgY2FjaGVkOiAwLFxyXG4gICAgICAgIHRlbXBzOiAwLFxyXG4gICAgICAgIGNvZGVnZW5Ob2RlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCB0YWcsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIGRpcmVjdGl2ZXMsIGlzQmxvY2sgPSBmYWxzZSwgZGlzYWJsZVRyYWNraW5nID0gZmFsc2UsIGlzQ29tcG9uZW50ID0gZmFsc2UsIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIGlmIChjb250ZXh0KSB7XHJcbiAgICAgICAgaWYgKGlzQmxvY2spIHtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKFdJVEhfRElSRUNUSVZFUyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxMyAvKiBWTk9ERV9DQUxMICovLFxyXG4gICAgICAgIHRhZyxcclxuICAgICAgICBwcm9wcyxcclxuICAgICAgICBjaGlsZHJlbixcclxuICAgICAgICBwYXRjaEZsYWcsXHJcbiAgICAgICAgZHluYW1pY1Byb3BzLFxyXG4gICAgICAgIGRpcmVjdGl2ZXMsXHJcbiAgICAgICAgaXNCbG9jayxcclxuICAgICAgICBkaXNhYmxlVHJhY2tpbmcsXHJcbiAgICAgICAgaXNDb21wb25lbnQsXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihlbGVtZW50cywgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNyAvKiBKU19BUlJBWV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxvYyxcclxuICAgICAgICBlbGVtZW50c1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RFeHByZXNzaW9uKHByb3BlcnRpZXMsIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTUgLyogSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIHByb3BlcnRpZXNcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlT2JqZWN0UHJvcGVydHkoa2V5LCB2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNiAvKiBKU19QUk9QRVJUWSAqLyxcclxuICAgICAgICBsb2M6IGxvY1N0dWIsXHJcbiAgICAgICAga2V5OiBpc1N0cmluZyhrZXkpID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihrZXksIHRydWUpIDoga2V5LFxyXG4gICAgICAgIHZhbHVlXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oY29udGVudCwgaXNTdGF0aWMgPSBmYWxzZSwgbG9jID0gbG9jU3R1YiwgY29uc3RUeXBlID0gMCAvKiBOT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBpc1N0YXRpYyxcclxuICAgICAgICBjb25zdFR5cGU6IGlzU3RhdGljID8gMyAvKiBDQU5fU1RSSU5HSUZZICovIDogY29uc3RUeXBlXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUludGVycG9sYXRpb24oY29udGVudCwgbG9jKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDUgLyogSU5URVJQT0xBVElPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY29udGVudDogaXNTdHJpbmcoY29udGVudClcclxuICAgICAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGNvbnRlbnQsIGZhbHNlLCBsb2MpXHJcbiAgICAgICAgICAgIDogY29udGVudFxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oY2hpbGRyZW4sIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogOCAvKiBDT01QT1VORF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxvYyxcclxuICAgICAgICBjaGlsZHJlblxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjYWxsZWUsIGFyZ3MgPSBbXSwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNCAvKiBKU19DQUxMX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNhbGxlZSxcclxuICAgICAgICBhcmd1bWVudHM6IGFyZ3NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHBhcmFtcywgcmV0dXJucyA9IHVuZGVmaW5lZCwgbmV3bGluZSA9IGZhbHNlLCBpc1Nsb3QgPSBmYWxzZSwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxOCAvKiBKU19GVU5DVElPTl9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICByZXR1cm5zLFxyXG4gICAgICAgIG5ld2xpbmUsXHJcbiAgICAgICAgaXNTbG90LFxyXG4gICAgICAgIGxvY1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBuZXdsaW5lID0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxOSAvKiBKU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIHRlc3QsXHJcbiAgICAgICAgY29uc2VxdWVudCxcclxuICAgICAgICBhbHRlcm5hdGUsXHJcbiAgICAgICAgbmV3bGluZSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ2FjaGVFeHByZXNzaW9uKGluZGV4LCB2YWx1ZSwgaXNWTm9kZSA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIwIC8qIEpTX0NBQ0hFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgaXNWTm9kZSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQmxvY2tTdGF0ZW1lbnQoYm9keSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMSAvKiBKU19CTE9DS19TVEFURU1FTlQgKi8sXHJcbiAgICAgICAgYm9keSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlVGVtcGxhdGVMaXRlcmFsKGVsZW1lbnRzKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIyIC8qIEpTX1RFTVBMQVRFX0xJVEVSQUwgKi8sXHJcbiAgICAgICAgZWxlbWVudHMsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUlmU3RhdGVtZW50KHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMyAvKiBKU19JRl9TVEFURU1FTlQgKi8sXHJcbiAgICAgICAgdGVzdCxcclxuICAgICAgICBjb25zZXF1ZW50LFxyXG4gICAgICAgIGFsdGVybmF0ZSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQXNzaWdubWVudEV4cHJlc3Npb24obGVmdCwgcmlnaHQpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjQgLyogSlNfQVNTSUdOTUVOVF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxlZnQsXHJcbiAgICAgICAgcmlnaHQsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihleHByZXNzaW9ucykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyNSAvKiBKU19TRVFVRU5DRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGV4cHJlc3Npb25zLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQocmV0dXJucykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyNiAvKiBKU19SRVRVUk5fU1RBVEVNRU5UICovLFxyXG4gICAgICAgIHJldHVybnMsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IGlzU3RhdGljRXhwID0gKHApID0+IHAudHlwZSA9PT0gNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLyAmJiBwLmlzU3RhdGljO1xyXG5jb25zdCBpc0J1aWx0SW5UeXBlID0gKHRhZywgZXhwZWN0ZWQpID0+IHRhZyA9PT0gZXhwZWN0ZWQgfHwgdGFnID09PSBoeXBoZW5hdGUoZXhwZWN0ZWQpO1xyXG5mdW5jdGlvbiBpc0NvcmVDb21wb25lbnQodGFnKSB7XHJcbiAgICBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdUZWxlcG9ydCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIFRFTEVQT1JUO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdTdXNwZW5zZScpKSB7XHJcbiAgICAgICAgcmV0dXJuIFNVU1BFTlNFO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdLZWVwQWxpdmUnKSkge1xyXG4gICAgICAgIHJldHVybiBLRUVQX0FMSVZFO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdCYXNlVHJhbnNpdGlvbicpKSB7XHJcbiAgICAgICAgcmV0dXJuIEJBU0VfVFJBTlNJVElPTjtcclxuICAgIH1cclxufVxyXG5jb25zdCBub25JZGVudGlmaWVyUkUgPSAvXlxcZHxbXlxcJFxcd10vO1xyXG5jb25zdCBpc1NpbXBsZUlkZW50aWZpZXIgPSAobmFtZSkgPT4gIW5vbklkZW50aWZpZXJSRS50ZXN0KG5hbWUpO1xyXG5jb25zdCB2YWxpZEZpcnN0SWRlbnRDaGFyUkUgPSAvW0EtWmEtel8kXFx4QTAtXFx1RkZGRl0vO1xyXG5jb25zdCB2YWxpZElkZW50Q2hhclJFID0gL1tcXC5cXD9cXHckXFx4QTAtXFx1RkZGRl0vO1xyXG5jb25zdCB3aGl0ZXNwYWNlUkUgPSAvXFxzK1suW11cXHMqfFxccypbLltdXFxzKy9nO1xyXG4vKipcclxuICogU2ltcGxlIGxleGVyIHRvIGNoZWNrIGlmIGFuIGV4cHJlc3Npb24gaXMgYSBtZW1iZXIgZXhwcmVzc2lvbi4gVGhpcyBpc1xyXG4gKiBsYXggYW5kIG9ubHkgY2hlY2tzIHZhbGlkaXR5IGF0IHRoZSByb290IGxldmVsIChpLmUuIGRvZXMgbm90IHZhbGlkYXRlIGV4cHNcclxuICogaW5zaWRlIHNxdWFyZSBicmFja2V0cyksIGJ1dCBpdCdzIG9rIHNpbmNlIHRoZXNlIGFyZSBvbmx5IHVzZWQgb24gdGVtcGxhdGVcclxuICogZXhwcmVzc2lvbnMgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgaW52YWxpZCBleHByZXNzaW9ucyBpbiB0aGUgZmlyc3QgcGxhY2UuXHJcbiAqL1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyID0gKHBhdGgpID0+IHtcclxuICAgIC8vIHJlbW92ZSB3aGl0ZXNwYWNlcyBhcm91bmQgLiBvciBbIGZpcnN0XHJcbiAgICBwYXRoID0gcGF0aC50cmltKCkucmVwbGFjZSh3aGl0ZXNwYWNlUkUsIHMgPT4gcy50cmltKCkpO1xyXG4gICAgbGV0IHN0YXRlID0gMCAvKiBpbk1lbWJlckV4cCAqLztcclxuICAgIGxldCBzdGF0ZVN0YWNrID0gW107XHJcbiAgICBsZXQgY3VycmVudE9wZW5CcmFja2V0Q291bnQgPSAwO1xyXG4gICAgbGV0IGN1cnJlbnRPcGVuUGFyZW5zQ291bnQgPSAwO1xyXG4gICAgbGV0IGN1cnJlbnRTdHJpbmdUeXBlID0gbnVsbDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoYXIgPSBwYXRoLmNoYXJBdChpKTtcclxuICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMCAvKiBpbk1lbWJlckV4cCAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnWycpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMSAvKiBpbkJyYWNrZXRzICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuQnJhY2tldENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSAnKCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMiAvKiBpblBhcmVucyAqLztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3BlblBhcmVuc0NvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghKGkgPT09IDAgPyB2YWxpZEZpcnN0SWRlbnRDaGFyUkUgOiB2YWxpZElkZW50Q2hhclJFKS50ZXN0KGNoYXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMSAvKiBpbkJyYWNrZXRzICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09IGAnYCB8fCBjaGFyID09PSBgXCJgIHx8IGNoYXIgPT09ICdgJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAzIC8qIGluU3RyaW5nICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdUeXBlID0gY2hhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09IGBbYCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuQnJhY2tldENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSBgXWApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIS0tY3VycmVudE9wZW5CcmFja2V0Q291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIgLyogaW5QYXJlbnMgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gYCdgIHx8IGNoYXIgPT09IGBcImAgfHwgY2hhciA9PT0gJ2AnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDMgLyogaW5TdHJpbmcgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1R5cGUgPSBjaGFyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYChgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE9wZW5QYXJlbnNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYClgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGV4cCBlbmRzIGFzIGEgY2FsbCB0aGVuIGl0IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCB2YWxpZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBwYXRoLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIS0tY3VycmVudE9wZW5QYXJlbnNDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMyAvKiBpblN0cmluZyAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSBjdXJyZW50U3RyaW5nVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nVHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWN1cnJlbnRPcGVuQnJhY2tldENvdW50ICYmICFjdXJyZW50T3BlblBhcmVuc0NvdW50O1xyXG59O1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb25Ob2RlID0gTk9PUFxyXG4gICAgO1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb24gPSBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyXHJcbiAgICA7XHJcbmZ1bmN0aW9uIGdldElubmVyUmFuZ2UobG9jLCBvZmZzZXQsIGxlbmd0aCkge1xyXG4gICAgY29uc3Qgc291cmNlID0gbG9jLnNvdXJjZS5zbGljZShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7XHJcbiAgICBjb25zdCBuZXdMb2MgPSB7XHJcbiAgICAgICAgc291cmNlLFxyXG4gICAgICAgIHN0YXJ0OiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUobG9jLnN0YXJ0LCBsb2Muc291cmNlLCBvZmZzZXQpLFxyXG4gICAgICAgIGVuZDogbG9jLmVuZFxyXG4gICAgfTtcclxuICAgIGlmIChsZW5ndGggIT0gbnVsbCkge1xyXG4gICAgICAgIG5ld0xvYy5lbmQgPSBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUobG9jLnN0YXJ0LCBsb2Muc291cmNlLCBvZmZzZXQgKyBsZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld0xvYztcclxufVxyXG5mdW5jdGlvbiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUocG9zLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyA9IHNvdXJjZS5sZW5ndGgpIHtcclxuICAgIHJldHVybiBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oZXh0ZW5kKHt9LCBwb3MpLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyk7XHJcbn1cclxuLy8gYWR2YW5jZSBieSBtdXRhdGlvbiB3aXRob3V0IGNsb25pbmcgKGZvciBwZXJmb3JtYW5jZSByZWFzb25zKSwgc2luY2UgdGhpc1xyXG4vLyBnZXRzIGNhbGxlZCBhIGxvdCBpbiB0aGUgcGFyc2VyXHJcbmZ1bmN0aW9uIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihwb3MsIHNvdXJjZSwgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gc291cmNlLmxlbmd0aCkge1xyXG4gICAgbGV0IGxpbmVzQ291bnQgPSAwO1xyXG4gICAgbGV0IGxhc3ROZXdMaW5lUG9zID0gLTE7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bWJlck9mQ2hhcmFjdGVyczsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGkpID09PSAxMCAvKiBuZXdsaW5lIGNoYXIgY29kZSAqLykge1xyXG4gICAgICAgICAgICBsaW5lc0NvdW50Kys7XHJcbiAgICAgICAgICAgIGxhc3ROZXdMaW5lUG9zID0gaTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwb3Mub2Zmc2V0ICs9IG51bWJlck9mQ2hhcmFjdGVycztcclxuICAgIHBvcy5saW5lICs9IGxpbmVzQ291bnQ7XHJcbiAgICBwb3MuY29sdW1uID1cclxuICAgICAgICBsYXN0TmV3TGluZVBvcyA9PT0gLTFcclxuICAgICAgICAgICAgPyBwb3MuY29sdW1uICsgbnVtYmVyT2ZDaGFyYWN0ZXJzXHJcbiAgICAgICAgICAgIDogbnVtYmVyT2ZDaGFyYWN0ZXJzIC0gbGFzdE5ld0xpbmVQb3M7XHJcbiAgICByZXR1cm4gcG9zO1xyXG59XHJcbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1zZykge1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICBpZiAoIWNvbmRpdGlvbikge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgYHVuZXhwZWN0ZWQgY29tcGlsZXIgY29uZGl0aW9uYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZmluZERpcihub2RlLCBuYW1lLCBhbGxvd0VtcHR5ID0gZmFsc2UpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgIChhbGxvd0VtcHR5IHx8IHAuZXhwKSAmJlxyXG4gICAgICAgICAgICAoaXNTdHJpbmcobmFtZSkgPyBwLm5hbWUgPT09IG5hbWUgOiBuYW1lLnRlc3QocC5uYW1lKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGZpbmRQcm9wKG5vZGUsIG5hbWUsIGR5bmFtaWNPbmx5ID0gZmFsc2UsIGFsbG93RW1wdHkgPSBmYWxzZSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHAudHlwZSA9PT0gNiAvKiBBVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICAgICAgaWYgKGR5bmFtaWNPbmx5KVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09IG5hbWUgJiYgKHAudmFsdWUgfHwgYWxsb3dFbXB0eSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHAubmFtZSA9PT0gJ2JpbmQnICYmXHJcbiAgICAgICAgICAgIChwLmV4cCB8fCBhbGxvd0VtcHR5KSAmJlxyXG4gICAgICAgICAgICBpc1N0YXRpY0FyZ09mKHAuYXJnLCBuYW1lKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTdGF0aWNBcmdPZihhcmcsIG5hbWUpIHtcclxuICAgIHJldHVybiAhIShhcmcgJiYgaXNTdGF0aWNFeHAoYXJnKSAmJiBhcmcuY29udGVudCA9PT0gbmFtZSk7XHJcbn1cclxuZnVuY3Rpb24gaGFzRHluYW1pY0tleVZCaW5kKG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLnByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgcC5uYW1lID09PSAnYmluZCcgJiZcclxuICAgICAgICAoIXAuYXJnIHx8IC8vIHYtYmluZD1cIm9ialwiXHJcbiAgICAgICAgICAgIHAuYXJnLnR5cGUgIT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8gfHwgLy8gdi1iaW5kOltfY3R4LmZvb11cclxuICAgICAgICAgICAgIXAuYXJnLmlzU3RhdGljKSAvLyB2LWJpbmQ6W2Zvb11cclxuICAgICk7XHJcbn1cclxuZnVuY3Rpb24gaXNUZXh0KG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLnR5cGUgPT09IDUgLyogSU5URVJQT0xBVElPTiAqLyB8fCBub2RlLnR5cGUgPT09IDIgLyogVEVYVCAqLztcclxufVxyXG5mdW5jdGlvbiBpc1ZTbG90KHApIHtcclxuICAgIHJldHVybiBwLnR5cGUgPT09IDcgLyogRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ3Nsb3QnO1xyXG59XHJcbmZ1bmN0aW9uIGlzVGVtcGxhdGVOb2RlKG5vZGUpIHtcclxuICAgIHJldHVybiAobm9kZS50eXBlID09PSAxIC8qIEVMRU1FTlQgKi8gJiYgbm9kZS50YWdUeXBlID09PSAzIC8qIFRFTVBMQVRFICovKTtcclxufVxyXG5mdW5jdGlvbiBpc1Nsb3RPdXRsZXQobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gMSAvKiBFTEVNRU5UICovICYmIG5vZGUudGFnVHlwZSA9PT0gMiAvKiBTTE9UICovO1xyXG59XHJcbmZ1bmN0aW9uIGdldFZOb2RlSGVscGVyKHNzciwgaXNDb21wb25lbnQpIHtcclxuICAgIHJldHVybiBzc3IgfHwgaXNDb21wb25lbnQgPyBDUkVBVEVfVk5PREUgOiBDUkVBVEVfRUxFTUVOVF9WTk9ERTtcclxufVxyXG5mdW5jdGlvbiBnZXRWTm9kZUJsb2NrSGVscGVyKHNzciwgaXNDb21wb25lbnQpIHtcclxuICAgIHJldHVybiBzc3IgfHwgaXNDb21wb25lbnQgPyBDUkVBVEVfQkxPQ0sgOiBDUkVBVEVfRUxFTUVOVF9CTE9DSztcclxufVxyXG5jb25zdCBwcm9wc0hlbHBlclNldCA9IG5ldyBTZXQoW05PUk1BTElaRV9QUk9QUywgR1VBUkRfUkVBQ1RJVkVfUFJPUFNdKTtcclxuZnVuY3Rpb24gZ2V0VW5ub3JtYWxpemVkUHJvcHMocHJvcHMsIGNhbGxQYXRoID0gW10pIHtcclxuICAgIGlmIChwcm9wcyAmJlxyXG4gICAgICAgICFpc1N0cmluZyhwcm9wcykgJiZcclxuICAgICAgICBwcm9wcy50eXBlID09PSAxNCAvKiBKU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBjb25zdCBjYWxsZWUgPSBwcm9wcy5jYWxsZWU7XHJcbiAgICAgICAgaWYgKCFpc1N0cmluZyhjYWxsZWUpICYmIHByb3BzSGVscGVyU2V0LmhhcyhjYWxsZWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhwcm9wcy5hcmd1bWVudHNbMF0sIGNhbGxQYXRoLmNvbmNhdChwcm9wcykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBbcHJvcHMsIGNhbGxQYXRoXTtcclxufVxyXG5mdW5jdGlvbiBpbmplY3RQcm9wKG5vZGUsIHByb3AsIGNvbnRleHQpIHtcclxuICAgIGxldCBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAvKipcclxuICAgICAqIDEuIG1lcmdlUHJvcHMoLi4uKVxyXG4gICAgICogMi4gdG9IYW5kbGVycyguLi4pXHJcbiAgICAgKiAzLiBub3JtYWxpemVQcm9wcyguLi4pXHJcbiAgICAgKiA0LiBub3JtYWxpemVQcm9wcyhndWFyZFJlYWN0aXZlUHJvcHMoLi4uKSlcclxuICAgICAqXHJcbiAgICAgKiB3ZSBuZWVkIHRvIGdldCB0aGUgcmVhbCBwcm9wcyBiZWZvcmUgbm9ybWFsaXphdGlvblxyXG4gICAgICovXHJcbiAgICBsZXQgcHJvcHMgPSBub2RlLnR5cGUgPT09IDEzIC8qIFZOT0RFX0NBTEwgKi8gPyBub2RlLnByb3BzIDogbm9kZS5hcmd1bWVudHNbMl07XHJcbiAgICBsZXQgY2FsbFBhdGggPSBbXTtcclxuICAgIGxldCBwYXJlbnRDYWxsO1xyXG4gICAgaWYgKHByb3BzICYmXHJcbiAgICAgICAgIWlzU3RyaW5nKHByb3BzKSAmJlxyXG4gICAgICAgIHByb3BzLnR5cGUgPT09IDE0IC8qIEpTX0NBTExfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGdldFVubm9ybWFsaXplZFByb3BzKHByb3BzKTtcclxuICAgICAgICBwcm9wcyA9IHJldFswXTtcclxuICAgICAgICBjYWxsUGF0aCA9IHJldFsxXTtcclxuICAgICAgICBwYXJlbnRDYWxsID0gY2FsbFBhdGhbY2FsbFBhdGgubGVuZ3RoIC0gMV07XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMgPT0gbnVsbCB8fCBpc1N0cmluZyhwcm9wcykpIHtcclxuICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAxNCAvKiBKU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAvLyBtZXJnZWQgcHJvcHMuLi4gYWRkIG91cnNcclxuICAgICAgICAvLyBvbmx5IGluamVjdCBrZXkgdG8gb2JqZWN0IGxpdGVyYWwgaWYgaXQncyB0aGUgZmlyc3QgYXJndW1lbnQgc28gdGhhdFxyXG4gICAgICAgIC8vIGlmIGRvZXNuJ3Qgb3ZlcnJpZGUgdXNlciBwcm92aWRlZCBrZXlzXHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSBwcm9wcy5hcmd1bWVudHNbMF07XHJcbiAgICAgICAgaWYgKCFpc1N0cmluZyhmaXJzdCkgJiYgZmlyc3QudHlwZSA9PT0gMTUgLyogSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgZmlyc3QucHJvcGVydGllcy51bnNoaWZ0KHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHByb3BzLmNhbGxlZSA9PT0gVE9fSEFORExFUlMpIHtcclxuICAgICAgICAgICAgICAgIC8vICMyMzY2XHJcbiAgICAgICAgICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihNRVJHRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSksXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMuYXJndW1lbnRzLnVuc2hpZnQoY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAhcHJvcHNXaXRoSW5qZWN0aW9uICYmIChwcm9wc1dpdGhJbmplY3Rpb24gPSBwcm9wcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAxNSAvKiBKU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGxldCBhbHJlYWR5RXhpc3RzID0gZmFsc2U7XHJcbiAgICAgICAgLy8gY2hlY2sgZXhpc3Rpbmcga2V5IHRvIGF2b2lkIG92ZXJyaWRpbmcgdXNlciBwcm92aWRlZCBrZXlzXHJcbiAgICAgICAgaWYgKHByb3Aua2V5LnR5cGUgPT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcEtleU5hbWUgPSBwcm9wLmtleS5jb250ZW50O1xyXG4gICAgICAgICAgICBhbHJlYWR5RXhpc3RzID0gcHJvcHMucHJvcGVydGllcy5zb21lKHAgPT4gcC5rZXkudHlwZSA9PT0gNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICAgICAgICAgcC5rZXkuY29udGVudCA9PT0gcHJvcEtleU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHtcclxuICAgICAgICAgICAgcHJvcHMucHJvcGVydGllcy51bnNoaWZ0KHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBwcm9wcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHNpbmdsZSB2LWJpbmQgd2l0aCBleHByZXNzaW9uLCByZXR1cm4gYSBtZXJnZWQgcmVwbGFjZW1lbnRcclxuICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihNRVJHRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pLFxyXG4gICAgICAgICAgICBwcm9wc1xyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIG5lc3RlZCBoZWxwZXIgY2FsbCwgZS5nLiBgbm9ybWFsaXplUHJvcHMoZ3VhcmRSZWFjdGl2ZVByb3BzKHByb3BzKSlgLFxyXG4gICAgICAgIC8vIGl0IHdpbGwgYmUgcmV3cml0dGVuIGFzIGBub3JtYWxpemVQcm9wcyhtZXJnZVByb3BzKHsga2V5OiAwIH0sIHByb3BzKSlgLFxyXG4gICAgICAgIC8vIHRoZSBgZ3VhcmRSZWFjdGl2ZVByb3BzYCB3aWxsIG5vIGxvbmdlciBiZSBuZWVkZWRcclxuICAgICAgICBpZiAocGFyZW50Q2FsbCAmJiBwYXJlbnRDYWxsLmNhbGxlZSA9PT0gR1VBUkRfUkVBQ1RJVkVfUFJPUFMpIHtcclxuICAgICAgICAgICAgcGFyZW50Q2FsbCA9IGNhbGxQYXRoW2NhbGxQYXRoLmxlbmd0aCAtIDJdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEzIC8qIFZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICBpZiAocGFyZW50Q2FsbCkge1xyXG4gICAgICAgICAgICBwYXJlbnRDYWxsLmFyZ3VtZW50c1swXSA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vZGUucHJvcHMgPSBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHBhcmVudENhbGwpIHtcclxuICAgICAgICAgICAgcGFyZW50Q2FsbC5hcmd1bWVudHNbMF0gPSBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub2RlLmFyZ3VtZW50c1syXSA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdG9WYWxpZEFzc2V0SWQobmFtZSwgdHlwZSkge1xyXG4gICAgLy8gc2VlIGlzc3VlIzQ0MjIsIHdlIG5lZWQgYWRkaW5nIGlkZW50aWZpZXIgb24gdmFsaWRBc3NldElkIGlmIHZhcmlhYmxlIGBuYW1lYCBoYXMgc3BlY2lmaWMgY2hhcmFjdGVyXHJcbiAgICByZXR1cm4gYF8ke3R5cGV9XyR7bmFtZS5yZXBsYWNlKC9bXlxcd10vZywgKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4gc2VhcmNoVmFsdWUgPT09ICctJyA/ICdfJyA6IG5hbWUuY2hhckNvZGVBdChyZXBsYWNlVmFsdWUpLnRvU3RyaW5nKCk7XHJcbiAgICB9KX1gO1xyXG59XHJcbi8vIENoZWNrIGlmIGEgbm9kZSBjb250YWlucyBleHByZXNzaW9ucyB0aGF0IHJlZmVyZW5jZSBjdXJyZW50IGNvbnRleHQgc2NvcGUgaWRzXHJcbmZ1bmN0aW9uIGhhc1Njb3BlUmVmKG5vZGUsIGlkcykge1xyXG4gICAgaWYgKCFub2RlIHx8IE9iamVjdC5rZXlzKGlkcykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDEgLyogRUxFTUVOVCAqLzpcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGhhc1Njb3BlUmVmKHAuYXJnLCBpZHMpIHx8IGhhc1Njb3BlUmVmKHAuZXhwLCBpZHMpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiBoYXNTY29wZVJlZihjLCBpZHMpKTtcclxuICAgICAgICBjYXNlIDExIC8qIEZPUiAqLzpcclxuICAgICAgICAgICAgaWYgKGhhc1Njb3BlUmVmKG5vZGUuc291cmNlLCBpZHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSA5IC8qIElGICovOlxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5icmFuY2hlcy5zb21lKGIgPT4gaGFzU2NvcGVSZWYoYiwgaWRzKSk7XHJcbiAgICAgICAgY2FzZSAxMCAvKiBJRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgICAgIGlmIChoYXNTY29wZVJlZihub2RlLmNvbmRpdGlvbiwgaWRzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IGhhc1Njb3BlUmVmKGMsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgcmV0dXJuICghbm9kZS5pc1N0YXRpYyAmJlxyXG4gICAgICAgICAgICAgICAgaXNTaW1wbGVJZGVudGlmaWVyKG5vZGUuY29udGVudCkgJiZcclxuICAgICAgICAgICAgICAgICEhaWRzW25vZGUuY29udGVudF0pO1xyXG4gICAgICAgIGNhc2UgOCAvKiBDT01QT1VORF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaXNPYmplY3QoYykgJiYgaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSA1IC8qIElOVEVSUE9MQVRJT04gKi86XHJcbiAgICAgICAgY2FzZSAxMiAvKiBURVhUX0NBTEwgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBoYXNTY29wZVJlZihub2RlLmNvbnRlbnQsIGlkcyk7XHJcbiAgICAgICAgY2FzZSAyIC8qIFRFWFQgKi86XHJcbiAgICAgICAgY2FzZSAzIC8qIENPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSA7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRNZW1vZWRWTm9kZUNhbGwobm9kZSkge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMTQgLyogSlNfQ0FMTF9FWFBSRVNTSU9OICovICYmIG5vZGUuY2FsbGVlID09PSBXSVRIX01FTU8pIHtcclxuICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHNbMV0ucmV0dXJucztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG1ha2VCbG9jayhub2RlLCB7IGhlbHBlciwgcmVtb3ZlSGVscGVyLCBpblNTUiB9KSB7XHJcbiAgICBpZiAoIW5vZGUuaXNCbG9jaykge1xyXG4gICAgICAgIG5vZGUuaXNCbG9jayA9IHRydWU7XHJcbiAgICAgICAgcmVtb3ZlSGVscGVyKGdldFZOb2RlSGVscGVyKGluU1NSLCBub2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgaGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgIGhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGluU1NSLCBub2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgZGVwcmVjYXRpb25EYXRhID0ge1xyXG4gICAgW1wiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYFBsYXRmb3JtLW5hdGl2ZSBlbGVtZW50cyB3aXRoIFwiaXNcIiBwcm9wIHdpbGwgbm8gbG9uZ2VyIGJlIGAgK1xyXG4gICAgICAgICAgICBgdHJlYXRlZCBhcyBjb21wb25lbnRzIGluIFZ1ZSAzIHVubGVzcyB0aGUgXCJpc1wiIHZhbHVlIGlzIGV4cGxpY2l0bHkgYCArXHJcbiAgICAgICAgICAgIGBwcmVmaXhlZCB3aXRoIFwidnVlOlwiLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL2N1c3RvbS1lbGVtZW50cy1pbnRlcm9wLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9CSU5EX1NZTkNcIiAvKiBDT01QSUxFUl9WX0JJTkRfU1lOQyAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBrZXkgPT4gYC5zeW5jIG1vZGlmaWVyIGZvciB2LWJpbmQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHYtbW9kZWwgd2l0aCBgICtcclxuICAgICAgICAgICAgYGFyZ3VtZW50IGluc3RlYWQuIFxcYHYtYmluZDoke2tleX0uc3luY1xcYCBzaG91bGQgYmUgY2hhbmdlZCB0byBgICtcclxuICAgICAgICAgICAgYFxcYHYtbW9kZWw6JHtrZXl9XFxgLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtbW9kZWwuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX0JJTkRfUFJPUFwiIC8qIENPTVBJTEVSX1ZfQklORF9QUk9QICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGAucHJvcCBtb2RpZmllciBmb3Igdi1iaW5kIGhhcyBiZWVuIHJlbW92ZWQgYW5kIG5vIGxvbmdlciBuZWNlc3NhcnkuIGAgK1xyXG4gICAgICAgICAgICBgVnVlIDMgd2lsbCBhdXRvbWF0aWNhbGx5IHNldCBhIGJpbmRpbmcgYXMgRE9NIHByb3BlcnR5IHdoZW4gYXBwcm9wcmlhdGUuYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIiAvKiBDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGB2LWJpbmQ9XCJvYmpcIiB1c2FnZSBpcyBub3cgb3JkZXIgc2Vuc2l0aXZlIGFuZCBiZWhhdmVzIGxpa2UgSmF2YVNjcmlwdCBgICtcclxuICAgICAgICAgICAgYG9iamVjdCBzcHJlYWQ6IGl0IHdpbGwgbm93IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBub24tbWVyZ2VhYmxlIGF0dHJpYnV0ZSBgICtcclxuICAgICAgICAgICAgYHRoYXQgYXBwZWFycyBiZWZvcmUgdi1iaW5kIGluIHRoZSBjYXNlIG9mIGNvbmZsaWN0LiBgICtcclxuICAgICAgICAgICAgYFRvIHJldGFpbiAyLnggYmVoYXZpb3IsIG1vdmUgdi1iaW5kIHRvIG1ha2UgaXQgdGhlIGZpcnN0IGF0dHJpYnV0ZS4gYCArXHJcbiAgICAgICAgICAgIGBZb3UgY2FuIGFsc28gc3VwcHJlc3MgdGhpcyB3YXJuaW5nIGlmIHRoZSB1c2FnZSBpcyBpbnRlbmRlZC5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LWJpbmQuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX09OX05BVElWRVwiIC8qIENPTVBJTEVSX1ZfT05fTkFUSVZFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGAubmF0aXZlIG1vZGlmaWVyIGZvciB2LW9uIGhhcyBiZWVuIHJlbW92ZWQgYXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LW9uLW5hdGl2ZS1tb2RpZmllci1yZW1vdmVkLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFXCIgLyogQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGB2LWlmIC8gdi1mb3IgcHJlY2VkZW5jZSB3aGVuIHVzZWQgb24gdGhlIHNhbWUgZWxlbWVudCBoYXMgY2hhbmdlZCBgICtcclxuICAgICAgICAgICAgYGluIFZ1ZSAzOiB2LWlmIG5vdyB0YWtlcyBoaWdoZXIgcHJlY2VkZW5jZSBhbmQgd2lsbCBubyBsb25nZXIgaGF2ZSBgICtcclxuICAgICAgICAgICAgYGFjY2VzcyB0byB2LWZvciBzY29wZSB2YXJpYWJsZXMuIEl0IGlzIGJlc3QgdG8gYXZvaWQgdGhlIGFtYmlndWl0eSBgICtcclxuICAgICAgICAgICAgYHdpdGggPHRlbXBsYXRlPiB0YWdzIG9yIHVzZSBhIGNvbXB1dGVkIHByb3BlcnR5IHRoYXQgZmlsdGVycyB2LWZvciBgICtcclxuICAgICAgICAgICAgYGRhdGEgc291cmNlLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtaWYtdi1mb3IuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIiAvKiBDT01QSUxFUl9OQVRJVkVfVEVNUExBVEUgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYDx0ZW1wbGF0ZT4gd2l0aCBubyBzcGVjaWFsIGRpcmVjdGl2ZXMgd2lsbCByZW5kZXIgYXMgYSBuYXRpdmUgdGVtcGxhdGUgYCArXHJcbiAgICAgICAgICAgIGBlbGVtZW50IGluc3RlYWQgb2YgaXRzIGlubmVyIGNvbnRlbnQgaW4gVnVlIDMuYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX0lOTElORV9URU1QTEFURVwiIC8qIENPTVBJTEVSX0lOTElORV9URU1QTEFURSAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgXCJpbmxpbmUtdGVtcGxhdGVcIiBoYXMgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL2lubGluZS10ZW1wbGF0ZS1hdHRyaWJ1dGUuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9GSUxURVJcIiAvKiBDT01QSUxFUl9GSUxURVJTICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGBmaWx0ZXJzIGhhdmUgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLiBgICtcclxuICAgICAgICAgICAgYFRoZSBcInxcIiBzeW1ib2wgd2lsbCBiZSB0cmVhdGVkIGFzIG5hdGl2ZSBKYXZhU2NyaXB0IGJpdHdpc2UgT1Igb3BlcmF0b3IuIGAgK1xyXG4gICAgICAgICAgICBgVXNlIG1ldGhvZCBjYWxscyBvciBjb21wdXRlZCBwcm9wZXJ0aWVzIGluc3RlYWQuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvZmlsdGVycy5odG1sYFxyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBnZXRDb21wYXRWYWx1ZShrZXksIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGNvbnRleHQub3B0aW9uc1xyXG4gICAgICAgID8gY29udGV4dC5vcHRpb25zLmNvbXBhdENvbmZpZ1xyXG4gICAgICAgIDogY29udGV4dC5jb21wYXRDb25maWc7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZyAmJiBjb25maWdba2V5XTtcclxuICAgIGlmIChrZXkgPT09ICdNT0RFJykge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSB8fCAzOyAvLyBjb21waWxlciBkZWZhdWx0cyB0byB2MyBiZWhhdmlvclxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzQ29tcGF0RW5hYmxlZChrZXksIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG1vZGUgPSBnZXRDb21wYXRWYWx1ZSgnTU9ERScsIGNvbnRleHQpO1xyXG4gICAgY29uc3QgdmFsdWUgPSBnZXRDb21wYXRWYWx1ZShrZXksIGNvbnRleHQpO1xyXG4gICAgLy8gaW4gdjMgbW9kZSwgb25seSBlbmFibGUgaWYgZXhwbGljaXRseSBzZXQgdG8gdHJ1ZVxyXG4gICAgLy8gb3RoZXJ3aXNlIGVuYWJsZSBmb3IgYW55IG5vbi1mYWxzZSB2YWx1ZVxyXG4gICAgcmV0dXJuIG1vZGUgPT09IDMgPyB2YWx1ZSA9PT0gdHJ1ZSA6IHZhbHVlICE9PSBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBjaGVja0NvbXBhdEVuYWJsZWQoa2V5LCBjb250ZXh0LCBsb2MsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IGVuYWJsZWQgPSBpc0NvbXBhdEVuYWJsZWQoa2V5LCBjb250ZXh0KTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZW5hYmxlZCkge1xyXG4gICAgICAgIHdhcm5EZXByZWNhdGlvbihrZXksIGNvbnRleHQsIGxvYywgLi4uYXJncyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW5hYmxlZDtcclxufVxyXG5mdW5jdGlvbiB3YXJuRGVwcmVjYXRpb24oa2V5LCBjb250ZXh0LCBsb2MsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IHZhbCA9IGdldENvbXBhdFZhbHVlKGtleSwgY29udGV4dCk7XHJcbiAgICBpZiAodmFsID09PSAnc3VwcHJlc3Mtd2FybmluZycpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGxpbmsgfSA9IGRlcHJlY2F0aW9uRGF0YVtrZXldO1xyXG4gICAgY29uc3QgbXNnID0gYChkZXByZWNhdGlvbiAke2tleX0pICR7dHlwZW9mIG1lc3NhZ2UgPT09ICdmdW5jdGlvbicgPyBtZXNzYWdlKC4uLmFyZ3MpIDogbWVzc2FnZX0ke2xpbmsgPyBgXFxuICBEZXRhaWxzOiAke2xpbmt9YCA6IGBgfWA7XHJcbiAgICBjb25zdCBlcnIgPSBuZXcgU3ludGF4RXJyb3IobXNnKTtcclxuICAgIGVyci5jb2RlID0ga2V5O1xyXG4gICAgaWYgKGxvYylcclxuICAgICAgICBlcnIubG9jID0gbG9jO1xyXG4gICAgY29udGV4dC5vbldhcm4oZXJyKTtcclxufVxuXG4vLyBUaGUgZGVmYXVsdCBkZWNvZGVyIG9ubHkgcHJvdmlkZXMgZXNjYXBlcyBmb3IgY2hhcmFjdGVycyByZXNlcnZlZCBhcyBwYXJ0IG9mXHJcbi8vIHRoZSB0ZW1wbGF0ZSBzeW50YXgsIGFuZCBpcyBvbmx5IHVzZWQgaWYgdGhlIGN1c3RvbSByZW5kZXJlciBkaWQgbm90IHByb3ZpZGVcclxuLy8gYSBwbGF0Zm9ybS1zcGVjaWZpYyBkZWNvZGVyLlxyXG5jb25zdCBkZWNvZGVSRSA9IC8mKGd0fGx0fGFtcHxhcG9zfHF1b3QpOy9nO1xyXG5jb25zdCBkZWNvZGVNYXAgPSB7XHJcbiAgICBndDogJz4nLFxyXG4gICAgbHQ6ICc8JyxcclxuICAgIGFtcDogJyYnLFxyXG4gICAgYXBvczogXCInXCIsXHJcbiAgICBxdW90OiAnXCInXHJcbn07XHJcbmNvbnN0IGRlZmF1bHRQYXJzZXJPcHRpb25zID0ge1xyXG4gICAgZGVsaW1pdGVyczogW2B7e2AsIGB9fWBdLFxyXG4gICAgZ2V0TmFtZXNwYWNlOiAoKSA9PiAwIC8qIEhUTUwgKi8sXHJcbiAgICBnZXRUZXh0TW9kZTogKCkgPT4gMCAvKiBEQVRBICovLFxyXG4gICAgaXNWb2lkVGFnOiBOTyxcclxuICAgIGlzUHJlVGFnOiBOTyxcclxuICAgIGlzQ3VzdG9tRWxlbWVudDogTk8sXHJcbiAgICBkZWNvZGVFbnRpdGllczogKHJhd1RleHQpID0+IHJhd1RleHQucmVwbGFjZShkZWNvZGVSRSwgKF8sIHAxKSA9PiBkZWNvZGVNYXBbcDFdKSxcclxuICAgIG9uRXJyb3I6IGRlZmF1bHRPbkVycm9yLFxyXG4gICAgb25XYXJuOiBkZWZhdWx0T25XYXJuLFxyXG4gICAgY29tbWVudHM6IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG59O1xyXG5mdW5jdGlvbiBiYXNlUGFyc2UoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlUGFyc2VyQ29udGV4dChjb250ZW50LCBvcHRpb25zKTtcclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJvb3QocGFyc2VDaGlsZHJlbihjb250ZXh0LCAwIC8qIERBVEEgKi8sIFtdKSwgZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUGFyc2VyQ29udGV4dChjb250ZW50LCByYXdPcHRpb25zKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0UGFyc2VyT3B0aW9ucyk7XHJcbiAgICBsZXQga2V5O1xyXG4gICAgZm9yIChrZXkgaW4gcmF3T3B0aW9ucykge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBvcHRpb25zW2tleV0gPVxyXG4gICAgICAgICAgICByYXdPcHRpb25zW2tleV0gPT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgPyBkZWZhdWx0UGFyc2VyT3B0aW9uc1trZXldXHJcbiAgICAgICAgICAgICAgICA6IHJhd09wdGlvbnNba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICBjb2x1bW46IDEsXHJcbiAgICAgICAgbGluZTogMSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgb3JpZ2luYWxTb3VyY2U6IGNvbnRlbnQsXHJcbiAgICAgICAgc291cmNlOiBjb250ZW50LFxyXG4gICAgICAgIGluUHJlOiBmYWxzZSxcclxuICAgICAgICBpblZQcmU6IGZhbHNlLFxyXG4gICAgICAgIG9uV2Fybjogb3B0aW9ucy5vbldhcm5cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VDaGlsZHJlbihjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpIHtcclxuICAgIGNvbnN0IHBhcmVudCA9IGxhc3QoYW5jZXN0b3JzKTtcclxuICAgIGNvbnN0IG5zID0gcGFyZW50ID8gcGFyZW50Lm5zIDogMCAvKiBIVE1MICovO1xyXG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcclxuICAgIHdoaWxlICghaXNFbmQoY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKSkge1xyXG4gICAgICAgIGNvbnN0IHMgPSBjb250ZXh0LnNvdXJjZTtcclxuICAgICAgICBsZXQgbm9kZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAobW9kZSA9PT0gMCAvKiBEQVRBICovIHx8IG1vZGUgPT09IDEgLyogUkNEQVRBICovKSB7XHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5pblZQcmUgJiYgc3RhcnRzV2l0aChzLCBjb250ZXh0Lm9wdGlvbnMuZGVsaW1pdGVyc1swXSkpIHtcclxuICAgICAgICAgICAgICAgIC8vICd7eydcclxuICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUludGVycG9sYXRpb24oY29udGV4dCwgbW9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gMCAvKiBEQVRBICovICYmIHNbMF0gPT09ICc8Jykge1xyXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RhZy1vcGVuLXN0YXRlXHJcbiAgICAgICAgICAgICAgICBpZiAocy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNSAvKiBFT0ZfQkVGT1JFX1RBR19OQU1FICovLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gPT09ICchJykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNtYXJrdXAtZGVjbGFyYXRpb24tb3Blbi1zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHMsICc8IS0tJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChzLCAnPCFET0NUWVBFJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIERPQ1RZUEUgYnkgYSBsaW1pdGF0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgocywgJzwhW0NEQVRBWycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChucyAhPT0gMCAvKiBIVE1MICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VDREFUQShjb250ZXh0LCBhbmNlc3RvcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEgLyogQ0RBVEFfSU5fSFRNTF9DT05URU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDExIC8qIElOQ09SUkVDVExZX09QRU5FRF9DT01NRU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gPT09ICcvJykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlbmQtdGFnLW9wZW4tc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICBpZiAocy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDUgLyogRU9GX0JFRk9SRV9UQUdfTkFNRSAqLywgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMl0gPT09ICc+Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTQgLyogTUlTU0lOR19FTkRfVEFHX05BTUUgKi8sIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgvW2Etel0vaS50ZXN0KHNbMl0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyMyAvKiBYX0lOVkFMSURfRU5EX1RBRyAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlVGFnKGNvbnRleHQsIDEgLyogRW5kICovLCBwYXJlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMiAvKiBJTlZBTElEX0ZJUlNUX0NIQVJBQ1RFUl9PRl9UQUdfTkFNRSAqLywgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgvW2Etel0vaS50ZXN0KHNbMV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlRWxlbWVudChjb250ZXh0LCBhbmNlc3RvcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDIueCA8dGVtcGxhdGU+IHdpdGggbm8gZGlyZWN0aXZlIGNvbXBhdFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIiAvKiBDT01QSUxFUl9OQVRJVkVfVEVNUExBVEUgKi8sIGNvbnRleHQpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50YWcgPT09ICd0ZW1wbGF0ZScgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIW5vZGUucHJvcHMuc29tZShwID0+IHAudHlwZSA9PT0gNyAvKiBESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3BlY2lhbFRlbXBsYXRlRGlyZWN0aXZlKHAubmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybkRlcHJlY2F0aW9uKFwiQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFXCIgLyogQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFICovLCBjb250ZXh0LCBub2RlLmxvYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gPT09ICc/Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyMSAvKiBVTkVYUEVDVEVEX1FVRVNUSU9OX01BUktfSU5TVEVBRF9PRl9UQUdfTkFNRSAqLywgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEyIC8qIElOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FICovLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgICAgICAgbm9kZSA9IHBhcnNlVGV4dChjb250ZXh0LCBtb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBwdXNoTm9kZShub2Rlcywgbm9kZVtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHB1c2hOb2RlKG5vZGVzLCBub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBXaGl0ZXNwYWNlIGhhbmRsaW5nIHN0cmF0ZWd5IGxpa2UgdjJcclxuICAgIGxldCByZW1vdmVkV2hpdGVzcGFjZSA9IGZhbHNlO1xyXG4gICAgaWYgKG1vZGUgIT09IDIgLyogUkFXVEVYVCAqLyAmJiBtb2RlICE9PSAxIC8qIFJDREFUQSAqLykge1xyXG4gICAgICAgIGNvbnN0IHNob3VsZENvbmRlbnNlID0gY29udGV4dC5vcHRpb25zLndoaXRlc3BhY2UgIT09ICdwcmVzZXJ2ZSc7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5pblByZSAmJiBub2RlLnR5cGUgPT09IDIgLyogVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEvW15cXHRcXHJcXG5cXGYgXS8udGVzdChub2RlLmNvbnRlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IG5vZGVzW2kgLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbm9kZXNbaSArIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBpZjpcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIHRoZSB3aGl0ZXNwYWNlIGlzIHRoZSBmaXJzdCBvciBsYXN0IG5vZGUsIG9yOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gKGNvbmRlbnNlIG1vZGUpIHRoZSB3aGl0ZXNwYWNlIGlzIGFkamFjZW50IHRvIGEgY29tbWVudCwgb3I6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSAoY29uZGVuc2UgbW9kZSkgdGhlIHdoaXRlc3BhY2UgaXMgYmV0d2VlbiB0d28gZWxlbWVudHMgQU5EIGNvbnRhaW5zIG5ld2xpbmVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXYgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIW5leHQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHNob3VsZENvbmRlbnNlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldi50eXBlID09PSAzIC8qIENPTU1FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LnR5cGUgPT09IDMgLyogQ09NTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV2LnR5cGUgPT09IDEgLyogRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LnR5cGUgPT09IDEgLyogRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvW1xcclxcbl0vLnRlc3Qobm9kZS5jb250ZW50KSkpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkV2hpdGVzcGFjZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzW2ldID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIHdoaXRlc3BhY2UgaXMgY29uZGVuc2VkIGludG8gYSBzaW5nbGUgc3BhY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jb250ZW50ID0gJyAnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNob3VsZENvbmRlbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gY29uZGVuc2UgbW9kZSwgY29uc2VjdXRpdmUgd2hpdGVzcGFjZXMgaW4gdGV4dCBhcmUgY29uZGVuc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZG93biB0byBhIHNpbmdsZSBzcGFjZS5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmNvbnRlbnQgPSBub2RlLmNvbnRlbnQucmVwbGFjZSgvW1xcdFxcclxcblxcZiBdKy9nLCAnICcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIFJlbW92ZSBjb21tZW50IG5vZGVzIGlmIGRlc2lyZWQgYnkgY29uZmlndXJhdGlvbi5cclxuICAgICAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAzIC8qIENPTU1FTlQgKi8gJiYgIWNvbnRleHQub3B0aW9ucy5jb21tZW50cykge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlZFdoaXRlc3BhY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbm9kZXNbaV0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250ZXh0LmluUHJlICYmIHBhcmVudCAmJiBjb250ZXh0Lm9wdGlvbnMuaXNQcmVUYWcocGFyZW50LnRhZykpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGxlYWRpbmcgbmV3bGluZSBwZXIgaHRtbCBzcGVjXHJcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2dyb3VwaW5nLWNvbnRlbnQuaHRtbCN0aGUtcHJlLWVsZW1lbnRcclxuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBub2Rlc1swXTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIGZpcnN0LnR5cGUgPT09IDIgLyogVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgZmlyc3QuY29udGVudCA9IGZpcnN0LmNvbnRlbnQucmVwbGFjZSgvXlxccj9cXG4vLCAnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVtb3ZlZFdoaXRlc3BhY2UgPyBub2Rlcy5maWx0ZXIoQm9vbGVhbikgOiBub2RlcztcclxufVxyXG5mdW5jdGlvbiBwdXNoTm9kZShub2Rlcywgbm9kZSkge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMiAvKiBURVhUICovKSB7XHJcbiAgICAgICAgY29uc3QgcHJldiA9IGxhc3Qobm9kZXMpO1xyXG4gICAgICAgIC8vIE1lcmdlIGlmIGJvdGggdGhpcyBhbmQgdGhlIHByZXZpb3VzIG5vZGUgYXJlIHRleHQgYW5kIHRob3NlIGFyZVxyXG4gICAgICAgIC8vIGNvbnNlY3V0aXZlLiBUaGlzIGhhcHBlbnMgZm9yIGNhc2VzIGxpa2UgXCJhIDwgYlwiLlxyXG4gICAgICAgIGlmIChwcmV2ICYmXHJcbiAgICAgICAgICAgIHByZXYudHlwZSA9PT0gMiAvKiBURVhUICovICYmXHJcbiAgICAgICAgICAgIHByZXYubG9jLmVuZC5vZmZzZXQgPT09IG5vZGUubG9jLnN0YXJ0Lm9mZnNldCkge1xyXG4gICAgICAgICAgICBwcmV2LmNvbnRlbnQgKz0gbm9kZS5jb250ZW50O1xyXG4gICAgICAgICAgICBwcmV2LmxvYy5lbmQgPSBub2RlLmxvYy5lbmQ7XHJcbiAgICAgICAgICAgIHByZXYubG9jLnNvdXJjZSArPSBub2RlLmxvYy5zb3VyY2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQ0RBVEEoY29udGV4dCwgYW5jZXN0b3JzKSB7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgOSk7XHJcbiAgICBjb25zdCBub2RlcyA9IHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgMyAvKiBDREFUQSAqLywgYW5jZXN0b3JzKTtcclxuICAgIGlmIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNiAvKiBFT0ZfSU5fQ0RBVEEgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGVzO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQ29tbWVudChjb250ZXh0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGxldCBjb250ZW50O1xyXG4gICAgLy8gUmVndWxhciBjb21tZW50LlxyXG4gICAgY29uc3QgbWF0Y2ggPSAvLS0oXFwhKT8+Ly5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoNCk7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIGNvbnRleHQuc291cmNlLmxlbmd0aCk7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDcgLyogRU9GX0lOX0NPTU1FTlQgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKG1hdGNoLmluZGV4IDw9IDMpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDAgLyogQUJSVVBUX0NMT1NJTkdfT0ZfRU1QVFlfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtYXRjaFsxXSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTAgLyogSU5DT1JSRUNUTFlfQ0xPU0VEX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoNCwgbWF0Y2guaW5kZXgpO1xyXG4gICAgICAgIC8vIEFkdmFuY2luZyB3aXRoIHJlcG9ydGluZyBuZXN0ZWQgY29tbWVudHMuXHJcbiAgICAgICAgY29uc3QgcyA9IGNvbnRleHQuc291cmNlLnNsaWNlKDAsIG1hdGNoLmluZGV4KTtcclxuICAgICAgICBsZXQgcHJldkluZGV4ID0gMSwgbmVzdGVkSW5kZXggPSAwO1xyXG4gICAgICAgIHdoaWxlICgobmVzdGVkSW5kZXggPSBzLmluZGV4T2YoJzwhLS0nLCBwcmV2SW5kZXgpKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIG5lc3RlZEluZGV4IC0gcHJldkluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgIGlmIChuZXN0ZWRJbmRleCArIDQgPCBzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE2IC8qIE5FU1RFRF9DT01NRU5UICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwcmV2SW5kZXggPSBuZXN0ZWRJbmRleCArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCAtIHByZXZJbmRleCArIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAzIC8qIENPTU1FTlQgKi8sXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCkge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBjb250ZXh0LnNvdXJjZVsxXSA9PT0gJz8nID8gMSA6IDI7XHJcbiAgICBsZXQgY29udGVudDtcclxuICAgIGNvbnN0IGNsb3NlSW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKCc+Jyk7XHJcbiAgICBpZiAoY2xvc2VJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoY29udGVudFN0YXJ0KTtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgY29udGV4dC5zb3VyY2UubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZShjb250ZW50U3RhcnQsIGNsb3NlSW5kZXgpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBjbG9zZUluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDMgLyogQ09NTUVOVCAqLyxcclxuICAgICAgICBjb250ZW50LFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUVsZW1lbnQoY29udGV4dCwgYW5jZXN0b3JzKSB7XHJcbiAgICAvLyBTdGFydCB0YWcuXHJcbiAgICBjb25zdCB3YXNJblByZSA9IGNvbnRleHQuaW5QcmU7XHJcbiAgICBjb25zdCB3YXNJblZQcmUgPSBjb250ZXh0LmluVlByZTtcclxuICAgIGNvbnN0IHBhcmVudCA9IGxhc3QoYW5jZXN0b3JzKTtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBwYXJzZVRhZyhjb250ZXh0LCAwIC8qIFN0YXJ0ICovLCBwYXJlbnQpO1xyXG4gICAgY29uc3QgaXNQcmVCb3VuZGFyeSA9IGNvbnRleHQuaW5QcmUgJiYgIXdhc0luUHJlO1xyXG4gICAgY29uc3QgaXNWUHJlQm91bmRhcnkgPSBjb250ZXh0LmluVlByZSAmJiAhd2FzSW5WUHJlO1xyXG4gICAgaWYgKGVsZW1lbnQuaXNTZWxmQ2xvc2luZyB8fCBjb250ZXh0Lm9wdGlvbnMuaXNWb2lkVGFnKGVsZW1lbnQudGFnKSkge1xyXG4gICAgICAgIC8vICM0MDMwIHNlbGYtY2xvc2luZyA8cHJlPiB0YWdcclxuICAgICAgICBpZiAoaXNQcmVCb3VuZGFyeSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluUHJlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1ZQcmVCb3VuZGFyeSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluVlByZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuICAgIC8vIENoaWxkcmVuLlxyXG4gICAgYW5jZXN0b3JzLnB1c2goZWxlbWVudCk7XHJcbiAgICBjb25zdCBtb2RlID0gY29udGV4dC5vcHRpb25zLmdldFRleHRNb2RlKGVsZW1lbnQsIHBhcmVudCk7XHJcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKTtcclxuICAgIGFuY2VzdG9ycy5wb3AoKTtcclxuICAgIC8vIDIueCBpbmxpbmUtdGVtcGxhdGUgY29tcGF0XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgaW5saW5lVGVtcGxhdGVQcm9wID0gZWxlbWVudC5wcm9wcy5maW5kKHAgPT4gcC50eXBlID09PSA2IC8qIEFUVFJJQlVURSAqLyAmJiBwLm5hbWUgPT09ICdpbmxpbmUtdGVtcGxhdGUnKTtcclxuICAgICAgICBpZiAoaW5saW5lVGVtcGxhdGVQcm9wICYmXHJcbiAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lOTElORV9URU1QTEFURVwiIC8qIENPTVBJTEVSX0lOTElORV9URU1QTEFURSAqLywgY29udGV4dCwgaW5saW5lVGVtcGxhdGVQcm9wLmxvYykpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGVsZW1lbnQubG9jLmVuZCk7XHJcbiAgICAgICAgICAgIGlubGluZVRlbXBsYXRlUHJvcC52YWx1ZSA9IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDIgLyogVEVYVCAqLyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxvYy5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBsb2NcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbGVtZW50LmNoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICAvLyBFbmQgdGFnLlxyXG4gICAgaWYgKHN0YXJ0c1dpdGhFbmRUYWdPcGVuKGNvbnRleHQuc291cmNlLCBlbGVtZW50LnRhZykpIHtcclxuICAgICAgICBwYXJzZVRhZyhjb250ZXh0LCAxIC8qIEVuZCAqLywgcGFyZW50KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyNCAvKiBYX01JU1NJTkdfRU5EX1RBRyAqLywgMCwgZWxlbWVudC5sb2Muc3RhcnQpO1xyXG4gICAgICAgIGlmIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPT09IDAgJiYgZWxlbWVudC50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ3NjcmlwdCcpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIHN0YXJ0c1dpdGgoZmlyc3QubG9jLnNvdXJjZSwgJzwhLS0nKSkge1xyXG4gICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDggLyogRU9GX0lOX1NDUklQVF9IVE1MX0NPTU1FTlRfTElLRV9URVhUICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsZW1lbnQubG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGVsZW1lbnQubG9jLnN0YXJ0KTtcclxuICAgIGlmIChpc1ByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgY29udGV4dC5pblByZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVlByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgY29udGV4dC5pblZQcmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbGVtZW50O1xyXG59XHJcbmNvbnN0IGlzU3BlY2lhbFRlbXBsYXRlRGlyZWN0aXZlID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBpZixlbHNlLGVsc2UtaWYsZm9yLHNsb3RgKTtcclxuZnVuY3Rpb24gcGFyc2VUYWcoY29udGV4dCwgdHlwZSwgcGFyZW50KSB7XHJcbiAgICAvLyBUYWcgb3Blbi5cclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgbWF0Y2ggPSAvXjxcXC8/KFthLXpdW15cXHRcXHJcXG5cXGYgLz5dKikvaS5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGNvbnN0IHRhZyA9IG1hdGNoWzFdO1xyXG4gICAgY29uc3QgbnMgPSBjb250ZXh0Lm9wdGlvbnMuZ2V0TmFtZXNwYWNlKHRhZywgcGFyZW50KTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBtYXRjaFswXS5sZW5ndGgpO1xyXG4gICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgIC8vIHNhdmUgY3VycmVudCBzdGF0ZSBpbiBjYXNlIHdlIG5lZWQgdG8gcmUtcGFyc2UgYXR0cmlidXRlcyB3aXRoIHYtcHJlXHJcbiAgICBjb25zdCBjdXJzb3IgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBjdXJyZW50U291cmNlID0gY29udGV4dC5zb3VyY2U7XHJcbiAgICAvLyBjaGVjayA8cHJlPiB0YWdcclxuICAgIGlmIChjb250ZXh0Lm9wdGlvbnMuaXNQcmVUYWcodGFnKSkge1xyXG4gICAgICAgIGNvbnRleHQuaW5QcmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gQXR0cmlidXRlcy5cclxuICAgIGxldCBwcm9wcyA9IHBhcnNlQXR0cmlidXRlcyhjb250ZXh0LCB0eXBlKTtcclxuICAgIC8vIGNoZWNrIHYtcHJlXHJcbiAgICBpZiAodHlwZSA9PT0gMCAvKiBTdGFydCAqLyAmJlxyXG4gICAgICAgICFjb250ZXh0LmluVlByZSAmJlxyXG4gICAgICAgIHByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ3ByZScpKSB7XHJcbiAgICAgICAgY29udGV4dC5pblZQcmUgPSB0cnVlO1xyXG4gICAgICAgIC8vIHJlc2V0IGNvbnRleHRcclxuICAgICAgICBleHRlbmQoY29udGV4dCwgY3Vyc29yKTtcclxuICAgICAgICBjb250ZXh0LnNvdXJjZSA9IGN1cnJlbnRTb3VyY2U7XHJcbiAgICAgICAgLy8gcmUtcGFyc2UgYXR0cnMgYW5kIGZpbHRlciBvdXQgdi1wcmUgaXRzZWxmXHJcbiAgICAgICAgcHJvcHMgPSBwYXJzZUF0dHJpYnV0ZXMoY29udGV4dCwgdHlwZSkuZmlsdGVyKHAgPT4gcC5uYW1lICE9PSAndi1wcmUnKTtcclxuICAgIH1cclxuICAgIC8vIFRhZyBjbG9zZS5cclxuICAgIGxldCBpc1NlbGZDbG9zaW5nID0gZmFsc2U7XHJcbiAgICBpZiAoY29udGV4dC5zb3VyY2UubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDkgLyogRU9GX0lOX1RBRyAqLyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpc1NlbGZDbG9zaW5nID0gc3RhcnRzV2l0aChjb250ZXh0LnNvdXJjZSwgJy8+Jyk7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IDEgLyogRW5kICovICYmIGlzU2VsZkNsb3NpbmcpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDQgLyogRU5EX1RBR19XSVRIX1RSQUlMSU5HX1NPTElEVVMgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgaXNTZWxmQ2xvc2luZyA/IDIgOiAxKTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAxIC8qIEVuZCAqLykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIDIueCBkZXByZWNhdGlvbiBjaGVja3NcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICBpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0VcIiAvKiBDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0UgKi8sIGNvbnRleHQpKSB7XHJcbiAgICAgICAgbGV0IGhhc0lmID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGhhc0ZvciA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcCA9IHByb3BzW2ldO1xyXG4gICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIERJUkVDVElWRSAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2lmJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0lmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHAubmFtZSA9PT0gJ2ZvcicpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNGb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChoYXNJZiAmJiBoYXNGb3IpIHtcclxuICAgICAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiIC8qIENPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRSAqLywgY29udGV4dCwgZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCB0YWdUeXBlID0gMCAvKiBFTEVNRU5UICovO1xyXG4gICAgaWYgKCFjb250ZXh0LmluVlByZSkge1xyXG4gICAgICAgIGlmICh0YWcgPT09ICdzbG90Jykge1xyXG4gICAgICAgICAgICB0YWdUeXBlID0gMiAvKiBTTE9UICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0YWcgPT09ICd0ZW1wbGF0ZScpIHtcclxuICAgICAgICAgICAgaWYgKHByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogRElSRUNUSVZFICovICYmIGlzU3BlY2lhbFRlbXBsYXRlRGlyZWN0aXZlKHAubmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICB0YWdUeXBlID0gMyAvKiBURU1QTEFURSAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0NvbXBvbmVudCh0YWcsIHByb3BzLCBjb250ZXh0KSkge1xyXG4gICAgICAgICAgICB0YWdUeXBlID0gMSAvKiBDT01QT05FTlQgKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxIC8qIEVMRU1FTlQgKi8sXHJcbiAgICAgICAgbnMsXHJcbiAgICAgICAgdGFnLFxyXG4gICAgICAgIHRhZ1R5cGUsXHJcbiAgICAgICAgcHJvcHMsXHJcbiAgICAgICAgaXNTZWxmQ2xvc2luZyxcclxuICAgICAgICBjaGlsZHJlbjogW10sXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpLFxyXG4gICAgICAgIGNvZGVnZW5Ob2RlOiB1bmRlZmluZWQgLy8gdG8gYmUgY3JlYXRlZCBkdXJpbmcgdHJhbnNmb3JtIHBoYXNlXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGlzQ29tcG9uZW50KHRhZywgcHJvcHMsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBjb250ZXh0Lm9wdGlvbnM7XHJcbiAgICBpZiAob3B0aW9ucy5pc0N1c3RvbUVsZW1lbnQodGFnKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0YWcgPT09ICdjb21wb25lbnQnIHx8XHJcbiAgICAgICAgL15bQS1aXS8udGVzdCh0YWcpIHx8XHJcbiAgICAgICAgaXNDb3JlQ29tcG9uZW50KHRhZykgfHxcclxuICAgICAgICAob3B0aW9ucy5pc0J1aWx0SW5Db21wb25lbnQgJiYgb3B0aW9ucy5pc0J1aWx0SW5Db21wb25lbnQodGFnKSkgfHxcclxuICAgICAgICAob3B0aW9ucy5pc05hdGl2ZVRhZyAmJiAhb3B0aW9ucy5pc05hdGl2ZVRhZyh0YWcpKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gYXQgdGhpcyBwb2ludCB0aGUgdGFnIHNob3VsZCBiZSBhIG5hdGl2ZSB0YWcsIGJ1dCBjaGVjayBmb3IgcG90ZW50aWFsIFwiaXNcIlxyXG4gICAgLy8gY2FzdGluZ1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBwcm9wc1tpXTtcclxuICAgICAgICBpZiAocC50eXBlID09PSA2IC8qIEFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBpZiAocC5uYW1lID09PSAnaXMnICYmIHAudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLnZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgndnVlOicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCwgcC5sb2MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGRpcmVjdGl2ZVxyXG4gICAgICAgICAgICAvLyB2LWlzIChUT0RPIERlcHJlY2F0ZSlcclxuICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2lzJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIC8vIDppcyBvbiBwbGFpbiBlbGVtZW50IC0gb25seSB0cmVhdCBhcyBjb21wb25lbnQgaW4gY29tcGF0IG1vZGVcclxuICAgICAgICAgICAgcC5uYW1lID09PSAnYmluZCcgJiZcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljQXJnT2YocC5hcmcsICdpcycpICYmXHJcbiAgICAgICAgICAgICAgICB0cnVlICYmXHJcbiAgICAgICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCwgcC5sb2MpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMoY29udGV4dCwgdHlwZSkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBbXTtcclxuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWVzID0gbmV3IFNldCgpO1xyXG4gICAgd2hpbGUgKGNvbnRleHQuc291cmNlLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAhc3RhcnRzV2l0aChjb250ZXh0LnNvdXJjZSwgJz4nKSAmJlxyXG4gICAgICAgICFzdGFydHNXaXRoKGNvbnRleHQuc291cmNlLCAnLz4nKSkge1xyXG4gICAgICAgIGlmIChzdGFydHNXaXRoKGNvbnRleHQuc291cmNlLCAnLycpKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyMiAvKiBVTkVYUEVDVEVEX1NPTElEVVNfSU5fVEFHICovKTtcclxuICAgICAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDEpO1xyXG4gICAgICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IDEgLyogRW5kICovKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAzIC8qIEVORF9UQUdfV0lUSF9BVFRSSUJVVEVTICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYXR0ciA9IHBhcnNlQXR0cmlidXRlKGNvbnRleHQsIGF0dHJpYnV0ZU5hbWVzKTtcclxuICAgICAgICAvLyBUcmltIHdoaXRlc3BhY2UgYmV0d2VlbiBjbGFzc1xyXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy9jb3JlL2lzc3Vlcy80MjUxXHJcbiAgICAgICAgaWYgKGF0dHIudHlwZSA9PT0gNiAvKiBBVFRSSUJVVEUgKi8gJiZcclxuICAgICAgICAgICAgYXR0ci52YWx1ZSAmJlxyXG4gICAgICAgICAgICBhdHRyLm5hbWUgPT09ICdjbGFzcycpIHtcclxuICAgICAgICAgICAgYXR0ci52YWx1ZS5jb250ZW50ID0gYXR0ci52YWx1ZS5jb250ZW50LnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSAwIC8qIFN0YXJ0ICovKSB7XHJcbiAgICAgICAgICAgIHByb3BzLnB1c2goYXR0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgvXlteXFx0XFxyXFxuXFxmIC8+XS8udGVzdChjb250ZXh0LnNvdXJjZSkpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE1IC8qIE1JU1NJTkdfV0hJVEVTUEFDRV9CRVRXRUVOX0FUVFJJQlVURVMgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlKGNvbnRleHQsIG5hbWVTZXQpIHtcclxuICAgIC8vIE5hbWUuXHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IG1hdGNoID0gL15bXlxcdFxcclxcblxcZiAvPl1bXlxcdFxcclxcblxcZiAvPj1dKi8uZXhlYyhjb250ZXh0LnNvdXJjZSk7XHJcbiAgICBjb25zdCBuYW1lID0gbWF0Y2hbMF07XHJcbiAgICBpZiAobmFtZVNldC5oYXMobmFtZSkpIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMiAvKiBEVVBMSUNBVEVfQVRUUklCVVRFICovKTtcclxuICAgIH1cclxuICAgIG5hbWVTZXQuYWRkKG5hbWUpO1xyXG4gICAgaWYgKG5hbWVbMF0gPT09ICc9Jykge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxOSAvKiBVTkVYUEVDVEVEX0VRVUFMU19TSUdOX0JFRk9SRV9BVFRSSUJVVEVfTkFNRSAqLyk7XHJcbiAgICB9XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IC9bXCInPF0vZztcclxuICAgICAgICBsZXQgbTtcclxuICAgICAgICB3aGlsZSAoKG0gPSBwYXR0ZXJuLmV4ZWMobmFtZSkpKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxNyAvKiBVTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9BVFRSSUJVVEVfTkFNRSAqLywgbS5pbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIG5hbWUubGVuZ3RoKTtcclxuICAgIC8vIFZhbHVlXHJcbiAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoL15bXFx0XFxyXFxuXFxmIF0qPS8udGVzdChjb250ZXh0LnNvdXJjZSkpIHtcclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgIHZhbHVlID0gcGFyc2VBdHRyaWJ1dGVWYWx1ZShjb250ZXh0KTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMyAvKiBNSVNTSU5HX0FUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgbG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KTtcclxuICAgIGlmICghY29udGV4dC5pblZQcmUgJiYgL14odi1bQS1aYS16MC05LV18OnxcXC58QHwjKS8udGVzdChuYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gLyg/Ol52LShbYS16MC05LV0rKSk/KD86KD86OnxeXFwufF5AfF4jKShcXFtbXlxcXV0rXFxdfFteXFwuXSspKT8oLispPyQvaS5leGVjKG5hbWUpO1xyXG4gICAgICAgIGxldCBpc1Byb3BTaG9ydGhhbmQgPSBzdGFydHNXaXRoKG5hbWUsICcuJyk7XHJcbiAgICAgICAgbGV0IGRpck5hbWUgPSBtYXRjaFsxXSB8fFxyXG4gICAgICAgICAgICAoaXNQcm9wU2hvcnRoYW5kIHx8IHN0YXJ0c1dpdGgobmFtZSwgJzonKVxyXG4gICAgICAgICAgICAgICAgPyAnYmluZCdcclxuICAgICAgICAgICAgICAgIDogc3RhcnRzV2l0aChuYW1lLCAnQCcpXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnb24nXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnc2xvdCcpO1xyXG4gICAgICAgIGxldCBhcmc7XHJcbiAgICAgICAgaWYgKG1hdGNoWzJdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzU2xvdCA9IGRpck5hbWUgPT09ICdzbG90JztcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBuYW1lLmxhc3RJbmRleE9mKG1hdGNoWzJdKTtcclxuICAgICAgICAgICAgY29uc3QgbG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBzdGFydE9mZnNldCksIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBzdGFydE9mZnNldCArIG1hdGNoWzJdLmxlbmd0aCArICgoaXNTbG90ICYmIG1hdGNoWzNdKSB8fCAnJykubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gbWF0Y2hbMl07XHJcbiAgICAgICAgICAgIGxldCBpc1N0YXRpYyA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChjb250ZW50LnN0YXJ0c1dpdGgoJ1snKSkge1xyXG4gICAgICAgICAgICAgICAgaXNTdGF0aWMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICghY29udGVudC5lbmRzV2l0aCgnXScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI3IC8qIFhfTUlTU0lOR19EWU5BTUlDX0RJUkVDVElWRV9BUkdVTUVOVF9FTkQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSwgY29udGVudC5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1Nsb3QpIHtcclxuICAgICAgICAgICAgICAgIC8vICMxMjQxIHNwZWNpYWwgY2FzZSBmb3Igdi1zbG90OiB2dWV0aWZ5IHJlbGllcyBleHRlbnNpdmVseSBvbiBzbG90XHJcbiAgICAgICAgICAgICAgICAvLyBuYW1lcyBjb250YWluaW5nIGRvdHMuIHYtc2xvdCBkb2Vzbid0IGhhdmUgYW55IG1vZGlmaWVycyBhbmQgVnVlIDIueFxyXG4gICAgICAgICAgICAgICAgLy8gc3VwcG9ydHMgc3VjaCB1c2FnZSBzbyB3ZSBhcmUga2VlcGluZyBpdCBjb25zaXN0ZW50IHdpdGggMi54LlxyXG4gICAgICAgICAgICAgICAgY29udGVudCArPSBtYXRjaFszXSB8fCAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhcmcgPSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljLFxyXG4gICAgICAgICAgICAgICAgY29uc3RUeXBlOiBpc1N0YXRpY1xyXG4gICAgICAgICAgICAgICAgICAgID8gMyAvKiBDQU5fU1RSSU5HSUZZICovXHJcbiAgICAgICAgICAgICAgICAgICAgOiAwIC8qIE5PVF9DT05TVEFOVCAqLyxcclxuICAgICAgICAgICAgICAgIGxvY1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNRdW90ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVMb2MgPSB2YWx1ZS5sb2M7XHJcbiAgICAgICAgICAgIHZhbHVlTG9jLnN0YXJ0Lm9mZnNldCsrO1xyXG4gICAgICAgICAgICB2YWx1ZUxvYy5zdGFydC5jb2x1bW4rKztcclxuICAgICAgICAgICAgdmFsdWVMb2MuZW5kID0gYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKHZhbHVlTG9jLnN0YXJ0LCB2YWx1ZS5jb250ZW50KTtcclxuICAgICAgICAgICAgdmFsdWVMb2Muc291cmNlID0gdmFsdWVMb2Muc291cmNlLnNsaWNlKDEsIC0xKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gbWF0Y2hbM10gPyBtYXRjaFszXS5zbGljZSgxKS5zcGxpdCgnLicpIDogW107XHJcbiAgICAgICAgaWYgKGlzUHJvcFNob3J0aGFuZClcclxuICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goJ3Byb3AnKTtcclxuICAgICAgICAvLyAyLnggY29tcGF0IHYtYmluZDpmb28uc3luYyAtPiB2LW1vZGVsOmZvb1xyXG4gICAgICAgIGlmIChkaXJOYW1lID09PSAnYmluZCcgJiYgYXJnKSB7XHJcbiAgICAgICAgICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ3N5bmMnKSAmJlxyXG4gICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX1NZTkNcIiAvKiBDT01QSUxFUl9WX0JJTkRfU1lOQyAqLywgY29udGV4dCwgbG9jLCBhcmcubG9jLnNvdXJjZSkpIHtcclxuICAgICAgICAgICAgICAgIGRpck5hbWUgPSAnbW9kZWwnO1xyXG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzLnNwbGljZShtb2RpZmllcnMuaW5kZXhPZignc3luYycpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG1vZGlmaWVycy5pbmNsdWRlcygncHJvcCcpKSB7XHJcbiAgICAgICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0JJTkRfUFJPUFwiIC8qIENPTVBJTEVSX1ZfQklORF9QUk9QICovLCBjb250ZXh0LCBsb2MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHR5cGU6IDcgLyogRElSRUNUSVZFICovLFxyXG4gICAgICAgICAgICBuYW1lOiBkaXJOYW1lLFxyXG4gICAgICAgICAgICBleHA6IHZhbHVlICYmIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiB2YWx1ZS5jb250ZW50LFxyXG4gICAgICAgICAgICAgICAgaXNTdGF0aWM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgLy8gVHJlYXQgYXMgbm9uLWNvbnN0YW50IGJ5IGRlZmF1bHQuIFRoaXMgY2FuIGJlIHBvdGVudGlhbGx5IHNldCB0b1xyXG4gICAgICAgICAgICAgICAgLy8gb3RoZXIgdmFsdWVzIGJ5IGB0cmFuc2Zvcm1FeHByZXNzaW9uYCB0byBtYWtlIGl0IGVsaWdpYmxlIGZvciBob2lzdGluZy5cclxuICAgICAgICAgICAgICAgIGNvbnN0VHlwZTogMCAvKiBOT1RfQ09OU1RBTlQgKi8sXHJcbiAgICAgICAgICAgICAgICBsb2M6IHZhbHVlLmxvY1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhcmcsXHJcbiAgICAgICAgICAgIG1vZGlmaWVycyxcclxuICAgICAgICAgICAgbG9jXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIC8vIG1pc3NpbmcgZGlyZWN0aXZlIG5hbWUgb3IgaWxsZWdhbCBkaXJlY3RpdmUgbmFtZVxyXG4gICAgaWYgKCFjb250ZXh0LmluVlByZSAmJiBzdGFydHNXaXRoKG5hbWUsICd2LScpKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI2IC8qIFhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRSAqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDYgLyogQVRUUklCVVRFICovLFxyXG4gICAgICAgIG5hbWUsXHJcbiAgICAgICAgdmFsdWU6IHZhbHVlICYmIHtcclxuICAgICAgICAgICAgdHlwZTogMiAvKiBURVhUICovLFxyXG4gICAgICAgICAgICBjb250ZW50OiB2YWx1ZS5jb250ZW50LFxyXG4gICAgICAgICAgICBsb2M6IHZhbHVlLmxvY1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlVmFsdWUoY29udGV4dCkge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBsZXQgY29udGVudDtcclxuICAgIGNvbnN0IHF1b3RlID0gY29udGV4dC5zb3VyY2VbMF07XHJcbiAgICBjb25zdCBpc1F1b3RlZCA9IHF1b3RlID09PSBgXCJgIHx8IHF1b3RlID09PSBgJ2A7XHJcbiAgICBpZiAoaXNRdW90ZWQpIHtcclxuICAgICAgICAvLyBRdW90ZWQgdmFsdWUuXHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDEpO1xyXG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gY29udGV4dC5zb3VyY2UuaW5kZXhPZihxdW90ZSk7XHJcbiAgICAgICAgaWYgKGVuZEluZGV4ID09PSAtMSkge1xyXG4gICAgICAgICAgICBjb250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBjb250ZXh0LnNvdXJjZS5sZW5ndGgsIDQgLyogQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIGVuZEluZGV4LCA0IC8qIEFUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICAgICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBVbnF1b3RlZFxyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gL15bXlxcdFxcclxcblxcZiA+XSsvLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdW5leHBlY3RlZENoYXJzID0gL1tcIic8PWBdL2c7XHJcbiAgICAgICAgbGV0IG07XHJcbiAgICAgICAgd2hpbGUgKChtID0gdW5leHBlY3RlZENoYXJzLmV4ZWMobWF0Y2hbMF0pKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTggLyogVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fVU5RVU9URURfQVRUUklCVVRFX1ZBTFVFICovLCBtLmluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgbWF0Y2hbMF0ubGVuZ3RoLCA0IC8qIEFUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBjb250ZW50LCBpc1F1b3RlZCwgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VJbnRlcnBvbGF0aW9uKGNvbnRleHQsIG1vZGUpIHtcclxuICAgIGNvbnN0IFtvcGVuLCBjbG9zZV0gPSBjb250ZXh0Lm9wdGlvbnMuZGVsaW1pdGVycztcclxuICAgIGNvbnN0IGNsb3NlSW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKGNsb3NlLCBvcGVuLmxlbmd0aCk7XHJcbiAgICBpZiAoY2xvc2VJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjUgLyogWF9NSVNTSU5HX0lOVEVSUE9MQVRJT05fRU5EICovKTtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgb3Blbi5sZW5ndGgpO1xyXG4gICAgY29uc3QgaW5uZXJTdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGlubmVyRW5kID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgcmF3Q29udGVudExlbmd0aCA9IGNsb3NlSW5kZXggLSBvcGVuLmxlbmd0aDtcclxuICAgIGNvbnN0IHJhd0NvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSgwLCByYXdDb250ZW50TGVuZ3RoKTtcclxuICAgIGNvbnN0IHByZVRyaW1Db250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCByYXdDb250ZW50TGVuZ3RoLCBtb2RlKTtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBwcmVUcmltQ29udGVudC50cmltKCk7XHJcbiAgICBjb25zdCBzdGFydE9mZnNldCA9IHByZVRyaW1Db250ZW50LmluZGV4T2YoY29udGVudCk7XHJcbiAgICBpZiAoc3RhcnRPZmZzZXQgPiAwKSB7XHJcbiAgICAgICAgYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGlubmVyU3RhcnQsIHJhd0NvbnRlbnQsIHN0YXJ0T2Zmc2V0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVuZE9mZnNldCA9IHJhd0NvbnRlbnRMZW5ndGggLSAocHJlVHJpbUNvbnRlbnQubGVuZ3RoIC0gY29udGVudC5sZW5ndGggLSBzdGFydE9mZnNldCk7XHJcbiAgICBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oaW5uZXJFbmQsIHJhd0NvbnRlbnQsIGVuZE9mZnNldCk7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgY2xvc2UubGVuZ3RoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNSAvKiBJTlRFUlBPTEFUSU9OICovLFxyXG4gICAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICAgICAgdHlwZTogNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICAgICAgaXNTdGF0aWM6IGZhbHNlLFxyXG4gICAgICAgICAgICAvLyBTZXQgYGlzQ29uc3RhbnRgIHRvIGZhbHNlIGJ5IGRlZmF1bHQgYW5kIHdpbGwgZGVjaWRlIGluIHRyYW5zZm9ybUV4cHJlc3Npb25cclxuICAgICAgICAgICAgY29uc3RUeXBlOiAwIC8qIE5PVF9DT05TVEFOVCAqLyxcclxuICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgaW5uZXJTdGFydCwgaW5uZXJFbmQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VUZXh0KGNvbnRleHQsIG1vZGUpIHtcclxuICAgIGNvbnN0IGVuZFRva2VucyA9IG1vZGUgPT09IDMgLyogQ0RBVEEgKi8gPyBbJ11dPiddIDogWyc8JywgY29udGV4dC5vcHRpb25zLmRlbGltaXRlcnNbMF1dO1xyXG4gICAgbGV0IGVuZEluZGV4ID0gY29udGV4dC5zb3VyY2UubGVuZ3RoO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbmRUb2tlbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGNvbnRleHQuc291cmNlLmluZGV4T2YoZW5kVG9rZW5zW2ldLCAxKTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xICYmIGVuZEluZGV4ID4gaW5kZXgpIHtcclxuICAgICAgICAgICAgZW5kSW5kZXggPSBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIGVuZEluZGV4LCBtb2RlKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMiAvKiBURVhUICovLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpXHJcbiAgICB9O1xyXG59XHJcbi8qKlxyXG4gKiBHZXQgdGV4dCBkYXRhIHdpdGggYSBnaXZlbiBsZW5ndGggZnJvbSB0aGUgY3VycmVudCBsb2NhdGlvbi5cclxuICogVGhpcyB0cmFuc2xhdGVzIEhUTUwgZW50aXRpZXMgaW4gdGhlIHRleHQgZGF0YS5cclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlVGV4dERhdGEoY29udGV4dCwgbGVuZ3RoLCBtb2RlKSB7XHJcbiAgICBjb25zdCByYXdUZXh0ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoMCwgbGVuZ3RoKTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBsZW5ndGgpO1xyXG4gICAgaWYgKG1vZGUgPT09IDIgLyogUkFXVEVYVCAqLyB8fFxyXG4gICAgICAgIG1vZGUgPT09IDMgLyogQ0RBVEEgKi8gfHxcclxuICAgICAgICAhcmF3VGV4dC5pbmNsdWRlcygnJicpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJhd1RleHQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBEQVRBIG9yIFJDREFUQSBjb250YWluaW5nIFwiJlwiXCIuIEVudGl0eSBkZWNvZGluZyByZXF1aXJlZC5cclxuICAgICAgICByZXR1cm4gY29udGV4dC5vcHRpb25zLmRlY29kZUVudGl0aWVzKHJhd1RleHQsIG1vZGUgPT09IDQgLyogQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRDdXJzb3IoY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW4sIGxpbmUsIG9mZnNldCB9ID0gY29udGV4dDtcclxuICAgIHJldHVybiB7IGNvbHVtbiwgbGluZSwgb2Zmc2V0IH07XHJcbn1cclxuZnVuY3Rpb24gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0LCBlbmQpIHtcclxuICAgIGVuZCA9IGVuZCB8fCBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHN0YXJ0LFxyXG4gICAgICAgIGVuZCxcclxuICAgICAgICBzb3VyY2U6IGNvbnRleHQub3JpZ2luYWxTb3VyY2Uuc2xpY2Uoc3RhcnQub2Zmc2V0LCBlbmQub2Zmc2V0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBsYXN0KHhzKSB7XHJcbiAgICByZXR1cm4geHNbeHMubGVuZ3RoIC0gMV07XHJcbn1cclxuZnVuY3Rpb24gc3RhcnRzV2l0aChzb3VyY2UsIHNlYXJjaFN0cmluZykge1xyXG4gICAgcmV0dXJuIHNvdXJjZS5zdGFydHNXaXRoKHNlYXJjaFN0cmluZyk7XHJcbn1cclxuZnVuY3Rpb24gYWR2YW5jZUJ5KGNvbnRleHQsIG51bWJlck9mQ2hhcmFjdGVycykge1xyXG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IGNvbnRleHQ7XHJcbiAgICBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oY29udGV4dCwgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG4gICAgY29udGV4dC5zb3VyY2UgPSBzb3VyY2Uuc2xpY2UobnVtYmVyT2ZDaGFyYWN0ZXJzKTtcclxufVxyXG5mdW5jdGlvbiBhZHZhbmNlU3BhY2VzKGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG1hdGNoID0gL15bXFx0XFxyXFxuXFxmIF0rLy5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBtYXRjaFswXS5sZW5ndGgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBudW1iZXJPZkNoYXJhY3RlcnMpIHtcclxuICAgIHJldHVybiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUoc3RhcnQsIGNvbnRleHQub3JpZ2luYWxTb3VyY2Uuc2xpY2Uoc3RhcnQub2Zmc2V0LCBudW1iZXJPZkNoYXJhY3RlcnMpLCBudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG59XHJcbmZ1bmN0aW9uIGVtaXRFcnJvcihjb250ZXh0LCBjb2RlLCBvZmZzZXQsIGxvYyA9IGdldEN1cnNvcihjb250ZXh0KSkge1xyXG4gICAgaWYgKG9mZnNldCkge1xyXG4gICAgICAgIGxvYy5vZmZzZXQgKz0gb2Zmc2V0O1xyXG4gICAgICAgIGxvYy5jb2x1bW4gKz0gb2Zmc2V0O1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5vcHRpb25zLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcihjb2RlLCB7XHJcbiAgICAgICAgc3RhcnQ6IGxvYyxcclxuICAgICAgICBlbmQ6IGxvYyxcclxuICAgICAgICBzb3VyY2U6ICcnXHJcbiAgICB9KSk7XHJcbn1cclxuZnVuY3Rpb24gaXNFbmQoY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKSB7XHJcbiAgICBjb25zdCBzID0gY29udGV4dC5zb3VyY2U7XHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgICBjYXNlIDAgLyogREFUQSAqLzpcclxuICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgocywgJzwvJykpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHByb2JhYmx5IGJhZCBwZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGFuY2VzdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoRW5kVGFnT3BlbihzLCBhbmNlc3RvcnNbaV0udGFnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxIC8qIFJDREFUQSAqLzpcclxuICAgICAgICBjYXNlIDIgLyogUkFXVEVYVCAqLzoge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBsYXN0KGFuY2VzdG9ycyk7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgc3RhcnRzV2l0aEVuZFRhZ09wZW4ocywgcGFyZW50LnRhZykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDMgLyogQ0RBVEEgKi86XHJcbiAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHMsICddXT4nKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXM7XHJcbn1cclxuZnVuY3Rpb24gc3RhcnRzV2l0aEVuZFRhZ09wZW4oc291cmNlLCB0YWcpIHtcclxuICAgIHJldHVybiAoc3RhcnRzV2l0aChzb3VyY2UsICc8LycpICYmXHJcbiAgICAgICAgc291cmNlLnNsaWNlKDIsIDIgKyB0YWcubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSB0YWcudG9Mb3dlckNhc2UoKSAmJlxyXG4gICAgICAgIC9bXFx0XFxyXFxuXFxmIC8+XS8udGVzdChzb3VyY2VbMiArIHRhZy5sZW5ndGhdIHx8ICc+JykpO1xyXG59XG5cbmZ1bmN0aW9uIGhvaXN0U3RhdGljKHJvb3QsIGNvbnRleHQpIHtcclxuICAgIHdhbGsocm9vdCwgY29udGV4dCwgXHJcbiAgICAvLyBSb290IG5vZGUgaXMgdW5mb3J0dW5hdGVseSBub24taG9pc3RhYmxlIGR1ZSB0byBwb3RlbnRpYWwgcGFyZW50XHJcbiAgICAvLyBmYWxsdGhyb3VnaCBhdHRyaWJ1dGVzLlxyXG4gICAgaXNTaW5nbGVFbGVtZW50Um9vdChyb290LCByb290LmNoaWxkcmVuWzBdKSk7XHJcbn1cclxuZnVuY3Rpb24gaXNTaW5nbGVFbGVtZW50Um9vdChyb290LCBjaGlsZCkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcm9vdDtcclxuICAgIHJldHVybiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgY2hpbGQudHlwZSA9PT0gMSAvKiBFTEVNRU5UICovICYmXHJcbiAgICAgICAgIWlzU2xvdE91dGxldChjaGlsZCkpO1xyXG59XHJcbmZ1bmN0aW9uIHdhbGsobm9kZSwgY29udGV4dCwgZG9Ob3RIb2lzdE5vZGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gbm9kZTtcclxuICAgIGNvbnN0IG9yaWdpbmFsQ291bnQgPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICBsZXQgaG9pc3RlZENvdW50ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIC8vIG9ubHkgcGxhaW4gZWxlbWVudHMgJiB0ZXh0IGNhbGxzIGFyZSBlbGlnaWJsZSBmb3IgaG9pc3RpbmcuXHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDEgLyogRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICBjaGlsZC50YWdUeXBlID09PSAwIC8qIEVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgY29uc3RhbnRUeXBlID0gZG9Ob3RIb2lzdE5vZGVcclxuICAgICAgICAgICAgICAgID8gMCAvKiBOT1RfQ09OU1RBTlQgKi9cclxuICAgICAgICAgICAgICAgIDogZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgaWYgKGNvbnN0YW50VHlwZSA+IDAgLyogTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnRUeXBlID49IDIgLyogQ0FOX0hPSVNUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUucGF0Y2hGbGFnID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLTEgLyogSE9JU1RFRCAqLyArICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qIEhPSVNURUQgKi9gIDogYGApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLmNvZGVnZW5Ob2RlID0gY29udGV4dC5ob2lzdChjaGlsZC5jb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9pc3RlZENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub2RlIG1heSBjb250YWluIGR5bmFtaWMgY2hpbGRyZW4sIGJ1dCBpdHMgcHJvcHMgbWF5IGJlIGVsaWdpYmxlIGZvclxyXG4gICAgICAgICAgICAgICAgLy8gaG9pc3RpbmcuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IGNoaWxkLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIFZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGFnID0gZ2V0UGF0Y2hGbGFnKGNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKCFmbGFnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPT09IDUxMiAvKiBORUVEX1BBVENIICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPT09IDEgLyogVEVYVCAqLykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpID49XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIC8qIENBTl9IT0lTVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wcyA9IGdldE5vZGVQcm9wcyhjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGUucHJvcHMgPSBjb250ZXh0LmhvaXN0KHByb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUuZHluYW1pY1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlLmR5bmFtaWNQcm9wcyA9IGNvbnRleHQuaG9pc3QoY29kZWdlbk5vZGUuZHluYW1pY1Byb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gMTIgLyogVEVYVF9DQUxMICovICYmXHJcbiAgICAgICAgICAgIGdldENvbnN0YW50VHlwZShjaGlsZC5jb250ZW50LCBjb250ZXh0KSA+PSAyIC8qIENBTl9IT0lTVCAqLykge1xyXG4gICAgICAgICAgICBjaGlsZC5jb2RlZ2VuTm9kZSA9IGNvbnRleHQuaG9pc3QoY2hpbGQuY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICBob2lzdGVkQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2FsayBmdXJ0aGVyXHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDEgLyogRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICBjb25zdCBpc0NvbXBvbmVudCA9IGNoaWxkLnRhZ1R5cGUgPT09IDEgLyogQ09NUE9ORU5UICovO1xyXG4gICAgICAgICAgICBpZiAoaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90Kys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2FsayhjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QtLTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSAxMSAvKiBGT1IgKi8pIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGhvaXN0IHYtZm9yIHNpbmdsZSBjaGlsZCBiZWNhdXNlIGl0IGhhcyB0byBiZSBhIGJsb2NrXHJcbiAgICAgICAgICAgIHdhbGsoY2hpbGQsIGNvbnRleHQsIGNoaWxkLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDkgLyogSUYgKi8pIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZC5icmFuY2hlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgLy8gRG8gbm90IGhvaXN0IHYtaWYgc2luZ2xlIGNoaWxkIGJlY2F1c2UgaXQgaGFzIHRvIGJlIGEgYmxvY2tcclxuICAgICAgICAgICAgICAgIHdhbGsoY2hpbGQuYnJhbmNoZXNbaV0sIGNvbnRleHQsIGNoaWxkLmJyYW5jaGVzW2ldLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaG9pc3RlZENvdW50ICYmIGNvbnRleHQudHJhbnNmb3JtSG9pc3QpIHtcclxuICAgICAgICBjb250ZXh0LnRyYW5zZm9ybUhvaXN0KGNoaWxkcmVuLCBjb250ZXh0LCBub2RlKTtcclxuICAgIH1cclxuICAgIC8vIGFsbCBjaGlsZHJlbiB3ZXJlIGhvaXN0ZWQgLSB0aGUgZW50aXJlIGNoaWxkcmVuIGFycmF5IGlzIGhvaXN0YWJsZS5cclxuICAgIGlmIChob2lzdGVkQ291bnQgJiZcclxuICAgICAgICBob2lzdGVkQ291bnQgPT09IG9yaWdpbmFsQ291bnQgJiZcclxuICAgICAgICBub2RlLnR5cGUgPT09IDEgLyogRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSAmJlxyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogVk5PREVfQ0FMTCAqLyAmJlxyXG4gICAgICAgIGlzQXJyYXkobm9kZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbikpIHtcclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuID0gY29udGV4dC5ob2lzdChjcmVhdGVBcnJheUV4cHJlc3Npb24obm9kZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbikpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldENvbnN0YW50VHlwZShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGNvbnN0YW50Q2FjaGUgfSA9IGNvbnRleHQ7XHJcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xyXG4gICAgICAgIGNhc2UgMSAvKiBFTEVNRU5UICovOlxyXG4gICAgICAgICAgICBpZiAobm9kZS50YWdUeXBlICE9PSAwIC8qIEVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIE5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBjb25zdGFudENhY2hlLmdldChub2RlKTtcclxuICAgICAgICAgICAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gbm9kZS5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgIT09IDEzIC8qIFZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIE5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUuaXNCbG9jayAmJlxyXG4gICAgICAgICAgICAgICAgbm9kZS50YWcgIT09ICdzdmcnICYmXHJcbiAgICAgICAgICAgICAgICBub2RlLnRhZyAhPT0gJ2ZvcmVpZ25PYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBOT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZmxhZyA9IGdldFBhdGNoRmxhZyhjb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJldHVyblR5cGUgPSAzIC8qIENBTl9TVFJJTkdJRlkgKi87XHJcbiAgICAgICAgICAgICAgICAvLyBFbGVtZW50IGl0c2VsZiBoYXMgbm8gcGF0Y2ggZmxhZy4gSG93ZXZlciB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrOlxyXG4gICAgICAgICAgICAgICAgLy8gMS4gRXZlbiBmb3IgYSBub2RlIHdpdGggbm8gcGF0Y2ggZmxhZywgaXQgaXMgcG9zc2libGUgZm9yIGl0IHRvIGNvbnRhaW5cclxuICAgICAgICAgICAgICAgIC8vIG5vbi1ob2lzdGFibGUgZXhwcmVzc2lvbnMgdGhhdCByZWZlcnMgdG8gc2NvcGUgdmFyaWFibGVzLCBlLmcuIGNvbXBpbGVyXHJcbiAgICAgICAgICAgICAgICAvLyBpbmplY3RlZCBrZXlzIG9yIGNhY2hlZCBldmVudCBoYW5kbGVycy4gVGhlcmVmb3JlIHdlIG5lZWQgdG8gYWx3YXlzXHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayB0aGUgY29kZWdlbk5vZGUncyBwcm9wcyB0byBiZSBzdXJlLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhdGVkUHJvcHNUeXBlID0gZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkUHJvcHNUeXBlID09PSAwIC8qIE5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDAgLyogTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBOT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkUHJvcHNUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBnZW5lcmF0ZWRQcm9wc1R5cGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyAyLiBpdHMgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFR5cGUgPSBnZXRDb25zdGFudFR5cGUobm9kZS5jaGlsZHJlbltpXSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkVHlwZSA9PT0gMCAvKiBOT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBOT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBOT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBjaGlsZFR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gMy4gaWYgdGhlIHR5cGUgaXMgbm90IGFscmVhZHkgQ0FOX1NLSVBfUEFUQ0ggd2hpY2ggaXMgdGhlIGxvd2VzdCBub24tMFxyXG4gICAgICAgICAgICAgICAgLy8gdHlwZSwgY2hlY2sgaWYgYW55IG9mIHRoZSBwcm9wcyBjYW4gY2F1c2UgdGhlIHR5cGUgdG8gYmUgbG93ZXJlZFxyXG4gICAgICAgICAgICAgICAgLy8gd2UgY2FuIHNraXAgY2FuX3BhdGNoIGJlY2F1c2UgaXQncyBndWFyYW50ZWVkIGJ5IHRoZSBhYnNlbmNlIG9mIGFcclxuICAgICAgICAgICAgICAgIC8vIHBhdGNoRmxhZy5cclxuICAgICAgICAgICAgICAgIGlmIChyZXR1cm5UeXBlID4gMSAvKiBDQU5fU0tJUF9QQVRDSCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBESVJFQ1RJVkUgKi8gJiYgcC5uYW1lID09PSAnYmluZCcgJiYgcC5leHApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cFR5cGUgPSBnZXRDb25zdGFudFR5cGUocC5leHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cFR5cGUgPT09IDAgLyogTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBOT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIE5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBleHBUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25seSBzdmcvZm9yZWlnbk9iamVjdCBjb3VsZCBiZSBibG9jayBoZXJlLCBob3dldmVyIGlmIHRoZXkgYXJlXHJcbiAgICAgICAgICAgICAgICAvLyBzdGF0aWMgdGhlbiB0aGV5IGRvbid0IG5lZWQgdG8gYmUgYmxvY2tzIHNpbmNlIHRoZXJlIHdpbGwgYmUgbm9cclxuICAgICAgICAgICAgICAgIC8vIG5lc3RlZCB1cGRhdGVzLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLmlzQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZUhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZUhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGNvbnRleHQuaW5TU1IsIGNvZGVnZW5Ob2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGUuaXNCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGNvZGVnZW5Ob2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCByZXR1cm5UeXBlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5UeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBOT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyIC8qIFRFWFQgKi86XHJcbiAgICAgICAgY2FzZSAzIC8qIENPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIHJldHVybiAzIC8qIENBTl9TVFJJTkdJRlkgKi87XHJcbiAgICAgICAgY2FzZSA5IC8qIElGICovOlxyXG4gICAgICAgIGNhc2UgMTEgLyogRk9SICovOlxyXG4gICAgICAgIGNhc2UgMTAgLyogSUZfQlJBTkNIICovOlxyXG4gICAgICAgICAgICByZXR1cm4gMCAvKiBOT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgY2FzZSA1IC8qIElOVEVSUE9MQVRJT04gKi86XHJcbiAgICAgICAgY2FzZSAxMiAvKiBURVhUX0NBTEwgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGUobm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgICAgICBjYXNlIDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNvbnN0VHlwZTtcclxuICAgICAgICBjYXNlIDggLyogQ09NUE9VTkRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgbGV0IHJldHVyblR5cGUgPSAzIC8qIENBTl9TVFJJTkdJRlkgKi87XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkKSB8fCBpc1N5bWJvbChjaGlsZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkVHlwZSA9IGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRUeXBlID09PSAwIC8qIE5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIE5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gY2hpbGRUeXBlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5UeXBlO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIDtcclxuICAgICAgICAgICAgcmV0dXJuIDAgLyogTk9UX0NPTlNUQU5UICovO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGFsbG93SG9pc3RlZEhlbHBlclNldCA9IG5ldyBTZXQoW1xyXG4gICAgTk9STUFMSVpFX0NMQVNTLFxyXG4gICAgTk9STUFMSVpFX1NUWUxFLFxyXG4gICAgTk9STUFMSVpFX1BST1BTLFxyXG4gICAgR1VBUkRfUkVBQ1RJVkVfUFJPUFNcclxuXSk7XHJcbmZ1bmN0aW9uIGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbCh2YWx1ZSwgY29udGV4dCkge1xyXG4gICAgaWYgKHZhbHVlLnR5cGUgPT09IDE0IC8qIEpTX0NBTExfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICFpc1N0cmluZyh2YWx1ZS5jYWxsZWUpICYmXHJcbiAgICAgICAgYWxsb3dIb2lzdGVkSGVscGVyU2V0Lmhhcyh2YWx1ZS5jYWxsZWUpKSB7XHJcbiAgICAgICAgY29uc3QgYXJnID0gdmFsdWUuYXJndW1lbnRzWzBdO1xyXG4gICAgICAgIGlmIChhcmcudHlwZSA9PT0gNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnRUeXBlKGFyZywgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFyZy50eXBlID09PSAxNCAvKiBKU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgbmVzdGVkIGhlbHBlciBjYWxsLCBlLmcuIGBub3JtYWxpemVQcm9wcyhndWFyZFJlYWN0aXZlUHJvcHMoZXhwKSlgXHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwoYXJnLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMCAvKiBOT1RfQ09OU1RBTlQgKi87XHJcbn1cclxuZnVuY3Rpb24gZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgbGV0IHJldHVyblR5cGUgPSAzIC8qIENBTl9TVFJJTkdJRlkgKi87XHJcbiAgICBjb25zdCBwcm9wcyA9IGdldE5vZGVQcm9wcyhub2RlKTtcclxuICAgIGlmIChwcm9wcyAmJiBwcm9wcy50eXBlID09PSAxNSAvKiBKU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gcHJvcGVydGllc1tpXTtcclxuICAgICAgICAgICAgY29uc3Qga2V5VHlwZSA9IGdldENvbnN0YW50VHlwZShrZXksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZiAoa2V5VHlwZSA9PT0gMCAvKiBOT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBrZXlUeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChrZXlUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGtleVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHZhbHVlVHlwZTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZSA9IGdldENvbnN0YW50VHlwZSh2YWx1ZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gMTQgLyogSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzb21lIGhlbHBlciBjYWxscyBjYW4gYmUgaG9pc3RlZCxcclxuICAgICAgICAgICAgICAgIC8vIHN1Y2ggYXMgdGhlIGBub3JtYWxpemVQcm9wc2AgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IgcHJlLW5vcm1hbGl6ZSBjbGFzcyxcclxuICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHJlc3BlY3QgdGhlIENvbnN0YW50VHlwZSBvZiB0aGUgaGVscGVyJ3MgYXJndW1lbnRzXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwodmFsdWUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gMCAvKiBOT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlVHlwZSA9PT0gMCAvKiBOT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSB2YWx1ZVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0dXJuVHlwZTtcclxufVxyXG5mdW5jdGlvbiBnZXROb2RlUHJvcHMobm9kZSkge1xyXG4gICAgY29uc3QgY29kZWdlbk5vZGUgPSBub2RlLmNvZGVnZW5Ob2RlO1xyXG4gICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIFZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICByZXR1cm4gY29kZWdlbk5vZGUucHJvcHM7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0UGF0Y2hGbGFnKG5vZGUpIHtcclxuICAgIGNvbnN0IGZsYWcgPSBub2RlLnBhdGNoRmxhZztcclxuICAgIHJldHVybiBmbGFnID8gcGFyc2VJbnQoZmxhZywgMTApIDogdW5kZWZpbmVkO1xyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybUNvbnRleHQocm9vdCwgeyBmaWxlbmFtZSA9ICcnLCBwcmVmaXhJZGVudGlmaWVycyA9IGZhbHNlLCBob2lzdFN0YXRpYyA9IGZhbHNlLCBjYWNoZUhhbmRsZXJzID0gZmFsc2UsIG5vZGVUcmFuc2Zvcm1zID0gW10sIGRpcmVjdGl2ZVRyYW5zZm9ybXMgPSB7fSwgdHJhbnNmb3JtSG9pc3QgPSBudWxsLCBpc0J1aWx0SW5Db21wb25lbnQgPSBOT09QLCBpc0N1c3RvbUVsZW1lbnQgPSBOT09QLCBleHByZXNzaW9uUGx1Z2lucyA9IFtdLCBzY29wZUlkID0gbnVsbCwgc2xvdHRlZCA9IHRydWUsIHNzciA9IGZhbHNlLCBpblNTUiA9IGZhbHNlLCBzc3JDc3NWYXJzID0gYGAsIGJpbmRpbmdNZXRhZGF0YSA9IEVNUFRZX09CSiwgaW5saW5lID0gZmFsc2UsIGlzVFMgPSBmYWxzZSwgb25FcnJvciA9IGRlZmF1bHRPbkVycm9yLCBvbldhcm4gPSBkZWZhdWx0T25XYXJuLCBjb21wYXRDb25maWcgfSkge1xyXG4gICAgY29uc3QgbmFtZU1hdGNoID0gZmlsZW5hbWUucmVwbGFjZSgvXFw/LiokLywgJycpLm1hdGNoKC8oW14vXFxcXF0rKVxcLlxcdyskLyk7XHJcbiAgICBjb25zdCBjb250ZXh0ID0ge1xyXG4gICAgICAgIC8vIG9wdGlvbnNcclxuICAgICAgICBzZWxmTmFtZTogbmFtZU1hdGNoICYmIGNhcGl0YWxpemUoY2FtZWxpemUkMShuYW1lTWF0Y2hbMV0pKSxcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVycyxcclxuICAgICAgICBob2lzdFN0YXRpYyxcclxuICAgICAgICBjYWNoZUhhbmRsZXJzLFxyXG4gICAgICAgIG5vZGVUcmFuc2Zvcm1zLFxyXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgdHJhbnNmb3JtSG9pc3QsXHJcbiAgICAgICAgaXNCdWlsdEluQ29tcG9uZW50LFxyXG4gICAgICAgIGlzQ3VzdG9tRWxlbWVudCxcclxuICAgICAgICBleHByZXNzaW9uUGx1Z2lucyxcclxuICAgICAgICBzY29wZUlkLFxyXG4gICAgICAgIHNsb3R0ZWQsXHJcbiAgICAgICAgc3NyLFxyXG4gICAgICAgIGluU1NSLFxyXG4gICAgICAgIHNzckNzc1ZhcnMsXHJcbiAgICAgICAgYmluZGluZ01ldGFkYXRhLFxyXG4gICAgICAgIGlubGluZSxcclxuICAgICAgICBpc1RTLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuLFxyXG4gICAgICAgIGNvbXBhdENvbmZpZyxcclxuICAgICAgICAvLyBzdGF0ZVxyXG4gICAgICAgIHJvb3QsXHJcbiAgICAgICAgaGVscGVyczogbmV3IE1hcCgpLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IG5ldyBTZXQoKSxcclxuICAgICAgICBkaXJlY3RpdmVzOiBuZXcgU2V0KCksXHJcbiAgICAgICAgaG9pc3RzOiBbXSxcclxuICAgICAgICBpbXBvcnRzOiBbXSxcclxuICAgICAgICBjb25zdGFudENhY2hlOiBuZXcgTWFwKCksXHJcbiAgICAgICAgdGVtcHM6IDAsXHJcbiAgICAgICAgY2FjaGVkOiAwLFxyXG4gICAgICAgIGlkZW50aWZpZXJzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxyXG4gICAgICAgIHNjb3Blczoge1xyXG4gICAgICAgICAgICB2Rm9yOiAwLFxyXG4gICAgICAgICAgICB2U2xvdDogMCxcclxuICAgICAgICAgICAgdlByZTogMCxcclxuICAgICAgICAgICAgdk9uY2U6IDBcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhcmVudDogbnVsbCxcclxuICAgICAgICBjdXJyZW50Tm9kZTogcm9vdCxcclxuICAgICAgICBjaGlsZEluZGV4OiAwLFxyXG4gICAgICAgIGluVk9uY2U6IGZhbHNlLFxyXG4gICAgICAgIC8vIG1ldGhvZHNcclxuICAgICAgICBoZWxwZXIobmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IGNvbnRleHQuaGVscGVycy5nZXQobmFtZSkgfHwgMDtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXJzLnNldChuYW1lLCBjb3VudCArIDEpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUhlbHBlcihuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gY29udGV4dC5oZWxwZXJzLmdldChuYW1lKTtcclxuICAgICAgICAgICAgaWYgKGNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q291bnQgPSBjb3VudCAtIDE7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVycy5kZWxldGUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcnMuc2V0KG5hbWUsIGN1cnJlbnRDb3VudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGhlbHBlclN0cmluZyhuYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgXyR7aGVscGVyTmFtZU1hcFtjb250ZXh0LmhlbHBlcihuYW1lKV19YDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlcGxhY2VOb2RlKG5vZGUpIHtcclxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5jdXJyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSBiZWluZyByZXBsYWNlZCBpcyBhbHJlYWR5IHJlbW92ZWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVwbGFjZSByb290IG5vZGUuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5wYXJlbnQuY2hpbGRyZW5bY29udGV4dC5jaGlsZEluZGV4XSA9IGNvbnRleHQuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlTm9kZShub2RlKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWNvbnRleHQucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZW1vdmUgcm9vdCBub2RlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgY29uc3QgcmVtb3ZhbEluZGV4ID0gbm9kZVxyXG4gICAgICAgICAgICAgICAgPyBsaXN0LmluZGV4T2Yobm9kZSlcclxuICAgICAgICAgICAgICAgIDogY29udGV4dC5jdXJyZW50Tm9kZVxyXG4gICAgICAgICAgICAgICAgICAgID8gY29udGV4dC5jaGlsZEluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgOiAtMTtcclxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcmVtb3ZhbEluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBub2RlIGJlaW5nIHJlbW92ZWQgaXMgbm90IGEgY2hpbGQgb2YgY3VycmVudCBwYXJlbnRgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9PT0gY29udGV4dC5jdXJyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCBub2RlIHJlbW92ZWRcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbk5vZGVSZW1vdmVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzaWJsaW5nIG5vZGUgcmVtb3ZlZFxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuY2hpbGRJbmRleCA+IHJlbW92YWxJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2hpbGRJbmRleC0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25Ob2RlUmVtb3ZlZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQucGFyZW50LmNoaWxkcmVuLnNwbGljZShyZW1vdmFsSW5kZXgsIDEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25Ob2RlUmVtb3ZlZDogKCkgPT4geyB9LFxyXG4gICAgICAgIGFkZElkZW50aWZpZXJzKGV4cCkge1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlSWRlbnRpZmllcnMoZXhwKSB7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBob2lzdChleHApIHtcclxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGV4cCkpXHJcbiAgICAgICAgICAgICAgICBleHAgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGV4cCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaG9pc3RzLnB1c2goZXhwKTtcclxuICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9ob2lzdGVkXyR7Y29udGV4dC5ob2lzdHMubGVuZ3RofWAsIGZhbHNlLCBleHAubG9jLCAyIC8qIENBTl9IT0lTVCAqLyk7XHJcbiAgICAgICAgICAgIGlkZW50aWZpZXIuaG9pc3RlZCA9IGV4cDtcclxuICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYWNoZShleHAsIGlzVk5vZGUgPSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQ2FjaGVFeHByZXNzaW9uKGNvbnRleHQuY2FjaGVkKyssIGV4cCwgaXNWTm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHtcclxuICAgICAgICBjb250ZXh0LmZpbHRlcnMgPSBuZXcgU2V0KCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGV4dDtcclxufVxyXG5mdW5jdGlvbiB0cmFuc2Zvcm0ocm9vdCwgb3B0aW9ucykge1xyXG4gICAgY29uc3QgY29udGV4dCA9IGNyZWF0ZVRyYW5zZm9ybUNvbnRleHQocm9vdCwgb3B0aW9ucyk7XHJcbiAgICB0cmF2ZXJzZU5vZGUocm9vdCwgY29udGV4dCk7XHJcbiAgICBpZiAob3B0aW9ucy5ob2lzdFN0YXRpYykge1xyXG4gICAgICAgIGhvaXN0U3RhdGljKHJvb3QsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvcHRpb25zLnNzcikge1xyXG4gICAgICAgIGNyZWF0ZVJvb3RDb2RlZ2VuKHJvb3QsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgLy8gZmluYWxpemUgbWV0YSBpbmZvcm1hdGlvblxyXG4gICAgcm9vdC5oZWxwZXJzID0gWy4uLmNvbnRleHQuaGVscGVycy5rZXlzKCldO1xyXG4gICAgcm9vdC5jb21wb25lbnRzID0gWy4uLmNvbnRleHQuY29tcG9uZW50c107XHJcbiAgICByb290LmRpcmVjdGl2ZXMgPSBbLi4uY29udGV4dC5kaXJlY3RpdmVzXTtcclxuICAgIHJvb3QuaW1wb3J0cyA9IGNvbnRleHQuaW1wb3J0cztcclxuICAgIHJvb3QuaG9pc3RzID0gY29udGV4dC5ob2lzdHM7XHJcbiAgICByb290LnRlbXBzID0gY29udGV4dC50ZW1wcztcclxuICAgIHJvb3QuY2FjaGVkID0gY29udGV4dC5jYWNoZWQ7XHJcbiAgICB7XHJcbiAgICAgICAgcm9vdC5maWx0ZXJzID0gWy4uLmNvbnRleHQuZmlsdGVyc107XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUm9vdENvZGVnZW4ocm9vdCwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBoZWxwZXIgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSByb290O1xyXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5bMF07XHJcbiAgICAgICAgLy8gaWYgdGhlIHNpbmdsZSBjaGlsZCBpcyBhbiBlbGVtZW50LCB0dXJuIGl0IGludG8gYSBibG9jay5cclxuICAgICAgICBpZiAoaXNTaW5nbGVFbGVtZW50Um9vdChyb290LCBjaGlsZCkgJiYgY2hpbGQuY29kZWdlbk5vZGUpIHtcclxuICAgICAgICAgICAgLy8gc2luZ2xlIGVsZW1lbnQgcm9vdCBpcyBuZXZlciBob2lzdGVkIHNvIGNvZGVnZW5Ob2RlIHdpbGwgbmV2ZXIgYmVcclxuICAgICAgICAgICAgLy8gU2ltcGxlRXhwcmVzc2lvbk5vZGVcclxuICAgICAgICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBjaGlsZC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIFZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgIG1ha2VCbG9jayhjb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcm9vdC5jb2RlZ2VuTm9kZSA9IGNvZGVnZW5Ob2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gLSBzaW5nbGUgPHNsb3QvPiwgSWZOb2RlLCBGb3JOb2RlOiBhbHJlYWR5IGJsb2Nrcy5cclxuICAgICAgICAgICAgLy8gLSBzaW5nbGUgdGV4dCBub2RlOiBhbHdheXMgcGF0Y2hlZC5cclxuICAgICAgICAgICAgLy8gcm9vdCBjb2RlZ2VuIGZhbGxzIHRocm91Z2ggdmlhIGdlbk5vZGUoKVxyXG4gICAgICAgICAgICByb290LmNvZGVnZW5Ob2RlID0gY2hpbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIC8vIHJvb3QgaGFzIG11bHRpcGxlIG5vZGVzIC0gcmV0dXJuIGEgZnJhZ21lbnQgYmxvY2suXHJcbiAgICAgICAgbGV0IHBhdGNoRmxhZyA9IDY0IC8qIFNUQUJMRV9GUkFHTUVOVCAqLztcclxuICAgICAgICBsZXQgcGF0Y2hGbGFnVGV4dCA9IFBhdGNoRmxhZ05hbWVzWzY0IC8qIFNUQUJMRV9GUkFHTUVOVCAqL107XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGZyYWdtZW50IGFjdHVhbGx5IGNvbnRhaW5zIGEgc2luZ2xlIHZhbGlkIGNoaWxkIHdpdGhcclxuICAgICAgICAvLyB0aGUgcmVzdCBiZWluZyBjb21tZW50c1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlICE9PSAzIC8qIENPTU1FTlQgKi8pLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgfD0gMjA0OCAvKiBERVZfUk9PVF9GUkFHTUVOVCAqLztcclxuICAgICAgICAgICAgcGF0Y2hGbGFnVGV4dCArPSBgLCAke1BhdGNoRmxhZ05hbWVzWzIwNDggLyogREVWX1JPT1RfRlJBR01FTlQgKi9dfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3QuY29kZWdlbk5vZGUgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwgdW5kZWZpbmVkLCByb290LmNoaWxkcmVuLCBwYXRjaEZsYWcgKyAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke3BhdGNoRmxhZ1RleHR9ICovYCA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUsIHVuZGVmaW5lZCwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSA7XHJcbn1cclxuZnVuY3Rpb24gdHJhdmVyc2VDaGlsZHJlbihwYXJlbnQsIGNvbnRleHQpIHtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGNvbnN0IG5vZGVSZW1vdmVkID0gKCkgPT4ge1xyXG4gICAgICAgIGktLTtcclxuICAgIH07XHJcbiAgICBmb3IgKDsgaSA8IHBhcmVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gcGFyZW50LmNoaWxkcmVuW2ldO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhjaGlsZCkpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnRleHQucGFyZW50ID0gcGFyZW50O1xyXG4gICAgICAgIGNvbnRleHQuY2hpbGRJbmRleCA9IGk7XHJcbiAgICAgICAgY29udGV4dC5vbk5vZGVSZW1vdmVkID0gbm9kZVJlbW92ZWQ7XHJcbiAgICAgICAgdHJhdmVyc2VOb2RlKGNoaWxkLCBjb250ZXh0KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmF2ZXJzZU5vZGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICAvLyBhcHBseSB0cmFuc2Zvcm0gcGx1Z2luc1xyXG4gICAgY29uc3QgeyBub2RlVHJhbnNmb3JtcyB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGV4aXRGbnMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZVRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBvbkV4aXQgPSBub2RlVHJhbnNmb3Jtc1tpXShub2RlLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAob25FeGl0KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9uRXhpdCkpIHtcclxuICAgICAgICAgICAgICAgIGV4aXRGbnMucHVzaCguLi5vbkV4aXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhpdEZucy5wdXNoKG9uRXhpdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb250ZXh0LmN1cnJlbnROb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIG5vZGUgd2FzIHJlbW92ZWRcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbm9kZSBtYXkgaGF2ZSBiZWVuIHJlcGxhY2VkXHJcbiAgICAgICAgICAgIG5vZGUgPSBjb250ZXh0LmN1cnJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAzIC8qIENPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5zc3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIGluamVjdCBpbXBvcnQgZm9yIHRoZSBDb21tZW50IHN5bWJvbCwgd2hpY2ggaXMgbmVlZGVkIGZvciBjcmVhdGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gY29tbWVudCBub2RlcyB3aXRoIGBjcmVhdGVWTm9kZWBcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKENSRUFURV9DT01NRU5UKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDUgLyogSU5URVJQT0xBVElPTiAqLzpcclxuICAgICAgICAgICAgLy8gbm8gbmVlZCB0byB0cmF2ZXJzZSwgYnV0IHdlIG5lZWQgdG8gaW5qZWN0IHRvU3RyaW5nIGhlbHBlclxyXG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuc3NyKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcihUT19ESVNQTEFZX1NUUklORyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gZm9yIGNvbnRhaW5lciB0eXBlcywgZnVydGhlciB0cmF2ZXJzZSBkb3dud2FyZHNcclxuICAgICAgICBjYXNlIDkgLyogSUYgKi86XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5icmFuY2hlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2VOb2RlKG5vZGUuYnJhbmNoZXNbaV0sIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTAgLyogSUZfQlJBTkNIICovOlxyXG4gICAgICAgIGNhc2UgMTEgLyogRk9SICovOlxyXG4gICAgICAgIGNhc2UgMSAvKiBFTEVNRU5UICovOlxyXG4gICAgICAgIGNhc2UgMCAvKiBST09UICovOlxyXG4gICAgICAgICAgICB0cmF2ZXJzZUNoaWxkcmVuKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGV4aXQgdHJhbnNmb3Jtc1xyXG4gICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICBsZXQgaSA9IGV4aXRGbnMubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgIGV4aXRGbnNbaV0oKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKG5hbWUsIGZuKSB7XHJcbiAgICBjb25zdCBtYXRjaGVzID0gaXNTdHJpbmcobmFtZSlcclxuICAgICAgICA/IChuKSA9PiBuID09PSBuYW1lXHJcbiAgICAgICAgOiAobikgPT4gbmFtZS50ZXN0KG4pO1xyXG4gICAgcmV0dXJuIChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBFTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcHMgfSA9IG5vZGU7XHJcbiAgICAgICAgICAgIC8vIHN0cnVjdHVyYWwgZGlyZWN0aXZlIHRyYW5zZm9ybXMgYXJlIG5vdCBjb25jZXJuZWQgd2l0aCBzbG90c1xyXG4gICAgICAgICAgICAvLyBhcyB0aGV5IGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkgaW4gdlNsb3QudHNcclxuICAgICAgICAgICAgaWYgKG5vZGUudGFnVHlwZSA9PT0gMyAvKiBURU1QTEFURSAqLyAmJiBwcm9wcy5zb21lKGlzVlNsb3QpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZXhpdEZucyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gcHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcC50eXBlID09PSA3IC8qIERJUkVDVElWRSAqLyAmJiBtYXRjaGVzKHByb3AubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZXMgYXJlIHJlbW92ZWQgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyB3ZSByZW1vdmUgdGhlbSAqYmVmb3JlKiBhcHBseWluZyBzbyB0aGF0IGl0IGNhbiBmdXJ0aGVyXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJhdmVyc2UgaXRzZWxmIGluIGNhc2UgaXQgbW92ZXMgdGhlIG5vZGUgYXJvdW5kXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbkV4aXQgPSBmbihub2RlLCBwcm9wLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGl0Rm5zLnB1c2gob25FeGl0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZXhpdEZucztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IFBVUkVfQU5OT1RBVElPTiA9IGAvKiNfX1BVUkVfXyovYDtcclxuZnVuY3Rpb24gY3JlYXRlQ29kZWdlbkNvbnRleHQoYXN0LCB7IG1vZGUgPSAnZnVuY3Rpb24nLCBwcmVmaXhJZGVudGlmaWVycyA9IG1vZGUgPT09ICdtb2R1bGUnLCBzb3VyY2VNYXAgPSBmYWxzZSwgZmlsZW5hbWUgPSBgdGVtcGxhdGUudnVlLmh0bWxgLCBzY29wZUlkID0gbnVsbCwgb3B0aW1pemVJbXBvcnRzID0gZmFsc2UsIHJ1bnRpbWVHbG9iYWxOYW1lID0gYFZ1ZWAsIHJ1bnRpbWVNb2R1bGVOYW1lID0gYHZ1ZWAsIHNzclJ1bnRpbWVNb2R1bGVOYW1lID0gJ3Z1ZS9zZXJ2ZXItcmVuZGVyZXInLCBzc3IgPSBmYWxzZSwgaXNUUyA9IGZhbHNlLCBpblNTUiA9IGZhbHNlIH0pIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgbW9kZSxcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVycyxcclxuICAgICAgICBzb3VyY2VNYXAsXHJcbiAgICAgICAgZmlsZW5hbWUsXHJcbiAgICAgICAgc2NvcGVJZCxcclxuICAgICAgICBvcHRpbWl6ZUltcG9ydHMsXHJcbiAgICAgICAgcnVudGltZUdsb2JhbE5hbWUsXHJcbiAgICAgICAgcnVudGltZU1vZHVsZU5hbWUsXHJcbiAgICAgICAgc3NyUnVudGltZU1vZHVsZU5hbWUsXHJcbiAgICAgICAgc3NyLFxyXG4gICAgICAgIGlzVFMsXHJcbiAgICAgICAgaW5TU1IsXHJcbiAgICAgICAgc291cmNlOiBhc3QubG9jLnNvdXJjZSxcclxuICAgICAgICBjb2RlOiBgYCxcclxuICAgICAgICBjb2x1bW46IDEsXHJcbiAgICAgICAgbGluZTogMSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgaW5kZW50TGV2ZWw6IDAsXHJcbiAgICAgICAgcHVyZTogZmFsc2UsXHJcbiAgICAgICAgbWFwOiB1bmRlZmluZWQsXHJcbiAgICAgICAgaGVscGVyKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYF8ke2hlbHBlck5hbWVNYXBba2V5XX1gO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHVzaChjb2RlLCBub2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY29kZSArPSBjb2RlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaW5kZW50KCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKCsrY29udGV4dC5pbmRlbnRMZXZlbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWluZGVudCh3aXRob3V0TmV3TGluZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGlmICh3aXRob3V0TmV3TGluZSkge1xyXG4gICAgICAgICAgICAgICAgLS1jb250ZXh0LmluZGVudExldmVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbmV3bGluZSgtLWNvbnRleHQuaW5kZW50TGV2ZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBuZXdsaW5lKCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKGNvbnRleHQuaW5kZW50TGV2ZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBuZXdsaW5lKG4pIHtcclxuICAgICAgICBjb250ZXh0LnB1c2goJ1xcbicgKyBgICBgLnJlcGVhdChuKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGV4dDtcclxufVxyXG5mdW5jdGlvbiBnZW5lcmF0ZShhc3QsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3QgY29udGV4dCA9IGNyZWF0ZUNvZGVnZW5Db250ZXh0KGFzdCwgb3B0aW9ucyk7XHJcbiAgICBpZiAob3B0aW9ucy5vbkNvbnRleHRDcmVhdGVkKVxyXG4gICAgICAgIG9wdGlvbnMub25Db250ZXh0Q3JlYXRlZChjb250ZXh0KTtcclxuICAgIGNvbnN0IHsgbW9kZSwgcHVzaCwgcHJlZml4SWRlbnRpZmllcnMsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUsIHNjb3BlSWQsIHNzciB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGhhc0hlbHBlcnMgPSBhc3QuaGVscGVycy5sZW5ndGggPiAwO1xyXG4gICAgY29uc3QgdXNlV2l0aEJsb2NrID0gIXByZWZpeElkZW50aWZpZXJzICYmIG1vZGUgIT09ICdtb2R1bGUnO1xyXG4gICAgLy8gcHJlYW1ibGVzXHJcbiAgICAvLyBpbiBzZXR1cCgpIGlubGluZSBtb2RlLCB0aGUgcHJlYW1ibGUgaXMgZ2VuZXJhdGVkIGluIGEgc3ViIGNvbnRleHRcclxuICAgIC8vIGFuZCByZXR1cm5lZCBzZXBhcmF0ZWx5LlxyXG4gICAgY29uc3QgcHJlYW1ibGVDb250ZXh0ID0gY29udGV4dDtcclxuICAgIHtcclxuICAgICAgICBnZW5GdW5jdGlvblByZWFtYmxlKGFzdCwgcHJlYW1ibGVDb250ZXh0KTtcclxuICAgIH1cclxuICAgIC8vIGVudGVyIHJlbmRlciBmdW5jdGlvblxyXG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gc3NyID8gYHNzclJlbmRlcmAgOiBgcmVuZGVyYDtcclxuICAgIGNvbnN0IGFyZ3MgPSBzc3IgPyBbJ19jdHgnLCAnX3B1c2gnLCAnX3BhcmVudCcsICdfYXR0cnMnXSA6IFsnX2N0eCcsICdfY2FjaGUnXTtcclxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGFyZ3Muam9pbignLCAnKTtcclxuICAgIHtcclxuICAgICAgICBwdXNoKGBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0oJHtzaWduYXR1cmV9KSB7YCk7XHJcbiAgICB9XHJcbiAgICBpbmRlbnQoKTtcclxuICAgIGlmICh1c2VXaXRoQmxvY2spIHtcclxuICAgICAgICBwdXNoKGB3aXRoIChfY3R4KSB7YCk7XHJcbiAgICAgICAgaW5kZW50KCk7XHJcbiAgICAgICAgLy8gZnVuY3Rpb24gbW9kZSBjb25zdCBkZWNsYXJhdGlvbnMgc2hvdWxkIGJlIGluc2lkZSB3aXRoIGJsb2NrXHJcbiAgICAgICAgLy8gYWxzbyB0aGV5IHNob3VsZCBiZSByZW5hbWVkIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIHVzZXIgcHJvcGVydGllc1xyXG4gICAgICAgIGlmIChoYXNIZWxwZXJzKSB7XHJcbiAgICAgICAgICAgIHB1c2goYGNvbnN0IHsgJHthc3QuaGVscGVyc1xyXG4gICAgICAgICAgICAgICAgLm1hcChzID0+IGAke2hlbHBlck5hbWVNYXBbc119OiBfJHtoZWxwZXJOYW1lTWFwW3NdfWApXHJcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKX0gfSA9IF9WdWVgKTtcclxuICAgICAgICAgICAgcHVzaChgXFxuYCk7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBnZW5lcmF0ZSBhc3NldCByZXNvbHV0aW9uIHN0YXRlbWVudHNcclxuICAgIGlmIChhc3QuY29tcG9uZW50cy5sZW5ndGgpIHtcclxuICAgICAgICBnZW5Bc3NldHMoYXN0LmNvbXBvbmVudHMsICdjb21wb25lbnQnLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoYXN0LmRpcmVjdGl2ZXMubGVuZ3RoIHx8IGFzdC50ZW1wcyA+IDApIHtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChhc3QuZGlyZWN0aXZlcy5sZW5ndGgpIHtcclxuICAgICAgICBnZW5Bc3NldHMoYXN0LmRpcmVjdGl2ZXMsICdkaXJlY3RpdmUnLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoYXN0LnRlbXBzID4gMCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGFzdC5maWx0ZXJzICYmIGFzdC5maWx0ZXJzLmxlbmd0aCkge1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICBnZW5Bc3NldHMoYXN0LmZpbHRlcnMsICdmaWx0ZXInLCBjb250ZXh0KTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LnRlbXBzID4gMCkge1xyXG4gICAgICAgIHB1c2goYGxldCBgKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzdC50ZW1wczsgaSsrKSB7XHJcbiAgICAgICAgICAgIHB1c2goYCR7aSA+IDAgPyBgLCBgIDogYGB9X3RlbXAke2l9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGFzdC5jb21wb25lbnRzLmxlbmd0aCB8fCBhc3QuZGlyZWN0aXZlcy5sZW5ndGggfHwgYXN0LnRlbXBzKSB7XHJcbiAgICAgICAgcHVzaChgXFxuYCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgfVxyXG4gICAgLy8gZ2VuZXJhdGUgdGhlIFZOb2RlIHRyZWUgZXhwcmVzc2lvblxyXG4gICAgaWYgKCFzc3IpIHtcclxuICAgICAgICBwdXNoKGByZXR1cm4gYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LmNvZGVnZW5Ob2RlKSB7XHJcbiAgICAgICAgZ2VuTm9kZShhc3QuY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcHVzaChgbnVsbGApO1xyXG4gICAgfVxyXG4gICAgaWYgKHVzZVdpdGhCbG9jaykge1xyXG4gICAgICAgIGRlaW5kZW50KCk7XHJcbiAgICAgICAgcHVzaChgfWApO1xyXG4gICAgfVxyXG4gICAgZGVpbmRlbnQoKTtcclxuICAgIHB1c2goYH1gKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYXN0LFxyXG4gICAgICAgIGNvZGU6IGNvbnRleHQuY29kZSxcclxuICAgICAgICBwcmVhbWJsZTogYGAsXHJcbiAgICAgICAgLy8gU291cmNlTWFwR2VuZXJhdG9yIGRvZXMgaGF2ZSB0b0pTT04oKSBtZXRob2QgYnV0IGl0J3Mgbm90IGluIHRoZSB0eXBlc1xyXG4gICAgICAgIG1hcDogY29udGV4dC5tYXAgPyBjb250ZXh0Lm1hcC50b0pTT04oKSA6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBnZW5GdW5jdGlvblByZWFtYmxlKGFzdCwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBzc3IsIHByZWZpeElkZW50aWZpZXJzLCBwdXNoLCBuZXdsaW5lLCBydW50aW1lTW9kdWxlTmFtZSwgcnVudGltZUdsb2JhbE5hbWUsIHNzclJ1bnRpbWVNb2R1bGVOYW1lIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgVnVlQmluZGluZyA9IHJ1bnRpbWVHbG9iYWxOYW1lO1xyXG4gICAgY29uc3QgYWxpYXNIZWxwZXIgPSAocykgPT4gYCR7aGVscGVyTmFtZU1hcFtzXX06IF8ke2hlbHBlck5hbWVNYXBbc119YDtcclxuICAgIC8vIEdlbmVyYXRlIGNvbnN0IGRlY2xhcmF0aW9uIGZvciBoZWxwZXJzXHJcbiAgICAvLyBJbiBwcmVmaXggbW9kZSwgd2UgcGxhY2UgdGhlIGNvbnN0IGRlY2xhcmF0aW9uIGF0IHRvcCBzbyBpdCdzIGRvbmVcclxuICAgIC8vIG9ubHkgb25jZTsgQnV0IGlmIHdlIG5vdCBwcmVmaXhpbmcsIHdlIHBsYWNlIHRoZSBkZWNsYXJhdGlvbiBpbnNpZGUgdGhlXHJcbiAgICAvLyB3aXRoIGJsb2NrIHNvIGl0IGRvZXNuJ3QgaW5jdXIgdGhlIGBpbmAgY2hlY2sgY29zdCBmb3IgZXZlcnkgaGVscGVyIGFjY2Vzcy5cclxuICAgIGlmIChhc3QuaGVscGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvLyBcIndpdGhcIiBtb2RlLlxyXG4gICAgICAgICAgICAvLyBzYXZlIFZ1ZSBpbiBhIHNlcGFyYXRlIHZhcmlhYmxlIHRvIGF2b2lkIGNvbGxpc2lvblxyXG4gICAgICAgICAgICBwdXNoKGBjb25zdCBfVnVlID0gJHtWdWVCaW5kaW5nfVxcbmApO1xyXG4gICAgICAgICAgICAvLyBpbiBcIndpdGhcIiBtb2RlLCBoZWxwZXJzIGFyZSBkZWNsYXJlZCBpbnNpZGUgdGhlIHdpdGggYmxvY2sgdG8gYXZvaWRcclxuICAgICAgICAgICAgLy8gaGFzIGNoZWNrIGNvc3QsIGJ1dCBob2lzdHMgYXJlIGxpZnRlZCBvdXQgb2YgdGhlIGZ1bmN0aW9uIC0gd2UgbmVlZFxyXG4gICAgICAgICAgICAvLyB0byBwcm92aWRlIHRoZSBoZWxwZXIgaGVyZS5cclxuICAgICAgICAgICAgaWYgKGFzdC5ob2lzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0aWNIZWxwZXJzID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIENSRUFURV9WTk9ERSxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfRUxFTUVOVF9WTk9ERSxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfQ09NTUVOVCxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfVEVYVCxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfU1RBVElDXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihoZWxwZXIgPT4gYXN0LmhlbHBlcnMuaW5jbHVkZXMoaGVscGVyKSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKGFsaWFzSGVscGVyKVxyXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpO1xyXG4gICAgICAgICAgICAgICAgcHVzaChgY29uc3QgeyAke3N0YXRpY0hlbHBlcnN9IH0gPSBfVnVlXFxuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZW5Ib2lzdHMoYXN0LmhvaXN0cywgY29udGV4dCk7XHJcbiAgICBuZXdsaW5lKCk7XHJcbiAgICBwdXNoKGByZXR1cm4gYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQXNzZXRzKGFzc2V0cywgdHlwZSwgeyBoZWxwZXIsIHB1c2gsIG5ld2xpbmUsIGlzVFMgfSkge1xyXG4gICAgY29uc3QgcmVzb2x2ZXIgPSBoZWxwZXIodHlwZSA9PT0gJ2ZpbHRlcidcclxuICAgICAgICA/IFJFU09MVkVfRklMVEVSXHJcbiAgICAgICAgOiB0eXBlID09PSAnY29tcG9uZW50J1xyXG4gICAgICAgICAgICA/IFJFU09MVkVfQ09NUE9ORU5UXHJcbiAgICAgICAgICAgIDogUkVTT0xWRV9ESVJFQ1RJVkUpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhc3NldHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgaWQgPSBhc3NldHNbaV07XHJcbiAgICAgICAgLy8gcG90ZW50aWFsIGNvbXBvbmVudCBpbXBsaWNpdCBzZWxmLXJlZmVyZW5jZSBpbmZlcnJlZCBmcm9tIFNGQyBmaWxlbmFtZVxyXG4gICAgICAgIGNvbnN0IG1heWJlU2VsZlJlZmVyZW5jZSA9IGlkLmVuZHNXaXRoKCdfX3NlbGYnKTtcclxuICAgICAgICBpZiAobWF5YmVTZWxmUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICAgIGlkID0gaWQuc2xpY2UoMCwgLTYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwdXNoKGBjb25zdCAke3RvVmFsaWRBc3NldElkKGlkLCB0eXBlKX0gPSAke3Jlc29sdmVyfSgke0pTT04uc3RyaW5naWZ5KGlkKX0ke21heWJlU2VsZlJlZmVyZW5jZSA/IGAsIHRydWVgIDogYGB9KSR7aXNUUyA/IGAhYCA6IGBgfWApO1xyXG4gICAgICAgIGlmIChpIDwgYXNzZXRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5Ib2lzdHMoaG9pc3RzLCBjb250ZXh0KSB7XHJcbiAgICBpZiAoIWhvaXN0cy5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnB1cmUgPSB0cnVlO1xyXG4gICAgY29uc3QgeyBwdXNoLCBuZXdsaW5lLCBoZWxwZXIsIHNjb3BlSWQsIG1vZGUgfSA9IGNvbnRleHQ7XHJcbiAgICBuZXdsaW5lKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhvaXN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGV4cCA9IGhvaXN0c1tpXTtcclxuICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgIHB1c2goYGNvbnN0IF9ob2lzdGVkXyR7aSArIDF9ID0gJHtgYH1gKTtcclxuICAgICAgICAgICAgZ2VuTm9kZShleHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29udGV4dC5wdXJlID0gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gaXNUZXh0JDEobikge1xyXG4gICAgcmV0dXJuIChpc1N0cmluZyhuKSB8fFxyXG4gICAgICAgIG4udHlwZSA9PT0gNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgIG4udHlwZSA9PT0gMiAvKiBURVhUICovIHx8XHJcbiAgICAgICAgbi50eXBlID09PSA1IC8qIElOVEVSUE9MQVRJT04gKi8gfHxcclxuICAgICAgICBuLnR5cGUgPT09IDggLyogQ09NUE9VTkRfRVhQUkVTU0lPTiAqLyk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuTm9kZUxpc3RBc0FycmF5KG5vZGVzLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBtdWx0aWxpbmVzID0gbm9kZXMubGVuZ3RoID4gMyB8fFxyXG4gICAgICAgICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSAmJiBub2Rlcy5zb21lKG4gPT4gaXNBcnJheShuKSB8fCAhaXNUZXh0JDEobikpKTtcclxuICAgIGNvbnRleHQucHVzaChgW2ApO1xyXG4gICAgbXVsdGlsaW5lcyAmJiBjb250ZXh0LmluZGVudCgpO1xyXG4gICAgZ2VuTm9kZUxpc3Qobm9kZXMsIGNvbnRleHQsIG11bHRpbGluZXMpO1xyXG4gICAgbXVsdGlsaW5lcyAmJiBjb250ZXh0LmRlaW5kZW50KCk7XHJcbiAgICBjb250ZXh0LnB1c2goYF1gKTtcclxufVxyXG5mdW5jdGlvbiBnZW5Ob2RlTGlzdChub2RlcywgY29udGV4dCwgbXVsdGlsaW5lcyA9IGZhbHNlLCBjb21tYSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgbmV3bGluZSB9ID0gY29udGV4dDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKG5vZGUpKSB7XHJcbiAgICAgICAgICAgIHB1c2gobm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzQXJyYXkobm9kZSkpIHtcclxuICAgICAgICAgICAgZ2VuTm9kZUxpc3RBc0FycmF5KG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ2VuTm9kZShub2RlLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGkgPCBub2Rlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIGlmIChtdWx0aWxpbmVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb21tYSAmJiBwdXNoKCcsJyk7XHJcbiAgICAgICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb21tYSAmJiBwdXNoKCcsICcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbk5vZGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgaWYgKGlzU3RyaW5nKG5vZGUpKSB7XHJcbiAgICAgICAgY29udGV4dC5wdXNoKG5vZGUpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChpc1N5bWJvbChub2RlKSkge1xyXG4gICAgICAgIGNvbnRleHQucHVzaChjb250ZXh0LmhlbHBlcihub2RlKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDEgLyogRUxFTUVOVCAqLzpcclxuICAgICAgICBjYXNlIDkgLyogSUYgKi86XHJcbiAgICAgICAgY2FzZSAxMSAvKiBGT1IgKi86XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgYXNzZXJ0KG5vZGUuY29kZWdlbk5vZGUgIT0gbnVsbCwgYENvZGVnZW4gbm9kZSBpcyBtaXNzaW5nIGZvciBlbGVtZW50L2lmL2ZvciBub2RlLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgQXBwbHkgYXBwcm9wcmlhdGUgdHJhbnNmb3JtcyBmaXJzdC5gKTtcclxuICAgICAgICAgICAgZ2VuTm9kZShub2RlLmNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyIC8qIFRFWFQgKi86XHJcbiAgICAgICAgICAgIGdlblRleHQobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1IC8qIElOVEVSUE9MQVRJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkludGVycG9sYXRpb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTIgLyogVEVYVF9DQUxMICovOlxyXG4gICAgICAgICAgICBnZW5Ob2RlKG5vZGUuY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDggLyogQ09NUE9VTkRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQ29tcG91bmRFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDMgLyogQ09NTUVOVCAqLzpcclxuICAgICAgICAgICAgZ2VuQ29tbWVudChub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxMyAvKiBWTk9ERV9DQUxMICovOlxyXG4gICAgICAgICAgICBnZW5WTm9kZUNhbGwobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTQgLyogSlNfQ0FMTF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5DYWxsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxNSAvKiBKU19PQkpFQ1RfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuT2JqZWN0RXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxNyAvKiBKU19BUlJBWV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5BcnJheUV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTggLyogSlNfRlVOQ1RJT05fRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE5IC8qIEpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkNvbmRpdGlvbmFsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyMCAvKiBKU19DQUNIRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5DYWNoZUV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjEgLyogSlNfQkxPQ0tfU1RBVEVNRU5UICovOlxyXG4gICAgICAgICAgICBnZW5Ob2RlTGlzdChub2RlLmJvZHksIGNvbnRleHQsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gU1NSIG9ubHkgdHlwZXNcclxuICAgICAgICBjYXNlIDIyIC8qIEpTX1RFTVBMQVRFX0xJVEVSQUwgKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjMgLyogSlNfSUZfU1RBVEVNRU5UICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI0IC8qIEpTX0FTU0lHTk1FTlRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyNSAvKiBKU19TRVFVRU5DRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI2IC8qIEpTX1JFVFVSTl9TVEFURU1FTlQgKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICAgICAgY2FzZSAxMCAvKiBJRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgICAgIC8vIG5vb3BcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBgdW5oYW5kbGVkIGNvZGVnZW4gbm9kZSB0eXBlOiAke25vZGUudHlwZX1gKTtcclxuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBleGhhdXN0IGFsbCBwb3NzaWJsZSB0eXBlc1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhoYXVzdGl2ZUNoZWNrID0gbm9kZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBleGhhdXN0aXZlQ2hlY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5UZXh0KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnRleHQucHVzaChKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpLCBub2RlKTtcclxufVxyXG5mdW5jdGlvbiBnZW5FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgY29udGVudCwgaXNTdGF0aWMgfSA9IG5vZGU7XHJcbiAgICBjb250ZXh0LnB1c2goaXNTdGF0aWMgPyBKU09OLnN0cmluZ2lmeShjb250ZW50KSA6IGNvbnRlbnQsIG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkludGVycG9sYXRpb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAocHVyZSlcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICBwdXNoKGAke2hlbHBlcihUT19ESVNQTEFZX1NUUklORyl9KGApO1xyXG4gICAgZ2VuTm9kZShub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgcHVzaChgKWApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkKSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ2VuTm9kZShjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkV4cHJlc3Npb25Bc1Byb3BlcnR5S2V5KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCB9ID0gY29udGV4dDtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDggLyogQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIHB1c2goYFtgKTtcclxuICAgICAgICBnZW5Db21wb3VuZEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgXWApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5pc1N0YXRpYykge1xyXG4gICAgICAgIC8vIG9ubHkgcXVvdGUga2V5cyBpZiBuZWNlc3NhcnlcclxuICAgICAgICBjb25zdCB0ZXh0ID0gaXNTaW1wbGVJZGVudGlmaWVyKG5vZGUuY29udGVudClcclxuICAgICAgICAgICAgPyBub2RlLmNvbnRlbnRcclxuICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpO1xyXG4gICAgICAgIHB1c2godGV4dCwgbm9kZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwdXNoKGBbJHtub2RlLmNvbnRlbnR9XWAsIG5vZGUpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkNvbW1lbnQobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAocHVyZSkge1xyXG4gICAgICAgIHB1c2goUFVSRV9BTk5PVEFUSU9OKTtcclxuICAgIH1cclxuICAgIHB1c2goYCR7aGVscGVyKENSRUFURV9DT01NRU5UKX0oJHtKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpfSlgLCBub2RlKTtcclxufVxyXG5mdW5jdGlvbiBnZW5WTm9kZUNhbGwobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHRhZywgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgZGlyZWN0aXZlcywgaXNCbG9jaywgZGlzYWJsZVRyYWNraW5nLCBpc0NvbXBvbmVudCB9ID0gbm9kZTtcclxuICAgIGlmIChkaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgcHVzaChoZWxwZXIoV0lUSF9ESVJFQ1RJVkVTKSArIGAoYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNCbG9jaykge1xyXG4gICAgICAgIHB1c2goYCgke2hlbHBlcihPUEVOX0JMT0NLKX0oJHtkaXNhYmxlVHJhY2tpbmcgPyBgdHJ1ZWAgOiBgYH0pLCBgKTtcclxuICAgIH1cclxuICAgIGlmIChwdXJlKSB7XHJcbiAgICAgICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2FsbEhlbHBlciA9IGlzQmxvY2tcclxuICAgICAgICA/IGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpXHJcbiAgICAgICAgOiBnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudCk7XHJcbiAgICBwdXNoKGhlbHBlcihjYWxsSGVscGVyKSArIGAoYCwgbm9kZSk7XHJcbiAgICBnZW5Ob2RlTGlzdChnZW5OdWxsYWJsZUFyZ3MoW3RhZywgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wc10pLCBjb250ZXh0KTtcclxuICAgIHB1c2goYClgKTtcclxuICAgIGlmIChpc0Jsb2NrKSB7XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgaWYgKGRpcmVjdGl2ZXMpIHtcclxuICAgICAgICBwdXNoKGAsIGApO1xyXG4gICAgICAgIGdlbk5vZGUoZGlyZWN0aXZlcywgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbk51bGxhYmxlQXJncyhhcmdzKSB7XHJcbiAgICBsZXQgaSA9IGFyZ3MubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgIGlmIChhcmdzW2ldICE9IG51bGwpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyZ3Muc2xpY2UoMCwgaSArIDEpLm1hcChhcmcgPT4gYXJnIHx8IGBudWxsYCk7XHJcbn1cclxuLy8gSmF2YVNjcmlwdFxyXG5mdW5jdGlvbiBnZW5DYWxsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgcHVyZSB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGNhbGxlZSA9IGlzU3RyaW5nKG5vZGUuY2FsbGVlKSA/IG5vZGUuY2FsbGVlIDogaGVscGVyKG5vZGUuY2FsbGVlKTtcclxuICAgIGlmIChwdXJlKSB7XHJcbiAgICAgICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xyXG4gICAgfVxyXG4gICAgcHVzaChjYWxsZWUgKyBgKGAsIG5vZGUpO1xyXG4gICAgZ2VuTm9kZUxpc3Qobm9kZS5hcmd1bWVudHMsIGNvbnRleHQpO1xyXG4gICAgcHVzaChgKWApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbk9iamVjdEV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBpbmRlbnQsIGRlaW5kZW50LCBuZXdsaW5lIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBwcm9wZXJ0aWVzIH0gPSBub2RlO1xyXG4gICAgaWYgKCFwcm9wZXJ0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgIHB1c2goYHt9YCwgbm9kZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbXVsdGlsaW5lcyA9IHByb3BlcnRpZXMubGVuZ3RoID4gMSB8fFxyXG4gICAgICAgICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSAmJlxyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLnNvbWUocCA9PiBwLnZhbHVlLnR5cGUgIT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8pKTtcclxuICAgIHB1c2gobXVsdGlsaW5lcyA/IGB7YCA6IGB7IGApO1xyXG4gICAgbXVsdGlsaW5lcyAmJiBpbmRlbnQoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gcHJvcGVydGllc1tpXTtcclxuICAgICAgICAvLyBrZXlcclxuICAgICAgICBnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShrZXksIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYDogYCk7XHJcbiAgICAgICAgLy8gdmFsdWVcclxuICAgICAgICBnZW5Ob2RlKHZhbHVlLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoaSA8IHByb3BlcnRpZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAvLyB3aWxsIG9ubHkgcmVhY2ggdGhpcyBpZiBpdCdzIG11bHRpbGluZXNcclxuICAgICAgICAgICAgcHVzaChgLGApO1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbXVsdGlsaW5lcyAmJiBkZWluZGVudCgpO1xyXG4gICAgcHVzaChtdWx0aWxpbmVzID8gYH1gIDogYCB9YCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQXJyYXlFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGdlbk5vZGVMaXN0QXNBcnJheShub2RlLmVsZW1lbnRzLCBjb250ZXh0KTtcclxufVxyXG5mdW5jdGlvbiBnZW5GdW5jdGlvbkV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBpbmRlbnQsIGRlaW5kZW50IH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBwYXJhbXMsIHJldHVybnMsIGJvZHksIG5ld2xpbmUsIGlzU2xvdCB9ID0gbm9kZTtcclxuICAgIGlmIChpc1Nsb3QpIHtcclxuICAgICAgICAvLyB3cmFwIHNsb3QgZnVuY3Rpb25zIHdpdGggb3duZXIgY29udGV4dFxyXG4gICAgICAgIHB1c2goYF8ke2hlbHBlck5hbWVNYXBbV0lUSF9DVFhdfShgKTtcclxuICAgIH1cclxuICAgIHB1c2goYChgLCBub2RlKTtcclxuICAgIGlmIChpc0FycmF5KHBhcmFtcykpIHtcclxuICAgICAgICBnZW5Ob2RlTGlzdChwYXJhbXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgZ2VuTm9kZShwYXJhbXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgcHVzaChgKSA9PiBgKTtcclxuICAgIGlmIChuZXdsaW5lIHx8IGJvZHkpIHtcclxuICAgICAgICBwdXNoKGB7YCk7XHJcbiAgICAgICAgaW5kZW50KCk7XHJcbiAgICB9XHJcbiAgICBpZiAocmV0dXJucykge1xyXG4gICAgICAgIGlmIChuZXdsaW5lKSB7XHJcbiAgICAgICAgICAgIHB1c2goYHJldHVybiBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocmV0dXJucykpIHtcclxuICAgICAgICAgICAgZ2VuTm9kZUxpc3RBc0FycmF5KHJldHVybnMsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ2VuTm9kZShyZXR1cm5zLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChib2R5KSB7XHJcbiAgICAgICAgZ2VuTm9kZShib2R5LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmIChuZXdsaW5lIHx8IGJvZHkpIHtcclxuICAgICAgICBkZWluZGVudCgpO1xyXG4gICAgICAgIHB1c2goYH1gKTtcclxuICAgIH1cclxuICAgIGlmIChpc1Nsb3QpIHtcclxuICAgICAgICBpZiAobm9kZS5pc05vblNjb3BlZFNsb3QpIHtcclxuICAgICAgICAgICAgcHVzaChgLCB1bmRlZmluZWQsIHRydWVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkNvbmRpdGlvbmFsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSwgbmV3bGluZTogbmVlZE5ld2xpbmUgfSA9IG5vZGU7XHJcbiAgICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAodGVzdC50eXBlID09PSA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgbmVlZHNQYXJlbnMgPSAhaXNTaW1wbGVJZGVudGlmaWVyKHRlc3QuY29udGVudCk7XHJcbiAgICAgICAgbmVlZHNQYXJlbnMgJiYgcHVzaChgKGApO1xyXG4gICAgICAgIGdlbkV4cHJlc3Npb24odGVzdCwgY29udGV4dCk7XHJcbiAgICAgICAgbmVlZHNQYXJlbnMgJiYgcHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcHVzaChgKGApO1xyXG4gICAgICAgIGdlbk5vZGUodGVzdCwgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgbmVlZE5ld2xpbmUgJiYgaW5kZW50KCk7XHJcbiAgICBjb250ZXh0LmluZGVudExldmVsKys7XHJcbiAgICBuZWVkTmV3bGluZSB8fCBwdXNoKGAgYCk7XHJcbiAgICBwdXNoKGA/IGApO1xyXG4gICAgZ2VuTm9kZShjb25zZXF1ZW50LCBjb250ZXh0KTtcclxuICAgIGNvbnRleHQuaW5kZW50TGV2ZWwtLTtcclxuICAgIG5lZWROZXdsaW5lICYmIG5ld2xpbmUoKTtcclxuICAgIG5lZWROZXdsaW5lIHx8IHB1c2goYCBgKTtcclxuICAgIHB1c2goYDogYCk7XHJcbiAgICBjb25zdCBpc05lc3RlZCA9IGFsdGVybmF0ZS50eXBlID09PSAxOSAvKiBKU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovO1xyXG4gICAgaWYgKCFpc05lc3RlZCkge1xyXG4gICAgICAgIGNvbnRleHQuaW5kZW50TGV2ZWwrKztcclxuICAgIH1cclxuICAgIGdlbk5vZGUoYWx0ZXJuYXRlLCBjb250ZXh0KTtcclxuICAgIGlmICghaXNOZXN0ZWQpIHtcclxuICAgICAgICBjb250ZXh0LmluZGVudExldmVsLS07XHJcbiAgICB9XHJcbiAgICBuZWVkTmV3bGluZSAmJiBkZWluZGVudCh0cnVlIC8qIHdpdGhvdXQgbmV3bGluZSAqLyk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQ2FjaGVFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBpbmRlbnQsIGRlaW5kZW50LCBuZXdsaW5lIH0gPSBjb250ZXh0O1xyXG4gICAgcHVzaChgX2NhY2hlWyR7bm9kZS5pbmRleH1dIHx8IChgKTtcclxuICAgIGlmIChub2RlLmlzVk5vZGUpIHtcclxuICAgICAgICBpbmRlbnQoKTtcclxuICAgICAgICBwdXNoKGAke2hlbHBlcihTRVRfQkxPQ0tfVFJBQ0tJTkcpfSgtMSksYCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgfVxyXG4gICAgcHVzaChgX2NhY2hlWyR7bm9kZS5pbmRleH1dID0gYCk7XHJcbiAgICBnZW5Ob2RlKG5vZGUudmFsdWUsIGNvbnRleHQpO1xyXG4gICAgaWYgKG5vZGUuaXNWTm9kZSkge1xyXG4gICAgICAgIHB1c2goYCxgKTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgcHVzaChgJHtoZWxwZXIoU0VUX0JMT0NLX1RSQUNLSU5HKX0oMSksYCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIHB1c2goYF9jYWNoZVske25vZGUuaW5kZXh9XWApO1xyXG4gICAgICAgIGRlaW5kZW50KCk7XHJcbiAgICB9XHJcbiAgICBwdXNoKGApYCk7XHJcbn1cblxuZnVuY3Rpb24gd2Fsa0lkZW50aWZpZXJzKHJvb3QsIG9uSWRlbnRpZmllciwgaW5jbHVkZUFsbCA9IGZhbHNlLCBwYXJlbnRTdGFjayA9IFtdLCBrbm93bklkcyA9IE9iamVjdC5jcmVhdGUobnVsbCkpIHtcclxuICAgIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNSZWZlcmVuY2VkSWRlbnRpZmllcihpZCwgcGFyZW50LCBwYXJlbnRTdGFjaykge1xyXG4gICAge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc0luRGVzdHJ1Y3R1cmVBc3NpZ25tZW50KHBhcmVudCwgcGFyZW50U3RhY2spIHtcclxuICAgIGlmIChwYXJlbnQgJiZcclxuICAgICAgICAocGFyZW50LnR5cGUgPT09ICdPYmplY3RQcm9wZXJ0eScgfHwgcGFyZW50LnR5cGUgPT09ICdBcnJheVBhdHRlcm4nKSkge1xyXG4gICAgICAgIGxldCBpID0gcGFyZW50U3RhY2subGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgY29uc3QgcCA9IHBhcmVudFN0YWNrW2ldO1xyXG4gICAgICAgICAgICBpZiAocC50eXBlID09PSAnQXNzaWdubWVudEV4cHJlc3Npb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChwLnR5cGUgIT09ICdPYmplY3RQcm9wZXJ0eScgJiYgIXAudHlwZS5lbmRzV2l0aCgnUGF0dGVybicpKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiB3YWxrRnVuY3Rpb25QYXJhbXMobm9kZSwgb25JZGVudCkge1xyXG4gICAgZm9yIChjb25zdCBwIG9mIG5vZGUucGFyYW1zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpZCBvZiBleHRyYWN0SWRlbnRpZmllcnMocCkpIHtcclxuICAgICAgICAgICAgb25JZGVudChpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHdhbGtCbG9ja0RlY2xhcmF0aW9ucyhibG9jaywgb25JZGVudCkge1xyXG4gICAgZm9yIChjb25zdCBzdG10IG9mIGJsb2NrLmJvZHkpIHtcclxuICAgICAgICBpZiAoc3RtdC50eXBlID09PSAnVmFyaWFibGVEZWNsYXJhdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHN0bXQuZGVjbGFyZSlcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRlY2wgb2Ygc3RtdC5kZWNsYXJhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgZXh0cmFjdElkZW50aWZpZXJzKGRlY2wuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25JZGVudChpZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc3RtdC50eXBlID09PSAnRnVuY3Rpb25EZWNsYXJhdGlvbicgfHxcclxuICAgICAgICAgICAgc3RtdC50eXBlID09PSAnQ2xhc3NEZWNsYXJhdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHN0bXQuZGVjbGFyZSB8fCAhc3RtdC5pZClcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBvbklkZW50KHN0bXQuaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBleHRyYWN0SWRlbnRpZmllcnMocGFyYW0sIG5vZGVzID0gW10pIHtcclxuICAgIHN3aXRjaCAocGFyYW0udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ0lkZW50aWZpZXInOlxyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKHBhcmFtKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTWVtYmVyRXhwcmVzc2lvbic6XHJcbiAgICAgICAgICAgIGxldCBvYmplY3QgPSBwYXJhbTtcclxuICAgICAgICAgICAgd2hpbGUgKG9iamVjdC50eXBlID09PSAnTWVtYmVyRXhwcmVzc2lvbicpIHtcclxuICAgICAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5vYmplY3Q7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZXMucHVzaChvYmplY3QpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdPYmplY3RQYXR0ZXJuJzpcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHBhcmFtLnByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wLnR5cGUgPT09ICdSZXN0RWxlbWVudCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocHJvcC5hcmd1bWVudCwgbm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHByb3AudmFsdWUsIG5vZGVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdBcnJheVBhdHRlcm4nOlxyXG4gICAgICAgICAgICBwYXJhbS5lbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKGVsZW1lbnQsIG5vZGVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ1Jlc3RFbGVtZW50JzpcclxuICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHBhcmFtLmFyZ3VtZW50LCBub2Rlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0Fzc2lnbm1lbnRQYXR0ZXJuJzpcclxuICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHBhcmFtLmxlZnQsIG5vZGVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbn1cclxuY29uc3QgaXNGdW5jdGlvblR5cGUgPSAobm9kZSkgPT4ge1xyXG4gICAgcmV0dXJuIC9GdW5jdGlvbig/OkV4cHJlc3Npb258RGVjbGFyYXRpb24pJHxNZXRob2QkLy50ZXN0KG5vZGUudHlwZSk7XHJcbn07XHJcbmNvbnN0IGlzU3RhdGljUHJvcGVydHkgPSAobm9kZSkgPT4gbm9kZSAmJlxyXG4gICAgKG5vZGUudHlwZSA9PT0gJ09iamVjdFByb3BlcnR5JyB8fCBub2RlLnR5cGUgPT09ICdPYmplY3RNZXRob2QnKSAmJlxyXG4gICAgIW5vZGUuY29tcHV0ZWQ7XHJcbmNvbnN0IGlzU3RhdGljUHJvcGVydHlLZXkgPSAobm9kZSwgcGFyZW50KSA9PiBpc1N0YXRpY1Byb3BlcnR5KHBhcmVudCkgJiYgcGFyZW50LmtleSA9PT0gbm9kZTtcblxuLy8gdGhlc2Uga2V5d29yZHMgc2hvdWxkIG5vdCBhcHBlYXIgaW5zaWRlIGV4cHJlc3Npb25zLCBidXQgb3BlcmF0b3JzIGxpa2VcclxuLy8gdHlwZW9mLCBpbnN0YW5jZW9mIGFuZCBpbiBhcmUgYWxsb3dlZFxyXG5jb25zdCBwcm9oaWJpdGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cCgnXFxcXGInICtcclxuICAgICgnZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCwnICtcclxuICAgICAgICAnc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LCcgK1xyXG4gICAgICAgICdleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rpb24sYXJndW1lbnRzLHR5cGVvZix2b2lkJylcclxuICAgICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAgIC5qb2luKCdcXFxcYnxcXFxcYicpICtcclxuICAgICdcXFxcYicpO1xyXG4vLyBzdHJpcCBzdHJpbmdzIGluIGV4cHJlc3Npb25zXHJcbmNvbnN0IHN0cmlwU3RyaW5nUkUgPSAvJyg/OlteJ1xcXFxdfFxcXFwuKSonfFwiKD86W15cIlxcXFxdfFxcXFwuKSpcInxgKD86W15gXFxcXF18XFxcXC4pKlxcJFxce3xcXH0oPzpbXmBcXFxcXXxcXFxcLikqYHxgKD86W15gXFxcXF18XFxcXC4pKmAvZztcclxuLyoqXHJcbiAqIFZhbGlkYXRlIGEgbm9uLXByZWZpeGVkIGV4cHJlc3Npb24uXHJcbiAqIFRoaXMgaXMgb25seSBjYWxsZWQgd2hlbiB1c2luZyB0aGUgaW4tYnJvd3NlciBydW50aW1lIGNvbXBpbGVyIHNpbmNlIGl0XHJcbiAqIGRvZXNuJ3QgcHJlZml4IGV4cHJlc3Npb25zLlxyXG4gKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihub2RlLCBjb250ZXh0LCBhc1BhcmFtcyA9IGZhbHNlLCBhc1Jhd1N0YXRlbWVudHMgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgZXhwID0gbm9kZS5jb250ZW50O1xyXG4gICAgLy8gZW1wdHkgZXhwcmVzc2lvbnMgYXJlIHZhbGlkYXRlZCBwZXItZGlyZWN0aXZlIHNpbmNlIHNvbWUgZGlyZWN0aXZlc1xyXG4gICAgLy8gZG8gYWxsb3cgZW1wdHkgZXhwcmVzc2lvbnMuXHJcbiAgICBpZiAoIWV4cC50cmltKCkpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICAgIG5ldyBGdW5jdGlvbihhc1Jhd1N0YXRlbWVudHNcclxuICAgICAgICAgICAgPyBgICR7ZXhwfSBgXHJcbiAgICAgICAgICAgIDogYHJldHVybiAke2FzUGFyYW1zID8gYCgke2V4cH0pID0+IHt9YCA6IGAoJHtleHB9KWB9YCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGxldCBtZXNzYWdlID0gZS5tZXNzYWdlO1xyXG4gICAgICAgIGNvbnN0IGtleXdvcmRNYXRjaCA9IGV4cFxyXG4gICAgICAgICAgICAucmVwbGFjZShzdHJpcFN0cmluZ1JFLCAnJylcclxuICAgICAgICAgICAgLm1hdGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xyXG4gICAgICAgIGlmIChrZXl3b3JkTWF0Y2gpIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IGBhdm9pZCB1c2luZyBKYXZhU2NyaXB0IGtleXdvcmQgYXMgcHJvcGVydHkgbmFtZTogXCIke2tleXdvcmRNYXRjaFswXX1cImA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ0IC8qIFhfSU5WQUxJRF9FWFBSRVNTSU9OICovLCBub2RlLmxvYywgdW5kZWZpbmVkLCBtZXNzYWdlKSk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgdHJhbnNmb3JtRXhwcmVzc2lvbiA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA1IC8qIElOVEVSUE9MQVRJT04gKi8pIHtcclxuICAgICAgICBub2RlLmNvbnRlbnQgPSBwcm9jZXNzRXhwcmVzc2lvbihub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAxIC8qIEVMRU1FTlQgKi8pIHtcclxuICAgICAgICAvLyBoYW5kbGUgZGlyZWN0aXZlcyBvbiBlbGVtZW50XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgICAgIC8vIGRvIG5vdCBwcm9jZXNzIGZvciB2LW9uICYgdi1mb3Igc2luY2UgdGhleSBhcmUgc3BlY2lhbCBoYW5kbGVkXHJcbiAgICAgICAgICAgIGlmIChkaXIudHlwZSA9PT0gNyAvKiBESVJFQ1RJVkUgKi8gJiYgZGlyLm5hbWUgIT09ICdmb3InKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHAgPSBkaXIuZXhwO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXJnID0gZGlyLmFyZztcclxuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBwcm9jZXNzIGV4cCBpZiB0aGlzIGlzIHYtb246YXJnIC0gd2UgbmVlZCBzcGVjaWFsIGhhbmRsaW5nXHJcbiAgICAgICAgICAgICAgICAvLyBmb3Igd3JhcHBpbmcgaW5saW5lIHN0YXRlbWVudHMuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXhwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwLnR5cGUgPT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAhKGRpci5uYW1lID09PSAnb24nICYmIGFyZykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXIuZXhwID0gcHJvY2Vzc0V4cHJlc3Npb24oZXhwLCBjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgICAgICAvLyBzbG90IGFyZ3MgbXVzdCBiZSBwcm9jZXNzZWQgYXMgZnVuY3Rpb24gcGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgZGlyLm5hbWUgPT09ICdzbG90Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJnICYmIGFyZy50eXBlID09PSA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovICYmICFhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXIuYXJnID0gcHJvY2Vzc0V4cHJlc3Npb24oYXJnLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuLy8gSW1wb3J0YW50OiBzaW5jZSB0aGlzIGZ1bmN0aW9uIHVzZXMgTm9kZS5qcyBvbmx5IGRlcGVuZGVuY2llcywgaXQgc2hvdWxkXHJcbi8vIGFsd2F5cyBiZSB1c2VkIHdpdGggYSBsZWFkaW5nICF0cnVlIGNoZWNrIHNvIHRoYXQgaXQgY2FuIGJlXHJcbi8vIHRyZWUtc2hha2VuIGZyb20gdGhlIGJyb3dzZXIgYnVpbGQuXHJcbmZ1bmN0aW9uIHByb2Nlc3NFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQsIFxyXG4vLyBzb21lIGV4cHJlc3Npb25zIGxpa2Ugdi1zbG90IHByb3BzICYgdi1mb3IgYWxpYXNlcyBzaG91bGQgYmUgcGFyc2VkIGFzXHJcbi8vIGZ1bmN0aW9uIHBhcmFtc1xyXG5hc1BhcmFtcyA9IGZhbHNlLCBcclxuLy8gdi1vbiBoYW5kbGVyIHZhbHVlcyBtYXkgY29udGFpbiBtdWx0aXBsZSBzdGF0ZW1lbnRzXHJcbmFzUmF3U3RhdGVtZW50cyA9IGZhbHNlLCBsb2NhbFZhcnMgPSBPYmplY3QuY3JlYXRlKGNvbnRleHQuaWRlbnRpZmllcnMpKSB7XHJcbiAgICB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAvLyBzaW1wbGUgaW4tYnJvd3NlciB2YWxpZGF0aW9uIChzYW1lIGxvZ2ljIGluIDIueClcclxuICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihub2RlLCBjb250ZXh0LCBhc1BhcmFtcywgYXNSYXdTdGF0ZW1lbnRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgdHJhbnNmb3JtSWYgPSBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKC9eKGlmfGVsc2V8ZWxzZS1pZikkLywgKG5vZGUsIGRpciwgY29udGV4dCkgPT4ge1xyXG4gICAgcmV0dXJuIHByb2Nlc3NJZihub2RlLCBkaXIsIGNvbnRleHQsIChpZk5vZGUsIGJyYW5jaCwgaXNSb290KSA9PiB7XHJcbiAgICAgICAgLy8gIzE1ODc6IFdlIG5lZWQgdG8gZHluYW1pY2FsbHkgaW5jcmVtZW50IHRoZSBrZXkgYmFzZWQgb24gdGhlIGN1cnJlbnRcclxuICAgICAgICAvLyBub2RlJ3Mgc2libGluZyBub2Rlcywgc2luY2UgY2hhaW5lZCB2LWlmL2Vsc2UgYnJhbmNoZXMgYXJlXHJcbiAgICAgICAgLy8gcmVuZGVyZWQgYXQgdGhlIHNhbWUgZGVwdGhcclxuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IGNvbnRleHQucGFyZW50LmNoaWxkcmVuO1xyXG4gICAgICAgIGxldCBpID0gc2libGluZ3MuaW5kZXhPZihpZk5vZGUpO1xyXG4gICAgICAgIGxldCBrZXkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChpLS0gPj0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3NbaV07XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gOSAvKiBJRiAqLykge1xyXG4gICAgICAgICAgICAgICAga2V5ICs9IHNpYmxpbmcuYnJhbmNoZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEV4aXQgY2FsbGJhY2suIENvbXBsZXRlIHRoZSBjb2RlZ2VuTm9kZSB3aGVuIGFsbCBjaGlsZHJlbiBoYXZlIGJlZW5cclxuICAgICAgICAvLyB0cmFuc2Zvcm1lZC5cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNSb290KSB7XHJcbiAgICAgICAgICAgICAgICBpZk5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChicmFuY2gsIGtleSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhdHRhY2ggdGhpcyBicmFuY2gncyBjb2RlZ2VuIG5vZGUgdG8gdGhlIHYtaWYgcm9vdC5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudENvbmRpdGlvbiA9IGdldFBhcmVudENvbmRpdGlvbihpZk5vZGUuY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZGl0aW9uLmFsdGVybmF0ZSA9IGNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGJyYW5jaCwga2V5ICsgaWZOb2RlLmJyYW5jaGVzLmxlbmd0aCAtIDEsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG59KTtcclxuLy8gdGFyZ2V0LWFnbm9zdGljIHRyYW5zZm9ybSB1c2VkIGZvciBib3RoIENsaWVudCBhbmQgU1NSXHJcbmZ1bmN0aW9uIHByb2Nlc3NJZihub2RlLCBkaXIsIGNvbnRleHQsIHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICBpZiAoZGlyLm5hbWUgIT09ICdlbHNlJyAmJlxyXG4gICAgICAgICghZGlyLmV4cCB8fCAhZGlyLmV4cC5jb250ZW50LnRyaW0oKSkpIHtcclxuICAgICAgICBjb25zdCBsb2MgPSBkaXIuZXhwID8gZGlyLmV4cC5sb2MgOiBub2RlLmxvYztcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigyOCAvKiBYX1ZfSUZfTk9fRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIGRpci5leHAgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB0cnVlYCwgZmFsc2UsIGxvYyk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUgJiYgZGlyLmV4cCkge1xyXG4gICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24oZGlyLmV4cCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGlyLm5hbWUgPT09ICdpZicpIHtcclxuICAgICAgICBjb25zdCBicmFuY2ggPSBjcmVhdGVJZkJyYW5jaChub2RlLCBkaXIpO1xyXG4gICAgICAgIGNvbnN0IGlmTm9kZSA9IHtcclxuICAgICAgICAgICAgdHlwZTogOSAvKiBJRiAqLyxcclxuICAgICAgICAgICAgbG9jOiBub2RlLmxvYyxcclxuICAgICAgICAgICAgYnJhbmNoZXM6IFticmFuY2hdXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb250ZXh0LnJlcGxhY2VOb2RlKGlmTm9kZSk7XHJcbiAgICAgICAgaWYgKHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9jZXNzQ29kZWdlbihpZk5vZGUsIGJyYW5jaCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gbG9jYXRlIHRoZSBhZGphY2VudCB2LWlmXHJcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBjb21tZW50cyA9IFtdO1xyXG4gICAgICAgIGxldCBpID0gc2libGluZ3MuaW5kZXhPZihub2RlKTtcclxuICAgICAgICB3aGlsZSAoaS0tID49IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5nc1tpXTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gMyAvKiBDT01NRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZU5vZGUoc2libGluZyk7XHJcbiAgICAgICAgICAgICAgICBjb21tZW50cy51bnNoaWZ0KHNpYmxpbmcpO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNpYmxpbmcgJiZcclxuICAgICAgICAgICAgICAgIHNpYmxpbmcudHlwZSA9PT0gMiAvKiBURVhUICovICYmXHJcbiAgICAgICAgICAgICAgICAhc2libGluZy5jb250ZW50LnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZShzaWJsaW5nKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gOSAvKiBJRiAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdi1lbHNlIHdhcyBmb2xsb3dlZCBieSB2LWVsc2UtaWZcclxuICAgICAgICAgICAgICAgIGlmIChkaXIubmFtZSA9PT0gJ2Vsc2UtaWYnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgc2libGluZy5icmFuY2hlc1tzaWJsaW5nLmJyYW5jaGVzLmxlbmd0aCAtIDFdLmNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAgLyogWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi8sIG5vZGUubG9jKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBpZiBub2RlJ3MgYnJhbmNoZXNcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYnJhbmNoID0gY3JlYXRlSWZCcmFuY2gobm9kZSwgZGlyKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAgICAgICAvLyAjMzYxOSBpZ25vcmUgY29tbWVudHMgaWYgdGhlIHYtaWYgaXMgZGlyZWN0IGNoaWxkIG9mIDx0cmFuc2l0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICEoY29udGV4dC5wYXJlbnQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5wYXJlbnQudHlwZSA9PT0gMSAvKiBFTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQnVpbHRJblR5cGUoY29udGV4dC5wYXJlbnQudGFnLCAndHJhbnNpdGlvbicpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyYW5jaC5jaGlsZHJlbiA9IFsuLi5jb21tZW50cywgLi4uYnJhbmNoLmNoaWxkcmVuXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHVzZXIgaXMgZm9yY2luZyBzYW1lIGtleSBvbiBkaWZmZXJlbnQgYnJhbmNoZXNcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBicmFuY2gudXNlcktleTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmcuYnJhbmNoZXMuZm9yRWFjaCgoeyB1c2VyS2V5IH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NhbWVLZXkodXNlcktleSwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDI5IC8qIFhfVl9JRl9TQU1FX0tFWSAqLywgYnJhbmNoLnVzZXJLZXkubG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNpYmxpbmcuYnJhbmNoZXMucHVzaChicmFuY2gpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb25FeGl0ID0gcHJvY2Vzc0NvZGVnZW4gJiYgcHJvY2Vzc0NvZGVnZW4oc2libGluZywgYnJhbmNoLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgYnJhbmNoIHdhcyByZW1vdmVkLCBpdCB3aWxsIG5vdCBiZSB0cmF2ZXJzZWQuXHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gdHJhdmVyc2UgaGVyZS5cclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlTm9kZShicmFuY2gsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgLy8gY2FsbCBvbiBleGl0XHJcbiAgICAgICAgICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICAgICAgICAgIG9uRXhpdCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRvIHJlc2V0IGN1cnJlbnROb2RlIGFmdGVyIHRyYXZlcnNhbCB0byBpbmRpY2F0ZSB0aGlzXHJcbiAgICAgICAgICAgICAgICAvLyBub2RlIGhhcyBiZWVuIHJlbW92ZWQuXHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJlbnROb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwIC8qIFhfVl9FTFNFX05PX0FESkFDRU5UX0lGICovLCBub2RlLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJZkJyYW5jaChub2RlLCBkaXIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTAgLyogSUZfQlJBTkNIICovLFxyXG4gICAgICAgIGxvYzogbm9kZS5sb2MsXHJcbiAgICAgICAgY29uZGl0aW9uOiBkaXIubmFtZSA9PT0gJ2Vsc2UnID8gdW5kZWZpbmVkIDogZGlyLmV4cCxcclxuICAgICAgICBjaGlsZHJlbjogbm9kZS50YWdUeXBlID09PSAzIC8qIFRFTVBMQVRFICovICYmICFmaW5kRGlyKG5vZGUsICdmb3InKVxyXG4gICAgICAgICAgICA/IG5vZGUuY2hpbGRyZW5cclxuICAgICAgICAgICAgOiBbbm9kZV0sXHJcbiAgICAgICAgdXNlcktleTogZmluZFByb3Aobm9kZSwgYGtleWApXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpIHtcclxuICAgIGlmIChicmFuY2guY29uZGl0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihicmFuY2guY29uZGl0aW9uLCBjcmVhdGVDaGlsZHJlbkNvZGVnZW5Ob2RlKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpLCBcclxuICAgICAgICAvLyBtYWtlIHN1cmUgdG8gcGFzcyBpbiBhc0Jsb2NrOiB0cnVlIHNvIHRoYXQgdGhlIGNvbW1lbnQgbm9kZSBjYWxsXHJcbiAgICAgICAgLy8gY2xvc2VzIHRoZSBjdXJyZW50IGJsb2NrLlxyXG4gICAgICAgIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKENSRUFURV9DT01NRU5UKSwgW1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnXCJ2LWlmXCInIDogJ1wiXCInLFxyXG4gICAgICAgICAgICAndHJ1ZSdcclxuICAgICAgICBdKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlQ2hpbGRyZW5Db2RlZ2VuTm9kZShicmFuY2gsIGtleUluZGV4LCBjb250ZXh0KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDaGlsZHJlbkNvZGVnZW5Ob2RlKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgaGVscGVyIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3Qga2V5UHJvcGVydHkgPSBjcmVhdGVPYmplY3RQcm9wZXJ0eShga2V5YCwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgJHtrZXlJbmRleH1gLCBmYWxzZSwgbG9jU3R1YiwgMiAvKiBDQU5fSE9JU1QgKi8pKTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGJyYW5jaDtcclxuICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgIGNvbnN0IG5lZWRGcmFnbWVudFdyYXBwZXIgPSBjaGlsZHJlbi5sZW5ndGggIT09IDEgfHwgZmlyc3RDaGlsZC50eXBlICE9PSAxIC8qIEVMRU1FTlQgKi87XHJcbiAgICBpZiAobmVlZEZyYWdtZW50V3JhcHBlcikge1xyXG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgZmlyc3RDaGlsZC50eXBlID09PSAxMSAvKiBGT1IgKi8pIHtcclxuICAgICAgICAgICAgLy8gb3B0aW1pemUgYXdheSBuZXN0ZWQgZnJhZ21lbnRzIHdoZW4gY2hpbGQgaXMgYSBGb3JOb2RlXHJcbiAgICAgICAgICAgIGNvbnN0IHZub2RlQ2FsbCA9IGZpcnN0Q2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgIGluamVjdFByb3Aodm5vZGVDYWxsLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiB2bm9kZUNhbGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgcGF0Y2hGbGFnID0gNjQgLyogU1RBQkxFX0ZSQUdNRU5UICovO1xyXG4gICAgICAgICAgICBsZXQgcGF0Y2hGbGFnVGV4dCA9IFBhdGNoRmxhZ05hbWVzWzY0IC8qIFNUQUJMRV9GUkFHTUVOVCAqL107XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBmcmFnbWVudCBhY3R1YWxseSBjb250YWlucyBhIHNpbmdsZSB2YWxpZCBjaGlsZCB3aXRoXHJcbiAgICAgICAgICAgIC8vIHRoZSByZXN0IGJlaW5nIGNvbW1lbnRzXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSAhPT0gMyAvKiBDT01NRU5UICovKS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAyMDQ4IC8qIERFVl9ST09UX0ZSQUdNRU5UICovO1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnVGV4dCArPSBgLCAke1BhdGNoRmxhZ05hbWVzWzIwNDggLyogREVWX1JPT1RfRlJBR01FTlQgKi9dfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCBoZWxwZXIoRlJBR01FTlQpLCBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtrZXlQcm9wZXJ0eV0pLCBjaGlsZHJlbiwgcGF0Y2hGbGFnICsgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtwYXRjaEZsYWdUZXh0fSAqL2AgOiBgYCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlLCBmYWxzZSwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8sIGJyYW5jaC5sb2MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGZpcnN0Q2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgY29uc3Qgdm5vZGVDYWxsID0gZ2V0TWVtb2VkVk5vZGVDYWxsKHJldCk7XHJcbiAgICAgICAgLy8gQ2hhbmdlIGNyZWF0ZVZOb2RlIHRvIGNyZWF0ZUJsb2NrLlxyXG4gICAgICAgIGlmICh2bm9kZUNhbGwudHlwZSA9PT0gMTMgLyogVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgICAgICBtYWtlQmxvY2sodm5vZGVDYWxsLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW5qZWN0IGJyYW5jaCBrZXlcclxuICAgICAgICBpbmplY3RQcm9wKHZub2RlQ2FsbCwga2V5UHJvcGVydHksIGNvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTYW1lS2V5KGEsIGIpIHtcclxuICAgIGlmICghYSB8fCBhLnR5cGUgIT09IGIudHlwZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChhLnR5cGUgPT09IDYgLyogQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgaWYgKGEudmFsdWUuY29udGVudCAhPT0gYi52YWx1ZS5jb250ZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBkaXJlY3RpdmVcclxuICAgICAgICBjb25zdCBleHAgPSBhLmV4cDtcclxuICAgICAgICBjb25zdCBicmFuY2hFeHAgPSBiLmV4cDtcclxuICAgICAgICBpZiAoZXhwLnR5cGUgIT09IGJyYW5jaEV4cC50eXBlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4cC50eXBlICE9PSA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgIGV4cC5pc1N0YXRpYyAhPT0gYnJhbmNoRXhwLmlzU3RhdGljIHx8XHJcbiAgICAgICAgICAgIGV4cC5jb250ZW50ICE9PSBicmFuY2hFeHAuY29udGVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuZnVuY3Rpb24gZ2V0UGFyZW50Q29uZGl0aW9uKG5vZGUpIHtcclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gMTkgLyogSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBpZiAobm9kZS5hbHRlcm5hdGUudHlwZSA9PT0gMTkgLyogSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAyMCAvKiBKU19DQUNIRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5jb25zdCB0cmFuc2Zvcm1Gb3IgPSBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKCdmb3InLCAobm9kZSwgZGlyLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGhlbHBlciwgcmVtb3ZlSGVscGVyIH0gPSBjb250ZXh0O1xyXG4gICAgcmV0dXJuIHByb2Nlc3NGb3Iobm9kZSwgZGlyLCBjb250ZXh0LCBmb3JOb2RlID0+IHtcclxuICAgICAgICAvLyBjcmVhdGUgdGhlIGxvb3AgcmVuZGVyIGZ1bmN0aW9uIGV4cHJlc3Npb24gbm93LCBhbmQgYWRkIHRoZVxyXG4gICAgICAgIC8vIGl0ZXJhdG9yIG9uIGV4aXQgYWZ0ZXIgYWxsIGNoaWxkcmVuIGhhdmUgYmVlbiB0cmF2ZXJzZWRcclxuICAgICAgICBjb25zdCByZW5kZXJFeHAgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihoZWxwZXIoUkVOREVSX0xJU1QpLCBbXHJcbiAgICAgICAgICAgIGZvck5vZGUuc291cmNlXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgY29uc3QgaXNUZW1wbGF0ZSA9IGlzVGVtcGxhdGVOb2RlKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IG1lbW8gPSBmaW5kRGlyKG5vZGUsICdtZW1vJyk7XHJcbiAgICAgICAgY29uc3Qga2V5UHJvcCA9IGZpbmRQcm9wKG5vZGUsIGBrZXlgKTtcclxuICAgICAgICBjb25zdCBrZXlFeHAgPSBrZXlQcm9wICYmXHJcbiAgICAgICAgICAgIChrZXlQcm9wLnR5cGUgPT09IDYgLyogQVRUUklCVVRFICovXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oa2V5UHJvcC52YWx1ZS5jb250ZW50LCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgOiBrZXlQcm9wLmV4cCk7XHJcbiAgICAgICAgY29uc3Qga2V5UHJvcGVydHkgPSBrZXlQcm9wID8gY3JlYXRlT2JqZWN0UHJvcGVydHkoYGtleWAsIGtleUV4cCkgOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IGlzU3RhYmxlRnJhZ21lbnQgPSBmb3JOb2RlLnNvdXJjZS50eXBlID09PSA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgICAgIGZvck5vZGUuc291cmNlLmNvbnN0VHlwZSA+IDAgLyogTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgIGNvbnN0IGZyYWdtZW50RmxhZyA9IGlzU3RhYmxlRnJhZ21lbnRcclxuICAgICAgICAgICAgPyA2NCAvKiBTVEFCTEVfRlJBR01FTlQgKi9cclxuICAgICAgICAgICAgOiBrZXlQcm9wXHJcbiAgICAgICAgICAgICAgICA/IDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqL1xyXG4gICAgICAgICAgICAgICAgOiAyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqLztcclxuICAgICAgICBmb3JOb2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIGhlbHBlcihGUkFHTUVOVCksIHVuZGVmaW5lZCwgcmVuZGVyRXhwLCBmcmFnbWVudEZsYWcgK1xyXG4gICAgICAgICAgICAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke1BhdGNoRmxhZ05hbWVzW2ZyYWdtZW50RmxhZ119ICovYCA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUgLyogaXNCbG9jayAqLywgIWlzU3RhYmxlRnJhZ21lbnQgLyogZGlzYWJsZVRyYWNraW5nICovLCBmYWxzZSAvKiBpc0NvbXBvbmVudCAqLywgbm9kZS5sb2MpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGZpbmlzaCB0aGUgY29kZWdlbiBub3cgdGhhdCBhbGwgY2hpbGRyZW4gaGF2ZSBiZWVuIHRyYXZlcnNlZFxyXG4gICAgICAgICAgICBsZXQgY2hpbGRCbG9jaztcclxuICAgICAgICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gZm9yTm9kZTtcclxuICAgICAgICAgICAgLy8gY2hlY2sgPHRlbXBsYXRlIHYtZm9yPiBrZXkgcGxhY2VtZW50XHJcbiAgICAgICAgICAgIGlmICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8ICF0cnVlKSAmJiBpc1RlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMudHlwZSA9PT0gMSAvKiBFTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGZpbmRQcm9wKGMsICdrZXknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzMgLyogWF9WX0ZPUl9URU1QTEFURV9LRVlfUExBQ0VNRU5UICovLCBrZXkubG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG5lZWRGcmFnbWVudFdyYXBwZXIgPSBjaGlsZHJlbi5sZW5ndGggIT09IDEgfHwgY2hpbGRyZW5bMF0udHlwZSAhPT0gMSAvKiBFTEVNRU5UICovO1xyXG4gICAgICAgICAgICBjb25zdCBzbG90T3V0bGV0ID0gaXNTbG90T3V0bGV0KG5vZGUpXHJcbiAgICAgICAgICAgICAgICA/IG5vZGVcclxuICAgICAgICAgICAgICAgIDogaXNUZW1wbGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaXNTbG90T3V0bGV0KG5vZGUuY2hpbGRyZW5bMF0pXHJcbiAgICAgICAgICAgICAgICAgICAgPyBub2RlLmNoaWxkcmVuWzBdIC8vIGFwaS1leHRyYWN0b3Igc29tZWhvdyBmYWlscyB0byBpbmZlciB0aGlzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAoc2xvdE91dGxldCkge1xyXG4gICAgICAgICAgICAgICAgLy8gPHNsb3Qgdi1mb3I9XCIuLi5cIj4gb3IgPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCI+PHNsb3QvPjwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrID0gc2xvdE91dGxldC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RlbXBsYXRlICYmIGtleVByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCIgOmtleT1cIi4uLlwiPjxzbG90Lz48L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gaW5qZWN0IHRoZSBrZXkgdG8gdGhlIHJlbmRlclNsb3QoKSBjYWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9wcyBmb3IgcmVuZGVyU2xvdCBpcyBwYXNzZWQgYXMgdGhlIDNyZCBhcmd1bWVudC5cclxuICAgICAgICAgICAgICAgICAgICBpbmplY3RQcm9wKGNoaWxkQmxvY2ssIGtleVByb3BlcnR5LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuZWVkRnJhZ21lbnRXcmFwcGVyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIj4gd2l0aCB0ZXh0IG9yIG11bHRpLWVsZW1lbnRzXHJcbiAgICAgICAgICAgICAgICAvLyBzaG91bGQgZ2VuZXJhdGUgYSBmcmFnbWVudCBibG9jayBmb3IgZWFjaCBsb29wXHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrID0gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIGhlbHBlcihGUkFHTUVOVCksIGtleVByb3BlcnR5ID8gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihba2V5UHJvcGVydHldKSA6IHVuZGVmaW5lZCwgbm9kZS5jaGlsZHJlbiwgNjQgLyogU1RBQkxFX0ZSQUdNRU5UICovICtcclxuICAgICAgICAgICAgICAgICAgICAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCAvKiAke1BhdGNoRmxhZ05hbWVzWzY0IC8qIFNUQUJMRV9GUkFHTUVOVCAqL119ICovYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUsIHVuZGVmaW5lZCwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gTm9ybWFsIGVsZW1lbnQgdi1mb3IuIERpcmVjdGx5IHVzZSB0aGUgY2hpbGQncyBjb2RlZ2VuTm9kZVxyXG4gICAgICAgICAgICAgICAgLy8gYnV0IG1hcmsgaXQgYXMgYSBibG9jay5cclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2sgPSBjaGlsZHJlblswXVxyXG4gICAgICAgICAgICAgICAgICAgIC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RlbXBsYXRlICYmIGtleVByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5qZWN0UHJvcChjaGlsZEJsb2NrLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRCbG9jay5pc0Jsb2NrICE9PSAhaXNTdGFibGVGcmFnbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZEJsb2NrLmlzQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIGZyb20gYmxvY2sgdG8gdm5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVIZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2ggZnJvbSB2bm9kZSB0byBibG9ja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVIZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2suaXNCbG9jayA9ICFpc1N0YWJsZUZyYWdtZW50O1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkQmxvY2suaXNCbG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgICAgICAgICBoZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChtZW1vKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb29wID0gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGNyZWF0ZUZvckxvb3BQYXJhbXMoZm9yTm9kZS5wYXJzZVJlc3VsdCwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9jYWNoZWRgKVxyXG4gICAgICAgICAgICAgICAgXSkpO1xyXG4gICAgICAgICAgICAgICAgbG9vcC5ib2R5ID0gY3JlYXRlQmxvY2tTdGF0ZW1lbnQoW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYGNvbnN0IF9tZW1vID0gKGAsIG1lbW8uZXhwLCBgKWBdKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaWYgKF9jYWNoZWRgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oa2V5RXhwID8gW2AgJiYgX2NhY2hlZC5rZXkgPT09IGAsIGtleUV4cF0gOiBbXSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAgJiYgJHtjb250ZXh0LmhlbHBlclN0cmluZyhJU19NRU1PX1NBTUUpfShfY2FjaGVkLCBfbWVtbykpIHJldHVybiBfY2FjaGVkYFxyXG4gICAgICAgICAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYGNvbnN0IF9pdGVtID0gYCwgY2hpbGRCbG9ja10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9pdGVtLm1lbW8gPSBfbWVtb2ApLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHJldHVybiBfaXRlbWApXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgICAgIHJlbmRlckV4cC5hcmd1bWVudHMucHVzaChsb29wLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfY2FjaGVgKSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihTdHJpbmcoY29udGV4dC5jYWNoZWQrKykpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlbmRlckV4cC5hcmd1bWVudHMucHVzaChjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oY3JlYXRlRm9yTG9vcFBhcmFtcyhmb3JOb2RlLnBhcnNlUmVzdWx0KSwgY2hpbGRCbG9jaywgdHJ1ZSAvKiBmb3JjZSBuZXdsaW5lICovKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbn0pO1xyXG4vLyB0YXJnZXQtYWdub3N0aWMgdHJhbnNmb3JtIHVzZWQgZm9yIGJvdGggQ2xpZW50IGFuZCBTU1JcclxuZnVuY3Rpb24gcHJvY2Vzc0Zvcihub2RlLCBkaXIsIGNvbnRleHQsIHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICBpZiAoIWRpci5leHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMSAvKiBYX1ZfRk9SX05PX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHBhcnNlRm9yRXhwcmVzc2lvbihcclxuICAgIC8vIGNhbiBvbmx5IGJlIHNpbXBsZSBleHByZXNzaW9uIGJlY2F1c2UgdkZvciB0cmFuc2Zvcm0gaXMgYXBwbGllZFxyXG4gICAgLy8gYmVmb3JlIGV4cHJlc3Npb24gdHJhbnNmb3JtLlxyXG4gICAgZGlyLmV4cCwgY29udGV4dCk7XHJcbiAgICBpZiAoIXBhcnNlUmVzdWx0KSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzIgLyogWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgYWRkSWRlbnRpZmllcnMsIHJlbW92ZUlkZW50aWZpZXJzLCBzY29wZXMgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHNvdXJjZSwgdmFsdWUsIGtleSwgaW5kZXggfSA9IHBhcnNlUmVzdWx0O1xyXG4gICAgY29uc3QgZm9yTm9kZSA9IHtcclxuICAgICAgICB0eXBlOiAxMSAvKiBGT1IgKi8sXHJcbiAgICAgICAgbG9jOiBkaXIubG9jLFxyXG4gICAgICAgIHNvdXJjZSxcclxuICAgICAgICB2YWx1ZUFsaWFzOiB2YWx1ZSxcclxuICAgICAgICBrZXlBbGlhczoga2V5LFxyXG4gICAgICAgIG9iamVjdEluZGV4QWxpYXM6IGluZGV4LFxyXG4gICAgICAgIHBhcnNlUmVzdWx0LFxyXG4gICAgICAgIGNoaWxkcmVuOiBpc1RlbXBsYXRlTm9kZShub2RlKSA/IG5vZGUuY2hpbGRyZW4gOiBbbm9kZV1cclxuICAgIH07XHJcbiAgICBjb250ZXh0LnJlcGxhY2VOb2RlKGZvck5vZGUpO1xyXG4gICAgLy8gYm9va2tlZXBpbmdcclxuICAgIHNjb3Blcy52Rm9yKys7XHJcbiAgICBjb25zdCBvbkV4aXQgPSBwcm9jZXNzQ29kZWdlbiAmJiBwcm9jZXNzQ29kZWdlbihmb3JOb2RlKTtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgc2NvcGVzLnZGb3ItLTtcclxuICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICBvbkV4aXQoKTtcclxuICAgIH07XHJcbn1cclxuY29uc3QgZm9yQWxpYXNSRSA9IC8oW1xcc1xcU10qPylcXHMrKD86aW58b2YpXFxzKyhbXFxzXFxTXSopLztcclxuLy8gVGhpcyByZWdleCBkb2Vzbid0IGNvdmVyIHRoZSBjYXNlIGlmIGtleSBvciBpbmRleCBhbGlhc2VzIGhhdmUgZGVzdHJ1Y3R1cmluZyxcclxuLy8gYnV0IHRob3NlIGRvIG5vdCBtYWtlIHNlbnNlIGluIHRoZSBmaXJzdCBwbGFjZSwgc28gdGhpcyB3b3JrcyBpbiBwcmFjdGljZS5cclxuY29uc3QgZm9ySXRlcmF0b3JSRSA9IC8sKFteLFxcfVxcXV0qKSg/OiwoW14sXFx9XFxdXSopKT8kLztcclxuY29uc3Qgc3RyaXBQYXJlbnNSRSA9IC9eXFwofFxcKSQvZztcclxuZnVuY3Rpb24gcGFyc2VGb3JFeHByZXNzaW9uKGlucHV0LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBsb2MgPSBpbnB1dC5sb2M7XHJcbiAgICBjb25zdCBleHAgPSBpbnB1dC5jb250ZW50O1xyXG4gICAgY29uc3QgaW5NYXRjaCA9IGV4cC5tYXRjaChmb3JBbGlhc1JFKTtcclxuICAgIGlmICghaW5NYXRjaClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBjb25zdCBbLCBMSFMsIFJIU10gPSBpbk1hdGNoO1xyXG4gICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgIHNvdXJjZTogY3JlYXRlQWxpYXNFeHByZXNzaW9uKGxvYywgUkhTLnRyaW0oKSwgZXhwLmluZGV4T2YoUkhTLCBMSFMubGVuZ3RoKSksXHJcbiAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcclxuICAgICAgICBrZXk6IHVuZGVmaW5lZCxcclxuICAgICAgICBpbmRleDogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihyZXN1bHQuc291cmNlLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGxldCB2YWx1ZUNvbnRlbnQgPSBMSFMudHJpbSgpLnJlcGxhY2Uoc3RyaXBQYXJlbnNSRSwgJycpLnRyaW0oKTtcclxuICAgIGNvbnN0IHRyaW1tZWRPZmZzZXQgPSBMSFMuaW5kZXhPZih2YWx1ZUNvbnRlbnQpO1xyXG4gICAgY29uc3QgaXRlcmF0b3JNYXRjaCA9IHZhbHVlQ29udGVudC5tYXRjaChmb3JJdGVyYXRvclJFKTtcclxuICAgIGlmIChpdGVyYXRvck1hdGNoKSB7XHJcbiAgICAgICAgdmFsdWVDb250ZW50ID0gdmFsdWVDb250ZW50LnJlcGxhY2UoZm9ySXRlcmF0b3JSRSwgJycpLnRyaW0oKTtcclxuICAgICAgICBjb25zdCBrZXlDb250ZW50ID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XHJcbiAgICAgICAgbGV0IGtleU9mZnNldDtcclxuICAgICAgICBpZiAoa2V5Q29udGVudCkge1xyXG4gICAgICAgICAgICBrZXlPZmZzZXQgPSBleHAuaW5kZXhPZihrZXlDb250ZW50LCB0cmltbWVkT2Zmc2V0ICsgdmFsdWVDb250ZW50Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5rZXkgPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCBrZXlDb250ZW50LCBrZXlPZmZzZXQpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LmtleSwgY29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZXJhdG9yTWF0Y2hbMl0pIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhDb250ZW50ID0gaXRlcmF0b3JNYXRjaFsyXS50cmltKCk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleENvbnRlbnQpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmRleCA9IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihsb2MsIGluZGV4Q29udGVudCwgZXhwLmluZGV4T2YoaW5kZXhDb250ZW50LCByZXN1bHQua2V5XHJcbiAgICAgICAgICAgICAgICAgICAgPyBrZXlPZmZzZXQgKyBrZXlDb250ZW50Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgIDogdHJpbW1lZE9mZnNldCArIHZhbHVlQ29udGVudC5sZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LmluZGV4LCBjb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh2YWx1ZUNvbnRlbnQpIHtcclxuICAgICAgICByZXN1bHQudmFsdWUgPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCB2YWx1ZUNvbnRlbnQsIHRyaW1tZWRPZmZzZXQpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKHJlc3VsdC52YWx1ZSwgY29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBbGlhc0V4cHJlc3Npb24ocmFuZ2UsIGNvbnRlbnQsIG9mZnNldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oY29udGVudCwgZmFsc2UsIGdldElubmVyUmFuZ2UocmFuZ2UsIG9mZnNldCwgY29udGVudC5sZW5ndGgpKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVGb3JMb29wUGFyYW1zKHsgdmFsdWUsIGtleSwgaW5kZXggfSwgbWVtb0FyZ3MgPSBbXSkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVBhcmFtc0xpc3QoW3ZhbHVlLCBrZXksIGluZGV4LCAuLi5tZW1vQXJnc10pO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVBhcmFtc0xpc3QoYXJncykge1xyXG4gICAgbGV0IGkgPSBhcmdzLmxlbmd0aDtcclxuICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICBpZiAoYXJnc1tpXSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJnc1xyXG4gICAgICAgIC5zbGljZSgwLCBpICsgMSlcclxuICAgICAgICAubWFwKChhcmcsIGkpID0+IGFyZyB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfYC5yZXBlYXQoaSArIDEpLCBmYWxzZSkpO1xyXG59XG5cbmNvbnN0IGRlZmF1bHRGYWxsYmFjayA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHVuZGVmaW5lZGAsIGZhbHNlKTtcclxuLy8gQSBOb2RlVHJhbnNmb3JtIHRoYXQ6XHJcbi8vIDEuIFRyYWNrcyBzY29wZSBpZGVudGlmaWVycyBmb3Igc2NvcGVkIHNsb3RzIHNvIHRoYXQgdGhleSBkb24ndCBnZXQgcHJlZml4ZWRcclxuLy8gICAgYnkgdHJhbnNmb3JtRXhwcmVzc2lvbi4gVGhpcyBpcyBvbmx5IGFwcGxpZWQgaW4gbm9uLWJyb3dzZXIgYnVpbGRzIHdpdGhcclxuLy8gICAgeyBwcmVmaXhJZGVudGlmaWVyczogdHJ1ZSB9LlxyXG4vLyAyLiBUcmFjayB2LXNsb3QgZGVwdGhzIHNvIHRoYXQgd2Uga25vdyBhIHNsb3QgaXMgaW5zaWRlIGFub3RoZXIgc2xvdC5cclxuLy8gICAgTm90ZSB0aGUgZXhpdCBjYWxsYmFjayBpcyBleGVjdXRlZCBiZWZvcmUgYnVpbGRTbG90cygpIG9uIHRoZSBzYW1lIG5vZGUsXHJcbi8vICAgIHNvIG9ubHkgbmVzdGVkIHNsb3RzIHNlZSBwb3NpdGl2ZSBudW1iZXJzLlxyXG5jb25zdCB0cmFja1Nsb3RTY29wZXMgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBFTEVNRU5UICovICYmXHJcbiAgICAgICAgKG5vZGUudGFnVHlwZSA9PT0gMSAvKiBDT01QT05FTlQgKi8gfHxcclxuICAgICAgICAgICAgbm9kZS50YWdUeXBlID09PSAzIC8qIFRFTVBMQVRFICovKSkge1xyXG4gICAgICAgIC8vIFdlIGFyZSBvbmx5IGNoZWNraW5nIG5vbi1lbXB0eSB2LXNsb3QgaGVyZVxyXG4gICAgICAgIC8vIHNpbmNlIHdlIG9ubHkgY2FyZSBhYm91dCBzbG90cyB0aGF0IGludHJvZHVjZSBzY29wZSB2YXJpYWJsZXMuXHJcbiAgICAgICAgY29uc3QgdlNsb3QgPSBmaW5kRGlyKG5vZGUsICdzbG90Jyk7XHJcbiAgICAgICAgaWYgKHZTbG90KSB7XHJcbiAgICAgICAgICAgIHZTbG90LmV4cDtcclxuICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QrKztcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90LS07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG4vLyBBIE5vZGVUcmFuc2Zvcm0gdGhhdCB0cmFja3Mgc2NvcGUgaWRlbnRpZmllcnMgZm9yIHNjb3BlZCBzbG90cyB3aXRoIHYtZm9yLlxyXG4vLyBUaGlzIHRyYW5zZm9ybSBpcyBvbmx5IGFwcGxpZWQgaW4gbm9uLWJyb3dzZXIgYnVpbGRzIHdpdGggeyBwcmVmaXhJZGVudGlmaWVyczogdHJ1ZSB9XHJcbmNvbnN0IHRyYWNrVkZvclNsb3RTY29wZXMgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgbGV0IHZGb3I7XHJcbiAgICBpZiAoaXNUZW1wbGF0ZU5vZGUobm9kZSkgJiZcclxuICAgICAgICBub2RlLnByb3BzLnNvbWUoaXNWU2xvdCkgJiZcclxuICAgICAgICAodkZvciA9IGZpbmREaXIobm9kZSwgJ2ZvcicpKSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICh2Rm9yLnBhcnNlUmVzdWx0ID0gcGFyc2VGb3JFeHByZXNzaW9uKHZGb3IuZXhwLCBjb250ZXh0KSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBrZXksIGluZGV4IH0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgYWRkSWRlbnRpZmllcnMsIHJlbW92ZUlkZW50aWZpZXJzIH0gPSBjb250ZXh0O1xyXG4gICAgICAgICAgICB2YWx1ZSAmJiBhZGRJZGVudGlmaWVycyh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGtleSAmJiBhZGRJZGVudGlmaWVycyhrZXkpO1xyXG4gICAgICAgICAgICBpbmRleCAmJiBhZGRJZGVudGlmaWVycyhpbmRleCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSAmJiByZW1vdmVJZGVudGlmaWVycyh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBrZXkgJiYgcmVtb3ZlSWRlbnRpZmllcnMoa2V5KTtcclxuICAgICAgICAgICAgICAgIGluZGV4ICYmIHJlbW92ZUlkZW50aWZpZXJzKGluZGV4KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGJ1aWxkQ2xpZW50U2xvdEZuID0gKHByb3BzLCBjaGlsZHJlbiwgbG9jKSA9PiBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24ocHJvcHMsIGNoaWxkcmVuLCBmYWxzZSAvKiBuZXdsaW5lICovLCB0cnVlIC8qIGlzU2xvdCAqLywgY2hpbGRyZW4ubGVuZ3RoID8gY2hpbGRyZW5bMF0ubG9jIDogbG9jKTtcclxuLy8gSW5zdGVhZCBvZiBiZWluZyBhIERpcmVjdGl2ZVRyYW5zZm9ybSwgdi1zbG90IHByb2Nlc3NpbmcgaXMgY2FsbGVkIGR1cmluZ1xyXG4vLyB0cmFuc2Zvcm1FbGVtZW50IHRvIGJ1aWxkIHRoZSBzbG90cyBvYmplY3QgZm9yIGEgY29tcG9uZW50LlxyXG5mdW5jdGlvbiBidWlsZFNsb3RzKG5vZGUsIGNvbnRleHQsIGJ1aWxkU2xvdEZuID0gYnVpbGRDbGllbnRTbG90Rm4pIHtcclxuICAgIGNvbnRleHQuaGVscGVyKFdJVEhfQ1RYKTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGxvYyB9ID0gbm9kZTtcclxuICAgIGNvbnN0IHNsb3RzUHJvcGVydGllcyA9IFtdO1xyXG4gICAgY29uc3QgZHluYW1pY1Nsb3RzID0gW107XHJcbiAgICAvLyBJZiB0aGUgc2xvdCBpcyBpbnNpZGUgYSB2LWZvciBvciBhbm90aGVyIHYtc2xvdCwgZm9yY2UgaXQgdG8gYmUgZHluYW1pY1xyXG4gICAgLy8gc2luY2UgaXQgbGlrZWx5IHVzZXMgYSBzY29wZSB2YXJpYWJsZS5cclxuICAgIGxldCBoYXNEeW5hbWljU2xvdHMgPSBjb250ZXh0LnNjb3Blcy52U2xvdCA+IDAgfHwgY29udGV4dC5zY29wZXMudkZvciA+IDA7XHJcbiAgICAvLyAxLiBDaGVjayBmb3Igc2xvdCB3aXRoIHNsb3RQcm9wcyBvbiBjb21wb25lbnQgaXRzZWxmLlxyXG4gICAgLy8gICAgPENvbXAgdi1zbG90PVwieyBwcm9wIH1cIi8+XHJcbiAgICBjb25zdCBvbkNvbXBvbmVudFNsb3QgPSBmaW5kRGlyKG5vZGUsICdzbG90JywgdHJ1ZSk7XHJcbiAgICBpZiAob25Db21wb25lbnRTbG90KSB7XHJcbiAgICAgICAgY29uc3QgeyBhcmcsIGV4cCB9ID0gb25Db21wb25lbnRTbG90O1xyXG4gICAgICAgIGlmIChhcmcgJiYgIWlzU3RhdGljRXhwKGFyZykpIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ2RlZmF1bHQnLCB0cnVlKSwgYnVpbGRTbG90Rm4oZXhwLCBjaGlsZHJlbiwgbG9jKSkpO1xyXG4gICAgfVxyXG4gICAgLy8gMi4gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkcmVuIGFuZCBjaGVjayBmb3IgdGVtcGxhdGUgc2xvdHNcclxuICAgIC8vICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6Zm9vPVwieyBwcm9wIH1cIj5cclxuICAgIGxldCBoYXNUZW1wbGF0ZVNsb3RzID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzTmFtZWREZWZhdWx0U2xvdCA9IGZhbHNlO1xyXG4gICAgY29uc3QgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4gPSBbXTtcclxuICAgIGNvbnN0IHNlZW5TbG90TmFtZXMgPSBuZXcgU2V0KCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBsZXQgc2xvdERpcjtcclxuICAgICAgICBpZiAoIWlzVGVtcGxhdGVOb2RlKHNsb3RFbGVtZW50KSB8fFxyXG4gICAgICAgICAgICAhKHNsb3REaXIgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCAnc2xvdCcsIHRydWUpKSkge1xyXG4gICAgICAgICAgICAvLyBub3QgYSA8dGVtcGxhdGUgdi1zbG90Piwgc2tpcC5cclxuICAgICAgICAgICAgaWYgKHNsb3RFbGVtZW50LnR5cGUgIT09IDMgLyogQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4ucHVzaChzbG90RWxlbWVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbkNvbXBvbmVudFNsb3QpIHtcclxuICAgICAgICAgICAgLy8gYWxyZWFkeSBoYXMgb24tY29tcG9uZW50IHNsb3QgLSB0aGlzIGlzIGluY29ycmVjdCB1c2FnZS5cclxuICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzcgLyogWF9WX1NMT1RfTUlYRURfU0xPVF9VU0FHRSAqLywgc2xvdERpci5sb2MpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhhc1RlbXBsYXRlU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IHNsb3RDaGlsZHJlbiwgbG9jOiBzbG90TG9jIH0gPSBzbG90RWxlbWVudDtcclxuICAgICAgICBjb25zdCB7IGFyZzogc2xvdE5hbWUgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBkZWZhdWx0YCwgdHJ1ZSksIGV4cDogc2xvdFByb3BzLCBsb2M6IGRpckxvYyB9ID0gc2xvdERpcjtcclxuICAgICAgICAvLyBjaGVjayBpZiBuYW1lIGlzIGR5bmFtaWMuXHJcbiAgICAgICAgbGV0IHN0YXRpY1Nsb3ROYW1lO1xyXG4gICAgICAgIGlmIChpc1N0YXRpY0V4cChzbG90TmFtZSkpIHtcclxuICAgICAgICAgICAgc3RhdGljU2xvdE5hbWUgPSBzbG90TmFtZSA/IHNsb3ROYW1lLmNvbnRlbnQgOiBgZGVmYXVsdGA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzbG90RnVuY3Rpb24gPSBidWlsZFNsb3RGbihzbG90UHJvcHMsIHNsb3RDaGlsZHJlbiwgc2xvdExvYyk7XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBzbG90IGlzIGNvbmRpdGlvbmFsICh2LWlmL3YtZm9yKVxyXG4gICAgICAgIGxldCB2SWY7XHJcbiAgICAgICAgbGV0IHZFbHNlO1xyXG4gICAgICAgIGxldCB2Rm9yO1xyXG4gICAgICAgIGlmICgodklmID0gZmluZERpcihzbG90RWxlbWVudCwgJ2lmJykpKSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XHJcbiAgICAgICAgICAgIGR5bmFtaWNTbG90cy5wdXNoKGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbih2SWYuZXhwLCBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24pLCBkZWZhdWx0RmFsbGJhY2spKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHZFbHNlID0gZmluZERpcihzbG90RWxlbWVudCwgL15lbHNlKC1pZik/JC8sIHRydWUgLyogYWxsb3dFbXB0eSAqLykpKSB7XHJcbiAgICAgICAgICAgIC8vIGZpbmQgYWRqYWNlbnQgdi1pZlxyXG4gICAgICAgICAgICBsZXQgaiA9IGk7XHJcbiAgICAgICAgICAgIGxldCBwcmV2O1xyXG4gICAgICAgICAgICB3aGlsZSAoai0tKSB7XHJcbiAgICAgICAgICAgICAgICBwcmV2ID0gY2hpbGRyZW5bal07XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldi50eXBlICE9PSAzIC8qIENPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJldiAmJiBpc1RlbXBsYXRlTm9kZShwcmV2KSAmJiBmaW5kRGlyKHByZXYsICdpZicpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgbm9kZVxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICAgICAgLy8gYXR0YWNoIHRoaXMgc2xvdCB0byBwcmV2aW91cyBjb25kaXRpb25hbFxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbmRpdGlvbmFsID0gZHluYW1pY1Nsb3RzW2R5bmFtaWNTbG90cy5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChjb25kaXRpb25hbC5hbHRlcm5hdGUudHlwZSA9PT0gMTkgLyogSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsID0gY29uZGl0aW9uYWwuYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uYWwuYWx0ZXJuYXRlID0gdkVsc2UuZXhwXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odkVsc2UuZXhwLCBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24pLCBkZWZhdWx0RmFsbGJhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgOiBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAgLyogWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi8sIHZFbHNlLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCh2Rm9yID0gZmluZERpcihzbG90RWxlbWVudCwgJ2ZvcicpKSkge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHZGb3IucGFyc2VSZXN1bHQgfHxcclxuICAgICAgICAgICAgICAgIHBhcnNlRm9yRXhwcmVzc2lvbih2Rm9yLmV4cCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChwYXJzZVJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBkeW5hbWljIHNsb3RzIGFzIGFuIGFycmF5IGFuZCBhZGQgaXQgdG8gdGhlIGNyZWF0ZVNsb3QoKVxyXG4gICAgICAgICAgICAgICAgLy8gYXJncy4gVGhlIHJ1bnRpbWUga25vd3MgaG93IHRvIGhhbmRsZSBpdCBhcHByb3ByaWF0ZWx5LlxyXG4gICAgICAgICAgICAgICAgZHluYW1pY1Nsb3RzLnB1c2goY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVOREVSX0xJU1QpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VSZXN1bHQuc291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKHBhcnNlUmVzdWx0KSwgYnVpbGREeW5hbWljU2xvdChzbG90TmFtZSwgc2xvdEZ1bmN0aW9uKSwgdHJ1ZSAvKiBmb3JjZSBuZXdsaW5lICovKVxyXG4gICAgICAgICAgICAgICAgXSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzIgLyogWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiAqLywgdkZvci5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gY2hlY2sgZHVwbGljYXRlIHN0YXRpYyBuYW1lc1xyXG4gICAgICAgICAgICBpZiAoc3RhdGljU2xvdE5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZWVuU2xvdE5hbWVzLmhhcyhzdGF0aWNTbG90TmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzOCAvKiBYX1ZfU0xPVF9EVVBMSUNBVEVfU0xPVF9OQU1FUyAqLywgZGlyTG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzZWVuU2xvdE5hbWVzLmFkZChzdGF0aWNTbG90TmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGljU2xvdE5hbWUgPT09ICdkZWZhdWx0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc05hbWVkRGVmYXVsdFNsb3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNsb3RzUHJvcGVydGllcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIW9uQ29tcG9uZW50U2xvdCkge1xyXG4gICAgICAgIGNvbnN0IGJ1aWxkRGVmYXVsdFNsb3RQcm9wZXJ0eSA9IChwcm9wcywgY2hpbGRyZW4pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZm4gPSBidWlsZFNsb3RGbihwcm9wcywgY2hpbGRyZW4sIGxvYyk7XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LmNvbXBhdENvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgZm4uaXNOb25TY29wZWRTbG90ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlT2JqZWN0UHJvcGVydHkoYGRlZmF1bHRgLCBmbik7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoIWhhc1RlbXBsYXRlU2xvdHMpIHtcclxuICAgICAgICAgICAgLy8gaW1wbGljaXQgZGVmYXVsdCBzbG90IChvbiBjb21wb25lbnQpXHJcbiAgICAgICAgICAgIHNsb3RzUHJvcGVydGllcy5wdXNoKGJ1aWxkRGVmYXVsdFNsb3RQcm9wZXJ0eSh1bmRlZmluZWQsIGNoaWxkcmVuKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAvLyAjMzc2NlxyXG4gICAgICAgICAgICAvLyB3aXRoIHdoaXRlc3BhY2U6ICdwcmVzZXJ2ZScsIHdoaXRlc3BhY2VzIGJldHdlZW4gc2xvdHMgd2lsbCBlbmQgdXAgaW5cclxuICAgICAgICAgICAgLy8gaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4uIElnbm9yZSBpZiBhbGwgaW1wbGljaXQgY2hpbGRyZW4gYXJlIHdoaXRlc3BhY2VzLlxyXG4gICAgICAgICAgICBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbi5zb21lKG5vZGUgPT4gaXNOb25XaGl0ZXNwYWNlQ29udGVudChub2RlKSkpIHtcclxuICAgICAgICAgICAgLy8gaW1wbGljaXQgZGVmYXVsdCBzbG90IChtaXhlZCB3aXRoIG5hbWVkIHNsb3RzKVxyXG4gICAgICAgICAgICBpZiAoaGFzTmFtZWREZWZhdWx0U2xvdCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzkgLyogWF9WX1NMT1RfRVhUUkFORU9VU19ERUZBVUxUX1NMT1RfQ0hJTERSRU4gKi8sIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuWzBdLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5KHVuZGVmaW5lZCwgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHNsb3RGbGFnID0gaGFzRHluYW1pY1Nsb3RzXHJcbiAgICAgICAgPyAyIC8qIERZTkFNSUMgKi9cclxuICAgICAgICA6IGhhc0ZvcndhcmRlZFNsb3RzKG5vZGUuY2hpbGRyZW4pXHJcbiAgICAgICAgICAgID8gMyAvKiBGT1JXQVJERUQgKi9cclxuICAgICAgICAgICAgOiAxIC8qIFNUQUJMRSAqLztcclxuICAgIGxldCBzbG90cyA9IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oc2xvdHNQcm9wZXJ0aWVzLmNvbmNhdChjcmVhdGVPYmplY3RQcm9wZXJ0eShgX2AsIFxyXG4gICAgLy8gMiA9IGNvbXBpbGVkIGJ1dCBkeW5hbWljID0gY2FuIHNraXAgbm9ybWFsaXphdGlvbiwgYnV0IG11c3QgcnVuIGRpZmZcclxuICAgIC8vIDEgPSBjb21waWxlZCBhbmQgc3RhdGljID0gY2FuIHNraXAgbm9ybWFsaXphdGlvbiBBTkQgZGlmZiBhcyBvcHRpbWl6ZWRcclxuICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oc2xvdEZsYWcgKyAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke3Nsb3RGbGFnc1RleHRbc2xvdEZsYWddfSAqL2AgOiBgYCksIGZhbHNlKSkpLCBsb2MpO1xyXG4gICAgaWYgKGR5bmFtaWNTbG90cy5sZW5ndGgpIHtcclxuICAgICAgICBzbG90cyA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKENSRUFURV9TTE9UUyksIFtcclxuICAgICAgICAgICAgc2xvdHMsXHJcbiAgICAgICAgICAgIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihkeW5hbWljU2xvdHMpXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHNsb3RzLFxyXG4gICAgICAgIGhhc0R5bmFtaWNTbG90c1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBidWlsZER5bmFtaWNTbG90KG5hbWUsIGZuKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoYG5hbWVgLCBuYW1lKSxcclxuICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShgZm5gLCBmbilcclxuICAgIF0pO1xyXG59XHJcbmZ1bmN0aW9uIGhhc0ZvcndhcmRlZFNsb3RzKGNoaWxkcmVuKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBzd2l0Y2ggKGNoaWxkLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAxIC8qIEVMRU1FTlQgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQudGFnVHlwZSA9PT0gMiAvKiBTTE9UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA5IC8qIElGICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0ZvcndhcmRlZFNsb3RzKGNoaWxkLmJyYW5jaGVzKSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDEwIC8qIElGX0JSQU5DSCAqLzpcclxuICAgICAgICAgICAgY2FzZSAxMSAvKiBGT1IgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuY2hpbGRyZW4pKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZSkge1xyXG4gICAgaWYgKG5vZGUudHlwZSAhPT0gMiAvKiBURVhUICovICYmIG5vZGUudHlwZSAhPT0gMTIgLyogVEVYVF9DQUxMICovKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gMiAvKiBURVhUICovXHJcbiAgICAgICAgPyAhIW5vZGUuY29udGVudC50cmltKClcclxuICAgICAgICA6IGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZS5jb250ZW50KTtcclxufVxuXG4vLyBzb21lIGRpcmVjdGl2ZSB0cmFuc2Zvcm1zIChlLmcuIHYtbW9kZWwpIG1heSByZXR1cm4gYSBzeW1ib2wgZm9yIHJ1bnRpbWVcclxuLy8gaW1wb3J0LCB3aGljaCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGEgcmVzb2x2ZURpcmVjdGl2ZSBjYWxsLlxyXG5jb25zdCBkaXJlY3RpdmVJbXBvcnRNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG4vLyBnZW5lcmF0ZSBhIEphdmFTY3JpcHQgQVNUIGZvciB0aGlzIGVsZW1lbnQncyBjb2RlZ2VuXHJcbmNvbnN0IHRyYW5zZm9ybUVsZW1lbnQgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgLy8gcGVyZm9ybSB0aGUgd29yayBvbiBleGl0LCBhZnRlciBhbGwgY2hpbGQgZXhwcmVzc2lvbnMgaGF2ZSBiZWVuXHJcbiAgICAvLyBwcm9jZXNzZWQgYW5kIG1lcmdlZC5cclxuICAgIHJldHVybiBmdW5jdGlvbiBwb3N0VHJhbnNmb3JtRWxlbWVudCgpIHtcclxuICAgICAgICBub2RlID0gY29udGV4dC5jdXJyZW50Tm9kZTtcclxuICAgICAgICBpZiAoIShub2RlLnR5cGUgPT09IDEgLyogRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAobm9kZS50YWdUeXBlID09PSAwIC8qIEVMRU1FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMSAvKiBDT01QT05FTlQgKi8pKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdGFnLCBwcm9wcyB9ID0gbm9kZTtcclxuICAgICAgICBjb25zdCBpc0NvbXBvbmVudCA9IG5vZGUudGFnVHlwZSA9PT0gMSAvKiBDT01QT05FTlQgKi87XHJcbiAgICAgICAgLy8gVGhlIGdvYWwgb2YgdGhlIHRyYW5zZm9ybSBpcyB0byBjcmVhdGUgYSBjb2RlZ2VuTm9kZSBpbXBsZW1lbnRpbmcgdGhlXHJcbiAgICAgICAgLy8gVk5vZGVDYWxsIGludGVyZmFjZS5cclxuICAgICAgICBsZXQgdm5vZGVUYWcgPSBpc0NvbXBvbmVudFxyXG4gICAgICAgICAgICA/IHJlc29sdmVDb21wb25lbnRUeXBlKG5vZGUsIGNvbnRleHQpXHJcbiAgICAgICAgICAgIDogYFwiJHt0YWd9XCJgO1xyXG4gICAgICAgIGNvbnN0IGlzRHluYW1pY0NvbXBvbmVudCA9IGlzT2JqZWN0KHZub2RlVGFnKSAmJiB2bm9kZVRhZy5jYWxsZWUgPT09IFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQ7XHJcbiAgICAgICAgbGV0IHZub2RlUHJvcHM7XHJcbiAgICAgICAgbGV0IHZub2RlQ2hpbGRyZW47XHJcbiAgICAgICAgbGV0IHZub2RlUGF0Y2hGbGFnO1xyXG4gICAgICAgIGxldCBwYXRjaEZsYWcgPSAwO1xyXG4gICAgICAgIGxldCB2bm9kZUR5bmFtaWNQcm9wcztcclxuICAgICAgICBsZXQgZHluYW1pY1Byb3BOYW1lcztcclxuICAgICAgICBsZXQgdm5vZGVEaXJlY3RpdmVzO1xyXG4gICAgICAgIGxldCBzaG91bGRVc2VCbG9jayA9IFxyXG4gICAgICAgIC8vIGR5bmFtaWMgY29tcG9uZW50IG1heSByZXNvbHZlIHRvIHBsYWluIGVsZW1lbnRzXHJcbiAgICAgICAgaXNEeW5hbWljQ29tcG9uZW50IHx8XHJcbiAgICAgICAgICAgIHZub2RlVGFnID09PSBURUxFUE9SVCB8fFxyXG4gICAgICAgICAgICB2bm9kZVRhZyA9PT0gU1VTUEVOU0UgfHxcclxuICAgICAgICAgICAgKCFpc0NvbXBvbmVudCAmJlxyXG4gICAgICAgICAgICAgICAgLy8gPHN2Zz4gYW5kIDxmb3JlaWduT2JqZWN0PiBtdXN0IGJlIGZvcmNlZCBpbnRvIGJsb2NrcyBzbyB0aGF0IGJsb2NrXHJcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGVzIGluc2lkZSBnZXQgcHJvcGVyIGlzU1ZHIGZsYWcgYXQgcnVudGltZS4gKCM2MzksICM2NDMpXHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IHdlYi1zcGVjaWZpYywgYnV0IHNwbGl0dGluZyB0aGUgbG9naWMgb3V0IG9mIGNvcmVcclxuICAgICAgICAgICAgICAgIC8vIGxlYWRzIHRvIHRvbyBtdWNoIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkuXHJcbiAgICAgICAgICAgICAgICAodGFnID09PSAnc3ZnJyB8fCB0YWcgPT09ICdmb3JlaWduT2JqZWN0JykpO1xyXG4gICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgaWYgKHByb3BzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcHNCdWlsZFJlc3VsdCA9IGJ1aWxkUHJvcHMobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIHZub2RlUHJvcHMgPSBwcm9wc0J1aWxkUmVzdWx0LnByb3BzO1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgPSBwcm9wc0J1aWxkUmVzdWx0LnBhdGNoRmxhZztcclxuICAgICAgICAgICAgZHluYW1pY1Byb3BOYW1lcyA9IHByb3BzQnVpbGRSZXN1bHQuZHluYW1pY1Byb3BOYW1lcztcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlcyA9IHByb3BzQnVpbGRSZXN1bHQuZGlyZWN0aXZlcztcclxuICAgICAgICAgICAgdm5vZGVEaXJlY3RpdmVzID1cclxuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMgJiYgZGlyZWN0aXZlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZUFycmF5RXhwcmVzc2lvbihkaXJlY3RpdmVzLm1hcChkaXIgPT4gYnVpbGREaXJlY3RpdmVBcmdzKGRpciwgY29udGV4dCkpKVxyXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAocHJvcHNCdWlsZFJlc3VsdC5zaG91bGRVc2VCbG9jaykge1xyXG4gICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodm5vZGVUYWcgPT09IEtFRVBfQUxJVkUpIHtcclxuICAgICAgICAgICAgICAgIC8vIEFsdGhvdWdoIGEgYnVpbHQtaW4gY29tcG9uZW50LCB3ZSBjb21waWxlIEtlZXBBbGl2ZSB3aXRoIHJhdyBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBzbG90IGZ1bmN0aW9ucyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluc2lkZSBUcmFuc2l0aW9uXHJcbiAgICAgICAgICAgICAgICAvLyBvciBvdGhlciBUcmFuc2l0aW9uLXdyYXBwaW5nIEhPQ3MuXHJcbiAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgY29ycmVjdCB1cGRhdGVzIHdpdGggYmxvY2sgb3B0aW1pemF0aW9ucywgd2UgbmVlZCB0bzpcclxuICAgICAgICAgICAgICAgIC8vIDEuIEZvcmNlIGtlZXAtYWxpdmUgaW50byBhIGJsb2NrLiBUaGlzIGF2b2lkcyBpdHMgY2hpbGRyZW4gYmVpbmdcclxuICAgICAgICAgICAgICAgIC8vICAgIGNvbGxlY3RlZCBieSBhIHBhcmVudCBibG9jay5cclxuICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIC8vIDIuIEZvcmNlIGtlZXAtYWxpdmUgdG8gYWx3YXlzIGJlIHVwZGF0ZWQsIHNpbmNlIGl0IHVzZXMgcmF3IGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDEwMjQgLyogRFlOQU1JQ19TTE9UUyAqLztcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDUgLyogWF9LRUVQX0FMSVZFX0lOVkFMSURfQ0hJTERSRU4gKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IG5vZGUuY2hpbGRyZW5bMF0ubG9jLnN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXS5sb2MuZW5kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJ1aWxkQXNTbG90cyA9IGlzQ29tcG9uZW50ICYmXHJcbiAgICAgICAgICAgICAgICAvLyBUZWxlcG9ydCBpcyBub3QgYSByZWFsIGNvbXBvbmVudCBhbmQgaGFzIGRlZGljYXRlZCBydW50aW1lIGhhbmRsaW5nXHJcbiAgICAgICAgICAgICAgICB2bm9kZVRhZyAhPT0gVEVMRVBPUlQgJiZcclxuICAgICAgICAgICAgICAgIC8vIGV4cGxhaW5lZCBhYm92ZS5cclxuICAgICAgICAgICAgICAgIHZub2RlVGFnICE9PSBLRUVQX0FMSVZFO1xyXG4gICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRBc1Nsb3RzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNsb3RzLCBoYXNEeW5hbWljU2xvdHMgfSA9IGJ1aWxkU2xvdHMobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUNoaWxkcmVuID0gc2xvdHM7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRHluYW1pY1Nsb3RzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDEwMjQgLyogRFlOQU1JQ19TTE9UUyAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiB2bm9kZVRhZyAhPT0gVEVMRVBPUlQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBjaGlsZC50eXBlO1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGR5bmFtaWMgdGV4dCBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRHluYW1pY1RleHRDaGlsZCA9IHR5cGUgPT09IDUgLyogSU5URVJQT0xBVElPTiAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09IDggLyogQ09NUE9VTkRfRVhQUkVTU0lPTiAqLztcclxuICAgICAgICAgICAgICAgIGlmIChoYXNEeW5hbWljVGV4dENoaWxkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KSA9PT0gMCAvKiBOT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaEZsYWcgfD0gMSAvKiBURVhUICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gcGFzcyBkaXJlY3RseSBpZiB0aGUgb25seSBjaGlsZCBpcyBhIHRleHQgbm9kZVxyXG4gICAgICAgICAgICAgICAgLy8gKHBsYWluIC8gaW50ZXJwb2xhdGlvbiAvIGV4cHJlc3Npb24pXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRHluYW1pY1RleHRDaGlsZCB8fCB0eXBlID09PSAyIC8qIFRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZUNoaWxkcmVuID0gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZUNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHBhdGNoRmxhZyAmIGR5bmFtaWNQcm9wTmFtZXNcclxuICAgICAgICBpZiAocGF0Y2hGbGFnICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBmbGFncyAobmVnYXRpdmUgYW5kIG11dHVhbGx5IGV4Y2x1c2l2ZSlcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZVBhdGNoRmxhZyA9IHBhdGNoRmxhZyArIGAgLyogJHtQYXRjaEZsYWdOYW1lc1twYXRjaEZsYWddfSAqL2A7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBiaXR3aXNlIGZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxhZ05hbWVzID0gT2JqZWN0LmtleXMoUGF0Y2hGbGFnTmFtZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoTnVtYmVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG4gPT4gbiA+IDAgJiYgcGF0Y2hGbGFnICYgbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChuID0+IFBhdGNoRmxhZ05hbWVzW25dKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbihgLCBgKTtcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZVBhdGNoRmxhZyA9IHBhdGNoRmxhZyArIGAgLyogJHtmbGFnTmFtZXN9ICovYDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZub2RlUGF0Y2hGbGFnID0gU3RyaW5nKHBhdGNoRmxhZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGR5bmFtaWNQcm9wTmFtZXMgJiYgZHluYW1pY1Byb3BOYW1lcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHZub2RlRHluYW1pY1Byb3BzID0gc3RyaW5naWZ5RHluYW1pY1Byb3BOYW1lcyhkeW5hbWljUHJvcE5hbWVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIHZub2RlVGFnLCB2bm9kZVByb3BzLCB2bm9kZUNoaWxkcmVuLCB2bm9kZVBhdGNoRmxhZywgdm5vZGVEeW5hbWljUHJvcHMsIHZub2RlRGlyZWN0aXZlcywgISFzaG91bGRVc2VCbG9jaywgZmFsc2UgLyogZGlzYWJsZVRyYWNraW5nICovLCBpc0NvbXBvbmVudCwgbm9kZS5sb2MpO1xyXG4gICAgfTtcclxufTtcclxuZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudFR5cGUobm9kZSwgY29udGV4dCwgc3NyID0gZmFsc2UpIHtcclxuICAgIGxldCB7IHRhZyB9ID0gbm9kZTtcclxuICAgIC8vIDEuIGR5bmFtaWMgY29tcG9uZW50XHJcbiAgICBjb25zdCBpc0V4cGxpY2l0RHluYW1pYyA9IGlzQ29tcG9uZW50VGFnKHRhZyk7XHJcbiAgICBjb25zdCBpc1Byb3AgPSBmaW5kUHJvcChub2RlLCAnaXMnKTtcclxuICAgIGlmIChpc1Byb3ApIHtcclxuICAgICAgICBpZiAoaXNFeHBsaWNpdER5bmFtaWMgfHxcclxuICAgICAgICAgICAgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0KSkpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhwID0gaXNQcm9wLnR5cGUgPT09IDYgLyogQVRUUklCVVRFICovXHJcbiAgICAgICAgICAgICAgICA/IGlzUHJvcC52YWx1ZSAmJiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGlzUHJvcC52YWx1ZS5jb250ZW50LCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgOiBpc1Byb3AuZXhwO1xyXG4gICAgICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCksIFtcclxuICAgICAgICAgICAgICAgICAgICBleHBcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzUHJvcC50eXBlID09PSA2IC8qIEFUVFJJQlVURSAqLyAmJlxyXG4gICAgICAgICAgICBpc1Byb3AudmFsdWUuY29udGVudC5zdGFydHNXaXRoKCd2dWU6JykpIHtcclxuICAgICAgICAgICAgLy8gPGJ1dHRvbiBpcz1cInZ1ZTp4eHhcIj5cclxuICAgICAgICAgICAgLy8gaWYgbm90IDxjb21wb25lbnQ+LCBvbmx5IGlzIHZhbHVlIHRoYXQgc3RhcnRzIHdpdGggXCJ2dWU6XCIgd2lsbCBiZVxyXG4gICAgICAgICAgICAvLyB0cmVhdGVkIGFzIGNvbXBvbmVudCBieSB0aGUgcGFyc2UgcGhhc2UgYW5kIHJlYWNoIGhlcmUsIHVubGVzcyBpdCdzXHJcbiAgICAgICAgICAgIC8vIGNvbXBhdCBtb2RlIHdoZXJlIGFsbCBpcyB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgY29tcG9uZW50c1xyXG4gICAgICAgICAgICB0YWcgPSBpc1Byb3AudmFsdWUuY29udGVudC5zbGljZSg0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyAxLjUgdi1pcyAoVE9ETzogRGVwcmVjYXRlKVxyXG4gICAgY29uc3QgaXNEaXIgPSAhaXNFeHBsaWNpdER5bmFtaWMgJiYgZmluZERpcihub2RlLCAnaXMnKTtcclxuICAgIGlmIChpc0RpciAmJiBpc0Rpci5leHApIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCksIFtcclxuICAgICAgICAgICAgaXNEaXIuZXhwXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICAvLyAyLiBidWlsdC1pbiBjb21wb25lbnRzIChUZWxlcG9ydCwgVHJhbnNpdGlvbiwgS2VlcEFsaXZlLCBTdXNwZW5zZS4uLilcclxuICAgIGNvbnN0IGJ1aWx0SW4gPSBpc0NvcmVDb21wb25lbnQodGFnKSB8fCBjb250ZXh0LmlzQnVpbHRJbkNvbXBvbmVudCh0YWcpO1xyXG4gICAgaWYgKGJ1aWx0SW4pIHtcclxuICAgICAgICAvLyBidWlsdC1pbnMgYXJlIHNpbXBseSBmYWxsdGhyb3VnaHMgLyBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZHVyaW5nIHNzclxyXG4gICAgICAgIC8vIHNvIHdlIGRvbid0IG5lZWQgdG8gaW1wb3J0IHRoZWlyIHJ1bnRpbWUgZXF1aXZhbGVudHNcclxuICAgICAgICBpZiAoIXNzcilcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoYnVpbHRJbik7XHJcbiAgICAgICAgcmV0dXJuIGJ1aWx0SW47XHJcbiAgICB9XHJcbiAgICAvLyA1LiB1c2VyIGNvbXBvbmVudCAocmVzb2x2ZSlcclxuICAgIGNvbnRleHQuaGVscGVyKFJFU09MVkVfQ09NUE9ORU5UKTtcclxuICAgIGNvbnRleHQuY29tcG9uZW50cy5hZGQodGFnKTtcclxuICAgIHJldHVybiB0b1ZhbGlkQXNzZXRJZCh0YWcsIGBjb21wb25lbnRgKTtcclxufVxyXG5mdW5jdGlvbiBidWlsZFByb3BzKG5vZGUsIGNvbnRleHQsIHByb3BzID0gbm9kZS5wcm9wcywgc3NyID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHsgdGFnLCBsb2M6IGVsZW1lbnRMb2MsIGNoaWxkcmVuIH0gPSBub2RlO1xyXG4gICAgY29uc3QgaXNDb21wb25lbnQgPSBub2RlLnRhZ1R5cGUgPT09IDEgLyogQ09NUE9ORU5UICovO1xyXG4gICAgbGV0IHByb3BlcnRpZXMgPSBbXTtcclxuICAgIGNvbnN0IG1lcmdlQXJncyA9IFtdO1xyXG4gICAgY29uc3QgcnVudGltZURpcmVjdGl2ZXMgPSBbXTtcclxuICAgIGNvbnN0IGhhc0NoaWxkcmVuID0gY2hpbGRyZW4ubGVuZ3RoID4gMDtcclxuICAgIGxldCBzaG91bGRVc2VCbG9jayA9IGZhbHNlO1xyXG4gICAgLy8gcGF0Y2hGbGFnIGFuYWx5c2lzXHJcbiAgICBsZXQgcGF0Y2hGbGFnID0gMDtcclxuICAgIGxldCBoYXNSZWYgPSBmYWxzZTtcclxuICAgIGxldCBoYXNDbGFzc0JpbmRpbmcgPSBmYWxzZTtcclxuICAgIGxldCBoYXNTdHlsZUJpbmRpbmcgPSBmYWxzZTtcclxuICAgIGxldCBoYXNIeWRyYXRpb25FdmVudEJpbmRpbmcgPSBmYWxzZTtcclxuICAgIGxldCBoYXNEeW5hbWljS2V5cyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc1Zub2RlSG9vayA9IGZhbHNlO1xyXG4gICAgY29uc3QgZHluYW1pY1Byb3BOYW1lcyA9IFtdO1xyXG4gICAgY29uc3QgYW5hbHl6ZVBhdGNoRmxhZyA9ICh7IGtleSwgdmFsdWUgfSkgPT4ge1xyXG4gICAgICAgIGlmIChpc1N0YXRpY0V4cChrZXkpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBrZXkuY29udGVudDtcclxuICAgICAgICAgICAgY29uc3QgaXNFdmVudEhhbmRsZXIgPSBpc09uKG5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoIWlzQ29tcG9uZW50ICYmXHJcbiAgICAgICAgICAgICAgICBpc0V2ZW50SGFuZGxlciAmJlxyXG4gICAgICAgICAgICAgICAgLy8gb21pdCB0aGUgZmxhZyBmb3IgY2xpY2sgaGFuZGxlcnMgYmVjYXVzZSBoeWRyYXRpb24gZ2l2ZXMgY2xpY2tcclxuICAgICAgICAgICAgICAgIC8vIGRlZGljYXRlZCBmYXN0IHBhdGguXHJcbiAgICAgICAgICAgICAgICBuYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdvbmNsaWNrJyAmJlxyXG4gICAgICAgICAgICAgICAgLy8gb21pdCB2LW1vZGVsIGhhbmRsZXJzXHJcbiAgICAgICAgICAgICAgICBuYW1lICE9PSAnb25VcGRhdGU6bW9kZWxWYWx1ZScgJiZcclxuICAgICAgICAgICAgICAgIC8vIG9taXQgb25Wbm9kZVhYWCBob29rc1xyXG4gICAgICAgICAgICAgICAgIWlzUmVzZXJ2ZWRQcm9wKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNIeWRyYXRpb25FdmVudEJpbmRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc0V2ZW50SGFuZGxlciAmJiBpc1Jlc2VydmVkUHJvcChuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgaGFzVm5vZGVIb29rID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gMjAgLyogSlNfQ0FDSEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgICAgICAgICAgKCh2YWx1ZS50eXBlID09PSA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gOCAvKiBDT01QT1VORF9FWFBSRVNTSU9OICovKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGdldENvbnN0YW50VHlwZSh2YWx1ZSwgY29udGV4dCkgPiAwKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gc2tpcCBpZiB0aGUgcHJvcCBpcyBhIGNhY2hlZCBoYW5kbGVyIG9yIGhhcyBjb25zdGFudCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAncmVmJykge1xyXG4gICAgICAgICAgICAgICAgaGFzUmVmID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNDbGFzc0JpbmRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdzdHlsZScpIHtcclxuICAgICAgICAgICAgICAgIGhhc1N0eWxlQmluZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobmFtZSAhPT0gJ2tleScgJiYgIWR5bmFtaWNQcm9wTmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNQcm9wTmFtZXMucHVzaChuYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0cmVhdCB0aGUgZHluYW1pYyBjbGFzcyBhbmQgc3R5bGUgYmluZGluZyBvZiB0aGUgY29tcG9uZW50IGFzIGR5bmFtaWMgcHJvcHNcclxuICAgICAgICAgICAgaWYgKGlzQ29tcG9uZW50ICYmXHJcbiAgICAgICAgICAgICAgICAobmFtZSA9PT0gJ2NsYXNzJyB8fCBuYW1lID09PSAnc3R5bGUnKSAmJlxyXG4gICAgICAgICAgICAgICAgIWR5bmFtaWNQcm9wTmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNQcm9wTmFtZXMucHVzaChuYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY0tleXMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgLy8gc3RhdGljIGF0dHJpYnV0ZVxyXG4gICAgICAgIGNvbnN0IHByb3AgPSBwcm9wc1tpXTtcclxuICAgICAgICBpZiAocHJvcC50eXBlID09PSA2IC8qIEFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBjb25zdCB7IGxvYywgbmFtZSwgdmFsdWUgfSA9IHByb3A7XHJcbiAgICAgICAgICAgIGxldCBpc1N0YXRpYyA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAncmVmJykge1xyXG4gICAgICAgICAgICAgICAgaGFzUmVmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnNjb3Blcy52Rm9yID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdyZWZfZm9yJywgdHJ1ZSksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3RydWUnKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgaXMgb24gPGNvbXBvbmVudD4sIG9yIGlzPVwidnVlOnh4eFwiXHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaXMnICYmXHJcbiAgICAgICAgICAgICAgICAoaXNDb21wb25lbnRUYWcodGFnKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZSAmJiB2YWx1ZS5jb250ZW50LnN0YXJ0c1dpdGgoJ3Z1ZTonKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQpKSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKG5hbWUsIHRydWUsIGdldElubmVyUmFuZ2UobG9jLCAwLCBuYW1lLmxlbmd0aCkpLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHZhbHVlID8gdmFsdWUuY29udGVudCA6ICcnLCBpc1N0YXRpYywgdmFsdWUgPyB2YWx1ZS5sb2MgOiBsb2MpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBkaXJlY3RpdmVzXHJcbiAgICAgICAgICAgIGNvbnN0IHsgbmFtZSwgYXJnLCBleHAsIGxvYyB9ID0gcHJvcDtcclxuICAgICAgICAgICAgY29uc3QgaXNWQmluZCA9IG5hbWUgPT09ICdiaW5kJztcclxuICAgICAgICAgICAgY29uc3QgaXNWT24gPSBuYW1lID09PSAnb24nO1xyXG4gICAgICAgICAgICAvLyBza2lwIHYtc2xvdCAtIGl0IGlzIGhhbmRsZWQgYnkgaXRzIGRlZGljYXRlZCB0cmFuc2Zvcm0uXHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnc2xvdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0MCAvKiBYX1ZfU0xPVF9NSVNQTEFDRUQgKi8sIGxvYykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCB2LW9uY2Uvdi1tZW1vIC0gdGhleSBhcmUgaGFuZGxlZCBieSBkZWRpY2F0ZWQgdHJhbnNmb3Jtcy5cclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdvbmNlJyB8fCBuYW1lID09PSAnbWVtbycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgdi1pcyBhbmQgOmlzIG9uIDxjb21wb25lbnQ+XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaXMnIHx8XHJcbiAgICAgICAgICAgICAgICAoaXNWQmluZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGlzU3RhdGljQXJnT2YoYXJnLCAnaXMnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChpc0NvbXBvbmVudFRhZyh0YWcpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCkpKSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgdi1vbiBpbiBTU1IgY29tcGlsYXRpb25cclxuICAgICAgICAgICAgaWYgKGlzVk9uICYmIHNzcikge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAvLyAjOTM4OiBlbGVtZW50cyB3aXRoIGR5bmFtaWMga2V5cyBzaG91bGQgYmUgZm9yY2VkIGludG8gYmxvY2tzXHJcbiAgICAgICAgICAgIChpc1ZCaW5kICYmIGlzU3RhdGljQXJnT2YoYXJnLCAna2V5JykpIHx8XHJcbiAgICAgICAgICAgICAgICAvLyBpbmxpbmUgYmVmb3JlLXVwZGF0ZSBob29rcyBuZWVkIHRvIGZvcmNlIGJsb2NrIHNvIHRoYXQgaXQgaXMgaW52b2tlZFxyXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlIGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICAoaXNWT24gJiYgaGFzQ2hpbGRyZW4gJiYgaXNTdGF0aWNBcmdPZihhcmcsICd2dWU6YmVmb3JlLXVwZGF0ZScpKSkge1xyXG4gICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc1ZCaW5kICYmIGlzU3RhdGljQXJnT2YoYXJnLCAncmVmJykgJiYgY29udGV4dC5zY29wZXMudkZvciA+IDApIHtcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdyZWZfZm9yJywgdHJ1ZSksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3RydWUnKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3Igdi1iaW5kIGFuZCB2LW9uIHdpdGggbm8gYXJndW1lbnRcclxuICAgICAgICAgICAgaWYgKCFhcmcgJiYgKGlzVkJpbmQgfHwgaXNWT24pKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNEeW5hbWljS2V5cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy5wdXNoKGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSwgZWxlbWVudExvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1ZCaW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIueCB2LWJpbmQgb2JqZWN0IG9yZGVyIGNvbXBhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc092ZXJyaWRhYmxlS2V5cyA9IG1lcmdlQXJncy5zb21lKGFyZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmcudHlwZSA9PT0gMTUgLyogSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmcucHJvcGVydGllcy5zb21lKCh7IGtleSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleS50eXBlICE9PSA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFrZXkuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoa2V5LmNvbnRlbnQgIT09ICdjbGFzcycgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmNvbnRlbnQgIT09ICdzdHlsZScgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzT24oa2V5LmNvbnRlbnQpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHluYW1pYyBleHByZXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPdmVycmlkYWJsZUtleXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUlwiIC8qIENPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVIgKi8sIGNvbnRleHQsIGxvYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIiAvKiBDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSICovLCBjb250ZXh0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy51bnNoaWZ0KGV4cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VBcmdzLnB1c2goZXhwKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHYtb249XCJvYmpcIiAtPiB0b0hhbmRsZXJzKG9iailcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VBcmdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTQgLyogSlNfQ0FMTF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVlOiBjb250ZXh0LmhlbHBlcihUT19IQU5ETEVSUyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM6IFtleHBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKGlzVkJpbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAzNCAvKiBYX1ZfQklORF9OT19FWFBSRVNTSU9OICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMzUgLyogWF9WX09OX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlVHJhbnNmb3JtID0gY29udGV4dC5kaXJlY3RpdmVUcmFuc2Zvcm1zW25hbWVdO1xyXG4gICAgICAgICAgICBpZiAoZGlyZWN0aXZlVHJhbnNmb3JtKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBoYXMgYnVpbHQtaW4gZGlyZWN0aXZlIHRyYW5zZm9ybS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvcHMsIG5lZWRSdW50aW1lIH0gPSBkaXJlY3RpdmVUcmFuc2Zvcm0ocHJvcCwgbm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAhc3NyICYmIHByb3BzLmZvckVhY2goYW5hbHl6ZVBhdGNoRmxhZyk7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goLi4ucHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5lZWRSdW50aW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcnVudGltZURpcmVjdGl2ZXMucHVzaChwcm9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNTeW1ib2wobmVlZFJ1bnRpbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUltcG9ydE1hcC5zZXQocHJvcCwgbmVlZFJ1bnRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghaXNCdWlsdEluRGlyZWN0aXZlKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBubyBidWlsdC1pbiB0cmFuc2Zvcm0sIHRoaXMgaXMgYSB1c2VyIGN1c3RvbSBkaXJlY3RpdmUuXHJcbiAgICAgICAgICAgICAgICBydW50aW1lRGlyZWN0aXZlcy5wdXNoKHByb3ApO1xyXG4gICAgICAgICAgICAgICAgLy8gY3VzdG9tIGRpcnMgbWF5IHVzZSBiZWZvcmVVcGRhdGUgc28gdGhleSBuZWVkIHRvIGZvcmNlIGJsb2Nrc1xyXG4gICAgICAgICAgICAgICAgLy8gdG8gZW5zdXJlIGJlZm9yZS11cGRhdGUgZ2V0cyBjYWxsZWQgYmVmb3JlIGNoaWxkcmVuIHVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHByb3BzRXhwcmVzc2lvbiA9IHVuZGVmaW5lZDtcclxuICAgIC8vIGhhcyB2LWJpbmQ9XCJvYmplY3RcIiBvciB2LW9uPVwib2JqZWN0XCIsIHdyYXAgd2l0aCBtZXJnZVByb3BzXHJcbiAgICBpZiAobWVyZ2VBcmdzLmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBtZXJnZUFyZ3MucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcyksIGVsZW1lbnRMb2MpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1lcmdlQXJncy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE1FUkdFX1BST1BTKSwgbWVyZ2VBcmdzLCBlbGVtZW50TG9jKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZSB2LWJpbmQgd2l0aCBub3RoaW5nIGVsc2UgLSBubyBuZWVkIGZvciBhIG1lcmdlUHJvcHMgY2FsbFxyXG4gICAgICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBtZXJnZUFyZ3NbMF07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocHJvcGVydGllcy5sZW5ndGgpIHtcclxuICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcyksIGVsZW1lbnRMb2MpO1xyXG4gICAgfVxyXG4gICAgLy8gcGF0Y2hGbGFnIGFuYWx5c2lzXHJcbiAgICBpZiAoaGFzRHluYW1pY0tleXMpIHtcclxuICAgICAgICBwYXRjaEZsYWcgfD0gMTYgLyogRlVMTF9QUk9QUyAqLztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChoYXNDbGFzc0JpbmRpbmcgJiYgIWlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAyIC8qIENMQVNTICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaGFzU3R5bGVCaW5kaW5nICYmICFpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgfD0gNCAvKiBTVFlMRSAqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGR5bmFtaWNQcm9wTmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSA4IC8qIFBST1BTICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAzMiAvKiBIWURSQVRFX0VWRU5UUyAqLztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXNob3VsZFVzZUJsb2NrICYmXHJcbiAgICAgICAgKHBhdGNoRmxhZyA9PT0gMCB8fCBwYXRjaEZsYWcgPT09IDMyIC8qIEhZRFJBVEVfRVZFTlRTICovKSAmJlxyXG4gICAgICAgIChoYXNSZWYgfHwgaGFzVm5vZGVIb29rIHx8IHJ1bnRpbWVEaXJlY3RpdmVzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgICAgcGF0Y2hGbGFnIHw9IDUxMiAvKiBORUVEX1BBVENIICovO1xyXG4gICAgfVxyXG4gICAgLy8gcHJlLW5vcm1hbGl6ZSBwcm9wcywgU1NSIGlzIHNraXBwZWQgZm9yIG5vd1xyXG4gICAgaWYgKCFjb250ZXh0LmluU1NSICYmIHByb3BzRXhwcmVzc2lvbikge1xyXG4gICAgICAgIHN3aXRjaCAocHJvcHNFeHByZXNzaW9uLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAxNSAvKiBKU19PQkpFQ1RfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gdi1iaW5kLFxyXG4gICAgICAgICAgICAgICAgLy8gYnV0IHN0aWxsIG5lZWQgdG8gZGVhbCB3aXRoIGR5bmFtaWMga2V5IGJpbmRpbmdcclxuICAgICAgICAgICAgICAgIGxldCBjbGFzc0tleUluZGV4ID0gLTE7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3R5bGVLZXlJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhhc0R5bmFtaWNLZXkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBwcm9wc0V4cHJlc3Npb24ucHJvcGVydGllc1tpXS5rZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5jb250ZW50ID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0tleUluZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkuY29udGVudCA9PT0gJ3N0eWxlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVLZXlJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWtleS5pc0hhbmRsZXJLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRHluYW1pY0tleSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xhc3NQcm9wID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbY2xhc3NLZXlJbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZVByb3AgPSBwcm9wc0V4cHJlc3Npb24ucHJvcGVydGllc1tzdHlsZUtleUluZGV4XTtcclxuICAgICAgICAgICAgICAgIC8vIG5vIGR5bmFtaWMga2V5XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0R5bmFtaWNLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xhc3NQcm9wICYmICFpc1N0YXRpY0V4cChjbGFzc1Byb3AudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzUHJvcC52YWx1ZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9DTEFTUyksIFtjbGFzc1Byb3AudmFsdWVdKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlUHJvcCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNTdGF0aWNFeHAoc3R5bGVQcm9wLnZhbHVlKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgc3RhdGljIHN0eWxlIGlzIGNvbXBpbGVkIGludG8gYW4gb2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB1c2UgYGhhc1N0eWxlQmluZGluZ2AgdG8gZW5zdXJlIHRoYXQgaXQgaXMgYSBkeW5hbWljIHN0eWxlIGJpbmRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGhhc1N0eWxlQmluZGluZyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdi1iaW5kOnN0eWxlIGFuZCBzdHlsZSBib3RoIGV4aXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdi1iaW5kOnN0eWxlIHdpdGggc3RhdGljIGxpdGVyYWwgb2JqZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVByb3AudmFsdWUudHlwZSA9PT0gMTcgLyogSlNfQVJSQVlfRVhQUkVTU0lPTiAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVQcm9wLnZhbHVlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1NUWUxFKSwgW3N0eWxlUHJvcC52YWx1ZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGR5bmFtaWMga2V5IGJpbmRpbmcsIHdyYXAgd2l0aCBgbm9ybWFsaXplUHJvcHNgXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1BST1BTKSwgW3Byb3BzRXhwcmVzc2lvbl0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTQgLyogSlNfQ0FMTF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICAgICAgLy8gbWVyZ2VQcm9wcyBjYWxsLCBkbyBub3RoaW5nXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIC8vIHNpbmdsZSB2LWJpbmRcclxuICAgICAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihHVUFSRF9SRUFDVElWRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogcHJvcHNFeHByZXNzaW9uLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IHJ1bnRpbWVEaXJlY3RpdmVzLFxyXG4gICAgICAgIHBhdGNoRmxhZyxcclxuICAgICAgICBkeW5hbWljUHJvcE5hbWVzLFxyXG4gICAgICAgIHNob3VsZFVzZUJsb2NrXHJcbiAgICB9O1xyXG59XHJcbi8vIERlZHVwZSBwcm9wcyBpbiBhbiBvYmplY3QgbGl0ZXJhbC5cclxuLy8gTGl0ZXJhbCBkdXBsaWNhdGVkIGF0dHJpYnV0ZXMgd291bGQgaGF2ZSBiZWVuIHdhcm5lZCBkdXJpbmcgdGhlIHBhcnNlIHBoYXNlLFxyXG4vLyBob3dldmVyLCBpdCdzIHBvc3NpYmxlIHRvIGVuY291bnRlciBkdXBsaWNhdGVkIGBvblhYWGAgaGFuZGxlcnMgd2l0aCBkaWZmZXJlbnRcclxuLy8gbW9kaWZpZXJzLiBXZSBhbHNvIG5lZWQgdG8gbWVyZ2Ugc3RhdGljIGFuZCBkeW5hbWljIGNsYXNzIC8gc3R5bGUgYXR0cmlidXRlcy5cclxuLy8gLSBvblhYWCBoYW5kbGVycyAvIHN0eWxlOiBtZXJnZSBpbnRvIGFycmF5XHJcbi8vIC0gY2xhc3M6IG1lcmdlIGludG8gc2luZ2xlIGV4cHJlc3Npb24gd2l0aCBjb25jYXRlbmF0aW9uXHJcbmZ1bmN0aW9uIGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcykge1xyXG4gICAgY29uc3Qga25vd25Qcm9wcyA9IG5ldyBNYXAoKTtcclxuICAgIGNvbnN0IGRlZHVwZWQgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHByb3AgPSBwcm9wZXJ0aWVzW2ldO1xyXG4gICAgICAgIC8vIGR5bmFtaWMga2V5cyBhcmUgYWx3YXlzIGFsbG93ZWRcclxuICAgICAgICBpZiAocHJvcC5rZXkudHlwZSA9PT0gOCAvKiBDT01QT1VORF9FWFBSRVNTSU9OICovIHx8ICFwcm9wLmtleS5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICBkZWR1cGVkLnB1c2gocHJvcCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuYW1lID0gcHJvcC5rZXkuY29udGVudDtcclxuICAgICAgICBjb25zdCBleGlzdGluZyA9IGtub3duUHJvcHMuZ2V0KG5hbWUpO1xyXG4gICAgICAgIGlmIChleGlzdGluZykge1xyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3N0eWxlJyB8fCBuYW1lID09PSAnY2xhc3MnIHx8IGlzT24obmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIG1lcmdlQXNBcnJheShleGlzdGluZywgcHJvcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdW5leHBlY3RlZCBkdXBsaWNhdGUsIHNob3VsZCBoYXZlIGVtaXR0ZWQgZXJyb3IgZHVyaW5nIHBhcnNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBrbm93blByb3BzLnNldChuYW1lLCBwcm9wKTtcclxuICAgICAgICAgICAgZGVkdXBlZC5wdXNoKHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkZWR1cGVkO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlQXNBcnJheShleGlzdGluZywgaW5jb21pbmcpIHtcclxuICAgIGlmIChleGlzdGluZy52YWx1ZS50eXBlID09PSAxNyAvKiBKU19BUlJBWV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgZXhpc3RpbmcudmFsdWUuZWxlbWVudHMucHVzaChpbmNvbWluZy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBleGlzdGluZy52YWx1ZSA9IGNyZWF0ZUFycmF5RXhwcmVzc2lvbihbZXhpc3RpbmcudmFsdWUsIGluY29taW5nLnZhbHVlXSwgZXhpc3RpbmcubG9jKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBidWlsZERpcmVjdGl2ZUFyZ3MoZGlyLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBkaXJBcmdzID0gW107XHJcbiAgICBjb25zdCBydW50aW1lID0gZGlyZWN0aXZlSW1wb3J0TWFwLmdldChkaXIpO1xyXG4gICAgaWYgKHJ1bnRpbWUpIHtcclxuICAgICAgICAvLyBidWlsdC1pbiBkaXJlY3RpdmUgd2l0aCBydW50aW1lXHJcbiAgICAgICAgZGlyQXJncy5wdXNoKGNvbnRleHQuaGVscGVyU3RyaW5nKHJ1bnRpbWUpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy8gaW5qZWN0IHN0YXRlbWVudCBmb3IgcmVzb2x2aW5nIGRpcmVjdGl2ZVxyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihSRVNPTFZFX0RJUkVDVElWRSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZGlyZWN0aXZlcy5hZGQoZGlyLm5hbWUpO1xyXG4gICAgICAgICAgICBkaXJBcmdzLnB1c2godG9WYWxpZEFzc2V0SWQoZGlyLm5hbWUsIGBkaXJlY3RpdmVgKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgeyBsb2MgfSA9IGRpcjtcclxuICAgIGlmIChkaXIuZXhwKVxyXG4gICAgICAgIGRpckFyZ3MucHVzaChkaXIuZXhwKTtcclxuICAgIGlmIChkaXIuYXJnKSB7XHJcbiAgICAgICAgaWYgKCFkaXIuZXhwKSB7XHJcbiAgICAgICAgICAgIGRpckFyZ3MucHVzaChgdm9pZCAwYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpckFyZ3MucHVzaChkaXIuYXJnKTtcclxuICAgIH1cclxuICAgIGlmIChPYmplY3Qua2V5cyhkaXIubW9kaWZpZXJzKS5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoIWRpci5hcmcpIHtcclxuICAgICAgICAgICAgaWYgKCFkaXIuZXhwKSB7XHJcbiAgICAgICAgICAgICAgICBkaXJBcmdzLnB1c2goYHZvaWQgMGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRpckFyZ3MucHVzaChgdm9pZCAwYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRydWVFeHByZXNzaW9uID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdHJ1ZWAsIGZhbHNlLCBsb2MpO1xyXG4gICAgICAgIGRpckFyZ3MucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRpci5tb2RpZmllcnMubWFwKG1vZGlmaWVyID0+IGNyZWF0ZU9iamVjdFByb3BlcnR5KG1vZGlmaWVyLCB0cnVlRXhwcmVzc2lvbikpLCBsb2MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVBcnJheUV4cHJlc3Npb24oZGlyQXJncywgZGlyLmxvYyk7XHJcbn1cclxuZnVuY3Rpb24gc3RyaW5naWZ5RHluYW1pY1Byb3BOYW1lcyhwcm9wcykge1xyXG4gICAgbGV0IHByb3BzTmFtZXNTdHJpbmcgPSBgW2A7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHByb3BzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIHByb3BzTmFtZXNTdHJpbmcgKz0gSlNPTi5zdHJpbmdpZnkocHJvcHNbaV0pO1xyXG4gICAgICAgIGlmIChpIDwgbCAtIDEpXHJcbiAgICAgICAgICAgIHByb3BzTmFtZXNTdHJpbmcgKz0gJywgJztcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wc05hbWVzU3RyaW5nICsgYF1gO1xyXG59XHJcbmZ1bmN0aW9uIGlzQ29tcG9uZW50VGFnKHRhZykge1xyXG4gICAgcmV0dXJuIHRhZyA9PT0gJ2NvbXBvbmVudCcgfHwgdGFnID09PSAnQ29tcG9uZW50JztcclxufVxuXG4ocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgID8gT2JqZWN0LmZyZWV6ZSh7fSlcclxuICAgIDoge307XHJcbihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IE9iamVjdC5mcmVlemUoW10pIDogW107XHJcbmNvbnN0IGNhY2hlU3RyaW5nRnVuY3Rpb24gPSAoZm4pID0+IHtcclxuICAgIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHJldHVybiAoKHN0cikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGhpdCA9IGNhY2hlW3N0cl07XHJcbiAgICAgICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpO1xyXG4gICAgfSk7XHJcbn07XHJcbmNvbnN0IGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgY2FtZWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHtcclxuICAgIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCAoXywgYykgPT4gKGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJykpO1xyXG59KTtcblxuY29uc3QgdHJhbnNmb3JtU2xvdE91dGxldCA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAoaXNTbG90T3V0bGV0KG5vZGUpKSB7XHJcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgbG9jIH0gPSBub2RlO1xyXG4gICAgICAgIGNvbnN0IHsgc2xvdE5hbWUsIHNsb3RQcm9wcyB9ID0gcHJvY2Vzc1Nsb3RPdXRsZXQobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgY29uc3Qgc2xvdEFyZ3MgPSBbXHJcbiAgICAgICAgICAgIGNvbnRleHQucHJlZml4SWRlbnRpZmllcnMgPyBgX2N0eC4kc2xvdHNgIDogYCRzbG90c2AsXHJcbiAgICAgICAgICAgIHNsb3ROYW1lLFxyXG4gICAgICAgICAgICAne30nLFxyXG4gICAgICAgICAgICAndW5kZWZpbmVkJyxcclxuICAgICAgICAgICAgJ3RydWUnXHJcbiAgICAgICAgXTtcclxuICAgICAgICBsZXQgZXhwZWN0ZWRMZW4gPSAyO1xyXG4gICAgICAgIGlmIChzbG90UHJvcHMpIHtcclxuICAgICAgICAgICAgc2xvdEFyZ3NbMl0gPSBzbG90UHJvcHM7XHJcbiAgICAgICAgICAgIGV4cGVjdGVkTGVuID0gMztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzbG90QXJnc1szXSA9IGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihbXSwgY2hpbGRyZW4sIGZhbHNlLCBmYWxzZSwgbG9jKTtcclxuICAgICAgICAgICAgZXhwZWN0ZWRMZW4gPSA0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29udGV4dC5zY29wZUlkICYmICFjb250ZXh0LnNsb3R0ZWQpIHtcclxuICAgICAgICAgICAgZXhwZWN0ZWRMZW4gPSA1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzbG90QXJncy5zcGxpY2UoZXhwZWN0ZWRMZW4pOyAvLyByZW1vdmUgdW51c2VkIGFyZ3VtZW50c1xyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihSRU5ERVJfU0xPVCksIHNsb3RBcmdzLCBsb2MpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBwcm9jZXNzU2xvdE91dGxldChub2RlLCBjb250ZXh0KSB7XHJcbiAgICBsZXQgc2xvdE5hbWUgPSBgXCJkZWZhdWx0XCJgO1xyXG4gICAgbGV0IHNsb3RQcm9wcyA9IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IG5vbk5hbWVQcm9wcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHAudHlwZSA9PT0gNiAvKiBBVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHAudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICduYW1lJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNsb3ROYW1lID0gSlNPTi5zdHJpbmdpZnkocC52YWx1ZS5jb250ZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHAubmFtZSA9IGNhbWVsaXplKHAubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9uTmFtZVByb3BzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdiaW5kJyAmJiBpc1N0YXRpY0FyZ09mKHAuYXJnLCAnbmFtZScpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocC5leHApXHJcbiAgICAgICAgICAgICAgICAgICAgc2xvdE5hbWUgPSBwLmV4cDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdiaW5kJyAmJiBwLmFyZyAmJiBpc1N0YXRpY0V4cChwLmFyZykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwLmFyZy5jb250ZW50ID0gY2FtZWxpemUocC5hcmcuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBub25OYW1lUHJvcHMucHVzaChwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChub25OYW1lUHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHsgcHJvcHMsIGRpcmVjdGl2ZXMgfSA9IGJ1aWxkUHJvcHMobm9kZSwgY29udGV4dCwgbm9uTmFtZVByb3BzKTtcclxuICAgICAgICBzbG90UHJvcHMgPSBwcm9wcztcclxuICAgICAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzYgLyogWF9WX1NMT1RfVU5FWFBFQ1RFRF9ESVJFQ1RJVkVfT05fU0xPVF9PVVRMRVQgKi8sIGRpcmVjdGl2ZXNbMF0ubG9jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzbG90TmFtZSxcclxuICAgICAgICBzbG90UHJvcHNcclxuICAgIH07XHJcbn1cblxuY29uc3QgZm5FeHBSRSA9IC9eXFxzKihbXFx3JF9dK3woYXN5bmNcXHMqKT9cXChbXildKj9cXCkpXFxzKj0+fF5cXHMqKGFzeW5jXFxzKyk/ZnVuY3Rpb24oPzpcXHMrW1xcdyRdKyk/XFxzKlxcKC87XHJcbmNvbnN0IHRyYW5zZm9ybU9uID0gKGRpciwgbm9kZSwgY29udGV4dCwgYXVnbWVudG9yKSA9PiB7XHJcbiAgICBjb25zdCB7IGxvYywgbW9kaWZpZXJzLCBhcmcgfSA9IGRpcjtcclxuICAgIGlmICghZGlyLmV4cCAmJiAhbW9kaWZpZXJzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM1IC8qIFhfVl9PTl9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGxldCBldmVudE5hbWU7XHJcbiAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBpZiAoYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgIGxldCByYXdOYW1lID0gYXJnLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIC8vIFRPRE8gZGVwcmVjYXRlIEB2bm9kZVhYWCB1c2FnZVxyXG4gICAgICAgICAgICBpZiAocmF3TmFtZS5zdGFydHNXaXRoKCd2dWU6JykpIHtcclxuICAgICAgICAgICAgICAgIHJhd05hbWUgPSBgdm5vZGUtJHtyYXdOYW1lLnNsaWNlKDQpfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZm9yIGFsbCBldmVudCBsaXN0ZW5lcnMsIGF1dG8gY29udmVydCBpdCB0byBjYW1lbENhc2UuIFNlZSBpc3N1ZSAjMjI0OVxyXG4gICAgICAgICAgICBldmVudE5hbWUgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHRvSGFuZGxlcktleShjYW1lbGl6ZSQxKHJhd05hbWUpKSwgdHJ1ZSwgYXJnLmxvYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAjMjM4OFxyXG4gICAgICAgICAgICBldmVudE5hbWUgPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoVE9fSEFORExFUl9LRVkpfShgLFxyXG4gICAgICAgICAgICAgICAgYXJnLFxyXG4gICAgICAgICAgICAgICAgYClgXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGFscmVhZHkgYSBjb21wb3VuZCBleHByZXNzaW9uLlxyXG4gICAgICAgIGV2ZW50TmFtZSA9IGFyZztcclxuICAgICAgICBldmVudE5hbWUuY2hpbGRyZW4udW5zaGlmdChgJHtjb250ZXh0LmhlbHBlclN0cmluZyhUT19IQU5ETEVSX0tFWSl9KGApO1xyXG4gICAgICAgIGV2ZW50TmFtZS5jaGlsZHJlbi5wdXNoKGApYCk7XHJcbiAgICB9XHJcbiAgICAvLyBoYW5kbGVyIHByb2Nlc3NpbmdcclxuICAgIGxldCBleHAgPSBkaXIuZXhwO1xyXG4gICAgaWYgKGV4cCAmJiAhZXhwLmNvbnRlbnQudHJpbSgpKSB7XHJcbiAgICAgICAgZXhwID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3VsZENhY2hlID0gY29udGV4dC5jYWNoZUhhbmRsZXJzICYmICFleHAgJiYgIWNvbnRleHQuaW5WT25jZTtcclxuICAgIGlmIChleHApIHtcclxuICAgICAgICBjb25zdCBpc01lbWJlckV4cCA9IGlzTWVtYmVyRXhwcmVzc2lvbihleHAuY29udGVudCk7XHJcbiAgICAgICAgY29uc3QgaXNJbmxpbmVTdGF0ZW1lbnQgPSAhKGlzTWVtYmVyRXhwIHx8IGZuRXhwUkUudGVzdChleHAuY29udGVudCkpO1xyXG4gICAgICAgIGNvbnN0IGhhc011bHRpcGxlU3RhdGVtZW50cyA9IGV4cC5jb250ZW50LmluY2x1ZGVzKGA7YCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24oZXhwLCBjb250ZXh0LCBmYWxzZSwgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzSW5saW5lU3RhdGVtZW50IHx8IChzaG91bGRDYWNoZSAmJiBpc01lbWJlckV4cCkpIHtcclxuICAgICAgICAgICAgLy8gd3JhcCBpbmxpbmUgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZXhwcmVzc2lvblxyXG4gICAgICAgICAgICBleHAgPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgYCR7aXNJbmxpbmVTdGF0ZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICA/IGAkZXZlbnRgXHJcbiAgICAgICAgICAgICAgICAgICAgOiBgJHtgYH0oLi4uYXJncylgfSA9PiAke2hhc011bHRpcGxlU3RhdGVtZW50cyA/IGB7YCA6IGAoYH1gLFxyXG4gICAgICAgICAgICAgICAgZXhwLFxyXG4gICAgICAgICAgICAgICAgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzID8gYH1gIDogYClgXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCByZXQgPSB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoZXZlbnROYW1lLCBleHAgfHwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgKCkgPT4ge31gLCBmYWxzZSwgbG9jKSlcclxuICAgICAgICBdXHJcbiAgICB9O1xyXG4gICAgLy8gYXBwbHkgZXh0ZW5kZWQgY29tcGlsZXIgYXVnbWVudG9yXHJcbiAgICBpZiAoYXVnbWVudG9yKSB7XHJcbiAgICAgICAgcmV0ID0gYXVnbWVudG9yKHJldCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcclxuICAgICAgICAvLyBjYWNoZSBoYW5kbGVycyBzbyB0aGF0IGl0J3MgYWx3YXlzIHRoZSBzYW1lIGhhbmRsZXIgYmVpbmcgcGFzc2VkIGRvd24uXHJcbiAgICAgICAgLy8gdGhpcyBhdm9pZHMgdW5uZWNlc3NhcnkgcmUtcmVuZGVycyB3aGVuIHVzZXJzIHVzZSBpbmxpbmUgaGFuZGxlcnMgb25cclxuICAgICAgICAvLyBjb21wb25lbnRzLlxyXG4gICAgICAgIHJldC5wcm9wc1swXS52YWx1ZSA9IGNvbnRleHQuY2FjaGUocmV0LnByb3BzWzBdLnZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIG1hcmsgdGhlIGtleSBhcyBoYW5kbGVyIGZvciBwcm9wcyBub3JtYWxpemF0aW9uIGNoZWNrXHJcbiAgICByZXQucHJvcHMuZm9yRWFjaChwID0+IChwLmtleS5pc0hhbmRsZXJLZXkgPSB0cnVlKSk7XHJcbiAgICByZXR1cm4gcmV0O1xyXG59O1xuXG4vLyB2LWJpbmQgd2l0aG91dCBhcmcgaXMgaGFuZGxlZCBkaXJlY3RseSBpbiAuL3RyYW5zZm9ybUVsZW1lbnRzLnRzIGR1ZSB0byBpdCBhZmZlY3RpbmdcclxuLy8gY29kZWdlbiBmb3IgdGhlIGVudGlyZSBwcm9wcyBvYmplY3QuIFRoaXMgdHJhbnNmb3JtIGhlcmUgaXMgb25seSBmb3Igdi1iaW5kXHJcbi8vICp3aXRoKiBhcmdzLlxyXG5jb25zdCB0cmFuc2Zvcm1CaW5kID0gKGRpciwgX25vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBtb2RpZmllcnMsIGxvYyB9ID0gZGlyO1xyXG4gICAgY29uc3QgYXJnID0gZGlyLmFyZztcclxuICAgIGlmIChhcmcudHlwZSAhPT0gNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi51bnNoaWZ0KGAoYCk7XHJcbiAgICAgICAgYXJnLmNoaWxkcmVuLnB1c2goYCkgfHwgXCJcImApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIWFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgIGFyZy5jb250ZW50ID0gYCR7YXJnLmNvbnRlbnR9IHx8IFwiXCJgO1xyXG4gICAgfVxyXG4gICAgLy8gLnN5bmMgaXMgcmVwbGFjZWQgYnkgdi1tb2RlbDphcmdcclxuICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ2NhbWVsJykpIHtcclxuICAgICAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgaWYgKGFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBjYW1lbGl6ZSQxKGFyZy5jb250ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFyZy5jb250ZW50ID0gYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoQ0FNRUxJWkUpfSgke2FyZy5jb250ZW50fSlgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBhcmcuY2hpbGRyZW4udW5zaGlmdChgJHtjb250ZXh0LmhlbHBlclN0cmluZyhDQU1FTElaRSl9KGApO1xyXG4gICAgICAgICAgICBhcmcuY2hpbGRyZW4ucHVzaChgKWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghY29udGV4dC5pblNTUikge1xyXG4gICAgICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ3Byb3AnKSkge1xyXG4gICAgICAgICAgICBpbmplY3RQcmVmaXgoYXJnLCAnLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKCdhdHRyJykpIHtcclxuICAgICAgICAgICAgaW5qZWN0UHJlZml4KGFyZywgJ14nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWV4cCB8fFxyXG4gICAgICAgIChleHAudHlwZSA9PT0gNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLyAmJiAhZXhwLmNvbnRlbnQudHJpbSgpKSkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM0IC8qIFhfVl9CSU5EX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHByb3BzOiBbY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCcnLCB0cnVlLCBsb2MpKV1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW2NyZWF0ZU9iamVjdFByb3BlcnR5KGFyZywgZXhwKV1cclxuICAgIH07XHJcbn07XHJcbmNvbnN0IGluamVjdFByZWZpeCA9IChhcmcsIHByZWZpeCkgPT4ge1xyXG4gICAgaWYgKGFyZy50eXBlID09PSA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgaWYgKGFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICBhcmcuY29udGVudCA9IHByZWZpeCArIGFyZy5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBgXFxgJHtwcmVmaXh9XFwkeyR7YXJnLmNvbnRlbnR9fVxcYGA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgYXJnLmNoaWxkcmVuLnVuc2hpZnQoYCcke3ByZWZpeH0nICsgKGApO1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi5wdXNoKGApYCk7XHJcbiAgICB9XHJcbn07XG5cbi8vIE1lcmdlIGFkamFjZW50IHRleHQgbm9kZXMgYW5kIGV4cHJlc3Npb25zIGludG8gYSBzaW5nbGUgZXhwcmVzc2lvblxyXG4vLyBlLmcuIDxkaXY+YWJjIHt7IGQgfX0ge3sgZSB9fTwvZGl2PiBzaG91bGQgaGF2ZSBhIHNpbmdsZSBleHByZXNzaW9uIG5vZGUgYXMgY2hpbGQuXHJcbmNvbnN0IHRyYW5zZm9ybVRleHQgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMCAvKiBST09UICovIHx8XHJcbiAgICAgICAgbm9kZS50eXBlID09PSAxIC8qIEVMRU1FTlQgKi8gfHxcclxuICAgICAgICBub2RlLnR5cGUgPT09IDExIC8qIEZPUiAqLyB8fFxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMTAgLyogSUZfQlJBTkNIICovKSB7XHJcbiAgICAgICAgLy8gcGVyZm9ybSB0aGUgdHJhbnNmb3JtIG9uIG5vZGUgZXhpdCBzbyB0aGF0IGFsbCBleHByZXNzaW9ucyBoYXZlIGFscmVhZHlcclxuICAgICAgICAvLyBiZWVuIHByb2Nlc3NlZC5cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q29udGFpbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBsZXQgaGFzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVGV4dChjaGlsZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBjaGlsZHJlbi5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gY2hpbGRyZW5bal07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1RleHQobmV4dCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3VycmVudENvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb250YWluZXIgPSBjaGlsZHJlbltpXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogOCAvKiBDT01QT1VORF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IGNoaWxkLmxvYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtjaGlsZF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2RlIGludG8gY3VycmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbnRhaW5lci5jaGlsZHJlbi5wdXNoKGAgKyBgLCBuZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGotLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWhhc1RleHQgfHxcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBwbGFpbiBlbGVtZW50IHdpdGggYSBzaW5nbGUgdGV4dCBjaGlsZCwgbGVhdmUgaXRcclxuICAgICAgICAgICAgICAgIC8vIGFzLWlzIHNpbmNlIHRoZSBydW50aW1lIGhhcyBkZWRpY2F0ZWQgZmFzdCBwYXRoIGZvciB0aGlzIGJ5IGRpcmVjdGx5XHJcbiAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIHRleHRDb250ZW50IG9mIHRoZSBlbGVtZW50LlxyXG4gICAgICAgICAgICAgICAgLy8gZm9yIGNvbXBvbmVudCByb290IGl0J3MgYWx3YXlzIG5vcm1hbGl6ZWQgYW55d2F5LlxyXG4gICAgICAgICAgICAgICAgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChub2RlLnR5cGUgPT09IDAgLyogUk9PVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobm9kZS50eXBlID09PSAxIC8qIEVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMzc1NlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VzdG9tIGRpcmVjdGl2ZXMgY2FuIHBvdGVudGlhbGx5IGFkZCBET00gZWxlbWVudHMgYXJiaXRyYXJpbHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGF2b2lkIHNldHRpbmcgdGV4dENvbnRlbnQgb2YgdGhlIGVsZW1lbnQgYXQgcnVudGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgYWNjaWRlbnRhbGx5IG92ZXJ3cml0aW5nIHRoZSBET00gZWxlbWVudHMgYWRkZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSB1c2VyIHRocm91Z2ggY3VzdG9tIGRpcmVjdGl2ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbm9kZS5wcm9wcy5maW5kKHAgPT4gcC50eXBlID09PSA3IC8qIERJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjb250ZXh0LmRpcmVjdGl2ZVRyYW5zZm9ybXNbcC5uYW1lXSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGNvbXBhdCBtb2RlLCA8dGVtcGxhdGU+IHRhZ3Mgd2l0aCBubyBzcGVjaWFsIGRpcmVjdGl2ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgcmVuZGVyZWQgYXMgYSBmcmFnbWVudCBzbyBpdHMgY2hpbGRyZW4gbXVzdCBiZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udmVydGVkIGludG8gdm5vZGVzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShub2RlLnRhZyA9PT0gJ3RlbXBsYXRlJykpKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcmUtY29udmVydCB0ZXh0IG5vZGVzIGludG8gY3JlYXRlVGV4dFZOb2RlKHRleHQpIGNhbGxzIHRvIGF2b2lkXHJcbiAgICAgICAgICAgIC8vIHJ1bnRpbWUgbm9ybWFsaXphdGlvbi5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RleHQoY2hpbGQpIHx8IGNoaWxkLnR5cGUgPT09IDggLyogQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxBcmdzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlVGV4dFZOb2RlIGRlZmF1bHRzIHRvIHNpbmdsZSB3aGl0ZXNwYWNlLCBzbyBpZiBpdCBpcyBhXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlIHNwYWNlIHRoZSBjb2RlIGNvdWxkIGJlIGFuIGVtcHR5IGNhbGwgdG8gc2F2ZSBieXRlcy5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSAhPT0gMiAvKiBURVhUICovIHx8IGNoaWxkLmNvbnRlbnQgIT09ICcgJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsQXJncy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbWFyayBkeW5hbWljIHRleHQgd2l0aCBmbGFnIHNvIGl0IGdldHMgcGF0Y2hlZCBpbnNpZGUgYSBibG9ja1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5zc3IgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KSA9PT0gMCAvKiBOT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEFyZ3MucHVzaCgxIC8qIFRFWFQgKi8gK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtQYXRjaEZsYWdOYW1lc1sxIC8qIFRFWFQgKi9dfSAqL2AgOiBgYCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTIgLyogVEVYVF9DQUxMICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiBjaGlsZC5sb2MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlOiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihDUkVBVEVfVEVYVCksIGNhbGxBcmdzKVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcclxuY29uc3QgdHJhbnNmb3JtT25jZSA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIEVMRU1FTlQgKi8gJiYgZmluZERpcihub2RlLCAnb25jZScsIHRydWUpKSB7XHJcbiAgICAgICAgaWYgKHNlZW4uaGFzKG5vZGUpIHx8IGNvbnRleHQuaW5WT25jZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlZW4uYWRkKG5vZGUpO1xyXG4gICAgICAgIGNvbnRleHQuaW5WT25jZSA9IHRydWU7XHJcbiAgICAgICAgY29udGV4dC5oZWxwZXIoU0VUX0JMT0NLX1RSQUNLSU5HKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluVk9uY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgY3VyID0gY29udGV4dC5jdXJyZW50Tm9kZTtcclxuICAgICAgICAgICAgaWYgKGN1ci5jb2RlZ2VuTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgY3VyLmNvZGVnZW5Ob2RlID0gY29udGV4dC5jYWNoZShjdXIuY29kZWdlbk5vZGUsIHRydWUgLyogaXNWTm9kZSAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1Nb2RlbCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBhcmcgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDEgLyogWF9WX01PREVMX05PX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICByZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhd0V4cCA9IGV4cC5sb2Muc291cmNlO1xyXG4gICAgY29uc3QgZXhwU3RyaW5nID0gZXhwLnR5cGUgPT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8gPyBleHAuY29udGVudCA6IHJhd0V4cDtcclxuICAgIC8vIGltIFNGQyA8c2NyaXB0IHNldHVwPiBpbmxpbmUgbW9kZSwgdGhlIGV4cCBtYXkgaGF2ZSBiZWVuIHRyYW5zZm9ybWVkIGludG9cclxuICAgIC8vIF91bnJlZihleHApXHJcbiAgICBjb250ZXh0LmJpbmRpbmdNZXRhZGF0YVtyYXdFeHBdO1xyXG4gICAgY29uc3QgbWF5YmVSZWYgPSAhdHJ1ZSAgICAvKiBTRVRVUF9DT05TVCAqLztcclxuICAgIGlmICghZXhwU3RyaW5nLnRyaW0oKSB8fFxyXG4gICAgICAgICghaXNNZW1iZXJFeHByZXNzaW9uKGV4cFN0cmluZykgJiYgIW1heWJlUmVmKSkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQyIC8qIFhfVl9NT0RFTF9NQUxGT1JNRURfRVhQUkVTU0lPTiAqLywgZXhwLmxvYykpO1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJvcE5hbWUgPSBhcmcgPyBhcmcgOiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdtb2RlbFZhbHVlJywgdHJ1ZSk7XHJcbiAgICBjb25zdCBldmVudE5hbWUgPSBhcmdcclxuICAgICAgICA/IGlzU3RhdGljRXhwKGFyZylcclxuICAgICAgICAgICAgPyBgb25VcGRhdGU6JHthcmcuY29udGVudH1gXHJcbiAgICAgICAgICAgIDogY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsnXCJvblVwZGF0ZTpcIiArICcsIGFyZ10pXHJcbiAgICAgICAgOiBgb25VcGRhdGU6bW9kZWxWYWx1ZWA7XHJcbiAgICBsZXQgYXNzaWdubWVudEV4cDtcclxuICAgIGNvbnN0IGV2ZW50QXJnID0gY29udGV4dC5pc1RTID8gYCgkZXZlbnQ6IGFueSlgIDogYCRldmVudGA7XHJcbiAgICB7XHJcbiAgICAgICAgYXNzaWdubWVudEV4cCA9IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXHJcbiAgICAgICAgICAgIGAke2V2ZW50QXJnfSA9PiAoKGAsXHJcbiAgICAgICAgICAgIGV4cCxcclxuICAgICAgICAgICAgYCkgPSAkZXZlbnQpYFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJvcHMgPSBbXHJcbiAgICAgICAgLy8gbW9kZWxWYWx1ZTogZm9vXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkocHJvcE5hbWUsIGRpci5leHApLFxyXG4gICAgICAgIC8vIFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOiAkZXZlbnQgPT4gKGZvbyA9ICRldmVudClcclxuICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShldmVudE5hbWUsIGFzc2lnbm1lbnRFeHApXHJcbiAgICBdO1xyXG4gICAgLy8gbW9kZWxNb2RpZmllcnM6IHsgZm9vOiB0cnVlLCBcImJhci1iYXpcIjogdHJ1ZSB9XHJcbiAgICBpZiAoZGlyLm1vZGlmaWVycy5sZW5ndGggJiYgbm9kZS50YWdUeXBlID09PSAxIC8qIENPTVBPTkVOVCAqLykge1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnNcclxuICAgICAgICAgICAgLm1hcChtID0+IChpc1NpbXBsZUlkZW50aWZpZXIobSkgPyBtIDogSlNPTi5zdHJpbmdpZnkobSkpICsgYDogdHJ1ZWApXHJcbiAgICAgICAgICAgIC5qb2luKGAsIGApO1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVyc0tleSA9IGFyZ1xyXG4gICAgICAgICAgICA/IGlzU3RhdGljRXhwKGFyZylcclxuICAgICAgICAgICAgICAgID8gYCR7YXJnLmNvbnRlbnR9TW9kaWZpZXJzYFxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2FyZywgJyArIFwiTW9kaWZpZXJzXCInXSlcclxuICAgICAgICAgICAgOiBgbW9kZWxNb2RpZmllcnNgO1xyXG4gICAgICAgIHByb3BzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkobW9kaWZpZXJzS2V5LCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB7ICR7bW9kaWZpZXJzfSB9YCwgZmFsc2UsIGRpci5sb2MsIDIgLyogQ0FOX0hPSVNUICovKSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZVRyYW5zZm9ybVByb3BzKHByb3BzKTtcclxufTtcclxuZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtUHJvcHMocHJvcHMgPSBbXSkge1xyXG4gICAgcmV0dXJuIHsgcHJvcHMgfTtcclxufVxuXG5jb25zdCB2YWxpZERpdmlzaW9uQ2hhclJFID0gL1tcXHcpLitcXC1fJFxcXV0vO1xyXG5jb25zdCB0cmFuc2Zvcm1GaWx0ZXIgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKCFpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9GSUxURVJcIiAvKiBDT01QSUxFUl9GSUxURVJTICovLCBjb250ZXh0KSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChub2RlLnR5cGUgPT09IDUgLyogSU5URVJQT0xBVElPTiAqLykge1xyXG4gICAgICAgIC8vIGZpbHRlciByZXdyaXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cHJlc3Npb24gdHJhbnNmb3JtIHNvIG9ubHlcclxuICAgICAgICAvLyBzaW1wbGUgZXhwcmVzc2lvbnMgYXJlIHBvc3NpYmxlIGF0IHRoaXMgc3RhZ2VcclxuICAgICAgICByZXdyaXRlRmlsdGVyKG5vZGUuY29udGVudCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIEVMRU1FTlQgKi8pIHtcclxuICAgICAgICBub2RlLnByb3BzLmZvckVhY2goKHByb3ApID0+IHtcclxuICAgICAgICAgICAgaWYgKHByb3AudHlwZSA9PT0gNyAvKiBESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgICAgIHByb3AubmFtZSAhPT0gJ2ZvcicgJiZcclxuICAgICAgICAgICAgICAgIHByb3AuZXhwKSB7XHJcbiAgICAgICAgICAgICAgICByZXdyaXRlRmlsdGVyKHByb3AuZXhwLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiByZXdyaXRlRmlsdGVyKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDQgLyogU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBwYXJzZUZpbHRlcihub2RlLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGQgIT09ICdvYmplY3QnKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSA0IC8qIFNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJzZUZpbHRlcihjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gOCAvKiBDT01QT1VORF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXdyaXRlRmlsdGVyKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDUgLyogSU5URVJQT0xBVElPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV3cml0ZUZpbHRlcihjaGlsZC5jb250ZW50LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBwYXJzZUZpbHRlcihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBleHAgPSBub2RlLmNvbnRlbnQ7XHJcbiAgICBsZXQgaW5TaW5nbGUgPSBmYWxzZTtcclxuICAgIGxldCBpbkRvdWJsZSA9IGZhbHNlO1xyXG4gICAgbGV0IGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcclxuICAgIGxldCBpblJlZ2V4ID0gZmFsc2U7XHJcbiAgICBsZXQgY3VybHkgPSAwO1xyXG4gICAgbGV0IHNxdWFyZSA9IDA7XHJcbiAgICBsZXQgcGFyZW4gPSAwO1xyXG4gICAgbGV0IGxhc3RGaWx0ZXJJbmRleCA9IDA7XHJcbiAgICBsZXQgYywgcHJldiwgaSwgZXhwcmVzc2lvbiwgZmlsdGVycyA9IFtdO1xyXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHByZXYgPSBjO1xyXG4gICAgICAgIGMgPSBleHAuY2hhckNvZGVBdChpKTtcclxuICAgICAgICBpZiAoaW5TaW5nbGUpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MjcgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluU2luZ2xlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluRG91YmxlKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDIyICYmIHByZXYgIT09IDB4NWMpXHJcbiAgICAgICAgICAgICAgICBpbkRvdWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpblRlbXBsYXRlU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDYwICYmIHByZXYgIT09IDB4NWMpXHJcbiAgICAgICAgICAgICAgICBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluUmVnZXgpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MmYgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluUmVnZXggPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYyA9PT0gMHg3YyAmJiAvLyBwaXBlXHJcbiAgICAgICAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMHg3YyAmJlxyXG4gICAgICAgICAgICBleHAuY2hhckNvZGVBdChpIC0gMSkgIT09IDB4N2MgJiZcclxuICAgICAgICAgICAgIWN1cmx5ICYmXHJcbiAgICAgICAgICAgICFzcXVhcmUgJiZcclxuICAgICAgICAgICAgIXBhcmVuKSB7XHJcbiAgICAgICAgICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZpcnN0IGZpbHRlciwgZW5kIG9mIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwdXNoRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoYykge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDIyOlxyXG4gICAgICAgICAgICAgICAgICAgIGluRG91YmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gXCJcclxuICAgICAgICAgICAgICAgIGNhc2UgMHgyNzpcclxuICAgICAgICAgICAgICAgICAgICBpblNpbmdsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vICdcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg2MDpcclxuICAgICAgICAgICAgICAgICAgICBpblRlbXBsYXRlU3RyaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gYFxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDI4OlxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVuKys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIChcclxuICAgICAgICAgICAgICAgIGNhc2UgMHgyOTpcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbi0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyApXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4NWI6XHJcbiAgICAgICAgICAgICAgICAgICAgc3F1YXJlKys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFtcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg1ZDpcclxuICAgICAgICAgICAgICAgICAgICBzcXVhcmUtLTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gXVxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDdiOlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cmx5Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg3ZDpcclxuICAgICAgICAgICAgICAgICAgICBjdXJseS0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MmYpIHtcclxuICAgICAgICAgICAgICAgIC8vIC9cclxuICAgICAgICAgICAgICAgIGxldCBqID0gaSAtIDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgcDtcclxuICAgICAgICAgICAgICAgIC8vIGZpbmQgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgcHJldiBjaGFyXHJcbiAgICAgICAgICAgICAgICBmb3IgKDsgaiA+PSAwOyBqLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICBwID0gZXhwLmNoYXJBdChqKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocCAhPT0gJyAnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghcCB8fCAhdmFsaWREaXZpc2lvbkNoYXJSRS50ZXN0KHApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5SZWdleCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcclxuICAgICAgICBwdXNoRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwdXNoRmlsdGVyKCkge1xyXG4gICAgICAgIGZpbHRlcnMucHVzaChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50cmltKCkpO1xyXG4gICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihcIkNPTVBJTEVSX0ZJTFRFUlwiIC8qIENPTVBJTEVSX0ZJTFRFUlMgKi8sIGNvbnRleHQsIG5vZGUubG9jKTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBleHByZXNzaW9uID0gd3JhcEZpbHRlcihleHByZXNzaW9uLCBmaWx0ZXJzW2ldLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZS5jb250ZW50ID0gZXhwcmVzc2lvbjtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB3cmFwRmlsdGVyKGV4cCwgZmlsdGVyLCBjb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LmhlbHBlcihSRVNPTFZFX0ZJTFRFUik7XHJcbiAgICBjb25zdCBpID0gZmlsdGVyLmluZGV4T2YoJygnKTtcclxuICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgIGNvbnRleHQuZmlsdGVycy5hZGQoZmlsdGVyKTtcclxuICAgICAgICByZXR1cm4gYCR7dG9WYWxpZEFzc2V0SWQoZmlsdGVyLCAnZmlsdGVyJyl9KCR7ZXhwfSlgO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbHRlci5zbGljZSgwLCBpKTtcclxuICAgICAgICBjb25zdCBhcmdzID0gZmlsdGVyLnNsaWNlKGkgKyAxKTtcclxuICAgICAgICBjb250ZXh0LmZpbHRlcnMuYWRkKG5hbWUpO1xyXG4gICAgICAgIHJldHVybiBgJHt0b1ZhbGlkQXNzZXRJZChuYW1lLCAnZmlsdGVyJyl9KCR7ZXhwfSR7YXJncyAhPT0gJyknID8gJywnICsgYXJncyA6IGFyZ3N9YDtcclxuICAgIH1cclxufVxuXG5jb25zdCBzZWVuJDEgPSBuZXcgV2Vha1NldCgpO1xyXG5jb25zdCB0cmFuc2Zvcm1NZW1vID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogRUxFTUVOVCAqLykge1xyXG4gICAgICAgIGNvbnN0IGRpciA9IGZpbmREaXIobm9kZSwgJ21lbW8nKTtcclxuICAgICAgICBpZiAoIWRpciB8fCBzZWVuJDEuaGFzKG5vZGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2VlbiQxLmFkZChub2RlKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IG5vZGUuY29kZWdlbk5vZGUgfHxcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudE5vZGUuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZSAmJiBjb2RlZ2VuTm9kZS50eXBlID09PSAxMyAvKiBWTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub24tY29tcG9uZW50IHN1YiB0cmVlIHNob3VsZCBiZSB0dXJuZWQgaW50byBhIGJsb2NrXHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50YWdUeXBlICE9PSAxIC8qIENPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1ha2VCbG9jayhjb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBub2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoV0lUSF9NRU1PKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5leHAsXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHVuZGVmaW5lZCwgY29kZWdlbk5vZGUpLFxyXG4gICAgICAgICAgICAgICAgICAgIGBfY2FjaGVgLFxyXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZyhjb250ZXh0LmNhY2hlZCsrKVxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0KHByZWZpeElkZW50aWZpZXJzKSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIFtcclxuICAgICAgICAgICAgdHJhbnNmb3JtT25jZSxcclxuICAgICAgICAgICAgdHJhbnNmb3JtSWYsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybU1lbW8sXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybUZvcixcclxuICAgICAgICAgICAgLi4uKFt0cmFuc2Zvcm1GaWx0ZXJdICksXHJcbiAgICAgICAgICAgIC4uLigocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICA/IFt0cmFuc2Zvcm1FeHByZXNzaW9uXVxyXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1TbG90T3V0bGV0LFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1FbGVtZW50LFxyXG4gICAgICAgICAgICB0cmFja1Nsb3RTY29wZXMsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybVRleHRcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgb246IHRyYW5zZm9ybU9uLFxyXG4gICAgICAgICAgICBiaW5kOiB0cmFuc2Zvcm1CaW5kLFxyXG4gICAgICAgICAgICBtb2RlbDogdHJhbnNmb3JtTW9kZWxcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG59XHJcbi8vIHdlIG5hbWUgaXQgYGJhc2VDb21waWxlYCBzbyB0aGF0IGhpZ2hlciBvcmRlciBjb21waWxlcnMgbGlrZVxyXG4vLyBAdnVlL2NvbXBpbGVyLWRvbSBjYW4gZXhwb3J0IGBjb21waWxlYCB3aGlsZSByZS1leHBvcnRpbmcgZXZlcnl0aGluZyBlbHNlLlxyXG5mdW5jdGlvbiBiYXNlQ29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBvbkVycm9yID0gb3B0aW9ucy5vbkVycm9yIHx8IGRlZmF1bHRPbkVycm9yO1xyXG4gICAgY29uc3QgaXNNb2R1bGVNb2RlID0gb3B0aW9ucy5tb2RlID09PSAnbW9kdWxlJztcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAge1xyXG4gICAgICAgIGlmIChvcHRpb25zLnByZWZpeElkZW50aWZpZXJzID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIG9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NiAvKiBYX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlTW9kZSkge1xyXG4gICAgICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDcgLyogWF9NT0RVTEVfTU9ERV9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgcHJlZml4SWRlbnRpZmllcnMgPSAhdHJ1ZSA7XHJcbiAgICBpZiAob3B0aW9ucy5jYWNoZUhhbmRsZXJzKSB7XHJcbiAgICAgICAgb25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ4IC8qIFhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5zY29wZUlkICYmICFpc01vZHVsZU1vZGUpIHtcclxuICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDkgLyogWF9TQ09QRV9JRF9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3QgPSBpc1N0cmluZyh0ZW1wbGF0ZSkgPyBiYXNlUGFyc2UodGVtcGxhdGUsIG9wdGlvbnMpIDogdGVtcGxhdGU7XHJcbiAgICBjb25zdCBbbm9kZVRyYW5zZm9ybXMsIGRpcmVjdGl2ZVRyYW5zZm9ybXNdID0gZ2V0QmFzZVRyYW5zZm9ybVByZXNldCgpO1xyXG4gICAgdHJhbnNmb3JtKGFzdCwgZXh0ZW5kKHt9LCBvcHRpb25zLCB7XHJcbiAgICAgICAgcHJlZml4SWRlbnRpZmllcnMsXHJcbiAgICAgICAgbm9kZVRyYW5zZm9ybXM6IFtcclxuICAgICAgICAgICAgLi4ubm9kZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLm5vZGVUcmFuc2Zvcm1zIHx8IFtdKSAvLyB1c2VyIHRyYW5zZm9ybXNcclxuICAgICAgICBdLFxyXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXM6IGV4dGVuZCh7fSwgZGlyZWN0aXZlVHJhbnNmb3Jtcywgb3B0aW9ucy5kaXJlY3RpdmVUcmFuc2Zvcm1zIHx8IHt9IC8vIHVzZXIgdHJhbnNmb3Jtc1xyXG4gICAgICAgIClcclxuICAgIH0pKTtcclxuICAgIHJldHVybiBnZW5lcmF0ZShhc3QsIGV4dGVuZCh7fSwgb3B0aW9ucywge1xyXG4gICAgICAgIHByZWZpeElkZW50aWZpZXJzXHJcbiAgICB9KSk7XHJcbn1cblxuY29uc3Qgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSA9ICgpID0+ICh7IHByb3BzOiBbXSB9KTtcblxuZXhwb3J0IHsgQkFTRV9UUkFOU0lUSU9OLCBDQU1FTElaRSwgQ0FQSVRBTElaRSwgQ1JFQVRFX0JMT0NLLCBDUkVBVEVfQ09NTUVOVCwgQ1JFQVRFX0VMRU1FTlRfQkxPQ0ssIENSRUFURV9FTEVNRU5UX1ZOT0RFLCBDUkVBVEVfU0xPVFMsIENSRUFURV9TVEFUSUMsIENSRUFURV9URVhULCBDUkVBVEVfVk5PREUsIEZSQUdNRU5ULCBHVUFSRF9SRUFDVElWRV9QUk9QUywgSVNfTUVNT19TQU1FLCBJU19SRUYsIEtFRVBfQUxJVkUsIE1FUkdFX1BST1BTLCBOT1JNQUxJWkVfQ0xBU1MsIE5PUk1BTElaRV9QUk9QUywgTk9STUFMSVpFX1NUWUxFLCBPUEVOX0JMT0NLLCBQT1BfU0NPUEVfSUQsIFBVU0hfU0NPUEVfSUQsIFJFTkRFUl9MSVNULCBSRU5ERVJfU0xPVCwgUkVTT0xWRV9DT01QT05FTlQsIFJFU09MVkVfRElSRUNUSVZFLCBSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5ULCBSRVNPTFZFX0ZJTFRFUiwgU0VUX0JMT0NLX1RSQUNLSU5HLCBTVVNQRU5TRSwgVEVMRVBPUlQsIFRPX0RJU1BMQVlfU1RSSU5HLCBUT19IQU5ETEVSUywgVE9fSEFORExFUl9LRVksIFVOUkVGLCBXSVRIX0NUWCwgV0lUSF9ESVJFQ1RJVkVTLCBXSVRIX01FTU8sIGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZSwgYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uLCBhc3NlcnQsIGJhc2VDb21waWxlLCBiYXNlUGFyc2UsIGJ1aWxkRGlyZWN0aXZlQXJncywgYnVpbGRQcm9wcywgYnVpbGRTbG90cywgY2hlY2tDb21wYXRFbmFibGVkLCBjcmVhdGVBcnJheUV4cHJlc3Npb24sIGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uLCBjcmVhdGVCbG9ja1N0YXRlbWVudCwgY3JlYXRlQ2FjaGVFeHByZXNzaW9uLCBjcmVhdGVDYWxsRXhwcmVzc2lvbiwgY3JlYXRlQ29tcGlsZXJFcnJvciwgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uLCBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24sIGNyZWF0ZUZvckxvb3BQYXJhbXMsIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbiwgY3JlYXRlSWZTdGF0ZW1lbnQsIGNyZWF0ZUludGVycG9sYXRpb24sIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24sIGNyZWF0ZU9iamVjdFByb3BlcnR5LCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQsIGNyZWF0ZVJvb3QsIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbiwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbiwgY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybSwgY3JlYXRlVGVtcGxhdGVMaXRlcmFsLCBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0LCBjcmVhdGVWTm9kZUNhbGwsIGV4dHJhY3RJZGVudGlmaWVycywgZmluZERpciwgZmluZFByb3AsIGdlbmVyYXRlLCBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0LCBnZXRJbm5lclJhbmdlLCBnZXRNZW1vZWRWTm9kZUNhbGwsIGdldFZOb2RlQmxvY2tIZWxwZXIsIGdldFZOb2RlSGVscGVyLCBoYXNEeW5hbWljS2V5VkJpbmQsIGhhc1Njb3BlUmVmLCBoZWxwZXJOYW1lTWFwLCBpbmplY3RQcm9wLCBpc0J1aWx0SW5UeXBlLCBpc0NvcmVDb21wb25lbnQsIGlzRnVuY3Rpb25UeXBlLCBpc0luRGVzdHJ1Y3R1cmVBc3NpZ25tZW50LCBpc01lbWJlckV4cHJlc3Npb24sIGlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXIsIGlzTWVtYmVyRXhwcmVzc2lvbk5vZGUsIGlzUmVmZXJlbmNlZElkZW50aWZpZXIsIGlzU2ltcGxlSWRlbnRpZmllciwgaXNTbG90T3V0bGV0LCBpc1N0YXRpY0FyZ09mLCBpc1N0YXRpY0V4cCwgaXNTdGF0aWNQcm9wZXJ0eSwgaXNTdGF0aWNQcm9wZXJ0eUtleSwgaXNUZW1wbGF0ZU5vZGUsIGlzVGV4dCwgaXNWU2xvdCwgbG9jU3R1YiwgbWFrZUJsb2NrLCBub29wRGlyZWN0aXZlVHJhbnNmb3JtLCBwcm9jZXNzRXhwcmVzc2lvbiwgcHJvY2Vzc0ZvciwgcHJvY2Vzc0lmLCBwcm9jZXNzU2xvdE91dGxldCwgcmVnaXN0ZXJSdW50aW1lSGVscGVycywgcmVzb2x2ZUNvbXBvbmVudFR5cGUsIHRvVmFsaWRBc3NldElkLCB0cmFja1Nsb3RTY29wZXMsIHRyYWNrVkZvclNsb3RTY29wZXMsIHRyYW5zZm9ybSwgdHJhbnNmb3JtQmluZCwgdHJhbnNmb3JtRWxlbWVudCwgdHJhbnNmb3JtRXhwcmVzc2lvbiwgdHJhbnNmb3JtTW9kZWwsIHRyYW5zZm9ybU9uLCB0cmF2ZXJzZU5vZGUsIHdhbGtCbG9ja0RlY2xhcmF0aW9ucywgd2Fsa0Z1bmN0aW9uUGFyYW1zLCB3YWxrSWRlbnRpZmllcnMsIHdhcm5EZXByZWNhdGlvbiB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js ***!
|
||
\*************************************************************************/
|
||
/*! exports provided: generateCodeFrame, BASE_TRANSITION, CAMELIZE, CAPITALIZE, CREATE_BLOCK, CREATE_COMMENT, CREATE_ELEMENT_BLOCK, CREATE_ELEMENT_VNODE, CREATE_SLOTS, CREATE_STATIC, CREATE_TEXT, CREATE_VNODE, FRAGMENT, GUARD_REACTIVE_PROPS, IS_MEMO_SAME, IS_REF, KEEP_ALIVE, MERGE_PROPS, NORMALIZE_CLASS, NORMALIZE_PROPS, NORMALIZE_STYLE, OPEN_BLOCK, POP_SCOPE_ID, PUSH_SCOPE_ID, RENDER_LIST, RENDER_SLOT, RESOLVE_COMPONENT, RESOLVE_DIRECTIVE, RESOLVE_DYNAMIC_COMPONENT, RESOLVE_FILTER, SET_BLOCK_TRACKING, SUSPENSE, TELEPORT, TO_DISPLAY_STRING, TO_HANDLERS, TO_HANDLER_KEY, UNREF, WITH_CTX, WITH_DIRECTIVES, WITH_MEMO, advancePositionWithClone, advancePositionWithMutation, assert, baseCompile, baseParse, buildDirectiveArgs, buildProps, buildSlots, checkCompatEnabled, createArrayExpression, createAssignmentExpression, createBlockStatement, createCacheExpression, createCallExpression, createCompilerError, createCompoundExpression, createConditionalExpression, createForLoopParams, createFunctionExpression, createIfStatement, createInterpolation, createObjectExpression, createObjectProperty, createReturnStatement, createRoot, createSequenceExpression, createSimpleExpression, createStructuralDirectiveTransform, createTemplateLiteral, createTransformContext, createVNodeCall, extractIdentifiers, findDir, findProp, generate, getBaseTransformPreset, getInnerRange, getMemoedVNodeCall, getVNodeBlockHelper, getVNodeHelper, hasDynamicKeyVBind, hasScopeRef, helperNameMap, injectProp, isBuiltInType, isCoreComponent, isFunctionType, isInDestructureAssignment, isMemberExpression, isMemberExpressionBrowser, isMemberExpressionNode, isReferencedIdentifier, isSimpleIdentifier, isSlotOutlet, isStaticArgOf, isStaticExp, isStaticProperty, isStaticPropertyKey, isTemplateNode, isText, isVSlot, locStub, makeBlock, noopDirectiveTransform, processExpression, processFor, processIf, processSlotOutlet, registerRuntimeHelpers, resolveComponentType, toValidAssetId, trackSlotScopes, trackVForSlotScopes, transform, transformBind, transformElement, transformExpression, transformModel, transformOn, traverseNode, walkBlockDeclarations, walkFunctionParams, walkIdentifiers, warnDeprecation, DOMDirectiveTransforms, DOMNodeTransforms, TRANSITION, TRANSITION_GROUP, V_MODEL_CHECKBOX, V_MODEL_DYNAMIC, V_MODEL_RADIO, V_MODEL_SELECT, V_MODEL_TEXT, V_ON_WITH_KEYS, V_ON_WITH_MODIFIERS, V_SHOW, compile, createDOMCompilerError, parse, parserOptions, transformStyle */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DOMDirectiveTransforms\", function() { return DOMDirectiveTransforms; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DOMNodeTransforms\", function() { return DOMNodeTransforms; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TRANSITION\", function() { return TRANSITION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TRANSITION_GROUP\", function() { return TRANSITION_GROUP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"V_MODEL_CHECKBOX\", function() { return V_MODEL_CHECKBOX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"V_MODEL_DYNAMIC\", function() { return V_MODEL_DYNAMIC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"V_MODEL_RADIO\", function() { return V_MODEL_RADIO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"V_MODEL_SELECT\", function() { return V_MODEL_SELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"V_MODEL_TEXT\", function() { return V_MODEL_TEXT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"V_ON_WITH_KEYS\", function() { return V_ON_WITH_KEYS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"V_ON_WITH_MODIFIERS\", function() { return V_ON_WITH_MODIFIERS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"V_SHOW\", function() { return V_SHOW; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compile\", function() { return compile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDOMCompilerError\", function() { return createDOMCompilerError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parserOptions\", function() { return parserOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformStyle\", function() { return transformStyle; });\n/* harmony import */ var _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vue/compiler-core */ \"./node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateCodeFrame\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"generateCodeFrame\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BASE_TRANSITION\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"BASE_TRANSITION\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CAMELIZE\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CAMELIZE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CAPITALIZE\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CAPITALIZE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CREATE_BLOCK\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CREATE_BLOCK\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CREATE_COMMENT\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CREATE_COMMENT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CREATE_ELEMENT_BLOCK\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CREATE_ELEMENT_BLOCK\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CREATE_ELEMENT_VNODE\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CREATE_ELEMENT_VNODE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CREATE_SLOTS\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CREATE_SLOTS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CREATE_STATIC\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CREATE_STATIC\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CREATE_TEXT\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CREATE_TEXT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CREATE_VNODE\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"CREATE_VNODE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FRAGMENT\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"FRAGMENT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GUARD_REACTIVE_PROPS\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"GUARD_REACTIVE_PROPS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IS_MEMO_SAME\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"IS_MEMO_SAME\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IS_REF\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"IS_REF\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KEEP_ALIVE\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"KEEP_ALIVE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MERGE_PROPS\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"MERGE_PROPS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NORMALIZE_CLASS\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"NORMALIZE_CLASS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NORMALIZE_PROPS\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"NORMALIZE_PROPS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NORMALIZE_STYLE\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"NORMALIZE_STYLE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OPEN_BLOCK\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"OPEN_BLOCK\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"POP_SCOPE_ID\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"POP_SCOPE_ID\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PUSH_SCOPE_ID\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"PUSH_SCOPE_ID\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RENDER_LIST\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"RENDER_LIST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RENDER_SLOT\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"RENDER_SLOT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RESOLVE_COMPONENT\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"RESOLVE_COMPONENT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RESOLVE_DIRECTIVE\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"RESOLVE_DIRECTIVE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RESOLVE_DYNAMIC_COMPONENT\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"RESOLVE_DYNAMIC_COMPONENT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RESOLVE_FILTER\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"RESOLVE_FILTER\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SET_BLOCK_TRACKING\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"SET_BLOCK_TRACKING\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SUSPENSE\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"SUSPENSE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TELEPORT\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"TELEPORT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TO_DISPLAY_STRING\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"TO_DISPLAY_STRING\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TO_HANDLERS\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"TO_HANDLERS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TO_HANDLER_KEY\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"TO_HANDLER_KEY\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UNREF\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"UNREF\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WITH_CTX\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"WITH_CTX\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WITH_DIRECTIVES\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"WITH_DIRECTIVES\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WITH_MEMO\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"WITH_MEMO\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"advancePositionWithClone\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"advancePositionWithClone\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"advancePositionWithMutation\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"advancePositionWithMutation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assert\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"assert\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"baseCompile\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"baseCompile\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"baseParse\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"baseParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildDirectiveArgs\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"buildDirectiveArgs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildProps\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"buildProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildSlots\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"buildSlots\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"checkCompatEnabled\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"checkCompatEnabled\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createArrayExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createArrayExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAssignmentExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createAssignmentExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createBlockStatement\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createBlockStatement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createCacheExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCacheExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createCallExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCallExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createCompilerError\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCompilerError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createCompoundExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCompoundExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createConditionalExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createConditionalExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createForLoopParams\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createForLoopParams\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createFunctionExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createFunctionExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createIfStatement\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createIfStatement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createInterpolation\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createInterpolation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createObjectExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createObjectExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createObjectProperty\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createObjectProperty\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createReturnStatement\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createReturnStatement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createRoot\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createRoot\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSequenceExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSequenceExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSimpleExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createStructuralDirectiveTransform\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createStructuralDirectiveTransform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTemplateLiteral\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createTemplateLiteral\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTransformContext\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createTransformContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVNodeCall\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createVNodeCall\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extractIdentifiers\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"extractIdentifiers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findDir\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"findDir\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findProp\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"findProp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"generate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBaseTransformPreset\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"getBaseTransformPreset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInnerRange\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"getInnerRange\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getMemoedVNodeCall\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"getMemoedVNodeCall\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVNodeBlockHelper\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"getVNodeBlockHelper\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVNodeHelper\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"getVNodeHelper\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hasDynamicKeyVBind\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"hasDynamicKeyVBind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hasScopeRef\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"hasScopeRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"helperNameMap\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"helperNameMap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"injectProp\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"injectProp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isBuiltInType\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isBuiltInType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isCoreComponent\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isCoreComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunctionType\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isFunctionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInDestructureAssignment\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isInDestructureAssignment\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isMemberExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isMemberExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isMemberExpressionBrowser\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isMemberExpressionBrowser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isMemberExpressionNode\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isMemberExpressionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isReferencedIdentifier\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isReferencedIdentifier\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSimpleIdentifier\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isSimpleIdentifier\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSlotOutlet\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isSlotOutlet\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isStaticArgOf\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isStaticArgOf\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isStaticExp\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isStaticExp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isStaticProperty\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isStaticProperty\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isStaticPropertyKey\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isStaticPropertyKey\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTemplateNode\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isTemplateNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isText\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isText\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isVSlot\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isVSlot\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"locStub\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"locStub\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"makeBlock\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"makeBlock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"noopDirectiveTransform\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"noopDirectiveTransform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"processExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"processExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"processFor\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"processFor\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"processIf\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"processIf\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"processSlotOutlet\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"processSlotOutlet\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerRuntimeHelpers\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"registerRuntimeHelpers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveComponentType\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"resolveComponentType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toValidAssetId\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"toValidAssetId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"trackSlotScopes\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"trackSlotScopes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"trackVForSlotScopes\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"trackVForSlotScopes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"transform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transformBind\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"transformBind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transformElement\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"transformElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transformExpression\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"transformExpression\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transformModel\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"transformModel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transformOn\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"transformOn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"traverseNode\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"traverseNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"walkBlockDeclarations\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"walkBlockDeclarations\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"walkFunctionParams\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"walkFunctionParams\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"walkIdentifiers\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"walkIdentifiers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"warnDeprecation\", function() { return _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"warnDeprecation\"]; });\n\n/* harmony import */ var _vue_shared__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vue/shared */ \"./node_modules/@vue/shared/dist/shared.esm-bundler.js\");\n\n\n\n\nconst V_MODEL_RADIO = Symbol(( true) ? `vModelRadio` : undefined);\r\nconst V_MODEL_CHECKBOX = Symbol(( true) ? `vModelCheckbox` : undefined);\r\nconst V_MODEL_TEXT = Symbol(( true) ? `vModelText` : undefined);\r\nconst V_MODEL_SELECT = Symbol(( true) ? `vModelSelect` : undefined);\r\nconst V_MODEL_DYNAMIC = Symbol(( true) ? `vModelDynamic` : undefined);\r\nconst V_ON_WITH_MODIFIERS = Symbol(( true) ? `vOnModifiersGuard` : undefined);\r\nconst V_ON_WITH_KEYS = Symbol(( true) ? `vOnKeysGuard` : undefined);\r\nconst V_SHOW = Symbol(( true) ? `vShow` : undefined);\r\nconst TRANSITION = Symbol(( true) ? `Transition` : undefined);\r\nconst TRANSITION_GROUP = Symbol(( true) ? `TransitionGroup` : undefined);\r\nObject(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"registerRuntimeHelpers\"])({\r\n [V_MODEL_RADIO]: `vModelRadio`,\r\n [V_MODEL_CHECKBOX]: `vModelCheckbox`,\r\n [V_MODEL_TEXT]: `vModelText`,\r\n [V_MODEL_SELECT]: `vModelSelect`,\r\n [V_MODEL_DYNAMIC]: `vModelDynamic`,\r\n [V_ON_WITH_MODIFIERS]: `withModifiers`,\r\n [V_ON_WITH_KEYS]: `withKeys`,\r\n [V_SHOW]: `vShow`,\r\n [TRANSITION]: `Transition`,\r\n [TRANSITION_GROUP]: `TransitionGroup`\r\n});\n\n/* eslint-disable no-restricted-globals */\r\nlet decoder;\r\nfunction decodeHtmlBrowser(raw, asAttr = false) {\r\n if (!decoder) {\r\n decoder = document.createElement('div');\r\n }\r\n if (asAttr) {\r\n decoder.innerHTML = `<div foo=\"${raw.replace(/\"/g, '"')}\">`;\r\n return decoder.children[0].getAttribute('foo');\r\n }\r\n else {\r\n decoder.innerHTML = raw;\r\n return decoder.textContent;\r\n }\r\n}\n\nconst isRawTextContainer = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"makeMap\"])('style,iframe,script,noscript', true);\r\nconst parserOptions = {\r\n isVoidTag: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isVoidTag\"],\r\n isNativeTag: tag => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isHTMLTag\"])(tag) || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSVGTag\"])(tag),\r\n isPreTag: tag => tag === 'pre',\r\n decodeEntities: decodeHtmlBrowser ,\r\n isBuiltInComponent: (tag) => {\r\n if (Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isBuiltInType\"])(tag, `Transition`)) {\r\n return TRANSITION;\r\n }\r\n else if (Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isBuiltInType\"])(tag, `TransitionGroup`)) {\r\n return TRANSITION_GROUP;\r\n }\r\n },\r\n // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher\r\n getNamespace(tag, parent) {\r\n let ns = parent ? parent.ns : 0 /* HTML */;\r\n if (parent && ns === 2 /* MATH_ML */) {\r\n if (parent.tag === 'annotation-xml') {\r\n if (tag === 'svg') {\r\n return 1 /* SVG */;\r\n }\r\n if (parent.props.some(a => a.type === 6 /* ATTRIBUTE */ &&\r\n a.name === 'encoding' &&\r\n a.value != null &&\r\n (a.value.content === 'text/html' ||\r\n a.value.content === 'application/xhtml+xml'))) {\r\n ns = 0 /* HTML */;\r\n }\r\n }\r\n else if (/^m(?:[ions]|text)$/.test(parent.tag) &&\r\n tag !== 'mglyph' &&\r\n tag !== 'malignmark') {\r\n ns = 0 /* HTML */;\r\n }\r\n }\r\n else if (parent && ns === 1 /* SVG */) {\r\n if (parent.tag === 'foreignObject' ||\r\n parent.tag === 'desc' ||\r\n parent.tag === 'title') {\r\n ns = 0 /* HTML */;\r\n }\r\n }\r\n if (ns === 0 /* HTML */) {\r\n if (tag === 'svg') {\r\n return 1 /* SVG */;\r\n }\r\n if (tag === 'math') {\r\n return 2 /* MATH_ML */;\r\n }\r\n }\r\n return ns;\r\n },\r\n // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments\r\n getTextMode({ tag, ns }) {\r\n if (ns === 0 /* HTML */) {\r\n if (tag === 'textarea' || tag === 'title') {\r\n return 1 /* RCDATA */;\r\n }\r\n if (isRawTextContainer(tag)) {\r\n return 2 /* RAWTEXT */;\r\n }\r\n }\r\n return 0 /* DATA */;\r\n }\r\n};\n\n// Parse inline CSS strings for static style attributes into an object.\r\n// This is a NodeTransform since it works on the static `style` attribute and\r\n// converts it into a dynamic equivalent:\r\n// style=\"color: red\" -> :style='{ \"color\": \"red\" }'\r\n// It is then processed by `transformElement` and included in the generated\r\n// props.\r\nconst transformStyle = node => {\r\n if (node.type === 1 /* ELEMENT */) {\r\n node.props.forEach((p, i) => {\r\n if (p.type === 6 /* ATTRIBUTE */ && p.name === 'style' && p.value) {\r\n // replace p with an expression node\r\n node.props[i] = {\r\n type: 7 /* DIRECTIVE */,\r\n name: `bind`,\r\n arg: Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"])(`style`, true, p.loc),\r\n exp: parseInlineCSS(p.value.content, p.loc),\r\n modifiers: [],\r\n loc: p.loc\r\n };\r\n }\r\n });\r\n }\r\n};\r\nconst parseInlineCSS = (cssText, loc) => {\r\n const normalized = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"parseStringStyle\"])(cssText);\r\n return Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"])(JSON.stringify(normalized), false, loc, 3 /* CAN_STRINGIFY */);\r\n};\n\nfunction createDOMCompilerError(code, loc) {\r\n return Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCompilerError\"])(code, loc, true ? DOMErrorMessages : undefined);\r\n}\r\nconst DOMErrorMessages = {\r\n [50 /* X_V_HTML_NO_EXPRESSION */]: `v-html is missing expression.`,\r\n [51 /* X_V_HTML_WITH_CHILDREN */]: `v-html will override element children.`,\r\n [52 /* X_V_TEXT_NO_EXPRESSION */]: `v-text is missing expression.`,\r\n [53 /* X_V_TEXT_WITH_CHILDREN */]: `v-text will override element children.`,\r\n [54 /* X_V_MODEL_ON_INVALID_ELEMENT */]: `v-model can only be used on <input>, <textarea> and <select> elements.`,\r\n [55 /* X_V_MODEL_ARG_ON_ELEMENT */]: `v-model argument is not supported on plain elements.`,\r\n [56 /* X_V_MODEL_ON_FILE_INPUT_ELEMENT */]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,\r\n [57 /* X_V_MODEL_UNNECESSARY_VALUE */]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,\r\n [58 /* X_V_SHOW_NO_EXPRESSION */]: `v-show is missing expression.`,\r\n [59 /* X_TRANSITION_INVALID_CHILDREN */]: `<Transition> expects exactly one child element or component.`,\r\n [60 /* X_IGNORED_SIDE_EFFECT_TAG */]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`\r\n};\n\nconst transformVHtml = (dir, node, context) => {\r\n const { exp, loc } = dir;\r\n if (!exp) {\r\n context.onError(createDOMCompilerError(50 /* X_V_HTML_NO_EXPRESSION */, loc));\r\n }\r\n if (node.children.length) {\r\n context.onError(createDOMCompilerError(51 /* X_V_HTML_WITH_CHILDREN */, loc));\r\n node.children.length = 0;\r\n }\r\n return {\r\n props: [\r\n Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createObjectProperty\"])(Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"])(`innerHTML`, true, loc), exp || Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"])('', true))\r\n ]\r\n };\r\n};\n\nconst transformVText = (dir, node, context) => {\r\n const { exp, loc } = dir;\r\n if (!exp) {\r\n context.onError(createDOMCompilerError(52 /* X_V_TEXT_NO_EXPRESSION */, loc));\r\n }\r\n if (node.children.length) {\r\n context.onError(createDOMCompilerError(53 /* X_V_TEXT_WITH_CHILDREN */, loc));\r\n node.children.length = 0;\r\n }\r\n return {\r\n props: [\r\n Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createObjectProperty\"])(Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"])(`textContent`, true), exp\r\n ? Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCallExpression\"])(context.helperString(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"TO_DISPLAY_STRING\"]), [exp], loc)\r\n : Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"])('', true))\r\n ]\r\n };\r\n};\n\nconst transformModel = (dir, node, context) => {\r\n const baseResult = Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"transformModel\"])(dir, node, context);\r\n // base transform has errors OR component v-model (only need props)\r\n if (!baseResult.props.length || node.tagType === 1 /* COMPONENT */) {\r\n return baseResult;\r\n }\r\n if (dir.arg) {\r\n context.onError(createDOMCompilerError(55 /* X_V_MODEL_ARG_ON_ELEMENT */, dir.arg.loc));\r\n }\r\n function checkDuplicatedValue() {\r\n const value = Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"findProp\"])(node, 'value');\r\n if (value) {\r\n context.onError(createDOMCompilerError(57 /* X_V_MODEL_UNNECESSARY_VALUE */, value.loc));\r\n }\r\n }\r\n const { tag } = node;\r\n const isCustomElement = context.isCustomElement(tag);\r\n if (tag === 'input' ||\r\n tag === 'textarea' ||\r\n tag === 'select' ||\r\n isCustomElement) {\r\n let directiveToUse = V_MODEL_TEXT;\r\n let isInvalidType = false;\r\n if (tag === 'input' || isCustomElement) {\r\n const type = Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"findProp\"])(node, `type`);\r\n if (type) {\r\n if (type.type === 7 /* DIRECTIVE */) {\r\n // :type=\"foo\"\r\n directiveToUse = V_MODEL_DYNAMIC;\r\n }\r\n else if (type.value) {\r\n switch (type.value.content) {\r\n case 'radio':\r\n directiveToUse = V_MODEL_RADIO;\r\n break;\r\n case 'checkbox':\r\n directiveToUse = V_MODEL_CHECKBOX;\r\n break;\r\n case 'file':\r\n isInvalidType = true;\r\n context.onError(createDOMCompilerError(56 /* X_V_MODEL_ON_FILE_INPUT_ELEMENT */, dir.loc));\r\n break;\r\n default:\r\n // text type\r\n ( true) && checkDuplicatedValue();\r\n break;\r\n }\r\n }\r\n }\r\n else if (Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"hasDynamicKeyVBind\"])(node)) {\r\n // element has bindings with dynamic keys, which can possibly contain\r\n // \"type\".\r\n directiveToUse = V_MODEL_DYNAMIC;\r\n }\r\n else {\r\n // text type\r\n ( true) && checkDuplicatedValue();\r\n }\r\n }\r\n else if (tag === 'select') {\r\n directiveToUse = V_MODEL_SELECT;\r\n }\r\n else {\r\n // textarea\r\n ( true) && checkDuplicatedValue();\r\n }\r\n // inject runtime directive\r\n // by returning the helper symbol via needRuntime\r\n // the import will replaced a resolveDirective call.\r\n if (!isInvalidType) {\r\n baseResult.needRuntime = context.helper(directiveToUse);\r\n }\r\n }\r\n else {\r\n context.onError(createDOMCompilerError(54 /* X_V_MODEL_ON_INVALID_ELEMENT */, dir.loc));\r\n }\r\n // native vmodel doesn't need the `modelValue` props since they are also\r\n // passed to the runtime as `binding.value`. removing it reduces code size.\r\n baseResult.props = baseResult.props.filter(p => !(p.key.type === 4 /* SIMPLE_EXPRESSION */ &&\r\n p.key.content === 'modelValue'));\r\n return baseResult;\r\n};\n\nconst isEventOptionModifier = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"makeMap\"])(`passive,once,capture`);\r\nconst isNonKeyModifier = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"makeMap\"])(\r\n// event propagation management\r\n`stop,prevent,self,` +\r\n // system modifiers + exact\r\n `ctrl,shift,alt,meta,exact,` +\r\n // mouse\r\n `middle`);\r\n// left & right could be mouse or key modifiers based on event type\r\nconst maybeKeyModifier = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"makeMap\"])('left,right');\r\nconst isKeyboardEvent = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"makeMap\"])(`onkeyup,onkeydown,onkeypress`, true);\r\nconst resolveModifiers = (key, modifiers, context, loc) => {\r\n const keyModifiers = [];\r\n const nonKeyModifiers = [];\r\n const eventOptionModifiers = [];\r\n for (let i = 0; i < modifiers.length; i++) {\r\n const modifier = modifiers[i];\r\n if (modifier === 'native' &&\r\n Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"checkCompatEnabled\"])(\"COMPILER_V_ON_NATIVE\" /* COMPILER_V_ON_NATIVE */, context, loc)) {\r\n eventOptionModifiers.push(modifier);\r\n }\r\n else if (isEventOptionModifier(modifier)) {\r\n // eventOptionModifiers: modifiers for addEventListener() options,\r\n // e.g. .passive & .capture\r\n eventOptionModifiers.push(modifier);\r\n }\r\n else {\r\n // runtimeModifiers: modifiers that needs runtime guards\r\n if (maybeKeyModifier(modifier)) {\r\n if (Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isStaticExp\"])(key)) {\r\n if (isKeyboardEvent(key.content)) {\r\n keyModifiers.push(modifier);\r\n }\r\n else {\r\n nonKeyModifiers.push(modifier);\r\n }\r\n }\r\n else {\r\n keyModifiers.push(modifier);\r\n nonKeyModifiers.push(modifier);\r\n }\r\n }\r\n else {\r\n if (isNonKeyModifier(modifier)) {\r\n nonKeyModifiers.push(modifier);\r\n }\r\n else {\r\n keyModifiers.push(modifier);\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n keyModifiers,\r\n nonKeyModifiers,\r\n eventOptionModifiers\r\n };\r\n};\r\nconst transformClick = (key, event) => {\r\n const isStaticClick = Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isStaticExp\"])(key) && key.content.toLowerCase() === 'onclick';\r\n return isStaticClick\r\n ? Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"])(event, true)\r\n : key.type !== 4 /* SIMPLE_EXPRESSION */\r\n ? Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCompoundExpression\"])([\r\n `(`,\r\n key,\r\n `) === \"onClick\" ? \"${event}\" : (`,\r\n key,\r\n `)`\r\n ])\r\n : key;\r\n};\r\nconst transformOn = (dir, node, context) => {\r\n return Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"transformOn\"])(dir, node, context, baseResult => {\r\n const { modifiers } = dir;\r\n if (!modifiers.length)\r\n return baseResult;\r\n let { key, value: handlerExp } = baseResult.props[0];\r\n const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);\r\n // normalize click.right and click.middle since they don't actually fire\r\n if (nonKeyModifiers.includes('right')) {\r\n key = transformClick(key, `onContextmenu`);\r\n }\r\n if (nonKeyModifiers.includes('middle')) {\r\n key = transformClick(key, `onMouseup`);\r\n }\r\n if (nonKeyModifiers.length) {\r\n handlerExp = Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCallExpression\"])(context.helper(V_ON_WITH_MODIFIERS), [\r\n handlerExp,\r\n JSON.stringify(nonKeyModifiers)\r\n ]);\r\n }\r\n if (keyModifiers.length &&\r\n // if event name is dynamic, always wrap with keys guard\r\n (!Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isStaticExp\"])(key) || isKeyboardEvent(key.content))) {\r\n handlerExp = Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCallExpression\"])(context.helper(V_ON_WITH_KEYS), [\r\n handlerExp,\r\n JSON.stringify(keyModifiers)\r\n ]);\r\n }\r\n if (eventOptionModifiers.length) {\r\n const modifierPostfix = eventOptionModifiers.map(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"capitalize\"]).join('');\r\n key = Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"isStaticExp\"])(key)\r\n ? Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleExpression\"])(`${key.content}${modifierPostfix}`, true)\r\n : Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createCompoundExpression\"])([`(`, key, `) + \"${modifierPostfix}\"`]);\r\n }\r\n return {\r\n props: [Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"createObjectProperty\"])(key, handlerExp)]\r\n };\r\n });\r\n};\n\nconst transformShow = (dir, node, context) => {\r\n const { exp, loc } = dir;\r\n if (!exp) {\r\n context.onError(createDOMCompilerError(58 /* X_V_SHOW_NO_EXPRESSION */, loc));\r\n }\r\n return {\r\n props: [],\r\n needRuntime: context.helper(V_SHOW)\r\n };\r\n};\n\nconst warnTransitionChildren = (node, context) => {\r\n if (node.type === 1 /* ELEMENT */ &&\r\n node.tagType === 1 /* COMPONENT */) {\r\n const component = context.isBuiltInComponent(node.tag);\r\n if (component === TRANSITION) {\r\n return () => {\r\n if (node.children.length && hasMultipleChildren(node)) {\r\n context.onError(createDOMCompilerError(59 /* X_TRANSITION_INVALID_CHILDREN */, {\r\n start: node.children[0].loc.start,\r\n end: node.children[node.children.length - 1].loc.end,\r\n source: ''\r\n }));\r\n }\r\n };\r\n }\r\n }\r\n};\r\nfunction hasMultipleChildren(node) {\r\n // #1352 filter out potential comment nodes.\r\n const children = (node.children = node.children.filter(c => c.type !== 3 /* COMMENT */ &&\r\n !(c.type === 2 /* TEXT */ && !c.content.trim())));\r\n const child = children[0];\r\n return (children.length !== 1 ||\r\n child.type === 11 /* FOR */ ||\r\n (child.type === 9 /* IF */ && child.branches.some(hasMultipleChildren)));\r\n}\n\nconst ignoreSideEffectTags = (node, context) => {\r\n if (node.type === 1 /* ELEMENT */ &&\r\n node.tagType === 0 /* ELEMENT */ &&\r\n (node.tag === 'script' || node.tag === 'style')) {\r\n context.onError(createDOMCompilerError(60 /* X_IGNORED_SIDE_EFFECT_TAG */, node.loc));\r\n context.removeNode();\r\n }\r\n};\n\nconst DOMNodeTransforms = [\r\n transformStyle,\r\n ...(( true) ? [warnTransitionChildren] : undefined)\r\n];\r\nconst DOMDirectiveTransforms = {\r\n cloak: _vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"noopDirectiveTransform\"],\r\n html: transformVHtml,\r\n text: transformVText,\r\n model: transformModel,\r\n on: transformOn,\r\n show: transformShow\r\n};\r\nfunction compile(template, options = {}) {\r\n return Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"baseCompile\"])(template, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, parserOptions, options, {\r\n nodeTransforms: [\r\n // ignore <script> and <tag>\r\n // this is not put inside DOMNodeTransforms because that list is used\r\n // by compiler-ssr to generate vnode fallback branches\r\n ignoreSideEffectTags,\r\n ...DOMNodeTransforms,\r\n ...(options.nodeTransforms || [])\r\n ],\r\n directiveTransforms: Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, DOMDirectiveTransforms, options.directiveTransforms || {}),\r\n transformHoist: null \r\n }));\r\n}\r\nfunction parse(template, options = {}) {\r\n return Object(_vue_compiler_core__WEBPACK_IMPORTED_MODULE_0__[\"baseParse\"])(template, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, parserOptions, options));\r\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1kb20vZGlzdC9jb21waWxlci1kb20uZXNtLWJ1bmRsZXIuanM/ZWU1MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrWTtBQUMvVjtBQUN5RTs7QUFFNUcsOEJBQThCLEtBQXFDLG9CQUFvQixTQUFFO0FBQ3pGLGlDQUFpQyxLQUFxQyx1QkFBdUIsU0FBRTtBQUMvRiw2QkFBNkIsS0FBcUMsbUJBQW1CLFNBQUU7QUFDdkYsK0JBQStCLEtBQXFDLHFCQUFxQixTQUFFO0FBQzNGLGdDQUFnQyxLQUFxQyxzQkFBc0IsU0FBRTtBQUM3RixvQ0FBb0MsS0FBcUMsMEJBQTBCLFNBQUU7QUFDckcsK0JBQStCLEtBQXFDLHFCQUFxQixTQUFFO0FBQzNGLHVCQUF1QixLQUFxQyxjQUFjLFNBQUU7QUFDNUUsMkJBQTJCLEtBQXFDLG1CQUFtQixTQUFFO0FBQ3JGLGlDQUFpQyxLQUFxQyx3QkFBd0IsU0FBRTtBQUNoRyxpRkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLHlCQUF5QixHQUFHO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlDQUF5QywyREFBTztBQUNoRDtBQUNBLElBQUksZ0VBQVM7QUFDYix3QkFBd0IsNkRBQVMsU0FBUyw0REFBUTtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdFQUFhO0FBQ3pCO0FBQ0E7QUFDQSxpQkFBaUIsd0VBQWE7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsaUJBQWlCLFVBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsaUJBQWlCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGlGQUFzQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixvRUFBZ0I7QUFDdkMsV0FBVyxpRkFBc0I7QUFDakM7O0FBRUE7QUFDQSxXQUFXLDhFQUFtQixZQUFZLEtBQWdELHNCQUFzQixTQUFTO0FBQ3pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwrRUFBb0IsQ0FBQyxpRkFBc0IsaUNBQWlDLGlGQUFzQjtBQUM5RztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwrRUFBb0IsQ0FBQyxpRkFBc0I7QUFDdkQsa0JBQWtCLCtFQUFvQixzQkFBc0Isb0VBQWlCO0FBQzdFLGtCQUFrQixpRkFBc0I7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLHlFQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG1FQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsbUVBQVE7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsS0FBcUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkVBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0Q0FBNEMsMkRBQU87QUFDbkQsdUNBQXVDLDJEQUFPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLDJEQUFPO0FBQzlDLHNDQUFzQywyREFBTztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBLFlBQVksNkVBQWtCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNFQUFXO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsc0VBQVc7QUFDckM7QUFDQSxVQUFVLGlGQUFzQjtBQUNoQztBQUNBLGNBQWMsbUZBQXdCO0FBQ3RDO0FBQ0E7QUFDQSxzQ0FBc0MsTUFBTTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHNFQUFhO0FBQ3hCLGVBQWUsWUFBWTtBQUMzQjtBQUNBO0FBQ0EsYUFBYSx5QkFBeUI7QUFDdEMsZUFBZSxzREFBc0Q7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwrRUFBb0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxzRUFBVztBQUN6Qix5QkFBeUIsK0VBQW9CO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsc0RBQVU7QUFDdkUsa0JBQWtCLHNFQUFXO0FBQzdCLGtCQUFrQixpRkFBc0IsSUFBSSxZQUFZLEVBQUUsZ0JBQWdCO0FBQzFFLGtCQUFrQixtRkFBd0Isb0JBQW9CLGdCQUFnQjtBQUM5RTtBQUNBO0FBQ0Esb0JBQW9CLCtFQUFvQjtBQUN4QztBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDLCtCQUErQixTQUFFO0FBQy9FO0FBQ0E7QUFDQSxXQUFXLHlFQUFzQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkMsV0FBVyxzRUFBVyxXQUFXLDBEQUFNLEdBQUc7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwwREFBTSxHQUFHLDJEQUEyRDtBQUNqRztBQUNBLEtBQUs7QUFDTDtBQUNBLHFDQUFxQztBQUNyQyxXQUFXLG9FQUFTLFdBQVcsMERBQU0sR0FBRztBQUN4Qzs7QUFFdVIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1kb20vZGlzdC9jb21waWxlci1kb20uZXNtLWJ1bmRsZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlclJ1bnRpbWVIZWxwZXJzLCBpc0J1aWx0SW5UeXBlLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uLCBjcmVhdGVDb21waWxlckVycm9yLCBjcmVhdGVPYmplY3RQcm9wZXJ0eSwgY3JlYXRlQ2FsbEV4cHJlc3Npb24sIFRPX0RJU1BMQVlfU1RSSU5HLCB0cmFuc2Zvcm1Nb2RlbCBhcyB0cmFuc2Zvcm1Nb2RlbCQxLCBmaW5kUHJvcCwgaGFzRHluYW1pY0tleVZCaW5kLCB0cmFuc2Zvcm1PbiBhcyB0cmFuc2Zvcm1PbiQxLCBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24sIGlzU3RhdGljRXhwLCBjaGVja0NvbXBhdEVuYWJsZWQsIG5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0sIGJhc2VDb21waWxlLCBiYXNlUGFyc2UgfSBmcm9tICdAdnVlL2NvbXBpbGVyLWNvcmUnO1xuZXhwb3J0ICogZnJvbSAnQHZ1ZS9jb21waWxlci1jb3JlJztcbmltcG9ydCB7IGlzVm9pZFRhZywgaXNIVE1MVGFnLCBpc1NWR1RhZywgbWFrZU1hcCwgcGFyc2VTdHJpbmdTdHlsZSwgY2FwaXRhbGl6ZSwgZXh0ZW5kIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5jb25zdCBWX01PREVMX1JBRElPID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxSYWRpb2AgOiBgYCk7XHJcbmNvbnN0IFZfTU9ERUxfQ0hFQ0tCT1ggPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbENoZWNrYm94YCA6IGBgKTtcclxuY29uc3QgVl9NT0RFTF9URVhUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxUZXh0YCA6IGBgKTtcclxuY29uc3QgVl9NT0RFTF9TRUxFQ1QgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbFNlbGVjdGAgOiBgYCk7XHJcbmNvbnN0IFZfTU9ERUxfRFlOQU1JQyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsRHluYW1pY2AgOiBgYCk7XHJcbmNvbnN0IFZfT05fV0lUSF9NT0RJRklFUlMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZPbk1vZGlmaWVyc0d1YXJkYCA6IGBgKTtcclxuY29uc3QgVl9PTl9XSVRIX0tFWVMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZPbktleXNHdWFyZGAgOiBgYCk7XHJcbmNvbnN0IFZfU0hPVyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdlNob3dgIDogYGApO1xyXG5jb25zdCBUUkFOU0lUSU9OID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBUcmFuc2l0aW9uYCA6IGBgKTtcclxuY29uc3QgVFJBTlNJVElPTl9HUk9VUCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgVHJhbnNpdGlvbkdyb3VwYCA6IGBgKTtcclxucmVnaXN0ZXJSdW50aW1lSGVscGVycyh7XHJcbiAgICBbVl9NT0RFTF9SQURJT106IGB2TW9kZWxSYWRpb2AsXHJcbiAgICBbVl9NT0RFTF9DSEVDS0JPWF06IGB2TW9kZWxDaGVja2JveGAsXHJcbiAgICBbVl9NT0RFTF9URVhUXTogYHZNb2RlbFRleHRgLFxyXG4gICAgW1ZfTU9ERUxfU0VMRUNUXTogYHZNb2RlbFNlbGVjdGAsXHJcbiAgICBbVl9NT0RFTF9EWU5BTUlDXTogYHZNb2RlbER5bmFtaWNgLFxyXG4gICAgW1ZfT05fV0lUSF9NT0RJRklFUlNdOiBgd2l0aE1vZGlmaWVyc2AsXHJcbiAgICBbVl9PTl9XSVRIX0tFWVNdOiBgd2l0aEtleXNgLFxyXG4gICAgW1ZfU0hPV106IGB2U2hvd2AsXHJcbiAgICBbVFJBTlNJVElPTl06IGBUcmFuc2l0aW9uYCxcclxuICAgIFtUUkFOU0lUSU9OX0dST1VQXTogYFRyYW5zaXRpb25Hcm91cGBcclxufSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG5sZXQgZGVjb2RlcjtcclxuZnVuY3Rpb24gZGVjb2RlSHRtbEJyb3dzZXIocmF3LCBhc0F0dHIgPSBmYWxzZSkge1xyXG4gICAgaWYgKCFkZWNvZGVyKSB7XHJcbiAgICAgICAgZGVjb2RlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgfVxyXG4gICAgaWYgKGFzQXR0cikge1xyXG4gICAgICAgIGRlY29kZXIuaW5uZXJIVE1MID0gYDxkaXYgZm9vPVwiJHtyYXcucmVwbGFjZSgvXCIvZywgJyZxdW90OycpfVwiPmA7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZXIuY2hpbGRyZW5bMF0uZ2V0QXR0cmlidXRlKCdmb28nKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGRlY29kZXIuaW5uZXJIVE1MID0gcmF3O1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVyLnRleHRDb250ZW50O1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IGlzUmF3VGV4dENvbnRhaW5lciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcCgnc3R5bGUsaWZyYW1lLHNjcmlwdCxub3NjcmlwdCcsIHRydWUpO1xyXG5jb25zdCBwYXJzZXJPcHRpb25zID0ge1xyXG4gICAgaXNWb2lkVGFnLFxyXG4gICAgaXNOYXRpdmVUYWc6IHRhZyA9PiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWR1RhZyh0YWcpLFxyXG4gICAgaXNQcmVUYWc6IHRhZyA9PiB0YWcgPT09ICdwcmUnLFxyXG4gICAgZGVjb2RlRW50aXRpZXM6IGRlY29kZUh0bWxCcm93c2VyICxcclxuICAgIGlzQnVpbHRJbkNvbXBvbmVudDogKHRhZykgPT4ge1xyXG4gICAgICAgIGlmIChpc0J1aWx0SW5UeXBlKHRhZywgYFRyYW5zaXRpb25gKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVFJBTlNJVElPTjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsIGBUcmFuc2l0aW9uR3JvdXBgKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVFJBTlNJVElPTl9HUk9VUDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RyZWUtY29uc3RydWN0aW9uLWRpc3BhdGNoZXJcclxuICAgIGdldE5hbWVzcGFjZSh0YWcsIHBhcmVudCkge1xyXG4gICAgICAgIGxldCBucyA9IHBhcmVudCA/IHBhcmVudC5ucyA6IDAgLyogSFRNTCAqLztcclxuICAgICAgICBpZiAocGFyZW50ICYmIG5zID09PSAyIC8qIE1BVEhfTUwgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHBhcmVudC50YWcgPT09ICdhbm5vdGF0aW9uLXhtbCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0YWcgPT09ICdzdmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogU1ZHICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5wcm9wcy5zb21lKGEgPT4gYS50eXBlID09PSA2IC8qIEFUVFJJQlVURSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGEubmFtZSA9PT0gJ2VuY29kaW5nJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGEudmFsdWUgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChhLnZhbHVlLmNvbnRlbnQgPT09ICd0ZXh0L2h0bWwnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGEudmFsdWUuY29udGVudCA9PT0gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5zID0gMCAvKiBIVE1MICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKC9ebSg/Oltpb25zXXx0ZXh0KSQvLnRlc3QocGFyZW50LnRhZykgJiZcclxuICAgICAgICAgICAgICAgIHRhZyAhPT0gJ21nbHlwaCcgJiZcclxuICAgICAgICAgICAgICAgIHRhZyAhPT0gJ21hbGlnbm1hcmsnKSB7XHJcbiAgICAgICAgICAgICAgICBucyA9IDAgLyogSFRNTCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXJlbnQgJiYgbnMgPT09IDEgLyogU1ZHICovKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQudGFnID09PSAnZm9yZWlnbk9iamVjdCcgfHxcclxuICAgICAgICAgICAgICAgIHBhcmVudC50YWcgPT09ICdkZXNjJyB8fFxyXG4gICAgICAgICAgICAgICAgcGFyZW50LnRhZyA9PT0gJ3RpdGxlJykge1xyXG4gICAgICAgICAgICAgICAgbnMgPSAwIC8qIEhUTUwgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5zID09PSAwIC8qIEhUTUwgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ3N2ZycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxIC8qIFNWRyAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGFnID09PSAnbWF0aCcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAyIC8qIE1BVEhfTUwgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5zO1xyXG4gICAgfSxcclxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwYXJzaW5nLWh0bWwtZnJhZ21lbnRzXHJcbiAgICBnZXRUZXh0TW9kZSh7IHRhZywgbnMgfSkge1xyXG4gICAgICAgIGlmIChucyA9PT0gMCAvKiBIVE1MICovKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFnID09PSAndGl0bGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBSQ0RBVEEgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzUmF3VGV4dENvbnRhaW5lcih0YWcpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMiAvKiBSQVdURVhUICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAwIC8qIERBVEEgKi87XHJcbiAgICB9XHJcbn07XG5cbi8vIFBhcnNlIGlubGluZSBDU1Mgc3RyaW5ncyBmb3Igc3RhdGljIHN0eWxlIGF0dHJpYnV0ZXMgaW50byBhbiBvYmplY3QuXHJcbi8vIFRoaXMgaXMgYSBOb2RlVHJhbnNmb3JtIHNpbmNlIGl0IHdvcmtzIG9uIHRoZSBzdGF0aWMgYHN0eWxlYCBhdHRyaWJ1dGUgYW5kXHJcbi8vIGNvbnZlcnRzIGl0IGludG8gYSBkeW5hbWljIGVxdWl2YWxlbnQ6XHJcbi8vIHN0eWxlPVwiY29sb3I6IHJlZFwiIC0+IDpzdHlsZT0neyBcImNvbG9yXCI6IFwicmVkXCIgfSdcclxuLy8gSXQgaXMgdGhlbiBwcm9jZXNzZWQgYnkgYHRyYW5zZm9ybUVsZW1lbnRgIGFuZCBpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhdGVkXHJcbi8vIHByb3BzLlxyXG5jb25zdCB0cmFuc2Zvcm1TdHlsZSA9IG5vZGUgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBFTEVNRU5UICovKSB7XHJcbiAgICAgICAgbm9kZS5wcm9wcy5mb3JFYWNoKChwLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDYgLyogQVRUUklCVVRFICovICYmIHAubmFtZSA9PT0gJ3N0eWxlJyAmJiBwLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXBsYWNlIHAgd2l0aCBhbiBleHByZXNzaW9uIG5vZGVcclxuICAgICAgICAgICAgICAgIG5vZGUucHJvcHNbaV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogNyAvKiBESVJFQ1RJVkUgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYGJpbmRgLFxyXG4gICAgICAgICAgICAgICAgICAgIGFyZzogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgc3R5bGVgLCB0cnVlLCBwLmxvYyksXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwOiBwYXJzZUlubGluZUNTUyhwLnZhbHVlLmNvbnRlbnQsIHAubG9jKSxcclxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIGxvYzogcC5sb2NcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuY29uc3QgcGFyc2VJbmxpbmVDU1MgPSAoY3NzVGV4dCwgbG9jKSA9PiB7XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gcGFyc2VTdHJpbmdTdHlsZShjc3NUZXh0KTtcclxuICAgIHJldHVybiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKEpTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZWQpLCBmYWxzZSwgbG9jLCAzIC8qIENBTl9TVFJJTkdJRlkgKi8pO1xyXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVET01Db21waWxlckVycm9yKGNvZGUsIGxvYykge1xyXG4gICAgcmV0dXJuIGNyZWF0ZUNvbXBpbGVyRXJyb3IoY29kZSwgbG9jLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWUgPyBET01FcnJvck1lc3NhZ2VzIDogdW5kZWZpbmVkKTtcclxufVxyXG5jb25zdCBET01FcnJvck1lc3NhZ2VzID0ge1xyXG4gICAgWzUwIC8qIFhfVl9IVE1MX05PX0VYUFJFU1NJT04gKi9dOiBgdi1odG1sIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzUxIC8qIFhfVl9IVE1MX1dJVEhfQ0hJTERSRU4gKi9dOiBgdi1odG1sIHdpbGwgb3ZlcnJpZGUgZWxlbWVudCBjaGlsZHJlbi5gLFxyXG4gICAgWzUyIC8qIFhfVl9URVhUX05PX0VYUFJFU1NJT04gKi9dOiBgdi10ZXh0IGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzUzIC8qIFhfVl9URVhUX1dJVEhfQ0hJTERSRU4gKi9dOiBgdi10ZXh0IHdpbGwgb3ZlcnJpZGUgZWxlbWVudCBjaGlsZHJlbi5gLFxyXG4gICAgWzU0IC8qIFhfVl9NT0RFTF9PTl9JTlZBTElEX0VMRU1FTlQgKi9dOiBgdi1tb2RlbCBjYW4gb25seSBiZSB1c2VkIG9uIDxpbnB1dD4sIDx0ZXh0YXJlYT4gYW5kIDxzZWxlY3Q+IGVsZW1lbnRzLmAsXHJcbiAgICBbNTUgLyogWF9WX01PREVMX0FSR19PTl9FTEVNRU5UICovXTogYHYtbW9kZWwgYXJndW1lbnQgaXMgbm90IHN1cHBvcnRlZCBvbiBwbGFpbiBlbGVtZW50cy5gLFxyXG4gICAgWzU2IC8qIFhfVl9NT0RFTF9PTl9GSUxFX0lOUFVUX0VMRU1FTlQgKi9dOiBgdi1tb2RlbCBjYW5ub3QgYmUgdXNlZCBvbiBmaWxlIGlucHV0cyBzaW5jZSB0aGV5IGFyZSByZWFkLW9ubHkuIFVzZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuYCxcclxuICAgIFs1NyAvKiBYX1ZfTU9ERUxfVU5ORUNFU1NBUllfVkFMVUUgKi9dOiBgVW5uZWNlc3NhcnkgdmFsdWUgYmluZGluZyB1c2VkIGFsb25nc2lkZSB2LW1vZGVsLiBJdCB3aWxsIGludGVyZmVyZSB3aXRoIHYtbW9kZWwncyBiZWhhdmlvci5gLFxyXG4gICAgWzU4IC8qIFhfVl9TSE9XX05PX0VYUFJFU1NJT04gKi9dOiBgdi1zaG93IGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzU5IC8qIFhfVFJBTlNJVElPTl9JTlZBTElEX0NISUxEUkVOICovXTogYDxUcmFuc2l0aW9uPiBleHBlY3RzIGV4YWN0bHkgb25lIGNoaWxkIGVsZW1lbnQgb3IgY29tcG9uZW50LmAsXHJcbiAgICBbNjAgLyogWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRyAqL106IGBUYWdzIHdpdGggc2lkZSBlZmZlY3QgKDxzY3JpcHQ+IGFuZCA8c3R5bGU+KSBhcmUgaWdub3JlZCBpbiBjbGllbnQgY29tcG9uZW50IHRlbXBsYXRlcy5gXHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVZIdG1sID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKCFleHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1MCAvKiBYX1ZfSFRNTF9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUxIC8qIFhfVl9IVE1MX1dJVEhfQ0hJTERSRU4gKi8sIGxvYykpO1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgaW5uZXJIVE1MYCwgdHJ1ZSwgbG9jKSwgZXhwIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJycsIHRydWUpKVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVZUZXh0ID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKCFleHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1MiAvKiBYX1ZfVEVYVF9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUzIC8qIFhfVl9URVhUX1dJVEhfQ0hJTERSRU4gKi8sIGxvYykpO1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdGV4dENvbnRlbnRgLCB0cnVlKSwgZXhwXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyU3RyaW5nKFRPX0RJU1BMQVlfU1RSSU5HKSwgW2V4cF0sIGxvYylcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignJywgdHJ1ZSkpXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxufTtcblxuY29uc3QgdHJhbnNmb3JtTW9kZWwgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCBiYXNlUmVzdWx0ID0gdHJhbnNmb3JtTW9kZWwkMShkaXIsIG5vZGUsIGNvbnRleHQpO1xyXG4gICAgLy8gYmFzZSB0cmFuc2Zvcm0gaGFzIGVycm9ycyBPUiBjb21wb25lbnQgdi1tb2RlbCAob25seSBuZWVkIHByb3BzKVxyXG4gICAgaWYgKCFiYXNlUmVzdWx0LnByb3BzLmxlbmd0aCB8fCBub2RlLnRhZ1R5cGUgPT09IDEgLyogQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgcmV0dXJuIGJhc2VSZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBpZiAoZGlyLmFyZykge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU1IC8qIFhfVl9NT0RFTF9BUkdfT05fRUxFTUVOVCAqLywgZGlyLmFyZy5sb2MpKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNoZWNrRHVwbGljYXRlZFZhbHVlKCkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZmluZFByb3Aobm9kZSwgJ3ZhbHVlJyk7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU3IC8qIFhfVl9NT0RFTF9VTk5FQ0VTU0FSWV9WQUxVRSAqLywgdmFsdWUubG9jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0YWcgfSA9IG5vZGU7XHJcbiAgICBjb25zdCBpc0N1c3RvbUVsZW1lbnQgPSBjb250ZXh0LmlzQ3VzdG9tRWxlbWVudCh0YWcpO1xyXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fFxyXG4gICAgICAgIHRhZyA9PT0gJ3RleHRhcmVhJyB8fFxyXG4gICAgICAgIHRhZyA9PT0gJ3NlbGVjdCcgfHxcclxuICAgICAgICBpc0N1c3RvbUVsZW1lbnQpIHtcclxuICAgICAgICBsZXQgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX1RFWFQ7XHJcbiAgICAgICAgbGV0IGlzSW52YWxpZFR5cGUgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGFnID09PSAnaW5wdXQnIHx8IGlzQ3VzdG9tRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gZmluZFByb3Aobm9kZSwgYHR5cGVgKTtcclxuICAgICAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlLnR5cGUgPT09IDcgLyogRElSRUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gOnR5cGU9XCJmb29cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9EWU5BTUlDO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS52YWx1ZS5jb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JhZGlvJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9SQURJTztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfQ0hFQ0tCT1g7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmlsZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ludmFsaWRUeXBlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU2IC8qIFhfVl9NT0RFTF9PTl9GSUxFX0lOUFVUX0VMRU1FTlQgKi8sIGRpci5sb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGV4dCB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tEdXBsaWNhdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChoYXNEeW5hbWljS2V5VkJpbmQobm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaGFzIGJpbmRpbmdzIHdpdGggZHluYW1pYyBrZXlzLCB3aGljaCBjYW4gcG9zc2libHkgY29udGFpblxyXG4gICAgICAgICAgICAgICAgLy8gXCJ0eXBlXCIuXHJcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfRFlOQU1JQztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHRleHQgdHlwZVxyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrRHVwbGljYXRlZFZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGFnID09PSAnc2VsZWN0Jykge1xyXG4gICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfU0VMRUNUO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdGV4dGFyZWFcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrRHVwbGljYXRlZFZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluamVjdCBydW50aW1lIGRpcmVjdGl2ZVxyXG4gICAgICAgIC8vIGJ5IHJldHVybmluZyB0aGUgaGVscGVyIHN5bWJvbCB2aWEgbmVlZFJ1bnRpbWVcclxuICAgICAgICAvLyB0aGUgaW1wb3J0IHdpbGwgcmVwbGFjZWQgYSByZXNvbHZlRGlyZWN0aXZlIGNhbGwuXHJcbiAgICAgICAgaWYgKCFpc0ludmFsaWRUeXBlKSB7XHJcbiAgICAgICAgICAgIGJhc2VSZXN1bHQubmVlZFJ1bnRpbWUgPSBjb250ZXh0LmhlbHBlcihkaXJlY3RpdmVUb1VzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTQgLyogWF9WX01PREVMX09OX0lOVkFMSURfRUxFTUVOVCAqLywgZGlyLmxvYykpO1xyXG4gICAgfVxyXG4gICAgLy8gbmF0aXZlIHZtb2RlbCBkb2Vzbid0IG5lZWQgdGhlIGBtb2RlbFZhbHVlYCBwcm9wcyBzaW5jZSB0aGV5IGFyZSBhbHNvXHJcbiAgICAvLyBwYXNzZWQgdG8gdGhlIHJ1bnRpbWUgYXMgYGJpbmRpbmcudmFsdWVgLiByZW1vdmluZyBpdCByZWR1Y2VzIGNvZGUgc2l6ZS5cclxuICAgIGJhc2VSZXN1bHQucHJvcHMgPSBiYXNlUmVzdWx0LnByb3BzLmZpbHRlcihwID0+ICEocC5rZXkudHlwZSA9PT0gNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgIHAua2V5LmNvbnRlbnQgPT09ICdtb2RlbFZhbHVlJykpO1xyXG4gICAgcmV0dXJuIGJhc2VSZXN1bHQ7XHJcbn07XG5cbmNvbnN0IGlzRXZlbnRPcHRpb25Nb2RpZmllciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgcGFzc2l2ZSxvbmNlLGNhcHR1cmVgKTtcclxuY29uc3QgaXNOb25LZXlNb2RpZmllciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChcclxuLy8gZXZlbnQgcHJvcGFnYXRpb24gbWFuYWdlbWVudFxyXG5gc3RvcCxwcmV2ZW50LHNlbGYsYCArXHJcbiAgICAvLyBzeXN0ZW0gbW9kaWZpZXJzICsgZXhhY3RcclxuICAgIGBjdHJsLHNoaWZ0LGFsdCxtZXRhLGV4YWN0LGAgK1xyXG4gICAgLy8gbW91c2VcclxuICAgIGBtaWRkbGVgKTtcclxuLy8gbGVmdCAmIHJpZ2h0IGNvdWxkIGJlIG1vdXNlIG9yIGtleSBtb2RpZmllcnMgYmFzZWQgb24gZXZlbnQgdHlwZVxyXG5jb25zdCBtYXliZUtleU1vZGlmaWVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdsZWZ0LHJpZ2h0Jyk7XHJcbmNvbnN0IGlzS2V5Ym9hcmRFdmVudCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgb25rZXl1cCxvbmtleWRvd24sb25rZXlwcmVzc2AsIHRydWUpO1xyXG5jb25zdCByZXNvbHZlTW9kaWZpZXJzID0gKGtleSwgbW9kaWZpZXJzLCBjb250ZXh0LCBsb2MpID0+IHtcclxuICAgIGNvbnN0IGtleU1vZGlmaWVycyA9IFtdO1xyXG4gICAgY29uc3Qgbm9uS2V5TW9kaWZpZXJzID0gW107XHJcbiAgICBjb25zdCBldmVudE9wdGlvbk1vZGlmaWVycyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBtb2RpZmllciA9IG1vZGlmaWVyc1tpXTtcclxuICAgICAgICBpZiAobW9kaWZpZXIgPT09ICduYXRpdmUnICYmXHJcbiAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfT05fTkFUSVZFXCIgLyogQ09NUElMRVJfVl9PTl9OQVRJVkUgKi8sIGNvbnRleHQsIGxvYykpIHtcclxuICAgICAgICAgICAgZXZlbnRPcHRpb25Nb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzRXZlbnRPcHRpb25Nb2RpZmllcihtb2RpZmllcikpIHtcclxuICAgICAgICAgICAgLy8gZXZlbnRPcHRpb25Nb2RpZmllcnM6IG1vZGlmaWVycyBmb3IgYWRkRXZlbnRMaXN0ZW5lcigpIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIC8vIGUuZy4gLnBhc3NpdmUgJiAuY2FwdHVyZVxyXG4gICAgICAgICAgICBldmVudE9wdGlvbk1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHJ1bnRpbWVNb2RpZmllcnM6IG1vZGlmaWVycyB0aGF0IG5lZWRzIHJ1bnRpbWUgZ3VhcmRzXHJcbiAgICAgICAgICAgIGlmIChtYXliZUtleU1vZGlmaWVyKG1vZGlmaWVyKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNLZXlib2FyZEV2ZW50KGtleS5jb250ZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbktleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc05vbktleU1vZGlmaWVyKG1vZGlmaWVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbktleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAga2V5TW9kaWZpZXJzLFxyXG4gICAgICAgIG5vbktleU1vZGlmaWVycyxcclxuICAgICAgICBldmVudE9wdGlvbk1vZGlmaWVyc1xyXG4gICAgfTtcclxufTtcclxuY29uc3QgdHJhbnNmb3JtQ2xpY2sgPSAoa2V5LCBldmVudCkgPT4ge1xyXG4gICAgY29uc3QgaXNTdGF0aWNDbGljayA9IGlzU3RhdGljRXhwKGtleSkgJiYga2V5LmNvbnRlbnQudG9Mb3dlckNhc2UoKSA9PT0gJ29uY2xpY2snO1xyXG4gICAgcmV0dXJuIGlzU3RhdGljQ2xpY2tcclxuICAgICAgICA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZXZlbnQsIHRydWUpXHJcbiAgICAgICAgOiBrZXkudHlwZSAhPT0gNCAvKiBTSU1QTEVfRVhQUkVTU0lPTiAqL1xyXG4gICAgICAgICAgICA/IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXHJcbiAgICAgICAgICAgICAgICBgKGAsXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICBgKSA9PT0gXCJvbkNsaWNrXCIgPyBcIiR7ZXZlbnR9XCIgOiAoYCxcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIGApYFxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICA6IGtleTtcclxufTtcclxuY29uc3QgdHJhbnNmb3JtT24gPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICByZXR1cm4gdHJhbnNmb3JtT24kMShkaXIsIG5vZGUsIGNvbnRleHQsIGJhc2VSZXN1bHQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgbW9kaWZpZXJzIH0gPSBkaXI7XHJcbiAgICAgICAgaWYgKCFtb2RpZmllcnMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gYmFzZVJlc3VsdDtcclxuICAgICAgICBsZXQgeyBrZXksIHZhbHVlOiBoYW5kbGVyRXhwIH0gPSBiYXNlUmVzdWx0LnByb3BzWzBdO1xyXG4gICAgICAgIGNvbnN0IHsga2V5TW9kaWZpZXJzLCBub25LZXlNb2RpZmllcnMsIGV2ZW50T3B0aW9uTW9kaWZpZXJzIH0gPSByZXNvbHZlTW9kaWZpZXJzKGtleSwgbW9kaWZpZXJzLCBjb250ZXh0LCBkaXIubG9jKTtcclxuICAgICAgICAvLyBub3JtYWxpemUgY2xpY2sucmlnaHQgYW5kIGNsaWNrLm1pZGRsZSBzaW5jZSB0aGV5IGRvbid0IGFjdHVhbGx5IGZpcmVcclxuICAgICAgICBpZiAobm9uS2V5TW9kaWZpZXJzLmluY2x1ZGVzKCdyaWdodCcpKSB7XHJcbiAgICAgICAgICAgIGtleSA9IHRyYW5zZm9ybUNsaWNrKGtleSwgYG9uQ29udGV4dG1lbnVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vbktleU1vZGlmaWVycy5pbmNsdWRlcygnbWlkZGxlJykpIHtcclxuICAgICAgICAgICAga2V5ID0gdHJhbnNmb3JtQ2xpY2soa2V5LCBgb25Nb3VzZXVwYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChub25LZXlNb2RpZmllcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZXJFeHAgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihWX09OX1dJVEhfTU9ESUZJRVJTKSwgW1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlckV4cCxcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5vbktleU1vZGlmaWVycylcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChrZXlNb2RpZmllcnMubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIC8vIGlmIGV2ZW50IG5hbWUgaXMgZHluYW1pYywgYWx3YXlzIHdyYXAgd2l0aCBrZXlzIGd1YXJkXHJcbiAgICAgICAgICAgICghaXNTdGF0aWNFeHAoa2V5KSB8fCBpc0tleWJvYXJkRXZlbnQoa2V5LmNvbnRlbnQpKSkge1xyXG4gICAgICAgICAgICBoYW5kbGVyRXhwID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoVl9PTl9XSVRIX0tFWVMpLCBbXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVyRXhwLFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoa2V5TW9kaWZpZXJzKVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50T3B0aW9uTW9kaWZpZXJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RpZmllclBvc3RmaXggPSBldmVudE9wdGlvbk1vZGlmaWVycy5tYXAoY2FwaXRhbGl6ZSkuam9pbignJyk7XHJcbiAgICAgICAgICAgIGtleSA9IGlzU3RhdGljRXhwKGtleSlcclxuICAgICAgICAgICAgICAgID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgJHtrZXkuY29udGVudH0ke21vZGlmaWVyUG9zdGZpeH1gLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2AoYCwga2V5LCBgKSArIFwiJHttb2RpZmllclBvc3RmaXh9XCJgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHByb3BzOiBbY3JlYXRlT2JqZWN0UHJvcGVydHkoa2V5LCBoYW5kbGVyRXhwKV1cclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVNob3cgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgbG9jIH0gPSBkaXI7XHJcbiAgICBpZiAoIWV4cCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU4IC8qIFhfVl9TSE9XX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW10sXHJcbiAgICAgICAgbmVlZFJ1bnRpbWU6IGNvbnRleHQuaGVscGVyKFZfU0hPVylcclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHdhcm5UcmFuc2l0aW9uQ2hpbGRyZW4gPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBFTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS50YWdUeXBlID09PSAxIC8qIENPTVBPTkVOVCAqLykge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGNvbnRleHQuaXNCdWlsdEluQ29tcG9uZW50KG5vZGUudGFnKTtcclxuICAgICAgICBpZiAoY29tcG9uZW50ID09PSBUUkFOU0lUSU9OKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggJiYgaGFzTXVsdGlwbGVDaGlsZHJlbihub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU5IC8qIFhfVFJBTlNJVElPTl9JTlZBTElEX0NISUxEUkVOICovLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBub2RlLmNoaWxkcmVuWzBdLmxvYy5zdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBub2RlLmNoaWxkcmVuW25vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMV0ubG9jLmVuZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIGhhc011bHRpcGxlQ2hpbGRyZW4obm9kZSkge1xyXG4gICAgLy8gIzEzNTIgZmlsdGVyIG91dCBwb3RlbnRpYWwgY29tbWVudCBub2Rlcy5cclxuICAgIGNvbnN0IGNoaWxkcmVuID0gKG5vZGUuY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSAhPT0gMyAvKiBDT01NRU5UICovICYmXHJcbiAgICAgICAgIShjLnR5cGUgPT09IDIgLyogVEVYVCAqLyAmJiAhYy5jb250ZW50LnRyaW0oKSkpKTtcclxuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5bMF07XHJcbiAgICByZXR1cm4gKGNoaWxkcmVuLmxlbmd0aCAhPT0gMSB8fFxyXG4gICAgICAgIGNoaWxkLnR5cGUgPT09IDExIC8qIEZPUiAqLyB8fFxyXG4gICAgICAgIChjaGlsZC50eXBlID09PSA5IC8qIElGICovICYmIGNoaWxkLmJyYW5jaGVzLnNvbWUoaGFzTXVsdGlwbGVDaGlsZHJlbikpKTtcclxufVxuXG5jb25zdCBpZ25vcmVTaWRlRWZmZWN0VGFncyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIEVMRU1FTlQgKi8gJiZcclxuICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDAgLyogRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIChub2RlLnRhZyA9PT0gJ3NjcmlwdCcgfHwgbm9kZS50YWcgPT09ICdzdHlsZScpKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNjAgLyogWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRyAqLywgbm9kZS5sb2MpKTtcclxuICAgICAgICBjb250ZXh0LnJlbW92ZU5vZGUoKTtcclxuICAgIH1cclxufTtcblxuY29uc3QgRE9NTm9kZVRyYW5zZm9ybXMgPSBbXHJcbiAgICB0cmFuc2Zvcm1TdHlsZSxcclxuICAgIC4uLigocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBbd2FyblRyYW5zaXRpb25DaGlsZHJlbl0gOiBbXSlcclxuXTtcclxuY29uc3QgRE9NRGlyZWN0aXZlVHJhbnNmb3JtcyA9IHtcclxuICAgIGNsb2FrOiBub29wRGlyZWN0aXZlVHJhbnNmb3JtLFxyXG4gICAgaHRtbDogdHJhbnNmb3JtVkh0bWwsXHJcbiAgICB0ZXh0OiB0cmFuc2Zvcm1WVGV4dCxcclxuICAgIG1vZGVsOiB0cmFuc2Zvcm1Nb2RlbCxcclxuICAgIG9uOiB0cmFuc2Zvcm1PbixcclxuICAgIHNob3c6IHRyYW5zZm9ybVNob3dcclxufTtcclxuZnVuY3Rpb24gY29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICByZXR1cm4gYmFzZUNvbXBpbGUodGVtcGxhdGUsIGV4dGVuZCh7fSwgcGFyc2VyT3B0aW9ucywgb3B0aW9ucywge1xyXG4gICAgICAgIG5vZGVUcmFuc2Zvcm1zOiBbXHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSA8c2NyaXB0PiBhbmQgPHRhZz5cclxuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgcHV0IGluc2lkZSBET01Ob2RlVHJhbnNmb3JtcyBiZWNhdXNlIHRoYXQgbGlzdCBpcyB1c2VkXHJcbiAgICAgICAgICAgIC8vIGJ5IGNvbXBpbGVyLXNzciB0byBnZW5lcmF0ZSB2bm9kZSBmYWxsYmFjayBicmFuY2hlc1xyXG4gICAgICAgICAgICBpZ25vcmVTaWRlRWZmZWN0VGFncyxcclxuICAgICAgICAgICAgLi4uRE9NTm9kZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLm5vZGVUcmFuc2Zvcm1zIHx8IFtdKVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGlyZWN0aXZlVHJhbnNmb3JtczogZXh0ZW5kKHt9LCBET01EaXJlY3RpdmVUcmFuc2Zvcm1zLCBvcHRpb25zLmRpcmVjdGl2ZVRyYW5zZm9ybXMgfHwge30pLFxyXG4gICAgICAgIHRyYW5zZm9ybUhvaXN0OiBudWxsIFxyXG4gICAgfSkpO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlKHRlbXBsYXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgIHJldHVybiBiYXNlUGFyc2UodGVtcGxhdGUsIGV4dGVuZCh7fSwgcGFyc2VyT3B0aW9ucywgb3B0aW9ucykpO1xyXG59XG5cbmV4cG9ydCB7IERPTURpcmVjdGl2ZVRyYW5zZm9ybXMsIERPTU5vZGVUcmFuc2Zvcm1zLCBUUkFOU0lUSU9OLCBUUkFOU0lUSU9OX0dST1VQLCBWX01PREVMX0NIRUNLQk9YLCBWX01PREVMX0RZTkFNSUMsIFZfTU9ERUxfUkFESU8sIFZfTU9ERUxfU0VMRUNULCBWX01PREVMX1RFWFQsIFZfT05fV0lUSF9LRVlTLCBWX09OX1dJVEhfTU9ESUZJRVJTLCBWX1NIT1csIGNvbXBpbGUsIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IsIHBhcnNlLCBwYXJzZXJPcHRpb25zLCB0cmFuc2Zvcm1TdHlsZSB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/api/api.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/api/api.js ***!
|
||
\***********************************************************/
|
||
/*! no exports provided */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvYXBpLmpzPzQ0NWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBVSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2FwaS9hcGkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/api/api.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/api/app.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/api/app.js ***!
|
||
\***********************************************************/
|
||
/*! no exports provided */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvYXBwLmpzPzkyNWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBVSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2FwaS9hcHAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/api/app.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/api/component.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/api/component.js ***!
|
||
\*****************************************************************/
|
||
/*! no exports provided */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvY29tcG9uZW50LmpzPzBmNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBVSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2FwaS9jb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/api/component.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/api/context.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/api/context.js ***!
|
||
\***************************************************************/
|
||
/*! no exports provided */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvY29udGV4dC5qcz8wNzU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQVUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvY29udGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/api/context.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/api/hooks.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/api/hooks.js ***!
|
||
\*************************************************************/
|
||
/*! no exports provided */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvaG9va3MuanM/OTFkMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0B2dWUvZGV2dG9vbHMtYXBpL2xpYi9lc20vYXBpL2hvb2tzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/api/hooks.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/api/index.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/api/index.js ***!
|
||
\*************************************************************/
|
||
/*! no exports provided */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./api */ \"./node_modules/@vue/devtools-api/lib/esm/api/api.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app */ \"./node_modules/@vue/devtools-api/lib/esm/api/app.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./component */ \"./node_modules/@vue/devtools-api/lib/esm/api/component.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./context */ \"./node_modules/@vue/devtools-api/lib/esm/api/context.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks */ \"./node_modules/@vue/devtools-api/lib/esm/api/hooks.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ \"./node_modules/@vue/devtools-api/lib/esm/api/util.js\");\n/* empty/unused harmony star reexport */\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvaW5kZXguanM/ZDUwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdDQUFzQjtBQUNBO0FBQ007QUFDRjtBQUNGO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL2FwcCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9ob29rcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/api/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/api/util.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/api/util.js ***!
|
||
\************************************************************/
|
||
/*! no exports provided */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvdXRpbC5qcz84OTZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQVUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9hcGkvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/api/util.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/const.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/const.js ***!
|
||
\*********************************************************/
|
||
/*! exports provided: HOOK_SETUP, HOOK_PLUGIN_SETTINGS_SET */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HOOK_SETUP\", function() { return HOOK_SETUP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HOOK_PLUGIN_SETTINGS_SET\", function() { return HOOK_PLUGIN_SETTINGS_SET; });\nconst HOOK_SETUP = 'devtools-plugin:setup';\nconst HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9jb25zdC5qcz9iNzc0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9jb25zdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBIT09LX1NFVFVQID0gJ2RldnRvb2xzLXBsdWdpbjpzZXR1cCc7XG5leHBvcnQgY29uc3QgSE9PS19QTFVHSU5fU0VUVElOR1NfU0VUID0gJ3BsdWdpbjpzZXR0aW5nczpzZXQnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/const.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/env.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/env.js ***!
|
||
\*******************************************************/
|
||
/*! exports provided: getDevtoolsGlobalHook, getTarget, isProxyAvailable */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDevtoolsGlobalHook\", function() { return getDevtoolsGlobalHook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTarget\", function() { return getTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isProxyAvailable\", function() { return isProxyAvailable; });\nfunction getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nfunction getTarget() {\n // @ts-ignore\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n}\nconst isProxyAvailable = typeof Proxy === 'function';\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9lbnYuanM/YWJjNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2Vudi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXREZXZ0b29sc0dsb2JhbEhvb2soKSB7XG4gICAgcmV0dXJuIGdldFRhcmdldCgpLl9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICA/IHdpbmRvd1xuICAgICAgICA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICA/IGdsb2JhbFxuICAgICAgICAgICAgOiB7fTtcbn1cbmV4cG9ydCBjb25zdCBpc1Byb3h5QXZhaWxhYmxlID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/env.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/index.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/index.js ***!
|
||
\*********************************************************/
|
||
/*! exports provided: isPerformanceSupported, now, setupDevtoolsPlugin */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setupDevtoolsPlugin\", function() { return setupDevtoolsPlugin; });\n/* harmony import */ var _env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./env */ \"./node_modules/@vue/devtools-api/lib/esm/env.js\");\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./const */ \"./node_modules/@vue/devtools-api/lib/esm/const.js\");\n/* harmony import */ var _proxy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./proxy */ \"./node_modules/@vue/devtools-api/lib/esm/proxy.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./api */ \"./node_modules/@vue/devtools-api/lib/esm/api/index.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./plugin */ \"./node_modules/@vue/devtools-api/lib/esm/plugin.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./time */ \"./node_modules/@vue/devtools-api/lib/esm/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPerformanceSupported\", function() { return _time__WEBPACK_IMPORTED_MODULE_5__[\"isPerformanceSupported\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return _time__WEBPACK_IMPORTED_MODULE_5__[\"now\"]; });\n\n\n\n\n\n\n\nfunction setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = Object(_env__WEBPACK_IMPORTED_MODULE_0__[\"getTarget\"])();\n const hook = Object(_env__WEBPACK_IMPORTED_MODULE_0__[\"getDevtoolsGlobalHook\"])();\n const enableProxy = _env__WEBPACK_IMPORTED_MODULE_0__[\"isProxyAvailable\"] && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(_const__WEBPACK_IMPORTED_MODULE_1__[\"HOOK_SETUP\"], pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new _proxy__WEBPACK_IMPORTED_MODULE_2__[\"ApiProxy\"](descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9pbmRleC5qcz8zZjRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyRTtBQUN0QztBQUNGO0FBQ2I7QUFDRztBQUNGO0FBQ2hCO0FBQ1A7QUFDQSxtQkFBbUIsc0RBQVM7QUFDNUIsaUJBQWlCLGtFQUFxQjtBQUN0Qyx3QkFBd0IscURBQWdCO0FBQ3hDO0FBQ0Esa0JBQWtCLGlEQUFVO0FBQzVCO0FBQ0E7QUFDQSx3Q0FBd0MsK0NBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0VGFyZ2V0LCBnZXREZXZ0b29sc0dsb2JhbEhvb2ssIGlzUHJveHlBdmFpbGFibGUgfSBmcm9tICcuL2Vudic7XG5pbXBvcnQgeyBIT09LX1NFVFVQIH0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBBcGlQcm94eSB9IGZyb20gJy4vcHJveHknO1xuZXhwb3J0ICogZnJvbSAnLi9hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4nO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lJztcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cERldnRvb2xzUGx1Z2luKHBsdWdpbkRlc2NyaXB0b3IsIHNldHVwRm4pIHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gcGx1Z2luRGVzY3JpcHRvcjtcbiAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoKTtcbiAgICBjb25zdCBob29rID0gZ2V0RGV2dG9vbHNHbG9iYWxIb29rKCk7XG4gICAgY29uc3QgZW5hYmxlUHJveHkgPSBpc1Byb3h5QXZhaWxhYmxlICYmIGRlc2NyaXB0b3IuZW5hYmxlRWFybHlQcm94eTtcbiAgICBpZiAoaG9vayAmJiAodGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX1BMVUdJTl9BUElfQVZBSUxBQkxFX18gfHwgIWVuYWJsZVByb3h5KSkge1xuICAgICAgICBob29rLmVtaXQoSE9PS19TRVRVUCwgcGx1Z2luRGVzY3JpcHRvciwgc2V0dXBGbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBwcm94eSA9IGVuYWJsZVByb3h5ID8gbmV3IEFwaVByb3h5KGRlc2NyaXB0b3IsIGhvb2spIDogbnVsbDtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5TX18gPSB0YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOU19fIHx8IFtdO1xuICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgcGx1Z2luRGVzY3JpcHRvcjogZGVzY3JpcHRvcixcbiAgICAgICAgICAgIHNldHVwRm4sXG4gICAgICAgICAgICBwcm94eSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcm94eSlcbiAgICAgICAgICAgIHNldHVwRm4ocHJveHkucHJveGllZFRhcmdldCk7XG4gICAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/plugin.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/plugin.js ***!
|
||
\**********************************************************/
|
||
/*! no exports provided */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9wbHVnaW4uanM/MTliNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0B2dWUvZGV2dG9vbHMtYXBpL2xpYi9lc20vcGx1Z2luLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/plugin.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/proxy.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/proxy.js ***!
|
||
\*********************************************************/
|
||
/*! exports provided: ApiProxy */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ApiProxy\", function() { return ApiProxy; });\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ \"./node_modules/@vue/devtools-api/lib/esm/const.js\");\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./time */ \"./node_modules/@vue/devtools-api/lib/esm/time.js\");\n\n\nclass ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return Object(_time__WEBPACK_IMPORTED_MODULE_1__[\"now\"])();\n },\n };\n if (hook) {\n hook.on(_const__WEBPACK_IMPORTED_MODULE_0__[\"HOOK_PLUGIN_SETTINGS_SET\"], (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9wcm94eS5qcz9mMzBhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1EO0FBQ3RCO0FBQ3RCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsVUFBVTtBQUNqRiw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsdUJBQXVCLGlEQUFHO0FBQzFCLGFBQWE7QUFDYjtBQUNBO0FBQ0Esb0JBQW9CLCtEQUF3QjtBQUM1QztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsRUFBRTtBQUM5Qyx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9wcm94eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCB9IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHsgbm93IH0gZnJvbSAnLi90aW1lJztcbmV4cG9ydCBjbGFzcyBBcGlQcm94eSB7XG4gICAgY29uc3RydWN0b3IocGx1Z2luLCBob29rKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXRRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLm9uUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gICAgICAgIHRoaXMuaG9vayA9IGhvb2s7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9O1xuICAgICAgICBpZiAocGx1Z2luLnNldHRpbmdzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIGluIHBsdWdpbi5zZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBwbHVnaW4uc2V0dGluZ3NbaWRdO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRTZXR0aW5nc1tpZF0gPSBpdGVtLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb2NhbFNldHRpbmdzU2F2ZUlkID0gYF9fdnVlLWRldnRvb2xzLXBsdWdpbi1zZXR0aW5nc19fJHtwbHVnaW4uaWR9YDtcbiAgICAgICAgbGV0IGN1cnJlbnRTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTZXR0aW5ncyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFNldHRpbmdzU2F2ZUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGN1cnJlbnRTZXR0aW5ncywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgIGdldFNldHRpbmdzKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2V0dGluZ3M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0U2V0dGluZ3ModmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFNldHRpbmdzU2F2ZUlkLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBub29wXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRTZXR0aW5ncyA9IHZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vdygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm93KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpZiAoaG9vaykge1xuICAgICAgICAgICAgaG9vay5vbihIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQsIChwbHVnaW5JZCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGx1Z2luSWQgPT09IHRoaXMucGx1Z2luLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFsbGJhY2tzLnNldFNldHRpbmdzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3hpZWRPbiA9IG5ldyBQcm94eSh7fSwge1xuICAgICAgICAgICAgZ2V0OiAoX3RhcmdldCwgcHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQub25bcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25RdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnByb3hpZWRUYXJnZXQgPSBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgICAgIGdldDogKF90YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0W3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wID09PSAnb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3hpZWRPbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoT2JqZWN0LmtleXModGhpcy5mYWxsYmFja3MpLmluY2x1ZGVzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlOiAoKSA9PiB7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrc1twcm9wXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0UXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzZXRSZWFsVGFyZ2V0KHRhcmdldCkge1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMub25RdWV1ZSkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQub25baXRlbS5tZXRob2RdKC4uLml0ZW0uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMudGFyZ2V0UXVldWUpIHtcbiAgICAgICAgICAgIGl0ZW0ucmVzb2x2ZShhd2FpdCB0aGlzLnRhcmdldFtpdGVtLm1ldGhvZF0oLi4uaXRlbS5hcmdzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/proxy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/devtools-api/lib/esm/time.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/@vue/devtools-api/lib/esm/time.js ***!
|
||
\********************************************************/
|
||
/*! exports provided: isPerformanceSupported, now */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPerformanceSupported\", function() { return isPerformanceSupported; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return now; });\nlet supported;\nlet perf;\nfunction isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = global.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nfunction now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS90aW1lLmpzPzUxMzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL3RpbWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgc3VwcG9ydGVkO1xubGV0IHBlcmY7XG5leHBvcnQgZnVuY3Rpb24gaXNQZXJmb3JtYW5jZVN1cHBvcnRlZCgpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHN1cHBvcnRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucGVyZm9ybWFuY2UpIHtcbiAgICAgICAgc3VwcG9ydGVkID0gdHJ1ZTtcbiAgICAgICAgcGVyZiA9IHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgKChfYSA9IGdsb2JhbC5wZXJmX2hvb2tzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucGVyZm9ybWFuY2UpKSB7XG4gICAgICAgIHN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgIHBlcmYgPSBnbG9iYWwucGVyZl9ob29rcy5wZXJmb3JtYW5jZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN1cHBvcnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwcG9ydGVkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vdygpIHtcbiAgICByZXR1cm4gaXNQZXJmb3JtYW5jZVN1cHBvcnRlZCgpID8gcGVyZi5ub3coKSA6IERhdGUubm93KCk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/devtools-api/lib/esm/time.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js ***!
|
||
\*********************************************************************/
|
||
/*! exports provided: EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EffectScope\", function() { return EffectScope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ITERATE_KEY\", function() { return ITERATE_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactiveEffect\", function() { return ReactiveEffect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"computed\", function() { return computed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"customRef\", function() { return customRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deferredComputed\", function() { return deferredComputed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"effect\", function() { return effect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"effectScope\", function() { return effectScope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableTracking\", function() { return enableTracking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentScope\", function() { return getCurrentScope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isProxy\", function() { return isProxy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isReactive\", function() { return isReactive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isReadonly\", function() { return isReadonly; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRef\", function() { return isRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isShallow\", function() { return isShallow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"markRaw\", function() { return markRaw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onScopeDispose\", function() { return onScopeDispose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pauseTracking\", function() { return pauseTracking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"proxyRefs\", function() { return proxyRefs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reactive\", function() { return reactive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"readonly\", function() { return readonly; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ref\", function() { return ref; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetTracking\", function() { return resetTracking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shallowReactive\", function() { return shallowReactive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shallowReadonly\", function() { return shallowReadonly; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shallowRef\", function() { return shallowRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stop\", function() { return stop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toRaw\", function() { return toRaw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toRef\", function() { return toRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toRefs\", function() { return toRefs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"track\", function() { return track; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trigger\", function() { return trigger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"triggerRef\", function() { return triggerRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unref\", function() { return unref; });\n/* harmony import */ var _vue_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vue/shared */ \"./node_modules/@vue/shared/dist/shared.esm-bundler.js\");\n\n\nfunction warn(msg, ...args) {\r\n console.warn(`[Vue warn] ${msg}`, ...args);\r\n}\n\nlet activeEffectScope;\r\nclass EffectScope {\r\n constructor(detached = false) {\r\n this.active = true;\r\n this.effects = [];\r\n this.cleanups = [];\r\n if (!detached && activeEffectScope) {\r\n this.parent = activeEffectScope;\r\n this.index =\r\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\r\n }\r\n }\r\n run(fn) {\r\n if (this.active) {\r\n try {\r\n activeEffectScope = this;\r\n return fn();\r\n }\r\n finally {\r\n activeEffectScope = this.parent;\r\n }\r\n }\r\n else if ((true)) {\r\n warn(`cannot run an inactive effect scope.`);\r\n }\r\n }\r\n on() {\r\n activeEffectScope = this;\r\n }\r\n off() {\r\n activeEffectScope = this.parent;\r\n }\r\n stop(fromParent) {\r\n if (this.active) {\r\n let i, l;\r\n for (i = 0, l = this.effects.length; i < l; i++) {\r\n this.effects[i].stop();\r\n }\r\n for (i = 0, l = this.cleanups.length; i < l; i++) {\r\n this.cleanups[i]();\r\n }\r\n if (this.scopes) {\r\n for (i = 0, l = this.scopes.length; i < l; i++) {\r\n this.scopes[i].stop(true);\r\n }\r\n }\r\n // nested scope, dereference from parent to avoid memory leaks\r\n if (this.parent && !fromParent) {\r\n // optimized O(1) removal\r\n const last = this.parent.scopes.pop();\r\n if (last && last !== this) {\r\n this.parent.scopes[this.index] = last;\r\n last.index = this.index;\r\n }\r\n }\r\n this.active = false;\r\n }\r\n }\r\n}\r\nfunction effectScope(detached) {\r\n return new EffectScope(detached);\r\n}\r\nfunction recordEffectScope(effect, scope = activeEffectScope) {\r\n if (scope && scope.active) {\r\n scope.effects.push(effect);\r\n }\r\n}\r\nfunction getCurrentScope() {\r\n return activeEffectScope;\r\n}\r\nfunction onScopeDispose(fn) {\r\n if (activeEffectScope) {\r\n activeEffectScope.cleanups.push(fn);\r\n }\r\n else if ((true)) {\r\n warn(`onScopeDispose() is called when there is no active effect scope` +\r\n ` to be associated with.`);\r\n }\r\n}\n\nconst createDep = (effects) => {\r\n const dep = new Set(effects);\r\n dep.w = 0;\r\n dep.n = 0;\r\n return dep;\r\n};\r\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\r\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\r\nconst initDepMarkers = ({ deps }) => {\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].w |= trackOpBit; // set was tracked\r\n }\r\n }\r\n};\r\nconst finalizeDepMarkers = (effect) => {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n let ptr = 0;\r\n for (let i = 0; i < deps.length; i++) {\r\n const dep = deps[i];\r\n if (wasTracked(dep) && !newTracked(dep)) {\r\n dep.delete(effect);\r\n }\r\n else {\r\n deps[ptr++] = dep;\r\n }\r\n // clear bits\r\n dep.w &= ~trackOpBit;\r\n dep.n &= ~trackOpBit;\r\n }\r\n deps.length = ptr;\r\n }\r\n};\n\nconst targetMap = new WeakMap();\r\n// The number of effects currently being tracked recursively.\r\nlet effectTrackDepth = 0;\r\nlet trackOpBit = 1;\r\n/**\r\n * The bitwise track markers support at most 30 levels of recursion.\r\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\r\n * When recursion depth is greater, fall back to using a full cleanup.\r\n */\r\nconst maxMarkerBits = 30;\r\nlet activeEffect;\r\nconst ITERATE_KEY = Symbol(( true) ? 'iterate' : undefined);\r\nconst MAP_KEY_ITERATE_KEY = Symbol(( true) ? 'Map key iterate' : undefined);\r\nclass ReactiveEffect {\r\n constructor(fn, scheduler = null, scope) {\r\n this.fn = fn;\r\n this.scheduler = scheduler;\r\n this.active = true;\r\n this.deps = [];\r\n this.parent = undefined;\r\n recordEffectScope(this, scope);\r\n }\r\n run() {\r\n if (!this.active) {\r\n return this.fn();\r\n }\r\n let parent = activeEffect;\r\n let lastShouldTrack = shouldTrack;\r\n while (parent) {\r\n if (parent === this) {\r\n return;\r\n }\r\n parent = parent.parent;\r\n }\r\n try {\r\n this.parent = activeEffect;\r\n activeEffect = this;\r\n shouldTrack = true;\r\n trackOpBit = 1 << ++effectTrackDepth;\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n initDepMarkers(this);\r\n }\r\n else {\r\n cleanupEffect(this);\r\n }\r\n return this.fn();\r\n }\r\n finally {\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n finalizeDepMarkers(this);\r\n }\r\n trackOpBit = 1 << --effectTrackDepth;\r\n activeEffect = this.parent;\r\n shouldTrack = lastShouldTrack;\r\n this.parent = undefined;\r\n }\r\n }\r\n stop() {\r\n if (this.active) {\r\n cleanupEffect(this);\r\n if (this.onStop) {\r\n this.onStop();\r\n }\r\n this.active = false;\r\n }\r\n }\r\n}\r\nfunction cleanupEffect(effect) {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].delete(effect);\r\n }\r\n deps.length = 0;\r\n }\r\n}\r\nfunction effect(fn, options) {\r\n if (fn.effect) {\r\n fn = fn.effect.fn;\r\n }\r\n const _effect = new ReactiveEffect(fn);\r\n if (options) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_effect, options);\r\n if (options.scope)\r\n recordEffectScope(_effect, options.scope);\r\n }\r\n if (!options || !options.lazy) {\r\n _effect.run();\r\n }\r\n const runner = _effect.run.bind(_effect);\r\n runner.effect = _effect;\r\n return runner;\r\n}\r\nfunction stop(runner) {\r\n runner.effect.stop();\r\n}\r\nlet shouldTrack = true;\r\nconst trackStack = [];\r\nfunction pauseTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = false;\r\n}\r\nfunction enableTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = true;\r\n}\r\nfunction resetTracking() {\r\n const last = trackStack.pop();\r\n shouldTrack = last === undefined ? true : last;\r\n}\r\nfunction track(target, type, key) {\r\n if (shouldTrack && activeEffect) {\r\n let depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n targetMap.set(target, (depsMap = new Map()));\r\n }\r\n let dep = depsMap.get(key);\r\n if (!dep) {\r\n depsMap.set(key, (dep = createDep()));\r\n }\r\n const eventInfo = ( true)\r\n ? { effect: activeEffect, target, type, key }\r\n : undefined;\r\n trackEffects(dep, eventInfo);\r\n }\r\n}\r\nfunction trackEffects(dep, debuggerEventExtraInfo) {\r\n let shouldTrack = false;\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n if (!newTracked(dep)) {\r\n dep.n |= trackOpBit; // set newly tracked\r\n shouldTrack = !wasTracked(dep);\r\n }\r\n }\r\n else {\r\n // Full cleanup mode.\r\n shouldTrack = !dep.has(activeEffect);\r\n }\r\n if (shouldTrack) {\r\n dep.add(activeEffect);\r\n activeEffect.deps.push(dep);\r\n if (( true) && activeEffect.onTrack) {\r\n activeEffect.onTrack(Object.assign({\r\n effect: activeEffect\r\n }, debuggerEventExtraInfo));\r\n }\r\n }\r\n}\r\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\r\n const depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n // never been tracked\r\n return;\r\n }\r\n let deps = [];\r\n if (type === \"clear\" /* CLEAR */) {\r\n // collection being cleared\r\n // trigger all effects for target\r\n deps = [...depsMap.values()];\r\n }\r\n else if (key === 'length' && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(target)) {\r\n depsMap.forEach((dep, key) => {\r\n if (key === 'length' || key >= newValue) {\r\n deps.push(dep);\r\n }\r\n });\r\n }\r\n else {\r\n // schedule runs for SET | ADD | DELETE\r\n if (key !== void 0) {\r\n deps.push(depsMap.get(key));\r\n }\r\n // also run for iteration key on ADD | DELETE | Map.SET\r\n switch (type) {\r\n case \"add\" /* ADD */:\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isMap\"])(target)) {\r\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isIntegerKey\"])(key)) {\r\n // new index added to array -> length changes\r\n deps.push(depsMap.get('length'));\r\n }\r\n break;\r\n case \"delete\" /* DELETE */:\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isMap\"])(target)) {\r\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n break;\r\n case \"set\" /* SET */:\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isMap\"])(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n }\r\n break;\r\n }\r\n }\r\n const eventInfo = ( true)\r\n ? { target, type, key, newValue, oldValue, oldTarget }\r\n : undefined;\r\n if (deps.length === 1) {\r\n if (deps[0]) {\r\n if ((true)) {\r\n triggerEffects(deps[0], eventInfo);\r\n }\r\n else {}\r\n }\r\n }\r\n else {\r\n const effects = [];\r\n for (const dep of deps) {\r\n if (dep) {\r\n effects.push(...dep);\r\n }\r\n }\r\n if ((true)) {\r\n triggerEffects(createDep(effects), eventInfo);\r\n }\r\n else {}\r\n }\r\n}\r\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\r\n // spread into array for stabilization\r\n for (const effect of Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(dep) ? dep : [...dep]) {\r\n if (effect !== activeEffect || effect.allowRecurse) {\r\n if (( true) && effect.onTrigger) {\r\n effect.onTrigger(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({ effect }, debuggerEventExtraInfo));\r\n }\r\n if (effect.scheduler) {\r\n effect.scheduler();\r\n }\r\n else {\r\n effect.run();\r\n }\r\n }\r\n }\r\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeMap\"])(`__proto__,__v_isRef,__isVue`);\r\nconst builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol)\r\n .map(key => Symbol[key])\r\n .filter(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isSymbol\"]));\r\nconst get = /*#__PURE__*/ createGetter();\r\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\r\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\r\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\r\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\r\nfunction createArrayInstrumentations() {\r\n const instrumentations = {};\r\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\r\n instrumentations[key] = function (...args) {\r\n const arr = toRaw(this);\r\n for (let i = 0, l = this.length; i < l; i++) {\r\n track(arr, \"get\" /* GET */, i + '');\r\n }\r\n // we run the method using the original args first (which may be reactive)\r\n const res = arr[key](...args);\r\n if (res === -1 || res === false) {\r\n // if that didn't work, run it again using raw values.\r\n return arr[key](...args.map(toRaw));\r\n }\r\n else {\r\n return res;\r\n }\r\n };\r\n });\r\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\r\n instrumentations[key] = function (...args) {\r\n pauseTracking();\r\n const res = toRaw(this)[key].apply(this, args);\r\n resetTracking();\r\n return res;\r\n };\r\n });\r\n return instrumentations;\r\n}\r\nfunction createGetter(isReadonly = false, shallow = false) {\r\n return function get(target, key, receiver) {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_isShallow\" /* IS_SHALLOW */) {\r\n return shallow;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */ &&\r\n receiver ===\r\n (isReadonly\r\n ? shallow\r\n ? shallowReadonlyMap\r\n : readonlyMap\r\n : shallow\r\n ? shallowReactiveMap\r\n : reactiveMap).get(target)) {\r\n return target;\r\n }\r\n const targetIsArray = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(target);\r\n if (!isReadonly && targetIsArray && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasOwn\"])(arrayInstrumentations, key)) {\r\n return Reflect.get(arrayInstrumentations, key, receiver);\r\n }\r\n const res = Reflect.get(target, key, receiver);\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isSymbol\"])(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\r\n return res;\r\n }\r\n if (!isReadonly) {\r\n track(target, \"get\" /* GET */, key);\r\n }\r\n if (shallow) {\r\n return res;\r\n }\r\n if (isRef(res)) {\r\n // ref unwrapping - does not apply for Array + integer key.\r\n const shouldUnwrap = !targetIsArray || !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isIntegerKey\"])(key);\r\n return shouldUnwrap ? res.value : res;\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(res)) {\r\n // Convert returned value into a proxy as well. we do the isObject check\r\n // here to avoid invalid value warning. Also need to lazy access readonly\r\n // and reactive here to avoid circular dependency.\r\n return isReadonly ? readonly(res) : reactive(res);\r\n }\r\n return res;\r\n };\r\n}\r\nconst set = /*#__PURE__*/ createSetter();\r\nconst shallowSet = /*#__PURE__*/ createSetter(true);\r\nfunction createSetter(shallow = false) {\r\n return function set(target, key, value, receiver) {\r\n let oldValue = target[key];\r\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\r\n return false;\r\n }\r\n if (!shallow && !isReadonly(value)) {\r\n if (!isShallow(value)) {\r\n value = toRaw(value);\r\n oldValue = toRaw(oldValue);\r\n }\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(target) && isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n }\r\n const hadKey = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(target) && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isIntegerKey\"])(key)\r\n ? Number(key) < target.length\r\n : Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasOwn\"])(target, key);\r\n const result = Reflect.set(target, key, value, receiver);\r\n // don't trigger if target is something up in the prototype chain of original\r\n if (target === toRaw(receiver)) {\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasChanged\"])(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n }\r\n return result;\r\n };\r\n}\r\nfunction deleteProperty(target, key) {\r\n const hadKey = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasOwn\"])(target, key);\r\n const oldValue = target[key];\r\n const result = Reflect.deleteProperty(target, key);\r\n if (result && hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction has(target, key) {\r\n const result = Reflect.has(target, key);\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isSymbol\"])(key) || !builtInSymbols.has(key)) {\r\n track(target, \"has\" /* HAS */, key);\r\n }\r\n return result;\r\n}\r\nfunction ownKeys(target) {\r\n track(target, \"iterate\" /* ITERATE */, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(target) ? 'length' : ITERATE_KEY);\r\n return Reflect.ownKeys(target);\r\n}\r\nconst mutableHandlers = {\r\n get,\r\n set,\r\n deleteProperty,\r\n has,\r\n ownKeys\r\n};\r\nconst readonlyHandlers = {\r\n get: readonlyGet,\r\n set(target, key) {\r\n if ((true)) {\r\n console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n if ((true)) {\r\n console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n }\r\n};\r\nconst shallowReactiveHandlers = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, mutableHandlers, {\r\n get: shallowGet,\r\n set: shallowSet\r\n});\r\n// Props handlers are special in the sense that it should not unwrap top-level\r\n// refs (in order to allow refs to be explicitly passed down), but should\r\n// retain the reactivity of the normal readonly object.\r\nconst shallowReadonlyHandlers = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, readonlyHandlers, {\r\n get: shallowReadonlyGet\r\n});\n\nconst toShallow = (value) => value;\r\nconst getProto = (v) => Reflect.getPrototypeOf(v);\r\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\r\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\r\n // of the value\r\n target = target[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (key !== rawKey) {\r\n !isReadonly && track(rawTarget, \"get\" /* GET */, key);\r\n }\r\n !isReadonly && track(rawTarget, \"get\" /* GET */, rawKey);\r\n const { has } = getProto(rawTarget);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n if (has.call(rawTarget, key)) {\r\n return wrap(target.get(key));\r\n }\r\n else if (has.call(rawTarget, rawKey)) {\r\n return wrap(target.get(rawKey));\r\n }\r\n else if (target !== rawTarget) {\r\n // #3602 readonly(reactive(Map))\r\n // ensure that the nested reactive `Map` can do tracking for itself\r\n target.get(key);\r\n }\r\n}\r\nfunction has$1(key, isReadonly = false) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (key !== rawKey) {\r\n !isReadonly && track(rawTarget, \"has\" /* HAS */, key);\r\n }\r\n !isReadonly && track(rawTarget, \"has\" /* HAS */, rawKey);\r\n return key === rawKey\r\n ? target.has(key)\r\n : target.has(key) || target.has(rawKey);\r\n}\r\nfunction size(target, isReadonly = false) {\r\n target = target[\"__v_raw\" /* RAW */];\r\n !isReadonly && track(toRaw(target), \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return Reflect.get(target, 'size', target);\r\n}\r\nfunction add(value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const proto = getProto(target);\r\n const hadKey = proto.has.call(target, value);\r\n if (!hadKey) {\r\n target.add(value);\r\n trigger(target, \"add\" /* ADD */, value, value);\r\n }\r\n return this;\r\n}\r\nfunction set$1(key, value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((true)) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get.call(target, key);\r\n target.set(key, value);\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasChanged\"])(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n return this;\r\n}\r\nfunction deleteEntry(key) {\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((true)) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get ? get.call(target, key) : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.delete(key);\r\n if (hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction clear() {\r\n const target = toRaw(this);\r\n const hadItems = target.size !== 0;\r\n const oldTarget = ( true)\r\n ? Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isMap\"])(target)\r\n ? new Map(target)\r\n : new Set(target)\r\n : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.clear();\r\n if (hadItems) {\r\n trigger(target, \"clear\" /* CLEAR */, undefined, undefined, oldTarget);\r\n }\r\n return result;\r\n}\r\nfunction createForEach(isReadonly, isShallow) {\r\n return function forEach(callback, thisArg) {\r\n const observed = this;\r\n const target = observed[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n !isReadonly && track(rawTarget, \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return target.forEach((value, key) => {\r\n // important: make sure the callback is\r\n // 1. invoked with the reactive map as `this` and 3rd arg\r\n // 2. the value received should be a corresponding reactive/readonly.\r\n return callback.call(thisArg, wrap(value), wrap(key), observed);\r\n });\r\n };\r\n}\r\nfunction createIterableMethod(method, isReadonly, isShallow) {\r\n return function (...args) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const targetIsMap = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isMap\"])(rawTarget);\r\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\r\n const isKeyOnly = method === 'keys' && targetIsMap;\r\n const innerIterator = target[method](...args);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n !isReadonly &&\r\n track(rawTarget, \"iterate\" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\r\n // return a wrapped iterator which returns observed versions of the\r\n // values emitted from the real iterator\r\n return {\r\n // iterator protocol\r\n next() {\r\n const { value, done } = innerIterator.next();\r\n return done\r\n ? { value, done }\r\n : {\r\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\r\n done\r\n };\r\n },\r\n // iterable protocol\r\n [Symbol.iterator]() {\r\n return this;\r\n }\r\n };\r\n };\r\n}\r\nfunction createReadonlyMethod(type) {\r\n return function (...args) {\r\n if ((true)) {\r\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\r\n console.warn(`${Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"capitalize\"])(type)} operation ${key}failed: target is readonly.`, toRaw(this));\r\n }\r\n return type === \"delete\" /* DELETE */ ? false : this;\r\n };\r\n}\r\nfunction createInstrumentations() {\r\n const mutableInstrumentations = {\r\n get(key) {\r\n return get$1(this, key);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, false)\r\n };\r\n const shallowInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, false, true);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, true)\r\n };\r\n const readonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, false)\r\n };\r\n const shallowReadonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, true)\r\n };\r\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\r\n iteratorMethods.forEach(method => {\r\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\r\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\r\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\r\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\r\n });\r\n return [\r\n mutableInstrumentations,\r\n readonlyInstrumentations,\r\n shallowInstrumentations,\r\n shallowReadonlyInstrumentations\r\n ];\r\n}\r\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\r\nfunction createInstrumentationGetter(isReadonly, shallow) {\r\n const instrumentations = shallow\r\n ? isReadonly\r\n ? shallowReadonlyInstrumentations\r\n : shallowInstrumentations\r\n : isReadonly\r\n ? readonlyInstrumentations\r\n : mutableInstrumentations;\r\n return (target, key, receiver) => {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */) {\r\n return target;\r\n }\r\n return Reflect.get(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasOwn\"])(instrumentations, key) && key in target\r\n ? instrumentations\r\n : target, key, receiver);\r\n };\r\n}\r\nconst mutableCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\r\n};\r\nconst shallowCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\r\n};\r\nconst readonlyCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\r\n};\r\nconst shallowReadonlyCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\r\n};\r\nfunction checkIdentityKeys(target, has, key) {\r\n const rawKey = toRaw(key);\r\n if (rawKey !== key && has.call(target, rawKey)) {\r\n const type = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"toRawType\"])(target);\r\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\r\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\r\n `which can lead to inconsistencies. ` +\r\n `Avoid differentiating between the raw and reactive versions ` +\r\n `of an object and only use the reactive version if possible.`);\r\n }\r\n}\n\nconst reactiveMap = new WeakMap();\r\nconst shallowReactiveMap = new WeakMap();\r\nconst readonlyMap = new WeakMap();\r\nconst shallowReadonlyMap = new WeakMap();\r\nfunction targetTypeMap(rawType) {\r\n switch (rawType) {\r\n case 'Object':\r\n case 'Array':\r\n return 1 /* COMMON */;\r\n case 'Map':\r\n case 'Set':\r\n case 'WeakMap':\r\n case 'WeakSet':\r\n return 2 /* COLLECTION */;\r\n default:\r\n return 0 /* INVALID */;\r\n }\r\n}\r\nfunction getTargetType(value) {\r\n return value[\"__v_skip\" /* SKIP */] || !Object.isExtensible(value)\r\n ? 0 /* INVALID */\r\n : targetTypeMap(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"toRawType\"])(value));\r\n}\r\nfunction reactive(target) {\r\n // if trying to observe a readonly proxy, return the readonly version.\r\n if (isReadonly(target)) {\r\n return target;\r\n }\r\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\r\n}\r\n/**\r\n * Return a shallowly-reactive copy of the original object, where only the root\r\n * level properties are reactive. It also does not auto-unwrap refs (even at the\r\n * root level).\r\n */\r\nfunction shallowReactive(target) {\r\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\r\n}\r\n/**\r\n * Creates a readonly copy of the original object. Note the returned copy is not\r\n * made reactive, but `readonly` can be called on an already reactive object.\r\n */\r\nfunction readonly(target) {\r\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\r\n}\r\n/**\r\n * Returns a reactive-copy of the original object, where only the root level\r\n * properties are readonly, and does NOT unwrap refs nor recursively convert\r\n * returned properties.\r\n * This is used for creating the props proxy object for stateful components.\r\n */\r\nfunction shallowReadonly(target) {\r\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\r\n}\r\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(target)) {\r\n if ((true)) {\r\n console.warn(`value cannot be made reactive: ${String(target)}`);\r\n }\r\n return target;\r\n }\r\n // target is already a Proxy, return it.\r\n // exception: calling readonly() on a reactive object\r\n if (target[\"__v_raw\" /* RAW */] &&\r\n !(isReadonly && target[\"__v_isReactive\" /* IS_REACTIVE */])) {\r\n return target;\r\n }\r\n // target already has corresponding Proxy\r\n const existingProxy = proxyMap.get(target);\r\n if (existingProxy) {\r\n return existingProxy;\r\n }\r\n // only a whitelist of value types can be observed.\r\n const targetType = getTargetType(target);\r\n if (targetType === 0 /* INVALID */) {\r\n return target;\r\n }\r\n const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);\r\n proxyMap.set(target, proxy);\r\n return proxy;\r\n}\r\nfunction isReactive(value) {\r\n if (isReadonly(value)) {\r\n return isReactive(value[\"__v_raw\" /* RAW */]);\r\n }\r\n return !!(value && value[\"__v_isReactive\" /* IS_REACTIVE */]);\r\n}\r\nfunction isReadonly(value) {\r\n return !!(value && value[\"__v_isReadonly\" /* IS_READONLY */]);\r\n}\r\nfunction isShallow(value) {\r\n return !!(value && value[\"__v_isShallow\" /* IS_SHALLOW */]);\r\n}\r\nfunction isProxy(value) {\r\n return isReactive(value) || isReadonly(value);\r\n}\r\nfunction toRaw(observed) {\r\n const raw = observed && observed[\"__v_raw\" /* RAW */];\r\n return raw ? toRaw(raw) : observed;\r\n}\r\nfunction markRaw(value) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"def\"])(value, \"__v_skip\" /* SKIP */, true);\r\n return value;\r\n}\r\nconst toReactive = (value) => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) ? reactive(value) : value;\r\nconst toReadonly = (value) => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\r\n if (shouldTrack && activeEffect) {\r\n ref = toRaw(ref);\r\n if ((true)) {\r\n trackEffects(ref.dep || (ref.dep = createDep()), {\r\n target: ref,\r\n type: \"get\" /* GET */,\r\n key: 'value'\r\n });\r\n }\r\n else {}\r\n }\r\n}\r\nfunction triggerRefValue(ref, newVal) {\r\n ref = toRaw(ref);\r\n if (ref.dep) {\r\n if ((true)) {\r\n triggerEffects(ref.dep, {\r\n target: ref,\r\n type: \"set\" /* SET */,\r\n key: 'value',\r\n newValue: newVal\r\n });\r\n }\r\n else {}\r\n }\r\n}\r\nfunction isRef(r) {\r\n return !!(r && r.__v_isRef === true);\r\n}\r\nfunction ref(value) {\r\n return createRef(value, false);\r\n}\r\nfunction shallowRef(value) {\r\n return createRef(value, true);\r\n}\r\nfunction createRef(rawValue, shallow) {\r\n if (isRef(rawValue)) {\r\n return rawValue;\r\n }\r\n return new RefImpl(rawValue, shallow);\r\n}\r\nclass RefImpl {\r\n constructor(value, __v_isShallow) {\r\n this.__v_isShallow = __v_isShallow;\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n this._rawValue = __v_isShallow ? value : toRaw(value);\r\n this._value = __v_isShallow ? value : toReactive(value);\r\n }\r\n get value() {\r\n trackRefValue(this);\r\n return this._value;\r\n }\r\n set value(newVal) {\r\n newVal = this.__v_isShallow ? newVal : toRaw(newVal);\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasChanged\"])(newVal, this._rawValue)) {\r\n this._rawValue = newVal;\r\n this._value = this.__v_isShallow ? newVal : toReactive(newVal);\r\n triggerRefValue(this, newVal);\r\n }\r\n }\r\n}\r\nfunction triggerRef(ref) {\r\n triggerRefValue(ref, ( true) ? ref.value : undefined);\r\n}\r\nfunction unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n}\r\nconst shallowUnwrapHandlers = {\r\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\r\n set: (target, key, value, receiver) => {\r\n const oldValue = target[key];\r\n if (isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n else {\r\n return Reflect.set(target, key, value, receiver);\r\n }\r\n }\r\n};\r\nfunction proxyRefs(objectWithRefs) {\r\n return isReactive(objectWithRefs)\r\n ? objectWithRefs\r\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\r\n}\r\nclass CustomRefImpl {\r\n constructor(factory) {\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\r\n this._get = get;\r\n this._set = set;\r\n }\r\n get value() {\r\n return this._get();\r\n }\r\n set value(newVal) {\r\n this._set(newVal);\r\n }\r\n}\r\nfunction customRef(factory) {\r\n return new CustomRefImpl(factory);\r\n}\r\nfunction toRefs(object) {\r\n if (( true) && !isProxy(object)) {\r\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\r\n }\r\n const ret = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(object) ? new Array(object.length) : {};\r\n for (const key in object) {\r\n ret[key] = toRef(object, key);\r\n }\r\n return ret;\r\n}\r\nclass ObjectRefImpl {\r\n constructor(_object, _key, _defaultValue) {\r\n this._object = _object;\r\n this._key = _key;\r\n this._defaultValue = _defaultValue;\r\n this.__v_isRef = true;\r\n }\r\n get value() {\r\n const val = this._object[this._key];\r\n return val === undefined ? this._defaultValue : val;\r\n }\r\n set value(newVal) {\r\n this._object[this._key] = newVal;\r\n }\r\n}\r\nfunction toRef(object, key, defaultValue) {\r\n const val = object[key];\r\n return isRef(val)\r\n ? val\r\n : new ObjectRefImpl(object, key, defaultValue);\r\n}\n\nclass ComputedRefImpl {\r\n constructor(getter, _setter, isReadonly, isSSR) {\r\n this._setter = _setter;\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n this._dirty = true;\r\n this.effect = new ReactiveEffect(getter, () => {\r\n if (!this._dirty) {\r\n this._dirty = true;\r\n triggerRefValue(this);\r\n }\r\n });\r\n this.effect.computed = this;\r\n this.effect.active = this._cacheable = !isSSR;\r\n this[\"__v_isReadonly\" /* IS_READONLY */] = isReadonly;\r\n }\r\n get value() {\r\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\r\n const self = toRaw(this);\r\n trackRefValue(self);\r\n if (self._dirty || !self._cacheable) {\r\n self._dirty = false;\r\n self._value = self.effect.run();\r\n }\r\n return self._value;\r\n }\r\n set value(newValue) {\r\n this._setter(newValue);\r\n }\r\n}\r\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\r\n let getter;\r\n let setter;\r\n const onlyGetter = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(getterOrOptions);\r\n if (onlyGetter) {\r\n getter = getterOrOptions;\r\n setter = ( true)\r\n ? () => {\r\n console.warn('Write operation failed: computed value is readonly');\r\n }\r\n : undefined;\r\n }\r\n else {\r\n getter = getterOrOptions.get;\r\n setter = getterOrOptions.set;\r\n }\r\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\r\n if (( true) && debugOptions && !isSSR) {\r\n cRef.effect.onTrack = debugOptions.onTrack;\r\n cRef.effect.onTrigger = debugOptions.onTrigger;\r\n }\r\n return cRef;\r\n}\n\nvar _a;\r\nconst tick = Promise.resolve();\r\nconst queue = [];\r\nlet queued = false;\r\nconst scheduler = (fn) => {\r\n queue.push(fn);\r\n if (!queued) {\r\n queued = true;\r\n tick.then(flush);\r\n }\r\n};\r\nconst flush = () => {\r\n for (let i = 0; i < queue.length; i++) {\r\n queue[i]();\r\n }\r\n queue.length = 0;\r\n queued = false;\r\n};\r\nclass DeferredComputedRefImpl {\r\n constructor(getter) {\r\n this.dep = undefined;\r\n this._dirty = true;\r\n this.__v_isRef = true;\r\n this[_a] = true;\r\n let compareTarget;\r\n let hasCompareTarget = false;\r\n let scheduled = false;\r\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\r\n if (this.dep) {\r\n if (computedTrigger) {\r\n compareTarget = this._value;\r\n hasCompareTarget = true;\r\n }\r\n else if (!scheduled) {\r\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\r\n scheduled = true;\r\n hasCompareTarget = false;\r\n scheduler(() => {\r\n if (this.effect.active && this._get() !== valueToCompare) {\r\n triggerRefValue(this);\r\n }\r\n scheduled = false;\r\n });\r\n }\r\n // chained upstream computeds are notified synchronously to ensure\r\n // value invalidation in case of sync access; normal effects are\r\n // deferred to be triggered in scheduler.\r\n for (const e of this.dep) {\r\n if (e.computed instanceof DeferredComputedRefImpl) {\r\n e.scheduler(true /* computedTrigger */);\r\n }\r\n }\r\n }\r\n this._dirty = true;\r\n });\r\n this.effect.computed = this;\r\n }\r\n _get() {\r\n if (this._dirty) {\r\n this._dirty = false;\r\n return (this._value = this.effect.run());\r\n }\r\n return this._value;\r\n }\r\n get value() {\r\n trackRefValue(this);\r\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\r\n return toRaw(this)._get();\r\n }\r\n}\r\n_a = \"__v_isReadonly\" /* IS_READONLY */;\r\nfunction deferredComputed(getter) {\r\n return new DeferredComputedRefImpl(getter);\r\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9yZWFjdGl2aXR5L2Rpc3QvcmVhY3Rpdml0eS5lc20tYnVuZGxlci5qcz9hMWU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrSzs7QUFFbEs7QUFDQSwrQkFBK0IsSUFBSTtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsT0FBTztBQUN2RDtBQUNBO0FBQ0EsaURBQWlELE9BQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELE9BQU87QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsT0FBTztBQUNoQztBQUNBLHVCQUF1QixpQkFBaUI7QUFDeEMsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQSx1QkFBdUIsaUJBQWlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixLQUFxQyxnQkFBZ0IsU0FBRTtBQUNuRixvQ0FBb0MsS0FBcUMsd0JBQXdCLFNBQUU7QUFDbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSx1QkFBdUIsaUJBQWlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFNO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsS0FBcUM7QUFDaEUsZUFBZTtBQUNmLGNBQWMsU0FBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsMkRBQU87QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJEQUFPO0FBQzVCO0FBQ0Esd0JBQXdCLHlEQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnRUFBWTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJEQUFPO0FBQzVCO0FBQ0Esd0JBQXdCLHlEQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IseURBQUs7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixLQUFxQztBQUM1RCxXQUFXO0FBQ1gsVUFBVSxTQUFTO0FBQ25CO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBLGlCQUFpQixFQUVKO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0EsYUFBYSxFQUVKO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMkRBQU87QUFDaEM7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQsaUNBQWlDLDBEQUFNLEVBQUUsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUMsMkRBQU87QUFDaEQ7QUFDQTtBQUNBLFlBQVksb0RBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDJEQUFPO0FBQ3JDLDRDQUE0QywwREFBTTtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxZQUFZLDREQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGdFQUFZO0FBQ2hFO0FBQ0E7QUFDQSxZQUFZLDREQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwyREFBTyxZQUFZLGdFQUFZO0FBQ3REO0FBQ0EsY0FBYywwREFBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsOERBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMERBQU07QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyw0REFBUTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLDJEQUFPO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQsa0RBQWtELFlBQVk7QUFDOUQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGFBQWEsSUFBcUM7QUFDbEQscURBQXFELFlBQVk7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsMERBQU0sR0FBRztBQUN2RDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QywwREFBTSxHQUFHO0FBQ3ZEO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOERBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLEtBQXFDO0FBQzVELFVBQVUseURBQUs7QUFDZjtBQUNBO0FBQ0EsVUFBVSxTQUFTO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix5REFBSztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGNBQWM7QUFDckM7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRCw2Q0FBNkMsUUFBUTtBQUNyRCw0QkFBNEIsOERBQVUsT0FBTyxhQUFhLElBQUk7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMERBQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkRBQVM7QUFDOUIsaUNBQWlDLEtBQUs7QUFDdEMsMENBQTBDLGlDQUFpQztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw2REFBUztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDREQUFRO0FBQ2pCLGFBQWEsSUFBcUM7QUFDbEQsMkRBQTJELGVBQWU7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFHO0FBQ1A7QUFDQTtBQUNBLDhCQUE4Qiw0REFBUTtBQUN0Qyw4QkFBOEIsNERBQVE7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhLEVBRUo7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsYUFBYSxFQUVKO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLEtBQXFDLGdCQUFnQixTQUFNO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBLGdCQUFnQiwyREFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDhEQUFVO0FBQ2pDO0FBQ0E7QUFDQSxrQkFBa0IsS0FBcUM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUU0WSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL3JlYWN0aXZpdHkvZGlzdC9yZWFjdGl2aXR5LmVzbS1idW5kbGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kLCBpc0FycmF5LCBpc01hcCwgaXNJbnRlZ2VyS2V5LCBpc1N5bWJvbCwgaGFzT3duLCBpc09iamVjdCwgaGFzQ2hhbmdlZCwgbWFrZU1hcCwgY2FwaXRhbGl6ZSwgdG9SYXdUeXBlLCBkZWYsIGlzRnVuY3Rpb24sIE5PT1AgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIHdhcm4obXNnLCAuLi5hcmdzKSB7XHJcbiAgICBjb25zb2xlLndhcm4oYFtWdWUgd2Fybl0gJHttc2d9YCwgLi4uYXJncyk7XHJcbn1cblxubGV0IGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG5jbGFzcyBFZmZlY3RTY29wZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihkZXRhY2hlZCA9IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2xlYW51cHMgPSBbXTtcclxuICAgICAgICBpZiAoIWRldGFjaGVkICYmIGFjdGl2ZUVmZmVjdFNjb3BlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gYWN0aXZlRWZmZWN0U2NvcGU7XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXggPVxyXG4gICAgICAgICAgICAgICAgKGFjdGl2ZUVmZmVjdFNjb3BlLnNjb3BlcyB8fCAoYWN0aXZlRWZmZWN0U2NvcGUuc2NvcGVzID0gW10pKS5wdXNoKHRoaXMpIC0gMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBydW4oZm4pIHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHJldHVybiBmbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSB0aGlzLnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgY2Fubm90IHJ1biBhbiBpbmFjdGl2ZSBlZmZlY3Qgc2NvcGUuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb24oKSB7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgb2ZmKCkge1xyXG4gICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gdGhpcy5wYXJlbnQ7XHJcbiAgICB9XHJcbiAgICBzdG9wKGZyb21QYXJlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgbGV0IGksIGw7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLmVmZmVjdHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVmZmVjdHNbaV0uc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLmNsZWFudXBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwc1tpXSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNjb3Blcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuc2NvcGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NvcGVzW2ldLnN0b3AodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbmVzdGVkIHNjb3BlLCBkZXJlZmVyZW5jZSBmcm9tIHBhcmVudCB0byBhdm9pZCBtZW1vcnkgbGVha3NcclxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50ICYmICFmcm9tUGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBvcHRpbWl6ZWQgTygxKSByZW1vdmFsXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5wYXJlbnQuc2NvcGVzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgJiYgbGFzdCAhPT0gdGhpcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNjb3Blc1t0aGlzLmluZGV4XSA9IGxhc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdC5pbmRleCA9IHRoaXMuaW5kZXg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZWZmZWN0U2NvcGUoZGV0YWNoZWQpIHtcclxuICAgIHJldHVybiBuZXcgRWZmZWN0U2NvcGUoZGV0YWNoZWQpO1xyXG59XHJcbmZ1bmN0aW9uIHJlY29yZEVmZmVjdFNjb3BlKGVmZmVjdCwgc2NvcGUgPSBhY3RpdmVFZmZlY3RTY29wZSkge1xyXG4gICAgaWYgKHNjb3BlICYmIHNjb3BlLmFjdGl2ZSkge1xyXG4gICAgICAgIHNjb3BlLmVmZmVjdHMucHVzaChlZmZlY3QpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEN1cnJlbnRTY29wZSgpIHtcclxuICAgIHJldHVybiBhY3RpdmVFZmZlY3RTY29wZTtcclxufVxyXG5mdW5jdGlvbiBvblNjb3BlRGlzcG9zZShmbikge1xyXG4gICAgaWYgKGFjdGl2ZUVmZmVjdFNjb3BlKSB7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUuY2xlYW51cHMucHVzaChmbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBvblNjb3BlRGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHRoZXJlIGlzIG5vIGFjdGl2ZSBlZmZlY3Qgc2NvcGVgICtcclxuICAgICAgICAgICAgYCB0byBiZSBhc3NvY2lhdGVkIHdpdGguYCk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgY3JlYXRlRGVwID0gKGVmZmVjdHMpID0+IHtcclxuICAgIGNvbnN0IGRlcCA9IG5ldyBTZXQoZWZmZWN0cyk7XHJcbiAgICBkZXAudyA9IDA7XHJcbiAgICBkZXAubiA9IDA7XHJcbiAgICByZXR1cm4gZGVwO1xyXG59O1xyXG5jb25zdCB3YXNUcmFja2VkID0gKGRlcCkgPT4gKGRlcC53ICYgdHJhY2tPcEJpdCkgPiAwO1xyXG5jb25zdCBuZXdUcmFja2VkID0gKGRlcCkgPT4gKGRlcC5uICYgdHJhY2tPcEJpdCkgPiAwO1xyXG5jb25zdCBpbml0RGVwTWFya2VycyA9ICh7IGRlcHMgfSkgPT4ge1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGRlcHNbaV0udyB8PSB0cmFja09wQml0OyAvLyBzZXQgd2FzIHRyYWNrZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGZpbmFsaXplRGVwTWFya2VycyA9IChlZmZlY3QpID0+IHtcclxuICAgIGNvbnN0IHsgZGVwcyB9ID0gZWZmZWN0O1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHB0ciA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlcCA9IGRlcHNbaV07XHJcbiAgICAgICAgICAgIGlmICh3YXNUcmFja2VkKGRlcCkgJiYgIW5ld1RyYWNrZWQoZGVwKSkge1xyXG4gICAgICAgICAgICAgICAgZGVwLmRlbGV0ZShlZmZlY3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGVwc1twdHIrK10gPSBkZXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2xlYXIgYml0c1xyXG4gICAgICAgICAgICBkZXAudyAmPSB+dHJhY2tPcEJpdDtcclxuICAgICAgICAgICAgZGVwLm4gJj0gfnRyYWNrT3BCaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlcHMubGVuZ3RoID0gcHRyO1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCB0YXJnZXRNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG4vLyBUaGUgbnVtYmVyIG9mIGVmZmVjdHMgY3VycmVudGx5IGJlaW5nIHRyYWNrZWQgcmVjdXJzaXZlbHkuXHJcbmxldCBlZmZlY3RUcmFja0RlcHRoID0gMDtcclxubGV0IHRyYWNrT3BCaXQgPSAxO1xyXG4vKipcclxuICogVGhlIGJpdHdpc2UgdHJhY2sgbWFya2VycyBzdXBwb3J0IGF0IG1vc3QgMzAgbGV2ZWxzIG9mIHJlY3Vyc2lvbi5cclxuICogVGhpcyB2YWx1ZSBpcyBjaG9zZW4gdG8gZW5hYmxlIG1vZGVybiBKUyBlbmdpbmVzIHRvIHVzZSBhIFNNSSBvbiBhbGwgcGxhdGZvcm1zLlxyXG4gKiBXaGVuIHJlY3Vyc2lvbiBkZXB0aCBpcyBncmVhdGVyLCBmYWxsIGJhY2sgdG8gdXNpbmcgYSBmdWxsIGNsZWFudXAuXHJcbiAqL1xyXG5jb25zdCBtYXhNYXJrZXJCaXRzID0gMzA7XHJcbmxldCBhY3RpdmVFZmZlY3Q7XHJcbmNvbnN0IElURVJBVEVfS0VZID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdpdGVyYXRlJyA6ICcnKTtcclxuY29uc3QgTUFQX0tFWV9JVEVSQVRFX0tFWSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnTWFwIGtleSBpdGVyYXRlJyA6ICcnKTtcclxuY2xhc3MgUmVhY3RpdmVFZmZlY3Qge1xyXG4gICAgY29uc3RydWN0b3IoZm4sIHNjaGVkdWxlciA9IG51bGwsIHNjb3BlKSB7XHJcbiAgICAgICAgdGhpcy5mbiA9IGZuO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRlcHMgPSBbXTtcclxuICAgICAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZWNvcmRFZmZlY3RTY29wZSh0aGlzLCBzY29wZSk7XHJcbiAgICB9XHJcbiAgICBydW4oKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcGFyZW50ID0gYWN0aXZlRWZmZWN0O1xyXG4gICAgICAgIGxldCBsYXN0U2hvdWxkVHJhY2sgPSBzaG91bGRUcmFjaztcclxuICAgICAgICB3aGlsZSAocGFyZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IHRoaXMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IGFjdGl2ZUVmZmVjdDtcclxuICAgICAgICAgICAgYWN0aXZlRWZmZWN0ID0gdGhpcztcclxuICAgICAgICAgICAgc2hvdWxkVHJhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB0cmFja09wQml0ID0gMSA8PCArK2VmZmVjdFRyYWNrRGVwdGg7XHJcbiAgICAgICAgICAgIGlmIChlZmZlY3RUcmFja0RlcHRoIDw9IG1heE1hcmtlckJpdHMpIHtcclxuICAgICAgICAgICAgICAgIGluaXREZXBNYXJrZXJzKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2xlYW51cEVmZmVjdCh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgaWYgKGVmZmVjdFRyYWNrRGVwdGggPD0gbWF4TWFya2VyQml0cykge1xyXG4gICAgICAgICAgICAgICAgZmluYWxpemVEZXBNYXJrZXJzKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRyYWNrT3BCaXQgPSAxIDw8IC0tZWZmZWN0VHJhY2tEZXB0aDtcclxuICAgICAgICAgICAgYWN0aXZlRWZmZWN0ID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHNob3VsZFRyYWNrID0gbGFzdFNob3VsZFRyYWNrO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzdG9wKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICBjbGVhbnVwRWZmZWN0KHRoaXMpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vblN0b3ApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY2xlYW51cEVmZmVjdChlZmZlY3QpIHtcclxuICAgIGNvbnN0IHsgZGVwcyB9ID0gZWZmZWN0O1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGRlcHNbaV0uZGVsZXRlKGVmZmVjdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlcHMubGVuZ3RoID0gMDtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBlZmZlY3QoZm4sIG9wdGlvbnMpIHtcclxuICAgIGlmIChmbi5lZmZlY3QpIHtcclxuICAgICAgICBmbiA9IGZuLmVmZmVjdC5mbjtcclxuICAgIH1cclxuICAgIGNvbnN0IF9lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZm4pO1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICBleHRlbmQoX2VmZmVjdCwgb3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc2NvcGUpXHJcbiAgICAgICAgICAgIHJlY29yZEVmZmVjdFNjb3BlKF9lZmZlY3QsIG9wdGlvbnMuc2NvcGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLmxhenkpIHtcclxuICAgICAgICBfZWZmZWN0LnJ1bigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcnVubmVyID0gX2VmZmVjdC5ydW4uYmluZChfZWZmZWN0KTtcclxuICAgIHJ1bm5lci5lZmZlY3QgPSBfZWZmZWN0O1xyXG4gICAgcmV0dXJuIHJ1bm5lcjtcclxufVxyXG5mdW5jdGlvbiBzdG9wKHJ1bm5lcikge1xyXG4gICAgcnVubmVyLmVmZmVjdC5zdG9wKCk7XHJcbn1cclxubGV0IHNob3VsZFRyYWNrID0gdHJ1ZTtcclxuY29uc3QgdHJhY2tTdGFjayA9IFtdO1xyXG5mdW5jdGlvbiBwYXVzZVRyYWNraW5nKCkge1xyXG4gICAgdHJhY2tTdGFjay5wdXNoKHNob3VsZFRyYWNrKTtcclxuICAgIHNob3VsZFRyYWNrID0gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gZW5hYmxlVHJhY2tpbmcoKSB7XHJcbiAgICB0cmFja1N0YWNrLnB1c2goc2hvdWxkVHJhY2spO1xyXG4gICAgc2hvdWxkVHJhY2sgPSB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIHJlc2V0VHJhY2tpbmcoKSB7XHJcbiAgICBjb25zdCBsYXN0ID0gdHJhY2tTdGFjay5wb3AoKTtcclxuICAgIHNob3VsZFRyYWNrID0gbGFzdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGxhc3Q7XHJcbn1cclxuZnVuY3Rpb24gdHJhY2sodGFyZ2V0LCB0eXBlLCBrZXkpIHtcclxuICAgIGlmIChzaG91bGRUcmFjayAmJiBhY3RpdmVFZmZlY3QpIHtcclxuICAgICAgICBsZXQgZGVwc01hcCA9IHRhcmdldE1hcC5nZXQodGFyZ2V0KTtcclxuICAgICAgICBpZiAoIWRlcHNNYXApIHtcclxuICAgICAgICAgICAgdGFyZ2V0TWFwLnNldCh0YXJnZXQsIChkZXBzTWFwID0gbmV3IE1hcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkZXAgPSBkZXBzTWFwLmdldChrZXkpO1xyXG4gICAgICAgIGlmICghZGVwKSB7XHJcbiAgICAgICAgICAgIGRlcHNNYXAuc2V0KGtleSwgKGRlcCA9IGNyZWF0ZURlcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGV2ZW50SW5mbyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICA/IHsgZWZmZWN0OiBhY3RpdmVFZmZlY3QsIHRhcmdldCwgdHlwZSwga2V5IH1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgdHJhY2tFZmZlY3RzKGRlcCwgZXZlbnRJbmZvKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmFja0VmZmVjdHMoZGVwLCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSB7XHJcbiAgICBsZXQgc2hvdWxkVHJhY2sgPSBmYWxzZTtcclxuICAgIGlmIChlZmZlY3RUcmFja0RlcHRoIDw9IG1heE1hcmtlckJpdHMpIHtcclxuICAgICAgICBpZiAoIW5ld1RyYWNrZWQoZGVwKSkge1xyXG4gICAgICAgICAgICBkZXAubiB8PSB0cmFja09wQml0OyAvLyBzZXQgbmV3bHkgdHJhY2tlZFxyXG4gICAgICAgICAgICBzaG91bGRUcmFjayA9ICF3YXNUcmFja2VkKGRlcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRnVsbCBjbGVhbnVwIG1vZGUuXHJcbiAgICAgICAgc2hvdWxkVHJhY2sgPSAhZGVwLmhhcyhhY3RpdmVFZmZlY3QpO1xyXG4gICAgfVxyXG4gICAgaWYgKHNob3VsZFRyYWNrKSB7XHJcbiAgICAgICAgZGVwLmFkZChhY3RpdmVFZmZlY3QpO1xyXG4gICAgICAgIGFjdGl2ZUVmZmVjdC5kZXBzLnB1c2goZGVwKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGFjdGl2ZUVmZmVjdC5vblRyYWNrKSB7XHJcbiAgICAgICAgICAgIGFjdGl2ZUVmZmVjdC5vblRyYWNrKE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgZWZmZWN0OiBhY3RpdmVFZmZlY3RcclxuICAgICAgICAgICAgfSwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyKHRhcmdldCwgdHlwZSwga2V5LCBuZXdWYWx1ZSwgb2xkVmFsdWUsIG9sZFRhcmdldCkge1xyXG4gICAgY29uc3QgZGVwc01hcCA9IHRhcmdldE1hcC5nZXQodGFyZ2V0KTtcclxuICAgIGlmICghZGVwc01hcCkge1xyXG4gICAgICAgIC8vIG5ldmVyIGJlZW4gdHJhY2tlZFxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBkZXBzID0gW107XHJcbiAgICBpZiAodHlwZSA9PT0gXCJjbGVhclwiIC8qIENMRUFSICovKSB7XHJcbiAgICAgICAgLy8gY29sbGVjdGlvbiBiZWluZyBjbGVhcmVkXHJcbiAgICAgICAgLy8gdHJpZ2dlciBhbGwgZWZmZWN0cyBmb3IgdGFyZ2V0XHJcbiAgICAgICAgZGVwcyA9IFsuLi5kZXBzTWFwLnZhbHVlcygpXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGtleSA9PT0gJ2xlbmd0aCcgJiYgaXNBcnJheSh0YXJnZXQpKSB7XHJcbiAgICAgICAgZGVwc01hcC5mb3JFYWNoKChkZXAsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnbGVuZ3RoJyB8fCBrZXkgPj0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzY2hlZHVsZSBydW5zIGZvciBTRVQgfCBBREQgfCBERUxFVEVcclxuICAgICAgICBpZiAoa2V5ICE9PSB2b2lkIDApIHtcclxuICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KGtleSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBhbHNvIHJ1biBmb3IgaXRlcmF0aW9uIGtleSBvbiBBREQgfCBERUxFVEUgfCBNYXAuU0VUXHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJhZGRcIiAvKiBBREQgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXkodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChJVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01hcCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChNQVBfS0VZX0lURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNJbnRlZ2VyS2V5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBuZXcgaW5kZXggYWRkZWQgdG8gYXJyYXkgLT4gbGVuZ3RoIGNoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoJ2xlbmd0aCcpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZGVsZXRlXCIgLyogREVMRVRFICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXAodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoTUFQX0tFWV9JVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwic2V0XCIgLyogU0VUICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGlzTWFwKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50SW5mbyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8geyB0YXJnZXQsIHR5cGUsIGtleSwgbmV3VmFsdWUsIG9sZFZhbHVlLCBvbGRUYXJnZXQgfVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgaWYgKGRlcHNbMF0pIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMoZGVwc1swXSwgZXZlbnRJbmZvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKGRlcHNbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZWZmZWN0cyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcclxuICAgICAgICAgICAgaWYgKGRlcCkge1xyXG4gICAgICAgICAgICAgICAgZWZmZWN0cy5wdXNoKC4uLmRlcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhjcmVhdGVEZXAoZWZmZWN0cyksIGV2ZW50SW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhjcmVhdGVEZXAoZWZmZWN0cykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyRWZmZWN0cyhkZXAsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pIHtcclxuICAgIC8vIHNwcmVhZCBpbnRvIGFycmF5IGZvciBzdGFiaWxpemF0aW9uXHJcbiAgICBmb3IgKGNvbnN0IGVmZmVjdCBvZiBpc0FycmF5KGRlcCkgPyBkZXAgOiBbLi4uZGVwXSkge1xyXG4gICAgICAgIGlmIChlZmZlY3QgIT09IGFjdGl2ZUVmZmVjdCB8fCBlZmZlY3QuYWxsb3dSZWN1cnNlKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZWZmZWN0Lm9uVHJpZ2dlcikge1xyXG4gICAgICAgICAgICAgICAgZWZmZWN0Lm9uVHJpZ2dlcihleHRlbmQoeyBlZmZlY3QgfSwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlZmZlY3Quc2NoZWR1bGVyKSB7XHJcbiAgICAgICAgICAgICAgICBlZmZlY3Quc2NoZWR1bGVyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgaXNOb25UcmFja2FibGVLZXlzID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBfX3Byb3RvX18sX192X2lzUmVmLF9faXNWdWVgKTtcclxuY29uc3QgYnVpbHRJblN5bWJvbHMgPSBuZXcgU2V0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbClcclxuICAgIC5tYXAoa2V5ID0+IFN5bWJvbFtrZXldKVxyXG4gICAgLmZpbHRlcihpc1N5bWJvbCkpO1xyXG5jb25zdCBnZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcigpO1xyXG5jb25zdCBzaGFsbG93R2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVHZXR0ZXIoZmFsc2UsIHRydWUpO1xyXG5jb25zdCByZWFkb25seUdldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlR2V0dGVyKHRydWUpO1xyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlHZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcih0cnVlLCB0cnVlKTtcclxuY29uc3QgYXJyYXlJbnN0cnVtZW50YXRpb25zID0gLyojX19QVVJFX18qLyBjcmVhdGVBcnJheUluc3RydW1lbnRhdGlvbnMoKTtcclxuZnVuY3Rpb24gY3JlYXRlQXJyYXlJbnN0cnVtZW50YXRpb25zKCkge1xyXG4gICAgY29uc3QgaW5zdHJ1bWVudGF0aW9ucyA9IHt9O1xyXG4gICAgWydpbmNsdWRlcycsICdpbmRleE9mJywgJ2xhc3RJbmRleE9mJ10uZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGluc3RydW1lbnRhdGlvbnNba2V5XSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IHRvUmF3KHRoaXMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFjayhhcnIsIFwiZ2V0XCIgLyogR0VUICovLCBpICsgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHdlIHJ1biB0aGUgbWV0aG9kIHVzaW5nIHRoZSBvcmlnaW5hbCBhcmdzIGZpcnN0ICh3aGljaCBtYXkgYmUgcmVhY3RpdmUpXHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGFycltrZXldKC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICBpZiAocmVzID09PSAtMSB8fCByZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGF0IGRpZG4ndCB3b3JrLCBydW4gaXQgYWdhaW4gdXNpbmcgcmF3IHZhbHVlcy5cclxuICAgICAgICAgICAgICAgIHJldHVybiBhcnJba2V5XSguLi5hcmdzLm1hcCh0b1JhdykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIFsncHVzaCcsICdwb3AnLCAnc2hpZnQnLCAndW5zaGlmdCcsICdzcGxpY2UnXS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uc1trZXldID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgICAgICBjb25zdCByZXMgPSB0b1Jhdyh0aGlzKVtrZXldLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbnM7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlR2V0dGVyKGlzUmVhZG9ubHkgPSBmYWxzZSwgc2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcikge1xyXG4gICAgICAgIGlmIChrZXkgPT09IFwiX192X2lzUmVhY3RpdmVcIiAvKiBJU19SRUFDVElWRSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlzUmVhZG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFkb25seVwiIC8qIElTX1JFQURPTkxZICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1JlYWRvbmx5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X2lzU2hhbGxvd1wiIC8qIElTX1NIQUxMT1cgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNoYWxsb3c7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfcmF3XCIgLyogUkFXICovICYmXHJcbiAgICAgICAgICAgIHJlY2VpdmVyID09PVxyXG4gICAgICAgICAgICAgICAgKGlzUmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICA/IHNoYWxsb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzaGFsbG93UmVhZG9ubHlNYXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiByZWFkb25seU1hcFxyXG4gICAgICAgICAgICAgICAgICAgIDogc2hhbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNoYWxsb3dSZWFjdGl2ZU1hcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHJlYWN0aXZlTWFwKS5nZXQodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0YXJnZXRJc0FycmF5ID0gaXNBcnJheSh0YXJnZXQpO1xyXG4gICAgICAgIGlmICghaXNSZWFkb25seSAmJiB0YXJnZXRJc0FycmF5ICYmIGhhc093bihhcnJheUluc3RydW1lbnRhdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KGFycmF5SW5zdHJ1bWVudGF0aW9ucywga2V5LCByZWNlaXZlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcyA9IFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcik7XHJcbiAgICAgICAgaWYgKGlzU3ltYm9sKGtleSkgPyBidWlsdEluU3ltYm9scy5oYXMoa2V5KSA6IGlzTm9uVHJhY2thYmxlS2V5cyhrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNSZWFkb25seSkge1xyXG4gICAgICAgICAgICB0cmFjayh0YXJnZXQsIFwiZ2V0XCIgLyogR0VUICovLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhbGxvdykge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNSZWYocmVzKSkge1xyXG4gICAgICAgICAgICAvLyByZWYgdW53cmFwcGluZyAtIGRvZXMgbm90IGFwcGx5IGZvciBBcnJheSArIGludGVnZXIga2V5LlxyXG4gICAgICAgICAgICBjb25zdCBzaG91bGRVbndyYXAgPSAhdGFyZ2V0SXNBcnJheSB8fCAhaXNJbnRlZ2VyS2V5KGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybiBzaG91bGRVbndyYXAgPyByZXMudmFsdWUgOiByZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc09iamVjdChyZXMpKSB7XHJcbiAgICAgICAgICAgIC8vIENvbnZlcnQgcmV0dXJuZWQgdmFsdWUgaW50byBhIHByb3h5IGFzIHdlbGwuIHdlIGRvIHRoZSBpc09iamVjdCBjaGVja1xyXG4gICAgICAgICAgICAvLyBoZXJlIHRvIGF2b2lkIGludmFsaWQgdmFsdWUgd2FybmluZy4gQWxzbyBuZWVkIHRvIGxhenkgYWNjZXNzIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8vIGFuZCByZWFjdGl2ZSBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kuXHJcbiAgICAgICAgICAgIHJldHVybiBpc1JlYWRvbmx5ID8gcmVhZG9ubHkocmVzKSA6IHJlYWN0aXZlKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IHNldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlU2V0dGVyKCk7XHJcbmNvbnN0IHNoYWxsb3dTZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZVNldHRlcih0cnVlKTtcclxuZnVuY3Rpb24gY3JlYXRlU2V0dGVyKHNoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHNldCh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKSB7XHJcbiAgICAgICAgbGV0IG9sZFZhbHVlID0gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgaWYgKGlzUmVhZG9ubHkob2xkVmFsdWUpICYmIGlzUmVmKG9sZFZhbHVlKSAmJiAhaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFzaGFsbG93ICYmICFpc1JlYWRvbmx5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzU2hhbGxvdyh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgb2xkVmFsdWUgPSB0b1JhdyhvbGRWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkgJiYgaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBoYWRLZXkgPSBpc0FycmF5KHRhcmdldCkgJiYgaXNJbnRlZ2VyS2V5KGtleSlcclxuICAgICAgICAgICAgPyBOdW1iZXIoa2V5KSA8IHRhcmdldC5sZW5ndGhcclxuICAgICAgICAgICAgOiBoYXNPd24odGFyZ2V0LCBrZXkpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpO1xyXG4gICAgICAgIC8vIGRvbid0IHRyaWdnZXIgaWYgdGFyZ2V0IGlzIHNvbWV0aGluZyB1cCBpbiB0aGUgcHJvdG90eXBlIGNoYWluIG9mIG9yaWdpbmFsXHJcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gdG9SYXcocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJhZGRcIiAvKiBBREQgKi8sIGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGhhc0NoYW5nZWQodmFsdWUsIG9sZFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwic2V0XCIgLyogU0VUICovLCBrZXksIHZhbHVlLCBvbGRWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBrZXkpIHtcclxuICAgIGNvbnN0IGhhZEtleSA9IGhhc093bih0YXJnZXQsIGtleSk7XHJcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRhcmdldFtrZXldO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAocmVzdWx0ICYmIGhhZEtleSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImRlbGV0ZVwiIC8qIERFTEVURSAqLywga2V5LCB1bmRlZmluZWQsIG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gaGFzKHRhcmdldCwga2V5KSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0Lmhhcyh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAoIWlzU3ltYm9sKGtleSkgfHwgIWJ1aWx0SW5TeW1ib2xzLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgdHJhY2sodGFyZ2V0LCBcImhhc1wiIC8qIEhBUyAqLywga2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gb3duS2V5cyh0YXJnZXQpIHtcclxuICAgIHRyYWNrKHRhcmdldCwgXCJpdGVyYXRlXCIgLyogSVRFUkFURSAqLywgaXNBcnJheSh0YXJnZXQpID8gJ2xlbmd0aCcgOiBJVEVSQVRFX0tFWSk7XHJcbiAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XHJcbn1cclxuY29uc3QgbXV0YWJsZUhhbmRsZXJzID0ge1xyXG4gICAgZ2V0LFxyXG4gICAgc2V0LFxyXG4gICAgZGVsZXRlUHJvcGVydHksXHJcbiAgICBoYXMsXHJcbiAgICBvd25LZXlzXHJcbn07XHJcbmNvbnN0IHJlYWRvbmx5SGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IHJlYWRvbmx5R2V0LFxyXG4gICAgc2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFNldCBvcGVyYXRpb24gb24ga2V5IFwiJHtTdHJpbmcoa2V5KX1cIiBmYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLCB0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBEZWxldGUgb3BlcmF0aW9uIG9uIGtleSBcIiR7U3RyaW5nKGtleSl9XCIgZmFpbGVkOiB0YXJnZXQgaXMgcmVhZG9ubHkuYCwgdGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHNoYWxsb3dSZWFjdGl2ZUhhbmRsZXJzID0gLyojX19QVVJFX18qLyBleHRlbmQoe30sIG11dGFibGVIYW5kbGVycywge1xyXG4gICAgZ2V0OiBzaGFsbG93R2V0LFxyXG4gICAgc2V0OiBzaGFsbG93U2V0XHJcbn0pO1xyXG4vLyBQcm9wcyBoYW5kbGVycyBhcmUgc3BlY2lhbCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBzaG91bGQgbm90IHVud3JhcCB0b3AtbGV2ZWxcclxuLy8gcmVmcyAoaW4gb3JkZXIgdG8gYWxsb3cgcmVmcyB0byBiZSBleHBsaWNpdGx5IHBhc3NlZCBkb3duKSwgYnV0IHNob3VsZFxyXG4vLyByZXRhaW4gdGhlIHJlYWN0aXZpdHkgb2YgdGhlIG5vcm1hbCByZWFkb25seSBvYmplY3QuXHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seUhhbmRsZXJzID0gLyojX19QVVJFX18qLyBleHRlbmQoe30sIHJlYWRvbmx5SGFuZGxlcnMsIHtcclxuICAgIGdldDogc2hhbGxvd1JlYWRvbmx5R2V0XHJcbn0pO1xuXG5jb25zdCB0b1NoYWxsb3cgPSAodmFsdWUpID0+IHZhbHVlO1xyXG5jb25zdCBnZXRQcm90byA9ICh2KSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHYpO1xyXG5mdW5jdGlvbiBnZXQkMSh0YXJnZXQsIGtleSwgaXNSZWFkb25seSA9IGZhbHNlLCBpc1NoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgLy8gIzE3NzI6IHJlYWRvbmx5KHJlYWN0aXZlKE1hcCkpIHNob3VsZCByZXR1cm4gcmVhZG9ubHkgKyByZWFjdGl2ZSB2ZXJzaW9uXHJcbiAgICAvLyBvZiB0aGUgdmFsdWVcclxuICAgIHRhcmdldCA9IHRhcmdldFtcIl9fdl9yYXdcIiAvKiBSQVcgKi9dO1xyXG4gICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgIGNvbnN0IHJhd0tleSA9IHRvUmF3KGtleSk7XHJcbiAgICBpZiAoa2V5ICE9PSByYXdLZXkpIHtcclxuICAgICAgICAhaXNSZWFkb25seSAmJiB0cmFjayhyYXdUYXJnZXQsIFwiZ2V0XCIgLyogR0VUICovLCBrZXkpO1xyXG4gICAgfVxyXG4gICAgIWlzUmVhZG9ubHkgJiYgdHJhY2socmF3VGFyZ2V0LCBcImdldFwiIC8qIEdFVCAqLywgcmF3S2V5KTtcclxuICAgIGNvbnN0IHsgaGFzIH0gPSBnZXRQcm90byhyYXdUYXJnZXQpO1xyXG4gICAgY29uc3Qgd3JhcCA9IGlzU2hhbGxvdyA/IHRvU2hhbGxvdyA6IGlzUmVhZG9ubHkgPyB0b1JlYWRvbmx5IDogdG9SZWFjdGl2ZTtcclxuICAgIGlmIChoYXMuY2FsbChyYXdUYXJnZXQsIGtleSkpIHtcclxuICAgICAgICByZXR1cm4gd3JhcCh0YXJnZXQuZ2V0KGtleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaGFzLmNhbGwocmF3VGFyZ2V0LCByYXdLZXkpKSB7XHJcbiAgICAgICAgcmV0dXJuIHdyYXAodGFyZ2V0LmdldChyYXdLZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRhcmdldCAhPT0gcmF3VGFyZ2V0KSB7XHJcbiAgICAgICAgLy8gIzM2MDIgcmVhZG9ubHkocmVhY3RpdmUoTWFwKSlcclxuICAgICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgbmVzdGVkIHJlYWN0aXZlIGBNYXBgIGNhbiBkbyB0cmFja2luZyBmb3IgaXRzZWxmXHJcbiAgICAgICAgdGFyZ2V0LmdldChrZXkpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGhhcyQxKGtleSwgaXNSZWFkb25seSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzW1wiX192X3Jhd1wiIC8qIFJBVyAqL107XHJcbiAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcclxuICAgIGlmIChrZXkgIT09IHJhd0tleSkge1xyXG4gICAgICAgICFpc1JlYWRvbmx5ICYmIHRyYWNrKHJhd1RhcmdldCwgXCJoYXNcIiAvKiBIQVMgKi8sIGtleSk7XHJcbiAgICB9XHJcbiAgICAhaXNSZWFkb25seSAmJiB0cmFjayhyYXdUYXJnZXQsIFwiaGFzXCIgLyogSEFTICovLCByYXdLZXkpO1xyXG4gICAgcmV0dXJuIGtleSA9PT0gcmF3S2V5XHJcbiAgICAgICAgPyB0YXJnZXQuaGFzKGtleSlcclxuICAgICAgICA6IHRhcmdldC5oYXMoa2V5KSB8fCB0YXJnZXQuaGFzKHJhd0tleSk7XHJcbn1cclxuZnVuY3Rpb24gc2l6ZSh0YXJnZXQsIGlzUmVhZG9ubHkgPSBmYWxzZSkge1xyXG4gICAgdGFyZ2V0ID0gdGFyZ2V0W1wiX192X3Jhd1wiIC8qIFJBVyAqL107XHJcbiAgICAhaXNSZWFkb25seSAmJiB0cmFjayh0b1Jhdyh0YXJnZXQpLCBcIml0ZXJhdGVcIiAvKiBJVEVSQVRFICovLCBJVEVSQVRFX0tFWSk7XHJcbiAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCAnc2l6ZScsIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gYWRkKHZhbHVlKSB7XHJcbiAgICB2YWx1ZSA9IHRvUmF3KHZhbHVlKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xyXG4gICAgY29uc3QgcHJvdG8gPSBnZXRQcm90byh0YXJnZXQpO1xyXG4gICAgY29uc3QgaGFkS2V5ID0gcHJvdG8uaGFzLmNhbGwodGFyZ2V0LCB2YWx1ZSk7XHJcbiAgICBpZiAoIWhhZEtleSkge1xyXG4gICAgICAgIHRhcmdldC5hZGQodmFsdWUpO1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImFkZFwiIC8qIEFERCAqLywgdmFsdWUsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG59XHJcbmZ1bmN0aW9uIHNldCQxKGtleSwgdmFsdWUpIHtcclxuICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdG9SYXcodGhpcyk7XHJcbiAgICBjb25zdCB7IGhhcywgZ2V0IH0gPSBnZXRQcm90byh0YXJnZXQpO1xyXG4gICAgbGV0IGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAga2V5ID0gdG9SYXcoa2V5KTtcclxuICAgICAgICBoYWRLZXkgPSBoYXMuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjaGVja0lkZW50aXR5S2V5cyh0YXJnZXQsIGhhcywga2V5KTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9sZFZhbHVlID0gZ2V0LmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgdGFyZ2V0LnNldChrZXksIHZhbHVlKTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiYWRkXCIgLyogQUREICovLCBrZXksIHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGhhc0NoYW5nZWQodmFsdWUsIG9sZFZhbHVlKSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcInNldFwiIC8qIFNFVCAqLywga2V5LCB2YWx1ZSwgb2xkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn1cclxuZnVuY3Rpb24gZGVsZXRlRW50cnkoa2V5KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IHsgaGFzLCBnZXQgfSA9IGdldFByb3RvKHRhcmdldCk7XHJcbiAgICBsZXQgaGFkS2V5ID0gaGFzLmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICBrZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgICAgIGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNoZWNrSWRlbnRpdHlLZXlzKHRhcmdldCwgaGFzLCBrZXkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2xkVmFsdWUgPSBnZXQgPyBnZXQuY2FsbCh0YXJnZXQsIGtleSkgOiB1bmRlZmluZWQ7XHJcbiAgICAvLyBmb3J3YXJkIHRoZSBvcGVyYXRpb24gYmVmb3JlIHF1ZXVlaW5nIHJlYWN0aW9uc1xyXG4gICAgY29uc3QgcmVzdWx0ID0gdGFyZ2V0LmRlbGV0ZShrZXkpO1xyXG4gICAgaWYgKGhhZEtleSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImRlbGV0ZVwiIC8qIERFTEVURSAqLywga2V5LCB1bmRlZmluZWQsIG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gY2xlYXIoKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IGhhZEl0ZW1zID0gdGFyZ2V0LnNpemUgIT09IDA7XHJcbiAgICBjb25zdCBvbGRUYXJnZXQgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IGlzTWFwKHRhcmdldClcclxuICAgICAgICAgICAgPyBuZXcgTWFwKHRhcmdldClcclxuICAgICAgICAgICAgOiBuZXcgU2V0KHRhcmdldClcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIC8vIGZvcndhcmQgdGhlIG9wZXJhdGlvbiBiZWZvcmUgcXVldWVpbmcgcmVhY3Rpb25zXHJcbiAgICBjb25zdCByZXN1bHQgPSB0YXJnZXQuY2xlYXIoKTtcclxuICAgIGlmIChoYWRJdGVtcykge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImNsZWFyXCIgLyogQ0xFQVIgKi8sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBvbGRUYXJnZXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVGb3JFYWNoKGlzUmVhZG9ubHksIGlzU2hhbGxvdykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlZCA9IHRoaXM7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gb2JzZXJ2ZWRbXCJfX3ZfcmF3XCIgLyogUkFXICovXTtcclxuICAgICAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgICAgIGNvbnN0IHdyYXAgPSBpc1NoYWxsb3cgPyB0b1NoYWxsb3cgOiBpc1JlYWRvbmx5ID8gdG9SZWFkb25seSA6IHRvUmVhY3RpdmU7XHJcbiAgICAgICAgIWlzUmVhZG9ubHkgJiYgdHJhY2socmF3VGFyZ2V0LCBcIml0ZXJhdGVcIiAvKiBJVEVSQVRFICovLCBJVEVSQVRFX0tFWSk7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGltcG9ydGFudDogbWFrZSBzdXJlIHRoZSBjYWxsYmFjayBpc1xyXG4gICAgICAgICAgICAvLyAxLiBpbnZva2VkIHdpdGggdGhlIHJlYWN0aXZlIG1hcCBhcyBgdGhpc2AgYW5kIDNyZCBhcmdcclxuICAgICAgICAgICAgLy8gMi4gdGhlIHZhbHVlIHJlY2VpdmVkIHNob3VsZCBiZSBhIGNvcnJlc3BvbmRpbmcgcmVhY3RpdmUvcmVhZG9ubHkuXHJcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHdyYXAodmFsdWUpLCB3cmFwKGtleSksIG9ic2VydmVkKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBpc1JlYWRvbmx5LCBpc1NoYWxsb3cpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXNbXCJfX3ZfcmF3XCIgLyogUkFXICovXTtcclxuICAgICAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldElzTWFwID0gaXNNYXAocmF3VGFyZ2V0KTtcclxuICAgICAgICBjb25zdCBpc1BhaXIgPSBtZXRob2QgPT09ICdlbnRyaWVzJyB8fCAobWV0aG9kID09PSBTeW1ib2wuaXRlcmF0b3IgJiYgdGFyZ2V0SXNNYXApO1xyXG4gICAgICAgIGNvbnN0IGlzS2V5T25seSA9IG1ldGhvZCA9PT0gJ2tleXMnICYmIHRhcmdldElzTWFwO1xyXG4gICAgICAgIGNvbnN0IGlubmVySXRlcmF0b3IgPSB0YXJnZXRbbWV0aG9kXSguLi5hcmdzKTtcclxuICAgICAgICBjb25zdCB3cmFwID0gaXNTaGFsbG93ID8gdG9TaGFsbG93IDogaXNSZWFkb25seSA/IHRvUmVhZG9ubHkgOiB0b1JlYWN0aXZlO1xyXG4gICAgICAgICFpc1JlYWRvbmx5ICYmXHJcbiAgICAgICAgICAgIHRyYWNrKHJhd1RhcmdldCwgXCJpdGVyYXRlXCIgLyogSVRFUkFURSAqLywgaXNLZXlPbmx5ID8gTUFQX0tFWV9JVEVSQVRFX0tFWSA6IElURVJBVEVfS0VZKTtcclxuICAgICAgICAvLyByZXR1cm4gYSB3cmFwcGVkIGl0ZXJhdG9yIHdoaWNoIHJldHVybnMgb2JzZXJ2ZWQgdmVyc2lvbnMgb2YgdGhlXHJcbiAgICAgICAgLy8gdmFsdWVzIGVtaXR0ZWQgZnJvbSB0aGUgcmVhbCBpdGVyYXRvclxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC8vIGl0ZXJhdG9yIHByb3RvY29sXHJcbiAgICAgICAgICAgIG5leHQoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBkb25lIH0gPSBpbm5lckl0ZXJhdG9yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkb25lXHJcbiAgICAgICAgICAgICAgICAgICAgPyB7IHZhbHVlLCBkb25lIH1cclxuICAgICAgICAgICAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlzUGFpciA/IFt3cmFwKHZhbHVlWzBdKSwgd3JhcCh2YWx1ZVsxXSldIDogd3JhcCh2YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBpdGVyYWJsZSBwcm90b2NvbFxyXG4gICAgICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmVhZG9ubHlNZXRob2QodHlwZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhcmdzWzBdID8gYG9uIGtleSBcIiR7YXJnc1swXX1cIiBgIDogYGA7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtjYXBpdGFsaXplKHR5cGUpfSBvcGVyYXRpb24gJHtrZXl9ZmFpbGVkOiB0YXJnZXQgaXMgcmVhZG9ubHkuYCwgdG9SYXcodGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHlwZSA9PT0gXCJkZWxldGVcIiAvKiBERUxFVEUgKi8gPyBmYWxzZSA6IHRoaXM7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUluc3RydW1lbnRhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBtdXRhYmxlSW5zdHJ1bWVudGF0aW9ucyA9IHtcclxuICAgICAgICBnZXQoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXQkMSh0aGlzLCBrZXkpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzOiBoYXMkMSxcclxuICAgICAgICBhZGQsXHJcbiAgICAgICAgc2V0OiBzZXQkMSxcclxuICAgICAgICBkZWxldGU6IGRlbGV0ZUVudHJ5LFxyXG4gICAgICAgIGNsZWFyLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2goZmFsc2UsIGZhbHNlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNoYWxsb3dJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzOiBoYXMkMSxcclxuICAgICAgICBhZGQsXHJcbiAgICAgICAgc2V0OiBzZXQkMSxcclxuICAgICAgICBkZWxldGU6IGRlbGV0ZUVudHJ5LFxyXG4gICAgICAgIGNsZWFyLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2goZmFsc2UsIHRydWUpXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgc2l6ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNpemUodGhpcywgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXMoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBoYXMkMS5jYWxsKHRoaXMsIGtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBhZGQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiYWRkXCIgLyogQUREICovKSxcclxuICAgICAgICBzZXQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwic2V0XCIgLyogU0VUICovKSxcclxuICAgICAgICBkZWxldGU6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiZGVsZXRlXCIgLyogREVMRVRFICovKSxcclxuICAgICAgICBjbGVhcjogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJjbGVhclwiIC8qIENMRUFSICovKSxcclxuICAgICAgICBmb3JFYWNoOiBjcmVhdGVGb3JFYWNoKHRydWUsIGZhbHNlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnMgPSB7XHJcbiAgICAgICAgZ2V0KGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEodGhpcywga2V5LCB0cnVlLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBzaXplKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2l6ZSh0aGlzLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhcyhrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGhhcyQxLmNhbGwodGhpcywga2V5LCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJhZGRcIiAvKiBBREQgKi8pLFxyXG4gICAgICAgIHNldDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJzZXRcIiAvKiBTRVQgKi8pLFxyXG4gICAgICAgIGRlbGV0ZTogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJkZWxldGVcIiAvKiBERUxFVEUgKi8pLFxyXG4gICAgICAgIGNsZWFyOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImNsZWFyXCIgLyogQ0xFQVIgKi8pLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2godHJ1ZSwgdHJ1ZSlcclxuICAgIH07XHJcbiAgICBjb25zdCBpdGVyYXRvck1ldGhvZHMgPSBbJ2tleXMnLCAndmFsdWVzJywgJ2VudHJpZXMnLCBTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaXRlcmF0b3JNZXRob2RzLmZvckVhY2gobWV0aG9kID0+IHtcclxuICAgICAgICBtdXRhYmxlSW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgc2hhbGxvd0luc3RydW1lbnRhdGlvbnNbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgbXV0YWJsZUluc3RydW1lbnRhdGlvbnMsXHJcbiAgICAgICAgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zLFxyXG4gICAgICAgIHNoYWxsb3dJbnN0cnVtZW50YXRpb25zLFxyXG4gICAgICAgIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNcclxuICAgIF07XHJcbn1cclxuY29uc3QgW211dGFibGVJbnN0cnVtZW50YXRpb25zLCByZWFkb25seUluc3RydW1lbnRhdGlvbnMsIHNoYWxsb3dJbnN0cnVtZW50YXRpb25zLCBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXSA9IC8qICNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbnMoKTtcclxuZnVuY3Rpb24gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGlzUmVhZG9ubHksIHNoYWxsb3cpIHtcclxuICAgIGNvbnN0IGluc3RydW1lbnRhdGlvbnMgPSBzaGFsbG93XHJcbiAgICAgICAgPyBpc1JlYWRvbmx5XHJcbiAgICAgICAgICAgID8gc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgICAgICAgICA6IHNoYWxsb3dJbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgOiBpc1JlYWRvbmx5XHJcbiAgICAgICAgICAgID8gcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgICAgIDogbXV0YWJsZUluc3RydW1lbnRhdGlvbnM7XHJcbiAgICByZXR1cm4gKHRhcmdldCwga2V5LCByZWNlaXZlcikgPT4ge1xyXG4gICAgICAgIGlmIChrZXkgPT09IFwiX192X2lzUmVhY3RpdmVcIiAvKiBJU19SRUFDVElWRSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlzUmVhZG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFkb25seVwiIC8qIElTX1JFQURPTkxZICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1JlYWRvbmx5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X3Jhd1wiIC8qIFJBVyAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoaGFzT3duKGluc3RydW1lbnRhdGlvbnMsIGtleSkgJiYga2V5IGluIHRhcmdldFxyXG4gICAgICAgICAgICA/IGluc3RydW1lbnRhdGlvbnNcclxuICAgICAgICAgICAgOiB0YXJnZXQsIGtleSwgcmVjZWl2ZXIpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBtdXRhYmxlQ29sbGVjdGlvbkhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAvKiNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcihmYWxzZSwgZmFsc2UpXHJcbn07XHJcbmNvbnN0IHNoYWxsb3dDb2xsZWN0aW9uSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IC8qI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGZhbHNlLCB0cnVlKVxyXG59O1xyXG5jb25zdCByZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIodHJ1ZSwgZmFsc2UpXHJcbn07XHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIodHJ1ZSwgdHJ1ZSlcclxufTtcclxuZnVuY3Rpb24gY2hlY2tJZGVudGl0eUtleXModGFyZ2V0LCBoYXMsIGtleSkge1xyXG4gICAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcclxuICAgIGlmIChyYXdLZXkgIT09IGtleSAmJiBoYXMuY2FsbCh0YXJnZXQsIHJhd0tleSkpIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gdG9SYXdUeXBlKHRhcmdldCk7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBSZWFjdGl2ZSAke3R5cGV9IGNvbnRhaW5zIGJvdGggdGhlIHJhdyBhbmQgcmVhY3RpdmUgYCArXHJcbiAgICAgICAgICAgIGB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBvYmplY3Qke3R5cGUgPT09IGBNYXBgID8gYCBhcyBrZXlzYCA6IGBgfSwgYCArXHJcbiAgICAgICAgICAgIGB3aGljaCBjYW4gbGVhZCB0byBpbmNvbnNpc3RlbmNpZXMuIGAgK1xyXG4gICAgICAgICAgICBgQXZvaWQgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gdGhlIHJhdyBhbmQgcmVhY3RpdmUgdmVyc2lvbnMgYCArXHJcbiAgICAgICAgICAgIGBvZiBhbiBvYmplY3QgYW5kIG9ubHkgdXNlIHRoZSByZWFjdGl2ZSB2ZXJzaW9uIGlmIHBvc3NpYmxlLmApO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHJlYWN0aXZlTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3Qgc2hhbGxvd1JlYWN0aXZlTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3QgcmVhZG9ubHlNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5mdW5jdGlvbiB0YXJnZXRUeXBlTWFwKHJhd1R5cGUpIHtcclxuICAgIHN3aXRjaCAocmF3VHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ09iamVjdCc6XHJcbiAgICAgICAgY2FzZSAnQXJyYXknOlxyXG4gICAgICAgICAgICByZXR1cm4gMSAvKiBDT01NT04gKi87XHJcbiAgICAgICAgY2FzZSAnTWFwJzpcclxuICAgICAgICBjYXNlICdTZXQnOlxyXG4gICAgICAgIGNhc2UgJ1dlYWtNYXAnOlxyXG4gICAgICAgIGNhc2UgJ1dlYWtTZXQnOlxyXG4gICAgICAgICAgICByZXR1cm4gMiAvKiBDT0xMRUNUSU9OICovO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAwIC8qIElOVkFMSUQgKi87XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0VGFyZ2V0VHlwZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHZhbHVlW1wiX192X3NraXBcIiAvKiBTS0lQICovXSB8fCAhT2JqZWN0LmlzRXh0ZW5zaWJsZSh2YWx1ZSlcclxuICAgICAgICA/IDAgLyogSU5WQUxJRCAqL1xyXG4gICAgICAgIDogdGFyZ2V0VHlwZU1hcCh0b1Jhd1R5cGUodmFsdWUpKTtcclxufVxyXG5mdW5jdGlvbiByZWFjdGl2ZSh0YXJnZXQpIHtcclxuICAgIC8vIGlmIHRyeWluZyB0byBvYnNlcnZlIGEgcmVhZG9ubHkgcHJveHksIHJldHVybiB0aGUgcmVhZG9ubHkgdmVyc2lvbi5cclxuICAgIGlmIChpc1JlYWRvbmx5KHRhcmdldCkpIHtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgZmFsc2UsIG11dGFibGVIYW5kbGVycywgbXV0YWJsZUNvbGxlY3Rpb25IYW5kbGVycywgcmVhY3RpdmVNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm4gYSBzaGFsbG93bHktcmVhY3RpdmUgY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LCB3aGVyZSBvbmx5IHRoZSByb290XHJcbiAqIGxldmVsIHByb3BlcnRpZXMgYXJlIHJlYWN0aXZlLiBJdCBhbHNvIGRvZXMgbm90IGF1dG8tdW53cmFwIHJlZnMgKGV2ZW4gYXQgdGhlXHJcbiAqIHJvb3QgbGV2ZWwpLlxyXG4gKi9cclxuZnVuY3Rpb24gc2hhbGxvd1JlYWN0aXZlKHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgZmFsc2UsIHNoYWxsb3dSZWFjdGl2ZUhhbmRsZXJzLCBzaGFsbG93Q29sbGVjdGlvbkhhbmRsZXJzLCBzaGFsbG93UmVhY3RpdmVNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgcmVhZG9ubHkgY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LiBOb3RlIHRoZSByZXR1cm5lZCBjb3B5IGlzIG5vdFxyXG4gKiBtYWRlIHJlYWN0aXZlLCBidXQgYHJlYWRvbmx5YCBjYW4gYmUgY2FsbGVkIG9uIGFuIGFscmVhZHkgcmVhY3RpdmUgb2JqZWN0LlxyXG4gKi9cclxuZnVuY3Rpb24gcmVhZG9ubHkodGFyZ2V0KSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVhY3RpdmVPYmplY3QodGFyZ2V0LCB0cnVlLCByZWFkb25seUhhbmRsZXJzLCByZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycywgcmVhZG9ubHlNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm5zIGEgcmVhY3RpdmUtY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LCB3aGVyZSBvbmx5IHRoZSByb290IGxldmVsXHJcbiAqIHByb3BlcnRpZXMgYXJlIHJlYWRvbmx5LCBhbmQgZG9lcyBOT1QgdW53cmFwIHJlZnMgbm9yIHJlY3Vyc2l2ZWx5IGNvbnZlcnRcclxuICogcmV0dXJuZWQgcHJvcGVydGllcy5cclxuICogVGhpcyBpcyB1c2VkIGZvciBjcmVhdGluZyB0aGUgcHJvcHMgcHJveHkgb2JqZWN0IGZvciBzdGF0ZWZ1bCBjb21wb25lbnRzLlxyXG4gKi9cclxuZnVuY3Rpb24gc2hhbGxvd1JlYWRvbmx5KHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgdHJ1ZSwgc2hhbGxvd1JlYWRvbmx5SGFuZGxlcnMsIHNoYWxsb3dSZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycywgc2hhbGxvd1JlYWRvbmx5TWFwKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIGlzUmVhZG9ubHksIGJhc2VIYW5kbGVycywgY29sbGVjdGlvbkhhbmRsZXJzLCBwcm94eU1hcCkge1xyXG4gICAgaWYgKCFpc09iamVjdCh0YXJnZXQpKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHZhbHVlIGNhbm5vdCBiZSBtYWRlIHJlYWN0aXZlOiAke1N0cmluZyh0YXJnZXQpfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgLy8gdGFyZ2V0IGlzIGFscmVhZHkgYSBQcm94eSwgcmV0dXJuIGl0LlxyXG4gICAgLy8gZXhjZXB0aW9uOiBjYWxsaW5nIHJlYWRvbmx5KCkgb24gYSByZWFjdGl2ZSBvYmplY3RcclxuICAgIGlmICh0YXJnZXRbXCJfX3ZfcmF3XCIgLyogUkFXICovXSAmJlxyXG4gICAgICAgICEoaXNSZWFkb25seSAmJiB0YXJnZXRbXCJfX3ZfaXNSZWFjdGl2ZVwiIC8qIElTX1JFQUNUSVZFICovXSkpIHtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgLy8gdGFyZ2V0IGFscmVhZHkgaGFzIGNvcnJlc3BvbmRpbmcgUHJveHlcclxuICAgIGNvbnN0IGV4aXN0aW5nUHJveHkgPSBwcm94eU1hcC5nZXQodGFyZ2V0KTtcclxuICAgIGlmIChleGlzdGluZ1Byb3h5KSB7XHJcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nUHJveHk7XHJcbiAgICB9XHJcbiAgICAvLyBvbmx5IGEgd2hpdGVsaXN0IG9mIHZhbHVlIHR5cGVzIGNhbiBiZSBvYnNlcnZlZC5cclxuICAgIGNvbnN0IHRhcmdldFR5cGUgPSBnZXRUYXJnZXRUeXBlKHRhcmdldCk7XHJcbiAgICBpZiAodGFyZ2V0VHlwZSA9PT0gMCAvKiBJTlZBTElEICovKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgdGFyZ2V0VHlwZSA9PT0gMiAvKiBDT0xMRUNUSU9OICovID8gY29sbGVjdGlvbkhhbmRsZXJzIDogYmFzZUhhbmRsZXJzKTtcclxuICAgIHByb3h5TWFwLnNldCh0YXJnZXQsIHByb3h5KTtcclxuICAgIHJldHVybiBwcm94eTtcclxufVxyXG5mdW5jdGlvbiBpc1JlYWN0aXZlKHZhbHVlKSB7XHJcbiAgICBpZiAoaXNSZWFkb25seSh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gaXNSZWFjdGl2ZSh2YWx1ZVtcIl9fdl9yYXdcIiAvKiBSQVcgKi9dKTtcclxuICAgIH1cclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1JlYWN0aXZlXCIgLyogSVNfUkVBQ1RJVkUgKi9dKTtcclxufVxyXG5mdW5jdGlvbiBpc1JlYWRvbmx5KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNSZWFkb25seVwiIC8qIElTX1JFQURPTkxZICovXSk7XHJcbn1cclxuZnVuY3Rpb24gaXNTaGFsbG93KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNTaGFsbG93XCIgLyogSVNfU0hBTExPVyAqL10pO1xyXG59XHJcbmZ1bmN0aW9uIGlzUHJveHkodmFsdWUpIHtcclxuICAgIHJldHVybiBpc1JlYWN0aXZlKHZhbHVlKSB8fCBpc1JlYWRvbmx5KHZhbHVlKTtcclxufVxyXG5mdW5jdGlvbiB0b1JhdyhvYnNlcnZlZCkge1xyXG4gICAgY29uc3QgcmF3ID0gb2JzZXJ2ZWQgJiYgb2JzZXJ2ZWRbXCJfX3ZfcmF3XCIgLyogUkFXICovXTtcclxuICAgIHJldHVybiByYXcgPyB0b1JhdyhyYXcpIDogb2JzZXJ2ZWQ7XHJcbn1cclxuZnVuY3Rpb24gbWFya1Jhdyh2YWx1ZSkge1xyXG4gICAgZGVmKHZhbHVlLCBcIl9fdl9za2lwXCIgLyogU0tJUCAqLywgdHJ1ZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuY29uc3QgdG9SZWFjdGl2ZSA9ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpID8gcmVhY3RpdmUodmFsdWUpIDogdmFsdWU7XHJcbmNvbnN0IHRvUmVhZG9ubHkgPSAodmFsdWUpID0+IGlzT2JqZWN0KHZhbHVlKSA/IHJlYWRvbmx5KHZhbHVlKSA6IHZhbHVlO1xuXG5mdW5jdGlvbiB0cmFja1JlZlZhbHVlKHJlZikge1xyXG4gICAgaWYgKHNob3VsZFRyYWNrICYmIGFjdGl2ZUVmZmVjdCkge1xyXG4gICAgICAgIHJlZiA9IHRvUmF3KHJlZik7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB0cmFja0VmZmVjdHMocmVmLmRlcCB8fCAocmVmLmRlcCA9IGNyZWF0ZURlcCgpKSwge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiByZWYsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcImdldFwiIC8qIEdFVCAqLyxcclxuICAgICAgICAgICAgICAgIGtleTogJ3ZhbHVlJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRyYWNrRWZmZWN0cyhyZWYuZGVwIHx8IChyZWYuZGVwID0gY3JlYXRlRGVwKCkpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlclJlZlZhbHVlKHJlZiwgbmV3VmFsKSB7XHJcbiAgICByZWYgPSB0b1JhdyhyZWYpO1xyXG4gICAgaWYgKHJlZi5kZXApIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKHJlZi5kZXAsIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldDogcmVmLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIiAvKiBTRVQgKi8sXHJcbiAgICAgICAgICAgICAgICBrZXk6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMocmVmLmRlcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzUmVmKHIpIHtcclxuICAgIHJldHVybiAhIShyICYmIHIuX192X2lzUmVmID09PSB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiByZWYodmFsdWUpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWYodmFsdWUsIGZhbHNlKTtcclxufVxyXG5mdW5jdGlvbiBzaGFsbG93UmVmKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVmKHZhbHVlLCB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWYocmF3VmFsdWUsIHNoYWxsb3cpIHtcclxuICAgIGlmIChpc1JlZihyYXdWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gcmF3VmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFJlZkltcGwocmF3VmFsdWUsIHNoYWxsb3cpO1xyXG59XHJcbmNsYXNzIFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IodmFsdWUsIF9fdl9pc1NoYWxsb3cpIHtcclxuICAgICAgICB0aGlzLl9fdl9pc1NoYWxsb3cgPSBfX3ZfaXNTaGFsbG93O1xyXG4gICAgICAgIHRoaXMuZGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9yYXdWYWx1ZSA9IF9fdl9pc1NoYWxsb3cgPyB2YWx1ZSA6IHRvUmF3KHZhbHVlKTtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IF9fdl9pc1NoYWxsb3cgPyB2YWx1ZSA6IHRvUmVhY3RpdmUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHRyYWNrUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbCkge1xyXG4gICAgICAgIG5ld1ZhbCA9IHRoaXMuX192X2lzU2hhbGxvdyA/IG5ld1ZhbCA6IHRvUmF3KG5ld1ZhbCk7XHJcbiAgICAgICAgaWYgKGhhc0NoYW5nZWQobmV3VmFsLCB0aGlzLl9yYXdWYWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmF3VmFsdWUgPSBuZXdWYWw7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fX3ZfaXNTaGFsbG93ID8gbmV3VmFsIDogdG9SZWFjdGl2ZShuZXdWYWwpO1xyXG4gICAgICAgICAgICB0cmlnZ2VyUmVmVmFsdWUodGhpcywgbmV3VmFsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlclJlZihyZWYpIHtcclxuICAgIHRyaWdnZXJSZWZWYWx1ZShyZWYsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHJlZi52YWx1ZSA6IHZvaWQgMCk7XHJcbn1cclxuZnVuY3Rpb24gdW5yZWYocmVmKSB7XHJcbiAgICByZXR1cm4gaXNSZWYocmVmKSA/IHJlZi52YWx1ZSA6IHJlZjtcclxufVxyXG5jb25zdCBzaGFsbG93VW53cmFwSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6ICh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpID0+IHVucmVmKFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcikpLFxyXG4gICAgc2V0OiAodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgaWYgKGlzUmVmKG9sZFZhbHVlKSAmJiAhaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIG9sZFZhbHVlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcHJveHlSZWZzKG9iamVjdFdpdGhSZWZzKSB7XHJcbiAgICByZXR1cm4gaXNSZWFjdGl2ZShvYmplY3RXaXRoUmVmcylcclxuICAgICAgICA/IG9iamVjdFdpdGhSZWZzXHJcbiAgICAgICAgOiBuZXcgUHJveHkob2JqZWN0V2l0aFJlZnMsIHNoYWxsb3dVbndyYXBIYW5kbGVycyk7XHJcbn1cclxuY2xhc3MgQ3VzdG9tUmVmSW1wbCB7XHJcbiAgICBjb25zdHJ1Y3RvcihmYWN0b3J5KSB7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHsgZ2V0LCBzZXQgfSA9IGZhY3RvcnkoKCkgPT4gdHJhY2tSZWZWYWx1ZSh0aGlzKSwgKCkgPT4gdHJpZ2dlclJlZlZhbHVlKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9nZXQgPSBnZXQ7XHJcbiAgICAgICAgdGhpcy5fc2V0ID0gc2V0O1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXQoKTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWwpIHtcclxuICAgICAgICB0aGlzLl9zZXQobmV3VmFsKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjdXN0b21SZWYoZmFjdG9yeSkge1xyXG4gICAgcmV0dXJuIG5ldyBDdXN0b21SZWZJbXBsKGZhY3RvcnkpO1xyXG59XHJcbmZ1bmN0aW9uIHRvUmVmcyhvYmplY3QpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzUHJveHkob2JqZWN0KSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgdG9SZWZzKCkgZXhwZWN0cyBhIHJlYWN0aXZlIG9iamVjdCBidXQgcmVjZWl2ZWQgYSBwbGFpbiBvbmUuYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXQgPSBpc0FycmF5KG9iamVjdCkgPyBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCkgOiB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9iamVjdCkge1xyXG4gICAgICAgIHJldFtrZXldID0gdG9SZWYob2JqZWN0LCBrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5jbGFzcyBPYmplY3RSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vYmplY3QsIF9rZXksIF9kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9vYmplY3QgPSBfb2JqZWN0O1xyXG4gICAgICAgIHRoaXMuX2tleSA9IF9rZXk7XHJcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gX2RlZmF1bHRWYWx1ZTtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5fb2JqZWN0W3RoaXMuX2tleV07XHJcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gdW5kZWZpbmVkID8gdGhpcy5fZGVmYXVsdFZhbHVlIDogdmFsO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbCkge1xyXG4gICAgICAgIHRoaXMuX29iamVjdFt0aGlzLl9rZXldID0gbmV3VmFsO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRvUmVmKG9iamVjdCwga2V5LCBkZWZhdWx0VmFsdWUpIHtcclxuICAgIGNvbnN0IHZhbCA9IG9iamVjdFtrZXldO1xyXG4gICAgcmV0dXJuIGlzUmVmKHZhbClcclxuICAgICAgICA/IHZhbFxyXG4gICAgICAgIDogbmV3IE9iamVjdFJlZkltcGwob2JqZWN0LCBrZXksIGRlZmF1bHRWYWx1ZSk7XHJcbn1cblxuY2xhc3MgQ29tcHV0ZWRSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKGdldHRlciwgX3NldHRlciwgaXNSZWFkb25seSwgaXNTU1IpIHtcclxuICAgICAgICB0aGlzLl9zZXR0ZXIgPSBfc2V0dGVyO1xyXG4gICAgICAgIHRoaXMuZGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fZGlydHkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0LmNvbXB1dGVkID0gdGhpcztcclxuICAgICAgICB0aGlzLmVmZmVjdC5hY3RpdmUgPSB0aGlzLl9jYWNoZWFibGUgPSAhaXNTU1I7XHJcbiAgICAgICAgdGhpc1tcIl9fdl9pc1JlYWRvbmx5XCIgLyogSVNfUkVBRE9OTFkgKi9dID0gaXNSZWFkb25seTtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICAvLyB0aGUgY29tcHV0ZWQgcmVmIG1heSBnZXQgd3JhcHBlZCBieSBvdGhlciBwcm94aWVzIGUuZy4gcmVhZG9ubHkoKSAjMzM3NlxyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0b1Jhdyh0aGlzKTtcclxuICAgICAgICB0cmFja1JlZlZhbHVlKHNlbGYpO1xyXG4gICAgICAgIGlmIChzZWxmLl9kaXJ0eSB8fCAhc2VsZi5fY2FjaGVhYmxlKSB7XHJcbiAgICAgICAgICAgIHNlbGYuX2RpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gc2VsZi5lZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzZWxmLl92YWx1ZTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3NldHRlcihuZXdWYWx1ZSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY29tcHV0ZWQoZ2V0dGVyT3JPcHRpb25zLCBkZWJ1Z09wdGlvbnMsIGlzU1NSID0gZmFsc2UpIHtcclxuICAgIGxldCBnZXR0ZXI7XHJcbiAgICBsZXQgc2V0dGVyO1xyXG4gICAgY29uc3Qgb25seUdldHRlciA9IGlzRnVuY3Rpb24oZ2V0dGVyT3JPcHRpb25zKTtcclxuICAgIGlmIChvbmx5R2V0dGVyKSB7XHJcbiAgICAgICAgZ2V0dGVyID0gZ2V0dGVyT3JPcHRpb25zO1xyXG4gICAgICAgIHNldHRlciA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICA/ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignV3JpdGUgb3BlcmF0aW9uIGZhaWxlZDogY29tcHV0ZWQgdmFsdWUgaXMgcmVhZG9ubHknKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA6IE5PT1A7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBnZXR0ZXIgPSBnZXR0ZXJPck9wdGlvbnMuZ2V0O1xyXG4gICAgICAgIHNldHRlciA9IGdldHRlck9yT3B0aW9ucy5zZXQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjUmVmID0gbmV3IENvbXB1dGVkUmVmSW1wbChnZXR0ZXIsIHNldHRlciwgb25seUdldHRlciB8fCAhc2V0dGVyLCBpc1NTUik7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGRlYnVnT3B0aW9ucyAmJiAhaXNTU1IpIHtcclxuICAgICAgICBjUmVmLmVmZmVjdC5vblRyYWNrID0gZGVidWdPcHRpb25zLm9uVHJhY2s7XHJcbiAgICAgICAgY1JlZi5lZmZlY3Qub25UcmlnZ2VyID0gZGVidWdPcHRpb25zLm9uVHJpZ2dlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBjUmVmO1xyXG59XG5cbnZhciBfYTtcclxuY29uc3QgdGljayA9IFByb21pc2UucmVzb2x2ZSgpO1xyXG5jb25zdCBxdWV1ZSA9IFtdO1xyXG5sZXQgcXVldWVkID0gZmFsc2U7XHJcbmNvbnN0IHNjaGVkdWxlciA9IChmbikgPT4ge1xyXG4gICAgcXVldWUucHVzaChmbik7XHJcbiAgICBpZiAoIXF1ZXVlZCkge1xyXG4gICAgICAgIHF1ZXVlZCA9IHRydWU7XHJcbiAgICAgICAgdGljay50aGVuKGZsdXNoKTtcclxuICAgIH1cclxufTtcclxuY29uc3QgZmx1c2ggPSAoKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcXVldWVbaV0oKTtcclxuICAgIH1cclxuICAgIHF1ZXVlLmxlbmd0aCA9IDA7XHJcbiAgICBxdWV1ZWQgPSBmYWxzZTtcclxufTtcclxuY2xhc3MgRGVmZXJyZWRDb21wdXRlZFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IoZ2V0dGVyKSB7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzW19hXSA9IHRydWU7XHJcbiAgICAgICAgbGV0IGNvbXBhcmVUYXJnZXQ7XHJcbiAgICAgICAgbGV0IGhhc0NvbXBhcmVUYXJnZXQgPSBmYWxzZTtcclxuICAgICAgICBsZXQgc2NoZWR1bGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCAoY29tcHV0ZWRUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlcCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXB1dGVkVHJpZ2dlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmVUYXJnZXQgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNDb21wYXJlVGFyZ2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzY2hlZHVsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZVRvQ29tcGFyZSA9IGhhc0NvbXBhcmVUYXJnZXQgPyBjb21wYXJlVGFyZ2V0IDogdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNDb21wYXJlVGFyZ2V0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWZmZWN0LmFjdGl2ZSAmJiB0aGlzLl9nZXQoKSAhPT0gdmFsdWVUb0NvbXBhcmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNoYWluZWQgdXBzdHJlYW0gY29tcHV0ZWRzIGFyZSBub3RpZmllZCBzeW5jaHJvbm91c2x5IHRvIGVuc3VyZVxyXG4gICAgICAgICAgICAgICAgLy8gdmFsdWUgaW52YWxpZGF0aW9uIGluIGNhc2Ugb2Ygc3luYyBhY2Nlc3M7IG5vcm1hbCBlZmZlY3RzIGFyZVxyXG4gICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQgdG8gYmUgdHJpZ2dlcmVkIGluIHNjaGVkdWxlci5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmRlcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbXB1dGVkIGluc3RhbmNlb2YgRGVmZXJyZWRDb21wdXRlZFJlZkltcGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zY2hlZHVsZXIodHJ1ZSAvKiBjb21wdXRlZFRyaWdnZXIgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QuY29tcHV0ZWQgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgX2dldCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fZGlydHkpIHtcclxuICAgICAgICAgICAgdGhpcy5fZGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLl92YWx1ZSA9IHRoaXMuZWZmZWN0LnJ1bigpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHRyYWNrUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgLy8gdGhlIGNvbXB1dGVkIHJlZiBtYXkgZ2V0IHdyYXBwZWQgYnkgb3RoZXIgcHJveGllcyBlLmcuIHJlYWRvbmx5KCkgIzMzNzZcclxuICAgICAgICByZXR1cm4gdG9SYXcodGhpcykuX2dldCgpO1xyXG4gICAgfVxyXG59XHJcbl9hID0gXCJfX3ZfaXNSZWFkb25seVwiIC8qIElTX1JFQURPTkxZICovO1xyXG5mdW5jdGlvbiBkZWZlcnJlZENvbXB1dGVkKGdldHRlcikge1xyXG4gICAgcmV0dXJuIG5ldyBEZWZlcnJlZENvbXB1dGVkUmVmSW1wbChnZXR0ZXIpO1xyXG59XG5cbmV4cG9ydCB7IEVmZmVjdFNjb3BlLCBJVEVSQVRFX0tFWSwgUmVhY3RpdmVFZmZlY3QsIGNvbXB1dGVkLCBjdXN0b21SZWYsIGRlZmVycmVkQ29tcHV0ZWQsIGVmZmVjdCwgZWZmZWN0U2NvcGUsIGVuYWJsZVRyYWNraW5nLCBnZXRDdXJyZW50U2NvcGUsIGlzUHJveHksIGlzUmVhY3RpdmUsIGlzUmVhZG9ubHksIGlzUmVmLCBpc1NoYWxsb3csIG1hcmtSYXcsIG9uU2NvcGVEaXNwb3NlLCBwYXVzZVRyYWNraW5nLCBwcm94eVJlZnMsIHJlYWN0aXZlLCByZWFkb25seSwgcmVmLCByZXNldFRyYWNraW5nLCBzaGFsbG93UmVhY3RpdmUsIHNoYWxsb3dSZWFkb25seSwgc2hhbGxvd1JlZiwgc3RvcCwgdG9SYXcsIHRvUmVmLCB0b1JlZnMsIHRyYWNrLCB0cmlnZ2VyLCB0cmlnZ2VyUmVmLCB1bnJlZiB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js ***!
|
||
\*************************************************************************/
|
||
/*! exports provided: EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref, camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey, BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseTransition\", function() { return BaseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Comment\", function() { return Comment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Fragment\", function() { return Fragment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KeepAlive\", function() { return KeepAlive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Static\", function() { return Static; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Suspense\", function() { return Suspense; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Teleport\", function() { return Teleport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return Text; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"callWithAsyncErrorHandling\", function() { return callWithAsyncErrorHandling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"callWithErrorHandling\", function() { return callWithErrorHandling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneVNode\", function() { return cloneVNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compatUtils\", function() { return compatUtils; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"computed\", function() { return computed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createBlock\", function() { return createBlock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCommentVNode\", function() { return createCommentVNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createElementBlock\", function() { return createElementBlock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createElementVNode\", function() { return createBaseVNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createHydrationRenderer\", function() { return createHydrationRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createPropsRestProxy\", function() { return createPropsRestProxy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRenderer\", function() { return createRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSlots\", function() { return createSlots; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createStaticVNode\", function() { return createStaticVNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createTextVNode\", function() { return createTextVNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVNode\", function() { return createVNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defineAsyncComponent\", function() { return defineAsyncComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defineComponent\", function() { return defineComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defineEmits\", function() { return defineEmits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defineExpose\", function() { return defineExpose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defineProps\", function() { return defineProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"devtools\", function() { return devtools; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentInstance\", function() { return getCurrentInstance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTransitionRawChildren\", function() { return getTransitionRawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"guardReactiveProps\", function() { return guardReactiveProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return h; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"handleError\", function() { return handleError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initCustomFormatter\", function() { return initCustomFormatter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return inject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMemoSame\", function() { return isMemoSame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRuntimeOnly\", function() { return isRuntimeOnly; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVNode\", function() { return isVNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeDefaults\", function() { return mergeDefaults; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeProps\", function() { return mergeProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nextTick\", function() { return nextTick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onActivated\", function() { return onActivated; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onBeforeMount\", function() { return onBeforeMount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onBeforeUnmount\", function() { return onBeforeUnmount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onBeforeUpdate\", function() { return onBeforeUpdate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onDeactivated\", function() { return onDeactivated; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onErrorCaptured\", function() { return onErrorCaptured; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onMounted\", function() { return onMounted; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onRenderTracked\", function() { return onRenderTracked; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onRenderTriggered\", function() { return onRenderTriggered; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onServerPrefetch\", function() { return onServerPrefetch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onUnmounted\", function() { return onUnmounted; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onUpdated\", function() { return onUpdated; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openBlock\", function() { return openBlock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"popScopeId\", function() { return popScopeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"provide\", function() { return provide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pushScopeId\", function() { return pushScopeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"queuePostFlushCb\", function() { return queuePostFlushCb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerRuntimeCompiler\", function() { return registerRuntimeCompiler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderList\", function() { return renderList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderSlot\", function() { return renderSlot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveComponent\", function() { return resolveComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveDirective\", function() { return resolveDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveDynamicComponent\", function() { return resolveDynamicComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveFilter\", function() { return resolveFilter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveTransitionHooks\", function() { return resolveTransitionHooks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setBlockTracking\", function() { return setBlockTracking; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDevtoolsHook\", function() { return setDevtoolsHook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTransitionHooks\", function() { return setTransitionHooks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ssrContextKey\", function() { return ssrContextKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ssrUtils\", function() { return ssrUtils; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toHandlers\", function() { return toHandlers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformVNodeArgs\", function() { return transformVNodeArgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useAttrs\", function() { return useAttrs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useSSRContext\", function() { return useSSRContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useSlots\", function() { return useSlots; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useTransitionState\", function() { return useTransitionState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"warn\", function() { return warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"watch\", function() { return watch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"watchEffect\", function() { return watchEffect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"watchPostEffect\", function() { return watchPostEffect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"watchSyncEffect\", function() { return watchSyncEffect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withAsyncContext\", function() { return withAsyncContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withCtx\", function() { return withCtx; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withDefaults\", function() { return withDefaults; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withDirectives\", function() { return withDirectives; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withMemo\", function() { return withMemo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withScopeId\", function() { return withScopeId; });\n/* harmony import */ var _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vue/reactivity */ \"./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EffectScope\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"EffectScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactiveEffect\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"ReactiveEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"customRef\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"customRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"effect\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"effect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"effectScope\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"effectScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentScope\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isProxy\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isProxy\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isReactive\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isReactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isReadonly\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isReadonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRef\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isShallow\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isShallow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"markRaw\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"markRaw\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onScopeDispose\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"onScopeDispose\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"proxyRefs\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"proxyRefs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reactive\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"readonly\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"readonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ref\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"ref\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowReactive\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowReadonly\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowRef\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stop\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"stop\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRaw\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRef\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRefs\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRefs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerRef\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"triggerRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unref\", function() { return _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"unref\"]; });\n\n/* harmony import */ var _vue_shared__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vue/shared */ \"./node_modules/@vue/shared/dist/shared.esm-bundler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"capitalize\", function() { return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"capitalize\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeClass\", function() { return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"normalizeClass\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeProps\", function() { return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"normalizeProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeStyle\", function() { return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"normalizeStyle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toDisplayString\", function() { return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toDisplayString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toHandlerKey\", function() { return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"]; });\n\n\n\n\n\n\nconst stack = [];\r\nfunction pushWarningContext(vnode) {\r\n stack.push(vnode);\r\n}\r\nfunction popWarningContext() {\r\n stack.pop();\r\n}\r\nfunction warn(msg, ...args) {\r\n // avoid props formatting or warn handler tracking deps that might be mutated\r\n // during patch, leading to infinite recursion.\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"pauseTracking\"])();\r\n const instance = stack.length ? stack[stack.length - 1].component : null;\r\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\r\n const trace = getComponentTrace();\r\n if (appWarnHandler) {\r\n callWithErrorHandling(appWarnHandler, instance, 11 /* APP_WARN_HANDLER */, [\r\n msg + args.join(''),\r\n instance && instance.proxy,\r\n trace\r\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\r\n .join('\\n'),\r\n trace\r\n ]);\r\n }\r\n else {\r\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\r\n /* istanbul ignore if */\r\n if (trace.length &&\r\n // avoid spamming console during tests\r\n !false) {\r\n warnArgs.push(`\\n`, ...formatTrace(trace));\r\n }\r\n console.warn(...warnArgs);\r\n }\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"resetTracking\"])();\r\n}\r\nfunction getComponentTrace() {\r\n let currentVNode = stack[stack.length - 1];\r\n if (!currentVNode) {\r\n return [];\r\n }\r\n // we can't just use the stack because it will be incomplete during updates\r\n // that did not start from the root. Re-construct the parent chain using\r\n // instance parent pointers.\r\n const normalizedStack = [];\r\n while (currentVNode) {\r\n const last = normalizedStack[0];\r\n if (last && last.vnode === currentVNode) {\r\n last.recurseCount++;\r\n }\r\n else {\r\n normalizedStack.push({\r\n vnode: currentVNode,\r\n recurseCount: 0\r\n });\r\n }\r\n const parentInstance = currentVNode.component && currentVNode.component.parent;\r\n currentVNode = parentInstance && parentInstance.vnode;\r\n }\r\n return normalizedStack;\r\n}\r\n/* istanbul ignore next */\r\nfunction formatTrace(trace) {\r\n const logs = [];\r\n trace.forEach((entry, i) => {\r\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\r\n });\r\n return logs;\r\n}\r\nfunction formatTraceEntry({ vnode, recurseCount }) {\r\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\r\n const isRoot = vnode.component ? vnode.component.parent == null : false;\r\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\r\n const close = `>` + postfix;\r\n return vnode.props\r\n ? [open, ...formatProps(vnode.props), close]\r\n : [open + close];\r\n}\r\n/* istanbul ignore next */\r\nfunction formatProps(props) {\r\n const res = [];\r\n const keys = Object.keys(props);\r\n keys.slice(0, 3).forEach(key => {\r\n res.push(...formatProp(key, props[key]));\r\n });\r\n if (keys.length > 3) {\r\n res.push(` ...`);\r\n }\r\n return res;\r\n}\r\n/* istanbul ignore next */\r\nfunction formatProp(key, value, raw) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\r\n value = JSON.stringify(value);\r\n return raw ? value : [`${key}=${value}`];\r\n }\r\n else if (typeof value === 'number' ||\r\n typeof value === 'boolean' ||\r\n value == null) {\r\n return raw ? value : [`${key}=${value}`];\r\n }\r\n else if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(value)) {\r\n value = formatProp(key, Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(value.value), true);\r\n return raw ? value : [`${key}=Ref<`, value, `>`];\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(value)) {\r\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\r\n }\r\n else {\r\n value = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(value);\r\n return raw ? value : [`${key}=`, value];\r\n }\r\n}\n\nconst ErrorTypeStrings = {\r\n [\"sp\" /* SERVER_PREFETCH */]: 'serverPrefetch hook',\r\n [\"bc\" /* BEFORE_CREATE */]: 'beforeCreate hook',\r\n [\"c\" /* CREATED */]: 'created hook',\r\n [\"bm\" /* BEFORE_MOUNT */]: 'beforeMount hook',\r\n [\"m\" /* MOUNTED */]: 'mounted hook',\r\n [\"bu\" /* BEFORE_UPDATE */]: 'beforeUpdate hook',\r\n [\"u\" /* UPDATED */]: 'updated',\r\n [\"bum\" /* BEFORE_UNMOUNT */]: 'beforeUnmount hook',\r\n [\"um\" /* UNMOUNTED */]: 'unmounted hook',\r\n [\"a\" /* ACTIVATED */]: 'activated hook',\r\n [\"da\" /* DEACTIVATED */]: 'deactivated hook',\r\n [\"ec\" /* ERROR_CAPTURED */]: 'errorCaptured hook',\r\n [\"rtc\" /* RENDER_TRACKED */]: 'renderTracked hook',\r\n [\"rtg\" /* RENDER_TRIGGERED */]: 'renderTriggered hook',\r\n [0 /* SETUP_FUNCTION */]: 'setup function',\r\n [1 /* RENDER_FUNCTION */]: 'render function',\r\n [2 /* WATCH_GETTER */]: 'watcher getter',\r\n [3 /* WATCH_CALLBACK */]: 'watcher callback',\r\n [4 /* WATCH_CLEANUP */]: 'watcher cleanup function',\r\n [5 /* NATIVE_EVENT_HANDLER */]: 'native event handler',\r\n [6 /* COMPONENT_EVENT_HANDLER */]: 'component event handler',\r\n [7 /* VNODE_HOOK */]: 'vnode hook',\r\n [8 /* DIRECTIVE_HOOK */]: 'directive hook',\r\n [9 /* TRANSITION_HOOK */]: 'transition hook',\r\n [10 /* APP_ERROR_HANDLER */]: 'app errorHandler',\r\n [11 /* APP_WARN_HANDLER */]: 'app warnHandler',\r\n [12 /* FUNCTION_REF */]: 'ref function',\r\n [13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',\r\n [14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\r\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\r\n};\r\nfunction callWithErrorHandling(fn, instance, type, args) {\r\n let res;\r\n try {\r\n res = args ? fn(...args) : fn();\r\n }\r\n catch (err) {\r\n handleError(err, instance, type);\r\n }\r\n return res;\r\n}\r\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(fn)) {\r\n const res = callWithErrorHandling(fn, instance, type, args);\r\n if (res && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isPromise\"])(res)) {\r\n res.catch(err => {\r\n handleError(err, instance, type);\r\n });\r\n }\r\n return res;\r\n }\r\n const values = [];\r\n for (let i = 0; i < fn.length; i++) {\r\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\r\n }\r\n return values;\r\n}\r\nfunction handleError(err, instance, type, throwInDev = true) {\r\n const contextVNode = instance ? instance.vnode : null;\r\n if (instance) {\r\n let cur = instance.parent;\r\n // the exposed instance is the render proxy to keep it consistent with 2.x\r\n const exposedInstance = instance.proxy;\r\n // in production the hook receives only the error code\r\n const errorInfo = ( true) ? ErrorTypeStrings[type] : undefined;\r\n while (cur) {\r\n const errorCapturedHooks = cur.ec;\r\n if (errorCapturedHooks) {\r\n for (let i = 0; i < errorCapturedHooks.length; i++) {\r\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\r\n return;\r\n }\r\n }\r\n }\r\n cur = cur.parent;\r\n }\r\n // app-level handling\r\n const appErrorHandler = instance.appContext.config.errorHandler;\r\n if (appErrorHandler) {\r\n callWithErrorHandling(appErrorHandler, null, 10 /* APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\r\n return;\r\n }\r\n }\r\n logError(err, type, contextVNode, throwInDev);\r\n}\r\nfunction logError(err, type, contextVNode, throwInDev = true) {\r\n if ((true)) {\r\n const info = ErrorTypeStrings[type];\r\n if (contextVNode) {\r\n pushWarningContext(contextVNode);\r\n }\r\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\r\n if (contextVNode) {\r\n popWarningContext();\r\n }\r\n // crash in dev by default so it's more noticeable\r\n if (throwInDev) {\r\n throw err;\r\n }\r\n else {\r\n console.error(err);\r\n }\r\n }\r\n else {}\r\n}\n\nlet isFlushing = false;\r\nlet isFlushPending = false;\r\nconst queue = [];\r\nlet flushIndex = 0;\r\nconst pendingPreFlushCbs = [];\r\nlet activePreFlushCbs = null;\r\nlet preFlushIndex = 0;\r\nconst pendingPostFlushCbs = [];\r\nlet activePostFlushCbs = null;\r\nlet postFlushIndex = 0;\r\nconst resolvedPromise = Promise.resolve();\r\nlet currentFlushPromise = null;\r\nlet currentPreFlushParentJob = null;\r\nconst RECURSION_LIMIT = 100;\r\nfunction nextTick(fn) {\r\n const p = currentFlushPromise || resolvedPromise;\r\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\r\n}\r\n// #2768\r\n// Use binary-search to find a suitable position in the queue,\r\n// so that the queue maintains the increasing order of job's id,\r\n// which can prevent the job from being skipped and also can avoid repeated patching.\r\nfunction findInsertionIndex(id) {\r\n // the start index should be `flushIndex + 1`\r\n let start = flushIndex + 1;\r\n let end = queue.length;\r\n while (start < end) {\r\n const middle = (start + end) >>> 1;\r\n const middleJobId = getId(queue[middle]);\r\n middleJobId < id ? (start = middle + 1) : (end = middle);\r\n }\r\n return start;\r\n}\r\nfunction queueJob(job) {\r\n // the dedupe search uses the startIndex argument of Array.includes()\r\n // by default the search index includes the current job that is being run\r\n // so it cannot recursively trigger itself again.\r\n // if the job is a watch() callback, the search will start with a +1 index to\r\n // allow it recursively trigger itself - it is the user's responsibility to\r\n // ensure it doesn't end up in an infinite loop.\r\n if ((!queue.length ||\r\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) &&\r\n job !== currentPreFlushParentJob) {\r\n if (job.id == null) {\r\n queue.push(job);\r\n }\r\n else {\r\n queue.splice(findInsertionIndex(job.id), 0, job);\r\n }\r\n queueFlush();\r\n }\r\n}\r\nfunction queueFlush() {\r\n if (!isFlushing && !isFlushPending) {\r\n isFlushPending = true;\r\n currentFlushPromise = resolvedPromise.then(flushJobs);\r\n }\r\n}\r\nfunction invalidateJob(job) {\r\n const i = queue.indexOf(job);\r\n if (i > flushIndex) {\r\n queue.splice(i, 1);\r\n }\r\n}\r\nfunction queueCb(cb, activeQueue, pendingQueue, index) {\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(cb)) {\r\n if (!activeQueue ||\r\n !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) {\r\n pendingQueue.push(cb);\r\n }\r\n }\r\n else {\r\n // if cb is an array, it is a component lifecycle hook which can only be\r\n // triggered by a job, which is already deduped in the main queue, so\r\n // we can skip duplicate check here to improve perf\r\n pendingQueue.push(...cb);\r\n }\r\n queueFlush();\r\n}\r\nfunction queuePreFlushCb(cb) {\r\n queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex);\r\n}\r\nfunction queuePostFlushCb(cb) {\r\n queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex);\r\n}\r\nfunction flushPreFlushCbs(seen, parentJob = null) {\r\n if (pendingPreFlushCbs.length) {\r\n currentPreFlushParentJob = parentJob;\r\n activePreFlushCbs = [...new Set(pendingPreFlushCbs)];\r\n pendingPreFlushCbs.length = 0;\r\n if ((true)) {\r\n seen = seen || new Map();\r\n }\r\n for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) {\r\n if (( true) &&\r\n checkRecursiveUpdates(seen, activePreFlushCbs[preFlushIndex])) {\r\n continue;\r\n }\r\n activePreFlushCbs[preFlushIndex]();\r\n }\r\n activePreFlushCbs = null;\r\n preFlushIndex = 0;\r\n currentPreFlushParentJob = null;\r\n // recursively flush until it drains\r\n flushPreFlushCbs(seen, parentJob);\r\n }\r\n}\r\nfunction flushPostFlushCbs(seen) {\r\n if (pendingPostFlushCbs.length) {\r\n const deduped = [...new Set(pendingPostFlushCbs)];\r\n pendingPostFlushCbs.length = 0;\r\n // #1947 already has active queue, nested flushPostFlushCbs call\r\n if (activePostFlushCbs) {\r\n activePostFlushCbs.push(...deduped);\r\n return;\r\n }\r\n activePostFlushCbs = deduped;\r\n if ((true)) {\r\n seen = seen || new Map();\r\n }\r\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\r\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\r\n if (( true) &&\r\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\r\n continue;\r\n }\r\n activePostFlushCbs[postFlushIndex]();\r\n }\r\n activePostFlushCbs = null;\r\n postFlushIndex = 0;\r\n }\r\n}\r\nconst getId = (job) => job.id == null ? Infinity : job.id;\r\nfunction flushJobs(seen) {\r\n isFlushPending = false;\r\n isFlushing = true;\r\n if ((true)) {\r\n seen = seen || new Map();\r\n }\r\n flushPreFlushCbs(seen);\r\n // Sort queue before flush.\r\n // This ensures that:\r\n // 1. Components are updated from parent to child. (because parent is always\r\n // created before the child so its render effect will have smaller\r\n // priority number)\r\n // 2. If a component is unmounted during a parent component's update,\r\n // its update can be skipped.\r\n queue.sort((a, b) => getId(a) - getId(b));\r\n // conditional usage of checkRecursiveUpdate must be determined out of\r\n // try ... catch block since Rollup by default de-optimizes treeshaking\r\n // inside try-catch. This can leave all warning code unshaked. Although\r\n // they would get eventually shaken by a minifier like terser, some minifiers\r\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\r\n const check = ( true)\r\n ? (job) => checkRecursiveUpdates(seen, job)\r\n : undefined;\r\n try {\r\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\r\n const job = queue[flushIndex];\r\n if (job && job.active !== false) {\r\n if (( true) && check(job)) {\r\n continue;\r\n }\r\n // console.log(`running:`, job.id)\r\n callWithErrorHandling(job, null, 14 /* SCHEDULER */);\r\n }\r\n }\r\n }\r\n finally {\r\n flushIndex = 0;\r\n queue.length = 0;\r\n flushPostFlushCbs(seen);\r\n isFlushing = false;\r\n currentFlushPromise = null;\r\n // some postFlushCb queued jobs!\r\n // keep flushing until it drains.\r\n if (queue.length ||\r\n pendingPreFlushCbs.length ||\r\n pendingPostFlushCbs.length) {\r\n flushJobs(seen);\r\n }\r\n }\r\n}\r\nfunction checkRecursiveUpdates(seen, fn) {\r\n if (!seen.has(fn)) {\r\n seen.set(fn, 1);\r\n }\r\n else {\r\n const count = seen.get(fn);\r\n if (count > RECURSION_LIMIT) {\r\n const instance = fn.ownerInstance;\r\n const componentName = instance && getComponentName(instance.type);\r\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\r\n `This means you have a reactive effect that is mutating its own ` +\r\n `dependencies and thus recursively triggering itself. Possible sources ` +\r\n `include component template, render function, updated hook or ` +\r\n `watcher source function.`);\r\n return true;\r\n }\r\n else {\r\n seen.set(fn, count + 1);\r\n }\r\n }\r\n}\n\n/* eslint-disable no-restricted-globals */\r\nlet isHmrUpdating = false;\r\nconst hmrDirtyComponents = new Set();\r\n// Expose the HMR runtime on the global object\r\n// This makes it entirely tree-shakable without polluting the exports and makes\r\n// it easier to be used in toolings like vue-loader\r\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\r\n// to be set so that its instances can be registered / removed.\r\nif ((true)) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"getGlobalThis\"])().__VUE_HMR_RUNTIME__ = {\r\n createRecord: tryWrap(createRecord),\r\n rerender: tryWrap(rerender),\r\n reload: tryWrap(reload)\r\n };\r\n}\r\nconst map = new Map();\r\nfunction registerHMR(instance) {\r\n const id = instance.type.__hmrId;\r\n let record = map.get(id);\r\n if (!record) {\r\n createRecord(id, instance.type);\r\n record = map.get(id);\r\n }\r\n record.instances.add(instance);\r\n}\r\nfunction unregisterHMR(instance) {\r\n map.get(instance.type.__hmrId).instances.delete(instance);\r\n}\r\nfunction createRecord(id, initialDef) {\r\n if (map.has(id)) {\r\n return false;\r\n }\r\n map.set(id, {\r\n initialDef: normalizeClassComponent(initialDef),\r\n instances: new Set()\r\n });\r\n return true;\r\n}\r\nfunction normalizeClassComponent(component) {\r\n return isClassComponent(component) ? component.__vccOpts : component;\r\n}\r\nfunction rerender(id, newRender) {\r\n const record = map.get(id);\r\n if (!record) {\r\n return;\r\n }\r\n // update initial record (for not-yet-rendered component)\r\n record.initialDef.render = newRender;\r\n [...record.instances].forEach(instance => {\r\n if (newRender) {\r\n instance.render = newRender;\r\n normalizeClassComponent(instance.type).render = newRender;\r\n }\r\n instance.renderCache = [];\r\n // this flag forces child components with slot content to update\r\n isHmrUpdating = true;\r\n instance.update();\r\n isHmrUpdating = false;\r\n });\r\n}\r\nfunction reload(id, newComp) {\r\n const record = map.get(id);\r\n if (!record)\r\n return;\r\n newComp = normalizeClassComponent(newComp);\r\n // update initial def (for not-yet-rendered components)\r\n updateComponentDef(record.initialDef, newComp);\r\n // create a snapshot which avoids the set being mutated during updates\r\n const instances = [...record.instances];\r\n for (const instance of instances) {\r\n const oldComp = normalizeClassComponent(instance.type);\r\n if (!hmrDirtyComponents.has(oldComp)) {\r\n // 1. Update existing comp definition to match new one\r\n if (oldComp !== record.initialDef) {\r\n updateComponentDef(oldComp, newComp);\r\n }\r\n // 2. mark definition dirty. This forces the renderer to replace the\r\n // component on patch.\r\n hmrDirtyComponents.add(oldComp);\r\n }\r\n // 3. invalidate options resolution cache\r\n instance.appContext.optionsCache.delete(instance.type);\r\n // 4. actually update\r\n if (instance.ceReload) {\r\n // custom element\r\n hmrDirtyComponents.add(oldComp);\r\n instance.ceReload(newComp.styles);\r\n hmrDirtyComponents.delete(oldComp);\r\n }\r\n else if (instance.parent) {\r\n // 4. Force the parent instance to re-render. This will cause all updated\r\n // components to be unmounted and re-mounted. Queue the update so that we\r\n // don't end up forcing the same parent to re-render multiple times.\r\n queueJob(instance.parent.update);\r\n // instance is the inner component of an async custom element\r\n // invoke to reset styles\r\n if (instance.parent.type.__asyncLoader &&\r\n instance.parent.ceReload) {\r\n instance.parent.ceReload(newComp.styles);\r\n }\r\n }\r\n else if (instance.appContext.reload) {\r\n // root instance mounted via createApp() has a reload method\r\n instance.appContext.reload();\r\n }\r\n else if (typeof window !== 'undefined') {\r\n // root instance inside tree created via raw render(). Force reload.\r\n window.location.reload();\r\n }\r\n else {\r\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\r\n }\r\n }\r\n // 5. make sure to cleanup dirty hmr components after update\r\n queuePostFlushCb(() => {\r\n for (const instance of instances) {\r\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\r\n }\r\n });\r\n}\r\nfunction updateComponentDef(oldComp, newComp) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(oldComp, newComp);\r\n for (const key in oldComp) {\r\n if (key !== '__file' && !(key in newComp)) {\r\n delete oldComp[key];\r\n }\r\n }\r\n}\r\nfunction tryWrap(fn) {\r\n return (id, arg) => {\r\n try {\r\n return fn(id, arg);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\r\n `Full reload required.`);\r\n }\r\n };\r\n}\n\nlet devtools;\r\nlet buffer = [];\r\nlet devtoolsNotInstalled = false;\r\nfunction emit(event, ...args) {\r\n if (devtools) {\r\n devtools.emit(event, ...args);\r\n }\r\n else if (!devtoolsNotInstalled) {\r\n buffer.push({ event, args });\r\n }\r\n}\r\nfunction setDevtoolsHook(hook, target) {\r\n var _a, _b;\r\n devtools = hook;\r\n if (devtools) {\r\n devtools.enabled = true;\r\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\r\n buffer = [];\r\n }\r\n else if (\r\n // handle late devtools injection - only do this if we are in an actual\r\n // browser environment to avoid the timer handle stalling test runner exit\r\n // (#4815)\r\n // eslint-disable-next-line no-restricted-globals\r\n typeof window !== 'undefined' &&\r\n // some envs mock window but not fully\r\n window.HTMLElement &&\r\n // also exclude jsdom\r\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\r\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\r\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\r\n replay.push((newHook) => {\r\n setDevtoolsHook(newHook, target);\r\n });\r\n // clear buffer after 3s - the user probably doesn't have devtools installed\r\n // at all, and keeping the buffer will cause memory leaks (#4738)\r\n setTimeout(() => {\r\n if (!devtools) {\r\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\r\n devtoolsNotInstalled = true;\r\n buffer = [];\r\n }\r\n }, 3000);\r\n }\r\n else {\r\n // non-browser env, assume not installed\r\n devtoolsNotInstalled = true;\r\n buffer = [];\r\n }\r\n}\r\nfunction devtoolsInitApp(app, version) {\r\n emit(\"app:init\" /* APP_INIT */, app, version, {\r\n Fragment,\r\n Text,\r\n Comment,\r\n Static\r\n });\r\n}\r\nfunction devtoolsUnmountApp(app) {\r\n emit(\"app:unmount\" /* APP_UNMOUNT */, app);\r\n}\r\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\r\nconst devtoolsComponentUpdated = \r\n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\r\nconst devtoolsComponentRemoved = \r\n/*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* COMPONENT_REMOVED */);\r\nfunction createDevtoolsComponentHook(hook) {\r\n return (component) => {\r\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\r\n };\r\n}\r\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\r\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\r\nfunction createDevtoolsPerformanceHook(hook) {\r\n return (component, type, time) => {\r\n emit(hook, component.appContext.app, component.uid, component, type, time);\r\n };\r\n}\r\nfunction devtoolsComponentEmit(component, event, params) {\r\n emit(\"component:emit\" /* COMPONENT_EMIT */, component.appContext.app, component, event, params);\r\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\r\n const props = instance.vnode.props || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n if ((true)) {\r\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\r\n if (emitsOptions) {\r\n if (!(event in emitsOptions) &&\r\n !(false )) {\r\n if (!propsOptions || !(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"])(event) in propsOptions)) {\r\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\r\n `the emits option nor as an \"${Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"])(event)}\" prop.`);\r\n }\r\n }\r\n else {\r\n const validator = emitsOptions[event];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(validator)) {\r\n const isValid = validator(...rawArgs);\r\n if (!isValid) {\r\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let args = rawArgs;\r\n const isModelListener = event.startsWith('update:');\r\n // for v-model update:xxx events, apply modifiers on args\r\n const modelArg = isModelListener && event.slice(7);\r\n if (modelArg && modelArg in props) {\r\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\r\n const { number, trim } = props[modifiersKey] || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n if (trim) {\r\n args = rawArgs.map(a => a.trim());\r\n }\r\n else if (number) {\r\n args = rawArgs.map(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toNumber\"]);\r\n }\r\n }\r\n if (true) {\r\n devtoolsComponentEmit(instance, event, args);\r\n }\r\n if ((true)) {\r\n const lowerCaseEvent = event.toLowerCase();\r\n if (lowerCaseEvent !== event && props[Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"])(lowerCaseEvent)]) {\r\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\r\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\r\n `Note that HTML attributes are case-insensitive and you cannot use ` +\r\n `v-on to listen to camelCase events when using in-DOM templates. ` +\r\n `You should probably use \"${Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(event)}\" instead of \"${event}\".`);\r\n }\r\n }\r\n let handlerName;\r\n let handler = props[(handlerName = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"])(event))] ||\r\n // also try camelCase event handler (#2249)\r\n props[(handlerName = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"])(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(event)))];\r\n // for v-model update:xxx events, also trigger kebab-case equivalent\r\n // for props passed via kebab-case\r\n if (!handler && isModelListener) {\r\n handler = props[(handlerName = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"])(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(event)))];\r\n }\r\n if (handler) {\r\n callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n const onceHandler = props[handlerName + `Once`];\r\n if (onceHandler) {\r\n if (!instance.emitted) {\r\n instance.emitted = {};\r\n }\r\n else if (instance.emitted[handlerName]) {\r\n return;\r\n }\r\n instance.emitted[handlerName] = true;\r\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n}\r\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\r\n const cache = appContext.emitsCache;\r\n const cached = cache.get(comp);\r\n if (cached !== undefined) {\r\n return cached;\r\n }\r\n const raw = comp.emits;\r\n let normalized = {};\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if ( true && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(comp)) {\r\n const extendEmits = (raw) => {\r\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\r\n if (normalizedFromExtend) {\r\n hasExtends = true;\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(normalized, normalizedFromExtend);\r\n }\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendEmits);\r\n }\r\n if (comp.extends) {\r\n extendEmits(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendEmits);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n cache.set(comp, null);\r\n return null;\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(raw)) {\r\n raw.forEach(key => (normalized[key] = null));\r\n }\r\n else {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(normalized, raw);\r\n }\r\n cache.set(comp, normalized);\r\n return normalized;\r\n}\r\n// Check if an incoming prop key is a declared emit event listener.\r\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\r\n// both considered matched listeners.\r\nfunction isEmitListener(options, key) {\r\n if (!options || !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isOn\"])(key)) {\r\n return false;\r\n }\r\n key = key.slice(2).replace(/Once$/, '');\r\n return (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(options, key[0].toLowerCase() + key.slice(1)) ||\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(options, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(key)) ||\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(options, key));\r\n}\n\n/**\r\n * mark the current rendering instance for asset resolution (e.g.\r\n * resolveComponent, resolveDirective) during render\r\n */\r\nlet currentRenderingInstance = null;\r\nlet currentScopeId = null;\r\n/**\r\n * Note: rendering calls maybe nested. The function returns the parent rendering\r\n * instance if present, which should be restored after the render is done:\r\n *\r\n * ```js\r\n * const prev = setCurrentRenderingInstance(i)\r\n * // ...render\r\n * setCurrentRenderingInstance(prev)\r\n * ```\r\n */\r\nfunction setCurrentRenderingInstance(instance) {\r\n const prev = currentRenderingInstance;\r\n currentRenderingInstance = instance;\r\n currentScopeId = (instance && instance.type.__scopeId) || null;\r\n return prev;\r\n}\r\n/**\r\n * Set scope id when creating hoisted vnodes.\r\n * @private compiler helper\r\n */\r\nfunction pushScopeId(id) {\r\n currentScopeId = id;\r\n}\r\n/**\r\n * Technically we no longer need this after 3.0.8 but we need to keep the same\r\n * API for backwards compat w/ code generated by compilers.\r\n * @private\r\n */\r\nfunction popScopeId() {\r\n currentScopeId = null;\r\n}\r\n/**\r\n * Only for backwards compat\r\n * @private\r\n */\r\nconst withScopeId = (_id) => withCtx;\r\n/**\r\n * Wrap a slot function to memoize current rendering instance\r\n * @private compiler helper\r\n */\r\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\r\n) {\r\n if (!ctx)\r\n return fn;\r\n // already normalized\r\n if (fn._n) {\r\n return fn;\r\n }\r\n const renderFnWithContext = (...args) => {\r\n // If a user calls a compiled slot inside a template expression (#1745), it\r\n // can mess up block tracking, so by default we disable block tracking and\r\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\r\n // This isn't necessary if rendering a compiled `<slot>`, so we flip the\r\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\r\n if (renderFnWithContext._d) {\r\n setBlockTracking(-1);\r\n }\r\n const prevInstance = setCurrentRenderingInstance(ctx);\r\n const res = fn(...args);\r\n setCurrentRenderingInstance(prevInstance);\r\n if (renderFnWithContext._d) {\r\n setBlockTracking(1);\r\n }\r\n if (true) {\r\n devtoolsComponentUpdated(ctx);\r\n }\r\n return res;\r\n };\r\n // mark normalized to avoid duplicated wrapping\r\n renderFnWithContext._n = true;\r\n // mark this as compiled by default\r\n // this is used in vnode.ts -> normalizeChildren() to set the slot\r\n // rendering flag.\r\n renderFnWithContext._c = true;\r\n // disable block tracking by default\r\n renderFnWithContext._d = true;\r\n return renderFnWithContext;\r\n}\n\n/**\r\n * dev only flag to track whether $attrs was used during render.\r\n * If $attrs was used during render then the warning for failed attrs\r\n * fallthrough can be suppressed.\r\n */\r\nlet accessedAttrs = false;\r\nfunction markAttrsAccessed() {\r\n accessedAttrs = true;\r\n}\r\nfunction renderComponentRoot(instance) {\r\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\r\n let result;\r\n let fallthroughAttrs;\r\n const prev = setCurrentRenderingInstance(instance);\r\n if ((true)) {\r\n accessedAttrs = false;\r\n }\r\n try {\r\n if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {\r\n // withProxy is a proxy with a different `has` trap only for\r\n // runtime-compiled render functions using `with` block.\r\n const proxyToUse = withProxy || proxy;\r\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\r\n fallthroughAttrs = attrs;\r\n }\r\n else {\r\n // functional\r\n const render = Component;\r\n // in dev, mark attrs accessed if optional props (attrs === props)\r\n if (( true) && attrs === props) {\r\n markAttrsAccessed();\r\n }\r\n result = normalizeVNode(render.length > 1\r\n ? render(props, ( true)\r\n ? {\r\n get attrs() {\r\n markAttrsAccessed();\r\n return attrs;\r\n },\r\n slots,\r\n emit\r\n }\r\n : undefined)\r\n : render(props, null /* we know it doesn't need it */));\r\n fallthroughAttrs = Component.props\r\n ? attrs\r\n : getFunctionalFallthrough(attrs);\r\n }\r\n }\r\n catch (err) {\r\n blockStack.length = 0;\r\n handleError(err, instance, 1 /* RENDER_FUNCTION */);\r\n result = createVNode(Comment);\r\n }\r\n // attr merging\r\n // in dev mode, comments are preserved, and it's possible for a template\r\n // to have comments along side the root element which makes it a fragment\r\n let root = result;\r\n let setRoot = undefined;\r\n if (( true) &&\r\n result.patchFlag > 0 &&\r\n result.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {\r\n [root, setRoot] = getChildRoot(result);\r\n }\r\n if (fallthroughAttrs && inheritAttrs !== false) {\r\n const keys = Object.keys(fallthroughAttrs);\r\n const { shapeFlag } = root;\r\n if (keys.length) {\r\n if (shapeFlag & (1 /* ELEMENT */ | 6 /* COMPONENT */)) {\r\n if (propsOptions && keys.some(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isModelListener\"])) {\r\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\r\n // prop, it indicates this component expects to handle v-model and\r\n // it should not fallthrough.\r\n // related: #1543, #1643, #1989\r\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\r\n }\r\n root = cloneVNode(root, fallthroughAttrs);\r\n }\r\n else if (( true) && !accessedAttrs && root.type !== Comment) {\r\n const allAttrs = Object.keys(attrs);\r\n const eventAttrs = [];\r\n const extraAttrs = [];\r\n for (let i = 0, l = allAttrs.length; i < l; i++) {\r\n const key = allAttrs[i];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isOn\"])(key)) {\r\n // ignore v-model handlers when they fail to fallthrough\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isModelListener\"])(key)) {\r\n // remove `on`, lowercase first letter to reflect event casing\r\n // accurately\r\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\r\n }\r\n }\r\n else {\r\n extraAttrs.push(key);\r\n }\r\n }\r\n if (extraAttrs.length) {\r\n warn(`Extraneous non-props attributes (` +\r\n `${extraAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes.`);\r\n }\r\n if (eventAttrs.length) {\r\n warn(`Extraneous non-emits event listeners (` +\r\n `${eventAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes. ` +\r\n `If the listener is intended to be a component custom event listener only, ` +\r\n `declare it using the \"emits\" option.`);\r\n }\r\n }\r\n }\r\n }\r\n // inherit directives\r\n if (vnode.dirs) {\r\n if (( true) && !isElementRoot(root)) {\r\n warn(`Runtime directive used on component with non-element root node. ` +\r\n `The directives will not function as intended.`);\r\n }\r\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\r\n }\r\n // inherit transition data\r\n if (vnode.transition) {\r\n if (( true) && !isElementRoot(root)) {\r\n warn(`Component inside <Transition> renders non-element root node ` +\r\n `that cannot be animated.`);\r\n }\r\n root.transition = vnode.transition;\r\n }\r\n if (( true) && setRoot) {\r\n setRoot(root);\r\n }\r\n else {\r\n result = root;\r\n }\r\n setCurrentRenderingInstance(prev);\r\n return result;\r\n}\r\n/**\r\n * dev only\r\n * In dev mode, template root level comments are rendered, which turns the\r\n * template into a fragment root, but we need to locate the single element\r\n * root for attrs and scope id processing.\r\n */\r\nconst getChildRoot = (vnode) => {\r\n const rawChildren = vnode.children;\r\n const dynamicChildren = vnode.dynamicChildren;\r\n const childRoot = filterSingleRoot(rawChildren);\r\n if (!childRoot) {\r\n return [vnode, undefined];\r\n }\r\n const index = rawChildren.indexOf(childRoot);\r\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\r\n const setRoot = (updatedRoot) => {\r\n rawChildren[index] = updatedRoot;\r\n if (dynamicChildren) {\r\n if (dynamicIndex > -1) {\r\n dynamicChildren[dynamicIndex] = updatedRoot;\r\n }\r\n else if (updatedRoot.patchFlag > 0) {\r\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\r\n }\r\n }\r\n };\r\n return [normalizeVNode(childRoot), setRoot];\r\n};\r\nfunction filterSingleRoot(children) {\r\n let singleRoot;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (isVNode(child)) {\r\n // ignore user comment\r\n if (child.type !== Comment || child.children === 'v-if') {\r\n if (singleRoot) {\r\n // has more than 1 non-comment child, return now\r\n return;\r\n }\r\n else {\r\n singleRoot = child;\r\n }\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n return singleRoot;\r\n}\r\nconst getFunctionalFallthrough = (attrs) => {\r\n let res;\r\n for (const key in attrs) {\r\n if (key === 'class' || key === 'style' || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isOn\"])(key)) {\r\n (res || (res = {}))[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst filterModelListeners = (attrs, props) => {\r\n const res = {};\r\n for (const key in attrs) {\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isModelListener\"])(key) || !(key.slice(9) in props)) {\r\n res[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst isElementRoot = (vnode) => {\r\n return (vnode.shapeFlag & (6 /* COMPONENT */ | 1 /* ELEMENT */) ||\r\n vnode.type === Comment // potential v-if branch switch\r\n );\r\n};\r\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\r\n const { props: prevProps, children: prevChildren, component } = prevVNode;\r\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\r\n const emits = component.emitsOptions;\r\n // Parent component's render function was hot-updated. Since this may have\r\n // caused the child component's slots content to have changed, we need to\r\n // force the child to update as well.\r\n if (( true) && (prevChildren || nextChildren) && isHmrUpdating) {\r\n return true;\r\n }\r\n // force child update for runtime directive or transition on component vnode.\r\n if (nextVNode.dirs || nextVNode.transition) {\r\n return true;\r\n }\r\n if (optimized && patchFlag >= 0) {\r\n if (patchFlag & 1024 /* DYNAMIC_SLOTS */) {\r\n // slot content that references values that might have changed,\r\n // e.g. in a v-for\r\n return true;\r\n }\r\n if (patchFlag & 16 /* FULL_PROPS */) {\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n // presence of this flag indicates props are always non-null\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n else if (patchFlag & 8 /* PROPS */) {\r\n const dynamicProps = nextVNode.dynamicProps;\r\n for (let i = 0; i < dynamicProps.length; i++) {\r\n const key = dynamicProps[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emits, key)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // this path is only taken by manually written render functions\r\n // so presence of any children leads to a forced update\r\n if (prevChildren || nextChildren) {\r\n if (!nextChildren || !nextChildren.$stable) {\r\n return true;\r\n }\r\n }\r\n if (prevProps === nextProps) {\r\n return false;\r\n }\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n if (!nextProps) {\r\n return true;\r\n }\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n return false;\r\n}\r\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\r\n const nextKeys = Object.keys(nextProps);\r\n if (nextKeys.length !== Object.keys(prevProps).length) {\r\n return true;\r\n }\r\n for (let i = 0; i < nextKeys.length; i++) {\r\n const key = nextKeys[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emitsOptions, key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\r\n) {\r\n while (parent && parent.subTree === vnode) {\r\n (vnode = parent.vnode).el = el;\r\n parent = parent.parent;\r\n }\r\n}\n\nconst isSuspense = (type) => type.__isSuspense;\r\n// Suspense exposes a component-like API, and is treated like a component\r\n// in the compiler, but internally it's a special built-in type that hooks\r\n// directly into the renderer.\r\nconst SuspenseImpl = {\r\n name: 'Suspense',\r\n // In order to make Suspense tree-shakable, we need to avoid importing it\r\n // directly in the renderer. The renderer checks for the __isSuspense flag\r\n // on a vnode's type and calls the `process` method, passing in renderer\r\n // internals.\r\n __isSuspense: true,\r\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \r\n // platform-specific impl passed from renderer\r\n rendererInternals) {\r\n if (n1 == null) {\r\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\r\n }\r\n else {\r\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\r\n }\r\n },\r\n hydrate: hydrateSuspense,\r\n create: createSuspenseBoundary,\r\n normalize: normalizeSuspenseChildren\r\n};\r\n// Force-casted public typing for h and TSX props inference\r\nconst Suspense = (SuspenseImpl );\r\nfunction triggerEvent(vnode, name) {\r\n const eventListener = vnode.props && vnode.props[name];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(eventListener)) {\r\n eventListener();\r\n }\r\n}\r\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\r\n const { p: patch, o: { createElement } } = rendererInternals;\r\n const hiddenContainer = createElement('div');\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\r\n // start mounting the content subtree in an off-dom container\r\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\r\n // now check if we have encountered any async deps\r\n if (suspense.deps > 0) {\r\n // has async\r\n // invoke @fallback event\r\n triggerEvent(vnode, 'onPending');\r\n triggerEvent(vnode, 'onFallback');\r\n // mount the fallback tree\r\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds);\r\n setActiveBranch(suspense, vnode.ssFallback);\r\n }\r\n else {\r\n // Suspense has no async deps. Just resolve.\r\n suspense.resolve();\r\n }\r\n}\r\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\r\n const suspense = (n2.suspense = n1.suspense);\r\n suspense.vnode = n2;\r\n n2.el = n1.el;\r\n const newBranch = n2.ssContent;\r\n const newFallback = n2.ssFallback;\r\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\r\n if (pendingBranch) {\r\n suspense.pendingBranch = newBranch;\r\n if (isSameVNodeType(newBranch, pendingBranch)) {\r\n // same root type but content may have changed.\r\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else if (isInFallback) {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else {\r\n // toggled before pending tree is resolved\r\n suspense.pendingId++;\r\n if (isHydrating) {\r\n // if toggled before hydration is finished, the current DOM tree is\r\n // no longer valid. set it as the active branch so it will be unmounted\r\n // when resolved\r\n suspense.isHydrating = false;\r\n suspense.activeBranch = pendingBranch;\r\n }\r\n else {\r\n unmount(pendingBranch, parentComponent, suspense);\r\n }\r\n // increment pending ID. this is used to invalidate async callbacks\r\n // reset suspense state\r\n suspense.deps = 0;\r\n // discard effects from pending branch\r\n suspense.effects.length = 0;\r\n // discard previous container\r\n suspense.hiddenContainer = createElement('div');\r\n if (isInFallback) {\r\n // already in fallback state\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // toggled \"back\" to current active branch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n // force resolve\r\n suspense.resolve(true);\r\n }\r\n else {\r\n // switched to a 3rd branch\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // root did not change, just normal patch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newBranch);\r\n }\r\n else {\r\n // root node toggled\r\n // invoke @pending event\r\n triggerEvent(n2, 'onPending');\r\n // mount pending branch in off-dom container\r\n suspense.pendingBranch = newBranch;\r\n suspense.pendingId++;\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n // incoming branch has no async deps, resolve now.\r\n suspense.resolve();\r\n }\r\n else {\r\n const { timeout, pendingId } = suspense;\r\n if (timeout > 0) {\r\n setTimeout(() => {\r\n if (suspense.pendingId === pendingId) {\r\n suspense.fallback(newFallback);\r\n }\r\n }, timeout);\r\n }\r\n else if (timeout === 0) {\r\n suspense.fallback(newFallback);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet hasWarned = false;\r\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\r\n /* istanbul ignore if */\r\n if ( true && !hasWarned) {\r\n hasWarned = true;\r\n // @ts-ignore `console.info` cannot be null error\r\n console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);\r\n }\r\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\r\n const timeout = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toNumber\"])(vnode.props && vnode.props.timeout);\r\n const suspense = {\r\n vnode,\r\n parent,\r\n parentComponent,\r\n isSVG,\r\n container,\r\n hiddenContainer,\r\n anchor,\r\n deps: 0,\r\n pendingId: 0,\r\n timeout: typeof timeout === 'number' ? timeout : -1,\r\n activeBranch: null,\r\n pendingBranch: null,\r\n isInFallback: true,\r\n isHydrating,\r\n isUnmounted: false,\r\n effects: [],\r\n resolve(resume = false) {\r\n if ((true)) {\r\n if (!resume && !suspense.pendingBranch) {\r\n throw new Error(`suspense.resolve() is called without a pending branch.`);\r\n }\r\n if (suspense.isUnmounted) {\r\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\r\n }\r\n }\r\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\r\n if (suspense.isHydrating) {\r\n suspense.isHydrating = false;\r\n }\r\n else if (!resume) {\r\n const delayEnter = activeBranch &&\r\n pendingBranch.transition &&\r\n pendingBranch.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = () => {\r\n if (pendingId === suspense.pendingId) {\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n };\r\n }\r\n // this is initial anchor on mount\r\n let { anchor } = suspense;\r\n // unmount current active tree\r\n if (activeBranch) {\r\n // if the fallback tree was mounted, it may have been moved\r\n // as part of a parent suspense. get the latest anchor for insertion\r\n anchor = next(activeBranch);\r\n unmount(activeBranch, parentComponent, suspense, true);\r\n }\r\n if (!delayEnter) {\r\n // move content from off-dom container to actual container\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n }\r\n setActiveBranch(suspense, pendingBranch);\r\n suspense.pendingBranch = null;\r\n suspense.isInFallback = false;\r\n // flush buffered effects\r\n // check if there is a pending parent suspense\r\n let parent = suspense.parent;\r\n let hasUnresolvedAncestor = false;\r\n while (parent) {\r\n if (parent.pendingBranch) {\r\n // found a pending parent suspense, merge buffered post jobs\r\n // into that parent\r\n parent.effects.push(...effects);\r\n hasUnresolvedAncestor = true;\r\n break;\r\n }\r\n parent = parent.parent;\r\n }\r\n // no pending parent suspense, flush all jobs\r\n if (!hasUnresolvedAncestor) {\r\n queuePostFlushCb(effects);\r\n }\r\n suspense.effects = [];\r\n // invoke @resolve event\r\n triggerEvent(vnode, 'onResolve');\r\n },\r\n fallback(fallbackVNode) {\r\n if (!suspense.pendingBranch) {\r\n return;\r\n }\r\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\r\n // invoke @fallback event\r\n triggerEvent(vnode, 'onFallback');\r\n const anchor = next(activeBranch);\r\n const mountFallback = () => {\r\n if (!suspense.isInFallback) {\r\n return;\r\n }\r\n // mount the fallback tree\r\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, fallbackVNode);\r\n };\r\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = mountFallback;\r\n }\r\n suspense.isInFallback = true;\r\n // unmount current active branch\r\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\r\n true // shouldRemove\r\n );\r\n if (!delayEnter) {\r\n mountFallback();\r\n }\r\n },\r\n move(container, anchor, type) {\r\n suspense.activeBranch &&\r\n move(suspense.activeBranch, container, anchor, type);\r\n suspense.container = container;\r\n },\r\n next() {\r\n return suspense.activeBranch && next(suspense.activeBranch);\r\n },\r\n registerDep(instance, setupRenderEffect) {\r\n const isInPendingSuspense = !!suspense.pendingBranch;\r\n if (isInPendingSuspense) {\r\n suspense.deps++;\r\n }\r\n const hydratedEl = instance.vnode.el;\r\n instance\r\n .asyncDep.catch(err => {\r\n handleError(err, instance, 0 /* SETUP_FUNCTION */);\r\n })\r\n .then(asyncSetupResult => {\r\n // retry when the setup() promise resolves.\r\n // component may have been unmounted before resolve.\r\n if (instance.isUnmounted ||\r\n suspense.isUnmounted ||\r\n suspense.pendingId !== instance.suspenseId) {\r\n return;\r\n }\r\n // retry from this component\r\n instance.asyncResolved = true;\r\n const { vnode } = instance;\r\n if ((true)) {\r\n pushWarningContext(vnode);\r\n }\r\n handleSetupResult(instance, asyncSetupResult, false);\r\n if (hydratedEl) {\r\n // vnode may have been replaced if an update happened before the\r\n // async dep is resolved.\r\n vnode.el = hydratedEl;\r\n }\r\n const placeholder = !hydratedEl && instance.subTree.el;\r\n setupRenderEffect(instance, vnode, \r\n // component may have been moved before resolve.\r\n // if this is not a hydration, instance.subTree will be the comment\r\n // placeholder.\r\n parentNode(hydratedEl || instance.subTree.el), \r\n // anchor will not be used if this is hydration, so only need to\r\n // consider the comment placeholder case.\r\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\r\n if (placeholder) {\r\n remove(placeholder);\r\n }\r\n updateHOCHostEl(instance, vnode.el);\r\n if ((true)) {\r\n popWarningContext();\r\n }\r\n // only decrease deps count if suspense is not already resolved\r\n if (isInPendingSuspense && --suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n });\r\n },\r\n unmount(parentSuspense, doRemove) {\r\n suspense.isUnmounted = true;\r\n if (suspense.activeBranch) {\r\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n if (suspense.pendingBranch) {\r\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n }\r\n };\r\n return suspense;\r\n}\r\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\r\n /* eslint-disable no-restricted-globals */\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\r\n // there are two possible scenarios for server-rendered suspense:\r\n // - success: ssr content should be fully resolved\r\n // - failure: ssr content should be the fallback branch.\r\n // however, on the client we don't really know if it has failed or not\r\n // attempt to hydrate the DOM assuming it has succeeded, but we still\r\n // need to construct a suspense boundary first\r\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\r\n if (suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n return result;\r\n /* eslint-enable no-restricted-globals */\r\n}\r\nfunction normalizeSuspenseChildren(vnode) {\r\n const { shapeFlag, children } = vnode;\r\n const isSlotChildren = shapeFlag & 32 /* SLOTS_CHILDREN */;\r\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\r\n vnode.ssFallback = isSlotChildren\r\n ? normalizeSuspenseSlot(children.fallback)\r\n : createVNode(Comment);\r\n}\r\nfunction normalizeSuspenseSlot(s) {\r\n let block;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(s)) {\r\n const trackBlock = isBlockTreeEnabled && s._c;\r\n if (trackBlock) {\r\n // disableTracking: false\r\n // allow block tracking for compiled slots\r\n // (see ./componentRenderContext.ts)\r\n s._d = false;\r\n openBlock();\r\n }\r\n s = s();\r\n if (trackBlock) {\r\n s._d = true;\r\n block = currentBlock;\r\n closeBlock();\r\n }\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(s)) {\r\n const singleChild = filterSingleRoot(s);\r\n if (( true) && !singleChild) {\r\n warn(`<Suspense> slots expect a single root node.`);\r\n }\r\n s = singleChild;\r\n }\r\n s = normalizeVNode(s);\r\n if (block && !s.dynamicChildren) {\r\n s.dynamicChildren = block.filter(c => c !== s);\r\n }\r\n return s;\r\n}\r\nfunction queueEffectWithSuspense(fn, suspense) {\r\n if (suspense && suspense.pendingBranch) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(fn)) {\r\n suspense.effects.push(...fn);\r\n }\r\n else {\r\n suspense.effects.push(fn);\r\n }\r\n }\r\n else {\r\n queuePostFlushCb(fn);\r\n }\r\n}\r\nfunction setActiveBranch(suspense, branch) {\r\n suspense.activeBranch = branch;\r\n const { vnode, parentComponent } = suspense;\r\n const el = (vnode.el = branch.el);\r\n // in case suspense is the root node of a component,\r\n // recursively update the HOC el\r\n if (parentComponent && parentComponent.subTree === vnode) {\r\n parentComponent.vnode.el = el;\r\n updateHOCHostEl(parentComponent, el);\r\n }\r\n}\n\nfunction provide(key, value) {\r\n if (!currentInstance) {\r\n if ((true)) {\r\n warn(`provide() can only be used inside setup().`);\r\n }\r\n }\r\n else {\r\n let provides = currentInstance.provides;\r\n // by default an instance inherits its parent's provides object\r\n // but when it needs to provide values of its own, it creates its\r\n // own provides object using parent provides object as prototype.\r\n // this way in `inject` we can simply look up injections from direct\r\n // parent and let the prototype chain do the work.\r\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\r\n if (parentProvides === provides) {\r\n provides = currentInstance.provides = Object.create(parentProvides);\r\n }\r\n // TS doesn't allow symbol as index type\r\n provides[key] = value;\r\n }\r\n}\r\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\r\n // fallback to `currentRenderingInstance` so that this can be called in\r\n // a functional component\r\n const instance = currentInstance || currentRenderingInstance;\r\n if (instance) {\r\n // #2400\r\n // to support `app.use` plugins,\r\n // fallback to appContext's `provides` if the instance is at root\r\n const provides = instance.parent == null\r\n ? instance.vnode.appContext && instance.vnode.appContext.provides\r\n : instance.parent.provides;\r\n if (provides && key in provides) {\r\n // TS doesn't allow symbol as index type\r\n return provides[key];\r\n }\r\n else if (arguments.length > 1) {\r\n return treatDefaultAsFactory && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(defaultValue)\r\n ? defaultValue.call(instance.proxy)\r\n : defaultValue;\r\n }\r\n else if ((true)) {\r\n warn(`injection \"${String(key)}\" not found.`);\r\n }\r\n }\r\n else if ((true)) {\r\n warn(`inject() can only be used inside setup() or functional components.`);\r\n }\r\n}\n\n// Simple effect.\r\nfunction watchEffect(effect, options) {\r\n return doWatch(effect, null, options);\r\n}\r\nfunction watchPostEffect(effect, options) {\r\n return doWatch(effect, null, (( true)\r\n ? Object.assign(options || {}, { flush: 'post' })\r\n : undefined));\r\n}\r\nfunction watchSyncEffect(effect, options) {\r\n return doWatch(effect, null, (( true)\r\n ? Object.assign(options || {}, { flush: 'sync' })\r\n : undefined));\r\n}\r\n// initial value for watchers to trigger on undefined initial values\r\nconst INITIAL_WATCHER_VALUE = {};\r\n// implementation\r\nfunction watch(source, cb, options) {\r\n if (( true) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cb)) {\r\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\r\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\r\n `supports \\`watch(source, cb, options?) signature.`);\r\n }\r\n return doWatch(source, cb, options);\r\n}\r\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"]) {\r\n if (( true) && !cb) {\r\n if (immediate !== undefined) {\r\n warn(`watch() \"immediate\" option is only respected when using the ` +\r\n `watch(source, callback, options?) signature.`);\r\n }\r\n if (deep !== undefined) {\r\n warn(`watch() \"deep\" option is only respected when using the ` +\r\n `watch(source, callback, options?) signature.`);\r\n }\r\n }\r\n const warnInvalidSource = (s) => {\r\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\r\n `a reactive object, or an array of these types.`);\r\n };\r\n const instance = currentInstance;\r\n let getter;\r\n let forceTrigger = false;\r\n let isMultiSource = false;\r\n if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(source)) {\r\n getter = () => source.value;\r\n forceTrigger = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isShallow\"])(source);\r\n }\r\n else if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isReactive\"])(source)) {\r\n getter = () => source;\r\n deep = true;\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(source)) {\r\n isMultiSource = true;\r\n forceTrigger = source.some(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isReactive\"]);\r\n getter = () => source.map(s => {\r\n if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(s)) {\r\n return s.value;\r\n }\r\n else if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isReactive\"])(s)) {\r\n return traverse(s);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(s)) {\r\n return callWithErrorHandling(s, instance, 2 /* WATCH_GETTER */);\r\n }\r\n else {\r\n ( true) && warnInvalidSource(s);\r\n }\r\n });\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(source)) {\r\n if (cb) {\r\n // getter with cb\r\n getter = () => callWithErrorHandling(source, instance, 2 /* WATCH_GETTER */);\r\n }\r\n else {\r\n // no cb -> simple effect\r\n getter = () => {\r\n if (instance && instance.isUnmounted) {\r\n return;\r\n }\r\n if (cleanup) {\r\n cleanup();\r\n }\r\n return callWithAsyncErrorHandling(source, instance, 3 /* WATCH_CALLBACK */, [onCleanup]);\r\n };\r\n }\r\n }\r\n else {\r\n getter = _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"];\r\n ( true) && warnInvalidSource(source);\r\n }\r\n if (cb && deep) {\r\n const baseGetter = getter;\r\n getter = () => traverse(baseGetter());\r\n }\r\n let cleanup;\r\n let onCleanup = (fn) => {\r\n cleanup = effect.onStop = () => {\r\n callWithErrorHandling(fn, instance, 4 /* WATCH_CLEANUP */);\r\n };\r\n };\r\n // in SSR there is no need to setup an actual effect, and it should be noop\r\n // unless it's eager\r\n if (isInSSRComponentSetup) {\r\n // we will also not call the invalidate callback (+ runner is not set up)\r\n onCleanup = _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"];\r\n if (!cb) {\r\n getter();\r\n }\r\n else if (immediate) {\r\n callWithAsyncErrorHandling(cb, instance, 3 /* WATCH_CALLBACK */, [\r\n getter(),\r\n isMultiSource ? [] : undefined,\r\n onCleanup\r\n ]);\r\n }\r\n return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"];\r\n }\r\n let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\r\n const job = () => {\r\n if (!effect.active) {\r\n return;\r\n }\r\n if (cb) {\r\n // watch(source, cb)\r\n const newValue = effect.run();\r\n if (deep ||\r\n forceTrigger ||\r\n (isMultiSource\r\n ? newValue.some((v, i) => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasChanged\"])(v, oldValue[i]))\r\n : Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasChanged\"])(newValue, oldValue)) ||\r\n (false )) {\r\n // cleanup before running cb again\r\n if (cleanup) {\r\n cleanup();\r\n }\r\n callWithAsyncErrorHandling(cb, instance, 3 /* WATCH_CALLBACK */, [\r\n newValue,\r\n // pass undefined as the old value when it's changed for the first time\r\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\r\n onCleanup\r\n ]);\r\n oldValue = newValue;\r\n }\r\n }\r\n else {\r\n // watchEffect\r\n effect.run();\r\n }\r\n };\r\n // important: mark the job as a watcher callback so that scheduler knows\r\n // it is allowed to self-trigger (#1727)\r\n job.allowRecurse = !!cb;\r\n let scheduler;\r\n if (flush === 'sync') {\r\n scheduler = job; // the scheduler function gets called directly\r\n }\r\n else if (flush === 'post') {\r\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\r\n }\r\n else {\r\n // default: 'pre'\r\n scheduler = () => {\r\n if (!instance || instance.isMounted) {\r\n queuePreFlushCb(job);\r\n }\r\n else {\r\n // with 'pre' option, the first call must happen before\r\n // the component is mounted so it is called synchronously.\r\n job();\r\n }\r\n };\r\n }\r\n const effect = new _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"ReactiveEffect\"](getter, scheduler);\r\n if ((true)) {\r\n effect.onTrack = onTrack;\r\n effect.onTrigger = onTrigger;\r\n }\r\n // initial run\r\n if (cb) {\r\n if (immediate) {\r\n job();\r\n }\r\n else {\r\n oldValue = effect.run();\r\n }\r\n }\r\n else if (flush === 'post') {\r\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\r\n }\r\n else {\r\n effect.run();\r\n }\r\n return () => {\r\n effect.stop();\r\n if (instance && instance.scope) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"remove\"])(instance.scope.effects, effect);\r\n }\r\n };\r\n}\r\n// this.$watch\r\nfunction instanceWatch(source, value, options) {\r\n const publicThis = this.proxy;\r\n const getter = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)\r\n ? source.includes('.')\r\n ? createPathGetter(publicThis, source)\r\n : () => publicThis[source]\r\n : source.bind(publicThis, publicThis);\r\n let cb;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(value)) {\r\n cb = value;\r\n }\r\n else {\r\n cb = value.handler;\r\n options = value;\r\n }\r\n const cur = currentInstance;\r\n setCurrentInstance(this);\r\n const res = doWatch(getter, cb.bind(publicThis), options);\r\n if (cur) {\r\n setCurrentInstance(cur);\r\n }\r\n else {\r\n unsetCurrentInstance();\r\n }\r\n return res;\r\n}\r\nfunction createPathGetter(ctx, path) {\r\n const segments = path.split('.');\r\n return () => {\r\n let cur = ctx;\r\n for (let i = 0; i < segments.length && cur; i++) {\r\n cur = cur[segments[i]];\r\n }\r\n return cur;\r\n };\r\n}\r\nfunction traverse(value, seen) {\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(value) || value[\"__v_skip\" /* SKIP */]) {\r\n return value;\r\n }\r\n seen = seen || new Set();\r\n if (seen.has(value)) {\r\n return value;\r\n }\r\n seen.add(value);\r\n if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(value)) {\r\n traverse(value.value, seen);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\r\n for (let i = 0; i < value.length; i++) {\r\n traverse(value[i], seen);\r\n }\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSet\"])(value) || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isMap\"])(value)) {\r\n value.forEach((v) => {\r\n traverse(v, seen);\r\n });\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(value)) {\r\n for (const key in value) {\r\n traverse(value[key], seen);\r\n }\r\n }\r\n return value;\r\n}\n\nfunction useTransitionState() {\r\n const state = {\r\n isMounted: false,\r\n isLeaving: false,\r\n isUnmounting: false,\r\n leavingVNodes: new Map()\r\n };\r\n onMounted(() => {\r\n state.isMounted = true;\r\n });\r\n onBeforeUnmount(() => {\r\n state.isUnmounting = true;\r\n });\r\n return state;\r\n}\r\nconst TransitionHookValidator = [Function, Array];\r\nconst BaseTransitionImpl = {\r\n name: `BaseTransition`,\r\n props: {\r\n mode: String,\r\n appear: Boolean,\r\n persisted: Boolean,\r\n // enter\r\n onBeforeEnter: TransitionHookValidator,\r\n onEnter: TransitionHookValidator,\r\n onAfterEnter: TransitionHookValidator,\r\n onEnterCancelled: TransitionHookValidator,\r\n // leave\r\n onBeforeLeave: TransitionHookValidator,\r\n onLeave: TransitionHookValidator,\r\n onAfterLeave: TransitionHookValidator,\r\n onLeaveCancelled: TransitionHookValidator,\r\n // appear\r\n onBeforeAppear: TransitionHookValidator,\r\n onAppear: TransitionHookValidator,\r\n onAfterAppear: TransitionHookValidator,\r\n onAppearCancelled: TransitionHookValidator\r\n },\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n const state = useTransitionState();\r\n let prevTransitionKey;\r\n return () => {\r\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\r\n if (!children || !children.length) {\r\n return;\r\n }\r\n // warn multiple elements\r\n if (( true) && children.length > 1) {\r\n warn('<transition> can only be used on a single element or component. Use ' +\r\n '<transition-group> for lists.');\r\n }\r\n // there's no need to track reactivity for these props so use the raw\r\n // props for a bit better perf\r\n const rawProps = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(props);\r\n const { mode } = rawProps;\r\n // check mode\r\n if (( true) &&\r\n mode &&\r\n mode !== 'in-out' && mode !== 'out-in' && mode !== 'default') {\r\n warn(`invalid <transition> mode: ${mode}`);\r\n }\r\n // at this point children has a guaranteed length of 1.\r\n const child = children[0];\r\n if (state.isLeaving) {\r\n return emptyPlaceholder(child);\r\n }\r\n // in the case of <transition><keep-alive/></transition>, we need to\r\n // compare the type of the kept-alive children.\r\n const innerChild = getKeepAliveChild(child);\r\n if (!innerChild) {\r\n return emptyPlaceholder(child);\r\n }\r\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\r\n setTransitionHooks(innerChild, enterHooks);\r\n const oldChild = instance.subTree;\r\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\r\n let transitionKeyChanged = false;\r\n const { getTransitionKey } = innerChild.type;\r\n if (getTransitionKey) {\r\n const key = getTransitionKey();\r\n if (prevTransitionKey === undefined) {\r\n prevTransitionKey = key;\r\n }\r\n else if (key !== prevTransitionKey) {\r\n prevTransitionKey = key;\r\n transitionKeyChanged = true;\r\n }\r\n }\r\n // handle mode\r\n if (oldInnerChild &&\r\n oldInnerChild.type !== Comment &&\r\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\r\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\r\n // update old tree's hooks in case of dynamic transition\r\n setTransitionHooks(oldInnerChild, leavingHooks);\r\n // switching between different views\r\n if (mode === 'out-in') {\r\n state.isLeaving = true;\r\n // return placeholder node and queue update when leave finishes\r\n leavingHooks.afterLeave = () => {\r\n state.isLeaving = false;\r\n instance.update();\r\n };\r\n return emptyPlaceholder(child);\r\n }\r\n else if (mode === 'in-out' && innerChild.type !== Comment) {\r\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\r\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\r\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\r\n // early removal callback\r\n el._leaveCb = () => {\r\n earlyRemove();\r\n el._leaveCb = undefined;\r\n delete enterHooks.delayedLeave;\r\n };\r\n enterHooks.delayedLeave = delayedLeave;\r\n };\r\n }\r\n }\r\n return child;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst BaseTransition = BaseTransitionImpl;\r\nfunction getLeavingNodesForType(state, vnode) {\r\n const { leavingVNodes } = state;\r\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\r\n if (!leavingVNodesCache) {\r\n leavingVNodesCache = Object.create(null);\r\n leavingVNodes.set(vnode.type, leavingVNodesCache);\r\n }\r\n return leavingVNodesCache;\r\n}\r\n// The transition hooks are attached to the vnode as vnode.transition\r\n// and will be called at appropriate timing in the renderer.\r\nfunction resolveTransitionHooks(vnode, props, state, instance) {\r\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\r\n const key = String(vnode.key);\r\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\r\n const callHook = (hook, args) => {\r\n hook &&\r\n callWithAsyncErrorHandling(hook, instance, 9 /* TRANSITION_HOOK */, args);\r\n };\r\n const hooks = {\r\n mode,\r\n persisted,\r\n beforeEnter(el) {\r\n let hook = onBeforeEnter;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onBeforeAppear || onBeforeEnter;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n // for same element (v-show)\r\n if (el._leaveCb) {\r\n el._leaveCb(true /* cancelled */);\r\n }\r\n // for toggled element with same key (v-if)\r\n const leavingVNode = leavingVNodesCache[key];\r\n if (leavingVNode &&\r\n isSameVNodeType(vnode, leavingVNode) &&\r\n leavingVNode.el._leaveCb) {\r\n // force early removal (not cancelled)\r\n leavingVNode.el._leaveCb();\r\n }\r\n callHook(hook, [el]);\r\n },\r\n enter(el) {\r\n let hook = onEnter;\r\n let afterHook = onAfterEnter;\r\n let cancelHook = onEnterCancelled;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onAppear || onEnter;\r\n afterHook = onAfterAppear || onAfterEnter;\r\n cancelHook = onAppearCancelled || onEnterCancelled;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n let called = false;\r\n const done = (el._enterCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n if (cancelled) {\r\n callHook(cancelHook, [el]);\r\n }\r\n else {\r\n callHook(afterHook, [el]);\r\n }\r\n if (hooks.delayedLeave) {\r\n hooks.delayedLeave();\r\n }\r\n el._enterCb = undefined;\r\n });\r\n if (hook) {\r\n hook(el, done);\r\n if (hook.length <= 1) {\r\n done();\r\n }\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n leave(el, remove) {\r\n const key = String(vnode.key);\r\n if (el._enterCb) {\r\n el._enterCb(true /* cancelled */);\r\n }\r\n if (state.isUnmounting) {\r\n return remove();\r\n }\r\n callHook(onBeforeLeave, [el]);\r\n let called = false;\r\n const done = (el._leaveCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n remove();\r\n if (cancelled) {\r\n callHook(onLeaveCancelled, [el]);\r\n }\r\n else {\r\n callHook(onAfterLeave, [el]);\r\n }\r\n el._leaveCb = undefined;\r\n if (leavingVNodesCache[key] === vnode) {\r\n delete leavingVNodesCache[key];\r\n }\r\n });\r\n leavingVNodesCache[key] = vnode;\r\n if (onLeave) {\r\n onLeave(el, done);\r\n if (onLeave.length <= 1) {\r\n done();\r\n }\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n clone(vnode) {\r\n return resolveTransitionHooks(vnode, props, state, instance);\r\n }\r\n };\r\n return hooks;\r\n}\r\n// the placeholder really only handles one special case: KeepAlive\r\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\r\n// placeholder with empty content to avoid the KeepAlive instance from being\r\n// unmounted.\r\nfunction emptyPlaceholder(vnode) {\r\n if (isKeepAlive(vnode)) {\r\n vnode = cloneVNode(vnode);\r\n vnode.children = null;\r\n return vnode;\r\n }\r\n}\r\nfunction getKeepAliveChild(vnode) {\r\n return isKeepAlive(vnode)\r\n ? vnode.children\r\n ? vnode.children[0]\r\n : undefined\r\n : vnode;\r\n}\r\nfunction setTransitionHooks(vnode, hooks) {\r\n if (vnode.shapeFlag & 6 /* COMPONENT */ && vnode.component) {\r\n setTransitionHooks(vnode.component.subTree, hooks);\r\n }\r\n else if (vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\r\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\r\n }\r\n else {\r\n vnode.transition = hooks;\r\n }\r\n}\r\nfunction getTransitionRawChildren(children, keepComment = false) {\r\n let ret = [];\r\n let keyedFragmentCount = 0;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n // handle fragment children case, e.g. v-for\r\n if (child.type === Fragment) {\r\n if (child.patchFlag & 128 /* KEYED_FRAGMENT */)\r\n keyedFragmentCount++;\r\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment));\r\n }\r\n // comment placeholders should be skipped, e.g. v-if\r\n else if (keepComment || child.type !== Comment) {\r\n ret.push(child);\r\n }\r\n }\r\n // #1126 if a transition children list contains multiple sub fragments, these\r\n // fragments will be merged into a flat children array. Since each v-for\r\n // fragment may contain different static bindings inside, we need to de-op\r\n // these children to force full diffs to ensure correct behavior.\r\n if (keyedFragmentCount > 1) {\r\n for (let i = 0; i < ret.length; i++) {\r\n ret[i].patchFlag = -2 /* BAIL */;\r\n }\r\n }\r\n return ret;\r\n}\n\n// implementation, close to no-op\r\nfunction defineComponent(options) {\r\n return Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(options) ? { setup: options, name: options.name } : options;\r\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\r\nfunction defineAsyncComponent(source) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(source)) {\r\n source = { loader: source };\r\n }\r\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\r\n suspensible = true, onError: userOnError } = source;\r\n let pendingRequest = null;\r\n let resolvedComp;\r\n let retries = 0;\r\n const retry = () => {\r\n retries++;\r\n pendingRequest = null;\r\n return load();\r\n };\r\n const load = () => {\r\n let thisRequest;\r\n return (pendingRequest ||\r\n (thisRequest = pendingRequest =\r\n loader()\r\n .catch(err => {\r\n err = err instanceof Error ? err : new Error(String(err));\r\n if (userOnError) {\r\n return new Promise((resolve, reject) => {\r\n const userRetry = () => resolve(retry());\r\n const userFail = () => reject(err);\r\n userOnError(err, userRetry, userFail, retries + 1);\r\n });\r\n }\r\n else {\r\n throw err;\r\n }\r\n })\r\n .then((comp) => {\r\n if (thisRequest !== pendingRequest && pendingRequest) {\r\n return pendingRequest;\r\n }\r\n if (( true) && !comp) {\r\n warn(`Async component loader resolved to undefined. ` +\r\n `If you are using retry(), make sure to return its return value.`);\r\n }\r\n // interop module default\r\n if (comp &&\r\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\r\n comp = comp.default;\r\n }\r\n if (( true) && comp && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(comp) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(comp)) {\r\n throw new Error(`Invalid async component load result: ${comp}`);\r\n }\r\n resolvedComp = comp;\r\n return comp;\r\n })));\r\n };\r\n return defineComponent({\r\n name: 'AsyncComponentWrapper',\r\n __asyncLoader: load,\r\n get __asyncResolved() {\r\n return resolvedComp;\r\n },\r\n setup() {\r\n const instance = currentInstance;\r\n // already resolved\r\n if (resolvedComp) {\r\n return () => createInnerComp(resolvedComp, instance);\r\n }\r\n const onError = (err) => {\r\n pendingRequest = null;\r\n handleError(err, instance, 13 /* ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\r\n };\r\n // suspense-controlled or SSR.\r\n if ((suspensible && instance.suspense) ||\r\n (isInSSRComponentSetup)) {\r\n return load()\r\n .then(comp => {\r\n return () => createInnerComp(comp, instance);\r\n })\r\n .catch(err => {\r\n onError(err);\r\n return () => errorComponent\r\n ? createVNode(errorComponent, {\r\n error: err\r\n })\r\n : null;\r\n });\r\n }\r\n const loaded = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(false);\r\n const error = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])();\r\n const delayed = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(!!delay);\r\n if (delay) {\r\n setTimeout(() => {\r\n delayed.value = false;\r\n }, delay);\r\n }\r\n if (timeout != null) {\r\n setTimeout(() => {\r\n if (!loaded.value && !error.value) {\r\n const err = new Error(`Async component timed out after ${timeout}ms.`);\r\n onError(err);\r\n error.value = err;\r\n }\r\n }, timeout);\r\n }\r\n load()\r\n .then(() => {\r\n loaded.value = true;\r\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\r\n // parent is keep-alive, force update so the loaded component's\r\n // name is taken into account\r\n queueJob(instance.parent.update);\r\n }\r\n })\r\n .catch(err => {\r\n onError(err);\r\n error.value = err;\r\n });\r\n return () => {\r\n if (loaded.value && resolvedComp) {\r\n return createInnerComp(resolvedComp, instance);\r\n }\r\n else if (error.value && errorComponent) {\r\n return createVNode(errorComponent, {\r\n error: error.value\r\n });\r\n }\r\n else if (loadingComponent && !delayed.value) {\r\n return createVNode(loadingComponent);\r\n }\r\n };\r\n }\r\n });\r\n}\r\nfunction createInnerComp(comp, { vnode: { ref, props, children } }) {\r\n const vnode = createVNode(comp, props, children);\r\n // ensure inner component inherits the async wrapper's ref owner\r\n vnode.ref = ref;\r\n return vnode;\r\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\r\nconst KeepAliveImpl = {\r\n name: `KeepAlive`,\r\n // Marker for special handling inside the renderer. We are not using a ===\r\n // check directly on KeepAlive in the renderer, because importing it directly\r\n // would prevent it from being tree-shaken.\r\n __isKeepAlive: true,\r\n props: {\r\n include: [String, RegExp, Array],\r\n exclude: [String, RegExp, Array],\r\n max: [String, Number]\r\n },\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n // KeepAlive communicates with the instantiated renderer via the\r\n // ctx where the renderer passes in its internals,\r\n // and the KeepAlive instance exposes activate/deactivate implementations.\r\n // The whole point of this is to avoid importing KeepAlive directly in the\r\n // renderer to facilitate tree-shaking.\r\n const sharedContext = instance.ctx;\r\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\r\n // for KeepAlive, we just need to render its children\r\n if (!sharedContext.renderer) {\r\n return slots.default;\r\n }\r\n const cache = new Map();\r\n const keys = new Set();\r\n let current = null;\r\n if (true) {\r\n instance.__v_cache = cache;\r\n }\r\n const parentSuspense = instance.suspense;\r\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\r\n const storageContainer = createElement('div');\r\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\r\n const instance = vnode.component;\r\n move(vnode, container, anchor, 0 /* ENTER */, parentSuspense);\r\n // in case props have changed\r\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\r\n queuePostRenderEffect(() => {\r\n instance.isDeactivated = false;\r\n if (instance.a) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"invokeArrayFns\"])(instance.a);\r\n }\r\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\r\n if (vnodeHook) {\r\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\r\n }\r\n }, parentSuspense);\r\n if (true) {\r\n // Update components tree\r\n devtoolsComponentAdded(instance);\r\n }\r\n };\r\n sharedContext.deactivate = (vnode) => {\r\n const instance = vnode.component;\r\n move(vnode, storageContainer, null, 1 /* LEAVE */, parentSuspense);\r\n queuePostRenderEffect(() => {\r\n if (instance.da) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"invokeArrayFns\"])(instance.da);\r\n }\r\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\r\n if (vnodeHook) {\r\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\r\n }\r\n instance.isDeactivated = true;\r\n }, parentSuspense);\r\n if (true) {\r\n // Update components tree\r\n devtoolsComponentAdded(instance);\r\n }\r\n };\r\n function unmount(vnode) {\r\n // reset the shapeFlag so it can be properly unmounted\r\n resetShapeFlag(vnode);\r\n _unmount(vnode, instance, parentSuspense, true);\r\n }\r\n function pruneCache(filter) {\r\n cache.forEach((vnode, key) => {\r\n const name = getComponentName(vnode.type);\r\n if (name && (!filter || !filter(name))) {\r\n pruneCacheEntry(key);\r\n }\r\n });\r\n }\r\n function pruneCacheEntry(key) {\r\n const cached = cache.get(key);\r\n if (!current || cached.type !== current.type) {\r\n unmount(cached);\r\n }\r\n else if (current) {\r\n // current active instance should no longer be kept-alive.\r\n // we can't unmount it now but it might be later, so reset its flag now.\r\n resetShapeFlag(current);\r\n }\r\n cache.delete(key);\r\n keys.delete(key);\r\n }\r\n // prune cache on include/exclude prop change\r\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\r\n include && pruneCache(name => matches(include, name));\r\n exclude && pruneCache(name => !matches(exclude, name));\r\n }, \r\n // prune post-render after `current` has been updated\r\n { flush: 'post', deep: true });\r\n // cache sub tree after render\r\n let pendingCacheKey = null;\r\n const cacheSubtree = () => {\r\n // fix #1621, the pendingCacheKey could be 0\r\n if (pendingCacheKey != null) {\r\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\r\n }\r\n };\r\n onMounted(cacheSubtree);\r\n onUpdated(cacheSubtree);\r\n onBeforeUnmount(() => {\r\n cache.forEach(cached => {\r\n const { subTree, suspense } = instance;\r\n const vnode = getInnerChild(subTree);\r\n if (cached.type === vnode.type) {\r\n // current instance will be unmounted as part of keep-alive's unmount\r\n resetShapeFlag(vnode);\r\n // but invoke its deactivated hook here\r\n const da = vnode.component.da;\r\n da && queuePostRenderEffect(da, suspense);\r\n return;\r\n }\r\n unmount(cached);\r\n });\r\n });\r\n return () => {\r\n pendingCacheKey = null;\r\n if (!slots.default) {\r\n return null;\r\n }\r\n const children = slots.default();\r\n const rawVNode = children[0];\r\n if (children.length > 1) {\r\n if ((true)) {\r\n warn(`KeepAlive should contain exactly one component child.`);\r\n }\r\n current = null;\r\n return children;\r\n }\r\n else if (!isVNode(rawVNode) ||\r\n (!(rawVNode.shapeFlag & 4 /* STATEFUL_COMPONENT */) &&\r\n !(rawVNode.shapeFlag & 128 /* SUSPENSE */))) {\r\n current = null;\r\n return rawVNode;\r\n }\r\n let vnode = getInnerChild(rawVNode);\r\n const comp = vnode.type;\r\n // for async components, name check should be based in its loaded\r\n // inner component if available\r\n const name = getComponentName(isAsyncWrapper(vnode)\r\n ? vnode.type.__asyncResolved || {}\r\n : comp);\r\n const { include, exclude, max } = props;\r\n if ((include && (!name || !matches(include, name))) ||\r\n (exclude && name && matches(exclude, name))) {\r\n current = vnode;\r\n return rawVNode;\r\n }\r\n const key = vnode.key == null ? comp : vnode.key;\r\n const cachedVNode = cache.get(key);\r\n // clone vnode if it's reused because we are going to mutate it\r\n if (vnode.el) {\r\n vnode = cloneVNode(vnode);\r\n if (rawVNode.shapeFlag & 128 /* SUSPENSE */) {\r\n rawVNode.ssContent = vnode;\r\n }\r\n }\r\n // #1513 it's possible for the returned vnode to be cloned due to attr\r\n // fallthrough or scopeId, so the vnode here may not be the final vnode\r\n // that is mounted. Instead of caching it directly, we store the pending\r\n // key and cache `instance.subTree` (the normalized vnode) in\r\n // beforeMount/beforeUpdate hooks.\r\n pendingCacheKey = key;\r\n if (cachedVNode) {\r\n // copy over mounted state\r\n vnode.el = cachedVNode.el;\r\n vnode.component = cachedVNode.component;\r\n if (vnode.transition) {\r\n // recursively update transition hooks on subTree\r\n setTransitionHooks(vnode, vnode.transition);\r\n }\r\n // avoid vnode being mounted as fresh\r\n vnode.shapeFlag |= 512 /* COMPONENT_KEPT_ALIVE */;\r\n // make this key the freshest\r\n keys.delete(key);\r\n keys.add(key);\r\n }\r\n else {\r\n keys.add(key);\r\n // prune oldest entry\r\n if (max && keys.size > parseInt(max, 10)) {\r\n pruneCacheEntry(keys.values().next().value);\r\n }\r\n }\r\n // avoid vnode being unmounted\r\n vnode.shapeFlag |= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;\r\n current = vnode;\r\n return rawVNode;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst KeepAlive = KeepAliveImpl;\r\nfunction matches(pattern, name) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(pattern)) {\r\n return pattern.some((p) => matches(p, name));\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(pattern)) {\r\n return pattern.split(',').includes(name);\r\n }\r\n else if (pattern.test) {\r\n return pattern.test(name);\r\n }\r\n /* istanbul ignore next */\r\n return false;\r\n}\r\nfunction onActivated(hook, target) {\r\n registerKeepAliveHook(hook, \"a\" /* ACTIVATED */, target);\r\n}\r\nfunction onDeactivated(hook, target) {\r\n registerKeepAliveHook(hook, \"da\" /* DEACTIVATED */, target);\r\n}\r\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\r\n // cache the deactivate branch check wrapper for injected hooks so the same\r\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\r\n // deactivation check\".\r\n const wrappedHook = hook.__wdc ||\r\n (hook.__wdc = () => {\r\n // only fire the hook if the target instance is NOT in a deactivated branch.\r\n let current = target;\r\n while (current) {\r\n if (current.isDeactivated) {\r\n return;\r\n }\r\n current = current.parent;\r\n }\r\n return hook();\r\n });\r\n injectHook(type, wrappedHook, target);\r\n // In addition to registering it on the target instance, we walk up the parent\r\n // chain and register it on all ancestor instances that are keep-alive roots.\r\n // This avoids the need to walk the entire component tree when invoking these\r\n // hooks, and more importantly, avoids the need to track child components in\r\n // arrays.\r\n if (target) {\r\n let current = target.parent;\r\n while (current && current.parent) {\r\n if (isKeepAlive(current.parent.vnode)) {\r\n injectToKeepAliveRoot(wrappedHook, type, target, current);\r\n }\r\n current = current.parent;\r\n }\r\n }\r\n}\r\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\r\n // injectHook wraps the original for error handling, so make sure to remove\r\n // the wrapped version.\r\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\r\n onUnmounted(() => {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"remove\"])(keepAliveRoot[type], injected);\r\n }, target);\r\n}\r\nfunction resetShapeFlag(vnode) {\r\n let shapeFlag = vnode.shapeFlag;\r\n if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {\r\n shapeFlag -= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;\r\n }\r\n if (shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {\r\n shapeFlag -= 512 /* COMPONENT_KEPT_ALIVE */;\r\n }\r\n vnode.shapeFlag = shapeFlag;\r\n}\r\nfunction getInnerChild(vnode) {\r\n return vnode.shapeFlag & 128 /* SUSPENSE */ ? vnode.ssContent : vnode;\r\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\r\n if (target) {\r\n const hooks = target[type] || (target[type] = []);\r\n // cache the error handling wrapper for injected hooks so the same hook\r\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\r\n // handling\".\r\n const wrappedHook = hook.__weh ||\r\n (hook.__weh = (...args) => {\r\n if (target.isUnmounted) {\r\n return;\r\n }\r\n // disable tracking inside all lifecycle hooks\r\n // since they can potentially be called inside effects.\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"pauseTracking\"])();\r\n // Set currentInstance during hook invocation.\r\n // This assumes the hook does not synchronously trigger other hooks, which\r\n // can only be false when the user does something really funky.\r\n setCurrentInstance(target);\r\n const res = callWithAsyncErrorHandling(hook, target, type, args);\r\n unsetCurrentInstance();\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"resetTracking\"])();\r\n return res;\r\n });\r\n if (prepend) {\r\n hooks.unshift(wrappedHook);\r\n }\r\n else {\r\n hooks.push(wrappedHook);\r\n }\r\n return wrappedHook;\r\n }\r\n else if ((true)) {\r\n const apiName = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"])(ErrorTypeStrings[type].replace(/ hook$/, ''));\r\n warn(`${apiName} is called when there is no active component instance to be ` +\r\n `associated with. ` +\r\n `Lifecycle injection APIs can only be used during execution of setup().` +\r\n (` If you are using async setup(), make sure to register lifecycle ` +\r\n `hooks before the first await statement.`\r\n ));\r\n }\r\n}\r\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \r\n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\r\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* SERVER_PREFETCH */) &&\r\n injectHook(lifecycle, hook, target);\r\nconst onBeforeMount = createHook(\"bm\" /* BEFORE_MOUNT */);\r\nconst onMounted = createHook(\"m\" /* MOUNTED */);\r\nconst onBeforeUpdate = createHook(\"bu\" /* BEFORE_UPDATE */);\r\nconst onUpdated = createHook(\"u\" /* UPDATED */);\r\nconst onBeforeUnmount = createHook(\"bum\" /* BEFORE_UNMOUNT */);\r\nconst onUnmounted = createHook(\"um\" /* UNMOUNTED */);\r\nconst onServerPrefetch = createHook(\"sp\" /* SERVER_PREFETCH */);\r\nconst onRenderTriggered = createHook(\"rtg\" /* RENDER_TRIGGERED */);\r\nconst onRenderTracked = createHook(\"rtc\" /* RENDER_TRACKED */);\r\nfunction onErrorCaptured(hook, target = currentInstance) {\r\n injectHook(\"ec\" /* ERROR_CAPTURED */, hook, target);\r\n}\n\nfunction createDuplicateChecker() {\r\n const cache = Object.create(null);\r\n return (type, key) => {\r\n if (cache[key]) {\r\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\r\n }\r\n else {\r\n cache[key] = type;\r\n }\r\n };\r\n}\r\nlet shouldCacheAccess = true;\r\nfunction applyOptions(instance) {\r\n const options = resolveMergedOptions(instance);\r\n const publicThis = instance.proxy;\r\n const ctx = instance.ctx;\r\n // do not cache property access on public proxy during state initialization\r\n shouldCacheAccess = false;\r\n // call beforeCreate first before accessing other options since\r\n // the hook may mutate resolved options (#2791)\r\n if (options.beforeCreate) {\r\n callHook(options.beforeCreate, instance, \"bc\" /* BEFORE_CREATE */);\r\n }\r\n const { \r\n // state\r\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \r\n // lifecycle\r\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \r\n // public API\r\n expose, inheritAttrs, \r\n // assets\r\n components, directives, filters } = options;\r\n const checkDuplicateProperties = ( true) ? createDuplicateChecker() : undefined;\r\n if ((true)) {\r\n const [propsOptions] = instance.propsOptions;\r\n if (propsOptions) {\r\n for (const key in propsOptions) {\r\n checkDuplicateProperties(\"Props\" /* PROPS */, key);\r\n }\r\n }\r\n }\r\n // options initialization order (to be consistent with Vue 2):\r\n // - props (already done outside of this function)\r\n // - inject\r\n // - methods\r\n // - data (deferred since it relies on `this` access)\r\n // - computed\r\n // - watch (deferred since it relies on `this` access)\r\n if (injectOptions) {\r\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\r\n }\r\n if (methods) {\r\n for (const key in methods) {\r\n const methodHandler = methods[key];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(methodHandler)) {\r\n // In dev mode, we use the `createRenderContext` function to define\r\n // methods to the proxy target, and those are read-only but\r\n // reconfigurable, so it needs to be redefined here\r\n if ((true)) {\r\n Object.defineProperty(ctx, key, {\r\n value: methodHandler.bind(publicThis),\r\n configurable: true,\r\n enumerable: true,\r\n writable: true\r\n });\r\n }\r\n else {}\r\n if ((true)) {\r\n checkDuplicateProperties(\"Methods\" /* METHODS */, key);\r\n }\r\n }\r\n else if ((true)) {\r\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\r\n `Did you reference the function correctly?`);\r\n }\r\n }\r\n }\r\n if (dataOptions) {\r\n if (( true) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(dataOptions)) {\r\n warn(`The data option must be a function. ` +\r\n `Plain object usage is no longer supported.`);\r\n }\r\n const data = dataOptions.call(publicThis, publicThis);\r\n if (( true) && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isPromise\"])(data)) {\r\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\r\n `intend to perform data fetching before component renders, use ` +\r\n `async setup() + <Suspense>.`);\r\n }\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(data)) {\r\n ( true) && warn(`data() should return an object.`);\r\n }\r\n else {\r\n instance.data = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"])(data);\r\n if ((true)) {\r\n for (const key in data) {\r\n checkDuplicateProperties(\"Data\" /* DATA */, key);\r\n // expose data on ctx during dev\r\n if (key[0] !== '$' && key[0] !== '_') {\r\n Object.defineProperty(ctx, key, {\r\n configurable: true,\r\n enumerable: true,\r\n get: () => data[key],\r\n set: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"]\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // state initialization complete at this point - start caching access\r\n shouldCacheAccess = true;\r\n if (computedOptions) {\r\n for (const key in computedOptions) {\r\n const opt = computedOptions[key];\r\n const get = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(opt)\r\n ? opt.bind(publicThis, publicThis)\r\n : Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(opt.get)\r\n ? opt.get.bind(publicThis, publicThis)\r\n : _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"];\r\n if (( true) && get === _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"]) {\r\n warn(`Computed property \"${key}\" has no getter.`);\r\n }\r\n const set = !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(opt) && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(opt.set)\r\n ? opt.set.bind(publicThis)\r\n : ( true)\r\n ? () => {\r\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\r\n }\r\n : undefined;\r\n const c = computed({\r\n get,\r\n set\r\n });\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => c.value,\r\n set: v => (c.value = v)\r\n });\r\n if ((true)) {\r\n checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\r\n }\r\n }\r\n }\r\n if (watchOptions) {\r\n for (const key in watchOptions) {\r\n createWatcher(watchOptions[key], ctx, publicThis, key);\r\n }\r\n }\r\n if (provideOptions) {\r\n const provides = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(provideOptions)\r\n ? provideOptions.call(publicThis)\r\n : provideOptions;\r\n Reflect.ownKeys(provides).forEach(key => {\r\n provide(key, provides[key]);\r\n });\r\n }\r\n if (created) {\r\n callHook(created, instance, \"c\" /* CREATED */);\r\n }\r\n function registerLifecycleHook(register, hook) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(hook)) {\r\n hook.forEach(_hook => register(_hook.bind(publicThis)));\r\n }\r\n else if (hook) {\r\n register(hook.bind(publicThis));\r\n }\r\n }\r\n registerLifecycleHook(onBeforeMount, beforeMount);\r\n registerLifecycleHook(onMounted, mounted);\r\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\r\n registerLifecycleHook(onUpdated, updated);\r\n registerLifecycleHook(onActivated, activated);\r\n registerLifecycleHook(onDeactivated, deactivated);\r\n registerLifecycleHook(onErrorCaptured, errorCaptured);\r\n registerLifecycleHook(onRenderTracked, renderTracked);\r\n registerLifecycleHook(onRenderTriggered, renderTriggered);\r\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\r\n registerLifecycleHook(onUnmounted, unmounted);\r\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(expose)) {\r\n if (expose.length) {\r\n const exposed = instance.exposed || (instance.exposed = {});\r\n expose.forEach(key => {\r\n Object.defineProperty(exposed, key, {\r\n get: () => publicThis[key],\r\n set: val => (publicThis[key] = val)\r\n });\r\n });\r\n }\r\n else if (!instance.exposed) {\r\n instance.exposed = {};\r\n }\r\n }\r\n // options that are handled when creating the instance but also need to be\r\n // applied from mixins\r\n if (render && instance.render === _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"]) {\r\n instance.render = render;\r\n }\r\n if (inheritAttrs != null) {\r\n instance.inheritAttrs = inheritAttrs;\r\n }\r\n // asset options.\r\n if (components)\r\n instance.components = components;\r\n if (directives)\r\n instance.directives = directives;\r\n}\r\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"], unwrapRef = false) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(injectOptions)) {\r\n injectOptions = normalizeInject(injectOptions);\r\n }\r\n for (const key in injectOptions) {\r\n const opt = injectOptions[key];\r\n let injected;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(opt)) {\r\n if ('default' in opt) {\r\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\r\n }\r\n else {\r\n injected = inject(opt.from || key);\r\n }\r\n }\r\n else {\r\n injected = inject(opt);\r\n }\r\n if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(injected)) {\r\n // TODO remove the check in 3.3\r\n if (unwrapRef) {\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => injected.value,\r\n set: v => (injected.value = v)\r\n });\r\n }\r\n else {\r\n if ((true)) {\r\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\r\n `and no longer needs \\`.value\\` in the next minor release. ` +\r\n `To opt-in to the new behavior now, ` +\r\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\r\n `temporary and will not be needed in the future.)`);\r\n }\r\n ctx[key] = injected;\r\n }\r\n }\r\n else {\r\n ctx[key] = injected;\r\n }\r\n if ((true)) {\r\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\r\n }\r\n }\r\n}\r\nfunction callHook(hook, instance, type) {\r\n callWithAsyncErrorHandling(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(hook)\r\n ? hook.map(h => h.bind(instance.proxy))\r\n : hook.bind(instance.proxy), instance, type);\r\n}\r\nfunction createWatcher(raw, ctx, publicThis, key) {\r\n const getter = key.includes('.')\r\n ? createPathGetter(publicThis, key)\r\n : () => publicThis[key];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(raw)) {\r\n const handler = ctx[raw];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(handler)) {\r\n watch(getter, handler);\r\n }\r\n else if ((true)) {\r\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\r\n }\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(raw)) {\r\n watch(getter, raw.bind(publicThis));\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(raw)) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(raw)) {\r\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\r\n }\r\n else {\r\n const handler = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(raw.handler)\r\n ? raw.handler.bind(publicThis)\r\n : ctx[raw.handler];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(handler)) {\r\n watch(getter, handler, raw);\r\n }\r\n else if ((true)) {\r\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\r\n }\r\n }\r\n }\r\n else if ((true)) {\r\n warn(`Invalid watch option: \"${key}\"`, raw);\r\n }\r\n}\r\n/**\r\n * Resolve merged options and cache it on the component.\r\n * This is done only once per-component since the merging does not involve\r\n * instances.\r\n */\r\nfunction resolveMergedOptions(instance) {\r\n const base = instance.type;\r\n const { mixins, extends: extendsOptions } = base;\r\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\r\n const cached = cache.get(base);\r\n let resolved;\r\n if (cached) {\r\n resolved = cached;\r\n }\r\n else if (!globalMixins.length && !mixins && !extendsOptions) {\r\n {\r\n resolved = base;\r\n }\r\n }\r\n else {\r\n resolved = {};\r\n if (globalMixins.length) {\r\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\r\n }\r\n mergeOptions(resolved, base, optionMergeStrategies);\r\n }\r\n cache.set(base, resolved);\r\n return resolved;\r\n}\r\nfunction mergeOptions(to, from, strats, asMixin = false) {\r\n const { mixins, extends: extendsOptions } = from;\r\n if (extendsOptions) {\r\n mergeOptions(to, extendsOptions, strats, true);\r\n }\r\n if (mixins) {\r\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\r\n }\r\n for (const key in from) {\r\n if (asMixin && key === 'expose') {\r\n ( true) &&\r\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\r\n `It should only be declared in the base component itself.`);\r\n }\r\n else {\r\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\r\n to[key] = strat ? strat(to[key], from[key]) : from[key];\r\n }\r\n }\r\n return to;\r\n}\r\nconst internalOptionMergeStrats = {\r\n data: mergeDataFn,\r\n props: mergeObjectOptions,\r\n emits: mergeObjectOptions,\r\n // objects\r\n methods: mergeObjectOptions,\r\n computed: mergeObjectOptions,\r\n // lifecycle\r\n beforeCreate: mergeAsArray,\r\n created: mergeAsArray,\r\n beforeMount: mergeAsArray,\r\n mounted: mergeAsArray,\r\n beforeUpdate: mergeAsArray,\r\n updated: mergeAsArray,\r\n beforeDestroy: mergeAsArray,\r\n beforeUnmount: mergeAsArray,\r\n destroyed: mergeAsArray,\r\n unmounted: mergeAsArray,\r\n activated: mergeAsArray,\r\n deactivated: mergeAsArray,\r\n errorCaptured: mergeAsArray,\r\n serverPrefetch: mergeAsArray,\r\n // assets\r\n components: mergeObjectOptions,\r\n directives: mergeObjectOptions,\r\n // watch\r\n watch: mergeWatchOptions,\r\n // provide / inject\r\n provide: mergeDataFn,\r\n inject: mergeInject\r\n};\r\nfunction mergeDataFn(to, from) {\r\n if (!from) {\r\n return to;\r\n }\r\n if (!to) {\r\n return from;\r\n }\r\n return function mergedDataFn() {\r\n return (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"]))(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(to) ? to.call(this, this) : to, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(from) ? from.call(this, this) : from);\r\n };\r\n}\r\nfunction mergeInject(to, from) {\r\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\r\n}\r\nfunction normalizeInject(raw) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(raw)) {\r\n const res = {};\r\n for (let i = 0; i < raw.length; i++) {\r\n res[raw[i]] = raw[i];\r\n }\r\n return res;\r\n }\r\n return raw;\r\n}\r\nfunction mergeAsArray(to, from) {\r\n return to ? [...new Set([].concat(to, from))] : from;\r\n}\r\nfunction mergeObjectOptions(to, from) {\r\n return to ? Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(Object.create(null), to), from) : from;\r\n}\r\nfunction mergeWatchOptions(to, from) {\r\n if (!to)\r\n return from;\r\n if (!from)\r\n return to;\r\n const merged = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(Object.create(null), to);\r\n for (const key in from) {\r\n merged[key] = mergeAsArray(to[key], from[key]);\r\n }\r\n return merged;\r\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\r\nisSSR = false) {\r\n const props = {};\r\n const attrs = {};\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"def\"])(attrs, InternalObjectKey, 1);\r\n instance.propsDefaults = Object.create(null);\r\n setFullProps(instance, rawProps, props, attrs);\r\n // ensure all declared prop keys are present\r\n for (const key in instance.propsOptions[0]) {\r\n if (!(key in props)) {\r\n props[key] = undefined;\r\n }\r\n }\r\n // validation\r\n if ((true)) {\r\n validateProps(rawProps || {}, props, instance);\r\n }\r\n if (isStateful) {\r\n // stateful\r\n instance.props = isSSR ? props : Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReactive\"])(props);\r\n }\r\n else {\r\n if (!instance.type.props) {\r\n // functional w/ optional props, props === attrs\r\n instance.props = attrs;\r\n }\r\n else {\r\n // functional w/ declared props\r\n instance.props = props;\r\n }\r\n }\r\n instance.attrs = attrs;\r\n}\r\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\r\n const { props, attrs, vnode: { patchFlag } } = instance;\r\n const rawCurrentProps = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(props);\r\n const [options] = instance.propsOptions;\r\n let hasAttrsChanged = false;\r\n if (\r\n // always force full diff in dev\r\n // - #1942 if hmr is enabled with sfc component\r\n // - vite#872 non-sfc component used by sfc component\r\n !(( true) &&\r\n (instance.type.__hmrId ||\r\n (instance.parent && instance.parent.type.__hmrId))) &&\r\n (optimized || patchFlag > 0) &&\r\n !(patchFlag & 16 /* FULL_PROPS */)) {\r\n if (patchFlag & 8 /* PROPS */) {\r\n // Compiler-generated props & no keys change, just set the updated\r\n // the props.\r\n const propsToUpdate = instance.vnode.dynamicProps;\r\n for (let i = 0; i < propsToUpdate.length; i++) {\r\n let key = propsToUpdate[i];\r\n // PROPS flag guarantees rawProps to be non-null\r\n const value = rawProps[key];\r\n if (options) {\r\n // attr / props separation was done on init and will be consistent\r\n // in this code path, so just check if attrs have it.\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(attrs, key)) {\r\n if (value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n else {\r\n const camelizedKey = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(key);\r\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\r\n }\r\n }\r\n else {\r\n if (value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // full props update.\r\n if (setFullProps(instance, rawProps, props, attrs)) {\r\n hasAttrsChanged = true;\r\n }\r\n // in case of dynamic props, check if we need to delete keys from\r\n // the props object\r\n let kebabKey;\r\n for (const key in rawCurrentProps) {\r\n if (!rawProps ||\r\n // for camelCase\r\n (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(rawProps, key) &&\r\n // it's possible the original props was passed in as kebab-case\r\n // and converted to camelCase (#955)\r\n ((kebabKey = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(key)) === key || !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(rawProps, kebabKey)))) {\r\n if (options) {\r\n if (rawPrevProps &&\r\n // for camelCase\r\n (rawPrevProps[key] !== undefined ||\r\n // for kebab-case\r\n rawPrevProps[kebabKey] !== undefined)) {\r\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\r\n }\r\n }\r\n else {\r\n delete props[key];\r\n }\r\n }\r\n }\r\n // in the case of functional component w/o props declaration, props and\r\n // attrs point to the same object so it should already have been updated.\r\n if (attrs !== rawCurrentProps) {\r\n for (const key in attrs) {\r\n if (!rawProps ||\r\n (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(rawProps, key) &&\r\n (!false ))) {\r\n delete attrs[key];\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n // trigger updates for $attrs in case it's used in component slots\r\n if (hasAttrsChanged) {\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"trigger\"])(instance, \"set\" /* SET */, '$attrs');\r\n }\r\n if ((true)) {\r\n validateProps(rawProps || {}, props, instance);\r\n }\r\n}\r\nfunction setFullProps(instance, rawProps, props, attrs) {\r\n const [options, needCastKeys] = instance.propsOptions;\r\n let hasAttrsChanged = false;\r\n let rawCastValues;\r\n if (rawProps) {\r\n for (let key in rawProps) {\r\n // key, ref are reserved and never passed down\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isReservedProp\"])(key)) {\r\n continue;\r\n }\r\n const value = rawProps[key];\r\n // prop option names are camelized during normalization, so to support\r\n // kebab -> camel conversion here we need to camelize the key.\r\n let camelKey;\r\n if (options && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(options, (camelKey = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(key)))) {\r\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\r\n props[camelKey] = value;\r\n }\r\n else {\r\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\r\n }\r\n }\r\n else if (!isEmitListener(instance.emitsOptions, key)) {\r\n if (!(key in attrs) || value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n if (needCastKeys) {\r\n const rawCurrentProps = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(props);\r\n const castValues = rawCastValues || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n for (let i = 0; i < needCastKeys.length; i++) {\r\n const key = needCastKeys[i];\r\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(castValues, key));\r\n }\r\n }\r\n return hasAttrsChanged;\r\n}\r\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\r\n const opt = options[key];\r\n if (opt != null) {\r\n const hasDefault = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(opt, 'default');\r\n // default values\r\n if (hasDefault && value === undefined) {\r\n const defaultValue = opt.default;\r\n if (opt.type !== Function && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(defaultValue)) {\r\n const { propsDefaults } = instance;\r\n if (key in propsDefaults) {\r\n value = propsDefaults[key];\r\n }\r\n else {\r\n setCurrentInstance(instance);\r\n value = propsDefaults[key] = defaultValue.call(null, props);\r\n unsetCurrentInstance();\r\n }\r\n }\r\n else {\r\n value = defaultValue;\r\n }\r\n }\r\n // boolean casting\r\n if (opt[0 /* shouldCast */]) {\r\n if (isAbsent && !hasDefault) {\r\n value = false;\r\n }\r\n else if (opt[1 /* shouldCastTrue */] &&\r\n (value === '' || value === Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(key))) {\r\n value = true;\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\r\n const cache = appContext.propsCache;\r\n const cached = cache.get(comp);\r\n if (cached) {\r\n return cached;\r\n }\r\n const raw = comp.props;\r\n const normalized = {};\r\n const needCastKeys = [];\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if ( true && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(comp)) {\r\n const extendProps = (raw) => {\r\n hasExtends = true;\r\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(normalized, props);\r\n if (keys)\r\n needCastKeys.push(...keys);\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendProps);\r\n }\r\n if (comp.extends) {\r\n extendProps(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendProps);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n cache.set(comp, _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_ARR\"]);\r\n return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_ARR\"];\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(raw)) {\r\n for (let i = 0; i < raw.length; i++) {\r\n if (( true) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(raw[i])) {\r\n warn(`props must be strings when using array syntax.`, raw[i]);\r\n }\r\n const normalizedKey = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(raw[i]);\r\n if (validatePropName(normalizedKey)) {\r\n normalized[normalizedKey] = _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n }\r\n }\r\n }\r\n else if (raw) {\r\n if (( true) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(raw)) {\r\n warn(`invalid props options`, raw);\r\n }\r\n for (const key in raw) {\r\n const normalizedKey = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(key);\r\n if (validatePropName(normalizedKey)) {\r\n const opt = raw[key];\r\n const prop = (normalized[normalizedKey] =\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(opt) || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(opt) ? { type: opt } : opt);\r\n if (prop) {\r\n const booleanIndex = getTypeIndex(Boolean, prop.type);\r\n const stringIndex = getTypeIndex(String, prop.type);\r\n prop[0 /* shouldCast */] = booleanIndex > -1;\r\n prop[1 /* shouldCastTrue */] =\r\n stringIndex < 0 || booleanIndex < stringIndex;\r\n // if the prop needs boolean casting or default value\r\n if (booleanIndex > -1 || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(prop, 'default')) {\r\n needCastKeys.push(normalizedKey);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n const res = [normalized, needCastKeys];\r\n cache.set(comp, res);\r\n return res;\r\n}\r\nfunction validatePropName(key) {\r\n if (key[0] !== '$') {\r\n return true;\r\n }\r\n else if ((true)) {\r\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\r\n }\r\n return false;\r\n}\r\n// use function string name to check type constructors\r\n// so that it works across vms / iframes.\r\nfunction getType(ctor) {\r\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\r\n return match ? match[1] : ctor === null ? 'null' : '';\r\n}\r\nfunction isSameType(a, b) {\r\n return getType(a) === getType(b);\r\n}\r\nfunction getTypeIndex(type, expectedTypes) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(expectedTypes)) {\r\n return expectedTypes.findIndex(t => isSameType(t, type));\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(expectedTypes)) {\r\n return isSameType(expectedTypes, type) ? 0 : -1;\r\n }\r\n return -1;\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction validateProps(rawProps, props, instance) {\r\n const resolvedValues = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(props);\r\n const options = instance.propsOptions[0];\r\n for (const key in options) {\r\n let opt = options[key];\r\n if (opt == null)\r\n continue;\r\n validateProp(key, resolvedValues[key], opt, !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(rawProps, key) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(rawProps, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(key)));\r\n }\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction validateProp(name, value, prop, isAbsent) {\r\n const { type, required, validator } = prop;\r\n // required!\r\n if (required && isAbsent) {\r\n warn('Missing required prop: \"' + name + '\"');\r\n return;\r\n }\r\n // missing but optional\r\n if (value == null && !prop.required) {\r\n return;\r\n }\r\n // type check\r\n if (type != null && type !== true) {\r\n let isValid = false;\r\n const types = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(type) ? type : [type];\r\n const expectedTypes = [];\r\n // value is valid as long as one of the specified types match\r\n for (let i = 0; i < types.length && !isValid; i++) {\r\n const { valid, expectedType } = assertType(value, types[i]);\r\n expectedTypes.push(expectedType || '');\r\n isValid = valid;\r\n }\r\n if (!isValid) {\r\n warn(getInvalidTypeMessage(name, value, expectedTypes));\r\n return;\r\n }\r\n }\r\n // custom validator\r\n if (validator && !validator(value)) {\r\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\r\n }\r\n}\r\nconst isSimpleType = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"makeMap\"])('String,Number,Boolean,Function,Symbol,BigInt');\r\n/**\r\n * dev only\r\n */\r\nfunction assertType(value, type) {\r\n let valid;\r\n const expectedType = getType(type);\r\n if (isSimpleType(expectedType)) {\r\n const t = typeof value;\r\n valid = t === expectedType.toLowerCase();\r\n // for primitive wrapper objects\r\n if (!valid && t === 'object') {\r\n valid = value instanceof type;\r\n }\r\n }\r\n else if (expectedType === 'Object') {\r\n valid = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(value);\r\n }\r\n else if (expectedType === 'Array') {\r\n valid = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value);\r\n }\r\n else if (expectedType === 'null') {\r\n valid = value === null;\r\n }\r\n else {\r\n valid = value instanceof type;\r\n }\r\n return {\r\n valid,\r\n expectedType\r\n };\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\r\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\r\n ` Expected ${expectedTypes.map(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"capitalize\"]).join(' | ')}`;\r\n const expectedType = expectedTypes[0];\r\n const receivedType = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toRawType\"])(value);\r\n const expectedValue = styleValue(value, expectedType);\r\n const receivedValue = styleValue(value, receivedType);\r\n // check if we need to specify expected value\r\n if (expectedTypes.length === 1 &&\r\n isExplicable(expectedType) &&\r\n !isBoolean(expectedType, receivedType)) {\r\n message += ` with value ${expectedValue}`;\r\n }\r\n message += `, got ${receivedType} `;\r\n // check if we need to specify received value\r\n if (isExplicable(receivedType)) {\r\n message += `with value ${receivedValue}.`;\r\n }\r\n return message;\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction styleValue(value, type) {\r\n if (type === 'String') {\r\n return `\"${value}\"`;\r\n }\r\n else if (type === 'Number') {\r\n return `${Number(value)}`;\r\n }\r\n else {\r\n return `${value}`;\r\n }\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction isExplicable(type) {\r\n const explicitTypes = ['string', 'number', 'boolean'];\r\n return explicitTypes.some(elem => type.toLowerCase() === elem);\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction isBoolean(...args) {\r\n return args.some(elem => elem.toLowerCase() === 'boolean');\r\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\r\nconst normalizeSlotValue = (value) => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)\r\n ? value.map(normalizeVNode)\r\n : [normalizeVNode(value)];\r\nconst normalizeSlot = (key, rawSlot, ctx) => {\r\n const normalized = withCtx((...args) => {\r\n if (( true) && currentInstance) {\r\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\r\n `this will not track dependencies used in the slot. ` +\r\n `Invoke the slot function inside the render function instead.`);\r\n }\r\n return normalizeSlotValue(rawSlot(...args));\r\n }, ctx);\r\n normalized._c = false;\r\n return normalized;\r\n};\r\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\r\n const ctx = rawSlots._ctx;\r\n for (const key in rawSlots) {\r\n if (isInternalKey(key))\r\n continue;\r\n const value = rawSlots[key];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(value)) {\r\n slots[key] = normalizeSlot(key, value, ctx);\r\n }\r\n else if (value != null) {\r\n if (true) {\r\n warn(`Non-function value encountered for slot \"${key}\". ` +\r\n `Prefer function slots for better performance.`);\r\n }\r\n const normalized = normalizeSlotValue(value);\r\n slots[key] = () => normalized;\r\n }\r\n }\r\n};\r\nconst normalizeVNodeSlots = (instance, children) => {\r\n if (( true) &&\r\n !isKeepAlive(instance.vnode) &&\r\n !(false )) {\r\n warn(`Non-function value encountered for default slot. ` +\r\n `Prefer function slots for better performance.`);\r\n }\r\n const normalized = normalizeSlotValue(children);\r\n instance.slots.default = () => normalized;\r\n};\r\nconst initSlots = (instance, children) => {\r\n if (instance.vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n const type = children._;\r\n if (type) {\r\n // users can get the shallow readonly version of the slots object through `this.$slots`,\r\n // we should avoid the proxy object polluting the slots of the internal instance\r\n instance.slots = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(children);\r\n // make compiler marker non-enumerable\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"def\"])(children, '_', type);\r\n }\r\n else {\r\n normalizeObjectSlots(children, (instance.slots = {}));\r\n }\r\n }\r\n else {\r\n instance.slots = {};\r\n if (children) {\r\n normalizeVNodeSlots(instance, children);\r\n }\r\n }\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"def\"])(instance.slots, InternalObjectKey, 1);\r\n};\r\nconst updateSlots = (instance, children, optimized) => {\r\n const { vnode, slots } = instance;\r\n let needDeletionCheck = true;\r\n let deletionComparisonTarget = _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n if (vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n const type = children._;\r\n if (type) {\r\n // compiled slots.\r\n if (( true) && isHmrUpdating) {\r\n // Parent was HMR updated so slot content may have changed.\r\n // force update slots and mark instance for hmr as well\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(slots, children);\r\n }\r\n else if (optimized && type === 1 /* STABLE */) {\r\n // compiled AND stable.\r\n // no need to update, and skip stale slots removal.\r\n needDeletionCheck = false;\r\n }\r\n else {\r\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\r\n // normalization.\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(slots, children);\r\n // #2893\r\n // when rendering the optimized slots by manually written render function,\r\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\r\n // i.e. let the `renderSlot` create the bailed Fragment\r\n if (!optimized && type === 1 /* STABLE */) {\r\n delete slots._;\r\n }\r\n }\r\n }\r\n else {\r\n needDeletionCheck = !children.$stable;\r\n normalizeObjectSlots(children, slots);\r\n }\r\n deletionComparisonTarget = children;\r\n }\r\n else if (children) {\r\n // non slot object children (direct value) passed to a component\r\n normalizeVNodeSlots(instance, children);\r\n deletionComparisonTarget = { default: 1 };\r\n }\r\n // delete stale slots\r\n if (needDeletionCheck) {\r\n for (const key in slots) {\r\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\r\n delete slots[key];\r\n }\r\n }\r\n }\r\n};\n\n/**\r\nRuntime helper for applying directives to a vnode. Example usage:\r\n\nconst comp = resolveComponent('comp')\r\nconst foo = resolveDirective('foo')\r\nconst bar = resolveDirective('bar')\r\n\nreturn withDirectives(h(comp), [\r\n [foo, this.x],\r\n [bar, this.y]\r\n])\r\n*/\r\nfunction validateDirectiveName(name) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isBuiltInDirective\"])(name)) {\r\n warn('Do not use built-in directive ids as custom directive id: ' + name);\r\n }\r\n}\r\n/**\r\n * Adds directives to a VNode.\r\n */\r\nfunction withDirectives(vnode, directives) {\r\n const internalInstance = currentRenderingInstance;\r\n if (internalInstance === null) {\r\n ( true) && warn(`withDirectives can only be used inside render functions.`);\r\n return vnode;\r\n }\r\n const instance = internalInstance.proxy;\r\n const bindings = vnode.dirs || (vnode.dirs = []);\r\n for (let i = 0; i < directives.length; i++) {\r\n let [dir, value, arg, modifiers = _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"]] = directives[i];\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(dir)) {\r\n dir = {\r\n mounted: dir,\r\n updated: dir\r\n };\r\n }\r\n if (dir.deep) {\r\n traverse(value);\r\n }\r\n bindings.push({\r\n dir,\r\n instance,\r\n value,\r\n oldValue: void 0,\r\n arg,\r\n modifiers\r\n });\r\n }\r\n return vnode;\r\n}\r\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\r\n const bindings = vnode.dirs;\r\n const oldBindings = prevVNode && prevVNode.dirs;\r\n for (let i = 0; i < bindings.length; i++) {\r\n const binding = bindings[i];\r\n if (oldBindings) {\r\n binding.oldValue = oldBindings[i].value;\r\n }\r\n let hook = binding.dir[name];\r\n if (hook) {\r\n // disable tracking inside all lifecycle hooks\r\n // since they can potentially be called inside effects.\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"pauseTracking\"])();\r\n callWithAsyncErrorHandling(hook, instance, 8 /* DIRECTIVE_HOOK */, [\r\n vnode.el,\r\n binding,\r\n vnode,\r\n prevVNode\r\n ]);\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"resetTracking\"])();\r\n }\r\n }\r\n}\n\nfunction createAppContext() {\r\n return {\r\n app: null,\r\n config: {\r\n isNativeTag: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NO\"],\r\n performance: false,\r\n globalProperties: {},\r\n optionMergeStrategies: {},\r\n errorHandler: undefined,\r\n warnHandler: undefined,\r\n compilerOptions: {}\r\n },\r\n mixins: [],\r\n components: {},\r\n directives: {},\r\n provides: Object.create(null),\r\n optionsCache: new WeakMap(),\r\n propsCache: new WeakMap(),\r\n emitsCache: new WeakMap()\r\n };\r\n}\r\nlet uid = 0;\r\nfunction createAppAPI(render, hydrate) {\r\n return function createApp(rootComponent, rootProps = null) {\r\n if (rootProps != null && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(rootProps)) {\r\n ( true) && warn(`root props passed to app.mount() must be an object.`);\r\n rootProps = null;\r\n }\r\n const context = createAppContext();\r\n const installedPlugins = new Set();\r\n let isMounted = false;\r\n const app = (context.app = {\r\n _uid: uid++,\r\n _component: rootComponent,\r\n _props: rootProps,\r\n _container: null,\r\n _context: context,\r\n _instance: null,\r\n version,\r\n get config() {\r\n return context.config;\r\n },\r\n set config(v) {\r\n if ((true)) {\r\n warn(`app.config cannot be replaced. Modify individual options instead.`);\r\n }\r\n },\r\n use(plugin, ...options) {\r\n if (installedPlugins.has(plugin)) {\r\n ( true) && warn(`Plugin has already been applied to target app.`);\r\n }\r\n else if (plugin && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(plugin.install)) {\r\n installedPlugins.add(plugin);\r\n plugin.install(app, ...options);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(plugin)) {\r\n installedPlugins.add(plugin);\r\n plugin(app, ...options);\r\n }\r\n else if ((true)) {\r\n warn(`A plugin must either be a function or an object with an \"install\" ` +\r\n `function.`);\r\n }\r\n return app;\r\n },\r\n mixin(mixin) {\r\n if (true) {\r\n if (!context.mixins.includes(mixin)) {\r\n context.mixins.push(mixin);\r\n }\r\n else if ((true)) {\r\n warn('Mixin has already been applied to target app' +\r\n (mixin.name ? `: ${mixin.name}` : ''));\r\n }\r\n }\r\n else {}\r\n return app;\r\n },\r\n component(name, component) {\r\n if ((true)) {\r\n validateComponentName(name, context.config);\r\n }\r\n if (!component) {\r\n return context.components[name];\r\n }\r\n if (( true) && context.components[name]) {\r\n warn(`Component \"${name}\" has already been registered in target app.`);\r\n }\r\n context.components[name] = component;\r\n return app;\r\n },\r\n directive(name, directive) {\r\n if ((true)) {\r\n validateDirectiveName(name);\r\n }\r\n if (!directive) {\r\n return context.directives[name];\r\n }\r\n if (( true) && context.directives[name]) {\r\n warn(`Directive \"${name}\" has already been registered in target app.`);\r\n }\r\n context.directives[name] = directive;\r\n return app;\r\n },\r\n mount(rootContainer, isHydrate, isSVG) {\r\n if (!isMounted) {\r\n const vnode = createVNode(rootComponent, rootProps);\r\n // store app context on the root VNode.\r\n // this will be set on the root instance on initial mount.\r\n vnode.appContext = context;\r\n // HMR root reload\r\n if ((true)) {\r\n context.reload = () => {\r\n render(cloneVNode(vnode), rootContainer, isSVG);\r\n };\r\n }\r\n if (isHydrate && hydrate) {\r\n hydrate(vnode, rootContainer);\r\n }\r\n else {\r\n render(vnode, rootContainer, isSVG);\r\n }\r\n isMounted = true;\r\n app._container = rootContainer;\r\n rootContainer.__vue_app__ = app;\r\n if (true) {\r\n app._instance = vnode.component;\r\n devtoolsInitApp(app, version);\r\n }\r\n return getExposeProxy(vnode.component) || vnode.component.proxy;\r\n }\r\n else if ((true)) {\r\n warn(`App has already been mounted.\\n` +\r\n `If you want to remount the same app, move your app creation logic ` +\r\n `into a factory function and create fresh app instances for each ` +\r\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\r\n }\r\n },\r\n unmount() {\r\n if (isMounted) {\r\n render(null, app._container);\r\n if (true) {\r\n app._instance = null;\r\n devtoolsUnmountApp(app);\r\n }\r\n delete app._container.__vue_app__;\r\n }\r\n else if ((true)) {\r\n warn(`Cannot unmount an app that is not mounted.`);\r\n }\r\n },\r\n provide(key, value) {\r\n if (( true) && key in context.provides) {\r\n warn(`App already provides property with key \"${String(key)}\". ` +\r\n `It will be overwritten with the new value.`);\r\n }\r\n // TypeScript doesn't allow symbols as index type\r\n // https://github.com/Microsoft/TypeScript/issues/24587\r\n context.provides[key] = value;\r\n return app;\r\n }\r\n });\r\n return app;\r\n };\r\n}\n\n/**\r\n * Function for handling a template ref\r\n */\r\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(rawRef)) {\r\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\r\n return;\r\n }\r\n if (isAsyncWrapper(vnode) && !isUnmount) {\r\n // when mounting async components, nothing needs to be done,\r\n // because the template ref is forwarded to inner component\r\n return;\r\n }\r\n const refValue = vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */\r\n ? getExposeProxy(vnode.component) || vnode.component.proxy\r\n : vnode.el;\r\n const value = isUnmount ? null : refValue;\r\n const { i: owner, r: ref } = rawRef;\r\n if (( true) && !owner) {\r\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\r\n `A vnode with ref must be created inside the render function.`);\r\n return;\r\n }\r\n const oldRef = oldRawRef && oldRawRef.r;\r\n const refs = owner.refs === _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] ? (owner.refs = {}) : owner.refs;\r\n const setupState = owner.setupState;\r\n // dynamic ref changed. unset old ref\r\n if (oldRef != null && oldRef !== ref) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(oldRef)) {\r\n refs[oldRef] = null;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(setupState, oldRef)) {\r\n setupState[oldRef] = null;\r\n }\r\n }\r\n else if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(oldRef)) {\r\n oldRef.value = null;\r\n }\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(ref)) {\r\n callWithErrorHandling(ref, owner, 12 /* FUNCTION_REF */, [value, refs]);\r\n }\r\n else {\r\n const _isString = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(ref);\r\n const _isRef = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(ref);\r\n if (_isString || _isRef) {\r\n const doSet = () => {\r\n if (rawRef.f) {\r\n const existing = _isString ? refs[ref] : ref.value;\r\n if (isUnmount) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(existing) && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"remove\"])(existing, refValue);\r\n }\r\n else {\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(existing)) {\r\n if (_isString) {\r\n refs[ref] = [refValue];\r\n }\r\n else {\r\n ref.value = [refValue];\r\n if (rawRef.k)\r\n refs[rawRef.k] = ref.value;\r\n }\r\n }\r\n else if (!existing.includes(refValue)) {\r\n existing.push(refValue);\r\n }\r\n }\r\n }\r\n else if (_isString) {\r\n refs[ref] = value;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(setupState, ref)) {\r\n setupState[ref] = value;\r\n }\r\n }\r\n else if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(ref)) {\r\n ref.value = value;\r\n if (rawRef.k)\r\n refs[rawRef.k] = value;\r\n }\r\n else if ((true)) {\r\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\r\n }\r\n };\r\n if (value) {\r\n doSet.id = -1;\r\n queuePostRenderEffect(doSet, parentSuspense);\r\n }\r\n else {\r\n doSet();\r\n }\r\n }\r\n else if ((true)) {\r\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\r\n }\r\n }\r\n}\n\nlet hasMismatch = false;\r\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\r\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\r\n// Note: hydration is DOM-specific\r\n// But we have to place it in core due to tight coupling with core - splitting\r\n// it out creates a ton of unnecessary complexity.\r\n// Hydration also depends on some renderer internal logic which needs to be\r\n// passed in via arguments.\r\nfunction createHydrationFunctions(rendererInternals) {\r\n const { mt: mountComponent, p: patch, o: { patchProp, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\r\n const hydrate = (vnode, container) => {\r\n if (!container.hasChildNodes()) {\r\n ( true) &&\r\n warn(`Attempting to hydrate existing markup but container is empty. ` +\r\n `Performing full mount instead.`);\r\n patch(null, vnode, container);\r\n flushPostFlushCbs();\r\n return;\r\n }\r\n hasMismatch = false;\r\n hydrateNode(container.firstChild, vnode, null, null, null);\r\n flushPostFlushCbs();\r\n if (hasMismatch && !false) {\r\n // this error should show up in production\r\n console.error(`Hydration completed but contains mismatches.`);\r\n }\r\n };\r\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\r\n const isFragmentStart = isComment(node) && node.data === '[';\r\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\r\n const { type, ref, shapeFlag } = vnode;\r\n const domType = node.nodeType;\r\n vnode.el = node;\r\n let nextNode = null;\r\n switch (type) {\r\n case Text:\r\n if (domType !== 3 /* TEXT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n if (node.data !== vnode.children) {\r\n hasMismatch = true;\r\n ( true) &&\r\n warn(`Hydration text mismatch:` +\r\n `\\n- Client: ${JSON.stringify(node.data)}` +\r\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\r\n node.data = vnode.children;\r\n }\r\n nextNode = nextSibling(node);\r\n }\r\n break;\r\n case Comment:\r\n if (domType !== 8 /* COMMENT */ || isFragmentStart) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = nextSibling(node);\r\n }\r\n break;\r\n case Static:\r\n if (domType !== 1 /* ELEMENT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n // determine anchor, adopt content\r\n nextNode = node;\r\n // if the static vnode has its content stripped during build,\r\n // adopt it from the server-rendered HTML.\r\n const needToAdoptContent = !vnode.children.length;\r\n for (let i = 0; i < vnode.staticCount; i++) {\r\n if (needToAdoptContent)\r\n vnode.children += nextNode.outerHTML;\r\n if (i === vnode.staticCount - 1) {\r\n vnode.anchor = nextNode;\r\n }\r\n nextNode = nextSibling(nextNode);\r\n }\r\n return nextNode;\r\n }\r\n break;\r\n case Fragment:\r\n if (!isFragmentStart) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n }\r\n break;\r\n default:\r\n if (shapeFlag & 1 /* ELEMENT */) {\r\n if (domType !== 1 /* ELEMENT */ ||\r\n vnode.type.toLowerCase() !==\r\n node.tagName.toLowerCase()) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n }\r\n }\r\n else if (shapeFlag & 6 /* COMPONENT */) {\r\n // when setting up the render effect, if the initial vnode already\r\n // has .el set, the component will perform hydration instead of mount\r\n // on its sub-tree.\r\n vnode.slotScopeIds = slotScopeIds;\r\n const container = parentNode(node);\r\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\r\n // component may be async, so in the case of fragments we cannot rely\r\n // on component's rendered output to determine the end of the fragment\r\n // instead, we do a lookahead to find the end anchor node.\r\n nextNode = isFragmentStart\r\n ? locateClosingAsyncAnchor(node)\r\n : nextSibling(node);\r\n // #3787\r\n // if component is async, it may get moved / unmounted before its\r\n // inner component is loaded, so we need to give it a placeholder\r\n // vnode that matches its adopted DOM.\r\n if (isAsyncWrapper(vnode)) {\r\n let subTree;\r\n if (isFragmentStart) {\r\n subTree = createVNode(Fragment);\r\n subTree.anchor = nextNode\r\n ? nextNode.previousSibling\r\n : container.lastChild;\r\n }\r\n else {\r\n subTree =\r\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\r\n }\r\n subTree.el = node;\r\n vnode.component.subTree = subTree;\r\n }\r\n }\r\n else if (shapeFlag & 64 /* TELEPORT */) {\r\n if (domType !== 8 /* COMMENT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\r\n }\r\n }\r\n else if (shapeFlag & 128 /* SUSPENSE */) {\r\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\r\n }\r\n else if ((true)) {\r\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\r\n }\r\n }\r\n if (ref != null) {\r\n setRef(ref, null, parentSuspense, vnode);\r\n }\r\n return nextNode;\r\n };\r\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\r\n optimized = optimized || !!vnode.dynamicChildren;\r\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\r\n // #4006 for form elements with non-string v-model value bindings\r\n // e.g. <option :value=\"obj\">, <input type=\"checkbox\" :true-value=\"1\">\r\n const forcePatchValue = (type === 'input' && dirs) || type === 'option';\r\n // skip props & children if this is hoisted static nodes\r\n // #5405 in dev, always hydrate children for HMR\r\n if (true /* HOISTED */) {\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\r\n }\r\n // props\r\n if (props) {\r\n if (forcePatchValue ||\r\n !optimized ||\r\n patchFlag & (16 /* FULL_PROPS */ | 32 /* HYDRATE_EVENTS */)) {\r\n for (const key in props) {\r\n if ((forcePatchValue && key.endsWith('value')) ||\r\n (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isOn\"])(key) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isReservedProp\"])(key))) {\r\n patchProp(el, key, null, props[key], false, undefined, parentComponent);\r\n }\r\n }\r\n }\r\n else if (props.onClick) {\r\n // Fast path for click listeners (which is most often) to avoid\r\n // iterating through props.\r\n patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);\r\n }\r\n }\r\n // vnode / directive hooks\r\n let vnodeHooks;\r\n if ((vnodeHooks = props && props.onVnodeBeforeMount)) {\r\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\r\n }\r\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\r\n queueEffectWithSuspense(() => {\r\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\r\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\r\n }, parentSuspense);\r\n }\r\n // children\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */ &&\r\n // skip if element has innerHTML / textContent\r\n !(props && (props.innerHTML || props.textContent))) {\r\n let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n let hasWarned = false;\r\n while (next) {\r\n hasMismatch = true;\r\n if (( true) && !hasWarned) {\r\n warn(`Hydration children mismatch in <${vnode.type}>: ` +\r\n `server rendered element contains more child nodes than client vdom.`);\r\n hasWarned = true;\r\n }\r\n // The SSRed DOM contains more nodes than it should. Remove them.\r\n const cur = next;\r\n next = next.nextSibling;\r\n remove(cur);\r\n }\r\n }\r\n else if (shapeFlag & 8 /* TEXT_CHILDREN */) {\r\n if (el.textContent !== vnode.children) {\r\n hasMismatch = true;\r\n ( true) &&\r\n warn(`Hydration text content mismatch in <${vnode.type}>:\\n` +\r\n `- Client: ${el.textContent}\\n` +\r\n `- Server: ${vnode.children}`);\r\n el.textContent = vnode.children;\r\n }\r\n }\r\n }\r\n return el.nextSibling;\r\n };\r\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\r\n optimized = optimized || !!parentVNode.dynamicChildren;\r\n const children = parentVNode.children;\r\n const l = children.length;\r\n let hasWarned = false;\r\n for (let i = 0; i < l; i++) {\r\n const vnode = optimized\r\n ? children[i]\r\n : (children[i] = normalizeVNode(children[i]));\r\n if (node) {\r\n node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n }\r\n else if (vnode.type === Text && !vnode.children) {\r\n continue;\r\n }\r\n else {\r\n hasMismatch = true;\r\n if (( true) && !hasWarned) {\r\n warn(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +\r\n `server rendered element contains fewer child nodes than client vdom.`);\r\n hasWarned = true;\r\n }\r\n // the SSRed DOM didn't contain enough nodes. Mount the missing ones.\r\n patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\r\n }\r\n }\r\n return node;\r\n };\r\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\r\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\r\n if (fragmentSlotScopeIds) {\r\n slotScopeIds = slotScopeIds\r\n ? slotScopeIds.concat(fragmentSlotScopeIds)\r\n : fragmentSlotScopeIds;\r\n }\r\n const container = parentNode(node);\r\n const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n if (next && isComment(next) && next.data === ']') {\r\n return nextSibling((vnode.anchor = next));\r\n }\r\n else {\r\n // fragment didn't hydrate successfully, since we didn't get a end anchor\r\n // back. This should have led to node/children mismatch warnings.\r\n hasMismatch = true;\r\n // since the anchor is missing, we need to create one and insert it\r\n insert((vnode.anchor = createComment(`]`)), container, next);\r\n return next;\r\n }\r\n };\r\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\r\n hasMismatch = true;\r\n ( true) &&\r\n warn(`Hydration node mismatch:\\n- Client vnode:`, vnode.type, `\\n- Server rendered DOM:`, node, node.nodeType === 3 /* TEXT */\r\n ? `(text)`\r\n : isComment(node) && node.data === '['\r\n ? `(start of fragment)`\r\n : ``);\r\n vnode.el = null;\r\n if (isFragment) {\r\n // remove excessive fragment nodes\r\n const end = locateClosingAsyncAnchor(node);\r\n while (true) {\r\n const next = nextSibling(node);\r\n if (next && next !== end) {\r\n remove(next);\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n const next = nextSibling(node);\r\n const container = parentNode(node);\r\n remove(node);\r\n patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\r\n return next;\r\n };\r\n const locateClosingAsyncAnchor = (node) => {\r\n let match = 0;\r\n while (node) {\r\n node = nextSibling(node);\r\n if (node && isComment(node)) {\r\n if (node.data === '[')\r\n match++;\r\n if (node.data === ']') {\r\n if (match === 0) {\r\n return nextSibling(node);\r\n }\r\n else {\r\n match--;\r\n }\r\n }\r\n }\r\n }\r\n return node;\r\n };\r\n return [hydrate, hydrateNode];\r\n}\n\n/* eslint-disable no-restricted-globals */\r\nlet supported;\r\nlet perf;\r\nfunction startMeasure(instance, type) {\r\n if (instance.appContext.config.performance && isSupported()) {\r\n perf.mark(`vue-${type}-${instance.uid}`);\r\n }\r\n if (true) {\r\n devtoolsPerfStart(instance, type, supported ? perf.now() : Date.now());\r\n }\r\n}\r\nfunction endMeasure(instance, type) {\r\n if (instance.appContext.config.performance && isSupported()) {\r\n const startTag = `vue-${type}-${instance.uid}`;\r\n const endTag = startTag + `:end`;\r\n perf.mark(endTag);\r\n perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n }\r\n if (true) {\r\n devtoolsPerfEnd(instance, type, supported ? perf.now() : Date.now());\r\n }\r\n}\r\nfunction isSupported() {\r\n if (supported !== undefined) {\r\n return supported;\r\n }\r\n if (typeof window !== 'undefined' && window.performance) {\r\n supported = true;\r\n perf = window.performance;\r\n }\r\n else {\r\n supported = false;\r\n }\r\n return supported;\r\n}\n\n/**\r\n * This is only called in esm-bundler builds.\r\n * It is called when a renderer is created, in `baseCreateRenderer` so that\r\n * importing runtime-core is side-effects free.\r\n *\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n const needWarn = [];\r\n if (false) {}\r\n if (false) {}\r\n if (( true) && needWarn.length) {\r\n const multi = needWarn.length > 1;\r\n console.warn(`Feature flag${multi ? `s` : ``} ${needWarn.join(', ')} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, ` +\r\n `which expects these compile-time feature flags to be globally injected ` +\r\n `via the bundler config in order to get better tree-shaking in the ` +\r\n `production bundle.\\n\\n` +\r\n `For more details, see https://link.vuejs.org/feature-flags.`);\r\n }\r\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense\r\n ;\r\n/**\r\n * The createRenderer function accepts two generic arguments:\r\n * HostNode and HostElement, corresponding to Node and Element types in the\r\n * host environment. For example, for runtime-dom, HostNode would be the DOM\r\n * `Node` interface and HostElement would be the DOM `Element` interface.\r\n *\r\n * Custom renderers can pass in the platform specific types like this:\r\n *\r\n * ``` js\r\n * const { render, createApp } = createRenderer<Node, Element>({\r\n * patchProp,\r\n * ...nodeOps\r\n * })\r\n * ```\r\n */\r\nfunction createRenderer(options) {\r\n return baseCreateRenderer(options);\r\n}\r\n// Separate API for creating hydration-enabled renderer.\r\n// Hydration logic is only used when calling this function, making it\r\n// tree-shakable.\r\nfunction createHydrationRenderer(options) {\r\n return baseCreateRenderer(options, createHydrationFunctions);\r\n}\r\n// implementation\r\nfunction baseCreateRenderer(options, createHydrationFns) {\r\n // compile-time feature flags check\r\n {\r\n initFeatureFlags();\r\n }\r\n const target = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"getGlobalThis\"])();\r\n target.__VUE__ = true;\r\n if (true) {\r\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\r\n }\r\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"], cloneNode: hostCloneNode, insertStaticContent: hostInsertStaticContent } = options;\r\n // Note: functions inside this closure should use `const xxx = () => {}`\r\n // style in order to prevent being inlined by minifiers.\r\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = ( true) && isHmrUpdating ? false : !!n2.dynamicChildren) => {\r\n if (n1 === n2) {\r\n return;\r\n }\r\n // patching & not same type, unmount old tree\r\n if (n1 && !isSameVNodeType(n1, n2)) {\r\n anchor = getNextHostNode(n1);\r\n unmount(n1, parentComponent, parentSuspense, true);\r\n n1 = null;\r\n }\r\n if (n2.patchFlag === -2 /* BAIL */) {\r\n optimized = false;\r\n n2.dynamicChildren = null;\r\n }\r\n const { type, ref, shapeFlag } = n2;\r\n switch (type) {\r\n case Text:\r\n processText(n1, n2, container, anchor);\r\n break;\r\n case Comment:\r\n processCommentNode(n1, n2, container, anchor);\r\n break;\r\n case Static:\r\n if (n1 == null) {\r\n mountStaticNode(n2, container, anchor, isSVG);\r\n }\r\n else if ((true)) {\r\n patchStaticNode(n1, n2, container, isSVG);\r\n }\r\n break;\r\n case Fragment:\r\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n break;\r\n default:\r\n if (shapeFlag & 1 /* ELEMENT */) {\r\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n else if (shapeFlag & 6 /* COMPONENT */) {\r\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n else if (shapeFlag & 64 /* TELEPORT */) {\r\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\r\n }\r\n else if (shapeFlag & 128 /* SUSPENSE */) {\r\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\r\n }\r\n else if ((true)) {\r\n warn('Invalid VNode type:', type, `(${typeof type})`);\r\n }\r\n }\r\n // set ref\r\n if (ref != null && parentComponent) {\r\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\r\n }\r\n };\r\n const processText = (n1, n2, container, anchor) => {\r\n if (n1 == null) {\r\n hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);\r\n }\r\n else {\r\n const el = (n2.el = n1.el);\r\n if (n2.children !== n1.children) {\r\n hostSetText(el, n2.children);\r\n }\r\n }\r\n };\r\n const processCommentNode = (n1, n2, container, anchor) => {\r\n if (n1 == null) {\r\n hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);\r\n }\r\n else {\r\n // there's no support for dynamic comments\r\n n2.el = n1.el;\r\n }\r\n };\r\n const mountStaticNode = (n2, container, anchor, isSVG) => {\r\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\r\n };\r\n /**\r\n * Dev / HMR only\r\n */\r\n const patchStaticNode = (n1, n2, container, isSVG) => {\r\n // static nodes are only patched during dev for HMR\r\n if (n2.children !== n1.children) {\r\n const anchor = hostNextSibling(n1.anchor);\r\n // remove existing\r\n removeStaticNode(n1);\r\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\r\n }\r\n else {\r\n n2.el = n1.el;\r\n n2.anchor = n1.anchor;\r\n }\r\n };\r\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\r\n let next;\r\n while (el && el !== anchor) {\r\n next = hostNextSibling(el);\r\n hostInsert(el, container, nextSibling);\r\n el = next;\r\n }\r\n hostInsert(anchor, container, nextSibling);\r\n };\r\n const removeStaticNode = ({ el, anchor }) => {\r\n let next;\r\n while (el && el !== anchor) {\r\n next = hostNextSibling(el);\r\n hostRemove(el);\r\n el = next;\r\n }\r\n hostRemove(anchor);\r\n };\r\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\r\n isSVG = isSVG || n2.type === 'svg';\r\n if (n1 == null) {\r\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n else {\r\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n };\r\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\r\n let el;\r\n let vnodeHook;\r\n const { type, props, shapeFlag, transition, patchFlag, dirs } = vnode;\r\n if (false /* HOISTED */) {}\r\n else {\r\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\r\n // mount children first, since some props may rely on child content\r\n // being already rendered, e.g. `<select value>`\r\n if (shapeFlag & 8 /* TEXT_CHILDREN */) {\r\n hostSetElementText(el, vnode.children);\r\n }\r\n else if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\r\n }\r\n // props\r\n if (props) {\r\n for (const key in props) {\r\n if (key !== 'value' && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isReservedProp\"])(key)) {\r\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n /**\r\n * Special case for setting value on DOM elements:\r\n * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)\r\n * - it needs to be forced (#1471)\r\n * #2353 proposes adding another renderer option to configure this, but\r\n * the properties affects are so finite it is worth special casing it\r\n * here to reduce the complexity. (Special casing it also should not\r\n * affect non-DOM renderers)\r\n */\r\n if ('value' in props) {\r\n hostPatchProp(el, 'value', null, props.value);\r\n }\r\n if ((vnodeHook = props.onVnodeBeforeMount)) {\r\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n }\r\n }\r\n // scopeId\r\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\r\n }\r\n if (true) {\r\n Object.defineProperty(el, '__vnode', {\r\n value: vnode,\r\n enumerable: false\r\n });\r\n Object.defineProperty(el, '__vueParentComponent', {\r\n value: parentComponent,\r\n enumerable: false\r\n });\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\r\n }\r\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\r\n // #1689 For inside suspense + suspense resolved case, just call it\r\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\r\n transition &&\r\n !transition.persisted;\r\n if (needCallTransitionHooks) {\r\n transition.beforeEnter(el);\r\n }\r\n hostInsert(el, container, anchor);\r\n if ((vnodeHook = props && props.onVnodeMounted) ||\r\n needCallTransitionHooks ||\r\n dirs) {\r\n queuePostRenderEffect(() => {\r\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n needCallTransitionHooks && transition.enter(el);\r\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\r\n }, parentSuspense);\r\n }\r\n };\r\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\r\n if (scopeId) {\r\n hostSetScopeId(el, scopeId);\r\n }\r\n if (slotScopeIds) {\r\n for (let i = 0; i < slotScopeIds.length; i++) {\r\n hostSetScopeId(el, slotScopeIds[i]);\r\n }\r\n }\r\n if (parentComponent) {\r\n let subTree = parentComponent.subTree;\r\n if (( true) &&\r\n subTree.patchFlag > 0 &&\r\n subTree.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {\r\n subTree =\r\n filterSingleRoot(subTree.children) || subTree;\r\n }\r\n if (vnode === subTree) {\r\n const parentVNode = parentComponent.vnode;\r\n setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\r\n }\r\n }\r\n };\r\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\r\n for (let i = start; i < children.length; i++) {\r\n const child = (children[i] = optimized\r\n ? cloneIfMounted(children[i])\r\n : normalizeVNode(children[i]));\r\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n };\r\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\r\n const el = (n2.el = n1.el);\r\n let { patchFlag, dynamicChildren, dirs } = n2;\r\n // #1426 take the old vnode's patch flag into account since user may clone a\r\n // compiler-generated vnode, which de-opts to FULL_PROPS\r\n patchFlag |= n1.patchFlag & 16 /* FULL_PROPS */;\r\n const oldProps = n1.props || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n const newProps = n2.props || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n let vnodeHook;\r\n // disable recurse in beforeUpdate hooks\r\n parentComponent && toggleRecurse(parentComponent, false);\r\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\r\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\r\n }\r\n parentComponent && toggleRecurse(parentComponent, true);\r\n if (( true) && isHmrUpdating) {\r\n // HMR updated, force full diff\r\n patchFlag = 0;\r\n optimized = false;\r\n dynamicChildren = null;\r\n }\r\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\r\n if (dynamicChildren) {\r\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\r\n if (( true) && parentComponent && parentComponent.type.__hmrId) {\r\n traverseStaticChildren(n1, n2);\r\n }\r\n }\r\n else if (!optimized) {\r\n // full diff\r\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\r\n }\r\n if (patchFlag > 0) {\r\n // the presence of a patchFlag means this element's render code was\r\n // generated by the compiler and can take the fast path.\r\n // in this path old node and new node are guaranteed to have the same shape\r\n // (i.e. at the exact same position in the source template)\r\n if (patchFlag & 16 /* FULL_PROPS */) {\r\n // element props contain dynamic keys, full diff needed\r\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\r\n }\r\n else {\r\n // class\r\n // this flag is matched when the element has dynamic class bindings.\r\n if (patchFlag & 2 /* CLASS */) {\r\n if (oldProps.class !== newProps.class) {\r\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\r\n }\r\n }\r\n // style\r\n // this flag is matched when the element has dynamic style bindings\r\n if (patchFlag & 4 /* STYLE */) {\r\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\r\n }\r\n // props\r\n // This flag is matched when the element has dynamic prop/attr bindings\r\n // other than class and style. The keys of dynamic prop/attrs are saved for\r\n // faster iteration.\r\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\r\n // bail out and go through a full diff because we need to unset the old key\r\n if (patchFlag & 8 /* PROPS */) {\r\n // if the flag is present then dynamicProps must be non-null\r\n const propsToUpdate = n2.dynamicProps;\r\n for (let i = 0; i < propsToUpdate.length; i++) {\r\n const key = propsToUpdate[i];\r\n const prev = oldProps[key];\r\n const next = newProps[key];\r\n // #1471 force patch value\r\n if (next !== prev || key === 'value') {\r\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n }\r\n }\r\n // text\r\n // This flag is matched when the element has only dynamic text children.\r\n if (patchFlag & 1 /* TEXT */) {\r\n if (n1.children !== n2.children) {\r\n hostSetElementText(el, n2.children);\r\n }\r\n }\r\n }\r\n else if (!optimized && dynamicChildren == null) {\r\n // unoptimized, full diff\r\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\r\n }\r\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\r\n queuePostRenderEffect(() => {\r\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\r\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\r\n }, parentSuspense);\r\n }\r\n };\r\n // The fast path for blocks.\r\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\r\n for (let i = 0; i < newChildren.length; i++) {\r\n const oldVNode = oldChildren[i];\r\n const newVNode = newChildren[i];\r\n // Determine the container (parent element) for the patch.\r\n const container = \r\n // oldVNode may be an errored async setup() component inside Suspense\r\n // which will not have a mounted element\r\n oldVNode.el &&\r\n // - In the case of a Fragment, we need to provide the actual parent\r\n // of the Fragment itself so it can move its children.\r\n (oldVNode.type === Fragment ||\r\n // - In the case of different nodes, there is going to be a replacement\r\n // which also requires the correct parent container\r\n !isSameVNodeType(oldVNode, newVNode) ||\r\n // - In the case of a component, it could contain anything.\r\n oldVNode.shapeFlag & (6 /* COMPONENT */ | 64 /* TELEPORT */))\r\n ? hostParentNode(oldVNode.el)\r\n : // In other cases, the parent container is not actually used so we\r\n // just pass the block element here to avoid a DOM parentNode call.\r\n fallbackContainer;\r\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\r\n }\r\n };\r\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\r\n if (oldProps !== newProps) {\r\n for (const key in newProps) {\r\n // empty string is not valid prop\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isReservedProp\"])(key))\r\n continue;\r\n const next = newProps[key];\r\n const prev = oldProps[key];\r\n // defer patching value\r\n if (next !== prev && key !== 'value') {\r\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n if (oldProps !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"]) {\r\n for (const key in oldProps) {\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isReservedProp\"])(key) && !(key in newProps)) {\r\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n }\r\n if ('value' in newProps) {\r\n hostPatchProp(el, 'value', oldProps.value, newProps.value);\r\n }\r\n }\r\n };\r\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\r\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\r\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\r\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\r\n if (( true) && isHmrUpdating) {\r\n // HMR updated, force full diff\r\n patchFlag = 0;\r\n optimized = false;\r\n dynamicChildren = null;\r\n }\r\n // check if this is a slot fragment with :slotted scope ids\r\n if (fragmentSlotScopeIds) {\r\n slotScopeIds = slotScopeIds\r\n ? slotScopeIds.concat(fragmentSlotScopeIds)\r\n : fragmentSlotScopeIds;\r\n }\r\n if (n1 == null) {\r\n hostInsert(fragmentStartAnchor, container, anchor);\r\n hostInsert(fragmentEndAnchor, container, anchor);\r\n // a fragment can only have array children\r\n // since they are either generated by the compiler, or implicitly created\r\n // from arrays.\r\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n else {\r\n if (patchFlag > 0 &&\r\n patchFlag & 64 /* STABLE_FRAGMENT */ &&\r\n dynamicChildren &&\r\n // #2715 the previous fragment could've been a BAILed one as a result\r\n // of renderSlot() with no valid children\r\n n1.dynamicChildren) {\r\n // a stable fragment (template root or <template v-for>) doesn't need to\r\n // patch children order, but it may contain dynamicChildren.\r\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\r\n if (( true) && parentComponent && parentComponent.type.__hmrId) {\r\n traverseStaticChildren(n1, n2);\r\n }\r\n else if (\r\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\r\n // get moved around. Make sure all root level vnodes inherit el.\r\n // #2134 or if it's a component root, it may also get moved around\r\n // as the component is being moved.\r\n n2.key != null ||\r\n (parentComponent && n2 === parentComponent.subTree)) {\r\n traverseStaticChildren(n1, n2, true /* shallow */);\r\n }\r\n }\r\n else {\r\n // keyed / unkeyed, or manual fragments.\r\n // for keyed & unkeyed, since they are compiler generated from v-for,\r\n // each child is guaranteed to be a block so the fragment will never\r\n // have dynamicChildren.\r\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n }\r\n };\r\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\r\n n2.slotScopeIds = slotScopeIds;\r\n if (n1 == null) {\r\n if (n2.shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {\r\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\r\n }\r\n else {\r\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n }\r\n else {\r\n updateComponent(n1, n2, optimized);\r\n }\r\n };\r\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));\r\n if (( true) && instance.type.__hmrId) {\r\n registerHMR(instance);\r\n }\r\n if ((true)) {\r\n pushWarningContext(initialVNode);\r\n startMeasure(instance, `mount`);\r\n }\r\n // inject renderer internals for keepAlive\r\n if (isKeepAlive(initialVNode)) {\r\n instance.ctx.renderer = internals;\r\n }\r\n // resolve props and slots for setup context\r\n {\r\n if ((true)) {\r\n startMeasure(instance, `init`);\r\n }\r\n setupComponent(instance);\r\n if ((true)) {\r\n endMeasure(instance, `init`);\r\n }\r\n }\r\n // setup() is async. This component relies on async logic to be resolved\r\n // before proceeding\r\n if (instance.asyncDep) {\r\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\r\n // Give it a placeholder if this is not hydration\r\n // TODO handle self-defined fallback\r\n if (!initialVNode.el) {\r\n const placeholder = (instance.subTree = createVNode(Comment));\r\n processCommentNode(null, placeholder, container, anchor);\r\n }\r\n return;\r\n }\r\n setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\r\n if ((true)) {\r\n popWarningContext();\r\n endMeasure(instance, `mount`);\r\n }\r\n };\r\n const updateComponent = (n1, n2, optimized) => {\r\n const instance = (n2.component = n1.component);\r\n if (shouldUpdateComponent(n1, n2, optimized)) {\r\n if (instance.asyncDep &&\r\n !instance.asyncResolved) {\r\n // async & still pending - just update props and slots\r\n // since the component's reactive effect for render isn't set-up yet\r\n if ((true)) {\r\n pushWarningContext(n2);\r\n }\r\n updateComponentPreRender(instance, n2, optimized);\r\n if ((true)) {\r\n popWarningContext();\r\n }\r\n return;\r\n }\r\n else {\r\n // normal update\r\n instance.next = n2;\r\n // in case the child component is also queued, remove it to avoid\r\n // double updating the same child component in the same flush.\r\n invalidateJob(instance.update);\r\n // instance.update is the reactive effect.\r\n instance.update();\r\n }\r\n }\r\n else {\r\n // no update needed. just copy over properties\r\n n2.component = n1.component;\r\n n2.el = n1.el;\r\n instance.vnode = n2;\r\n }\r\n };\r\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\r\n const componentUpdateFn = () => {\r\n if (!instance.isMounted) {\r\n let vnodeHook;\r\n const { el, props } = initialVNode;\r\n const { bm, m, parent } = instance;\r\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\r\n toggleRecurse(instance, false);\r\n // beforeMount hook\r\n if (bm) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"invokeArrayFns\"])(bm);\r\n }\r\n // onVnodeBeforeMount\r\n if (!isAsyncWrapperVNode &&\r\n (vnodeHook = props && props.onVnodeBeforeMount)) {\r\n invokeVNodeHook(vnodeHook, parent, initialVNode);\r\n }\r\n toggleRecurse(instance, true);\r\n if (el && hydrateNode) {\r\n // vnode has adopted host node - perform hydration instead of mount.\r\n const hydrateSubTree = () => {\r\n if ((true)) {\r\n startMeasure(instance, `render`);\r\n }\r\n instance.subTree = renderComponentRoot(instance);\r\n if ((true)) {\r\n endMeasure(instance, `render`);\r\n }\r\n if ((true)) {\r\n startMeasure(instance, `hydrate`);\r\n }\r\n hydrateNode(el, instance.subTree, instance, parentSuspense, null);\r\n if ((true)) {\r\n endMeasure(instance, `hydrate`);\r\n }\r\n };\r\n if (isAsyncWrapperVNode) {\r\n initialVNode.type.__asyncLoader().then(\r\n // note: we are moving the render call into an async callback,\r\n // which means it won't track dependencies - but it's ok because\r\n // a server-rendered async wrapper is already in resolved state\r\n // and it will never need to change.\r\n () => !instance.isUnmounted && hydrateSubTree());\r\n }\r\n else {\r\n hydrateSubTree();\r\n }\r\n }\r\n else {\r\n if ((true)) {\r\n startMeasure(instance, `render`);\r\n }\r\n const subTree = (instance.subTree = renderComponentRoot(instance));\r\n if ((true)) {\r\n endMeasure(instance, `render`);\r\n }\r\n if ((true)) {\r\n startMeasure(instance, `patch`);\r\n }\r\n patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);\r\n if ((true)) {\r\n endMeasure(instance, `patch`);\r\n }\r\n initialVNode.el = subTree.el;\r\n }\r\n // mounted hook\r\n if (m) {\r\n queuePostRenderEffect(m, parentSuspense);\r\n }\r\n // onVnodeMounted\r\n if (!isAsyncWrapperVNode &&\r\n (vnodeHook = props && props.onVnodeMounted)) {\r\n const scopedInitialVNode = initialVNode;\r\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\r\n }\r\n // activated hook for keep-alive roots.\r\n // #1742 activated hook must be accessed after first render\r\n // since the hook may be injected by a child keep-alive\r\n if (initialVNode.shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {\r\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\r\n }\r\n instance.isMounted = true;\r\n if (true) {\r\n devtoolsComponentAdded(instance);\r\n }\r\n // #2458: deference mount-only object parameters to prevent memleaks\r\n initialVNode = container = anchor = null;\r\n }\r\n else {\r\n // updateComponent\r\n // This is triggered by mutation of component's own state (next: null)\r\n // OR parent calling processComponent (next: VNode)\r\n let { next, bu, u, parent, vnode } = instance;\r\n let originNext = next;\r\n let vnodeHook;\r\n if ((true)) {\r\n pushWarningContext(next || instance.vnode);\r\n }\r\n // Disallow component effect recursion during pre-lifecycle hooks.\r\n toggleRecurse(instance, false);\r\n if (next) {\r\n next.el = vnode.el;\r\n updateComponentPreRender(instance, next, optimized);\r\n }\r\n else {\r\n next = vnode;\r\n }\r\n // beforeUpdate hook\r\n if (bu) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"invokeArrayFns\"])(bu);\r\n }\r\n // onVnodeBeforeUpdate\r\n if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {\r\n invokeVNodeHook(vnodeHook, parent, next, vnode);\r\n }\r\n toggleRecurse(instance, true);\r\n // render\r\n if ((true)) {\r\n startMeasure(instance, `render`);\r\n }\r\n const nextTree = renderComponentRoot(instance);\r\n if ((true)) {\r\n endMeasure(instance, `render`);\r\n }\r\n const prevTree = instance.subTree;\r\n instance.subTree = nextTree;\r\n if ((true)) {\r\n startMeasure(instance, `patch`);\r\n }\r\n patch(prevTree, nextTree, \r\n // parent may have changed if it's in a teleport\r\n hostParentNode(prevTree.el), \r\n // anchor may have changed if it's in a fragment\r\n getNextHostNode(prevTree), instance, parentSuspense, isSVG);\r\n if ((true)) {\r\n endMeasure(instance, `patch`);\r\n }\r\n next.el = nextTree.el;\r\n if (originNext === null) {\r\n // self-triggered update. In case of HOC, update parent component\r\n // vnode el. HOC is indicated by parent instance's subTree pointing\r\n // to child component's vnode\r\n updateHOCHostEl(instance, nextTree.el);\r\n }\r\n // updated hook\r\n if (u) {\r\n queuePostRenderEffect(u, parentSuspense);\r\n }\r\n // onVnodeUpdated\r\n if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {\r\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\r\n }\r\n if (true) {\r\n devtoolsComponentUpdated(instance);\r\n }\r\n if ((true)) {\r\n popWarningContext();\r\n }\r\n }\r\n };\r\n // create reactive effect for rendering\r\n const effect = (instance.effect = new _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"ReactiveEffect\"](componentUpdateFn, () => queueJob(instance.update), instance.scope // track it in component's effect scope\r\n ));\r\n const update = (instance.update = effect.run.bind(effect));\r\n update.id = instance.uid;\r\n // allowRecurse\r\n // #1801, #2043 component render effects should allow recursive updates\r\n toggleRecurse(instance, true);\r\n if ((true)) {\r\n effect.onTrack = instance.rtc\r\n ? e => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"invokeArrayFns\"])(instance.rtc, e)\r\n : void 0;\r\n effect.onTrigger = instance.rtg\r\n ? e => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"invokeArrayFns\"])(instance.rtg, e)\r\n : void 0;\r\n // @ts-ignore (for scheduler)\r\n update.ownerInstance = instance;\r\n }\r\n update();\r\n };\r\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\r\n nextVNode.component = instance;\r\n const prevProps = instance.vnode.props;\r\n instance.vnode = nextVNode;\r\n instance.next = null;\r\n updateProps(instance, nextVNode.props, prevProps, optimized);\r\n updateSlots(instance, nextVNode.children, optimized);\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"pauseTracking\"])();\r\n // props update may have triggered pre-flush watchers.\r\n // flush them before the render update.\r\n flushPreFlushCbs(undefined, instance.update);\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"resetTracking\"])();\r\n };\r\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\r\n const c1 = n1 && n1.children;\r\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\r\n const c2 = n2.children;\r\n const { patchFlag, shapeFlag } = n2;\r\n // fast path\r\n if (patchFlag > 0) {\r\n if (patchFlag & 128 /* KEYED_FRAGMENT */) {\r\n // this could be either fully-keyed or mixed (some keyed some not)\r\n // presence of patchFlag means children are guaranteed to be arrays\r\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n return;\r\n }\r\n else if (patchFlag & 256 /* UNKEYED_FRAGMENT */) {\r\n // unkeyed\r\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n return;\r\n }\r\n }\r\n // children has 3 possibilities: text, array or no children.\r\n if (shapeFlag & 8 /* TEXT_CHILDREN */) {\r\n // text children fast path\r\n if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n unmountChildren(c1, parentComponent, parentSuspense);\r\n }\r\n if (c2 !== c1) {\r\n hostSetElementText(container, c2);\r\n }\r\n }\r\n else {\r\n if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n // prev children was array\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n // two arrays, cannot assume anything, do full diff\r\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n else {\r\n // no new children, just unmount old\r\n unmountChildren(c1, parentComponent, parentSuspense, true);\r\n }\r\n }\r\n else {\r\n // prev children was text OR null\r\n // new children is array OR null\r\n if (prevShapeFlag & 8 /* TEXT_CHILDREN */) {\r\n hostSetElementText(container, '');\r\n }\r\n // mount new if array\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n }\r\n }\r\n };\r\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\r\n c1 = c1 || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_ARR\"];\r\n c2 = c2 || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_ARR\"];\r\n const oldLength = c1.length;\r\n const newLength = c2.length;\r\n const commonLength = Math.min(oldLength, newLength);\r\n let i;\r\n for (i = 0; i < commonLength; i++) {\r\n const nextChild = (c2[i] = optimized\r\n ? cloneIfMounted(c2[i])\r\n : normalizeVNode(c2[i]));\r\n patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n if (oldLength > newLength) {\r\n // remove old\r\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\r\n }\r\n else {\r\n // mount new\r\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\r\n }\r\n };\r\n // can be all-keyed or mixed\r\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\r\n let i = 0;\r\n const l2 = c2.length;\r\n let e1 = c1.length - 1; // prev ending index\r\n let e2 = l2 - 1; // next ending index\r\n // 1. sync from start\r\n // (a b) c\r\n // (a b) d e\r\n while (i <= e1 && i <= e2) {\r\n const n1 = c1[i];\r\n const n2 = (c2[i] = optimized\r\n ? cloneIfMounted(c2[i])\r\n : normalizeVNode(c2[i]));\r\n if (isSameVNodeType(n1, n2)) {\r\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n else {\r\n break;\r\n }\r\n i++;\r\n }\r\n // 2. sync from end\r\n // a (b c)\r\n // d e (b c)\r\n while (i <= e1 && i <= e2) {\r\n const n1 = c1[e1];\r\n const n2 = (c2[e2] = optimized\r\n ? cloneIfMounted(c2[e2])\r\n : normalizeVNode(c2[e2]));\r\n if (isSameVNodeType(n1, n2)) {\r\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n else {\r\n break;\r\n }\r\n e1--;\r\n e2--;\r\n }\r\n // 3. common sequence + mount\r\n // (a b)\r\n // (a b) c\r\n // i = 2, e1 = 1, e2 = 2\r\n // (a b)\r\n // c (a b)\r\n // i = 0, e1 = -1, e2 = 0\r\n if (i > e1) {\r\n if (i <= e2) {\r\n const nextPos = e2 + 1;\r\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\r\n while (i <= e2) {\r\n patch(null, (c2[i] = optimized\r\n ? cloneIfMounted(c2[i])\r\n : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n i++;\r\n }\r\n }\r\n }\r\n // 4. common sequence + unmount\r\n // (a b) c\r\n // (a b)\r\n // i = 2, e1 = 2, e2 = 1\r\n // a (b c)\r\n // (b c)\r\n // i = 0, e1 = 0, e2 = -1\r\n else if (i > e2) {\r\n while (i <= e1) {\r\n unmount(c1[i], parentComponent, parentSuspense, true);\r\n i++;\r\n }\r\n }\r\n // 5. unknown sequence\r\n // [i ... e1 + 1]: a b [c d e] f g\r\n // [i ... e2 + 1]: a b [e d c h] f g\r\n // i = 2, e1 = 4, e2 = 5\r\n else {\r\n const s1 = i; // prev starting index\r\n const s2 = i; // next starting index\r\n // 5.1 build key:index map for newChildren\r\n const keyToNewIndexMap = new Map();\r\n for (i = s2; i <= e2; i++) {\r\n const nextChild = (c2[i] = optimized\r\n ? cloneIfMounted(c2[i])\r\n : normalizeVNode(c2[i]));\r\n if (nextChild.key != null) {\r\n if (( true) && keyToNewIndexMap.has(nextChild.key)) {\r\n warn(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);\r\n }\r\n keyToNewIndexMap.set(nextChild.key, i);\r\n }\r\n }\r\n // 5.2 loop through old children left to be patched and try to patch\r\n // matching nodes & remove nodes that are no longer present\r\n let j;\r\n let patched = 0;\r\n const toBePatched = e2 - s2 + 1;\r\n let moved = false;\r\n // used to track whether any node has moved\r\n let maxNewIndexSoFar = 0;\r\n // works as Map<newIndex, oldIndex>\r\n // Note that oldIndex is offset by +1\r\n // and oldIndex = 0 is a special value indicating the new node has\r\n // no corresponding old node.\r\n // used for determining longest stable subsequence\r\n const newIndexToOldIndexMap = new Array(toBePatched);\r\n for (i = 0; i < toBePatched; i++)\r\n newIndexToOldIndexMap[i] = 0;\r\n for (i = s1; i <= e1; i++) {\r\n const prevChild = c1[i];\r\n if (patched >= toBePatched) {\r\n // all new children have been patched so this can only be a removal\r\n unmount(prevChild, parentComponent, parentSuspense, true);\r\n continue;\r\n }\r\n let newIndex;\r\n if (prevChild.key != null) {\r\n newIndex = keyToNewIndexMap.get(prevChild.key);\r\n }\r\n else {\r\n // key-less node, try to locate a key-less node of the same type\r\n for (j = s2; j <= e2; j++) {\r\n if (newIndexToOldIndexMap[j - s2] === 0 &&\r\n isSameVNodeType(prevChild, c2[j])) {\r\n newIndex = j;\r\n break;\r\n }\r\n }\r\n }\r\n if (newIndex === undefined) {\r\n unmount(prevChild, parentComponent, parentSuspense, true);\r\n }\r\n else {\r\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\r\n if (newIndex >= maxNewIndexSoFar) {\r\n maxNewIndexSoFar = newIndex;\r\n }\r\n else {\r\n moved = true;\r\n }\r\n patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n patched++;\r\n }\r\n }\r\n // 5.3 move and mount\r\n // generate longest stable subsequence only when nodes have moved\r\n const increasingNewIndexSequence = moved\r\n ? getSequence(newIndexToOldIndexMap)\r\n : _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_ARR\"];\r\n j = increasingNewIndexSequence.length - 1;\r\n // looping backwards so that we can use last patched node as anchor\r\n for (i = toBePatched - 1; i >= 0; i--) {\r\n const nextIndex = s2 + i;\r\n const nextChild = c2[nextIndex];\r\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\r\n if (newIndexToOldIndexMap[i] === 0) {\r\n // mount new\r\n patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n else if (moved) {\r\n // move if:\r\n // There is no stable subsequence (e.g. a reverse)\r\n // OR current node is not among the stable sequence\r\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\r\n move(nextChild, container, anchor, 2 /* REORDER */);\r\n }\r\n else {\r\n j--;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\r\n const { el, type, transition, children, shapeFlag } = vnode;\r\n if (shapeFlag & 6 /* COMPONENT */) {\r\n move(vnode.component.subTree, container, anchor, moveType);\r\n return;\r\n }\r\n if (shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.suspense.move(container, anchor, moveType);\r\n return;\r\n }\r\n if (shapeFlag & 64 /* TELEPORT */) {\r\n type.move(vnode, container, anchor, internals);\r\n return;\r\n }\r\n if (type === Fragment) {\r\n hostInsert(el, container, anchor);\r\n for (let i = 0; i < children.length; i++) {\r\n move(children[i], container, anchor, moveType);\r\n }\r\n hostInsert(vnode.anchor, container, anchor);\r\n return;\r\n }\r\n if (type === Static) {\r\n moveStaticNode(vnode, container, anchor);\r\n return;\r\n }\r\n // single nodes\r\n const needTransition = moveType !== 2 /* REORDER */ &&\r\n shapeFlag & 1 /* ELEMENT */ &&\r\n transition;\r\n if (needTransition) {\r\n if (moveType === 0 /* ENTER */) {\r\n transition.beforeEnter(el);\r\n hostInsert(el, container, anchor);\r\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\r\n }\r\n else {\r\n const { leave, delayLeave, afterLeave } = transition;\r\n const remove = () => hostInsert(el, container, anchor);\r\n const performLeave = () => {\r\n leave(el, () => {\r\n remove();\r\n afterLeave && afterLeave();\r\n });\r\n };\r\n if (delayLeave) {\r\n delayLeave(el, remove, performLeave);\r\n }\r\n else {\r\n performLeave();\r\n }\r\n }\r\n }\r\n else {\r\n hostInsert(el, container, anchor);\r\n }\r\n };\r\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\r\n const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\r\n // unset ref\r\n if (ref != null) {\r\n setRef(ref, null, parentSuspense, vnode, true);\r\n }\r\n if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {\r\n parentComponent.ctx.deactivate(vnode);\r\n return;\r\n }\r\n const shouldInvokeDirs = shapeFlag & 1 /* ELEMENT */ && dirs;\r\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\r\n let vnodeHook;\r\n if (shouldInvokeVnodeHook &&\r\n (vnodeHook = props && props.onVnodeBeforeUnmount)) {\r\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n }\r\n if (shapeFlag & 6 /* COMPONENT */) {\r\n unmountComponent(vnode.component, parentSuspense, doRemove);\r\n }\r\n else {\r\n if (shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.suspense.unmount(parentSuspense, doRemove);\r\n return;\r\n }\r\n if (shouldInvokeDirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');\r\n }\r\n if (shapeFlag & 64 /* TELEPORT */) {\r\n vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\r\n }\r\n else if (dynamicChildren &&\r\n // #1153: fast path should not be taken for non-stable (v-for) fragments\r\n (type !== Fragment ||\r\n (patchFlag > 0 && patchFlag & 64 /* STABLE_FRAGMENT */))) {\r\n // fast path for block nodes: only need to unmount dynamic children.\r\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\r\n }\r\n else if ((type === Fragment &&\r\n patchFlag &\r\n (128 /* KEYED_FRAGMENT */ | 256 /* UNKEYED_FRAGMENT */)) ||\r\n (!optimized && shapeFlag & 16 /* ARRAY_CHILDREN */)) {\r\n unmountChildren(children, parentComponent, parentSuspense);\r\n }\r\n if (doRemove) {\r\n remove(vnode);\r\n }\r\n }\r\n if ((shouldInvokeVnodeHook &&\r\n (vnodeHook = props && props.onVnodeUnmounted)) ||\r\n shouldInvokeDirs) {\r\n queuePostRenderEffect(() => {\r\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n shouldInvokeDirs &&\r\n invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');\r\n }, parentSuspense);\r\n }\r\n };\r\n const remove = vnode => {\r\n const { type, el, anchor, transition } = vnode;\r\n if (type === Fragment) {\r\n removeFragment(el, anchor);\r\n return;\r\n }\r\n if (type === Static) {\r\n removeStaticNode(vnode);\r\n return;\r\n }\r\n const performRemove = () => {\r\n hostRemove(el);\r\n if (transition && !transition.persisted && transition.afterLeave) {\r\n transition.afterLeave();\r\n }\r\n };\r\n if (vnode.shapeFlag & 1 /* ELEMENT */ &&\r\n transition &&\r\n !transition.persisted) {\r\n const { leave, delayLeave } = transition;\r\n const performLeave = () => leave(el, performRemove);\r\n if (delayLeave) {\r\n delayLeave(vnode.el, performRemove, performLeave);\r\n }\r\n else {\r\n performLeave();\r\n }\r\n }\r\n else {\r\n performRemove();\r\n }\r\n };\r\n const removeFragment = (cur, end) => {\r\n // For fragments, directly remove all contained DOM nodes.\r\n // (fragment child nodes cannot have transition)\r\n let next;\r\n while (cur !== end) {\r\n next = hostNextSibling(cur);\r\n hostRemove(cur);\r\n cur = next;\r\n }\r\n hostRemove(end);\r\n };\r\n const unmountComponent = (instance, parentSuspense, doRemove) => {\r\n if (( true) && instance.type.__hmrId) {\r\n unregisterHMR(instance);\r\n }\r\n const { bum, scope, update, subTree, um } = instance;\r\n // beforeUnmount hook\r\n if (bum) {\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"invokeArrayFns\"])(bum);\r\n }\r\n // stop effects in component scope\r\n scope.stop();\r\n // update may be null if a component is unmounted before its async\r\n // setup has resolved.\r\n if (update) {\r\n // so that scheduler will no longer invoke it\r\n update.active = false;\r\n unmount(subTree, instance, parentSuspense, doRemove);\r\n }\r\n // unmounted hook\r\n if (um) {\r\n queuePostRenderEffect(um, parentSuspense);\r\n }\r\n queuePostRenderEffect(() => {\r\n instance.isUnmounted = true;\r\n }, parentSuspense);\r\n // A component with async dep inside a pending suspense is unmounted before\r\n // its async dep resolves. This should remove the dep from the suspense, and\r\n // cause the suspense to resolve immediately if that was the last dep.\r\n if (parentSuspense &&\r\n parentSuspense.pendingBranch &&\r\n !parentSuspense.isUnmounted &&\r\n instance.asyncDep &&\r\n !instance.asyncResolved &&\r\n instance.suspenseId === parentSuspense.pendingId) {\r\n parentSuspense.deps--;\r\n if (parentSuspense.deps === 0) {\r\n parentSuspense.resolve();\r\n }\r\n }\r\n if (true) {\r\n devtoolsComponentRemoved(instance);\r\n }\r\n };\r\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\r\n for (let i = start; i < children.length; i++) {\r\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\r\n }\r\n };\r\n const getNextHostNode = vnode => {\r\n if (vnode.shapeFlag & 6 /* COMPONENT */) {\r\n return getNextHostNode(vnode.component.subTree);\r\n }\r\n if (vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n return vnode.suspense.next();\r\n }\r\n return hostNextSibling((vnode.anchor || vnode.el));\r\n };\r\n const render = (vnode, container, isSVG) => {\r\n if (vnode == null) {\r\n if (container._vnode) {\r\n unmount(container._vnode, null, null, true);\r\n }\r\n }\r\n else {\r\n patch(container._vnode || null, vnode, container, null, null, null, isSVG);\r\n }\r\n flushPostFlushCbs();\r\n container._vnode = vnode;\r\n };\r\n const internals = {\r\n p: patch,\r\n um: unmount,\r\n m: move,\r\n r: remove,\r\n mt: mountComponent,\r\n mc: mountChildren,\r\n pc: patchChildren,\r\n pbc: patchBlockChildren,\r\n n: getNextHostNode,\r\n o: options\r\n };\r\n let hydrate;\r\n let hydrateNode;\r\n if (createHydrationFns) {\r\n [hydrate, hydrateNode] = createHydrationFns(internals);\r\n }\r\n return {\r\n render,\r\n hydrate,\r\n createApp: createAppAPI(render, hydrate)\r\n };\r\n}\r\nfunction toggleRecurse({ effect, update }, allowed) {\r\n effect.allowRecurse = update.allowRecurse = allowed;\r\n}\r\n/**\r\n * #1156\r\n * When a component is HMR-enabled, we need to make sure that all static nodes\r\n * inside a block also inherit the DOM element from the previous tree so that\r\n * HMR updates (which are full updates) can retrieve the element for patching.\r\n *\r\n * #2080\r\n * Inside keyed `template` fragment static children, if a fragment is moved,\r\n * the children will always be moved. Therefore, in order to ensure correct move\r\n * position, el should be inherited from previous nodes.\r\n */\r\nfunction traverseStaticChildren(n1, n2, shallow = false) {\r\n const ch1 = n1.children;\r\n const ch2 = n2.children;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ch1) && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ch2)) {\r\n for (let i = 0; i < ch1.length; i++) {\r\n // this is only called in the optimized path so array children are\r\n // guaranteed to be vnodes\r\n const c1 = ch1[i];\r\n let c2 = ch2[i];\r\n if (c2.shapeFlag & 1 /* ELEMENT */ && !c2.dynamicChildren) {\r\n if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* HYDRATE_EVENTS */) {\r\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\r\n c2.el = c1.el;\r\n }\r\n if (!shallow)\r\n traverseStaticChildren(c1, c2);\r\n }\r\n // also inherit for comment nodes, but not placeholders (e.g. v-if which\r\n // would have received .el during block patch)\r\n if (( true) && c2.type === Comment && !c2.el) {\r\n c2.el = c1.el;\r\n }\r\n }\r\n }\r\n}\r\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\r\nfunction getSequence(arr) {\r\n const p = arr.slice();\r\n const result = [0];\r\n let i, j, u, v, c;\r\n const len = arr.length;\r\n for (i = 0; i < len; i++) {\r\n const arrI = arr[i];\r\n if (arrI !== 0) {\r\n j = result[result.length - 1];\r\n if (arr[j] < arrI) {\r\n p[i] = j;\r\n result.push(i);\r\n continue;\r\n }\r\n u = 0;\r\n v = result.length - 1;\r\n while (u < v) {\r\n c = (u + v) >> 1;\r\n if (arr[result[c]] < arrI) {\r\n u = c + 1;\r\n }\r\n else {\r\n v = c;\r\n }\r\n }\r\n if (arrI < arr[result[u]]) {\r\n if (u > 0) {\r\n p[i] = result[u - 1];\r\n }\r\n result[u] = i;\r\n }\r\n }\r\n }\r\n u = result.length;\r\n v = result[u - 1];\r\n while (u-- > 0) {\r\n result[u] = v;\r\n v = p[v];\r\n }\r\n return result;\r\n}\n\nconst isTeleport = (type) => type.__isTeleport;\r\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');\r\nconst isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;\r\nconst resolveTarget = (props, select) => {\r\n const targetSelector = props && props.to;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(targetSelector)) {\r\n if (!select) {\r\n ( true) &&\r\n warn(`Current renderer does not support string target for Teleports. ` +\r\n `(missing querySelector renderer option)`);\r\n return null;\r\n }\r\n else {\r\n const target = select(targetSelector);\r\n if (!target) {\r\n ( true) &&\r\n warn(`Failed to locate Teleport target with selector \"${targetSelector}\". ` +\r\n `Note the target element must exist before the component is mounted - ` +\r\n `i.e. the target cannot be rendered by the component itself, and ` +\r\n `ideally should be outside of the entire Vue component tree.`);\r\n }\r\n return target;\r\n }\r\n }\r\n else {\r\n if (( true) && !targetSelector && !isTeleportDisabled(props)) {\r\n warn(`Invalid Teleport target: ${targetSelector}`);\r\n }\r\n return targetSelector;\r\n }\r\n};\r\nconst TeleportImpl = {\r\n __isTeleport: true,\r\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {\r\n const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;\r\n const disabled = isTeleportDisabled(n2.props);\r\n let { shapeFlag, children, dynamicChildren } = n2;\r\n // #3302\r\n // HMR updated, force full diff\r\n if (( true) && isHmrUpdating) {\r\n optimized = false;\r\n dynamicChildren = null;\r\n }\r\n if (n1 == null) {\r\n // insert anchors in the main view\r\n const placeholder = (n2.el = ( true)\r\n ? createComment('teleport start')\r\n : undefined);\r\n const mainAnchor = (n2.anchor = ( true)\r\n ? createComment('teleport end')\r\n : undefined);\r\n insert(placeholder, container, anchor);\r\n insert(mainAnchor, container, anchor);\r\n const target = (n2.target = resolveTarget(n2.props, querySelector));\r\n const targetAnchor = (n2.targetAnchor = createText(''));\r\n if (target) {\r\n insert(targetAnchor, target);\r\n // #2652 we could be teleporting from a non-SVG tree into an SVG tree\r\n isSVG = isSVG || isTargetSVG(target);\r\n }\r\n else if (( true) && !disabled) {\r\n warn('Invalid Teleport target on mount:', target, `(${typeof target})`);\r\n }\r\n const mount = (container, anchor) => {\r\n // Teleport *always* has Array children. This is enforced in both the\r\n // compiler and vnode children normalization.\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\r\n }\r\n };\r\n if (disabled) {\r\n mount(container, mainAnchor);\r\n }\r\n else if (target) {\r\n mount(target, targetAnchor);\r\n }\r\n }\r\n else {\r\n // update content\r\n n2.el = n1.el;\r\n const mainAnchor = (n2.anchor = n1.anchor);\r\n const target = (n2.target = n1.target);\r\n const targetAnchor = (n2.targetAnchor = n1.targetAnchor);\r\n const wasDisabled = isTeleportDisabled(n1.props);\r\n const currentContainer = wasDisabled ? container : target;\r\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\r\n isSVG = isSVG || isTargetSVG(target);\r\n if (dynamicChildren) {\r\n // fast path when the teleport happens to be a block root\r\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);\r\n // even in block tree mode we need to make sure all root-level nodes\r\n // in the teleport inherit previous DOM references so that they can\r\n // be moved in future patches.\r\n traverseStaticChildren(n1, n2, true);\r\n }\r\n else if (!optimized) {\r\n patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);\r\n }\r\n if (disabled) {\r\n if (!wasDisabled) {\r\n // enabled -> disabled\r\n // move into main container\r\n moveTeleport(n2, container, mainAnchor, internals, 1 /* TOGGLE */);\r\n }\r\n }\r\n else {\r\n // target changed\r\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\r\n const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));\r\n if (nextTarget) {\r\n moveTeleport(n2, nextTarget, null, internals, 0 /* TARGET_CHANGE */);\r\n }\r\n else if ((true)) {\r\n warn('Invalid Teleport target on update:', target, `(${typeof target})`);\r\n }\r\n }\r\n else if (wasDisabled) {\r\n // disabled -> enabled\r\n // move into teleport target\r\n moveTeleport(n2, target, targetAnchor, internals, 1 /* TOGGLE */);\r\n }\r\n }\r\n }\r\n },\r\n remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\r\n const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\r\n if (target) {\r\n hostRemove(targetAnchor);\r\n }\r\n // an unmounted teleport should always remove its children if not disabled\r\n if (doRemove || !isTeleportDisabled(props)) {\r\n hostRemove(anchor);\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);\r\n }\r\n }\r\n }\r\n },\r\n move: moveTeleport,\r\n hydrate: hydrateTeleport\r\n};\r\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* REORDER */) {\r\n // move target anchor if this is a target change.\r\n if (moveType === 0 /* TARGET_CHANGE */) {\r\n insert(vnode.targetAnchor, container, parentAnchor);\r\n }\r\n const { el, anchor, shapeFlag, children, props } = vnode;\r\n const isReorder = moveType === 2 /* REORDER */;\r\n // move main view anchor if this is a re-order.\r\n if (isReorder) {\r\n insert(el, container, parentAnchor);\r\n }\r\n // if this is a re-order and teleport is enabled (content is in target)\r\n // do not move children. So the opposite is: only move children if this\r\n // is not a reorder, or the teleport is disabled\r\n if (!isReorder || isTeleportDisabled(props)) {\r\n // Teleport has either Array children or no children.\r\n if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n for (let i = 0; i < children.length; i++) {\r\n move(children[i], container, parentAnchor, 2 /* REORDER */);\r\n }\r\n }\r\n }\r\n // move main view anchor if this is a re-order.\r\n if (isReorder) {\r\n insert(anchor, container, parentAnchor);\r\n }\r\n}\r\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {\r\n const target = (vnode.target = resolveTarget(vnode.props, querySelector));\r\n if (target) {\r\n // if multiple teleports rendered to the same target element, we need to\r\n // pick up from where the last teleport finished instead of the first node\r\n const targetNode = target._lpa || target.firstChild;\r\n if (vnode.shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n if (isTeleportDisabled(vnode.props)) {\r\n vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);\r\n vnode.targetAnchor = targetNode;\r\n }\r\n else {\r\n vnode.anchor = nextSibling(node);\r\n vnode.targetAnchor = hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n }\r\n target._lpa =\r\n vnode.targetAnchor && nextSibling(vnode.targetAnchor);\r\n }\r\n }\r\n return vnode.anchor && nextSibling(vnode.anchor);\r\n}\r\n// Force-casted public typing for h and TSX props inference\r\nconst Teleport = TeleportImpl;\n\nconst COMPONENTS = 'components';\r\nconst DIRECTIVES = 'directives';\r\n/**\r\n * @private\r\n */\r\nfunction resolveComponent(name, maybeSelfReference) {\r\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\r\n}\r\nconst NULL_DYNAMIC_COMPONENT = Symbol();\r\n/**\r\n * @private\r\n */\r\nfunction resolveDynamicComponent(component) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(component)) {\r\n return resolveAsset(COMPONENTS, component, false) || component;\r\n }\r\n else {\r\n // invalid types will fallthrough to createVNode and raise warning\r\n return (component || NULL_DYNAMIC_COMPONENT);\r\n }\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction resolveDirective(name) {\r\n return resolveAsset(DIRECTIVES, name);\r\n}\r\n// implementation\r\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\r\n const instance = currentRenderingInstance || currentInstance;\r\n if (instance) {\r\n const Component = instance.type;\r\n // explicit self name has highest priority\r\n if (type === COMPONENTS) {\r\n const selfName = getComponentName(Component);\r\n if (selfName &&\r\n (selfName === name ||\r\n selfName === Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(name) ||\r\n selfName === Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"capitalize\"])(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(name)))) {\r\n return Component;\r\n }\r\n }\r\n const res = \r\n // local registration\r\n // check instance[type] first which is resolved for options API\r\n resolve(instance[type] || Component[type], name) ||\r\n // global registration\r\n resolve(instance.appContext[type], name);\r\n if (!res && maybeSelfReference) {\r\n // fallback to implicit self-reference\r\n return Component;\r\n }\r\n if (( true) && warnMissing && !res) {\r\n const extra = type === COMPONENTS\r\n ? `\\nIf this is a native custom element, make sure to exclude it from ` +\r\n `component resolution via compilerOptions.isCustomElement.`\r\n : ``;\r\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\r\n }\r\n return res;\r\n }\r\n else if ((true)) {\r\n warn(`resolve${Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"capitalize\"])(type.slice(0, -1))} ` +\r\n `can only be used in render() or setup().`);\r\n }\r\n}\r\nfunction resolve(registry, name) {\r\n return (registry &&\r\n (registry[name] ||\r\n registry[Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(name)] ||\r\n registry[Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"capitalize\"])(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(name))]));\r\n}\n\nconst Fragment = Symbol(( true) ? 'Fragment' : undefined);\r\nconst Text = Symbol(( true) ? 'Text' : undefined);\r\nconst Comment = Symbol(( true) ? 'Comment' : undefined);\r\nconst Static = Symbol(( true) ? 'Static' : undefined);\r\n// Since v-if and v-for are the two possible ways node structure can dynamically\r\n// change, once we consider v-if branches and each v-for fragment a block, we\r\n// can divide a template into nested blocks, and within each block the node\r\n// structure would be stable. This allows us to skip most children diffing\r\n// and only worry about the dynamic nodes (indicated by patch flags).\r\nconst blockStack = [];\r\nlet currentBlock = null;\r\n/**\r\n * Open a block.\r\n * This must be called before `createBlock`. It cannot be part of `createBlock`\r\n * because the children of the block are evaluated before `createBlock` itself\r\n * is called. The generated code typically looks like this:\r\n *\r\n * ```js\r\n * function render() {\r\n * return (openBlock(),createBlock('div', null, [...]))\r\n * }\r\n * ```\r\n * disableTracking is true when creating a v-for fragment block, since a v-for\r\n * fragment always diffs its children.\r\n *\r\n * @private\r\n */\r\nfunction openBlock(disableTracking = false) {\r\n blockStack.push((currentBlock = disableTracking ? null : []));\r\n}\r\nfunction closeBlock() {\r\n blockStack.pop();\r\n currentBlock = blockStack[blockStack.length - 1] || null;\r\n}\r\n// Whether we should be tracking dynamic child nodes inside a block.\r\n// Only tracks when this value is > 0\r\n// We are not using a simple boolean because this value may need to be\r\n// incremented/decremented by nested usage of v-once (see below)\r\nlet isBlockTreeEnabled = 1;\r\n/**\r\n * Block tracking sometimes needs to be disabled, for example during the\r\n * creation of a tree that needs to be cached by v-once. The compiler generates\r\n * code like this:\r\n *\r\n * ``` js\r\n * _cache[1] || (\r\n * setBlockTracking(-1),\r\n * _cache[1] = createVNode(...),\r\n * setBlockTracking(1),\r\n * _cache[1]\r\n * )\r\n * ```\r\n *\r\n * @private\r\n */\r\nfunction setBlockTracking(value) {\r\n isBlockTreeEnabled += value;\r\n}\r\nfunction setupBlock(vnode) {\r\n // save current block children on the block vnode\r\n vnode.dynamicChildren =\r\n isBlockTreeEnabled > 0 ? currentBlock || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_ARR\"] : null;\r\n // close block\r\n closeBlock();\r\n // a block is always going to be patched, so track it as a child of its\r\n // parent block\r\n if (isBlockTreeEnabled > 0 && currentBlock) {\r\n currentBlock.push(vnode);\r\n }\r\n return vnode;\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\r\n return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));\r\n}\r\n/**\r\n * Create a block root vnode. Takes the same exact arguments as `createVNode`.\r\n * A block root keeps track of dynamic nodes within the block in the\r\n * `dynamicChildren` array.\r\n *\r\n * @private\r\n */\r\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\r\n return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));\r\n}\r\nfunction isVNode(value) {\r\n return value ? value.__v_isVNode === true : false;\r\n}\r\nfunction isSameVNodeType(n1, n2) {\r\n if (( true) &&\r\n n2.shapeFlag & 6 /* COMPONENT */ &&\r\n hmrDirtyComponents.has(n2.type)) {\r\n // HMR only: if the component has been hot-updated, force a reload.\r\n return false;\r\n }\r\n return n1.type === n2.type && n1.key === n2.key;\r\n}\r\nlet vnodeArgsTransformer;\r\n/**\r\n * Internal API for registering an arguments transform for createVNode\r\n * used for creating stubs in the test-utils\r\n * It is *internal* but needs to be exposed for test-utils to pick up proper\r\n * typings\r\n */\r\nfunction transformVNodeArgs(transformer) {\r\n vnodeArgsTransformer = transformer;\r\n}\r\nconst createVNodeWithArgsTransform = (...args) => {\r\n return _createVNode(...(vnodeArgsTransformer\r\n ? vnodeArgsTransformer(args, currentRenderingInstance)\r\n : args));\r\n};\r\nconst InternalObjectKey = `__vInternal`;\r\nconst normalizeKey = ({ key }) => key != null ? key : null;\r\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\r\n return (ref != null\r\n ? Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(ref) || Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(ref) || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(ref)\r\n ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }\r\n : ref\r\n : null);\r\n};\r\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {\r\n const vnode = {\r\n __v_isVNode: true,\r\n __v_skip: true,\r\n type,\r\n props,\r\n key: props && normalizeKey(props),\r\n ref: props && normalizeRef(props),\r\n scopeId: currentScopeId,\r\n slotScopeIds: null,\r\n children,\r\n component: null,\r\n suspense: null,\r\n ssContent: null,\r\n ssFallback: null,\r\n dirs: null,\r\n transition: null,\r\n el: null,\r\n anchor: null,\r\n target: null,\r\n targetAnchor: null,\r\n staticCount: 0,\r\n shapeFlag,\r\n patchFlag,\r\n dynamicProps,\r\n dynamicChildren: null,\r\n appContext: null\r\n };\r\n if (needFullChildrenNormalization) {\r\n normalizeChildren(vnode, children);\r\n // normalize suspense children\r\n if (shapeFlag & 128 /* SUSPENSE */) {\r\n type.normalize(vnode);\r\n }\r\n }\r\n else if (children) {\r\n // compiled element vnode - if children is passed, only possible types are\r\n // string or Array.\r\n vnode.shapeFlag |= Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(children)\r\n ? 8 /* TEXT_CHILDREN */\r\n : 16 /* ARRAY_CHILDREN */;\r\n }\r\n // validate key\r\n if (( true) && vnode.key !== vnode.key) {\r\n warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\r\n }\r\n // track vnode for block tree\r\n if (isBlockTreeEnabled > 0 &&\r\n // avoid a block node from tracking itself\r\n !isBlockNode &&\r\n // has current parent block\r\n currentBlock &&\r\n // presence of a patch flag indicates this node needs patching on updates.\r\n // component nodes also should always be patched, because even if the\r\n // component doesn't need to update, it needs to persist the instance on to\r\n // the next vnode so that it can be properly unmounted later.\r\n (vnode.patchFlag > 0 || shapeFlag & 6 /* COMPONENT */) &&\r\n // the EVENTS flag is only for hydration and if it is the only flag, the\r\n // vnode should not be considered dynamic due to handler caching.\r\n vnode.patchFlag !== 32 /* HYDRATE_EVENTS */) {\r\n currentBlock.push(vnode);\r\n }\r\n return vnode;\r\n}\r\nconst createVNode = (( true) ? createVNodeWithArgsTransform : undefined);\r\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\r\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\r\n if (( true) && !type) {\r\n warn(`Invalid vnode type when creating vnode: ${type}.`);\r\n }\r\n type = Comment;\r\n }\r\n if (isVNode(type)) {\r\n // createVNode receiving an existing vnode. This happens in cases like\r\n // <component :is=\"vnode\"/>\r\n // #2078 make sure to merge refs during the clone instead of overwriting it\r\n const cloned = cloneVNode(type, props, true /* mergeRef: true */);\r\n if (children) {\r\n normalizeChildren(cloned, children);\r\n }\r\n return cloned;\r\n }\r\n // class component normalization.\r\n if (isClassComponent(type)) {\r\n type = type.__vccOpts;\r\n }\r\n // class & style normalization.\r\n if (props) {\r\n // for reactive or proxy objects, we need to clone it to enable mutation.\r\n props = guardReactiveProps(props);\r\n let { class: klass, style } = props;\r\n if (klass && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(klass)) {\r\n props.class = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"normalizeClass\"])(klass);\r\n }\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(style)) {\r\n // reactive state objects need to be cloned since they are likely to be\r\n // mutated\r\n if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isProxy\"])(style) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(style)) {\r\n style = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, style);\r\n }\r\n props.style = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"normalizeStyle\"])(style);\r\n }\r\n }\r\n // encode the vnode type information into a bitmap\r\n const shapeFlag = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(type)\r\n ? 1 /* ELEMENT */\r\n : isSuspense(type)\r\n ? 128 /* SUSPENSE */\r\n : isTeleport(type)\r\n ? 64 /* TELEPORT */\r\n : Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(type)\r\n ? 4 /* STATEFUL_COMPONENT */\r\n : Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(type)\r\n ? 2 /* FUNCTIONAL_COMPONENT */\r\n : 0;\r\n if (( true) && shapeFlag & 4 /* STATEFUL_COMPONENT */ && Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isProxy\"])(type)) {\r\n type = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(type);\r\n warn(`Vue received a Component which was made a reactive object. This can ` +\r\n `lead to unnecessary performance overhead, and should be avoided by ` +\r\n `marking the component with \\`markRaw\\` or using \\`shallowRef\\` ` +\r\n `instead of \\`ref\\`.`, `\\nComponent that was made reactive: `, type);\r\n }\r\n return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\r\n}\r\nfunction guardReactiveProps(props) {\r\n if (!props)\r\n return null;\r\n return Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isProxy\"])(props) || InternalObjectKey in props\r\n ? Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, props)\r\n : props;\r\n}\r\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\r\n // This is intentionally NOT using spread or extend to avoid the runtime\r\n // key enumeration cost.\r\n const { props, ref, patchFlag, children } = vnode;\r\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\r\n const cloned = {\r\n __v_isVNode: true,\r\n __v_skip: true,\r\n type: vnode.type,\r\n props: mergedProps,\r\n key: mergedProps && normalizeKey(mergedProps),\r\n ref: extraProps && extraProps.ref\r\n ? // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\r\n // if the vnode itself already has a ref, cloneVNode will need to merge\r\n // the refs so the single vnode can be set on multiple refs\r\n mergeRef && ref\r\n ? Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ref)\r\n ? ref.concat(normalizeRef(extraProps))\r\n : [ref, normalizeRef(extraProps)]\r\n : normalizeRef(extraProps)\r\n : ref,\r\n scopeId: vnode.scopeId,\r\n slotScopeIds: vnode.slotScopeIds,\r\n children: ( true) && patchFlag === -1 /* HOISTED */ && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(children)\r\n ? children.map(deepCloneVNode)\r\n : children,\r\n target: vnode.target,\r\n targetAnchor: vnode.targetAnchor,\r\n staticCount: vnode.staticCount,\r\n shapeFlag: vnode.shapeFlag,\r\n // if the vnode is cloned with extra props, we can no longer assume its\r\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\r\n // note: preserve flag for fragments since they use the flag for children\r\n // fast paths only.\r\n patchFlag: extraProps && vnode.type !== Fragment\r\n ? patchFlag === -1 // hoisted node\r\n ? 16 /* FULL_PROPS */\r\n : patchFlag | 16 /* FULL_PROPS */\r\n : patchFlag,\r\n dynamicProps: vnode.dynamicProps,\r\n dynamicChildren: vnode.dynamicChildren,\r\n appContext: vnode.appContext,\r\n dirs: vnode.dirs,\r\n transition: vnode.transition,\r\n // These should technically only be non-null on mounted VNodes. However,\r\n // they *should* be copied for kept-alive vnodes. So we just always copy\r\n // them since them being non-null during a mount doesn't affect the logic as\r\n // they will simply be overwritten.\r\n component: vnode.component,\r\n suspense: vnode.suspense,\r\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\r\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\r\n el: vnode.el,\r\n anchor: vnode.anchor\r\n };\r\n return cloned;\r\n}\r\n/**\r\n * Dev only, for HMR of hoisted vnodes reused in v-for\r\n * https://github.com/vitejs/vite/issues/2022\r\n */\r\nfunction deepCloneVNode(vnode) {\r\n const cloned = cloneVNode(vnode);\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(vnode.children)) {\r\n cloned.children = vnode.children.map(deepCloneVNode);\r\n }\r\n return cloned;\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction createTextVNode(text = ' ', flag = 0) {\r\n return createVNode(Text, null, text, flag);\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction createStaticVNode(content, numberOfNodes) {\r\n // A static vnode can contain multiple stringified elements, and the number\r\n // of elements is necessary for hydration.\r\n const vnode = createVNode(Static, null, content);\r\n vnode.staticCount = numberOfNodes;\r\n return vnode;\r\n}\r\n/**\r\n * @private\r\n */\r\nfunction createCommentVNode(text = '', \r\n// when used as the v-else branch, the comment node must be created as a\r\n// block to ensure correct updates.\r\nasBlock = false) {\r\n return asBlock\r\n ? (openBlock(), createBlock(Comment, null, text))\r\n : createVNode(Comment, null, text);\r\n}\r\nfunction normalizeVNode(child) {\r\n if (child == null || typeof child === 'boolean') {\r\n // empty placeholder\r\n return createVNode(Comment);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(child)) {\r\n // fragment\r\n return createVNode(Fragment, null, \r\n // #3666, avoid reference pollution when reusing vnode\r\n child.slice());\r\n }\r\n else if (typeof child === 'object') {\r\n // already vnode, this should be the most common since compiled templates\r\n // always produce all-vnode children arrays\r\n return cloneIfMounted(child);\r\n }\r\n else {\r\n // strings and numbers\r\n return createVNode(Text, null, String(child));\r\n }\r\n}\r\n// optimized normalization for template-compiled render fns\r\nfunction cloneIfMounted(child) {\r\n return child.el === null || child.memo ? child : cloneVNode(child);\r\n}\r\nfunction normalizeChildren(vnode, children) {\r\n let type = 0;\r\n const { shapeFlag } = vnode;\r\n if (children == null) {\r\n children = null;\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(children)) {\r\n type = 16 /* ARRAY_CHILDREN */;\r\n }\r\n else if (typeof children === 'object') {\r\n if (shapeFlag & (1 /* ELEMENT */ | 64 /* TELEPORT */)) {\r\n // Normalize slot to plain children for plain element and Teleport\r\n const slot = children.default;\r\n if (slot) {\r\n // _c marker is added by withCtx() indicating this is a compiled slot\r\n slot._c && (slot._d = false);\r\n normalizeChildren(vnode, slot());\r\n slot._c && (slot._d = true);\r\n }\r\n return;\r\n }\r\n else {\r\n type = 32 /* SLOTS_CHILDREN */;\r\n const slotFlag = children._;\r\n if (!slotFlag && !(InternalObjectKey in children)) {\r\n children._ctx = currentRenderingInstance;\r\n }\r\n else if (slotFlag === 3 /* FORWARDED */ && currentRenderingInstance) {\r\n // a child component receives forwarded slots from the parent.\r\n // its slot type is determined by its parent's slot type.\r\n if (currentRenderingInstance.slots._ === 1 /* STABLE */) {\r\n children._ = 1 /* STABLE */;\r\n }\r\n else {\r\n children._ = 2 /* DYNAMIC */;\r\n vnode.patchFlag |= 1024 /* DYNAMIC_SLOTS */;\r\n }\r\n }\r\n }\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(children)) {\r\n children = { default: children, _ctx: currentRenderingInstance };\r\n type = 32 /* SLOTS_CHILDREN */;\r\n }\r\n else {\r\n children = String(children);\r\n // force teleport children to array so it can be moved around\r\n if (shapeFlag & 64 /* TELEPORT */) {\r\n type = 16 /* ARRAY_CHILDREN */;\r\n children = [createTextVNode(children)];\r\n }\r\n else {\r\n type = 8 /* TEXT_CHILDREN */;\r\n }\r\n }\r\n vnode.children = children;\r\n vnode.shapeFlag |= type;\r\n}\r\nfunction mergeProps(...args) {\r\n const ret = {};\r\n for (let i = 0; i < args.length; i++) {\r\n const toMerge = args[i];\r\n for (const key in toMerge) {\r\n if (key === 'class') {\r\n if (ret.class !== toMerge.class) {\r\n ret.class = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"normalizeClass\"])([ret.class, toMerge.class]);\r\n }\r\n }\r\n else if (key === 'style') {\r\n ret.style = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"normalizeStyle\"])([ret.style, toMerge.style]);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isOn\"])(key)) {\r\n const existing = ret[key];\r\n const incoming = toMerge[key];\r\n if (incoming &&\r\n existing !== incoming &&\r\n !(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(existing) && existing.includes(incoming))) {\r\n ret[key] = existing\r\n ? [].concat(existing, incoming)\r\n : incoming;\r\n }\r\n }\r\n else if (key !== '') {\r\n ret[key] = toMerge[key];\r\n }\r\n }\r\n }\r\n return ret;\r\n}\r\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\r\n callWithAsyncErrorHandling(hook, instance, 7 /* VNODE_HOOK */, [\r\n vnode,\r\n prevVNode\r\n ]);\r\n}\n\n/**\r\n * Actual implementation\r\n */\r\nfunction renderList(source, renderItem, cache, index) {\r\n let ret;\r\n const cached = (cache && cache[index]);\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(source) || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\r\n ret = new Array(source.length);\r\n for (let i = 0, l = source.length; i < l; i++) {\r\n ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);\r\n }\r\n }\r\n else if (typeof source === 'number') {\r\n if (( true) && !Number.isInteger(source)) {\r\n warn(`The v-for range expect an integer value but got ${source}.`);\r\n return [];\r\n }\r\n ret = new Array(source);\r\n for (let i = 0; i < source; i++) {\r\n ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);\r\n }\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(source)) {\r\n if (source[Symbol.iterator]) {\r\n ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));\r\n }\r\n else {\r\n const keys = Object.keys(source);\r\n ret = new Array(keys.length);\r\n for (let i = 0, l = keys.length; i < l; i++) {\r\n const key = keys[i];\r\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\r\n }\r\n }\r\n }\r\n else {\r\n ret = [];\r\n }\r\n if (cache) {\r\n cache[index] = ret;\r\n }\r\n return ret;\r\n}\n\n/**\r\n * Compiler runtime helper for creating dynamic slots object\r\n * @private\r\n */\r\nfunction createSlots(slots, dynamicSlots) {\r\n for (let i = 0; i < dynamicSlots.length; i++) {\r\n const slot = dynamicSlots[i];\r\n // array of dynamic slot generated by <template v-for=\"...\" #[...]>\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(slot)) {\r\n for (let j = 0; j < slot.length; j++) {\r\n slots[slot[j].name] = slot[j].fn;\r\n }\r\n }\r\n else if (slot) {\r\n // conditional single slot generated by <template v-if=\"...\" #foo>\r\n slots[slot.name] = slot.fn;\r\n }\r\n }\r\n return slots;\r\n}\n\n/**\r\n * Compiler runtime helper for rendering `<slot/>`\r\n * @private\r\n */\r\nfunction renderSlot(slots, name, props = {}, \r\n// this is not a user-facing function, so the fallback is always generated by\r\n// the compiler and guaranteed to be a function returning an array\r\nfallback, noSlotted) {\r\n if (currentRenderingInstance.isCE) {\r\n return createVNode('slot', name === 'default' ? null : { name }, fallback && fallback());\r\n }\r\n let slot = slots[name];\r\n if (( true) && slot && slot.length > 1) {\r\n warn(`SSR-optimized slot function detected in a non-SSR-optimized render ` +\r\n `function. You need to mark this component with $dynamic-slots in the ` +\r\n `parent template.`);\r\n slot = () => [];\r\n }\r\n // a compiled slot disables block tracking by default to avoid manual\r\n // invocation interfering with template-based block tracking, but in\r\n // `renderSlot` we can be sure that it's template-based so we can force\r\n // enable it.\r\n if (slot && slot._c) {\r\n slot._d = false;\r\n }\r\n openBlock();\r\n const validSlotContent = slot && ensureValidVNode(slot(props));\r\n const rendered = createBlock(Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* STABLE */\r\n ? 64 /* STABLE_FRAGMENT */\r\n : -2 /* BAIL */);\r\n if (!noSlotted && rendered.scopeId) {\r\n rendered.slotScopeIds = [rendered.scopeId + '-s'];\r\n }\r\n if (slot && slot._c) {\r\n slot._d = true;\r\n }\r\n return rendered;\r\n}\r\nfunction ensureValidVNode(vnodes) {\r\n return vnodes.some(child => {\r\n if (!isVNode(child))\r\n return true;\r\n if (child.type === Comment)\r\n return false;\r\n if (child.type === Fragment &&\r\n !ensureValidVNode(child.children))\r\n return false;\r\n return true;\r\n })\r\n ? vnodes\r\n : null;\r\n}\n\n/**\r\n * For prefixing keys in v-on=\"obj\" with \"on\"\r\n * @private\r\n */\r\nfunction toHandlers(obj) {\r\n const ret = {};\r\n if (( true) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(obj)) {\r\n warn(`v-on with no argument expects an object value.`);\r\n return ret;\r\n }\r\n for (const key in obj) {\r\n ret[Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toHandlerKey\"])(key)] = obj[key];\r\n }\r\n return ret;\r\n}\n\n/**\r\n * #2437 In Vue 3, functional components do not have a public instance proxy but\r\n * they exist in the internal parent chain. For code that relies on traversing\r\n * public $parent chains, skip functional ones and go to the parent instead.\r\n */\r\nconst getPublicInstance = (i) => {\r\n if (!i)\r\n return null;\r\n if (isStatefulComponent(i))\r\n return getExposeProxy(i) || i.proxy;\r\n return getPublicInstance(i.parent);\r\n};\r\nconst publicPropertiesMap = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(Object.create(null), {\r\n $: i => i,\r\n $el: i => i.vnode.el,\r\n $data: i => i.data,\r\n $props: i => (( true) ? Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"])(i.props) : undefined),\r\n $attrs: i => (( true) ? Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"])(i.attrs) : undefined),\r\n $slots: i => (( true) ? Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"])(i.slots) : undefined),\r\n $refs: i => (( true) ? Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"])(i.refs) : undefined),\r\n $parent: i => getPublicInstance(i.parent),\r\n $root: i => getPublicInstance(i.root),\r\n $emit: i => i.emit,\r\n $options: i => ( true ? resolveMergedOptions(i) : undefined),\r\n $forceUpdate: i => () => queueJob(i.update),\r\n $nextTick: i => nextTick.bind(i.proxy),\r\n $watch: i => ( true ? instanceWatch.bind(i) : undefined)\r\n});\r\nconst PublicInstanceProxyHandlers = {\r\n get({ _: instance }, key) {\r\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\r\n // for internal formatters to know that this is a Vue instance\r\n if (( true) && key === '__isVue') {\r\n return true;\r\n }\r\n // prioritize <script setup> bindings during dev.\r\n // this allows even properties that start with _ or $ to be used - so that\r\n // it aligns with the production behavior where the render fn is inlined and\r\n // indeed has access to all declared variables.\r\n if (( true) &&\r\n setupState !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] &&\r\n setupState.__isScriptSetup &&\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(setupState, key)) {\r\n return setupState[key];\r\n }\r\n // data / props / ctx\r\n // This getter gets called for every property access on the render context\r\n // during render and is a major hotspot. The most expensive part of this\r\n // is the multiple hasOwn() calls. It's much faster to do a simple property\r\n // access on a plain object, so we use an accessCache object (with null\r\n // prototype) to memoize what access type a key corresponds to.\r\n let normalizedProps;\r\n if (key[0] !== '$') {\r\n const n = accessCache[key];\r\n if (n !== undefined) {\r\n switch (n) {\r\n case 1 /* SETUP */:\r\n return setupState[key];\r\n case 2 /* DATA */:\r\n return data[key];\r\n case 4 /* CONTEXT */:\r\n return ctx[key];\r\n case 3 /* PROPS */:\r\n return props[key];\r\n // default: just fallthrough\r\n }\r\n }\r\n else if (setupState !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(setupState, key)) {\r\n accessCache[key] = 1 /* SETUP */;\r\n return setupState[key];\r\n }\r\n else if (data !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(data, key)) {\r\n accessCache[key] = 2 /* DATA */;\r\n return data[key];\r\n }\r\n else if (\r\n // only cache other properties when instance has declared (thus stable)\r\n // props\r\n (normalizedProps = instance.propsOptions[0]) &&\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(normalizedProps, key)) {\r\n accessCache[key] = 3 /* PROPS */;\r\n return props[key];\r\n }\r\n else if (ctx !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(ctx, key)) {\r\n accessCache[key] = 4 /* CONTEXT */;\r\n return ctx[key];\r\n }\r\n else if ( false || shouldCacheAccess) {\r\n accessCache[key] = 0 /* OTHER */;\r\n }\r\n }\r\n const publicGetter = publicPropertiesMap[key];\r\n let cssModule, globalProperties;\r\n // public $xxx properties\r\n if (publicGetter) {\r\n if (key === '$attrs') {\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"track\"])(instance, \"get\" /* GET */, key);\r\n ( true) && markAttrsAccessed();\r\n }\r\n return publicGetter(instance);\r\n }\r\n else if (\r\n // css module (injected by vue-loader)\r\n (cssModule = type.__cssModules) &&\r\n (cssModule = cssModule[key])) {\r\n return cssModule;\r\n }\r\n else if (ctx !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(ctx, key)) {\r\n // user may set custom properties to `this` that start with `$`\r\n accessCache[key] = 4 /* CONTEXT */;\r\n return ctx[key];\r\n }\r\n else if (\r\n // global properties\r\n ((globalProperties = appContext.config.globalProperties),\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(globalProperties, key))) {\r\n {\r\n return globalProperties[key];\r\n }\r\n }\r\n else if (( true) &&\r\n currentRenderingInstance &&\r\n (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(key) ||\r\n // #1091 avoid internal isRef/isVNode checks on component instance leading\r\n // to infinite warning loop\r\n key.indexOf('__v') !== 0)) {\r\n if (data !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] &&\r\n (key[0] === '$' || key[0] === '_') &&\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(data, key)) {\r\n warn(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +\r\n `character (\"$\" or \"_\") and is not proxied on the render context.`);\r\n }\r\n else if (instance === currentRenderingInstance) {\r\n warn(`Property ${JSON.stringify(key)} was accessed during render ` +\r\n `but is not defined on instance.`);\r\n }\r\n }\r\n },\r\n set({ _: instance }, key, value) {\r\n const { data, setupState, ctx } = instance;\r\n if (setupState !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(setupState, key)) {\r\n setupState[key] = value;\r\n return true;\r\n }\r\n else if (data !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(data, key)) {\r\n data[key] = value;\r\n return true;\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(instance.props, key)) {\r\n ( true) &&\r\n warn(`Attempting to mutate prop \"${key}\". Props are readonly.`, instance);\r\n return false;\r\n }\r\n if (key[0] === '$' && key.slice(1) in instance) {\r\n ( true) &&\r\n warn(`Attempting to mutate public property \"${key}\". ` +\r\n `Properties starting with $ are reserved and readonly.`, instance);\r\n return false;\r\n }\r\n else {\r\n if (( true) && key in instance.appContext.config.globalProperties) {\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n value\r\n });\r\n }\r\n else {\r\n ctx[key] = value;\r\n }\r\n }\r\n return true;\r\n },\r\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\r\n let normalizedProps;\r\n return (!!accessCache[key] ||\r\n (data !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(data, key)) ||\r\n (setupState !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"] && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(setupState, key)) ||\r\n ((normalizedProps = propsOptions[0]) && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(normalizedProps, key)) ||\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(ctx, key) ||\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(publicPropertiesMap, key) ||\r\n Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hasOwn\"])(appContext.config.globalProperties, key));\r\n },\r\n defineProperty(target, key, descriptor) {\r\n if (descriptor.get != null) {\r\n this.set(target, key, descriptor.get(), null);\r\n }\r\n else if (descriptor.value != null) {\r\n this.set(target, key, descriptor.value, null);\r\n }\r\n return Reflect.defineProperty(target, key, descriptor);\r\n }\r\n};\r\nif (true) {\r\n PublicInstanceProxyHandlers.ownKeys = (target) => {\r\n warn(`Avoid app logic that relies on enumerating keys on a component instance. ` +\r\n `The keys will be empty in production mode to avoid performance overhead.`);\r\n return Reflect.ownKeys(target);\r\n };\r\n}\r\nconst RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, PublicInstanceProxyHandlers, {\r\n get(target, key) {\r\n // fast path for unscopables when using `with` block\r\n if (key === Symbol.unscopables) {\r\n return;\r\n }\r\n return PublicInstanceProxyHandlers.get(target, key, target);\r\n },\r\n has(_, key) {\r\n const has = key[0] !== '_' && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isGloballyWhitelisted\"])(key);\r\n if (( true) && !has && PublicInstanceProxyHandlers.has(_, key)) {\r\n warn(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);\r\n }\r\n return has;\r\n }\r\n});\r\n// dev only\r\n// In dev mode, the proxy target exposes the same properties as seen on `this`\r\n// for easier console inspection. In prod mode it will be an empty object so\r\n// these properties definitions can be skipped.\r\nfunction createDevRenderContext(instance) {\r\n const target = {};\r\n // expose internal instance for proxy handlers\r\n Object.defineProperty(target, `_`, {\r\n configurable: true,\r\n enumerable: false,\r\n get: () => instance\r\n });\r\n // expose public properties\r\n Object.keys(publicPropertiesMap).forEach(key => {\r\n Object.defineProperty(target, key, {\r\n configurable: true,\r\n enumerable: false,\r\n get: () => publicPropertiesMap[key](instance),\r\n // intercepted by the proxy so no need for implementation,\r\n // but needed to prevent set errors\r\n set: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"]\r\n });\r\n });\r\n return target;\r\n}\r\n// dev only\r\nfunction exposePropsOnRenderContext(instance) {\r\n const { ctx, propsOptions: [propsOptions] } = instance;\r\n if (propsOptions) {\r\n Object.keys(propsOptions).forEach(key => {\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => instance.props[key],\r\n set: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"]\r\n });\r\n });\r\n }\r\n}\r\n// dev only\r\nfunction exposeSetupStateOnRenderContext(instance) {\r\n const { ctx, setupState } = instance;\r\n Object.keys(Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(setupState)).forEach(key => {\r\n if (!setupState.__isScriptSetup) {\r\n if (key[0] === '$' || key[0] === '_') {\r\n warn(`setup() return property ${JSON.stringify(key)} should not start with \"$\" or \"_\" ` +\r\n `which are reserved prefixes for Vue internals.`);\r\n return;\r\n }\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => setupState[key],\r\n set: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"]\r\n });\r\n }\r\n });\r\n}\n\nconst emptyAppContext = createAppContext();\r\nlet uid$1 = 0;\r\nfunction createComponentInstance(vnode, parent, suspense) {\r\n const type = vnode.type;\r\n // inherit parent app context - or - if root, adopt from root vnode\r\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\r\n const instance = {\r\n uid: uid$1++,\r\n vnode,\r\n type,\r\n parent,\r\n appContext,\r\n root: null,\r\n next: null,\r\n subTree: null,\r\n effect: null,\r\n update: null,\r\n scope: new _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"EffectScope\"](true /* detached */),\r\n render: null,\r\n proxy: null,\r\n exposed: null,\r\n exposeProxy: null,\r\n withProxy: null,\r\n provides: parent ? parent.provides : Object.create(appContext.provides),\r\n accessCache: null,\r\n renderCache: [],\r\n // local resovled assets\r\n components: null,\r\n directives: null,\r\n // resolved props and emits options\r\n propsOptions: normalizePropsOptions(type, appContext),\r\n emitsOptions: normalizeEmitsOptions(type, appContext),\r\n // emit\r\n emit: null,\r\n emitted: null,\r\n // props default value\r\n propsDefaults: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"],\r\n // inheritAttrs\r\n inheritAttrs: type.inheritAttrs,\r\n // state\r\n ctx: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"],\r\n data: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"],\r\n props: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"],\r\n attrs: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"],\r\n slots: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"],\r\n refs: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"],\r\n setupState: _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"],\r\n setupContext: null,\r\n // suspense related\r\n suspense,\r\n suspenseId: suspense ? suspense.pendingId : 0,\r\n asyncDep: null,\r\n asyncResolved: false,\r\n // lifecycle hooks\r\n // not using enums here because it results in computed properties\r\n isMounted: false,\r\n isUnmounted: false,\r\n isDeactivated: false,\r\n bc: null,\r\n c: null,\r\n bm: null,\r\n m: null,\r\n bu: null,\r\n u: null,\r\n um: null,\r\n bum: null,\r\n da: null,\r\n a: null,\r\n rtg: null,\r\n rtc: null,\r\n ec: null,\r\n sp: null\r\n };\r\n if ((true)) {\r\n instance.ctx = createDevRenderContext(instance);\r\n }\r\n else {}\r\n instance.root = parent ? parent.root : instance;\r\n instance.emit = emit$1.bind(null, instance);\r\n // apply custom element special handling\r\n if (vnode.ce) {\r\n vnode.ce(instance);\r\n }\r\n return instance;\r\n}\r\nlet currentInstance = null;\r\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\r\nconst setCurrentInstance = (instance) => {\r\n currentInstance = instance;\r\n instance.scope.on();\r\n};\r\nconst unsetCurrentInstance = () => {\r\n currentInstance && currentInstance.scope.off();\r\n currentInstance = null;\r\n};\r\nconst isBuiltInTag = /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"makeMap\"])('slot,component');\r\nfunction validateComponentName(name, config) {\r\n const appIsNativeTag = config.isNativeTag || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NO\"];\r\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\r\n warn('Do not use built-in or reserved HTML elements as component id: ' + name);\r\n }\r\n}\r\nfunction isStatefulComponent(instance) {\r\n return instance.vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */;\r\n}\r\nlet isInSSRComponentSetup = false;\r\nfunction setupComponent(instance, isSSR = false) {\r\n isInSSRComponentSetup = isSSR;\r\n const { props, children } = instance.vnode;\r\n const isStateful = isStatefulComponent(instance);\r\n initProps(instance, props, isStateful, isSSR);\r\n initSlots(instance, children);\r\n const setupResult = isStateful\r\n ? setupStatefulComponent(instance, isSSR)\r\n : undefined;\r\n isInSSRComponentSetup = false;\r\n return setupResult;\r\n}\r\nfunction setupStatefulComponent(instance, isSSR) {\r\n const Component = instance.type;\r\n if ((true)) {\r\n if (Component.name) {\r\n validateComponentName(Component.name, instance.appContext.config);\r\n }\r\n if (Component.components) {\r\n const names = Object.keys(Component.components);\r\n for (let i = 0; i < names.length; i++) {\r\n validateComponentName(names[i], instance.appContext.config);\r\n }\r\n }\r\n if (Component.directives) {\r\n const names = Object.keys(Component.directives);\r\n for (let i = 0; i < names.length; i++) {\r\n validateDirectiveName(names[i]);\r\n }\r\n }\r\n if (Component.compilerOptions && isRuntimeOnly()) {\r\n warn(`\"compilerOptions\" is only supported when using a build of Vue that ` +\r\n `includes the runtime compiler. Since you are using a runtime-only ` +\r\n `build, the options should be passed via your build tool config instead.`);\r\n }\r\n }\r\n // 0. create render proxy property access cache\r\n instance.accessCache = Object.create(null);\r\n // 1. create public instance / render proxy\r\n // also mark it raw so it's never observed\r\n instance.proxy = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"markRaw\"])(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\r\n if ((true)) {\r\n exposePropsOnRenderContext(instance);\r\n }\r\n // 2. call setup()\r\n const { setup } = Component;\r\n if (setup) {\r\n const setupContext = (instance.setupContext =\r\n setup.length > 1 ? createSetupContext(instance) : null);\r\n setCurrentInstance(instance);\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"pauseTracking\"])();\r\n const setupResult = callWithErrorHandling(setup, instance, 0 /* SETUP_FUNCTION */, [( true) ? Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"])(instance.props) : undefined, setupContext]);\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"resetTracking\"])();\r\n unsetCurrentInstance();\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isPromise\"])(setupResult)) {\r\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\r\n if (isSSR) {\r\n // return the promise so server-renderer can wait on it\r\n return setupResult\r\n .then((resolvedResult) => {\r\n handleSetupResult(instance, resolvedResult, isSSR);\r\n })\r\n .catch(e => {\r\n handleError(e, instance, 0 /* SETUP_FUNCTION */);\r\n });\r\n }\r\n else {\r\n // async setup returned Promise.\r\n // bail here and wait for re-entry.\r\n instance.asyncDep = setupResult;\r\n }\r\n }\r\n else {\r\n handleSetupResult(instance, setupResult, isSSR);\r\n }\r\n }\r\n else {\r\n finishComponentSetup(instance, isSSR);\r\n }\r\n}\r\nfunction handleSetupResult(instance, setupResult, isSSR) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(setupResult)) {\r\n // setup returned an inline render function\r\n if (instance.type.__ssrInlineRender) {\r\n // when the function's name is `ssrRender` (compiled by SFC inline mode),\r\n // set it as ssrRender instead.\r\n instance.ssrRender = setupResult;\r\n }\r\n else {\r\n instance.render = setupResult;\r\n }\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(setupResult)) {\r\n if (( true) && isVNode(setupResult)) {\r\n warn(`setup() should not return VNodes directly - ` +\r\n `return a render function instead.`);\r\n }\r\n // setup returned bindings.\r\n // assuming a render function compiled from template is present.\r\n if (true) {\r\n instance.devtoolsRawSetupState = setupResult;\r\n }\r\n instance.setupState = Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"proxyRefs\"])(setupResult);\r\n if ((true)) {\r\n exposeSetupStateOnRenderContext(instance);\r\n }\r\n }\r\n else if (( true) && setupResult !== undefined) {\r\n warn(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);\r\n }\r\n finishComponentSetup(instance, isSSR);\r\n}\r\nlet compile;\r\nlet installWithProxy;\r\n/**\r\n * For runtime-dom to register the compiler.\r\n * Note the exported method uses any to avoid d.ts relying on the compiler types.\r\n */\r\nfunction registerRuntimeCompiler(_compile) {\r\n compile = _compile;\r\n installWithProxy = i => {\r\n if (i.render._rc) {\r\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\r\n }\r\n };\r\n}\r\n// dev only\r\nconst isRuntimeOnly = () => !compile;\r\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\r\n const Component = instance.type;\r\n // template / render function normalization\r\n // could be already set when returned from setup()\r\n if (!instance.render) {\r\n // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation\r\n // is done by server-renderer\r\n if (!isSSR && compile && !Component.render) {\r\n const template = Component.template;\r\n if (template) {\r\n if ((true)) {\r\n startMeasure(instance, `compile`);\r\n }\r\n const { isCustomElement, compilerOptions } = instance.appContext.config;\r\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\r\n const finalCompilerOptions = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({\r\n isCustomElement,\r\n delimiters\r\n }, compilerOptions), componentCompilerOptions);\r\n Component.render = compile(template, finalCompilerOptions);\r\n if ((true)) {\r\n endMeasure(instance, `compile`);\r\n }\r\n }\r\n }\r\n instance.render = (Component.render || _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"]);\r\n // for runtime-compiled render functions using `with` blocks, the render\r\n // proxy used needs a different `has` handler which is more performant and\r\n // also only allows a whitelist of globals to fallthrough.\r\n if (installWithProxy) {\r\n installWithProxy(instance);\r\n }\r\n }\r\n // support for 2.x options\r\n if (true) {\r\n setCurrentInstance(instance);\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"pauseTracking\"])();\r\n applyOptions(instance);\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"resetTracking\"])();\r\n unsetCurrentInstance();\r\n }\r\n // warn missing template/render\r\n // the runtime compilation of template in SSR is done by server-render\r\n if (( true) && !Component.render && instance.render === _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"NOOP\"] && !isSSR) {\r\n /* istanbul ignore if */\r\n if (!compile && Component.template) {\r\n warn(`Component provided template option but ` +\r\n `runtime compilation is not supported in this build of Vue.` +\r\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\r\n ) /* should not happen */);\r\n }\r\n else {\r\n warn(`Component is missing template or render function.`);\r\n }\r\n }\r\n}\r\nfunction createAttrsProxy(instance) {\r\n return new Proxy(instance.attrs, ( true)\r\n ? {\r\n get(target, key) {\r\n markAttrsAccessed();\r\n Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"track\"])(instance, \"get\" /* GET */, '$attrs');\r\n return target[key];\r\n },\r\n set() {\r\n warn(`setupContext.attrs is readonly.`);\r\n return false;\r\n },\r\n deleteProperty() {\r\n warn(`setupContext.attrs is readonly.`);\r\n return false;\r\n }\r\n }\r\n : undefined);\r\n}\r\nfunction createSetupContext(instance) {\r\n const expose = exposed => {\r\n if (( true) && instance.exposed) {\r\n warn(`expose() should be called only once per setup().`);\r\n }\r\n instance.exposed = exposed || {};\r\n };\r\n let attrs;\r\n if ((true)) {\r\n // We use getters in dev in case libs like test-utils overwrite instance\r\n // properties (overwrites should not be done in prod)\r\n return Object.freeze({\r\n get attrs() {\r\n return attrs || (attrs = createAttrsProxy(instance));\r\n },\r\n get slots() {\r\n return Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"])(instance.slots);\r\n },\r\n get emit() {\r\n return (event, ...args) => instance.emit(event, ...args);\r\n },\r\n expose\r\n });\r\n }\r\n else {}\r\n}\r\nfunction getExposeProxy(instance) {\r\n if (instance.exposed) {\r\n return (instance.exposeProxy ||\r\n (instance.exposeProxy = new Proxy(Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"proxyRefs\"])(Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"markRaw\"])(instance.exposed)), {\r\n get(target, key) {\r\n if (key in target) {\r\n return target[key];\r\n }\r\n else if (key in publicPropertiesMap) {\r\n return publicPropertiesMap[key](instance);\r\n }\r\n }\r\n })));\r\n }\r\n}\r\nconst classifyRE = /(?:^|[-_])(\\w)/g;\r\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\r\nfunction getComponentName(Component) {\r\n return Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(Component)\r\n ? Component.displayName || Component.name\r\n : Component.name;\r\n}\r\n/* istanbul ignore next */\r\nfunction formatComponentName(instance, Component, isRoot = false) {\r\n let name = getComponentName(Component);\r\n if (!name && Component.__file) {\r\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\r\n if (match) {\r\n name = match[1];\r\n }\r\n }\r\n if (!name && instance && instance.parent) {\r\n // try to infer the name based on reverse resolution\r\n const inferFromRegistry = (registry) => {\r\n for (const key in registry) {\r\n if (registry[key] === Component) {\r\n return key;\r\n }\r\n }\r\n };\r\n name =\r\n inferFromRegistry(instance.components ||\r\n instance.parent.type.components) || inferFromRegistry(instance.appContext.components);\r\n }\r\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\r\n}\r\nfunction isClassComponent(value) {\r\n return Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(value) && '__vccOpts' in value;\r\n}\n\nconst computed = ((getterOrOptions, debugOptions) => {\r\n // @ts-ignore\r\n return Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(getterOrOptions, debugOptions, isInSSRComponentSetup);\r\n});\n\n// dev only\r\nconst warnRuntimeUsage = (method) => warn(`${method}() is a compiler-hint helper that is only usable inside ` +\r\n `<script setup> of a single file component. Its arguments should be ` +\r\n `compiled away and passing it at runtime has no effect.`);\r\n// implementation\r\nfunction defineProps() {\r\n if ((true)) {\r\n warnRuntimeUsage(`defineProps`);\r\n }\r\n return null;\r\n}\r\n// implementation\r\nfunction defineEmits() {\r\n if ((true)) {\r\n warnRuntimeUsage(`defineEmits`);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Vue `<script setup>` compiler macro for declaring a component's exposed\r\n * instance properties when it is accessed by a parent component via template\r\n * refs.\r\n *\r\n * `<script setup>` components are closed by default - i.e. variables inside\r\n * the `<script setup>` scope is not exposed to parent unless explicitly exposed\r\n * via `defineExpose`.\r\n *\r\n * This is only usable inside `<script setup>`, is compiled away in the\r\n * output and should **not** be actually called at runtime.\r\n */\r\nfunction defineExpose(exposed) {\r\n if ((true)) {\r\n warnRuntimeUsage(`defineExpose`);\r\n }\r\n}\r\n/**\r\n * Vue `<script setup>` compiler macro for providing props default values when\r\n * using type-based `defineProps` declaration.\r\n *\r\n * Example usage:\r\n * ```ts\r\n * withDefaults(defineProps<{\r\n * size?: number\r\n * labels?: string[]\r\n * }>(), {\r\n * size: 3,\r\n * labels: () => ['default label']\r\n * })\r\n * ```\r\n *\r\n * This is only usable inside `<script setup>`, is compiled away in the output\r\n * and should **not** be actually called at runtime.\r\n */\r\nfunction withDefaults(props, defaults) {\r\n if ((true)) {\r\n warnRuntimeUsage(`withDefaults`);\r\n }\r\n return null;\r\n}\r\nfunction useSlots() {\r\n return getContext().slots;\r\n}\r\nfunction useAttrs() {\r\n return getContext().attrs;\r\n}\r\nfunction getContext() {\r\n const i = getCurrentInstance();\r\n if (( true) && !i) {\r\n warn(`useContext() called without active instance.`);\r\n }\r\n return i.setupContext || (i.setupContext = createSetupContext(i));\r\n}\r\n/**\r\n * Runtime helper for merging default declarations. Imported by compiled code\r\n * only.\r\n * @internal\r\n */\r\nfunction mergeDefaults(raw, defaults) {\r\n const props = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(raw)\r\n ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})\r\n : raw;\r\n for (const key in defaults) {\r\n const opt = props[key];\r\n if (opt) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(opt) || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(opt)) {\r\n props[key] = { type: opt, default: defaults[key] };\r\n }\r\n else {\r\n opt.default = defaults[key];\r\n }\r\n }\r\n else if (opt === null) {\r\n props[key] = { default: defaults[key] };\r\n }\r\n else if ((true)) {\r\n warn(`props default key \"${key}\" has no corresponding declaration.`);\r\n }\r\n }\r\n return props;\r\n}\r\n/**\r\n * Used to create a proxy for the rest element when destructuring props with\r\n * defineProps().\r\n * @internal\r\n */\r\nfunction createPropsRestProxy(props, excludedKeys) {\r\n const ret = {};\r\n for (const key in props) {\r\n if (!excludedKeys.includes(key)) {\r\n Object.defineProperty(ret, key, {\r\n enumerable: true,\r\n get: () => props[key]\r\n });\r\n }\r\n }\r\n return ret;\r\n}\r\n/**\r\n * `<script setup>` helper for persisting the current instance context over\r\n * async/await flows.\r\n *\r\n * `@vue/compiler-sfc` converts the following:\r\n *\r\n * ```ts\r\n * const x = await foo()\r\n * ```\r\n *\r\n * into:\r\n *\r\n * ```ts\r\n * let __temp, __restore\r\n * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)\r\n * ```\r\n * @internal\r\n */\r\nfunction withAsyncContext(getAwaitable) {\r\n const ctx = getCurrentInstance();\r\n if (( true) && !ctx) {\r\n warn(`withAsyncContext called without active current instance. ` +\r\n `This is likely a bug.`);\r\n }\r\n let awaitable = getAwaitable();\r\n unsetCurrentInstance();\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isPromise\"])(awaitable)) {\r\n awaitable = awaitable.catch(e => {\r\n setCurrentInstance(ctx);\r\n throw e;\r\n });\r\n }\r\n return [awaitable, () => setCurrentInstance(ctx)];\r\n}\n\n// Actual implementation\r\nfunction h(type, propsOrChildren, children) {\r\n const l = arguments.length;\r\n if (l === 2) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(propsOrChildren) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(propsOrChildren)) {\r\n // single vnode without props\r\n if (isVNode(propsOrChildren)) {\r\n return createVNode(type, null, [propsOrChildren]);\r\n }\r\n // props without children\r\n return createVNode(type, propsOrChildren);\r\n }\r\n else {\r\n // omit props\r\n return createVNode(type, null, propsOrChildren);\r\n }\r\n }\r\n else {\r\n if (l > 3) {\r\n children = Array.prototype.slice.call(arguments, 2);\r\n }\r\n else if (l === 3 && isVNode(children)) {\r\n children = [children];\r\n }\r\n return createVNode(type, propsOrChildren, children);\r\n }\r\n}\n\nconst ssrContextKey = Symbol(( true) ? `ssrContext` : undefined);\r\nconst useSSRContext = () => {\r\n {\r\n const ctx = inject(ssrContextKey);\r\n if (!ctx) {\r\n warn(`Server rendering context not provided. Make sure to only call ` +\r\n `useSSRContext() conditionally in the server build.`);\r\n }\r\n return ctx;\r\n }\r\n};\n\nfunction isShallow(value) {\r\n return !!(value && value[\"__v_isShallow\" /* IS_SHALLOW */]);\r\n}\n\nfunction initCustomFormatter() {\r\n /* eslint-disable no-restricted-globals */\r\n if ( false || typeof window === 'undefined') {\r\n return;\r\n }\r\n const vueStyle = { style: 'color:#3ba776' };\r\n const numberStyle = { style: 'color:#0b1bc9' };\r\n const stringStyle = { style: 'color:#b62e24' };\r\n const keywordStyle = { style: 'color:#9d288c' };\r\n // custom formatter for Chrome\r\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\r\n const formatter = {\r\n header(obj) {\r\n // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(obj)) {\r\n return null;\r\n }\r\n if (obj.__isVue) {\r\n return ['div', vueStyle, `VueInstance`];\r\n }\r\n else if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(obj)) {\r\n return [\r\n 'div',\r\n {},\r\n ['span', vueStyle, genRefFlag(obj)],\r\n '<',\r\n formatValue(obj.value),\r\n `>`\r\n ];\r\n }\r\n else if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isReactive\"])(obj)) {\r\n return [\r\n 'div',\r\n {},\r\n ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],\r\n '<',\r\n formatValue(obj),\r\n `>${Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isReadonly\"])(obj) ? ` (readonly)` : ``}`\r\n ];\r\n }\r\n else if (Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"isReadonly\"])(obj)) {\r\n return [\r\n 'div',\r\n {},\r\n ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],\r\n '<',\r\n formatValue(obj),\r\n '>'\r\n ];\r\n }\r\n return null;\r\n },\r\n hasBody(obj) {\r\n return obj && obj.__isVue;\r\n },\r\n body(obj) {\r\n if (obj && obj.__isVue) {\r\n return [\r\n 'div',\r\n {},\r\n ...formatInstance(obj.$)\r\n ];\r\n }\r\n }\r\n };\r\n function formatInstance(instance) {\r\n const blocks = [];\r\n if (instance.type.props && instance.props) {\r\n blocks.push(createInstanceBlock('props', Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(instance.props)));\r\n }\r\n if (instance.setupState !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"]) {\r\n blocks.push(createInstanceBlock('setup', instance.setupState));\r\n }\r\n if (instance.data !== _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"]) {\r\n blocks.push(createInstanceBlock('data', Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(instance.data)));\r\n }\r\n const computed = extractKeys(instance, 'computed');\r\n if (computed) {\r\n blocks.push(createInstanceBlock('computed', computed));\r\n }\r\n const injected = extractKeys(instance, 'inject');\r\n if (injected) {\r\n blocks.push(createInstanceBlock('injected', injected));\r\n }\r\n blocks.push([\r\n 'div',\r\n {},\r\n [\r\n 'span',\r\n {\r\n style: keywordStyle.style + ';opacity:0.66'\r\n },\r\n '$ (internal): '\r\n ],\r\n ['object', { object: instance }]\r\n ]);\r\n return blocks;\r\n }\r\n function createInstanceBlock(type, target) {\r\n target = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, target);\r\n if (!Object.keys(target).length) {\r\n return ['span', {}];\r\n }\r\n return [\r\n 'div',\r\n { style: 'line-height:1.25em;margin-bottom:0.6em' },\r\n [\r\n 'div',\r\n {\r\n style: 'color:#476582'\r\n },\r\n type\r\n ],\r\n [\r\n 'div',\r\n {\r\n style: 'padding-left:1.25em'\r\n },\r\n ...Object.keys(target).map(key => {\r\n return [\r\n 'div',\r\n {},\r\n ['span', keywordStyle, key + ': '],\r\n formatValue(target[key], false)\r\n ];\r\n })\r\n ]\r\n ];\r\n }\r\n function formatValue(v, asRaw = true) {\r\n if (typeof v === 'number') {\r\n return ['span', numberStyle, v];\r\n }\r\n else if (typeof v === 'string') {\r\n return ['span', stringStyle, JSON.stringify(v)];\r\n }\r\n else if (typeof v === 'boolean') {\r\n return ['span', keywordStyle, v];\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(v)) {\r\n return ['object', { object: asRaw ? Object(_vue_reactivity__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(v) : v }];\r\n }\r\n else {\r\n return ['span', stringStyle, String(v)];\r\n }\r\n }\r\n function extractKeys(instance, type) {\r\n const Comp = instance.type;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(Comp)) {\r\n return;\r\n }\r\n const extracted = {};\r\n for (const key in instance.ctx) {\r\n if (isKeyOfType(Comp, key, type)) {\r\n extracted[key] = instance.ctx[key];\r\n }\r\n }\r\n return extracted;\r\n }\r\n function isKeyOfType(Comp, key, type) {\r\n const opts = Comp[type];\r\n if ((Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(opts) && opts.includes(key)) ||\r\n (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(opts) && key in opts)) {\r\n return true;\r\n }\r\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\r\n return true;\r\n }\r\n if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {\r\n return true;\r\n }\r\n }\r\n function genRefFlag(v) {\r\n if (isShallow(v)) {\r\n return `ShallowRef`;\r\n }\r\n if (v.effect) {\r\n return `ComputedRef`;\r\n }\r\n return `Ref`;\r\n }\r\n if (window.devtoolsFormatters) {\r\n window.devtoolsFormatters.push(formatter);\r\n }\r\n else {\r\n window.devtoolsFormatters = [formatter];\r\n }\r\n}\n\nfunction withMemo(memo, render, cache, index) {\r\n const cached = cache[index];\r\n if (cached && isMemoSame(cached, memo)) {\r\n return cached;\r\n }\r\n const ret = render();\r\n // shallow clone\r\n ret.memo = memo.slice();\r\n return (cache[index] = ret);\r\n}\r\nfunction isMemoSame(cached, memo) {\r\n const prev = cached.memo;\r\n if (prev.length != memo.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < prev.length; i++) {\r\n if (prev[i] !== memo[i]) {\r\n return false;\r\n }\r\n }\r\n // make sure to let parent block track it when returning cached\r\n if (isBlockTreeEnabled > 0 && currentBlock) {\r\n currentBlock.push(cached);\r\n }\r\n return true;\r\n}\n\n// Core API ------------------------------------------------------------------\r\nconst version = \"3.2.31\";\r\nconst _ssrUtils = {\r\n createComponentInstance,\r\n setupComponent,\r\n renderComponentRoot,\r\n setCurrentRenderingInstance,\r\n isVNode,\r\n normalizeVNode\r\n};\r\n/**\r\n * SSR utils for \\@vue/server-renderer. Only exposed in cjs builds.\r\n * @internal\r\n */\r\nconst ssrUtils = (_ssrUtils );\r\n/**\r\n * @internal only exposed in compat builds\r\n */\r\nconst resolveFilter = null;\r\n/**\r\n * @internal only exposed in compat builds.\r\n */\r\nconst compatUtils = (null);\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9ydW50aW1lLWNvcmUvZGlzdC9ydW50aW1lLWNvcmUuZXNtLWJ1bmRsZXIuanM/NWM0MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrUjtBQUMwQztBQUN5RjtBQUNuUjs7QUFFbEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFFQUFhO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsUUFBUSxZQUFZLDBDQUEwQztBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLElBQUk7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUkscUVBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQjtBQUNqRCwrQ0FBK0MsYUFBYTtBQUM1RDtBQUNBLHlCQUF5Qix5REFBeUQ7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNERBQVE7QUFDaEI7QUFDQSxpQ0FBaUMsSUFBSSxHQUFHLE1BQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsSUFBSSxHQUFHLE1BQU07QUFDOUM7QUFDQSxhQUFhLDZEQUFLO0FBQ2xCLGdDQUFnQyw2REFBSztBQUNyQyxpQ0FBaUMsSUFBSTtBQUNyQztBQUNBLGFBQWEsOERBQVU7QUFDdkIsbUJBQW1CLElBQUksS0FBSyxpQkFBaUIsV0FBVyxRQUFRO0FBQ2hFO0FBQ0E7QUFDQSxnQkFBZ0IsNkRBQUs7QUFDckIsaUNBQWlDLElBQUk7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOERBQVU7QUFDbEI7QUFDQSxtQkFBbUIsNkRBQVM7QUFDNUI7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsS0FBcUMsNkJBQTZCLFNBQUk7QUFDakc7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLCtCQUErQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwrQkFBK0IsS0FBSyxPQUFPO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBR0o7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywyREFBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQSwrQkFBK0IsMENBQTBDO0FBQ3pFLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDRDQUE0QztBQUM1RSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEtBQXFDO0FBQ3hEO0FBQ0EsVUFBVSxTQUFJO0FBQ2Q7QUFDQSw0QkFBNEIsMkJBQTJCO0FBQ3ZEO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Qsa0NBQWtDLGNBQWMsUUFBUTtBQUM5RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLElBQXFDO0FBQzFDLElBQUksaUVBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSwwREFBTTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGNBQWM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQyxxREFBUztBQUNuRCxTQUFTLElBQXFDO0FBQzlDLGVBQWUsNkNBQTZDO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxnRUFBWTtBQUNuRCxxREFBcUQsTUFBTTtBQUMzRCx1REFBdUQsZ0VBQVksUUFBUTtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw4REFBVTtBQUM5QjtBQUNBO0FBQ0EsNEZBQTRGLE1BQU07QUFDbEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsK0NBQStDO0FBQy9FLGVBQWUsZUFBZSwwQkFBMEIscURBQVM7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isb0RBQVE7QUFDdkM7QUFDQTtBQUNBLFFBQVEsSUFBZ0U7QUFDeEU7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQSw4Q0FBOEMsZ0VBQVk7QUFDMUQsMkJBQTJCLGVBQWU7QUFDMUMsbUJBQW1CLDZDQUE2QyxzQ0FBc0MsTUFBTTtBQUM1RztBQUNBO0FBQ0EsNENBQTRDLDZEQUFTLFFBQVEsZ0JBQWdCLE1BQU07QUFDbkY7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGdFQUFZO0FBQ25EO0FBQ0EsNkJBQTZCLGdFQUFZLENBQUMsNERBQVE7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGdFQUFZLENBQUMsNkRBQVM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBbUIsS0FBSyw4REFBVTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwREFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFNO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixjQUFjO0FBQ3BDO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0EsWUFBWSwwREFBTTtBQUNsQixRQUFRLDBEQUFNLFVBQVUsNkRBQVM7QUFDakMsUUFBUSwwREFBTTtBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsOEpBQThKO0FBQ3pLO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsS0FBcUM7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLFNBQXNCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFlBQVk7QUFDM0I7QUFDQTtBQUNBLDhDQUE4QywyREFBZTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLEtBQXFDO0FBQzNEO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxPQUFPO0FBQzNEO0FBQ0Esd0JBQXdCLHdEQUFJO0FBQzVCO0FBQ0EsNkJBQTZCLG1FQUFlO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsc0JBQXNCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsc0JBQXNCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Qsd0RBQUk7QUFDdEQsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtRUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxzREFBc0Q7QUFDakUsV0FBVyxzREFBc0Q7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix5QkFBeUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsZ0JBQWdCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFVO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlLGdCQUFnQixFQUFFO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvR0FBb0csNEJBQTRCLGdCQUFnQixFQUFFO0FBQ2xKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlEQUF5RDtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQWlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4Q0FBOEMscUJBQXFCLEVBQUU7QUFDaEYsb0JBQW9CLDREQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxRkFBcUY7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHlEQUF5RDtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsUUFBUTtBQUMvQixxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsc0JBQXNCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFVO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQU87QUFDZjtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLDhEQUFVO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCwrQkFBK0IsWUFBWTtBQUMzQztBQUNBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxLQUFxQztBQUN4RSxxQ0FBcUMsR0FBRyxnQkFBZ0I7QUFDeEQsVUFBVSxTQUFpQjtBQUMzQjtBQUNBO0FBQ0EsbUNBQW1DLEtBQXFDO0FBQ3hFLHFDQUFxQyxHQUFHLGdCQUFnQjtBQUN4RCxVQUFVLFNBQWlCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDLE1BQU0sOERBQVU7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDZDQUE2QyxHQUFHLHFEQUFTO0FBQ3ZGLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNkRBQUs7QUFDYjtBQUNBLHVCQUF1QixpRUFBVztBQUNsQztBQUNBLGFBQWEsa0VBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyREFBTztBQUNwQjtBQUNBLG1DQUFtQywwREFBVTtBQUM3QztBQUNBLGdCQUFnQiw2REFBSztBQUNyQjtBQUNBO0FBQ0EscUJBQXFCLGtFQUFVO0FBQy9CO0FBQ0E7QUFDQSxxQkFBcUIsOERBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0EsU0FBUztBQUNUO0FBQ0EsYUFBYSw4REFBVTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZ0RBQUk7QUFDckIsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0RBQUk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4Qyw4REFBVTtBQUN4RCxzQkFBc0IsOERBQVU7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsOERBQWM7QUFDckMsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw0REFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4REFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNEJBQTRCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsNERBQVE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDZEQUFLO0FBQ2I7QUFDQTtBQUNBLGFBQWEsMkRBQU87QUFDcEIsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQSxhQUFhLHlEQUFLLFdBQVcseURBQUs7QUFDbEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLGFBQWEsaUVBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxrQkFBa0IsUUFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw2REFBSztBQUNsQyxtQkFBbUIsT0FBTztBQUMxQjtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0EsbURBQW1ELEtBQUs7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsOE1BQThNO0FBQ3pOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLDhEQUFVLGFBQWEscUNBQXFDO0FBQ3ZFOztBQUVBO0FBQ0E7QUFDQSxRQUFRLDhEQUFVO0FBQ2xCLGtCQUFrQjtBQUNsQjtBQUNBLFdBQVc7QUFDWCw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDLGNBQWMsNERBQVEsV0FBVyw4REFBVTtBQUN6RyxnRkFBZ0YsS0FBSztBQUNyRjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSwyQkFBMkIsMkRBQUc7QUFDOUIsMEJBQTBCLDJEQUFHO0FBQzdCLDRCQUE0QiwyREFBRztBQUMvQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRkFBaUYsUUFBUTtBQUN6RjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxnQ0FBZ0MsU0FBUyx1QkFBdUIsRUFBRTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsa0JBQWtCLFFBQVE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFnRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFlBQVksc0NBQXNDLGdCQUFnQixFQUFFLEVBQUU7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtFQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0JBQWdCLElBQWdFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrRUFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0JBQWdCLElBQWdFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTLDRCQUE0QjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsb0JBQW9CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix3QkFBd0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFPO0FBQ2Y7QUFDQTtBQUNBLGFBQWEsNERBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFNO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUVBQWE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHFFQUFhO0FBQzdCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25ELHdCQUF3QixnRUFBWTtBQUNwQyxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLEtBQUssYUFBYSxJQUFJLDBCQUEwQixXQUFXO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQyxzQ0FBc0MsS0FBcUMsK0JBQStCLFNBQUk7QUFDOUcsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhEQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EscUJBQXFCLEVBRUo7QUFDakIscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixJQUFxQztBQUMzRCxnQ0FBZ0MsSUFBSSxjQUFjLHFCQUFxQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQyxNQUFNLDhEQUFVO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQyxLQUFLLDZEQUFTO0FBQ2hFLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDREQUFRO0FBQ3JCLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBLDRCQUE0QixnRUFBUTtBQUNwQyxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxnREFBSTtBQUNyQyx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsOERBQVU7QUFDbEM7QUFDQSxrQkFBa0IsOERBQVU7QUFDNUI7QUFDQSxzQkFBc0IsZ0RBQUk7QUFDMUIsaUJBQWlCLEtBQXFDLGFBQWEsZ0RBQUk7QUFDdkUsMkNBQTJDLElBQUk7QUFDL0M7QUFDQSx5QkFBeUIsOERBQVUsU0FBUyw4REFBVTtBQUN0RDtBQUNBLG1CQUFtQixLQUFxQztBQUN4RDtBQUNBLDJFQUEyRSxJQUFJO0FBQy9FO0FBQ0Esc0JBQXNCLFNBQUk7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsaUJBQWlCLElBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDhEQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQU87QUFDZjtBQUNBLHNFQUFzRTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsZ0RBQUk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSxnREFBSTtBQUM5RSxRQUFRLDJEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNERBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFLO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQsK0NBQStDLElBQUk7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwyREFBTztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNERBQVE7QUFDaEI7QUFDQSxZQUFZLDhEQUFVO0FBQ3RCO0FBQ0E7QUFDQSxrQkFBa0IsSUFBcUM7QUFDdkQsNERBQTRELElBQUk7QUFDaEU7QUFDQTtBQUNBLGFBQWEsOERBQVU7QUFDdkI7QUFDQTtBQUNBLGFBQWEsNERBQVE7QUFDckIsWUFBWSwyREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsOERBQVU7QUFDdEM7QUFDQTtBQUNBLGdCQUFnQiw4REFBVTtBQUMxQjtBQUNBO0FBQ0Esc0JBQXNCLElBQXFDO0FBQzNELGdFQUFnRSxZQUFZO0FBQzVFO0FBQ0E7QUFDQTtBQUNBLGNBQWMsSUFBcUM7QUFDbkQsdUNBQXVDLElBQUk7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQ0FBa0M7QUFDN0MsV0FBVyxxREFBcUQsd0JBQXdCLEVBQUU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQ0FBa0M7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMERBQU0sRUFBRSw4REFBVSxpQ0FBaUMsOERBQVU7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBTztBQUNmO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwREFBTSxDQUFDLDBEQUFNO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwREFBTTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBRztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUMsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyx1RUFBZTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx1QkFBdUIsWUFBWSxFQUFFO0FBQ2hELDRCQUE0Qiw2REFBSztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEtBQXFDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMEJBQTBCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwwREFBTTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsNERBQVE7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwwREFBTTtBQUN4QjtBQUNBO0FBQ0EsaUNBQWlDLDZEQUFTLG1CQUFtQiwwREFBTTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwREFBTTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLCtEQUFPO0FBQ2Y7QUFDQSxTQUFTLElBQXFDO0FBQzlDLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isa0VBQWM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDBEQUFNLHNCQUFzQiw0REFBUTtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDZEQUFLO0FBQ3JDLDRDQUE0QyxxREFBUztBQUNyRCx1QkFBdUIseUJBQXlCO0FBQ2hEO0FBQ0EscUdBQXFHLDBEQUFNO0FBQzNHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDBEQUFNO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyw4REFBVTtBQUNuRCx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLDZEQUFTO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQW1CLEtBQUssOERBQVU7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsWUFBWSwwREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHFEQUFTO0FBQ2pDLGVBQWUscURBQVM7QUFDeEI7QUFDQSxRQUFRLDJEQUFPO0FBQ2YsdUJBQXVCLGdCQUFnQjtBQUN2QyxpQkFBaUIsS0FBcUMsTUFBTSw0REFBUTtBQUNwRTtBQUNBO0FBQ0Esa0NBQWtDLDREQUFRO0FBQzFDO0FBQ0EsNENBQTRDLHFEQUFTO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQyxNQUFNLDREQUFRO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyw0REFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkRBQU8sU0FBUyw4REFBVSxTQUFTLFlBQVk7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsMERBQU07QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsSUFBcUM7QUFDbkQsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFPO0FBQ2Y7QUFDQTtBQUNBLGFBQWEsOERBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw2REFBSztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELDBEQUFNLG9CQUFvQiwwREFBTSxXQUFXLDZEQUFTO0FBQ3pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNEJBQTRCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwyREFBTztBQUM3QjtBQUNBO0FBQ0EsdUJBQXVCLDhCQUE4QjtBQUNyRCxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDJEQUFPO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw0REFBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELEtBQUs7QUFDcEUscUJBQXFCLGtCQUFrQixzREFBVSxjQUFjO0FBQy9EO0FBQ0EseUJBQXlCLDZEQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxjQUFjO0FBQ2hEO0FBQ0Esd0JBQXdCLGFBQWE7QUFDckM7QUFDQTtBQUNBLGlDQUFpQyxjQUFjO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsTUFBTTtBQUN6QjtBQUNBO0FBQ0Esa0JBQWtCLGNBQWM7QUFDaEM7QUFDQTtBQUNBLGtCQUFrQixNQUFNO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQywyREFBTztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsMEJBQTBCLElBQUk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFDUztBQUN6QixpRUFBaUUsSUFBSTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDZEQUFLO0FBQ2xDO0FBQ0EsWUFBWSx1REFBRztBQUNmO0FBQ0E7QUFDQSwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUc7QUFDUDtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCO0FBQ0EsbUNBQW1DLHFEQUFTO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQSxnQkFBZ0IsMERBQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDBEQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNFQUFrQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQywwQ0FBMEMscURBQVM7QUFDbkQsWUFBWSw4REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxRUFBYTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFFQUFhO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw4Q0FBRTtBQUMzQjtBQUNBLGdDQUFnQztBQUNoQyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0Esc0JBQXNCO0FBQ3RCLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsNERBQVE7QUFDMUMsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFEO0FBQ0EsbUNBQW1DLDhEQUFVO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw4REFBVTtBQUNuQztBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxvQkFBb0IsSUFBbUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLElBQXFDO0FBQ25FO0FBQ0EsK0NBQStDLFdBQVc7QUFDMUQ7QUFDQTtBQUNBLHFCQUFxQixFQUVKO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQsdUNBQXVDLEtBQUs7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQsdUNBQXVDLEtBQUs7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLElBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLElBQWdFO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsSUFBZ0U7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRDtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELG9FQUFvRSxZQUFZO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQU87QUFDZix5REFBeUQsMkRBQU87QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsbUJBQW1CO0FBQzlCLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxxREFBUyxtQkFBbUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSw0REFBUTtBQUNwQjtBQUNBLGdCQUFnQiwwREFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNkRBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4REFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNERBQVE7QUFDbEMsdUJBQXVCLDZEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkRBQU8sY0FBYywwREFBTTtBQUNuRDtBQUNBO0FBQ0EsNkJBQTZCLDJEQUFPO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDBEQUFNO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw2REFBSztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRCxnRUFBZ0UsV0FBVztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCx3REFBd0QsV0FBVztBQUNuRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtQ0FBbUMsb0VBQW9FLEVBQUU7QUFDcEg7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsdUJBQXVCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQ7QUFDQSwrQ0FBK0MsMEJBQTBCO0FBQ3pFLCtDQUErQywrQkFBK0I7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx1QkFBdUI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0QsOERBQThELFlBQVk7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwQ0FBMEM7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBOEU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsd0RBQUksVUFBVSxrRUFBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQsZ0VBQWdFLFdBQVc7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELG9FQUFvRSxXQUFXO0FBQy9FLHlDQUF5QyxlQUFlO0FBQ3hELHlDQUF5QyxlQUFlO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELDREQUE0RCxnQ0FBZ0M7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFDQUFxQztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBSyxHQUFHLGFBQWE7QUFDOUM7QUFDQSxRQUFRLElBQWdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsS0FBSyxHQUFHLGFBQWE7QUFDckQ7QUFDQTtBQUNBLHlCQUF5Qiw2Q0FBNkMsSUFBSSxLQUFLO0FBQy9FO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBZ0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxLQUF3QyxFQUFFLEVBRzdDO0FBQ0wsUUFBUSxLQUEwQyxFQUFFLEVBRy9DO0FBQ0wsU0FBUyxLQUFxQztBQUM5QztBQUNBLG9DQUFvQyxpQkFBaUIsR0FBRyxvQkFBb0IsR0FBRyxxQkFBcUI7QUFDcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLG9CQUFvQjtBQUM5QjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUVBQWE7QUFDaEM7QUFDQSxRQUFRLElBQWdFO0FBQ3hFO0FBQ0E7QUFDQSxXQUFXLG9UQUFvVCxnREFBSSwwRUFBMEU7QUFDN1ksMkVBQTJFO0FBQzNFO0FBQ0EscUpBQXFKLEtBQXFDO0FBQzFMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx1QkFBdUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRCwwREFBMEQsWUFBWTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixhQUFhO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsYUFBYTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBc0Q7QUFDckUsWUFBWSxLQUdnQixnQkFBZ0IsRUFNbkM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxrRUFBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHlCQUF5QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxQkFBcUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbUNBQW1DO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBUztBQUM5QyxxQ0FBcUMscURBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQywwQkFBMEI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3QkFBd0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrRUFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHFEQUFTO0FBQ3RDO0FBQ0EseUJBQXlCLGtFQUFjO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUVBQWlFO0FBQzlFLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixLQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLElBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsWUFBWTtBQUNuQyx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtFQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLElBQXFDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixJQUFxQztBQUNsRTtBQUNBO0FBQ0EsNkJBQTZCLElBQXFDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixJQUFxQztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsSUFBcUM7QUFDOUQ7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsSUFBcUM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLElBQWdFO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2QkFBNkI7QUFDbEQ7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrRUFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUFnRTtBQUNwRjtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsOERBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRDtBQUNBLHVCQUF1QixrRUFBYztBQUNyQztBQUNBO0FBQ0EsdUJBQXVCLGtFQUFjO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFFQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHVCQUF1QjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFEQUFTO0FBQzVCLG1CQUFtQixxREFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekI7QUFDQTtBQUNBLHdCQUF3QixTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGlCQUFpQjtBQUN4QztBQUNBLHdCQUF3QixTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxTQUFTO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IscURBQVM7QUFDM0I7QUFDQTtBQUNBLHFDQUFxQyxRQUFRO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw0Q0FBNEM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxQkFBcUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnQ0FBZ0M7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwRUFBMEU7QUFDekY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxlQUFlLCtCQUErQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQSxlQUFlLGtDQUFrQztBQUNqRDtBQUNBO0FBQ0EsWUFBWSxrRUFBYztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFnRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxQkFBcUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFPLFNBQVMsMkRBQU87QUFDL0IsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw0REFBUTtBQUNoQjtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQsNEVBQTRFLGVBQWU7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsNkNBQTZDLGVBQWU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG9FQUFvRSxtREFBbUQsRUFBRTtBQUN4STtBQUNBLGFBQWEsdUNBQXVDO0FBQ3BEO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsS0FBcUM7QUFDL0U7QUFDQSxrQkFBa0IsU0FBYztBQUNoQyw2Q0FBNkMsS0FBcUM7QUFDbEY7QUFDQSxrQkFBa0IsU0FBYztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsS0FBcUM7QUFDM0Qsc0VBQXNFLGNBQWM7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixJQUFxQztBQUNuRSwrRUFBK0UsY0FBYztBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsK0RBQStELGtCQUFrQixxQkFBcUIsRUFBRTtBQUN4RyxlQUFlLDJEQUEyRDtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixxQkFBcUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsS0FBSyxTQUFTLFdBQVc7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlDQUF5QztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpR0FBaUcsS0FBSyx5Q0FBeUMsRUFBRTtBQUNqSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNERBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw0REFBUTtBQUN6QyxpQ0FBaUMsOERBQVUsQ0FBQyw0REFBUTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msa0JBQWtCLElBQUksS0FBSyxFQUFFLE1BQU07QUFDekU7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRCx1QkFBdUIsOERBQVUsb0JBQW9CO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0REFBUTtBQUM3QixxQkFBcUIsOERBQVUsQ0FBQyw0REFBUTtBQUN4Qzs7QUFFQSx5QkFBeUIsS0FBcUMsaUJBQWlCLFNBQVM7QUFDeEYscUJBQXFCLEtBQXFDLGFBQWEsU0FBUztBQUNoRix3QkFBd0IsS0FBcUMsZ0JBQWdCLFNBQVM7QUFDdEYsdUJBQXVCLEtBQXFDLGVBQWUsU0FBUztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQscURBQVM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixNQUFNO0FBQzdCLHVCQUF1Qix3QkFBd0I7QUFDL0M7QUFDQSxVQUFVLDREQUFRLFNBQVMsNkRBQUssU0FBUyw4REFBVTtBQUNuRCxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixLQUFxQyxtQ0FBbUMsU0FBWTtBQUMxRztBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCw0REFBNEQsS0FBSztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHNCQUFzQjtBQUNuQyxzQkFBc0IsNERBQVE7QUFDOUIsMEJBQTBCLGtFQUFjO0FBQ3hDO0FBQ0EsWUFBWSw0REFBUTtBQUNwQjtBQUNBO0FBQ0EsZ0JBQWdCLCtEQUFPLFlBQVksMkRBQU87QUFDMUMsd0JBQXdCLDBEQUFNLEdBQUc7QUFDakM7QUFDQSwwQkFBMEIsa0VBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDREQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsNERBQVE7QUFDMUI7QUFDQSxzQkFBc0IsOERBQVU7QUFDaEM7QUFDQTtBQUNBLFNBQVMsS0FBcUMsK0NBQStDLCtEQUFPO0FBQ3BHLGVBQWUsNkRBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLCtEQUFPO0FBQ2xCLFVBQVUsMERBQU0sR0FBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQ0FBa0M7QUFDN0MsMkRBQTJEO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsMkRBQU87QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEtBQXFDLHVDQUF1QywyREFBTztBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyREFBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyREFBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDhEQUFVO0FBQ3ZCLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGtFQUFjO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrRUFBYztBQUMxQztBQUNBLHFCQUFxQix3REFBSTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwyREFBTztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBTyxZQUFZLDREQUFRO0FBQ25DO0FBQ0EsMENBQTBDLE9BQU87QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELG9FQUFvRSxPQUFPO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixZQUFZO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNERBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix5QkFBeUI7QUFDNUM7QUFDQTtBQUNBLFlBQVksMkRBQU87QUFDbkIsMkJBQTJCLGlCQUFpQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxPQUFPO0FBQ3ZFO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsdUJBQXVCLEtBQUssR0FBRztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDLE1BQU0sNERBQVE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdFQUFZO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsMERBQU07QUFDbEM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEtBQXFDLElBQUksdUVBQWUsWUFBWSxTQUFPO0FBQzlGLG1CQUFtQixLQUFxQyxJQUFJLHVFQUFlLFlBQVksU0FBTztBQUM5RixtQkFBbUIsS0FBcUMsSUFBSSx1RUFBZSxZQUFZLFNBQU87QUFDOUYsa0JBQWtCLEtBQXFDLElBQUksdUVBQWUsV0FBVyxTQUFNO0FBQzNGO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixLQUFtQiw2QkFBNkIsU0FBTTtBQUMxRTtBQUNBO0FBQ0Esa0JBQWtCLEtBQW1CLDJCQUEyQixTQUFJO0FBQ3BFLENBQUM7QUFDRDtBQUNBLFNBQVMsY0FBYztBQUN2QixlQUFlLDhEQUE4RDtBQUM3RTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCwyQkFBMkIscURBQVM7QUFDcEM7QUFDQSxZQUFZLDBEQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxxREFBUyxJQUFJLDBEQUFNO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixxREFBUyxJQUFJLDBEQUFNO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDBEQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixxREFBUyxJQUFJLDBEQUFNO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixNQUFvQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDZEQUFLO0FBQ3JCLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIscURBQVMsSUFBSSwwREFBTTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsS0FBcUM7QUFDdkQ7QUFDQSxjQUFjLDREQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixxREFBUztBQUNsQztBQUNBLGdCQUFnQiwwREFBTTtBQUN0QixpQ0FBaUMsb0JBQW9CO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxvQkFBb0I7QUFDckQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFNBQVMsY0FBYztBQUN2QixlQUFlLHdCQUF3QjtBQUN2QywyQkFBMkIscURBQVMsSUFBSSwwREFBTTtBQUM5QztBQUNBO0FBQ0E7QUFDQSwwQkFBMEIscURBQVMsSUFBSSwwREFBTTtBQUM3QztBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMERBQU07QUFDdkIsYUFBYSxLQUFxQztBQUNsRCxtREFBbUQsSUFBSTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELDhEQUE4RCxJQUFJO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxTQUFTLEtBQUssK0RBQStELEVBQUU7QUFDL0U7QUFDQTtBQUNBLHNCQUFzQixxREFBUyxJQUFJLDBEQUFNO0FBQ3pDLDRCQUE0QixxREFBUyxJQUFJLDBEQUFNO0FBQy9DLG9EQUFvRCwwREFBTTtBQUMxRCxZQUFZLDBEQUFNO0FBQ2xCLFlBQVksMERBQU07QUFDbEIsWUFBWSwwREFBTTtBQUNsQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQWlEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSwwREFBTSxHQUFHO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVDQUF1Qyx5RUFBcUI7QUFDNUQsYUFBYSxLQUFxQztBQUNsRCw2QkFBNkIsb0JBQW9CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZ0RBQUk7QUFDckIsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0NBQW9DO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixnREFBSTtBQUN6QixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQkFBa0I7QUFDN0IsZ0JBQWdCLDZEQUFLO0FBQ3JCO0FBQ0E7QUFDQSxnREFBZ0Qsb0JBQW9CO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdEQUFJO0FBQ3pCLGFBQWE7QUFDYjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixxREFBUztBQUNoQztBQUNBO0FBQ0E7QUFDQSxhQUFhLHFEQUFTO0FBQ3RCLGNBQWMscURBQVM7QUFDdkIsZUFBZSxxREFBUztBQUN4QixlQUFlLHFEQUFTO0FBQ3hCLGVBQWUscURBQVM7QUFDeEIsY0FBYyxxREFBUztBQUN2QixvQkFBb0IscURBQVM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBLFNBQVMsRUFFSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQywyREFBTztBQUMxQztBQUNBLGlEQUFpRCw4Q0FBRTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsa0JBQWtCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsa0JBQWtCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsa0JBQWtCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtEQUFPO0FBQzVCLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBYTtBQUNyQiw2RkFBNkYsS0FBcUMsSUFBSSx1RUFBZSxtQkFBbUIsU0FBYztBQUN0TCxRQUFRLHFFQUFhO0FBQ3JCO0FBQ0EsWUFBWSw2REFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOERBQVU7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDREQUFRO0FBQ3JCLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBLDhCQUE4QixpRUFBUztBQUN2QyxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLGNBQWMsS0FBcUM7QUFDbkQsMkRBQTJELG1EQUFtRDtBQUM5RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQSx1QkFBdUIsbUNBQW1DO0FBQzFELHVCQUF1Qix3REFBd0Q7QUFDL0UsNkNBQTZDLDBEQUFNLENBQUMsMERBQU07QUFDMUQ7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxnREFBSTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFnQztBQUN4QztBQUNBLFFBQVEscUVBQWE7QUFDckI7QUFDQSxRQUFRLHFFQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQyw4Q0FBOEMsZ0RBQUk7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsS0FBcUM7QUFDM0U7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDZEQUFLO0FBQ3JCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxTQUtEO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsdUJBQXVCLHVFQUFlO0FBQ3RDLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUyxFQVNKO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsaUVBQVMsQ0FBQywrREFBTztBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhEQUFVO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4REFBVTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxnRUFBVTtBQUNyQixDQUFDOztBQUVEO0FBQ0EsNkNBQTZDLE9BQU87QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJEQUFPO0FBQ3pCLDREQUE0RCxrQkFBa0I7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkRBQU8sU0FBUyw4REFBVTtBQUMxQyw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0Esa0JBQWtCLElBQXFDO0FBQ3ZELHVDQUF1QyxJQUFJO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNkRBQVM7QUFDakI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNERBQVEsc0JBQXNCLDJEQUFPO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhCQUE4QixLQUFxQyxtQkFBbUIsU0FBRTtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVEsTUFBd0M7QUFDaEQ7QUFDQTtBQUNBLHNCQUFzQjtBQUN0Qix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDREQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkRBQUs7QUFDMUI7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsa0VBQVU7QUFDL0I7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0VBQVUsMkJBQTJCO0FBQzdEO0FBQ0E7QUFDQSxxQkFBcUIsa0VBQVU7QUFDL0I7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsNkRBQUs7QUFDMUQ7QUFDQSxvQ0FBb0MscURBQVM7QUFDN0M7QUFDQTtBQUNBLDhCQUE4QixxREFBUztBQUN2QyxvREFBb0QsNkRBQUs7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSx3QkFBd0IsbUJBQW1CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDBEQUFNLEdBQUc7QUFDMUI7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsYUFBYSw0QkFBNEIsc0JBQXNCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDREQUFRO0FBQ3pCLCtCQUErQixpQkFBaUIsNkRBQUssU0FBUztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOERBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyREFBTztBQUNwQixhQUFhLDREQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZzJDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0B2dWUvcnVudGltZS1jb3JlL2Rpc3QvcnVudGltZS1jb3JlLmVzbS1idW5kbGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGF1c2VUcmFja2luZywgcmVzZXRUcmFja2luZywgaXNSZWYsIHRvUmF3LCBpc1NoYWxsb3cgYXMgaXNTaGFsbG93JDEsIGlzUmVhY3RpdmUsIFJlYWN0aXZlRWZmZWN0LCByZWYsIHJlYWN0aXZlLCBzaGFsbG93UmVhY3RpdmUsIHRyaWdnZXIsIGlzUHJveHksIHNoYWxsb3dSZWFkb25seSwgdHJhY2ssIEVmZmVjdFNjb3BlLCBtYXJrUmF3LCBwcm94eVJlZnMsIGNvbXB1dGVkIGFzIGNvbXB1dGVkJDEsIGlzUmVhZG9ubHkgfSBmcm9tICdAdnVlL3JlYWN0aXZpdHknO1xuZXhwb3J0IHsgRWZmZWN0U2NvcGUsIFJlYWN0aXZlRWZmZWN0LCBjdXN0b21SZWYsIGVmZmVjdCwgZWZmZWN0U2NvcGUsIGdldEN1cnJlbnRTY29wZSwgaXNQcm94eSwgaXNSZWFjdGl2ZSwgaXNSZWFkb25seSwgaXNSZWYsIGlzU2hhbGxvdywgbWFya1Jhdywgb25TY29wZURpc3Bvc2UsIHByb3h5UmVmcywgcmVhY3RpdmUsIHJlYWRvbmx5LCByZWYsIHNoYWxsb3dSZWFjdGl2ZSwgc2hhbGxvd1JlYWRvbmx5LCBzaGFsbG93UmVmLCBzdG9wLCB0b1JhdywgdG9SZWYsIHRvUmVmcywgdHJpZ2dlclJlZiwgdW5yZWYgfSBmcm9tICdAdnVlL3JlYWN0aXZpdHknO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzRnVuY3Rpb24sIGlzUHJvbWlzZSwgaXNBcnJheSwgTk9PUCwgZ2V0R2xvYmFsVGhpcywgZXh0ZW5kLCBFTVBUWV9PQkosIHRvSGFuZGxlcktleSwgdG9OdW1iZXIsIGh5cGhlbmF0ZSwgY2FtZWxpemUsIGlzT24sIGhhc093biwgaXNNb2RlbExpc3RlbmVyLCBoYXNDaGFuZ2VkLCByZW1vdmUsIGlzT2JqZWN0LCBpc1NldCwgaXNNYXAsIGlzUGxhaW5PYmplY3QsIGludm9rZUFycmF5Rm5zLCBkZWYsIGlzUmVzZXJ2ZWRQcm9wLCBFTVBUWV9BUlIsIGNhcGl0YWxpemUsIHRvUmF3VHlwZSwgbWFrZU1hcCwgaXNCdWlsdEluRGlyZWN0aXZlLCBOTywgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVN0eWxlLCBpc0dsb2JhbGx5V2hpdGVsaXN0ZWQgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5leHBvcnQgeyBjYW1lbGl6ZSwgY2FwaXRhbGl6ZSwgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVByb3BzLCBub3JtYWxpemVTdHlsZSwgdG9EaXNwbGF5U3RyaW5nLCB0b0hhbmRsZXJLZXkgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IHN0YWNrID0gW107XHJcbmZ1bmN0aW9uIHB1c2hXYXJuaW5nQ29udGV4dCh2bm9kZSkge1xyXG4gICAgc3RhY2sucHVzaCh2bm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gcG9wV2FybmluZ0NvbnRleHQoKSB7XHJcbiAgICBzdGFjay5wb3AoKTtcclxufVxyXG5mdW5jdGlvbiB3YXJuKG1zZywgLi4uYXJncykge1xyXG4gICAgLy8gYXZvaWQgcHJvcHMgZm9ybWF0dGluZyBvciB3YXJuIGhhbmRsZXIgdHJhY2tpbmcgZGVwcyB0aGF0IG1pZ2h0IGJlIG11dGF0ZWRcclxuICAgIC8vIGR1cmluZyBwYXRjaCwgbGVhZGluZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXHJcbiAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IHN0YWNrLmxlbmd0aCA/IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdLmNvbXBvbmVudCA6IG51bGw7XHJcbiAgICBjb25zdCBhcHBXYXJuSGFuZGxlciA9IGluc3RhbmNlICYmIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLndhcm5IYW5kbGVyO1xyXG4gICAgY29uc3QgdHJhY2UgPSBnZXRDb21wb25lbnRUcmFjZSgpO1xyXG4gICAgaWYgKGFwcFdhcm5IYW5kbGVyKSB7XHJcbiAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGFwcFdhcm5IYW5kbGVyLCBpbnN0YW5jZSwgMTEgLyogQVBQX1dBUk5fSEFORExFUiAqLywgW1xyXG4gICAgICAgICAgICBtc2cgKyBhcmdzLmpvaW4oJycpLFxyXG4gICAgICAgICAgICBpbnN0YW5jZSAmJiBpbnN0YW5jZS5wcm94eSxcclxuICAgICAgICAgICAgdHJhY2VcclxuICAgICAgICAgICAgICAgIC5tYXAoKHsgdm5vZGUgfSkgPT4gYGF0IDwke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIHZub2RlLnR5cGUpfT5gKVxyXG4gICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpLFxyXG4gICAgICAgICAgICB0cmFjZVxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2FybkFyZ3MgPSBbYFtWdWUgd2Fybl06ICR7bXNnfWAsIC4uLmFyZ3NdO1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgIGlmICh0cmFjZS5sZW5ndGggJiZcclxuICAgICAgICAgICAgLy8gYXZvaWQgc3BhbW1pbmcgY29uc29sZSBkdXJpbmcgdGVzdHNcclxuICAgICAgICAgICAgIWZhbHNlKSB7XHJcbiAgICAgICAgICAgIHdhcm5BcmdzLnB1c2goYFxcbmAsIC4uLmZvcm1hdFRyYWNlKHRyYWNlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUud2FybiguLi53YXJuQXJncyk7XHJcbiAgICB9XHJcbiAgICByZXNldFRyYWNraW5nKCk7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50VHJhY2UoKSB7XHJcbiAgICBsZXQgY3VycmVudFZOb2RlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoIWN1cnJlbnRWTm9kZSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIC8vIHdlIGNhbid0IGp1c3QgdXNlIHRoZSBzdGFjayBiZWNhdXNlIGl0IHdpbGwgYmUgaW5jb21wbGV0ZSBkdXJpbmcgdXBkYXRlc1xyXG4gICAgLy8gdGhhdCBkaWQgbm90IHN0YXJ0IGZyb20gdGhlIHJvb3QuIFJlLWNvbnN0cnVjdCB0aGUgcGFyZW50IGNoYWluIHVzaW5nXHJcbiAgICAvLyBpbnN0YW5jZSBwYXJlbnQgcG9pbnRlcnMuXHJcbiAgICBjb25zdCBub3JtYWxpemVkU3RhY2sgPSBbXTtcclxuICAgIHdoaWxlIChjdXJyZW50Vk5vZGUpIHtcclxuICAgICAgICBjb25zdCBsYXN0ID0gbm9ybWFsaXplZFN0YWNrWzBdO1xyXG4gICAgICAgIGlmIChsYXN0ICYmIGxhc3Qudm5vZGUgPT09IGN1cnJlbnRWTm9kZSkge1xyXG4gICAgICAgICAgICBsYXN0LnJlY3Vyc2VDb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbm9ybWFsaXplZFN0YWNrLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgdm5vZGU6IGN1cnJlbnRWTm9kZSxcclxuICAgICAgICAgICAgICAgIHJlY3Vyc2VDb3VudDogMFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGFyZW50SW5zdGFuY2UgPSBjdXJyZW50Vk5vZGUuY29tcG9uZW50ICYmIGN1cnJlbnRWTm9kZS5jb21wb25lbnQucGFyZW50O1xyXG4gICAgICAgIGN1cnJlbnRWTm9kZSA9IHBhcmVudEluc3RhbmNlICYmIHBhcmVudEluc3RhbmNlLnZub2RlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRTdGFjaztcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRUcmFjZSh0cmFjZSkge1xyXG4gICAgY29uc3QgbG9ncyA9IFtdO1xyXG4gICAgdHJhY2UuZm9yRWFjaCgoZW50cnksIGkpID0+IHtcclxuICAgICAgICBsb2dzLnB1c2goLi4uKGkgPT09IDAgPyBbXSA6IFtgXFxuYF0pLCAuLi5mb3JtYXRUcmFjZUVudHJ5KGVudHJ5KSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsb2dzO1xyXG59XHJcbmZ1bmN0aW9uIGZvcm1hdFRyYWNlRW50cnkoeyB2bm9kZSwgcmVjdXJzZUNvdW50IH0pIHtcclxuICAgIGNvbnN0IHBvc3RmaXggPSByZWN1cnNlQ291bnQgPiAwID8gYC4uLiAoJHtyZWN1cnNlQ291bnR9IHJlY3Vyc2l2ZSBjYWxscylgIDogYGA7XHJcbiAgICBjb25zdCBpc1Jvb3QgPSB2bm9kZS5jb21wb25lbnQgPyB2bm9kZS5jb21wb25lbnQucGFyZW50ID09IG51bGwgOiBmYWxzZTtcclxuICAgIGNvbnN0IG9wZW4gPSBgIGF0IDwke2Zvcm1hdENvbXBvbmVudE5hbWUodm5vZGUuY29tcG9uZW50LCB2bm9kZS50eXBlLCBpc1Jvb3QpfWA7XHJcbiAgICBjb25zdCBjbG9zZSA9IGA+YCArIHBvc3RmaXg7XHJcbiAgICByZXR1cm4gdm5vZGUucHJvcHNcclxuICAgICAgICA/IFtvcGVuLCAuLi5mb3JtYXRQcm9wcyh2bm9kZS5wcm9wcyksIGNsb3NlXVxyXG4gICAgICAgIDogW29wZW4gKyBjbG9zZV07XHJcbn1cclxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuZnVuY3Rpb24gZm9ybWF0UHJvcHMocHJvcHMpIHtcclxuICAgIGNvbnN0IHJlcyA9IFtdO1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcclxuICAgIGtleXMuc2xpY2UoMCwgMykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIHJlcy5wdXNoKC4uLmZvcm1hdFByb3Aoa2V5LCBwcm9wc1trZXldKSk7XHJcbiAgICB9KTtcclxuICAgIGlmIChrZXlzLmxlbmd0aCA+IDMpIHtcclxuICAgICAgICByZXMucHVzaChgIC4uLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRQcm9wKGtleSwgdmFsdWUsIHJhdykge1xyXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgIHJldHVybiByYXcgPyB2YWx1ZSA6IFtgJHtrZXl9PSR7dmFsdWV9YF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XHJcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHxcclxuICAgICAgICB2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09JHt2YWx1ZX1gXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUmVmKHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlID0gZm9ybWF0UHJvcChrZXksIHRvUmF3KHZhbHVlLnZhbHVlKSwgdHJ1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09UmVmPGAsIHZhbHVlLCBgPmBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gW2Ake2tleX09Zm4ke3ZhbHVlLm5hbWUgPyBgPCR7dmFsdWUubmFtZX0+YCA6IGBgfWBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09YCwgdmFsdWVdO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IEVycm9yVHlwZVN0cmluZ3MgPSB7XHJcbiAgICBbXCJzcFwiIC8qIFNFUlZFUl9QUkVGRVRDSCAqL106ICdzZXJ2ZXJQcmVmZXRjaCBob29rJyxcclxuICAgIFtcImJjXCIgLyogQkVGT1JFX0NSRUFURSAqL106ICdiZWZvcmVDcmVhdGUgaG9vaycsXHJcbiAgICBbXCJjXCIgLyogQ1JFQVRFRCAqL106ICdjcmVhdGVkIGhvb2snLFxyXG4gICAgW1wiYm1cIiAvKiBCRUZPUkVfTU9VTlQgKi9dOiAnYmVmb3JlTW91bnQgaG9vaycsXHJcbiAgICBbXCJtXCIgLyogTU9VTlRFRCAqL106ICdtb3VudGVkIGhvb2snLFxyXG4gICAgW1wiYnVcIiAvKiBCRUZPUkVfVVBEQVRFICovXTogJ2JlZm9yZVVwZGF0ZSBob29rJyxcclxuICAgIFtcInVcIiAvKiBVUERBVEVEICovXTogJ3VwZGF0ZWQnLFxyXG4gICAgW1wiYnVtXCIgLyogQkVGT1JFX1VOTU9VTlQgKi9dOiAnYmVmb3JlVW5tb3VudCBob29rJyxcclxuICAgIFtcInVtXCIgLyogVU5NT1VOVEVEICovXTogJ3VubW91bnRlZCBob29rJyxcclxuICAgIFtcImFcIiAvKiBBQ1RJVkFURUQgKi9dOiAnYWN0aXZhdGVkIGhvb2snLFxyXG4gICAgW1wiZGFcIiAvKiBERUFDVElWQVRFRCAqL106ICdkZWFjdGl2YXRlZCBob29rJyxcclxuICAgIFtcImVjXCIgLyogRVJST1JfQ0FQVFVSRUQgKi9dOiAnZXJyb3JDYXB0dXJlZCBob29rJyxcclxuICAgIFtcInJ0Y1wiIC8qIFJFTkRFUl9UUkFDS0VEICovXTogJ3JlbmRlclRyYWNrZWQgaG9vaycsXHJcbiAgICBbXCJydGdcIiAvKiBSRU5ERVJfVFJJR0dFUkVEICovXTogJ3JlbmRlclRyaWdnZXJlZCBob29rJyxcclxuICAgIFswIC8qIFNFVFVQX0ZVTkNUSU9OICovXTogJ3NldHVwIGZ1bmN0aW9uJyxcclxuICAgIFsxIC8qIFJFTkRFUl9GVU5DVElPTiAqL106ICdyZW5kZXIgZnVuY3Rpb24nLFxyXG4gICAgWzIgLyogV0FUQ0hfR0VUVEVSICovXTogJ3dhdGNoZXIgZ2V0dGVyJyxcclxuICAgIFszIC8qIFdBVENIX0NBTExCQUNLICovXTogJ3dhdGNoZXIgY2FsbGJhY2snLFxyXG4gICAgWzQgLyogV0FUQ0hfQ0xFQU5VUCAqL106ICd3YXRjaGVyIGNsZWFudXAgZnVuY3Rpb24nLFxyXG4gICAgWzUgLyogTkFUSVZFX0VWRU5UX0hBTkRMRVIgKi9dOiAnbmF0aXZlIGV2ZW50IGhhbmRsZXInLFxyXG4gICAgWzYgLyogQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVIgKi9dOiAnY29tcG9uZW50IGV2ZW50IGhhbmRsZXInLFxyXG4gICAgWzcgLyogVk5PREVfSE9PSyAqL106ICd2bm9kZSBob29rJyxcclxuICAgIFs4IC8qIERJUkVDVElWRV9IT09LICovXTogJ2RpcmVjdGl2ZSBob29rJyxcclxuICAgIFs5IC8qIFRSQU5TSVRJT05fSE9PSyAqL106ICd0cmFuc2l0aW9uIGhvb2snLFxyXG4gICAgWzEwIC8qIEFQUF9FUlJPUl9IQU5ETEVSICovXTogJ2FwcCBlcnJvckhhbmRsZXInLFxyXG4gICAgWzExIC8qIEFQUF9XQVJOX0hBTkRMRVIgKi9dOiAnYXBwIHdhcm5IYW5kbGVyJyxcclxuICAgIFsxMiAvKiBGVU5DVElPTl9SRUYgKi9dOiAncmVmIGZ1bmN0aW9uJyxcclxuICAgIFsxMyAvKiBBU1lOQ19DT01QT05FTlRfTE9BREVSICovXTogJ2FzeW5jIGNvbXBvbmVudCBsb2FkZXInLFxyXG4gICAgWzE0IC8qIFNDSEVEVUxFUiAqL106ICdzY2hlZHVsZXIgZmx1c2guIFRoaXMgaXMgbGlrZWx5IGEgVnVlIGludGVybmFscyBidWcuICcgK1xyXG4gICAgICAgICdQbGVhc2Ugb3BlbiBhbiBpc3N1ZSBhdCBodHRwczovL25ldy1pc3N1ZS52dWVqcy5vcmcvP3JlcG89dnVlanMvY29yZSdcclxufTtcclxuZnVuY3Rpb24gY2FsbFdpdGhFcnJvckhhbmRsaW5nKGZuLCBpbnN0YW5jZSwgdHlwZSwgYXJncykge1xyXG4gICAgbGV0IHJlcztcclxuICAgIHRyeSB7XHJcbiAgICAgICAgcmVzID0gYXJncyA/IGZuKC4uLmFyZ3MpIDogZm4oKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCB0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuZnVuY3Rpb24gY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihmbikpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBjYWxsV2l0aEVycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKTtcclxuICAgICAgICBpZiAocmVzICYmIGlzUHJvbWlzZShyZXMpKSB7XHJcbiAgICAgICAgICAgIHJlcy5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgdHlwZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWVzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFsdWVzLnB1c2goY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoZm5baV0sIGluc3RhbmNlLCB0eXBlLCBhcmdzKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG59XHJcbmZ1bmN0aW9uIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIHR5cGUsIHRocm93SW5EZXYgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBjb250ZXh0Vk5vZGUgPSBpbnN0YW5jZSA/IGluc3RhbmNlLnZub2RlIDogbnVsbDtcclxuICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgIGxldCBjdXIgPSBpbnN0YW5jZS5wYXJlbnQ7XHJcbiAgICAgICAgLy8gdGhlIGV4cG9zZWQgaW5zdGFuY2UgaXMgdGhlIHJlbmRlciBwcm94eSB0byBrZWVwIGl0IGNvbnNpc3RlbnQgd2l0aCAyLnhcclxuICAgICAgICBjb25zdCBleHBvc2VkSW5zdGFuY2UgPSBpbnN0YW5jZS5wcm94eTtcclxuICAgICAgICAvLyBpbiBwcm9kdWN0aW9uIHRoZSBob29rIHJlY2VpdmVzIG9ubHkgdGhlIGVycm9yIGNvZGVcclxuICAgICAgICBjb25zdCBlcnJvckluZm8gPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBFcnJvclR5cGVTdHJpbmdzW3R5cGVdIDogdHlwZTtcclxuICAgICAgICB3aGlsZSAoY3VyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yQ2FwdHVyZWRIb29rcyA9IGN1ci5lYztcclxuICAgICAgICAgICAgaWYgKGVycm9yQ2FwdHVyZWRIb29rcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlcnJvckNhcHR1cmVkSG9va3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JDYXB0dXJlZEhvb2tzW2ldKGVyciwgZXhwb3NlZEluc3RhbmNlLCBlcnJvckluZm8pID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFwcC1sZXZlbCBoYW5kbGluZ1xyXG4gICAgICAgIGNvbnN0IGFwcEVycm9ySGFuZGxlciA9IGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLmVycm9ySGFuZGxlcjtcclxuICAgICAgICBpZiAoYXBwRXJyb3JIYW5kbGVyKSB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhhcHBFcnJvckhhbmRsZXIsIG51bGwsIDEwIC8qIEFQUF9FUlJPUl9IQU5ETEVSICovLCBbZXJyLCBleHBvc2VkSW5zdGFuY2UsIGVycm9ySW5mb10pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbG9nRXJyb3IoZXJyLCB0eXBlLCBjb250ZXh0Vk5vZGUsIHRocm93SW5EZXYpO1xyXG59XHJcbmZ1bmN0aW9uIGxvZ0Vycm9yKGVyciwgdHlwZSwgY29udGV4dFZOb2RlLCB0aHJvd0luRGV2ID0gdHJ1ZSkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGluZm8gPSBFcnJvclR5cGVTdHJpbmdzW3R5cGVdO1xyXG4gICAgICAgIGlmIChjb250ZXh0Vk5vZGUpIHtcclxuICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KGNvbnRleHRWTm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdhcm4oYFVuaGFuZGxlZCBlcnJvciR7aW5mbyA/IGAgZHVyaW5nIGV4ZWN1dGlvbiBvZiAke2luZm99YCA6IGBgfWApO1xyXG4gICAgICAgIGlmIChjb250ZXh0Vk5vZGUpIHtcclxuICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY3Jhc2ggaW4gZGV2IGJ5IGRlZmF1bHQgc28gaXQncyBtb3JlIG5vdGljZWFibGVcclxuICAgICAgICBpZiAodGhyb3dJbkRldikge1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gcmVjb3ZlciBpbiBwcm9kIHRvIHJlZHVjZSB0aGUgaW1wYWN0IG9uIGVuZC11c2VyXHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgfVxyXG59XG5cbmxldCBpc0ZsdXNoaW5nID0gZmFsc2U7XHJcbmxldCBpc0ZsdXNoUGVuZGluZyA9IGZhbHNlO1xyXG5jb25zdCBxdWV1ZSA9IFtdO1xyXG5sZXQgZmx1c2hJbmRleCA9IDA7XHJcbmNvbnN0IHBlbmRpbmdQcmVGbHVzaENicyA9IFtdO1xyXG5sZXQgYWN0aXZlUHJlRmx1c2hDYnMgPSBudWxsO1xyXG5sZXQgcHJlRmx1c2hJbmRleCA9IDA7XHJcbmNvbnN0IHBlbmRpbmdQb3N0Rmx1c2hDYnMgPSBbXTtcclxubGV0IGFjdGl2ZVBvc3RGbHVzaENicyA9IG51bGw7XHJcbmxldCBwb3N0Rmx1c2hJbmRleCA9IDA7XHJcbmNvbnN0IHJlc29sdmVkUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xyXG5sZXQgY3VycmVudEZsdXNoUHJvbWlzZSA9IG51bGw7XHJcbmxldCBjdXJyZW50UHJlRmx1c2hQYXJlbnRKb2IgPSBudWxsO1xyXG5jb25zdCBSRUNVUlNJT05fTElNSVQgPSAxMDA7XHJcbmZ1bmN0aW9uIG5leHRUaWNrKGZuKSB7XHJcbiAgICBjb25zdCBwID0gY3VycmVudEZsdXNoUHJvbWlzZSB8fCByZXNvbHZlZFByb21pc2U7XHJcbiAgICByZXR1cm4gZm4gPyBwLnRoZW4odGhpcyA/IGZuLmJpbmQodGhpcykgOiBmbikgOiBwO1xyXG59XHJcbi8vICMyNzY4XHJcbi8vIFVzZSBiaW5hcnktc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwb3NpdGlvbiBpbiB0aGUgcXVldWUsXHJcbi8vIHNvIHRoYXQgdGhlIHF1ZXVlIG1haW50YWlucyB0aGUgaW5jcmVhc2luZyBvcmRlciBvZiBqb2IncyBpZCxcclxuLy8gd2hpY2ggY2FuIHByZXZlbnQgdGhlIGpvYiBmcm9tIGJlaW5nIHNraXBwZWQgYW5kIGFsc28gY2FuIGF2b2lkIHJlcGVhdGVkIHBhdGNoaW5nLlxyXG5mdW5jdGlvbiBmaW5kSW5zZXJ0aW9uSW5kZXgoaWQpIHtcclxuICAgIC8vIHRoZSBzdGFydCBpbmRleCBzaG91bGQgYmUgYGZsdXNoSW5kZXggKyAxYFxyXG4gICAgbGV0IHN0YXJ0ID0gZmx1c2hJbmRleCArIDE7XHJcbiAgICBsZXQgZW5kID0gcXVldWUubGVuZ3RoO1xyXG4gICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XHJcbiAgICAgICAgY29uc3QgbWlkZGxlID0gKHN0YXJ0ICsgZW5kKSA+Pj4gMTtcclxuICAgICAgICBjb25zdCBtaWRkbGVKb2JJZCA9IGdldElkKHF1ZXVlW21pZGRsZV0pO1xyXG4gICAgICAgIG1pZGRsZUpvYklkIDwgaWQgPyAoc3RhcnQgPSBtaWRkbGUgKyAxKSA6IChlbmQgPSBtaWRkbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXJ0O1xyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlSm9iKGpvYikge1xyXG4gICAgLy8gdGhlIGRlZHVwZSBzZWFyY2ggdXNlcyB0aGUgc3RhcnRJbmRleCBhcmd1bWVudCBvZiBBcnJheS5pbmNsdWRlcygpXHJcbiAgICAvLyBieSBkZWZhdWx0IHRoZSBzZWFyY2ggaW5kZXggaW5jbHVkZXMgdGhlIGN1cnJlbnQgam9iIHRoYXQgaXMgYmVpbmcgcnVuXHJcbiAgICAvLyBzbyBpdCBjYW5ub3QgcmVjdXJzaXZlbHkgdHJpZ2dlciBpdHNlbGYgYWdhaW4uXHJcbiAgICAvLyBpZiB0aGUgam9iIGlzIGEgd2F0Y2goKSBjYWxsYmFjaywgdGhlIHNlYXJjaCB3aWxsIHN0YXJ0IHdpdGggYSArMSBpbmRleCB0b1xyXG4gICAgLy8gYWxsb3cgaXQgcmVjdXJzaXZlbHkgdHJpZ2dlciBpdHNlbGYgLSBpdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvXHJcbiAgICAvLyBlbnN1cmUgaXQgZG9lc24ndCBlbmQgdXAgaW4gYW4gaW5maW5pdGUgbG9vcC5cclxuICAgIGlmICgoIXF1ZXVlLmxlbmd0aCB8fFxyXG4gICAgICAgICFxdWV1ZS5pbmNsdWRlcyhqb2IsIGlzRmx1c2hpbmcgJiYgam9iLmFsbG93UmVjdXJzZSA/IGZsdXNoSW5kZXggKyAxIDogZmx1c2hJbmRleCkpICYmXHJcbiAgICAgICAgam9iICE9PSBjdXJyZW50UHJlRmx1c2hQYXJlbnRKb2IpIHtcclxuICAgICAgICBpZiAoam9iLmlkID09IG51bGwpIHtcclxuICAgICAgICAgICAgcXVldWUucHVzaChqb2IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcXVldWUuc3BsaWNlKGZpbmRJbnNlcnRpb25JbmRleChqb2IuaWQpLCAwLCBqb2IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBxdWV1ZUZsdXNoKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcXVldWVGbHVzaCgpIHtcclxuICAgIGlmICghaXNGbHVzaGluZyAmJiAhaXNGbHVzaFBlbmRpbmcpIHtcclxuICAgICAgICBpc0ZsdXNoUGVuZGluZyA9IHRydWU7XHJcbiAgICAgICAgY3VycmVudEZsdXNoUHJvbWlzZSA9IHJlc29sdmVkUHJvbWlzZS50aGVuKGZsdXNoSm9icyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaW52YWxpZGF0ZUpvYihqb2IpIHtcclxuICAgIGNvbnN0IGkgPSBxdWV1ZS5pbmRleE9mKGpvYik7XHJcbiAgICBpZiAoaSA+IGZsdXNoSW5kZXgpIHtcclxuICAgICAgICBxdWV1ZS5zcGxpY2UoaSwgMSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcXVldWVDYihjYiwgYWN0aXZlUXVldWUsIHBlbmRpbmdRdWV1ZSwgaW5kZXgpIHtcclxuICAgIGlmICghaXNBcnJheShjYikpIHtcclxuICAgICAgICBpZiAoIWFjdGl2ZVF1ZXVlIHx8XHJcbiAgICAgICAgICAgICFhY3RpdmVRdWV1ZS5pbmNsdWRlcyhjYiwgY2IuYWxsb3dSZWN1cnNlID8gaW5kZXggKyAxIDogaW5kZXgpKSB7XHJcbiAgICAgICAgICAgIHBlbmRpbmdRdWV1ZS5wdXNoKGNiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBpZiBjYiBpcyBhbiBhcnJheSwgaXQgaXMgYSBjb21wb25lbnQgbGlmZWN5Y2xlIGhvb2sgd2hpY2ggY2FuIG9ubHkgYmVcclxuICAgICAgICAvLyB0cmlnZ2VyZWQgYnkgYSBqb2IsIHdoaWNoIGlzIGFscmVhZHkgZGVkdXBlZCBpbiB0aGUgbWFpbiBxdWV1ZSwgc29cclxuICAgICAgICAvLyB3ZSBjYW4gc2tpcCBkdXBsaWNhdGUgY2hlY2sgaGVyZSB0byBpbXByb3ZlIHBlcmZcclxuICAgICAgICBwZW5kaW5nUXVldWUucHVzaCguLi5jYik7XHJcbiAgICB9XHJcbiAgICBxdWV1ZUZsdXNoKCk7XHJcbn1cclxuZnVuY3Rpb24gcXVldWVQcmVGbHVzaENiKGNiKSB7XHJcbiAgICBxdWV1ZUNiKGNiLCBhY3RpdmVQcmVGbHVzaENicywgcGVuZGluZ1ByZUZsdXNoQ2JzLCBwcmVGbHVzaEluZGV4KTtcclxufVxyXG5mdW5jdGlvbiBxdWV1ZVBvc3RGbHVzaENiKGNiKSB7XHJcbiAgICBxdWV1ZUNiKGNiLCBhY3RpdmVQb3N0Rmx1c2hDYnMsIHBlbmRpbmdQb3N0Rmx1c2hDYnMsIHBvc3RGbHVzaEluZGV4KTtcclxufVxyXG5mdW5jdGlvbiBmbHVzaFByZUZsdXNoQ2JzKHNlZW4sIHBhcmVudEpvYiA9IG51bGwpIHtcclxuICAgIGlmIChwZW5kaW5nUHJlRmx1c2hDYnMubGVuZ3RoKSB7XHJcbiAgICAgICAgY3VycmVudFByZUZsdXNoUGFyZW50Sm9iID0gcGFyZW50Sm9iO1xyXG4gICAgICAgIGFjdGl2ZVByZUZsdXNoQ2JzID0gWy4uLm5ldyBTZXQocGVuZGluZ1ByZUZsdXNoQ2JzKV07XHJcbiAgICAgICAgcGVuZGluZ1ByZUZsdXNoQ2JzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAocHJlRmx1c2hJbmRleCA9IDA7IHByZUZsdXNoSW5kZXggPCBhY3RpdmVQcmVGbHVzaENicy5sZW5ndGg7IHByZUZsdXNoSW5kZXgrKykge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2VlbiwgYWN0aXZlUHJlRmx1c2hDYnNbcHJlRmx1c2hJbmRleF0pKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhY3RpdmVQcmVGbHVzaENic1twcmVGbHVzaEluZGV4XSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY3RpdmVQcmVGbHVzaENicyA9IG51bGw7XHJcbiAgICAgICAgcHJlRmx1c2hJbmRleCA9IDA7XHJcbiAgICAgICAgY3VycmVudFByZUZsdXNoUGFyZW50Sm9iID0gbnVsbDtcclxuICAgICAgICAvLyByZWN1cnNpdmVseSBmbHVzaCB1bnRpbCBpdCBkcmFpbnNcclxuICAgICAgICBmbHVzaFByZUZsdXNoQ2JzKHNlZW4sIHBhcmVudEpvYik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZmx1c2hQb3N0Rmx1c2hDYnMoc2Vlbikge1xyXG4gICAgaWYgKHBlbmRpbmdQb3N0Rmx1c2hDYnMubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgZGVkdXBlZCA9IFsuLi5uZXcgU2V0KHBlbmRpbmdQb3N0Rmx1c2hDYnMpXTtcclxuICAgICAgICBwZW5kaW5nUG9zdEZsdXNoQ2JzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgLy8gIzE5NDcgYWxyZWFkeSBoYXMgYWN0aXZlIHF1ZXVlLCBuZXN0ZWQgZmx1c2hQb3N0Rmx1c2hDYnMgY2FsbFxyXG4gICAgICAgIGlmIChhY3RpdmVQb3N0Rmx1c2hDYnMpIHtcclxuICAgICAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzLnB1c2goLi4uZGVkdXBlZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzID0gZGVkdXBlZDtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHNlZW4gPSBzZWVuIHx8IG5ldyBNYXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzLnNvcnQoKGEsIGIpID0+IGdldElkKGEpIC0gZ2V0SWQoYikpO1xyXG4gICAgICAgIGZvciAocG9zdEZsdXNoSW5kZXggPSAwOyBwb3N0Rmx1c2hJbmRleCA8IGFjdGl2ZVBvc3RGbHVzaENicy5sZW5ndGg7IHBvc3RGbHVzaEluZGV4KyspIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGFjdGl2ZVBvc3RGbHVzaENic1twb3N0Rmx1c2hJbmRleF0pKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnNbcG9zdEZsdXNoSW5kZXhdKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjdGl2ZVBvc3RGbHVzaENicyA9IG51bGw7XHJcbiAgICAgICAgcG9zdEZsdXNoSW5kZXggPSAwO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGdldElkID0gKGpvYikgPT4gam9iLmlkID09IG51bGwgPyBJbmZpbml0eSA6IGpvYi5pZDtcclxuZnVuY3Rpb24gZmx1c2hKb2JzKHNlZW4pIHtcclxuICAgIGlzRmx1c2hQZW5kaW5nID0gZmFsc2U7XHJcbiAgICBpc0ZsdXNoaW5nID0gdHJ1ZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwKCk7XHJcbiAgICB9XHJcbiAgICBmbHVzaFByZUZsdXNoQ2JzKHNlZW4pO1xyXG4gICAgLy8gU29ydCBxdWV1ZSBiZWZvcmUgZmx1c2guXHJcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdDpcclxuICAgIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcclxuICAgIC8vICAgIGNyZWF0ZWQgYmVmb3JlIHRoZSBjaGlsZCBzbyBpdHMgcmVuZGVyIGVmZmVjdCB3aWxsIGhhdmUgc21hbGxlclxyXG4gICAgLy8gICAgcHJpb3JpdHkgbnVtYmVyKVxyXG4gICAgLy8gMi4gSWYgYSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQncyB1cGRhdGUsXHJcbiAgICAvLyAgICBpdHMgdXBkYXRlIGNhbiBiZSBza2lwcGVkLlxyXG4gICAgcXVldWUuc29ydCgoYSwgYikgPT4gZ2V0SWQoYSkgLSBnZXRJZChiKSk7XHJcbiAgICAvLyBjb25kaXRpb25hbCB1c2FnZSBvZiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZSBtdXN0IGJlIGRldGVybWluZWQgb3V0IG9mXHJcbiAgICAvLyB0cnkgLi4uIGNhdGNoIGJsb2NrIHNpbmNlIFJvbGx1cCBieSBkZWZhdWx0IGRlLW9wdGltaXplcyB0cmVlc2hha2luZ1xyXG4gICAgLy8gaW5zaWRlIHRyeS1jYXRjaC4gVGhpcyBjYW4gbGVhdmUgYWxsIHdhcm5pbmcgY29kZSB1bnNoYWtlZC4gQWx0aG91Z2hcclxuICAgIC8vIHRoZXkgd291bGQgZ2V0IGV2ZW50dWFsbHkgc2hha2VuIGJ5IGEgbWluaWZpZXIgbGlrZSB0ZXJzZXIsIHNvbWUgbWluaWZpZXJzXHJcbiAgICAvLyB3b3VsZCBmYWlsIHRvIGRvIHRoYXQgKGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL2V2YW53L2VzYnVpbGQvaXNzdWVzLzE2MTApXHJcbiAgICBjb25zdCBjaGVjayA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8gKGpvYikgPT4gY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGpvYilcclxuICAgICAgICA6IE5PT1A7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGZvciAoZmx1c2hJbmRleCA9IDA7IGZsdXNoSW5kZXggPCBxdWV1ZS5sZW5ndGg7IGZsdXNoSW5kZXgrKykge1xyXG4gICAgICAgICAgICBjb25zdCBqb2IgPSBxdWV1ZVtmbHVzaEluZGV4XTtcclxuICAgICAgICAgICAgaWYgKGpvYiAmJiBqb2IuYWN0aXZlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjaGVjayhqb2IpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgcnVubmluZzpgLCBqb2IuaWQpXHJcbiAgICAgICAgICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcoam9iLCBudWxsLCAxNCAvKiBTQ0hFRFVMRVIgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgZmx1c2hJbmRleCA9IDA7XHJcbiAgICAgICAgcXVldWUubGVuZ3RoID0gMDtcclxuICAgICAgICBmbHVzaFBvc3RGbHVzaENicyhzZWVuKTtcclxuICAgICAgICBpc0ZsdXNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY3VycmVudEZsdXNoUHJvbWlzZSA9IG51bGw7XHJcbiAgICAgICAgLy8gc29tZSBwb3N0Rmx1c2hDYiBxdWV1ZWQgam9icyFcclxuICAgICAgICAvLyBrZWVwIGZsdXNoaW5nIHVudGlsIGl0IGRyYWlucy5cclxuICAgICAgICBpZiAocXVldWUubGVuZ3RoIHx8XHJcbiAgICAgICAgICAgIHBlbmRpbmdQcmVGbHVzaENicy5sZW5ndGggfHxcclxuICAgICAgICAgICAgcGVuZGluZ1Bvc3RGbHVzaENicy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZmx1c2hKb2JzKHNlZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2VlbiwgZm4pIHtcclxuICAgIGlmICghc2Vlbi5oYXMoZm4pKSB7XHJcbiAgICAgICAgc2Vlbi5zZXQoZm4sIDEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY291bnQgPSBzZWVuLmdldChmbik7XHJcbiAgICAgICAgaWYgKGNvdW50ID4gUkVDVVJTSU9OX0xJTUlUKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gZm4ub3duZXJJbnN0YW5jZTtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TmFtZSA9IGluc3RhbmNlICYmIGdldENvbXBvbmVudE5hbWUoaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgICAgIHdhcm4oYE1heGltdW0gcmVjdXJzaXZlIHVwZGF0ZXMgZXhjZWVkZWQke2NvbXBvbmVudE5hbWUgPyBgIGluIGNvbXBvbmVudCA8JHtjb21wb25lbnROYW1lfT5gIDogYGB9LiBgICtcclxuICAgICAgICAgICAgICAgIGBUaGlzIG1lYW5zIHlvdSBoYXZlIGEgcmVhY3RpdmUgZWZmZWN0IHRoYXQgaXMgbXV0YXRpbmcgaXRzIG93biBgICtcclxuICAgICAgICAgICAgICAgIGBkZXBlbmRlbmNpZXMgYW5kIHRodXMgcmVjdXJzaXZlbHkgdHJpZ2dlcmluZyBpdHNlbGYuIFBvc3NpYmxlIHNvdXJjZXMgYCArXHJcbiAgICAgICAgICAgICAgICBgaW5jbHVkZSBjb21wb25lbnQgdGVtcGxhdGUsIHJlbmRlciBmdW5jdGlvbiwgdXBkYXRlZCBob29rIG9yIGAgK1xyXG4gICAgICAgICAgICAgICAgYHdhdGNoZXIgc291cmNlIGZ1bmN0aW9uLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNlZW4uc2V0KGZuLCBjb3VudCArIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxubGV0IGlzSG1yVXBkYXRpbmcgPSBmYWxzZTtcclxuY29uc3QgaG1yRGlydHlDb21wb25lbnRzID0gbmV3IFNldCgpO1xyXG4vLyBFeHBvc2UgdGhlIEhNUiBydW50aW1lIG9uIHRoZSBnbG9iYWwgb2JqZWN0XHJcbi8vIFRoaXMgbWFrZXMgaXQgZW50aXJlbHkgdHJlZS1zaGFrYWJsZSB3aXRob3V0IHBvbGx1dGluZyB0aGUgZXhwb3J0cyBhbmQgbWFrZXNcclxuLy8gaXQgZWFzaWVyIHRvIGJlIHVzZWQgaW4gdG9vbGluZ3MgbGlrZSB2dWUtbG9hZGVyXHJcbi8vIE5vdGU6IGZvciBhIGNvbXBvbmVudCB0byBiZSBlbGlnaWJsZSBmb3IgSE1SIGl0IGFsc28gbmVlZHMgdGhlIF9faG1ySWQgb3B0aW9uXHJcbi8vIHRvIGJlIHNldCBzbyB0aGF0IGl0cyBpbnN0YW5jZXMgY2FuIGJlIHJlZ2lzdGVyZWQgLyByZW1vdmVkLlxyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfSE1SX1JVTlRJTUVfXyA9IHtcclxuICAgICAgICBjcmVhdGVSZWNvcmQ6IHRyeVdyYXAoY3JlYXRlUmVjb3JkKSxcclxuICAgICAgICByZXJlbmRlcjogdHJ5V3JhcChyZXJlbmRlciksXHJcbiAgICAgICAgcmVsb2FkOiB0cnlXcmFwKHJlbG9hZClcclxuICAgIH07XHJcbn1cclxuY29uc3QgbWFwID0gbmV3IE1hcCgpO1xyXG5mdW5jdGlvbiByZWdpc3RlckhNUihpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgaWQgPSBpbnN0YW5jZS50eXBlLl9faG1ySWQ7XHJcbiAgICBsZXQgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgIGNyZWF0ZVJlY29yZChpZCwgaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICB9XHJcbiAgICByZWNvcmQuaW5zdGFuY2VzLmFkZChpbnN0YW5jZSk7XHJcbn1cclxuZnVuY3Rpb24gdW5yZWdpc3RlckhNUihpbnN0YW5jZSkge1xyXG4gICAgbWFwLmdldChpbnN0YW5jZS50eXBlLl9faG1ySWQpLmluc3RhbmNlcy5kZWxldGUoaW5zdGFuY2UpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJlY29yZChpZCwgaW5pdGlhbERlZikge1xyXG4gICAgaWYgKG1hcC5oYXMoaWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbWFwLnNldChpZCwge1xyXG4gICAgICAgIGluaXRpYWxEZWY6IG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluaXRpYWxEZWYpLFxyXG4gICAgICAgIGluc3RhbmNlczogbmV3IFNldCgpXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIGlzQ2xhc3NDb21wb25lbnQoY29tcG9uZW50KSA/IGNvbXBvbmVudC5fX3ZjY09wdHMgOiBjb21wb25lbnQ7XHJcbn1cclxuZnVuY3Rpb24gcmVyZW5kZXIoaWQsIG5ld1JlbmRlcikge1xyXG4gICAgY29uc3QgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHVwZGF0ZSBpbml0aWFsIHJlY29yZCAoZm9yIG5vdC15ZXQtcmVuZGVyZWQgY29tcG9uZW50KVxyXG4gICAgcmVjb3JkLmluaXRpYWxEZWYucmVuZGVyID0gbmV3UmVuZGVyO1xyXG4gICAgWy4uLnJlY29yZC5pbnN0YW5jZXNdLmZvckVhY2goaW5zdGFuY2UgPT4ge1xyXG4gICAgICAgIGlmIChuZXdSZW5kZXIpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UucmVuZGVyID0gbmV3UmVuZGVyO1xyXG4gICAgICAgICAgICBub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbnN0YW5jZS50eXBlKS5yZW5kZXIgPSBuZXdSZW5kZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLnJlbmRlckNhY2hlID0gW107XHJcbiAgICAgICAgLy8gdGhpcyBmbGFnIGZvcmNlcyBjaGlsZCBjb21wb25lbnRzIHdpdGggc2xvdCBjb250ZW50IHRvIHVwZGF0ZVxyXG4gICAgICAgIGlzSG1yVXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xyXG4gICAgICAgIGlzSG1yVXBkYXRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHJlbG9hZChpZCwgbmV3Q29tcCkge1xyXG4gICAgY29uc3QgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBuZXdDb21wID0gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQobmV3Q29tcCk7XHJcbiAgICAvLyB1cGRhdGUgaW5pdGlhbCBkZWYgKGZvciBub3QteWV0LXJlbmRlcmVkIGNvbXBvbmVudHMpXHJcbiAgICB1cGRhdGVDb21wb25lbnREZWYocmVjb3JkLmluaXRpYWxEZWYsIG5ld0NvbXApO1xyXG4gICAgLy8gY3JlYXRlIGEgc25hcHNob3Qgd2hpY2ggYXZvaWRzIHRoZSBzZXQgYmVpbmcgbXV0YXRlZCBkdXJpbmcgdXBkYXRlc1xyXG4gICAgY29uc3QgaW5zdGFuY2VzID0gWy4uLnJlY29yZC5pbnN0YW5jZXNdO1xyXG4gICAgZm9yIChjb25zdCBpbnN0YW5jZSBvZiBpbnN0YW5jZXMpIHtcclxuICAgICAgICBjb25zdCBvbGRDb21wID0gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgaWYgKCFobXJEaXJ0eUNvbXBvbmVudHMuaGFzKG9sZENvbXApKSB7XHJcbiAgICAgICAgICAgIC8vIDEuIFVwZGF0ZSBleGlzdGluZyBjb21wIGRlZmluaXRpb24gdG8gbWF0Y2ggbmV3IG9uZVxyXG4gICAgICAgICAgICBpZiAob2xkQ29tcCAhPT0gcmVjb3JkLmluaXRpYWxEZWYpIHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudERlZihvbGRDb21wLCBuZXdDb21wKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAyLiBtYXJrIGRlZmluaXRpb24gZGlydHkuIFRoaXMgZm9yY2VzIHRoZSByZW5kZXJlciB0byByZXBsYWNlIHRoZVxyXG4gICAgICAgICAgICAvLyBjb21wb25lbnQgb24gcGF0Y2guXHJcbiAgICAgICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5hZGQob2xkQ29tcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDMuIGludmFsaWRhdGUgb3B0aW9ucyByZXNvbHV0aW9uIGNhY2hlXHJcbiAgICAgICAgaW5zdGFuY2UuYXBwQ29udGV4dC5vcHRpb25zQ2FjaGUuZGVsZXRlKGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgIC8vIDQuIGFjdHVhbGx5IHVwZGF0ZVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5jZVJlbG9hZCkge1xyXG4gICAgICAgICAgICAvLyBjdXN0b20gZWxlbWVudFxyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuYWRkKG9sZENvbXApO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5jZVJlbG9hZChuZXdDb21wLnN0eWxlcyk7XHJcbiAgICAgICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5kZWxldGUob2xkQ29tcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLnBhcmVudCkge1xyXG4gICAgICAgICAgICAvLyA0LiBGb3JjZSB0aGUgcGFyZW50IGluc3RhbmNlIHRvIHJlLXJlbmRlci4gVGhpcyB3aWxsIGNhdXNlIGFsbCB1cGRhdGVkXHJcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudHMgdG8gYmUgdW5tb3VudGVkIGFuZCByZS1tb3VudGVkLiBRdWV1ZSB0aGUgdXBkYXRlIHNvIHRoYXQgd2VcclxuICAgICAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGZvcmNpbmcgdGhlIHNhbWUgcGFyZW50IHRvIHJlLXJlbmRlciBtdWx0aXBsZSB0aW1lcy5cclxuICAgICAgICAgICAgcXVldWVKb2IoaW5zdGFuY2UucGFyZW50LnVwZGF0ZSk7XHJcbiAgICAgICAgICAgIC8vIGluc3RhbmNlIGlzIHRoZSBpbm5lciBjb21wb25lbnQgb2YgYW4gYXN5bmMgY3VzdG9tIGVsZW1lbnRcclxuICAgICAgICAgICAgLy8gaW52b2tlIHRvIHJlc2V0IHN0eWxlc1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UucGFyZW50LnR5cGUuX19hc3luY0xvYWRlciAmJlxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50LmNlUmVsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQuY2VSZWxvYWQobmV3Q29tcC5zdHlsZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLmFwcENvbnRleHQucmVsb2FkKSB7XHJcbiAgICAgICAgICAgIC8vIHJvb3QgaW5zdGFuY2UgbW91bnRlZCB2aWEgY3JlYXRlQXBwKCkgaGFzIGEgcmVsb2FkIG1ldGhvZFxyXG4gICAgICAgICAgICBpbnN0YW5jZS5hcHBDb250ZXh0LnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAvLyByb290IGluc3RhbmNlIGluc2lkZSB0cmVlIGNyZWF0ZWQgdmlhIHJhdyByZW5kZXIoKS4gRm9yY2UgcmVsb2FkLlxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tITVJdIFJvb3Qgb3IgbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSBtb2RpZmllZC4gRnVsbCByZWxvYWQgcmVxdWlyZWQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gNS4gbWFrZSBzdXJlIHRvIGNsZWFudXAgZGlydHkgaG1yIGNvbXBvbmVudHMgYWZ0ZXIgdXBkYXRlXHJcbiAgICBxdWV1ZVBvc3RGbHVzaENiKCgpID0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IGluc3RhbmNlIG9mIGluc3RhbmNlcykge1xyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuZGVsZXRlKG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluc3RhbmNlLnR5cGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnREZWYob2xkQ29tcCwgbmV3Q29tcCkge1xyXG4gICAgZXh0ZW5kKG9sZENvbXAsIG5ld0NvbXApO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2xkQ29tcCkge1xyXG4gICAgICAgIGlmIChrZXkgIT09ICdfX2ZpbGUnICYmICEoa2V5IGluIG5ld0NvbXApKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBvbGRDb21wW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyeVdyYXAoZm4pIHtcclxuICAgIHJldHVybiAoaWQsIGFyZykgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmbihpZCwgYXJnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbSE1SXSBTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgVnVlIGNvbXBvbmVudCBob3QtcmVsb2FkLiBgICtcclxuICAgICAgICAgICAgICAgIGBGdWxsIHJlbG9hZCByZXF1aXJlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmxldCBkZXZ0b29scztcclxubGV0IGJ1ZmZlciA9IFtdO1xyXG5sZXQgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSBmYWxzZTtcclxuZnVuY3Rpb24gZW1pdChldmVudCwgLi4uYXJncykge1xyXG4gICAgaWYgKGRldnRvb2xzKSB7XHJcbiAgICAgICAgZGV2dG9vbHMuZW1pdChldmVudCwgLi4uYXJncyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghZGV2dG9vbHNOb3RJbnN0YWxsZWQpIHtcclxuICAgICAgICBidWZmZXIucHVzaCh7IGV2ZW50LCBhcmdzIH0pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldERldnRvb2xzSG9vayhob29rLCB0YXJnZXQpIHtcclxuICAgIHZhciBfYSwgX2I7XHJcbiAgICBkZXZ0b29scyA9IGhvb2s7XHJcbiAgICBpZiAoZGV2dG9vbHMpIHtcclxuICAgICAgICBkZXZ0b29scy5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICBidWZmZXIuZm9yRWFjaCgoeyBldmVudCwgYXJncyB9KSA9PiBkZXZ0b29scy5lbWl0KGV2ZW50LCAuLi5hcmdzKSk7XHJcbiAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChcclxuICAgIC8vIGhhbmRsZSBsYXRlIGRldnRvb2xzIGluamVjdGlvbiAtIG9ubHkgZG8gdGhpcyBpZiB3ZSBhcmUgaW4gYW4gYWN0dWFsXHJcbiAgICAvLyBicm93c2VyIGVudmlyb25tZW50IHRvIGF2b2lkIHRoZSB0aW1lciBoYW5kbGUgc3RhbGxpbmcgdGVzdCBydW5uZXIgZXhpdFxyXG4gICAgLy8gKCM0ODE1KVxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xyXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgICAgICAvLyBzb21lIGVudnMgbW9jayB3aW5kb3cgYnV0IG5vdCBmdWxseVxyXG4gICAgICAgIHdpbmRvdy5IVE1MRWxlbWVudCAmJlxyXG4gICAgICAgIC8vIGFsc28gZXhjbHVkZSBqc2RvbVxyXG4gICAgICAgICEoKF9iID0gKF9hID0gd2luZG93Lm5hdmlnYXRvcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVzZXJBZ2VudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluY2x1ZGVzKCdqc2RvbScpKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcGxheSA9ICh0YXJnZXQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXyA9XHJcbiAgICAgICAgICAgIHRhcmdldC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fIHx8IFtdKTtcclxuICAgICAgICByZXBsYXkucHVzaCgobmV3SG9vaykgPT4ge1xyXG4gICAgICAgICAgICBzZXREZXZ0b29sc0hvb2sobmV3SG9vaywgdGFyZ2V0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBjbGVhciBidWZmZXIgYWZ0ZXIgM3MgLSB0aGUgdXNlciBwcm9iYWJseSBkb2Vzbid0IGhhdmUgZGV2dG9vbHMgaW5zdGFsbGVkXHJcbiAgICAgICAgLy8gYXQgYWxsLCBhbmQga2VlcGluZyB0aGUgYnVmZmVyIHdpbGwgY2F1c2UgbWVtb3J5IGxlYWtzICgjNDczOClcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFkZXZ0b29scykge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAzMDAwKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIG5vbi1icm93c2VyIGVudiwgYXNzdW1lIG5vdCBpbnN0YWxsZWRcclxuICAgICAgICBkZXZ0b29sc05vdEluc3RhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZGV2dG9vbHNJbml0QXBwKGFwcCwgdmVyc2lvbikge1xyXG4gICAgZW1pdChcImFwcDppbml0XCIgLyogQVBQX0lOSVQgKi8sIGFwcCwgdmVyc2lvbiwge1xyXG4gICAgICAgIEZyYWdtZW50LFxyXG4gICAgICAgIFRleHQsXHJcbiAgICAgICAgQ29tbWVudCxcclxuICAgICAgICBTdGF0aWNcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGRldnRvb2xzVW5tb3VudEFwcChhcHApIHtcclxuICAgIGVtaXQoXCJhcHA6dW5tb3VudFwiIC8qIEFQUF9VTk1PVU5UICovLCBhcHApO1xyXG59XHJcbmNvbnN0IGRldnRvb2xzQ29tcG9uZW50QWRkZWQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcImNvbXBvbmVudDphZGRlZFwiIC8qIENPTVBPTkVOVF9BRERFRCAqLyk7XHJcbmNvbnN0IGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZCA9IFxyXG4vKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcImNvbXBvbmVudDp1cGRhdGVkXCIgLyogQ09NUE9ORU5UX1VQREFURUQgKi8pO1xyXG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudFJlbW92ZWQgPSBcclxuLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soXCJjb21wb25lbnQ6cmVtb3ZlZFwiIC8qIENPTVBPTkVOVF9SRU1PVkVEICovKTtcclxuZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNDb21wb25lbnRIb29rKGhvb2spIHtcclxuICAgIHJldHVybiAoY29tcG9uZW50KSA9PiB7XHJcbiAgICAgICAgZW1pdChob29rLCBjb21wb25lbnQuYXBwQ29udGV4dC5hcHAsIGNvbXBvbmVudC51aWQsIGNvbXBvbmVudC5wYXJlbnQgPyBjb21wb25lbnQucGFyZW50LnVpZCA6IHVuZGVmaW5lZCwgY29tcG9uZW50KTtcclxuICAgIH07XHJcbn1cclxuY29uc3QgZGV2dG9vbHNQZXJmU3RhcnQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzUGVyZm9ybWFuY2VIb29rKFwicGVyZjpzdGFydFwiIC8qIFBFUkZPUk1BTkNFX1NUQVJUICovKTtcclxuY29uc3QgZGV2dG9vbHNQZXJmRW5kID0gLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc1BlcmZvcm1hbmNlSG9vayhcInBlcmY6ZW5kXCIgLyogUEVSRk9STUFOQ0VfRU5EICovKTtcclxuZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soaG9vaykge1xyXG4gICAgcmV0dXJuIChjb21wb25lbnQsIHR5cGUsIHRpbWUpID0+IHtcclxuICAgICAgICBlbWl0KGhvb2ssIGNvbXBvbmVudC5hcHBDb250ZXh0LmFwcCwgY29tcG9uZW50LnVpZCwgY29tcG9uZW50LCB0eXBlLCB0aW1lKTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZGV2dG9vbHNDb21wb25lbnRFbWl0KGNvbXBvbmVudCwgZXZlbnQsIHBhcmFtcykge1xyXG4gICAgZW1pdChcImNvbXBvbmVudDplbWl0XCIgLyogQ09NUE9ORU5UX0VNSVQgKi8sIGNvbXBvbmVudC5hcHBDb250ZXh0LmFwcCwgY29tcG9uZW50LCBldmVudCwgcGFyYW1zKTtcclxufVxuXG5mdW5jdGlvbiBlbWl0JDEoaW5zdGFuY2UsIGV2ZW50LCAuLi5yYXdBcmdzKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IGluc3RhbmNlLnZub2RlLnByb3BzIHx8IEVNUFRZX09CSjtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCB7IGVtaXRzT3B0aW9ucywgcHJvcHNPcHRpb25zOiBbcHJvcHNPcHRpb25zXSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgaWYgKGVtaXRzT3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAoIShldmVudCBpbiBlbWl0c09wdGlvbnMpICYmXHJcbiAgICAgICAgICAgICAgICAhKGZhbHNlICkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcHJvcHNPcHRpb25zIHx8ICEodG9IYW5kbGVyS2V5KGV2ZW50KSBpbiBwcm9wc09wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGVtaXR0ZWQgZXZlbnQgXCIke2V2ZW50fVwiIGJ1dCBpdCBpcyBuZWl0aGVyIGRlY2xhcmVkIGluIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgdGhlIGVtaXRzIG9wdGlvbiBub3IgYXMgYW4gXCIke3RvSGFuZGxlcktleShldmVudCl9XCIgcHJvcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IGVtaXRzT3B0aW9uc1tldmVudF07XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWxpZGF0b3IpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRvciguLi5yYXdBcmdzKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSW52YWxpZCBldmVudCBhcmd1bWVudHM6IGV2ZW50IHZhbGlkYXRpb24gZmFpbGVkIGZvciBldmVudCBcIiR7ZXZlbnR9XCIuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGFyZ3MgPSByYXdBcmdzO1xyXG4gICAgY29uc3QgaXNNb2RlbExpc3RlbmVyID0gZXZlbnQuc3RhcnRzV2l0aCgndXBkYXRlOicpO1xyXG4gICAgLy8gZm9yIHYtbW9kZWwgdXBkYXRlOnh4eCBldmVudHMsIGFwcGx5IG1vZGlmaWVycyBvbiBhcmdzXHJcbiAgICBjb25zdCBtb2RlbEFyZyA9IGlzTW9kZWxMaXN0ZW5lciAmJiBldmVudC5zbGljZSg3KTtcclxuICAgIGlmIChtb2RlbEFyZyAmJiBtb2RlbEFyZyBpbiBwcm9wcykge1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVyc0tleSA9IGAke21vZGVsQXJnID09PSAnbW9kZWxWYWx1ZScgPyAnbW9kZWwnIDogbW9kZWxBcmd9TW9kaWZpZXJzYDtcclxuICAgICAgICBjb25zdCB7IG51bWJlciwgdHJpbSB9ID0gcHJvcHNbbW9kaWZpZXJzS2V5XSB8fCBFTVBUWV9PQko7XHJcbiAgICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICAgICAgYXJncyA9IHJhd0FyZ3MubWFwKGEgPT4gYS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChudW1iZXIpIHtcclxuICAgICAgICAgICAgYXJncyA9IHJhd0FyZ3MubWFwKHRvTnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIGRldnRvb2xzQ29tcG9uZW50RW1pdChpbnN0YW5jZSwgZXZlbnQsIGFyZ3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGxvd2VyQ2FzZUV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAobG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHByb3BzW3RvSGFuZGxlcktleShsb3dlckNhc2VFdmVudCldKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEV2ZW50IFwiJHtsb3dlckNhc2VFdmVudH1cIiBpcyBlbWl0dGVkIGluIGNvbXBvbmVudCBgICtcclxuICAgICAgICAgICAgICAgIGAke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIGluc3RhbmNlLnR5cGUpfSBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXCIke2V2ZW50fVwiLiBgICtcclxuICAgICAgICAgICAgICAgIGBOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5b3UgY2Fubm90IHVzZSBgICtcclxuICAgICAgICAgICAgICAgIGB2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENhc2UgZXZlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIHRlbXBsYXRlcy4gYCArXHJcbiAgICAgICAgICAgICAgICBgWW91IHNob3VsZCBwcm9iYWJseSB1c2UgXCIke2h5cGhlbmF0ZShldmVudCl9XCIgaW5zdGVhZCBvZiBcIiR7ZXZlbnR9XCIuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGhhbmRsZXJOYW1lO1xyXG4gICAgbGV0IGhhbmRsZXIgPSBwcm9wc1soaGFuZGxlck5hbWUgPSB0b0hhbmRsZXJLZXkoZXZlbnQpKV0gfHxcclxuICAgICAgICAvLyBhbHNvIHRyeSBjYW1lbENhc2UgZXZlbnQgaGFuZGxlciAoIzIyNDkpXHJcbiAgICAgICAgcHJvcHNbKGhhbmRsZXJOYW1lID0gdG9IYW5kbGVyS2V5KGNhbWVsaXplKGV2ZW50KSkpXTtcclxuICAgIC8vIGZvciB2LW1vZGVsIHVwZGF0ZTp4eHggZXZlbnRzLCBhbHNvIHRyaWdnZXIga2ViYWItY2FzZSBlcXVpdmFsZW50XHJcbiAgICAvLyBmb3IgcHJvcHMgcGFzc2VkIHZpYSBrZWJhYi1jYXNlXHJcbiAgICBpZiAoIWhhbmRsZXIgJiYgaXNNb2RlbExpc3RlbmVyKSB7XHJcbiAgICAgICAgaGFuZGxlciA9IHByb3BzWyhoYW5kbGVyTmFtZSA9IHRvSGFuZGxlcktleShoeXBoZW5hdGUoZXZlbnQpKSldO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhbmRsZXIpIHtcclxuICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhoYW5kbGVyLCBpbnN0YW5jZSwgNiAvKiBDT01QT05FTlRfRVZFTlRfSEFORExFUiAqLywgYXJncyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbmNlSGFuZGxlciA9IHByb3BzW2hhbmRsZXJOYW1lICsgYE9uY2VgXTtcclxuICAgIGlmIChvbmNlSGFuZGxlcikge1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UuZW1pdHRlZCkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5lbWl0dGVkID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLmVtaXR0ZWRbaGFuZGxlck5hbWVdKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5zdGFuY2UuZW1pdHRlZFtoYW5kbGVyTmFtZV0gPSB0cnVlO1xyXG4gICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKG9uY2VIYW5kbGVyLCBpbnN0YW5jZSwgNiAvKiBDT01QT05FTlRfRVZFTlRfSEFORExFUiAqLywgYXJncyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplRW1pdHNPcHRpb25zKGNvbXAsIGFwcENvbnRleHQsIGFzTWl4aW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgY2FjaGUgPSBhcHBDb250ZXh0LmVtaXRzQ2FjaGU7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoY29tcCk7XHJcbiAgICBpZiAoY2FjaGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmF3ID0gY29tcC5lbWl0cztcclxuICAgIGxldCBub3JtYWxpemVkID0ge307XHJcbiAgICAvLyBhcHBseSBtaXhpbi9leHRlbmRzIHByb3BzXHJcbiAgICBsZXQgaGFzRXh0ZW5kcyA9IGZhbHNlO1xyXG4gICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIWlzRnVuY3Rpb24oY29tcCkpIHtcclxuICAgICAgICBjb25zdCBleHRlbmRFbWl0cyA9IChyYXcpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZyb21FeHRlbmQgPSBub3JtYWxpemVFbWl0c09wdGlvbnMocmF3LCBhcHBDb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRGcm9tRXh0ZW5kKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNFeHRlbmRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGV4dGVuZChub3JtYWxpemVkLCBub3JtYWxpemVkRnJvbUV4dGVuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghYXNNaXhpbiAmJiBhcHBDb250ZXh0Lm1peGlucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgYXBwQ29udGV4dC5taXhpbnMuZm9yRWFjaChleHRlbmRFbWl0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb21wLmV4dGVuZHMpIHtcclxuICAgICAgICAgICAgZXh0ZW5kRW1pdHMoY29tcC5leHRlbmRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAubWl4aW5zKSB7XHJcbiAgICAgICAgICAgIGNvbXAubWl4aW5zLmZvckVhY2goZXh0ZW5kRW1pdHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghcmF3ICYmICFoYXNFeHRlbmRzKSB7XHJcbiAgICAgICAgY2FjaGUuc2V0KGNvbXAsIG51bGwpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgIHJhdy5mb3JFYWNoKGtleSA9PiAobm9ybWFsaXplZFtrZXldID0gbnVsbCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIHJhdyk7XHJcbiAgICB9XHJcbiAgICBjYWNoZS5zZXQoY29tcCwgbm9ybWFsaXplZCk7XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxufVxyXG4vLyBDaGVjayBpZiBhbiBpbmNvbWluZyBwcm9wIGtleSBpcyBhIGRlY2xhcmVkIGVtaXQgZXZlbnQgbGlzdGVuZXIuXHJcbi8vIGUuZy4gV2l0aCBgZW1pdHM6IHsgY2xpY2s6IG51bGwgfWAsIHByb3BzIG5hbWVkIGBvbkNsaWNrYCBhbmQgYG9uY2xpY2tgIGFyZVxyXG4vLyBib3RoIGNvbnNpZGVyZWQgbWF0Y2hlZCBsaXN0ZW5lcnMuXHJcbmZ1bmN0aW9uIGlzRW1pdExpc3RlbmVyKG9wdGlvbnMsIGtleSkge1xyXG4gICAgaWYgKCFvcHRpb25zIHx8ICFpc09uKGtleSkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBrZXkgPSBrZXkuc2xpY2UoMikucmVwbGFjZSgvT25jZSQvLCAnJyk7XHJcbiAgICByZXR1cm4gKGhhc093bihvcHRpb25zLCBrZXlbMF0udG9Mb3dlckNhc2UoKSArIGtleS5zbGljZSgxKSkgfHxcclxuICAgICAgICBoYXNPd24ob3B0aW9ucywgaHlwaGVuYXRlKGtleSkpIHx8XHJcbiAgICAgICAgaGFzT3duKG9wdGlvbnMsIGtleSkpO1xyXG59XG5cbi8qKlxyXG4gKiBtYXJrIHRoZSBjdXJyZW50IHJlbmRlcmluZyBpbnN0YW5jZSBmb3IgYXNzZXQgcmVzb2x1dGlvbiAoZS5nLlxyXG4gKiByZXNvbHZlQ29tcG9uZW50LCByZXNvbHZlRGlyZWN0aXZlKSBkdXJpbmcgcmVuZGVyXHJcbiAqL1xyXG5sZXQgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlID0gbnVsbDtcclxubGV0IGN1cnJlbnRTY29wZUlkID0gbnVsbDtcclxuLyoqXHJcbiAqIE5vdGU6IHJlbmRlcmluZyBjYWxscyBtYXliZSBuZXN0ZWQuIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBwYXJlbnQgcmVuZGVyaW5nXHJcbiAqIGluc3RhbmNlIGlmIHByZXNlbnQsIHdoaWNoIHNob3VsZCBiZSByZXN0b3JlZCBhZnRlciB0aGUgcmVuZGVyIGlzIGRvbmU6XHJcbiAqXHJcbiAqIGBgYGpzXHJcbiAqIGNvbnN0IHByZXYgPSBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoaSlcclxuICogLy8gLi4ucmVuZGVyXHJcbiAqIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2KVxyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgcHJldiA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuICAgIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gICAgY3VycmVudFNjb3BlSWQgPSAoaW5zdGFuY2UgJiYgaW5zdGFuY2UudHlwZS5fX3Njb3BlSWQpIHx8IG51bGw7XHJcbiAgICByZXR1cm4gcHJldjtcclxufVxyXG4vKipcclxuICogU2V0IHNjb3BlIGlkIHdoZW4gY3JlYXRpbmcgaG9pc3RlZCB2bm9kZXMuXHJcbiAqIEBwcml2YXRlIGNvbXBpbGVyIGhlbHBlclxyXG4gKi9cclxuZnVuY3Rpb24gcHVzaFNjb3BlSWQoaWQpIHtcclxuICAgIGN1cnJlbnRTY29wZUlkID0gaWQ7XHJcbn1cclxuLyoqXHJcbiAqIFRlY2huaWNhbGx5IHdlIG5vIGxvbmdlciBuZWVkIHRoaXMgYWZ0ZXIgMy4wLjggYnV0IHdlIG5lZWQgdG8ga2VlcCB0aGUgc2FtZVxyXG4gKiBBUEkgZm9yIGJhY2t3YXJkcyBjb21wYXQgdy8gY29kZSBnZW5lcmF0ZWQgYnkgY29tcGlsZXJzLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcG9wU2NvcGVJZCgpIHtcclxuICAgIGN1cnJlbnRTY29wZUlkID0gbnVsbDtcclxufVxyXG4vKipcclxuICogT25seSBmb3IgYmFja3dhcmRzIGNvbXBhdFxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3Qgd2l0aFNjb3BlSWQgPSAoX2lkKSA9PiB3aXRoQ3R4O1xyXG4vKipcclxuICogV3JhcCBhIHNsb3QgZnVuY3Rpb24gdG8gbWVtb2l6ZSBjdXJyZW50IHJlbmRlcmluZyBpbnN0YW5jZVxyXG4gKiBAcHJpdmF0ZSBjb21waWxlciBoZWxwZXJcclxuICovXHJcbmZ1bmN0aW9uIHdpdGhDdHgoZm4sIGN0eCA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSwgaXNOb25TY29wZWRTbG90IC8vIGZhbHNlIG9ubHlcclxuKSB7XHJcbiAgICBpZiAoIWN0eClcclxuICAgICAgICByZXR1cm4gZm47XHJcbiAgICAvLyBhbHJlYWR5IG5vcm1hbGl6ZWRcclxuICAgIGlmIChmbi5fbikge1xyXG4gICAgICAgIHJldHVybiBmbjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlbmRlckZuV2l0aENvbnRleHQgPSAoLi4uYXJncykgPT4ge1xyXG4gICAgICAgIC8vIElmIGEgdXNlciBjYWxscyBhIGNvbXBpbGVkIHNsb3QgaW5zaWRlIGEgdGVtcGxhdGUgZXhwcmVzc2lvbiAoIzE3NDUpLCBpdFxyXG4gICAgICAgIC8vIGNhbiBtZXNzIHVwIGJsb2NrIHRyYWNraW5nLCBzbyBieSBkZWZhdWx0IHdlIGRpc2FibGUgYmxvY2sgdHJhY2tpbmcgYW5kXHJcbiAgICAgICAgLy8gZm9yY2UgYmFpbCBvdXQgd2hlbiBpbnZva2luZyBhIGNvbXBpbGVkIHNsb3QgKGluZGljYXRlZCBieSB0aGUgLl9kIGZsYWcpLlxyXG4gICAgICAgIC8vIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5IGlmIHJlbmRlcmluZyBhIGNvbXBpbGVkIGA8c2xvdD5gLCBzbyB3ZSBmbGlwIHRoZVxyXG4gICAgICAgIC8vIC5fZCBmbGFnIG9mZiB3aGVuIGludm9raW5nIHRoZSB3cmFwcGVkIGZuIGluc2lkZSBgcmVuZGVyU2xvdGAuXHJcbiAgICAgICAgaWYgKHJlbmRlckZuV2l0aENvbnRleHQuX2QpIHtcclxuICAgICAgICAgICAgc2V0QmxvY2tUcmFja2luZygtMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHByZXZJbnN0YW5jZSA9IHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShjdHgpO1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGZuKC4uLmFyZ3MpO1xyXG4gICAgICAgIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2SW5zdGFuY2UpO1xyXG4gICAgICAgIGlmIChyZW5kZXJGbldpdGhDb250ZXh0Ll9kKSB7XHJcbiAgICAgICAgICAgIHNldEJsb2NrVHJhY2tpbmcoMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZChjdHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfTtcclxuICAgIC8vIG1hcmsgbm9ybWFsaXplZCB0byBhdm9pZCBkdXBsaWNhdGVkIHdyYXBwaW5nXHJcbiAgICByZW5kZXJGbldpdGhDb250ZXh0Ll9uID0gdHJ1ZTtcclxuICAgIC8vIG1hcmsgdGhpcyBhcyBjb21waWxlZCBieSBkZWZhdWx0XHJcbiAgICAvLyB0aGlzIGlzIHVzZWQgaW4gdm5vZGUudHMgLT4gbm9ybWFsaXplQ2hpbGRyZW4oKSB0byBzZXQgdGhlIHNsb3RcclxuICAgIC8vIHJlbmRlcmluZyBmbGFnLlxyXG4gICAgcmVuZGVyRm5XaXRoQ29udGV4dC5fYyA9IHRydWU7XHJcbiAgICAvLyBkaXNhYmxlIGJsb2NrIHRyYWNraW5nIGJ5IGRlZmF1bHRcclxuICAgIHJlbmRlckZuV2l0aENvbnRleHQuX2QgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHJlbmRlckZuV2l0aENvbnRleHQ7XHJcbn1cblxuLyoqXHJcbiAqIGRldiBvbmx5IGZsYWcgdG8gdHJhY2sgd2hldGhlciAkYXR0cnMgd2FzIHVzZWQgZHVyaW5nIHJlbmRlci5cclxuICogSWYgJGF0dHJzIHdhcyB1c2VkIGR1cmluZyByZW5kZXIgdGhlbiB0aGUgd2FybmluZyBmb3IgZmFpbGVkIGF0dHJzXHJcbiAqIGZhbGx0aHJvdWdoIGNhbiBiZSBzdXBwcmVzc2VkLlxyXG4gKi9cclxubGV0IGFjY2Vzc2VkQXR0cnMgPSBmYWxzZTtcclxuZnVuY3Rpb24gbWFya0F0dHJzQWNjZXNzZWQoKSB7XHJcbiAgICBhY2Nlc3NlZEF0dHJzID0gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IHR5cGU6IENvbXBvbmVudCwgdm5vZGUsIHByb3h5LCB3aXRoUHJveHksIHByb3BzLCBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdLCBzbG90cywgYXR0cnMsIGVtaXQsIHJlbmRlciwgcmVuZGVyQ2FjaGUsIGRhdGEsIHNldHVwU3RhdGUsIGN0eCwgaW5oZXJpdEF0dHJzIH0gPSBpbnN0YW5jZTtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBsZXQgZmFsbHRocm91Z2hBdHRycztcclxuICAgIGNvbnN0IHByZXYgPSBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGFjY2Vzc2VkQXR0cnMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDQgLyogU1RBVEVGVUxfQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgIC8vIHdpdGhQcm94eSBpcyBhIHByb3h5IHdpdGggYSBkaWZmZXJlbnQgYGhhc2AgdHJhcCBvbmx5IGZvclxyXG4gICAgICAgICAgICAvLyBydW50aW1lLWNvbXBpbGVkIHJlbmRlciBmdW5jdGlvbnMgdXNpbmcgYHdpdGhgIGJsb2NrLlxyXG4gICAgICAgICAgICBjb25zdCBwcm94eVRvVXNlID0gd2l0aFByb3h5IHx8IHByb3h5O1xyXG4gICAgICAgICAgICByZXN1bHQgPSBub3JtYWxpemVWTm9kZShyZW5kZXIuY2FsbChwcm94eVRvVXNlLCBwcm94eVRvVXNlLCByZW5kZXJDYWNoZSwgcHJvcHMsIHNldHVwU3RhdGUsIGRhdGEsIGN0eCkpO1xyXG4gICAgICAgICAgICBmYWxsdGhyb3VnaEF0dHJzID0gYXR0cnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbmFsXHJcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IENvbXBvbmVudDtcclxuICAgICAgICAgICAgLy8gaW4gZGV2LCBtYXJrIGF0dHJzIGFjY2Vzc2VkIGlmIG9wdGlvbmFsIHByb3BzIChhdHRycyA9PT0gcHJvcHMpXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgYXR0cnMgPT09IHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IG5vcm1hbGl6ZVZOb2RlKHJlbmRlci5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICA/IHJlbmRlcihwcm9wcywgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBhdHRycygpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0cnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDogeyBhdHRycywgc2xvdHMsIGVtaXQgfSlcclxuICAgICAgICAgICAgICAgIDogcmVuZGVyKHByb3BzLCBudWxsIC8qIHdlIGtub3cgaXQgZG9lc24ndCBuZWVkIGl0ICovKSk7XHJcbiAgICAgICAgICAgIGZhbGx0aHJvdWdoQXR0cnMgPSBDb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgID8gYXR0cnNcclxuICAgICAgICAgICAgICAgIDogZ2V0RnVuY3Rpb25hbEZhbGx0aHJvdWdoKGF0dHJzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgYmxvY2tTdGFjay5sZW5ndGggPSAwO1xyXG4gICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIDEgLyogUkVOREVSX0ZVTkNUSU9OICovKTtcclxuICAgICAgICByZXN1bHQgPSBjcmVhdGVWTm9kZShDb21tZW50KTtcclxuICAgIH1cclxuICAgIC8vIGF0dHIgbWVyZ2luZ1xyXG4gICAgLy8gaW4gZGV2IG1vZGUsIGNvbW1lbnRzIGFyZSBwcmVzZXJ2ZWQsIGFuZCBpdCdzIHBvc3NpYmxlIGZvciBhIHRlbXBsYXRlXHJcbiAgICAvLyB0byBoYXZlIGNvbW1lbnRzIGFsb25nIHNpZGUgdGhlIHJvb3QgZWxlbWVudCB3aGljaCBtYWtlcyBpdCBhIGZyYWdtZW50XHJcbiAgICBsZXQgcm9vdCA9IHJlc3VsdDtcclxuICAgIGxldCBzZXRSb290ID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgIHJlc3VsdC5wYXRjaEZsYWcgPiAwICYmXHJcbiAgICAgICAgcmVzdWx0LnBhdGNoRmxhZyAmIDIwNDggLyogREVWX1JPT1RfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICBbcm9vdCwgc2V0Um9vdF0gPSBnZXRDaGlsZFJvb3QocmVzdWx0KTtcclxuICAgIH1cclxuICAgIGlmIChmYWxsdGhyb3VnaEF0dHJzICYmIGluaGVyaXRBdHRycyAhPT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZmFsbHRocm91Z2hBdHRycyk7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZUZsYWcgfSA9IHJvb3Q7XHJcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAoMSAvKiBFTEVNRU5UICovIHwgNiAvKiBDT01QT05FTlQgKi8pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNPcHRpb25zICYmIGtleXMuc29tZShpc01vZGVsTGlzdGVuZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSB2LW1vZGVsIGxpc3RlbmVyIChvblVwZGF0ZTp4eHgpIGhhcyBhIGNvcnJlc3BvbmRpbmcgZGVjbGFyZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBwcm9wLCBpdCBpbmRpY2F0ZXMgdGhpcyBjb21wb25lbnQgZXhwZWN0cyB0byBoYW5kbGUgdi1tb2RlbCBhbmRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdCBzaG91bGQgbm90IGZhbGx0aHJvdWdoLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbGF0ZWQ6ICMxNTQzLCAjMTY0MywgIzE5ODlcclxuICAgICAgICAgICAgICAgICAgICBmYWxsdGhyb3VnaEF0dHJzID0gZmlsdGVyTW9kZWxMaXN0ZW5lcnMoZmFsbHRocm91Z2hBdHRycywgcHJvcHNPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJvb3QgPSBjbG9uZVZOb2RlKHJvb3QsIGZhbGx0aHJvdWdoQXR0cnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhYWNjZXNzZWRBdHRycyAmJiByb290LnR5cGUgIT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFsbEF0dHJzID0gT2JqZWN0LmtleXMoYXR0cnMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnRBdHRycyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXh0cmFBdHRycyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBhbGxBdHRycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhbGxBdHRyc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbihrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSB2LW1vZGVsIGhhbmRsZXJzIHdoZW4gdGhleSBmYWlsIHRvIGZhbGx0aHJvdWdoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNNb2RlbExpc3RlbmVyKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBgb25gLCBsb3dlcmNhc2UgZmlyc3QgbGV0dGVyIHRvIHJlZmxlY3QgZXZlbnQgY2FzaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmF0ZWx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudEF0dHJzLnB1c2goa2V5WzJdLnRvTG93ZXJDYXNlKCkgKyBrZXkuc2xpY2UoMykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYUF0dHJzLnB1c2goa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFBdHRycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBFeHRyYW5lb3VzIG5vbi1wcm9wcyBhdHRyaWJ1dGVzIChgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7ZXh0cmFBdHRycy5qb2luKCcsICcpfSkgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB3ZXJlIHBhc3NlZCB0byBjb21wb25lbnQgYnV0IGNvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGluaGVyaXRlZCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGJlY2F1c2UgY29tcG9uZW50IHJlbmRlcnMgZnJhZ21lbnQgb3IgdGV4dCByb290IG5vZGVzLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50QXR0cnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgRXh0cmFuZW91cyBub24tZW1pdHMgZXZlbnQgbGlzdGVuZXJzIChgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7ZXZlbnRBdHRycy5qb2luKCcsICcpfSkgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB3ZXJlIHBhc3NlZCB0byBjb21wb25lbnQgYnV0IGNvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGluaGVyaXRlZCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGJlY2F1c2UgY29tcG9uZW50IHJlbmRlcnMgZnJhZ21lbnQgb3IgdGV4dCByb290IG5vZGVzLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYElmIHRoZSBsaXN0ZW5lciBpcyBpbnRlbmRlZCB0byBiZSBhIGNvbXBvbmVudCBjdXN0b20gZXZlbnQgbGlzdGVuZXIgb25seSwgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBkZWNsYXJlIGl0IHVzaW5nIHRoZSBcImVtaXRzXCIgb3B0aW9uLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gaW5oZXJpdCBkaXJlY3RpdmVzXHJcbiAgICBpZiAodm5vZGUuZGlycykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzRWxlbWVudFJvb3Qocm9vdCkpIHtcclxuICAgICAgICAgICAgd2FybihgUnVudGltZSBkaXJlY3RpdmUgdXNlZCBvbiBjb21wb25lbnQgd2l0aCBub24tZWxlbWVudCByb290IG5vZGUuIGAgK1xyXG4gICAgICAgICAgICAgICAgYFRoZSBkaXJlY3RpdmVzIHdpbGwgbm90IGZ1bmN0aW9uIGFzIGludGVuZGVkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb290LmRpcnMgPSByb290LmRpcnMgPyByb290LmRpcnMuY29uY2F0KHZub2RlLmRpcnMpIDogdm5vZGUuZGlycztcclxuICAgIH1cclxuICAgIC8vIGluaGVyaXQgdHJhbnNpdGlvbiBkYXRhXHJcbiAgICBpZiAodm5vZGUudHJhbnNpdGlvbikge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzRWxlbWVudFJvb3Qocm9vdCkpIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGluc2lkZSA8VHJhbnNpdGlvbj4gcmVuZGVycyBub24tZWxlbWVudCByb290IG5vZGUgYCArXHJcbiAgICAgICAgICAgICAgICBgdGhhdCBjYW5ub3QgYmUgYW5pbWF0ZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3QudHJhbnNpdGlvbiA9IHZub2RlLnRyYW5zaXRpb247XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNldFJvb3QpIHtcclxuICAgICAgICBzZXRSb290KHJvb3QpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcm9vdDtcclxuICAgIH1cclxuICAgIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqIEluIGRldiBtb2RlLCB0ZW1wbGF0ZSByb290IGxldmVsIGNvbW1lbnRzIGFyZSByZW5kZXJlZCwgd2hpY2ggdHVybnMgdGhlXHJcbiAqIHRlbXBsYXRlIGludG8gYSBmcmFnbWVudCByb290LCBidXQgd2UgbmVlZCB0byBsb2NhdGUgdGhlIHNpbmdsZSBlbGVtZW50XHJcbiAqIHJvb3QgZm9yIGF0dHJzIGFuZCBzY29wZSBpZCBwcm9jZXNzaW5nLlxyXG4gKi9cclxuY29uc3QgZ2V0Q2hpbGRSb290ID0gKHZub2RlKSA9PiB7XHJcbiAgICBjb25zdCByYXdDaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xyXG4gICAgY29uc3QgZHluYW1pY0NoaWxkcmVuID0gdm5vZGUuZHluYW1pY0NoaWxkcmVuO1xyXG4gICAgY29uc3QgY2hpbGRSb290ID0gZmlsdGVyU2luZ2xlUm9vdChyYXdDaGlsZHJlbik7XHJcbiAgICBpZiAoIWNoaWxkUm9vdCkge1xyXG4gICAgICAgIHJldHVybiBbdm5vZGUsIHVuZGVmaW5lZF07XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbmRleCA9IHJhd0NoaWxkcmVuLmluZGV4T2YoY2hpbGRSb290KTtcclxuICAgIGNvbnN0IGR5bmFtaWNJbmRleCA9IGR5bmFtaWNDaGlsZHJlbiA/IGR5bmFtaWNDaGlsZHJlbi5pbmRleE9mKGNoaWxkUm9vdCkgOiAtMTtcclxuICAgIGNvbnN0IHNldFJvb3QgPSAodXBkYXRlZFJvb3QpID0+IHtcclxuICAgICAgICByYXdDaGlsZHJlbltpbmRleF0gPSB1cGRhdGVkUm9vdDtcclxuICAgICAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuW2R5bmFtaWNJbmRleF0gPSB1cGRhdGVkUm9vdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh1cGRhdGVkUm9vdC5wYXRjaEZsYWcgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5keW5hbWljQ2hpbGRyZW4gPSBbLi4uZHluYW1pY0NoaWxkcmVuLCB1cGRhdGVkUm9vdF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFtub3JtYWxpemVWTm9kZShjaGlsZFJvb3QpLCBzZXRSb290XTtcclxufTtcclxuZnVuY3Rpb24gZmlsdGVyU2luZ2xlUm9vdChjaGlsZHJlbikge1xyXG4gICAgbGV0IHNpbmdsZVJvb3Q7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcclxuICAgICAgICAgICAgLy8gaWdub3JlIHVzZXIgY29tbWVudFxyXG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSAhPT0gQ29tbWVudCB8fCBjaGlsZC5jaGlsZHJlbiA9PT0gJ3YtaWYnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlUm9vdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGhhcyBtb3JlIHRoYW4gMSBub24tY29tbWVudCBjaGlsZCwgcmV0dXJuIG5vd1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVJvb3QgPSBjaGlsZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzaW5nbGVSb290O1xyXG59XHJcbmNvbnN0IGdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaCA9IChhdHRycykgPT4ge1xyXG4gICAgbGV0IHJlcztcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCBrZXkgPT09ICdzdHlsZScgfHwgaXNPbihrZXkpKSB7XHJcbiAgICAgICAgICAgIChyZXMgfHwgKHJlcyA9IHt9KSlba2V5XSA9IGF0dHJzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufTtcclxuY29uc3QgZmlsdGVyTW9kZWxMaXN0ZW5lcnMgPSAoYXR0cnMsIHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCByZXMgPSB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XHJcbiAgICAgICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSB8fCAhKGtleS5zbGljZSg5KSBpbiBwcm9wcykpIHtcclxuICAgICAgICAgICAgcmVzW2tleV0gPSBhdHRyc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn07XHJcbmNvbnN0IGlzRWxlbWVudFJvb3QgPSAodm5vZGUpID0+IHtcclxuICAgIHJldHVybiAodm5vZGUuc2hhcGVGbGFnICYgKDYgLyogQ09NUE9ORU5UICovIHwgMSAvKiBFTEVNRU5UICovKSB8fFxyXG4gICAgICAgIHZub2RlLnR5cGUgPT09IENvbW1lbnQgLy8gcG90ZW50aWFsIHYtaWYgYnJhbmNoIHN3aXRjaFxyXG4gICAgKTtcclxufTtcclxuZnVuY3Rpb24gc2hvdWxkVXBkYXRlQ29tcG9uZW50KHByZXZWTm9kZSwgbmV4dFZOb2RlLCBvcHRpbWl6ZWQpIHtcclxuICAgIGNvbnN0IHsgcHJvcHM6IHByZXZQcm9wcywgY2hpbGRyZW46IHByZXZDaGlsZHJlbiwgY29tcG9uZW50IH0gPSBwcmV2Vk5vZGU7XHJcbiAgICBjb25zdCB7IHByb3BzOiBuZXh0UHJvcHMsIGNoaWxkcmVuOiBuZXh0Q2hpbGRyZW4sIHBhdGNoRmxhZyB9ID0gbmV4dFZOb2RlO1xyXG4gICAgY29uc3QgZW1pdHMgPSBjb21wb25lbnQuZW1pdHNPcHRpb25zO1xyXG4gICAgLy8gUGFyZW50IGNvbXBvbmVudCdzIHJlbmRlciBmdW5jdGlvbiB3YXMgaG90LXVwZGF0ZWQuIFNpbmNlIHRoaXMgbWF5IGhhdmVcclxuICAgIC8vIGNhdXNlZCB0aGUgY2hpbGQgY29tcG9uZW50J3Mgc2xvdHMgY29udGVudCB0byBoYXZlIGNoYW5nZWQsIHdlIG5lZWQgdG9cclxuICAgIC8vIGZvcmNlIHRoZSBjaGlsZCB0byB1cGRhdGUgYXMgd2VsbC5cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgKHByZXZDaGlsZHJlbiB8fCBuZXh0Q2hpbGRyZW4pICYmIGlzSG1yVXBkYXRpbmcpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIGZvcmNlIGNoaWxkIHVwZGF0ZSBmb3IgcnVudGltZSBkaXJlY3RpdmUgb3IgdHJhbnNpdGlvbiBvbiBjb21wb25lbnQgdm5vZGUuXHJcbiAgICBpZiAobmV4dFZOb2RlLmRpcnMgfHwgbmV4dFZOb2RlLnRyYW5zaXRpb24pIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpbWl6ZWQgJiYgcGF0Y2hGbGFnID49IDApIHtcclxuICAgICAgICBpZiAocGF0Y2hGbGFnICYgMTAyNCAvKiBEWU5BTUlDX1NMT1RTICovKSB7XHJcbiAgICAgICAgICAgIC8vIHNsb3QgY29udGVudCB0aGF0IHJlZmVyZW5jZXMgdmFsdWVzIHRoYXQgbWlnaHQgaGF2ZSBjaGFuZ2VkLFxyXG4gICAgICAgICAgICAvLyBlLmcuIGluIGEgdi1mb3JcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgJiAxNiAvKiBGVUxMX1BST1BTICovKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldlByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gISFuZXh0UHJvcHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJlc2VuY2Ugb2YgdGhpcyBmbGFnIGluZGljYXRlcyBwcm9wcyBhcmUgYWx3YXlzIG5vbi1udWxsXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNQcm9wc0NoYW5nZWQocHJldlByb3BzLCBuZXh0UHJvcHMsIGVtaXRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocGF0Y2hGbGFnICYgOCAvKiBQUk9QUyAqLykge1xyXG4gICAgICAgICAgICBjb25zdCBkeW5hbWljUHJvcHMgPSBuZXh0Vk5vZGUuZHluYW1pY1Byb3BzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGR5bmFtaWNQcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZHluYW1pY1Byb3BzW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHRQcm9wc1trZXldICE9PSBwcmV2UHJvcHNba2V5XSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICFpc0VtaXRMaXN0ZW5lcihlbWl0cywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gdGhpcyBwYXRoIGlzIG9ubHkgdGFrZW4gYnkgbWFudWFsbHkgd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zXHJcbiAgICAgICAgLy8gc28gcHJlc2VuY2Ugb2YgYW55IGNoaWxkcmVuIGxlYWRzIHRvIGEgZm9yY2VkIHVwZGF0ZVxyXG4gICAgICAgIGlmIChwcmV2Q2hpbGRyZW4gfHwgbmV4dENoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGlmICghbmV4dENoaWxkcmVuIHx8ICFuZXh0Q2hpbGRyZW4uJHN0YWJsZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHByZXZQcm9wcyA9PT0gbmV4dFByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFwcmV2UHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuICEhbmV4dFByb3BzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW5leHRQcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhc1Byb3BzQ2hhbmdlZChwcmV2UHJvcHMsIG5leHRQcm9wcywgZW1pdHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGhhc1Byb3BzQ2hhbmdlZChwcmV2UHJvcHMsIG5leHRQcm9wcywgZW1pdHNPcHRpb25zKSB7XHJcbiAgICBjb25zdCBuZXh0S2V5cyA9IE9iamVjdC5rZXlzKG5leHRQcm9wcyk7XHJcbiAgICBpZiAobmV4dEtleXMubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhwcmV2UHJvcHMpLmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXh0S2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IG5leHRLZXlzW2ldO1xyXG4gICAgICAgIGlmIChuZXh0UHJvcHNba2V5XSAhPT0gcHJldlByb3BzW2tleV0gJiZcclxuICAgICAgICAgICAgIWlzRW1pdExpc3RlbmVyKGVtaXRzT3B0aW9ucywga2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gdXBkYXRlSE9DSG9zdEVsKHsgdm5vZGUsIHBhcmVudCB9LCBlbCAvLyBIb3N0Tm9kZVxyXG4pIHtcclxuICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50LnN1YlRyZWUgPT09IHZub2RlKSB7XHJcbiAgICAgICAgKHZub2RlID0gcGFyZW50LnZub2RlKS5lbCA9IGVsO1xyXG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgaXNTdXNwZW5zZSA9ICh0eXBlKSA9PiB0eXBlLl9faXNTdXNwZW5zZTtcclxuLy8gU3VzcGVuc2UgZXhwb3NlcyBhIGNvbXBvbmVudC1saWtlIEFQSSwgYW5kIGlzIHRyZWF0ZWQgbGlrZSBhIGNvbXBvbmVudFxyXG4vLyBpbiB0aGUgY29tcGlsZXIsIGJ1dCBpbnRlcm5hbGx5IGl0J3MgYSBzcGVjaWFsIGJ1aWx0LWluIHR5cGUgdGhhdCBob29rc1xyXG4vLyBkaXJlY3RseSBpbnRvIHRoZSByZW5kZXJlci5cclxuY29uc3QgU3VzcGVuc2VJbXBsID0ge1xyXG4gICAgbmFtZTogJ1N1c3BlbnNlJyxcclxuICAgIC8vIEluIG9yZGVyIHRvIG1ha2UgU3VzcGVuc2UgdHJlZS1zaGFrYWJsZSwgd2UgbmVlZCB0byBhdm9pZCBpbXBvcnRpbmcgaXRcclxuICAgIC8vIGRpcmVjdGx5IGluIHRoZSByZW5kZXJlci4gVGhlIHJlbmRlcmVyIGNoZWNrcyBmb3IgdGhlIF9faXNTdXNwZW5zZSBmbGFnXHJcbiAgICAvLyBvbiBhIHZub2RlJ3MgdHlwZSBhbmQgY2FsbHMgdGhlIGBwcm9jZXNzYCBtZXRob2QsIHBhc3NpbmcgaW4gcmVuZGVyZXJcclxuICAgIC8vIGludGVybmFscy5cclxuICAgIF9faXNTdXNwZW5zZTogdHJ1ZSxcclxuICAgIHByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBcclxuICAgIC8vIHBsYXRmb3JtLXNwZWNpZmljIGltcGwgcGFzc2VkIGZyb20gcmVuZGVyZXJcclxuICAgIHJlbmRlcmVySW50ZXJuYWxzKSB7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgbW91bnRTdXNwZW5zZShuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGF0Y2hTdXNwZW5zZShuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBoeWRyYXRlOiBoeWRyYXRlU3VzcGVuc2UsXHJcbiAgICBjcmVhdGU6IGNyZWF0ZVN1c3BlbnNlQm91bmRhcnksXHJcbiAgICBub3JtYWxpemU6IG5vcm1hbGl6ZVN1c3BlbnNlQ2hpbGRyZW5cclxufTtcclxuLy8gRm9yY2UtY2FzdGVkIHB1YmxpYyB0eXBpbmcgZm9yIGggYW5kIFRTWCBwcm9wcyBpbmZlcmVuY2VcclxuY29uc3QgU3VzcGVuc2UgPSAoU3VzcGVuc2VJbXBsICk7XHJcbmZ1bmN0aW9uIHRyaWdnZXJFdmVudCh2bm9kZSwgbmFtZSkge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lciA9IHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzW25hbWVdO1xyXG4gICAgaWYgKGlzRnVuY3Rpb24oZXZlbnRMaXN0ZW5lcikpIHtcclxuICAgICAgICBldmVudExpc3RlbmVyKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbW91bnRTdXNwZW5zZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpIHtcclxuICAgIGNvbnN0IHsgcDogcGF0Y2gsIG86IHsgY3JlYXRlRWxlbWVudCB9IH0gPSByZW5kZXJlckludGVybmFscztcclxuICAgIGNvbnN0IGhpZGRlbkNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgY29uc3Qgc3VzcGVuc2UgPSAodm5vZGUuc3VzcGVuc2UgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHZub2RlLCBwYXJlbnRTdXNwZW5zZSwgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIsIGhpZGRlbkNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzKSk7XHJcbiAgICAvLyBzdGFydCBtb3VudGluZyB0aGUgY29udGVudCBzdWJ0cmVlIGluIGFuIG9mZi1kb20gY29udGFpbmVyXHJcbiAgICBwYXRjaChudWxsLCAoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IHZub2RlLnNzQ29udGVudCksIGhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAvLyBub3cgY2hlY2sgaWYgd2UgaGF2ZSBlbmNvdW50ZXJlZCBhbnkgYXN5bmMgZGVwc1xyXG4gICAgaWYgKHN1c3BlbnNlLmRlcHMgPiAwKSB7XHJcbiAgICAgICAgLy8gaGFzIGFzeW5jXHJcbiAgICAgICAgLy8gaW52b2tlIEBmYWxsYmFjayBldmVudFxyXG4gICAgICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgJ29uUGVuZGluZycpO1xyXG4gICAgICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgJ29uRmFsbGJhY2snKTtcclxuICAgICAgICAvLyBtb3VudCB0aGUgZmFsbGJhY2sgdHJlZVxyXG4gICAgICAgIHBhdGNoKG51bGwsIHZub2RlLnNzRmFsbGJhY2ssIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XHJcbiAgICAgICAgaXNTVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCB2bm9kZS5zc0ZhbGxiYWNrKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIFN1c3BlbnNlIGhhcyBubyBhc3luYyBkZXBzLiBKdXN0IHJlc29sdmUuXHJcbiAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHBhdGNoU3VzcGVuc2UobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHsgcDogcGF0Y2gsIHVtOiB1bm1vdW50LCBvOiB7IGNyZWF0ZUVsZW1lbnQgfSB9KSB7XHJcbiAgICBjb25zdCBzdXNwZW5zZSA9IChuMi5zdXNwZW5zZSA9IG4xLnN1c3BlbnNlKTtcclxuICAgIHN1c3BlbnNlLnZub2RlID0gbjI7XHJcbiAgICBuMi5lbCA9IG4xLmVsO1xyXG4gICAgY29uc3QgbmV3QnJhbmNoID0gbjIuc3NDb250ZW50O1xyXG4gICAgY29uc3QgbmV3RmFsbGJhY2sgPSBuMi5zc0ZhbGxiYWNrO1xyXG4gICAgY29uc3QgeyBhY3RpdmVCcmFuY2gsIHBlbmRpbmdCcmFuY2gsIGlzSW5GYWxsYmFjaywgaXNIeWRyYXRpbmcgfSA9IHN1c3BlbnNlO1xyXG4gICAgaWYgKHBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gbmV3QnJhbmNoO1xyXG4gICAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobmV3QnJhbmNoLCBwZW5kaW5nQnJhbmNoKSkge1xyXG4gICAgICAgICAgICAvLyBzYW1lIHJvb3QgdHlwZSBidXQgY29udGVudCBtYXkgaGF2ZSBjaGFuZ2VkLlxyXG4gICAgICAgICAgICBwYXRjaChwZW5kaW5nQnJhbmNoLCBuZXdCcmFuY2gsIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5GYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2goYWN0aXZlQnJhbmNoLCBuZXdGYWxsYmFjaywgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gZmFsbGJhY2sgdHJlZSB3aWxsIG5vdCBoYXZlIHN1c3BlbnNlIGNvbnRleHRcclxuICAgICAgICAgICAgICAgIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIG5ld0ZhbGxiYWNrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdG9nZ2xlZCBiZWZvcmUgcGVuZGluZyB0cmVlIGlzIHJlc29sdmVkXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdJZCsrO1xyXG4gICAgICAgICAgICBpZiAoaXNIeWRyYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRvZ2dsZWQgYmVmb3JlIGh5ZHJhdGlvbiBpcyBmaW5pc2hlZCwgdGhlIGN1cnJlbnQgRE9NIHRyZWUgaXNcclxuICAgICAgICAgICAgICAgIC8vIG5vIGxvbmdlciB2YWxpZC4gc2V0IGl0IGFzIHRoZSBhY3RpdmUgYnJhbmNoIHNvIGl0IHdpbGwgYmUgdW5tb3VudGVkXHJcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHJlc29sdmVkXHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5pc0h5ZHJhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UuYWN0aXZlQnJhbmNoID0gcGVuZGluZ0JyYW5jaDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQocGVuZGluZ0JyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaW5jcmVtZW50IHBlbmRpbmcgSUQuIHRoaXMgaXMgdXNlZCB0byBpbnZhbGlkYXRlIGFzeW5jIGNhbGxiYWNrc1xyXG4gICAgICAgICAgICAvLyByZXNldCBzdXNwZW5zZSBzdGF0ZVxyXG4gICAgICAgICAgICBzdXNwZW5zZS5kZXBzID0gMDtcclxuICAgICAgICAgICAgLy8gZGlzY2FyZCBlZmZlY3RzIGZyb20gcGVuZGluZyBicmFuY2hcclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAvLyBkaXNjYXJkIHByZXZpb3VzIGNvbnRhaW5lclxyXG4gICAgICAgICAgICBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICAgICAgaWYgKGlzSW5GYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBpbiBmYWxsYmFjayBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgbmV3QnJhbmNoLCBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2goYWN0aXZlQnJhbmNoLCBuZXdGYWxsYmFjaywgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gZmFsbGJhY2sgdHJlZSB3aWxsIG5vdCBoYXZlIHN1c3BlbnNlIGNvbnRleHRcclxuICAgICAgICAgICAgICAgICAgICBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgbmV3RmFsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGFjdGl2ZUJyYW5jaCAmJiBpc1NhbWVWTm9kZVR5cGUobmV3QnJhbmNoLCBhY3RpdmVCcmFuY2gpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0b2dnbGVkIFwiYmFja1wiIHRvIGN1cnJlbnQgYWN0aXZlIGJyYW5jaFxyXG4gICAgICAgICAgICAgICAgcGF0Y2goYWN0aXZlQnJhbmNoLCBuZXdCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgLy8gZm9yY2UgcmVzb2x2ZVxyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHN3aXRjaGVkIHRvIGEgM3JkIGJyYW5jaFxyXG4gICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgbmV3QnJhbmNoLCBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZUJyYW5jaCAmJiBpc1NhbWVWTm9kZVR5cGUobmV3QnJhbmNoLCBhY3RpdmVCcmFuY2gpKSB7XHJcbiAgICAgICAgICAgIC8vIHJvb3QgZGlkIG5vdCBjaGFuZ2UsIGp1c3Qgbm9ybWFsIHBhdGNoXHJcbiAgICAgICAgICAgIHBhdGNoKGFjdGl2ZUJyYW5jaCwgbmV3QnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBuZXdCcmFuY2gpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gcm9vdCBub2RlIHRvZ2dsZWRcclxuICAgICAgICAgICAgLy8gaW52b2tlIEBwZW5kaW5nIGV2ZW50XHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudChuMiwgJ29uUGVuZGluZycpO1xyXG4gICAgICAgICAgICAvLyBtb3VudCBwZW5kaW5nIGJyYW5jaCBpbiBvZmYtZG9tIGNvbnRhaW5lclxyXG4gICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gbmV3QnJhbmNoO1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nSWQrKztcclxuICAgICAgICAgICAgcGF0Y2gobnVsbCwgbmV3QnJhbmNoLCBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGluY29taW5nIGJyYW5jaCBoYXMgbm8gYXN5bmMgZGVwcywgcmVzb2x2ZSBub3cuXHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRpbWVvdXQsIHBlbmRpbmdJZCB9ID0gc3VzcGVuc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAodGltZW91dCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdJZCA9PT0gcGVuZGluZ0lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5mYWxsYmFjayhuZXdGYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCB0aW1lb3V0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVvdXQgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5mYWxsYmFjayhuZXdGYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxubGV0IGhhc1dhcm5lZCA9IGZhbHNlO1xyXG5mdW5jdGlvbiBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHZub2RlLCBwYXJlbnQsIHBhcmVudENvbXBvbmVudCwgY29udGFpbmVyLCBoaWRkZW5Db250YWluZXIsIGFuY2hvciwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgaXNIeWRyYXRpbmcgPSBmYWxzZSkge1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFmYWxzZSAmJiAhaGFzV2FybmVkKSB7XHJcbiAgICAgICAgaGFzV2FybmVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlIGBjb25zb2xlLmluZm9gIGNhbm5vdCBiZSBudWxsIGVycm9yXHJcbiAgICAgICAgY29uc29sZVtjb25zb2xlLmluZm8gPyAnaW5mbycgOiAnbG9nJ10oYDxTdXNwZW5zZT4gaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5kIGl0cyBBUEkgd2lsbCBsaWtlbHkgY2hhbmdlLmApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBwOiBwYXRjaCwgbTogbW92ZSwgdW06IHVubW91bnQsIG46IG5leHQsIG86IHsgcGFyZW50Tm9kZSwgcmVtb3ZlIH0gfSA9IHJlbmRlcmVySW50ZXJuYWxzO1xyXG4gICAgY29uc3QgdGltZW91dCA9IHRvTnVtYmVyKHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLnRpbWVvdXQpO1xyXG4gICAgY29uc3Qgc3VzcGVuc2UgPSB7XHJcbiAgICAgICAgdm5vZGUsXHJcbiAgICAgICAgcGFyZW50LFxyXG4gICAgICAgIHBhcmVudENvbXBvbmVudCxcclxuICAgICAgICBpc1NWRyxcclxuICAgICAgICBjb250YWluZXIsXHJcbiAgICAgICAgaGlkZGVuQ29udGFpbmVyLFxyXG4gICAgICAgIGFuY2hvcixcclxuICAgICAgICBkZXBzOiAwLFxyXG4gICAgICAgIHBlbmRpbmdJZDogMCxcclxuICAgICAgICB0aW1lb3V0OiB0eXBlb2YgdGltZW91dCA9PT0gJ251bWJlcicgPyB0aW1lb3V0IDogLTEsXHJcbiAgICAgICAgYWN0aXZlQnJhbmNoOiBudWxsLFxyXG4gICAgICAgIHBlbmRpbmdCcmFuY2g6IG51bGwsXHJcbiAgICAgICAgaXNJbkZhbGxiYWNrOiB0cnVlLFxyXG4gICAgICAgIGlzSHlkcmF0aW5nLFxyXG4gICAgICAgIGlzVW5tb3VudGVkOiBmYWxzZSxcclxuICAgICAgICBlZmZlY3RzOiBbXSxcclxuICAgICAgICByZXNvbHZlKHJlc3VtZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzdW1lICYmICFzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzdXNwZW5zZS5yZXNvbHZlKCkgaXMgY2FsbGVkIHdpdGhvdXQgYSBwZW5kaW5nIGJyYW5jaC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChzdXNwZW5zZS5pc1VubW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc3VzcGVuc2UucmVzb2x2ZSgpIGlzIGNhbGxlZCBvbiBhbiBhbHJlYWR5IHVubW91bnRlZCBzdXNwZW5zZSBib3VuZGFyeS5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB7IHZub2RlLCBhY3RpdmVCcmFuY2gsIHBlbmRpbmdCcmFuY2gsIHBlbmRpbmdJZCwgZWZmZWN0cywgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIgfSA9IHN1c3BlbnNlO1xyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UuaXNIeWRyYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLmlzSHlkcmF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIXJlc3VtZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGVsYXlFbnRlciA9IGFjdGl2ZUJyYW5jaCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdCcmFuY2gudHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdCcmFuY2gudHJhbnNpdGlvbi5tb2RlID09PSAnb3V0LWluJztcclxuICAgICAgICAgICAgICAgIGlmIChkZWxheUVudGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlQnJhbmNoLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdJZCA9PT0gc3VzcGVuc2UucGVuZGluZ0lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKHBlbmRpbmdCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCAwIC8qIEVOVEVSICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGluaXRpYWwgYW5jaG9yIG9uIG1vdW50XHJcbiAgICAgICAgICAgICAgICBsZXQgeyBhbmNob3IgfSA9IHN1c3BlbnNlO1xyXG4gICAgICAgICAgICAgICAgLy8gdW5tb3VudCBjdXJyZW50IGFjdGl2ZSB0cmVlXHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGZhbGxiYWNrIHRyZWUgd2FzIG1vdW50ZWQsIGl0IG1heSBoYXZlIGJlZW4gbW92ZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBhcyBwYXJ0IG9mIGEgcGFyZW50IHN1c3BlbnNlLiBnZXQgdGhlIGxhdGVzdCBhbmNob3IgZm9yIGluc2VydGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGFuY2hvciA9IG5leHQoYWN0aXZlQnJhbmNoKTtcclxuICAgICAgICAgICAgICAgICAgICB1bm1vdW50KGFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRlbGF5RW50ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGNvbnRlbnQgZnJvbSBvZmYtZG9tIGNvbnRhaW5lciB0byBhY3R1YWwgY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZShwZW5kaW5nQnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgMCAvKiBFTlRFUiAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBwZW5kaW5nQnJhbmNoKTtcclxuICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IG51bGw7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmlzSW5GYWxsYmFjayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBmbHVzaCBidWZmZXJlZCBlZmZlY3RzXHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGEgcGVuZGluZyBwYXJlbnQgc3VzcGVuc2VcclxuICAgICAgICAgICAgbGV0IHBhcmVudCA9IHN1c3BlbnNlLnBhcmVudDtcclxuICAgICAgICAgICAgbGV0IGhhc1VucmVzb2x2ZWRBbmNlc3RvciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50LnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBmb3VuZCBhIHBlbmRpbmcgcGFyZW50IHN1c3BlbnNlLCBtZXJnZSBidWZmZXJlZCBwb3N0IGpvYnNcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIHRoYXQgcGFyZW50XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmVmZmVjdHMucHVzaCguLi5lZmZlY3RzKTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNVbnJlc29sdmVkQW5jZXN0b3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBubyBwZW5kaW5nIHBhcmVudCBzdXNwZW5zZSwgZmx1c2ggYWxsIGpvYnNcclxuICAgICAgICAgICAgaWYgKCFoYXNVbnJlc29sdmVkQW5jZXN0b3IpIHtcclxuICAgICAgICAgICAgICAgIHF1ZXVlUG9zdEZsdXNoQ2IoZWZmZWN0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cyA9IFtdO1xyXG4gICAgICAgICAgICAvLyBpbnZva2UgQHJlc29sdmUgZXZlbnRcclxuICAgICAgICAgICAgdHJpZ2dlckV2ZW50KHZub2RlLCAnb25SZXNvbHZlJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWxsYmFjayhmYWxsYmFja1ZOb2RlKSB7XHJcbiAgICAgICAgICAgIGlmICghc3VzcGVuc2UucGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdm5vZGUsIGFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIsIGlzU1ZHIH0gPSBzdXNwZW5zZTtcclxuICAgICAgICAgICAgLy8gaW52b2tlIEBmYWxsYmFjayBldmVudFxyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQodm5vZGUsICdvbkZhbGxiYWNrJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IG5leHQoYWN0aXZlQnJhbmNoKTtcclxuICAgICAgICAgICAgY29uc3QgbW91bnRGYWxsYmFjayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghc3VzcGVuc2UuaXNJbkZhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gbW91bnQgdGhlIGZhbGxiYWNrIHRyZWVcclxuICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIGZhbGxiYWNrVk5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBmYWxsYmFja1ZOb2RlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgZGVsYXlFbnRlciA9IGZhbGxiYWNrVk5vZGUudHJhbnNpdGlvbiAmJiBmYWxsYmFja1ZOb2RlLnRyYW5zaXRpb24ubW9kZSA9PT0gJ291dC1pbic7XHJcbiAgICAgICAgICAgIGlmIChkZWxheUVudGVyKSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmVCcmFuY2gudHJhbnNpdGlvbi5hZnRlckxlYXZlID0gbW91bnRGYWxsYmFjaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdXNwZW5zZS5pc0luRmFsbGJhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyB1bm1vdW50IGN1cnJlbnQgYWN0aXZlIGJyYW5jaFxyXG4gICAgICAgICAgICB1bm1vdW50KGFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBubyBzdXNwZW5zZSBzbyB1bm1vdW50IGhvb2tzIGZpcmUgbm93XHJcbiAgICAgICAgICAgIHRydWUgLy8gc2hvdWxkUmVtb3ZlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICghZGVsYXlFbnRlcikge1xyXG4gICAgICAgICAgICAgICAgbW91bnRGYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtb3ZlKGNvbnRhaW5lciwgYW5jaG9yLCB0eXBlKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCAmJlxyXG4gICAgICAgICAgICAgICAgbW92ZShzdXNwZW5zZS5hY3RpdmVCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCB0eXBlKTtcclxuICAgICAgICAgICAgc3VzcGVuc2UuY29udGFpbmVyID0gY29udGFpbmVyO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbmV4dCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCAmJiBuZXh0KHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZWdpc3RlckRlcChpbnN0YW5jZSwgc2V0dXBSZW5kZXJFZmZlY3QpIHtcclxuICAgICAgICAgICAgY29uc3QgaXNJblBlbmRpbmdTdXNwZW5zZSA9ICEhc3VzcGVuc2UucGVuZGluZ0JyYW5jaDtcclxuICAgICAgICAgICAgaWYgKGlzSW5QZW5kaW5nU3VzcGVuc2UpIHtcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLmRlcHMrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBoeWRyYXRlZEVsID0gaW5zdGFuY2Uudm5vZGUuZWw7XHJcbiAgICAgICAgICAgIGluc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAuYXN5bmNEZXAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIDAgLyogU0VUVVBfRlVOQ1RJT04gKi8pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oYXN5bmNTZXR1cFJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXRyeSB3aGVuIHRoZSBzZXR1cCgpIHByb21pc2UgcmVzb2x2ZXMuXHJcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgbWF5IGhhdmUgYmVlbiB1bm1vdW50ZWQgYmVmb3JlIHJlc29sdmUuXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuaXNVbm1vdW50ZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5pc1VubW91bnRlZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdJZCAhPT0gaW5zdGFuY2Uuc3VzcGVuc2VJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHJldHJ5IGZyb20gdGhpcyBjb21wb25lbnRcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFzeW5jUmVzb2x2ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB2bm9kZSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCBhc3luY1NldHVwUmVzdWx0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaHlkcmF0ZWRFbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIG1heSBoYXZlIGJlZW4gcmVwbGFjZWQgaWYgYW4gdXBkYXRlIGhhcHBlbmVkIGJlZm9yZSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAvLyBhc3luYyBkZXAgaXMgcmVzb2x2ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGUuZWwgPSBoeWRyYXRlZEVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAhaHlkcmF0ZWRFbCAmJiBpbnN0YW5jZS5zdWJUcmVlLmVsO1xyXG4gICAgICAgICAgICAgICAgc2V0dXBSZW5kZXJFZmZlY3QoaW5zdGFuY2UsIHZub2RlLCBcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudCBtYXkgaGF2ZSBiZWVuIG1vdmVkIGJlZm9yZSByZXNvbHZlLlxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSBoeWRyYXRpb24sIGluc3RhbmNlLnN1YlRyZWUgd2lsbCBiZSB0aGUgY29tbWVudFxyXG4gICAgICAgICAgICAgICAgLy8gcGxhY2Vob2xkZXIuXHJcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlKGh5ZHJhdGVkRWwgfHwgaW5zdGFuY2Uuc3ViVHJlZS5lbCksIFxyXG4gICAgICAgICAgICAgICAgLy8gYW5jaG9yIHdpbGwgbm90IGJlIHVzZWQgaWYgdGhpcyBpcyBoeWRyYXRpb24sIHNvIG9ubHkgbmVlZCB0b1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc2lkZXIgdGhlIGNvbW1lbnQgcGxhY2Vob2xkZXIgY2FzZS5cclxuICAgICAgICAgICAgICAgIGh5ZHJhdGVkRWwgPyBudWxsIDogbmV4dChpbnN0YW5jZS5zdWJUcmVlKSwgc3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKHBsYWNlaG9sZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHVwZGF0ZUhPQ0hvc3RFbChpbnN0YW5jZSwgdm5vZGUuZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvbmx5IGRlY3JlYXNlIGRlcHMgY291bnQgaWYgc3VzcGVuc2UgaXMgbm90IGFscmVhZHkgcmVzb2x2ZWRcclxuICAgICAgICAgICAgICAgIGlmIChpc0luUGVuZGluZ1N1c3BlbnNlICYmIC0tc3VzcGVuc2UuZGVwcyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB1bm1vdW50KHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSkge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5pc1VubW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5hY3RpdmVCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoc3VzcGVuc2UuYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBzdXNwZW5zZTtcclxufVxyXG5mdW5jdGlvbiBoeWRyYXRlU3VzcGVuc2Uobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGh5ZHJhdGVOb2RlKSB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxuICAgIGNvbnN0IHN1c3BlbnNlID0gKHZub2RlLnN1c3BlbnNlID0gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh2bm9kZSwgcGFyZW50U3VzcGVuc2UsIHBhcmVudENvbXBvbmVudCwgbm9kZS5wYXJlbnROb2RlLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbnVsbCwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8pKTtcclxuICAgIC8vIHRoZXJlIGFyZSB0d28gcG9zc2libGUgc2NlbmFyaW9zIGZvciBzZXJ2ZXItcmVuZGVyZWQgc3VzcGVuc2U6XHJcbiAgICAvLyAtIHN1Y2Nlc3M6IHNzciBjb250ZW50IHNob3VsZCBiZSBmdWxseSByZXNvbHZlZFxyXG4gICAgLy8gLSBmYWlsdXJlOiBzc3IgY29udGVudCBzaG91bGQgYmUgdGhlIGZhbGxiYWNrIGJyYW5jaC5cclxuICAgIC8vIGhvd2V2ZXIsIG9uIHRoZSBjbGllbnQgd2UgZG9uJ3QgcmVhbGx5IGtub3cgaWYgaXQgaGFzIGZhaWxlZCBvciBub3RcclxuICAgIC8vIGF0dGVtcHQgdG8gaHlkcmF0ZSB0aGUgRE9NIGFzc3VtaW5nIGl0IGhhcyBzdWNjZWVkZWQsIGJ1dCB3ZSBzdGlsbFxyXG4gICAgLy8gbmVlZCB0byBjb25zdHJ1Y3QgYSBzdXNwZW5zZSBib3VuZGFyeSBmaXJzdFxyXG4gICAgY29uc3QgcmVzdWx0ID0gaHlkcmF0ZU5vZGUobm9kZSwgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSB2bm9kZS5zc0NvbnRlbnQpLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICBpZiAoc3VzcGVuc2UuZGVwcyA9PT0gMCkge1xyXG4gICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN1c3BlbnNlQ2hpbGRyZW4odm5vZGUpIHtcclxuICAgIGNvbnN0IHsgc2hhcGVGbGFnLCBjaGlsZHJlbiB9ID0gdm5vZGU7XHJcbiAgICBjb25zdCBpc1Nsb3RDaGlsZHJlbiA9IHNoYXBlRmxhZyAmIDMyIC8qIFNMT1RTX0NISUxEUkVOICovO1xyXG4gICAgdm5vZGUuc3NDb250ZW50ID0gbm9ybWFsaXplU3VzcGVuc2VTbG90KGlzU2xvdENoaWxkcmVuID8gY2hpbGRyZW4uZGVmYXVsdCA6IGNoaWxkcmVuKTtcclxuICAgIHZub2RlLnNzRmFsbGJhY2sgPSBpc1Nsb3RDaGlsZHJlblxyXG4gICAgICAgID8gbm9ybWFsaXplU3VzcGVuc2VTbG90KGNoaWxkcmVuLmZhbGxiYWNrKVxyXG4gICAgICAgIDogY3JlYXRlVk5vZGUoQ29tbWVudCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplU3VzcGVuc2VTbG90KHMpIHtcclxuICAgIGxldCBibG9jaztcclxuICAgIGlmIChpc0Z1bmN0aW9uKHMpKSB7XHJcbiAgICAgICAgY29uc3QgdHJhY2tCbG9jayA9IGlzQmxvY2tUcmVlRW5hYmxlZCAmJiBzLl9jO1xyXG4gICAgICAgIGlmICh0cmFja0Jsb2NrKSB7XHJcbiAgICAgICAgICAgIC8vIGRpc2FibGVUcmFja2luZzogZmFsc2VcclxuICAgICAgICAgICAgLy8gYWxsb3cgYmxvY2sgdHJhY2tpbmcgZm9yIGNvbXBpbGVkIHNsb3RzXHJcbiAgICAgICAgICAgIC8vIChzZWUgLi9jb21wb25lbnRSZW5kZXJDb250ZXh0LnRzKVxyXG4gICAgICAgICAgICBzLl9kID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG9wZW5CbG9jaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzID0gcygpO1xyXG4gICAgICAgIGlmICh0cmFja0Jsb2NrKSB7XHJcbiAgICAgICAgICAgIHMuX2QgPSB0cnVlO1xyXG4gICAgICAgICAgICBibG9jayA9IGN1cnJlbnRCbG9jaztcclxuICAgICAgICAgICAgY2xvc2VCbG9jaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpc0FycmF5KHMpKSB7XHJcbiAgICAgICAgY29uc3Qgc2luZ2xlQ2hpbGQgPSBmaWx0ZXJTaW5nbGVSb290KHMpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXNpbmdsZUNoaWxkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYDxTdXNwZW5zZT4gc2xvdHMgZXhwZWN0IGEgc2luZ2xlIHJvb3Qgbm9kZS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcyA9IHNpbmdsZUNoaWxkO1xyXG4gICAgfVxyXG4gICAgcyA9IG5vcm1hbGl6ZVZOb2RlKHMpO1xyXG4gICAgaWYgKGJsb2NrICYmICFzLmR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgIHMuZHluYW1pY0NoaWxkcmVuID0gYmxvY2suZmlsdGVyKGMgPT4gYyAhPT0gcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcztcclxufVxyXG5mdW5jdGlvbiBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZShmbiwgc3VzcGVuc2UpIHtcclxuICAgIGlmIChzdXNwZW5zZSAmJiBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoZm4pKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaCguLi5mbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzLnB1c2goZm4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHF1ZXVlUG9zdEZsdXNoQ2IoZm4pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgYnJhbmNoKSB7XHJcbiAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggPSBicmFuY2g7XHJcbiAgICBjb25zdCB7IHZub2RlLCBwYXJlbnRDb21wb25lbnQgfSA9IHN1c3BlbnNlO1xyXG4gICAgY29uc3QgZWwgPSAodm5vZGUuZWwgPSBicmFuY2guZWwpO1xyXG4gICAgLy8gaW4gY2FzZSBzdXNwZW5zZSBpcyB0aGUgcm9vdCBub2RlIG9mIGEgY29tcG9uZW50LFxyXG4gICAgLy8gcmVjdXJzaXZlbHkgdXBkYXRlIHRoZSBIT0MgZWxcclxuICAgIGlmIChwYXJlbnRDb21wb25lbnQgJiYgcGFyZW50Q29tcG9uZW50LnN1YlRyZWUgPT09IHZub2RlKSB7XHJcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LnZub2RlLmVsID0gZWw7XHJcbiAgICAgICAgdXBkYXRlSE9DSG9zdEVsKHBhcmVudENvbXBvbmVudCwgZWwpO1xyXG4gICAgfVxyXG59XG5cbmZ1bmN0aW9uIHByb3ZpZGUoa2V5LCB2YWx1ZSkge1xyXG4gICAgaWYgKCFjdXJyZW50SW5zdGFuY2UpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHByb3ZpZGUoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBzZXR1cCgpLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBwcm92aWRlcyA9IGN1cnJlbnRJbnN0YW5jZS5wcm92aWRlcztcclxuICAgICAgICAvLyBieSBkZWZhdWx0IGFuIGluc3RhbmNlIGluaGVyaXRzIGl0cyBwYXJlbnQncyBwcm92aWRlcyBvYmplY3RcclxuICAgICAgICAvLyBidXQgd2hlbiBpdCBuZWVkcyB0byBwcm92aWRlIHZhbHVlcyBvZiBpdHMgb3duLCBpdCBjcmVhdGVzIGl0c1xyXG4gICAgICAgIC8vIG93biBwcm92aWRlcyBvYmplY3QgdXNpbmcgcGFyZW50IHByb3ZpZGVzIG9iamVjdCBhcyBwcm90b3R5cGUuXHJcbiAgICAgICAgLy8gdGhpcyB3YXkgaW4gYGluamVjdGAgd2UgY2FuIHNpbXBseSBsb29rIHVwIGluamVjdGlvbnMgZnJvbSBkaXJlY3RcclxuICAgICAgICAvLyBwYXJlbnQgYW5kIGxldCB0aGUgcHJvdG90eXBlIGNoYWluIGRvIHRoZSB3b3JrLlxyXG4gICAgICAgIGNvbnN0IHBhcmVudFByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnBhcmVudCAmJiBjdXJyZW50SW5zdGFuY2UucGFyZW50LnByb3ZpZGVzO1xyXG4gICAgICAgIGlmIChwYXJlbnRQcm92aWRlcyA9PT0gcHJvdmlkZXMpIHtcclxuICAgICAgICAgICAgcHJvdmlkZXMgPSBjdXJyZW50SW5zdGFuY2UucHJvdmlkZXMgPSBPYmplY3QuY3JlYXRlKHBhcmVudFByb3ZpZGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gVFMgZG9lc24ndCBhbGxvdyBzeW1ib2wgYXMgaW5kZXggdHlwZVxyXG4gICAgICAgIHByb3ZpZGVzW2tleV0gPSB2YWx1ZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpbmplY3Qoa2V5LCBkZWZhdWx0VmFsdWUsIHRyZWF0RGVmYXVsdEFzRmFjdG9yeSA9IGZhbHNlKSB7XHJcbiAgICAvLyBmYWxsYmFjayB0byBgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlYCBzbyB0aGF0IHRoaXMgY2FuIGJlIGNhbGxlZCBpblxyXG4gICAgLy8gYSBmdW5jdGlvbmFsIGNvbXBvbmVudFxyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50SW5zdGFuY2UgfHwgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgLy8gIzI0MDBcclxuICAgICAgICAvLyB0byBzdXBwb3J0IGBhcHAudXNlYCBwbHVnaW5zLFxyXG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIGFwcENvbnRleHQncyBgcHJvdmlkZXNgIGlmIHRoZSBpbnN0YW5jZSBpcyBhdCByb290XHJcbiAgICAgICAgY29uc3QgcHJvdmlkZXMgPSBpbnN0YW5jZS5wYXJlbnQgPT0gbnVsbFxyXG4gICAgICAgICAgICA/IGluc3RhbmNlLnZub2RlLmFwcENvbnRleHQgJiYgaW5zdGFuY2Uudm5vZGUuYXBwQ29udGV4dC5wcm92aWRlc1xyXG4gICAgICAgICAgICA6IGluc3RhbmNlLnBhcmVudC5wcm92aWRlcztcclxuICAgICAgICBpZiAocHJvdmlkZXMgJiYga2V5IGluIHByb3ZpZGVzKSB7XHJcbiAgICAgICAgICAgIC8vIFRTIGRvZXNuJ3QgYWxsb3cgc3ltYm9sIGFzIGluZGV4IHR5cGVcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmVhdERlZmF1bHRBc0ZhY3RvcnkgJiYgaXNGdW5jdGlvbihkZWZhdWx0VmFsdWUpXHJcbiAgICAgICAgICAgICAgICA/IGRlZmF1bHRWYWx1ZS5jYWxsKGluc3RhbmNlLnByb3h5KVxyXG4gICAgICAgICAgICAgICAgOiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBpbmplY3Rpb24gXCIke1N0cmluZyhrZXkpfVwiIG5vdCBmb3VuZC5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBpbmplY3QoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBzZXR1cCgpIG9yIGZ1bmN0aW9uYWwgY29tcG9uZW50cy5gKTtcclxuICAgIH1cclxufVxuXG4vLyBTaW1wbGUgZWZmZWN0LlxyXG5mdW5jdGlvbiB3YXRjaEVmZmVjdChlZmZlY3QsIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBkb1dhdGNoKGVmZmVjdCwgbnVsbCwgb3B0aW9ucyk7XHJcbn1cclxuZnVuY3Rpb24gd2F0Y2hQb3N0RWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGRvV2F0Y2goZWZmZWN0LCBudWxsLCAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKG9wdGlvbnMgfHwge30sIHsgZmx1c2g6ICdwb3N0JyB9KVxyXG4gICAgICAgIDogeyBmbHVzaDogJ3Bvc3QnIH0pKTtcclxufVxyXG5mdW5jdGlvbiB3YXRjaFN5bmNFZmZlY3QoZWZmZWN0LCBvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gZG9XYXRjaChlZmZlY3QsIG51bGwsICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IE9iamVjdC5hc3NpZ24ob3B0aW9ucyB8fCB7fSwgeyBmbHVzaDogJ3N5bmMnIH0pXHJcbiAgICAgICAgOiB7IGZsdXNoOiAnc3luYycgfSkpO1xyXG59XHJcbi8vIGluaXRpYWwgdmFsdWUgZm9yIHdhdGNoZXJzIHRvIHRyaWdnZXIgb24gdW5kZWZpbmVkIGluaXRpYWwgdmFsdWVzXHJcbmNvbnN0IElOSVRJQUxfV0FUQ0hFUl9WQUxVRSA9IHt9O1xyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiB3YXRjaChzb3VyY2UsIGNiLCBvcHRpb25zKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0Z1bmN0aW9uKGNiKSkge1xyXG4gICAgICAgIHdhcm4oYFxcYHdhdGNoKGZuLCBvcHRpb25zPylcXGAgc2lnbmF0dXJlIGhhcyBiZWVuIG1vdmVkIHRvIGEgc2VwYXJhdGUgQVBJLiBgICtcclxuICAgICAgICAgICAgYFVzZSBcXGB3YXRjaEVmZmVjdChmbiwgb3B0aW9ucz8pXFxgIGluc3RlYWQuIFxcYHdhdGNoXFxgIG5vdyBvbmx5IGAgK1xyXG4gICAgICAgICAgICBgc3VwcG9ydHMgXFxgd2F0Y2goc291cmNlLCBjYiwgb3B0aW9ucz8pIHNpZ25hdHVyZS5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkb1dhdGNoKHNvdXJjZSwgY2IsIG9wdGlvbnMpO1xyXG59XHJcbmZ1bmN0aW9uIGRvV2F0Y2goc291cmNlLCBjYiwgeyBpbW1lZGlhdGUsIGRlZXAsIGZsdXNoLCBvblRyYWNrLCBvblRyaWdnZXIgfSA9IEVNUFRZX09CSikge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY2IpIHtcclxuICAgICAgICBpZiAoaW1tZWRpYXRlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgd2Fybihgd2F0Y2goKSBcImltbWVkaWF0ZVwiIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIHRoZSBgICtcclxuICAgICAgICAgICAgICAgIGB3YXRjaChzb3VyY2UsIGNhbGxiYWNrLCBvcHRpb25zPykgc2lnbmF0dXJlLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVlcCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHdhdGNoKCkgXCJkZWVwXCIgb3B0aW9uIGlzIG9ubHkgcmVzcGVjdGVkIHdoZW4gdXNpbmcgdGhlIGAgK1xyXG4gICAgICAgICAgICAgICAgYHdhdGNoKHNvdXJjZSwgY2FsbGJhY2ssIG9wdGlvbnM/KSBzaWduYXR1cmUuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd2FybkludmFsaWRTb3VyY2UgPSAocykgPT4ge1xyXG4gICAgICAgIHdhcm4oYEludmFsaWQgd2F0Y2ggc291cmNlOiBgLCBzLCBgQSB3YXRjaCBzb3VyY2UgY2FuIG9ubHkgYmUgYSBnZXR0ZXIvZWZmZWN0IGZ1bmN0aW9uLCBhIHJlZiwgYCArXHJcbiAgICAgICAgICAgIGBhIHJlYWN0aXZlIG9iamVjdCwgb3IgYW4gYXJyYXkgb2YgdGhlc2UgdHlwZXMuYCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICBsZXQgZ2V0dGVyO1xyXG4gICAgbGV0IGZvcmNlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgbGV0IGlzTXVsdGlTb3VyY2UgPSBmYWxzZTtcclxuICAgIGlmIChpc1JlZihzb3VyY2UpKSB7XHJcbiAgICAgICAgZ2V0dGVyID0gKCkgPT4gc291cmNlLnZhbHVlO1xyXG4gICAgICAgIGZvcmNlVHJpZ2dlciA9IGlzU2hhbGxvdyQxKHNvdXJjZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1JlYWN0aXZlKHNvdXJjZSkpIHtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiBzb3VyY2U7XHJcbiAgICAgICAgZGVlcCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgICBpc011bHRpU291cmNlID0gdHJ1ZTtcclxuICAgICAgICBmb3JjZVRyaWdnZXIgPSBzb3VyY2Uuc29tZShpc1JlYWN0aXZlKTtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiBzb3VyY2UubWFwKHMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNSZWYocykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzLnZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVhY3RpdmUocykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZShzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFdpdGhFcnJvckhhbmRsaW5nKHMsIGluc3RhbmNlLCAyIC8qIFdBVENIX0dFVFRFUiAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybkludmFsaWRTb3VyY2Uocyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24oc291cmNlKSkge1xyXG4gICAgICAgIGlmIChjYikge1xyXG4gICAgICAgICAgICAvLyBnZXR0ZXIgd2l0aCBjYlxyXG4gICAgICAgICAgICBnZXR0ZXIgPSAoKSA9PiBjYWxsV2l0aEVycm9ySGFuZGxpbmcoc291cmNlLCBpbnN0YW5jZSwgMiAvKiBXQVRDSF9HRVRURVIgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbm8gY2IgLT4gc2ltcGxlIGVmZmVjdFxyXG4gICAgICAgICAgICBnZXR0ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2UuaXNVbm1vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2xlYW51cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhzb3VyY2UsIGluc3RhbmNlLCAzIC8qIFdBVENIX0NBTExCQUNLICovLCBbb25DbGVhbnVwXSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZ2V0dGVyID0gTk9PUDtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybkludmFsaWRTb3VyY2Uoc291cmNlKTtcclxuICAgIH1cclxuICAgIGlmIChjYiAmJiBkZWVwKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZUdldHRlciA9IGdldHRlcjtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiB0cmF2ZXJzZShiYXNlR2V0dGVyKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IGNsZWFudXA7XHJcbiAgICBsZXQgb25DbGVhbnVwID0gKGZuKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCA9IGVmZmVjdC5vblN0b3AgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIDQgLyogV0FUQ0hfQ0xFQU5VUCAqLyk7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICAvLyBpbiBTU1IgdGhlcmUgaXMgbm8gbmVlZCB0byBzZXR1cCBhbiBhY3R1YWwgZWZmZWN0LCBhbmQgaXQgc2hvdWxkIGJlIG5vb3BcclxuICAgIC8vIHVubGVzcyBpdCdzIGVhZ2VyXHJcbiAgICBpZiAoaXNJblNTUkNvbXBvbmVudFNldHVwKSB7XHJcbiAgICAgICAgLy8gd2Ugd2lsbCBhbHNvIG5vdCBjYWxsIHRoZSBpbnZhbGlkYXRlIGNhbGxiYWNrICgrIHJ1bm5lciBpcyBub3Qgc2V0IHVwKVxyXG4gICAgICAgIG9uQ2xlYW51cCA9IE5PT1A7XHJcbiAgICAgICAgaWYgKCFjYikge1xyXG4gICAgICAgICAgICBnZXR0ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW1tZWRpYXRlKSB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGNiLCBpbnN0YW5jZSwgMyAvKiBXQVRDSF9DQUxMQkFDSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgZ2V0dGVyKCksXHJcbiAgICAgICAgICAgICAgICBpc011bHRpU291cmNlID8gW10gOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBvbkNsZWFudXBcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBOT09QO1xyXG4gICAgfVxyXG4gICAgbGV0IG9sZFZhbHVlID0gaXNNdWx0aVNvdXJjZSA/IFtdIDogSU5JVElBTF9XQVRDSEVSX1ZBTFVFO1xyXG4gICAgY29uc3Qgam9iID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghZWZmZWN0LmFjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjYikge1xyXG4gICAgICAgICAgICAvLyB3YXRjaChzb3VyY2UsIGNiKVxyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGVmZmVjdC5ydW4oKTtcclxuICAgICAgICAgICAgaWYgKGRlZXAgfHxcclxuICAgICAgICAgICAgICAgIGZvcmNlVHJpZ2dlciB8fFxyXG4gICAgICAgICAgICAgICAgKGlzTXVsdGlTb3VyY2VcclxuICAgICAgICAgICAgICAgICAgICA/IG5ld1ZhbHVlLnNvbWUoKHYsIGkpID0+IGhhc0NoYW5nZWQodiwgb2xkVmFsdWVbaV0pKVxyXG4gICAgICAgICAgICAgICAgICAgIDogaGFzQ2hhbmdlZChuZXdWYWx1ZSwgb2xkVmFsdWUpKSB8fFxyXG4gICAgICAgICAgICAgICAgKGZhbHNlICApKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjbGVhbnVwIGJlZm9yZSBydW5uaW5nIGNiIGFnYWluXHJcbiAgICAgICAgICAgICAgICBpZiAoY2xlYW51cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGNiLCBpbnN0YW5jZSwgMyAvKiBXQVRDSF9DQUxMQkFDSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3MgdW5kZWZpbmVkIGFzIHRoZSBvbGQgdmFsdWUgd2hlbiBpdCdzIGNoYW5nZWQgZm9yIHRoZSBmaXJzdCB0aW1lXHJcbiAgICAgICAgICAgICAgICAgICAgb2xkVmFsdWUgPT09IElOSVRJQUxfV0FUQ0hFUl9WQUxVRSA/IHVuZGVmaW5lZCA6IG9sZFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xlYW51cFxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB3YXRjaEVmZmVjdFxyXG4gICAgICAgICAgICBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIGltcG9ydGFudDogbWFyayB0aGUgam9iIGFzIGEgd2F0Y2hlciBjYWxsYmFjayBzbyB0aGF0IHNjaGVkdWxlciBrbm93c1xyXG4gICAgLy8gaXQgaXMgYWxsb3dlZCB0byBzZWxmLXRyaWdnZXIgKCMxNzI3KVxyXG4gICAgam9iLmFsbG93UmVjdXJzZSA9ICEhY2I7XHJcbiAgICBsZXQgc2NoZWR1bGVyO1xyXG4gICAgaWYgKGZsdXNoID09PSAnc3luYycpIHtcclxuICAgICAgICBzY2hlZHVsZXIgPSBqb2I7IC8vIHRoZSBzY2hlZHVsZXIgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZGlyZWN0bHlcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZsdXNoID09PSAncG9zdCcpIHtcclxuICAgICAgICBzY2hlZHVsZXIgPSAoKSA9PiBxdWV1ZVBvc3RSZW5kZXJFZmZlY3Qoam9iLCBpbnN0YW5jZSAmJiBpbnN0YW5jZS5zdXNwZW5zZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBkZWZhdWx0OiAncHJlJ1xyXG4gICAgICAgIHNjaGVkdWxlciA9ICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZSB8fCBpbnN0YW5jZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIHF1ZXVlUHJlRmx1c2hDYihqb2IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gd2l0aCAncHJlJyBvcHRpb24sIHRoZSBmaXJzdCBjYWxsIG11c3QgaGFwcGVuIGJlZm9yZVxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkIHNvIGl0IGlzIGNhbGxlZCBzeW5jaHJvbm91c2x5LlxyXG4gICAgICAgICAgICAgICAgam9iKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGdldHRlciwgc2NoZWR1bGVyKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBlZmZlY3Qub25UcmFjayA9IG9uVHJhY2s7XHJcbiAgICAgICAgZWZmZWN0Lm9uVHJpZ2dlciA9IG9uVHJpZ2dlcjtcclxuICAgIH1cclxuICAgIC8vIGluaXRpYWwgcnVuXHJcbiAgICBpZiAoY2IpIHtcclxuICAgICAgICBpZiAoaW1tZWRpYXRlKSB7XHJcbiAgICAgICAgICAgIGpvYigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgb2xkVmFsdWUgPSBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmx1c2ggPT09ICdwb3N0Jykge1xyXG4gICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChlZmZlY3QucnVuLmJpbmQoZWZmZWN0KSwgaW5zdGFuY2UgJiYgaW5zdGFuY2Uuc3VzcGVuc2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZWZmZWN0LnJ1bigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICBlZmZlY3Quc3RvcCgpO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSAmJiBpbnN0YW5jZS5zY29wZSkge1xyXG4gICAgICAgICAgICByZW1vdmUoaW5zdGFuY2Uuc2NvcGUuZWZmZWN0cywgZWZmZWN0KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbi8vIHRoaXMuJHdhdGNoXHJcbmZ1bmN0aW9uIGluc3RhbmNlV2F0Y2goc291cmNlLCB2YWx1ZSwgb3B0aW9ucykge1xyXG4gICAgY29uc3QgcHVibGljVGhpcyA9IHRoaXMucHJveHk7XHJcbiAgICBjb25zdCBnZXR0ZXIgPSBpc1N0cmluZyhzb3VyY2UpXHJcbiAgICAgICAgPyBzb3VyY2UuaW5jbHVkZXMoJy4nKVxyXG4gICAgICAgICAgICA/IGNyZWF0ZVBhdGhHZXR0ZXIocHVibGljVGhpcywgc291cmNlKVxyXG4gICAgICAgICAgICA6ICgpID0+IHB1YmxpY1RoaXNbc291cmNlXVxyXG4gICAgICAgIDogc291cmNlLmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcyk7XHJcbiAgICBsZXQgY2I7XHJcbiAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICBjYiA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY2IgPSB2YWx1ZS5oYW5kbGVyO1xyXG4gICAgICAgIG9wdGlvbnMgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGN1ciA9IGN1cnJlbnRJbnN0YW5jZTtcclxuICAgIHNldEN1cnJlbnRJbnN0YW5jZSh0aGlzKTtcclxuICAgIGNvbnN0IHJlcyA9IGRvV2F0Y2goZ2V0dGVyLCBjYi5iaW5kKHB1YmxpY1RoaXMpLCBvcHRpb25zKTtcclxuICAgIGlmIChjdXIpIHtcclxuICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UoY3VyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVBhdGhHZXR0ZXIoY3R4LCBwYXRoKSB7XHJcbiAgICBjb25zdCBzZWdtZW50cyA9IHBhdGguc3BsaXQoJy4nKTtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgbGV0IGN1ciA9IGN0eDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aCAmJiBjdXI7IGkrKykge1xyXG4gICAgICAgICAgICBjdXIgPSBjdXJbc2VnbWVudHNbaV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3VyO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiB0cmF2ZXJzZSh2YWx1ZSwgc2Vlbikge1xyXG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgdmFsdWVbXCJfX3Zfc2tpcFwiIC8qIFNLSVAgKi9dKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2VlbiA9IHNlZW4gfHwgbmV3IFNldCgpO1xyXG4gICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHNlZW4uYWRkKHZhbHVlKTtcclxuICAgIGlmIChpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICB0cmF2ZXJzZSh2YWx1ZS52YWx1ZSwgc2Vlbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdHJhdmVyc2UodmFsdWVbaV0sIHNlZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU2V0KHZhbHVlKSB8fCBpc01hcCh2YWx1ZSkpIHtcclxuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKHYsIHNlZW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZSh2YWx1ZVtrZXldLCBzZWVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cblxuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0YXRlKCkge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB7XHJcbiAgICAgICAgaXNNb3VudGVkOiBmYWxzZSxcclxuICAgICAgICBpc0xlYXZpbmc6IGZhbHNlLFxyXG4gICAgICAgIGlzVW5tb3VudGluZzogZmFsc2UsXHJcbiAgICAgICAgbGVhdmluZ1ZOb2RlczogbmV3IE1hcCgpXHJcbiAgICB9O1xyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgICBzdGF0ZS5pc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xyXG4gICAgICAgIHN0YXRlLmlzVW5tb3VudGluZyA9IHRydWU7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdGF0ZTtcclxufVxyXG5jb25zdCBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvciA9IFtGdW5jdGlvbiwgQXJyYXldO1xyXG5jb25zdCBCYXNlVHJhbnNpdGlvbkltcGwgPSB7XHJcbiAgICBuYW1lOiBgQmFzZVRyYW5zaXRpb25gLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBtb2RlOiBTdHJpbmcsXHJcbiAgICAgICAgYXBwZWFyOiBCb29sZWFuLFxyXG4gICAgICAgIHBlcnNpc3RlZDogQm9vbGVhbixcclxuICAgICAgICAvLyBlbnRlclxyXG4gICAgICAgIG9uQmVmb3JlRW50ZXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uRW50ZXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQWZ0ZXJFbnRlcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25FbnRlckNhbmNlbGxlZDogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgLy8gbGVhdmVcclxuICAgICAgICBvbkJlZm9yZUxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFmdGVyTGVhdmU6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uTGVhdmVDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIC8vIGFwcGVhclxyXG4gICAgICAgIG9uQmVmb3JlQXBwZWFyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BZnRlckFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BcHBlYXJDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yXHJcbiAgICB9LFxyXG4gICAgc2V0dXAocHJvcHMsIHsgc2xvdHMgfSkge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB1c2VUcmFuc2l0aW9uU3RhdGUoKTtcclxuICAgICAgICBsZXQgcHJldlRyYW5zaXRpb25LZXk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0ICYmIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihzbG90cy5kZWZhdWx0KCksIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuIHx8ICFjaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB3YXJuIG11bHRpcGxlIGVsZW1lbnRzXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgd2FybignPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgZWxlbWVudCBvciBjb21wb25lbnQuIFVzZSAnICtcclxuICAgICAgICAgICAgICAgICAgICAnPHRyYW5zaXRpb24tZ3JvdXA+IGZvciBsaXN0cy4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJhY2sgcmVhY3Rpdml0eSBmb3IgdGhlc2UgcHJvcHMgc28gdXNlIHRoZSByYXdcclxuICAgICAgICAgICAgLy8gcHJvcHMgZm9yIGEgYml0IGJldHRlciBwZXJmXHJcbiAgICAgICAgICAgIGNvbnN0IHJhd1Byb3BzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgICAgICAgICBjb25zdCB7IG1vZGUgfSA9IHJhd1Byb3BzO1xyXG4gICAgICAgICAgICAvLyBjaGVjayBtb2RlXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgIT09ICdpbi1vdXQnICYmIG1vZGUgIT09ICdvdXQtaW4nICYmIG1vZGUgIT09ICdkZWZhdWx0Jykge1xyXG4gICAgICAgICAgICAgICAgd2FybihgaW52YWxpZCA8dHJhbnNpdGlvbj4gbW9kZTogJHttb2RlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgY2hpbGRyZW4gaGFzIGEgZ3VhcmFudGVlZCBsZW5ndGggb2YgMS5cclxuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzTGVhdmluZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIDx0cmFuc2l0aW9uPjxrZWVwLWFsaXZlLz48L3RyYW5zaXRpb24+LCB3ZSBuZWVkIHRvXHJcbiAgICAgICAgICAgIC8vIGNvbXBhcmUgdGhlIHR5cGUgb2YgdGhlIGtlcHQtYWxpdmUgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQ2hpbGQgPSBnZXRLZWVwQWxpdmVDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgICAgIGlmICghaW5uZXJDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVudGVySG9va3MgPSByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGlubmVyQ2hpbGQsIHJhd1Byb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3MoaW5uZXJDaGlsZCwgZW50ZXJIb29rcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZENoaWxkID0gaW5zdGFuY2Uuc3ViVHJlZTtcclxuICAgICAgICAgICAgY29uc3Qgb2xkSW5uZXJDaGlsZCA9IG9sZENoaWxkICYmIGdldEtlZXBBbGl2ZUNoaWxkKG9sZENoaWxkKTtcclxuICAgICAgICAgICAgbGV0IHRyYW5zaXRpb25LZXlDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0VHJhbnNpdGlvbktleSB9ID0gaW5uZXJDaGlsZC50eXBlO1xyXG4gICAgICAgICAgICBpZiAoZ2V0VHJhbnNpdGlvbktleSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZ2V0VHJhbnNpdGlvbktleSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZUcmFuc2l0aW9uS2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2VHJhbnNpdGlvbktleSA9IGtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSAhPT0gcHJldlRyYW5zaXRpb25LZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2VHJhbnNpdGlvbktleSA9IGtleTtcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uS2V5Q2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaGFuZGxlIG1vZGVcclxuICAgICAgICAgICAgaWYgKG9sZElubmVyQ2hpbGQgJiZcclxuICAgICAgICAgICAgICAgIG9sZElubmVyQ2hpbGQudHlwZSAhPT0gQ29tbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgKCFpc1NhbWVWTm9kZVR5cGUoaW5uZXJDaGlsZCwgb2xkSW5uZXJDaGlsZCkgfHwgdHJhbnNpdGlvbktleUNoYW5nZWQpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWF2aW5nSG9va3MgPSByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKG9sZElubmVyQ2hpbGQsIHJhd1Byb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIG9sZCB0cmVlJ3MgaG9va3MgaW4gY2FzZSBvZiBkeW5hbWljIHRyYW5zaXRpb25cclxuICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhvbGRJbm5lckNoaWxkLCBsZWF2aW5nSG9va3MpO1xyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoaW5nIGJldHdlZW4gZGlmZmVyZW50IHZpZXdzXHJcbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc0xlYXZpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBwbGFjZWhvbGRlciBub2RlIGFuZCBxdWV1ZSB1cGRhdGUgd2hlbiBsZWF2ZSBmaW5pc2hlc1xyXG4gICAgICAgICAgICAgICAgICAgIGxlYXZpbmdIb29rcy5hZnRlckxlYXZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc0xlYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb2RlID09PSAnaW4tb3V0JyAmJiBpbm5lckNoaWxkLnR5cGUgIT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZWF2aW5nSG9va3MuZGVsYXlMZWF2ZSA9IChlbCwgZWFybHlSZW1vdmUsIGRlbGF5ZWRMZWF2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCBvbGRJbm5lckNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2Rlc0NhY2hlW1N0cmluZyhvbGRJbm5lckNoaWxkLmtleSldID0gb2xkSW5uZXJDaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFybHkgcmVtb3ZhbCBjYWxsYmFja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhcmx5UmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRlckhvb2tzLmRlbGF5ZWRMZWF2ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50ZXJIb29rcy5kZWxheWVkTGVhdmUgPSBkZWxheWVkTGVhdmU7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuLy8gZXhwb3J0IHRoZSBwdWJsaWMgdHlwZSBmb3IgaC90c3ggaW5mZXJlbmNlXHJcbi8vIGFsc28gdG8gYXZvaWQgaW5saW5lIGltcG9ydCgpIGluIGdlbmVyYXRlZCBkLnRzIGZpbGVzXHJcbmNvbnN0IEJhc2VUcmFuc2l0aW9uID0gQmFzZVRyYW5zaXRpb25JbXBsO1xyXG5mdW5jdGlvbiBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCB2bm9kZSkge1xyXG4gICAgY29uc3QgeyBsZWF2aW5nVk5vZGVzIH0gPSBzdGF0ZTtcclxuICAgIGxldCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBsZWF2aW5nVk5vZGVzLmdldCh2bm9kZS50eXBlKTtcclxuICAgIGlmICghbGVhdmluZ1ZOb2Rlc0NhY2hlKSB7XHJcbiAgICAgICAgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgICAgICBsZWF2aW5nVk5vZGVzLnNldCh2bm9kZS50eXBlLCBsZWF2aW5nVk5vZGVzQ2FjaGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlYXZpbmdWTm9kZXNDYWNoZTtcclxufVxyXG4vLyBUaGUgdHJhbnNpdGlvbiBob29rcyBhcmUgYXR0YWNoZWQgdG8gdGhlIHZub2RlIGFzIHZub2RlLnRyYW5zaXRpb25cclxuLy8gYW5kIHdpbGwgYmUgY2FsbGVkIGF0IGFwcHJvcHJpYXRlIHRpbWluZyBpbiB0aGUgcmVuZGVyZXIuXHJcbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uSG9va3Modm5vZGUsIHByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgYXBwZWFyLCBtb2RlLCBwZXJzaXN0ZWQgPSBmYWxzZSwgb25CZWZvcmVFbnRlciwgb25FbnRlciwgb25BZnRlckVudGVyLCBvbkVudGVyQ2FuY2VsbGVkLCBvbkJlZm9yZUxlYXZlLCBvbkxlYXZlLCBvbkFmdGVyTGVhdmUsIG9uTGVhdmVDYW5jZWxsZWQsIG9uQmVmb3JlQXBwZWFyLCBvbkFwcGVhciwgb25BZnRlckFwcGVhciwgb25BcHBlYXJDYW5jZWxsZWQgfSA9IHByb3BzO1xyXG4gICAgY29uc3Qga2V5ID0gU3RyaW5nKHZub2RlLmtleSk7XHJcbiAgICBjb25zdCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCB2bm9kZSk7XHJcbiAgICBjb25zdCBjYWxsSG9vayA9IChob29rLCBhcmdzKSA9PiB7XHJcbiAgICAgICAgaG9vayAmJlxyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCBpbnN0YW5jZSwgOSAvKiBUUkFOU0lUSU9OX0hPT0sgKi8sIGFyZ3MpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGhvb2tzID0ge1xyXG4gICAgICAgIG1vZGUsXHJcbiAgICAgICAgcGVyc2lzdGVkLFxyXG4gICAgICAgIGJlZm9yZUVudGVyKGVsKSB7XHJcbiAgICAgICAgICAgIGxldCBob29rID0gb25CZWZvcmVFbnRlcjtcclxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcHBlYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBob29rID0gb25CZWZvcmVBcHBlYXIgfHwgb25CZWZvcmVFbnRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBmb3Igc2FtZSBlbGVtZW50ICh2LXNob3cpXHJcbiAgICAgICAgICAgIGlmIChlbC5fbGVhdmVDYikge1xyXG4gICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IodHJ1ZSAvKiBjYW5jZWxsZWQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGZvciB0b2dnbGVkIGVsZW1lbnQgd2l0aCBzYW1lIGtleSAodi1pZilcclxuICAgICAgICAgICAgY29uc3QgbGVhdmluZ1ZOb2RlID0gbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV07XHJcbiAgICAgICAgICAgIGlmIChsZWF2aW5nVk5vZGUgJiZcclxuICAgICAgICAgICAgICAgIGlzU2FtZVZOb2RlVHlwZSh2bm9kZSwgbGVhdmluZ1ZOb2RlKSAmJlxyXG4gICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2RlLmVsLl9sZWF2ZUNiKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmb3JjZSBlYXJseSByZW1vdmFsIChub3QgY2FuY2VsbGVkKVxyXG4gICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2RlLmVsLl9sZWF2ZUNiKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FsbEhvb2soaG9vaywgW2VsXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnRlcihlbCkge1xyXG4gICAgICAgICAgICBsZXQgaG9vayA9IG9uRW50ZXI7XHJcbiAgICAgICAgICAgIGxldCBhZnRlckhvb2sgPSBvbkFmdGVyRW50ZXI7XHJcbiAgICAgICAgICAgIGxldCBjYW5jZWxIb29rID0gb25FbnRlckNhbmNlbGxlZDtcclxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcHBlYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBob29rID0gb25BcHBlYXIgfHwgb25FbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBhZnRlckhvb2sgPSBvbkFmdGVyQXBwZWFyIHx8IG9uQWZ0ZXJFbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxIb29rID0gb25BcHBlYXJDYW5jZWxsZWQgfHwgb25FbnRlckNhbmNlbGxlZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgY2FsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvbmUgPSAoZWwuX2VudGVyQ2IgPSAoY2FuY2VsbGVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEhvb2soY2FuY2VsSG9vaywgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhhZnRlckhvb2ssIFtlbF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGhvb2tzLmRlbGF5ZWRMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvb2tzLmRlbGF5ZWRMZWF2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWwuX2VudGVyQ2IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoaG9vaykge1xyXG4gICAgICAgICAgICAgICAgaG9vayhlbCwgZG9uZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaG9vay5sZW5ndGggPD0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGVhdmUoZWwsIHJlbW92ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBTdHJpbmcodm5vZGUua2V5KTtcclxuICAgICAgICAgICAgaWYgKGVsLl9lbnRlckNiKSB7XHJcbiAgICAgICAgICAgICAgICBlbC5fZW50ZXJDYih0cnVlIC8qIGNhbmNlbGxlZCAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzVW5tb3VudGluZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uQmVmb3JlTGVhdmUsIFtlbF0pO1xyXG4gICAgICAgICAgICBsZXQgY2FsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvbmUgPSAoZWwuX2xlYXZlQ2IgPSAoY2FuY2VsbGVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhvbkxlYXZlQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxIb29rKG9uQWZ0ZXJMZWF2ZSwgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGlmIChsZWF2aW5nVk5vZGVzQ2FjaGVba2V5XSA9PT0gdm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBsZWF2aW5nVk5vZGVzQ2FjaGVba2V5XSA9IHZub2RlO1xyXG4gICAgICAgICAgICBpZiAob25MZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgb25MZWF2ZShlbCwgZG9uZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAob25MZWF2ZS5sZW5ndGggPD0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvbmUodm5vZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVUcmFuc2l0aW9uSG9va3Modm5vZGUsIHByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gaG9va3M7XHJcbn1cclxuLy8gdGhlIHBsYWNlaG9sZGVyIHJlYWxseSBvbmx5IGhhbmRsZXMgb25lIHNwZWNpYWwgY2FzZTogS2VlcEFsaXZlXHJcbi8vIGluIHRoZSBjYXNlIG9mIGEgS2VlcEFsaXZlIGluIGEgbGVhdmUgcGhhc2Ugd2UgbmVlZCB0byByZXR1cm4gYSBLZWVwQWxpdmVcclxuLy8gcGxhY2Vob2xkZXIgd2l0aCBlbXB0eSBjb250ZW50IHRvIGF2b2lkIHRoZSBLZWVwQWxpdmUgaW5zdGFuY2UgZnJvbSBiZWluZ1xyXG4vLyB1bm1vdW50ZWQuXHJcbmZ1bmN0aW9uIGVtcHR5UGxhY2Vob2xkZXIodm5vZGUpIHtcclxuICAgIGlmIChpc0tlZXBBbGl2ZSh2bm9kZSkpIHtcclxuICAgICAgICB2bm9kZSA9IGNsb25lVk5vZGUodm5vZGUpO1xyXG4gICAgICAgIHZub2RlLmNoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gdm5vZGU7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0S2VlcEFsaXZlQ2hpbGQodm5vZGUpIHtcclxuICAgIHJldHVybiBpc0tlZXBBbGl2ZSh2bm9kZSlcclxuICAgICAgICA/IHZub2RlLmNoaWxkcmVuXHJcbiAgICAgICAgICAgID8gdm5vZGUuY2hpbGRyZW5bMF1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICA6IHZub2RlO1xyXG59XHJcbmZ1bmN0aW9uIHNldFRyYW5zaXRpb25Ib29rcyh2bm9kZSwgaG9va3MpIHtcclxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiA2IC8qIENPTVBPTkVOVCAqLyAmJiB2bm9kZS5jb21wb25lbnQpIHtcclxuICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3Modm5vZGUuY29tcG9uZW50LnN1YlRyZWUsIGhvb2tzKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTVVNQRU5TRSAqLykge1xyXG4gICAgICAgIHZub2RlLnNzQ29udGVudC50cmFuc2l0aW9uID0gaG9va3MuY2xvbmUodm5vZGUuc3NDb250ZW50KTtcclxuICAgICAgICB2bm9kZS5zc0ZhbGxiYWNrLnRyYW5zaXRpb24gPSBob29rcy5jbG9uZSh2bm9kZS5zc0ZhbGxiYWNrKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZub2RlLnRyYW5zaXRpb24gPSBob29rcztcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oY2hpbGRyZW4sIGtlZXBDb21tZW50ID0gZmFsc2UpIHtcclxuICAgIGxldCByZXQgPSBbXTtcclxuICAgIGxldCBrZXllZEZyYWdtZW50Q291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgLy8gaGFuZGxlIGZyYWdtZW50IGNoaWxkcmVuIGNhc2UsIGUuZy4gdi1mb3JcclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkLnBhdGNoRmxhZyAmIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLylcclxuICAgICAgICAgICAgICAgIGtleWVkRnJhZ21lbnRDb3VudCsrO1xyXG4gICAgICAgICAgICByZXQgPSByZXQuY29uY2F0KGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihjaGlsZC5jaGlsZHJlbiwga2VlcENvbW1lbnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29tbWVudCBwbGFjZWhvbGRlcnMgc2hvdWxkIGJlIHNraXBwZWQsIGUuZy4gdi1pZlxyXG4gICAgICAgIGVsc2UgaWYgKGtlZXBDb21tZW50IHx8IGNoaWxkLnR5cGUgIT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vICMxMTI2IGlmIGEgdHJhbnNpdGlvbiBjaGlsZHJlbiBsaXN0IGNvbnRhaW5zIG11bHRpcGxlIHN1YiBmcmFnbWVudHMsIHRoZXNlXHJcbiAgICAvLyBmcmFnbWVudHMgd2lsbCBiZSBtZXJnZWQgaW50byBhIGZsYXQgY2hpbGRyZW4gYXJyYXkuIFNpbmNlIGVhY2ggdi1mb3JcclxuICAgIC8vIGZyYWdtZW50IG1heSBjb250YWluIGRpZmZlcmVudCBzdGF0aWMgYmluZGluZ3MgaW5zaWRlLCB3ZSBuZWVkIHRvIGRlLW9wXHJcbiAgICAvLyB0aGVzZSBjaGlsZHJlbiB0byBmb3JjZSBmdWxsIGRpZmZzIHRvIGVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yLlxyXG4gICAgaWYgKGtleWVkRnJhZ21lbnRDb3VudCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByZXRbaV0ucGF0Y2hGbGFnID0gLTIgLyogQkFJTCAqLztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XG5cbi8vIGltcGxlbWVudGF0aW9uLCBjbG9zZSB0byBuby1vcFxyXG5mdW5jdGlvbiBkZWZpbmVDb21wb25lbnQob3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24ob3B0aW9ucykgPyB7IHNldHVwOiBvcHRpb25zLCBuYW1lOiBvcHRpb25zLm5hbWUgfSA6IG9wdGlvbnM7XHJcbn1cblxuY29uc3QgaXNBc3luY1dyYXBwZXIgPSAoaSkgPT4gISFpLnR5cGUuX19hc3luY0xvYWRlcjtcclxuZnVuY3Rpb24gZGVmaW5lQXN5bmNDb21wb25lbnQoc291cmNlKSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihzb3VyY2UpKSB7XHJcbiAgICAgICAgc291cmNlID0geyBsb2FkZXI6IHNvdXJjZSB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBsb2FkZXIsIGxvYWRpbmdDb21wb25lbnQsIGVycm9yQ29tcG9uZW50LCBkZWxheSA9IDIwMCwgdGltZW91dCwgLy8gdW5kZWZpbmVkID0gbmV2ZXIgdGltZXMgb3V0XHJcbiAgICBzdXNwZW5zaWJsZSA9IHRydWUsIG9uRXJyb3I6IHVzZXJPbkVycm9yIH0gPSBzb3VyY2U7XHJcbiAgICBsZXQgcGVuZGluZ1JlcXVlc3QgPSBudWxsO1xyXG4gICAgbGV0IHJlc29sdmVkQ29tcDtcclxuICAgIGxldCByZXRyaWVzID0gMDtcclxuICAgIGNvbnN0IHJldHJ5ID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHJpZXMrKztcclxuICAgICAgICBwZW5kaW5nUmVxdWVzdCA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIGxvYWQoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBsb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGxldCB0aGlzUmVxdWVzdDtcclxuICAgICAgICByZXR1cm4gKHBlbmRpbmdSZXF1ZXN0IHx8XHJcbiAgICAgICAgICAgICh0aGlzUmVxdWVzdCA9IHBlbmRpbmdSZXF1ZXN0ID1cclxuICAgICAgICAgICAgICAgIGxvYWRlcigpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyT25FcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlclJldHJ5ID0gKCkgPT4gcmVzb2x2ZShyZXRyeSgpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJGYWlsID0gKCkgPT4gcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyT25FcnJvcihlcnIsIHVzZXJSZXRyeSwgdXNlckZhaWwsIHJldHJpZXMgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigoY29tcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzUmVxdWVzdCAhPT0gcGVuZGluZ1JlcXVlc3QgJiYgcGVuZGluZ1JlcXVlc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmdSZXF1ZXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFjb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYEFzeW5jIGNvbXBvbmVudCBsb2FkZXIgcmVzb2x2ZWQgdG8gdW5kZWZpbmVkLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBJZiB5b3UgYXJlIHVzaW5nIHJldHJ5KCksIG1ha2Ugc3VyZSB0byByZXR1cm4gaXRzIHJldHVybiB2YWx1ZS5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJvcCBtb2R1bGUgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb21wLl9fZXNNb2R1bGUgfHwgY29tcFtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcCA9IGNvbXAuZGVmYXVsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjb21wICYmICFpc09iamVjdChjb21wKSAmJiAhaXNGdW5jdGlvbihjb21wKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXN5bmMgY29tcG9uZW50IGxvYWQgcmVzdWx0OiAke2NvbXB9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ29tcCA9IGNvbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7XHJcbiAgICAgICAgICAgICAgICB9KSkpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBkZWZpbmVDb21wb25lbnQoe1xyXG4gICAgICAgIG5hbWU6ICdBc3luY0NvbXBvbmVudFdyYXBwZXInLFxyXG4gICAgICAgIF9fYXN5bmNMb2FkZXI6IGxvYWQsXHJcbiAgICAgICAgZ2V0IF9fYXN5bmNSZXNvbHZlZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkQ29tcDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldHVwKCkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRJbnN0YW5jZTtcclxuICAgICAgICAgICAgLy8gYWxyZWFkeSByZXNvbHZlZFxyXG4gICAgICAgICAgICBpZiAocmVzb2x2ZWRDb21wKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gY3JlYXRlSW5uZXJDb21wKHJlc29sdmVkQ29tcCwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCAxMyAvKiBBU1lOQ19DT01QT05FTlRfTE9BREVSICovLCAhZXJyb3JDb21wb25lbnQgLyogZG8gbm90IHRocm93IGluIGRldiBpZiB1c2VyIHByb3ZpZGVkIGVycm9yIGNvbXBvbmVudCAqLyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8vIHN1c3BlbnNlLWNvbnRyb2xsZWQgb3IgU1NSLlxyXG4gICAgICAgICAgICBpZiAoKHN1c3BlbnNpYmxlICYmIGluc3RhbmNlLnN1c3BlbnNlKSB8fFxyXG4gICAgICAgICAgICAgICAgKGlzSW5TU1JDb21wb25lbnRTZXR1cCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2FkKClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihjb21wID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gY3JlYXRlSW5uZXJDb21wKGNvbXAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiBlcnJvckNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZVZOb2RlKGVycm9yQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlZCA9IHJlZihmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcmVmKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbGF5ZWQgPSByZWYoISFkZWxheSk7XHJcbiAgICAgICAgICAgIGlmIChkZWxheSkge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXllZC52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgZGVsYXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbG9hZGVkLnZhbHVlICYmICFlcnJvci52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYEFzeW5jIGNvbXBvbmVudCB0aW1lZCBvdXQgYWZ0ZXIgJHt0aW1lb3V0fW1zLmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxvYWQoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbG9hZGVkLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5wYXJlbnQgJiYgaXNLZWVwQWxpdmUoaW5zdGFuY2UucGFyZW50LnZub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcmVudCBpcyBrZWVwLWFsaXZlLCBmb3JjZSB1cGRhdGUgc28gdGhlIGxvYWRlZCBjb21wb25lbnQnc1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgaXMgdGFrZW4gaW50byBhY2NvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVKb2IoaW5zdGFuY2UucGFyZW50LnVwZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChsb2FkZWQudmFsdWUgJiYgcmVzb2x2ZWRDb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUlubmVyQ29tcChyZXNvbHZlZENvbXAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVycm9yLnZhbHVlICYmIGVycm9yQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKGVycm9yQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvci52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobG9hZGluZ0NvbXBvbmVudCAmJiAhZGVsYXllZC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShsb2FkaW5nQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJbm5lckNvbXAoY29tcCwgeyB2bm9kZTogeyByZWYsIHByb3BzLCBjaGlsZHJlbiB9IH0pIHtcclxuICAgIGNvbnN0IHZub2RlID0gY3JlYXRlVk5vZGUoY29tcCwgcHJvcHMsIGNoaWxkcmVuKTtcclxuICAgIC8vIGVuc3VyZSBpbm5lciBjb21wb25lbnQgaW5oZXJpdHMgdGhlIGFzeW5jIHdyYXBwZXIncyByZWYgb3duZXJcclxuICAgIHZub2RlLnJlZiA9IHJlZjtcclxuICAgIHJldHVybiB2bm9kZTtcclxufVxuXG5jb25zdCBpc0tlZXBBbGl2ZSA9ICh2bm9kZSkgPT4gdm5vZGUudHlwZS5fX2lzS2VlcEFsaXZlO1xyXG5jb25zdCBLZWVwQWxpdmVJbXBsID0ge1xyXG4gICAgbmFtZTogYEtlZXBBbGl2ZWAsXHJcbiAgICAvLyBNYXJrZXIgZm9yIHNwZWNpYWwgaGFuZGxpbmcgaW5zaWRlIHRoZSByZW5kZXJlci4gV2UgYXJlIG5vdCB1c2luZyBhID09PVxyXG4gICAgLy8gY2hlY2sgZGlyZWN0bHkgb24gS2VlcEFsaXZlIGluIHRoZSByZW5kZXJlciwgYmVjYXVzZSBpbXBvcnRpbmcgaXQgZGlyZWN0bHlcclxuICAgIC8vIHdvdWxkIHByZXZlbnQgaXQgZnJvbSBiZWluZyB0cmVlLXNoYWtlbi5cclxuICAgIF9faXNLZWVwQWxpdmU6IHRydWUsXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIGluY2x1ZGU6IFtTdHJpbmcsIFJlZ0V4cCwgQXJyYXldLFxyXG4gICAgICAgIGV4Y2x1ZGU6IFtTdHJpbmcsIFJlZ0V4cCwgQXJyYXldLFxyXG4gICAgICAgIG1heDogW1N0cmluZywgTnVtYmVyXVxyXG4gICAgfSxcclxuICAgIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIC8vIEtlZXBBbGl2ZSBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgaW5zdGFudGlhdGVkIHJlbmRlcmVyIHZpYSB0aGVcclxuICAgICAgICAvLyBjdHggd2hlcmUgdGhlIHJlbmRlcmVyIHBhc3NlcyBpbiBpdHMgaW50ZXJuYWxzLFxyXG4gICAgICAgIC8vIGFuZCB0aGUgS2VlcEFsaXZlIGluc3RhbmNlIGV4cG9zZXMgYWN0aXZhdGUvZGVhY3RpdmF0ZSBpbXBsZW1lbnRhdGlvbnMuXHJcbiAgICAgICAgLy8gVGhlIHdob2xlIHBvaW50IG9mIHRoaXMgaXMgdG8gYXZvaWQgaW1wb3J0aW5nIEtlZXBBbGl2ZSBkaXJlY3RseSBpbiB0aGVcclxuICAgICAgICAvLyByZW5kZXJlciB0byBmYWNpbGl0YXRlIHRyZWUtc2hha2luZy5cclxuICAgICAgICBjb25zdCBzaGFyZWRDb250ZXh0ID0gaW5zdGFuY2UuY3R4O1xyXG4gICAgICAgIC8vIGlmIHRoZSBpbnRlcm5hbCByZW5kZXJlciBpcyBub3QgcmVnaXN0ZXJlZCwgaXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcsXHJcbiAgICAgICAgLy8gZm9yIEtlZXBBbGl2ZSwgd2UganVzdCBuZWVkIHRvIHJlbmRlciBpdHMgY2hpbGRyZW5cclxuICAgICAgICBpZiAoIXNoYXJlZENvbnRleHQucmVuZGVyZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNsb3RzLmRlZmF1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBudWxsO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLl9fdl9jYWNoZSA9IGNhY2hlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXJlbnRTdXNwZW5zZSA9IGluc3RhbmNlLnN1c3BlbnNlO1xyXG4gICAgICAgIGNvbnN0IHsgcmVuZGVyZXI6IHsgcDogcGF0Y2gsIG06IG1vdmUsIHVtOiBfdW5tb3VudCwgbzogeyBjcmVhdGVFbGVtZW50IH0gfSB9ID0gc2hhcmVkQ29udGV4dDtcclxuICAgICAgICBjb25zdCBzdG9yYWdlQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgc2hhcmVkQ29udGV4dC5hY3RpdmF0ZSA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgIG1vdmUodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCAwIC8qIEVOVEVSICovLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIC8vIGluIGNhc2UgcHJvcHMgaGF2ZSBjaGFuZ2VkXHJcbiAgICAgICAgICAgIHBhdGNoKGluc3RhbmNlLnZub2RlLCB2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHZub2RlLnNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzRGVhY3RpdmF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5hKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UuYSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2bm9kZUhvb2sgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy5vblZub2RlTW91bnRlZDtcclxuICAgICAgICAgICAgICAgIGlmICh2bm9kZUhvb2spIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBpbnN0YW5jZS5wYXJlbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudHMgdHJlZVxyXG4gICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRBZGRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHNoYXJlZENvbnRleHQuZGVhY3RpdmF0ZSA9ICh2bm9kZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgbW92ZSh2bm9kZSwgc3RvcmFnZUNvbnRhaW5lciwgbnVsbCwgMSAvKiBMRUFWRSAqLywgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UuZGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgdm5vZGVIb29rID0gdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMub25Wbm9kZVVubW91bnRlZDtcclxuICAgICAgICAgICAgICAgIGlmICh2bm9kZUhvb2spIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBpbnN0YW5jZS5wYXJlbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzRGVhY3RpdmF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29tcG9uZW50cyB0cmVlXHJcbiAgICAgICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZnVuY3Rpb24gdW5tb3VudCh2bm9kZSkge1xyXG4gICAgICAgICAgICAvLyByZXNldCB0aGUgc2hhcGVGbGFnIHNvIGl0IGNhbiBiZSBwcm9wZXJseSB1bm1vdW50ZWRcclxuICAgICAgICAgICAgcmVzZXRTaGFwZUZsYWcodm5vZGUpO1xyXG4gICAgICAgICAgICBfdW5tb3VudCh2bm9kZSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnVuY3Rpb24gcHJ1bmVDYWNoZShmaWx0ZXIpIHtcclxuICAgICAgICAgICAgY2FjaGUuZm9yRWFjaCgodm5vZGUsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGdldENvbXBvbmVudE5hbWUodm5vZGUudHlwZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmFtZSAmJiAoIWZpbHRlciB8fCAhZmlsdGVyKG5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShrZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnVuY3Rpb24gcHJ1bmVDYWNoZUVudHJ5KGtleSkge1xyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoa2V5KTtcclxuICAgICAgICAgICAgaWYgKCFjdXJyZW50IHx8IGNhY2hlZC50eXBlICE9PSBjdXJyZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoY2FjaGVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjdXJyZW50IGFjdGl2ZSBpbnN0YW5jZSBzaG91bGQgbm8gbG9uZ2VyIGJlIGtlcHQtYWxpdmUuXHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBjYW4ndCB1bm1vdW50IGl0IG5vdyBidXQgaXQgbWlnaHQgYmUgbGF0ZXIsIHNvIHJlc2V0IGl0cyBmbGFnIG5vdy5cclxuICAgICAgICAgICAgICAgIHJlc2V0U2hhcGVGbGFnKGN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhY2hlLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgICAgICBrZXlzLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwcnVuZSBjYWNoZSBvbiBpbmNsdWRlL2V4Y2x1ZGUgcHJvcCBjaGFuZ2VcclxuICAgICAgICB3YXRjaCgoKSA9PiBbcHJvcHMuaW5jbHVkZSwgcHJvcHMuZXhjbHVkZV0sIChbaW5jbHVkZSwgZXhjbHVkZV0pID0+IHtcclxuICAgICAgICAgICAgaW5jbHVkZSAmJiBwcnVuZUNhY2hlKG5hbWUgPT4gbWF0Y2hlcyhpbmNsdWRlLCBuYW1lKSk7XHJcbiAgICAgICAgICAgIGV4Y2x1ZGUgJiYgcHJ1bmVDYWNoZShuYW1lID0+ICFtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKTtcclxuICAgICAgICB9LCBcclxuICAgICAgICAvLyBwcnVuZSBwb3N0LXJlbmRlciBhZnRlciBgY3VycmVudGAgaGFzIGJlZW4gdXBkYXRlZFxyXG4gICAgICAgIHsgZmx1c2g6ICdwb3N0JywgZGVlcDogdHJ1ZSB9KTtcclxuICAgICAgICAvLyBjYWNoZSBzdWIgdHJlZSBhZnRlciByZW5kZXJcclxuICAgICAgICBsZXQgcGVuZGluZ0NhY2hlS2V5ID0gbnVsbDtcclxuICAgICAgICBjb25zdCBjYWNoZVN1YnRyZWUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGZpeCAjMTYyMSwgdGhlIHBlbmRpbmdDYWNoZUtleSBjb3VsZCBiZSAwXHJcbiAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FjaGVLZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KHBlbmRpbmdDYWNoZUtleSwgZ2V0SW5uZXJDaGlsZChpbnN0YW5jZS5zdWJUcmVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIG9uTW91bnRlZChjYWNoZVN1YnRyZWUpO1xyXG4gICAgICAgIG9uVXBkYXRlZChjYWNoZVN1YnRyZWUpO1xyXG4gICAgICAgIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNhY2hlLmZvckVhY2goY2FjaGVkID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3ViVHJlZSwgc3VzcGVuc2UgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgdm5vZGUgPSBnZXRJbm5lckNoaWxkKHN1YlRyZWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhY2hlZC50eXBlID09PSB2bm9kZS50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBpbnN0YW5jZSB3aWxsIGJlIHVubW91bnRlZCBhcyBwYXJ0IG9mIGtlZXAtYWxpdmUncyB1bm1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzZXRTaGFwZUZsYWcodm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpbnZva2UgaXRzIGRlYWN0aXZhdGVkIGhvb2sgaGVyZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhID0gdm5vZGUuY29tcG9uZW50LmRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhICYmIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChkYSwgc3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHVubW91bnQoY2FjaGVkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgcGVuZGluZ0NhY2hlS2V5ID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKCFzbG90cy5kZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgcmF3Vk5vZGUgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBLZWVwQWxpdmUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgY29tcG9uZW50IGNoaWxkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzVk5vZGUocmF3Vk5vZGUpIHx8XHJcbiAgICAgICAgICAgICAgICAoIShyYXdWTm9kZS5zaGFwZUZsYWcgJiA0IC8qIFNUQVRFRlVMX0NPTVBPTkVOVCAqLykgJiZcclxuICAgICAgICAgICAgICAgICAgICAhKHJhd1ZOb2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTVVNQRU5TRSAqLykpKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiByYXdWTm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdm5vZGUgPSBnZXRJbm5lckNoaWxkKHJhd1ZOb2RlKTtcclxuICAgICAgICAgICAgY29uc3QgY29tcCA9IHZub2RlLnR5cGU7XHJcbiAgICAgICAgICAgIC8vIGZvciBhc3luYyBjb21wb25lbnRzLCBuYW1lIGNoZWNrIHNob3VsZCBiZSBiYXNlZCBpbiBpdHMgbG9hZGVkXHJcbiAgICAgICAgICAgIC8vIGlubmVyIGNvbXBvbmVudCBpZiBhdmFpbGFibGVcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoaXNBc3luY1dyYXBwZXIodm5vZGUpXHJcbiAgICAgICAgICAgICAgICA/IHZub2RlLnR5cGUuX19hc3luY1Jlc29sdmVkIHx8IHt9XHJcbiAgICAgICAgICAgICAgICA6IGNvbXApO1xyXG4gICAgICAgICAgICBjb25zdCB7IGluY2x1ZGUsIGV4Y2x1ZGUsIG1heCB9ID0gcHJvcHM7XHJcbiAgICAgICAgICAgIGlmICgoaW5jbHVkZSAmJiAoIW5hbWUgfHwgIW1hdGNoZXMoaW5jbHVkZSwgbmFtZSkpKSB8fFxyXG4gICAgICAgICAgICAgICAgKGV4Y2x1ZGUgJiYgbmFtZSAmJiBtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IHZub2RlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhd1ZOb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHZub2RlLmtleSA9PSBudWxsID8gY29tcCA6IHZub2RlLmtleTtcclxuICAgICAgICAgICAgY29uc3QgY2FjaGVkVk5vZGUgPSBjYWNoZS5nZXQoa2V5KTtcclxuICAgICAgICAgICAgLy8gY2xvbmUgdm5vZGUgaWYgaXQncyByZXVzZWQgYmVjYXVzZSB3ZSBhcmUgZ29pbmcgdG8gbXV0YXRlIGl0XHJcbiAgICAgICAgICAgIGlmICh2bm9kZS5lbCkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUgPSBjbG9uZVZOb2RlKHZub2RlKTtcclxuICAgICAgICAgICAgICAgIGlmIChyYXdWTm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICByYXdWTm9kZS5zc0NvbnRlbnQgPSB2bm9kZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAjMTUxMyBpdCdzIHBvc3NpYmxlIGZvciB0aGUgcmV0dXJuZWQgdm5vZGUgdG8gYmUgY2xvbmVkIGR1ZSB0byBhdHRyXHJcbiAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoIG9yIHNjb3BlSWQsIHNvIHRoZSB2bm9kZSBoZXJlIG1heSBub3QgYmUgdGhlIGZpbmFsIHZub2RlXHJcbiAgICAgICAgICAgIC8vIHRoYXQgaXMgbW91bnRlZC4gSW5zdGVhZCBvZiBjYWNoaW5nIGl0IGRpcmVjdGx5LCB3ZSBzdG9yZSB0aGUgcGVuZGluZ1xyXG4gICAgICAgICAgICAvLyBrZXkgYW5kIGNhY2hlIGBpbnN0YW5jZS5zdWJUcmVlYCAodGhlIG5vcm1hbGl6ZWQgdm5vZGUpIGluXHJcbiAgICAgICAgICAgIC8vIGJlZm9yZU1vdW50L2JlZm9yZVVwZGF0ZSBob29rcy5cclxuICAgICAgICAgICAgcGVuZGluZ0NhY2hlS2V5ID0ga2V5O1xyXG4gICAgICAgICAgICBpZiAoY2FjaGVkVk5vZGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvcHkgb3ZlciBtb3VudGVkIHN0YXRlXHJcbiAgICAgICAgICAgICAgICB2bm9kZS5lbCA9IGNhY2hlZFZOb2RlLmVsO1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuY29tcG9uZW50ID0gY2FjaGVkVk5vZGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgaWYgKHZub2RlLnRyYW5zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZWN1cnNpdmVseSB1cGRhdGUgdHJhbnNpdGlvbiBob29rcyBvbiBzdWJUcmVlXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKHZub2RlLCB2bm9kZS50cmFuc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIHZub2RlIGJlaW5nIG1vdW50ZWQgYXMgZnJlc2hcclxuICAgICAgICAgICAgICAgIHZub2RlLnNoYXBlRmxhZyB8PSA1MTIgLyogQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi87XHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHRoaXMga2V5IHRoZSBmcmVzaGVzdFxyXG4gICAgICAgICAgICAgICAga2V5cy5kZWxldGUoa2V5KTtcclxuICAgICAgICAgICAgICAgIGtleXMuYWRkKGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBrZXlzLmFkZChrZXkpO1xyXG4gICAgICAgICAgICAgICAgLy8gcHJ1bmUgb2xkZXN0IGVudHJ5XHJcbiAgICAgICAgICAgICAgICBpZiAobWF4ICYmIGtleXMuc2l6ZSA+IHBhcnNlSW50KG1heCwgMTApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGtleXMudmFsdWVzKCkubmV4dCgpLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBhdm9pZCB2bm9kZSBiZWluZyB1bm1vdW50ZWRcclxuICAgICAgICAgICAgdm5vZGUuc2hhcGVGbGFnIHw9IDI1NiAvKiBDT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi87XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSB2bm9kZTtcclxuICAgICAgICAgICAgcmV0dXJuIHJhd1ZOb2RlO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcbi8vIGV4cG9ydCB0aGUgcHVibGljIHR5cGUgZm9yIGgvdHN4IGluZmVyZW5jZVxyXG4vLyBhbHNvIHRvIGF2b2lkIGlubGluZSBpbXBvcnQoKSBpbiBnZW5lcmF0ZWQgZC50cyBmaWxlc1xyXG5jb25zdCBLZWVwQWxpdmUgPSBLZWVwQWxpdmVJbXBsO1xyXG5mdW5jdGlvbiBtYXRjaGVzKHBhdHRlcm4sIG5hbWUpIHtcclxuICAgIGlmIChpc0FycmF5KHBhdHRlcm4pKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4uc29tZSgocCkgPT4gbWF0Y2hlcyhwLCBuYW1lKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1N0cmluZyhwYXR0ZXJuKSkge1xyXG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KCcsJykuaW5jbHVkZXMobmFtZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwYXR0ZXJuLnRlc3QpIHtcclxuICAgICAgICByZXR1cm4gcGF0dGVybi50ZXN0KG5hbWUpO1xyXG4gICAgfVxyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBvbkFjdGl2YXRlZChob29rLCB0YXJnZXQpIHtcclxuICAgIHJlZ2lzdGVyS2VlcEFsaXZlSG9vayhob29rLCBcImFcIiAvKiBBQ1RJVkFURUQgKi8sIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gb25EZWFjdGl2YXRlZChob29rLCB0YXJnZXQpIHtcclxuICAgIHJlZ2lzdGVyS2VlcEFsaXZlSG9vayhob29rLCBcImRhXCIgLyogREVBQ1RJVkFURUQgKi8sIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gcmVnaXN0ZXJLZWVwQWxpdmVIb29rKGhvb2ssIHR5cGUsIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgLy8gY2FjaGUgdGhlIGRlYWN0aXZhdGUgYnJhbmNoIGNoZWNrIHdyYXBwZXIgZm9yIGluamVjdGVkIGhvb2tzIHNvIHRoZSBzYW1lXHJcbiAgICAvLyBob29rIGNhbiBiZSBwcm9wZXJseSBkZWR1cGVkIGJ5IHRoZSBzY2hlZHVsZXIuIFwiX193ZGNcIiBzdGFuZHMgZm9yIFwid2l0aFxyXG4gICAgLy8gZGVhY3RpdmF0aW9uIGNoZWNrXCIuXHJcbiAgICBjb25zdCB3cmFwcGVkSG9vayA9IGhvb2suX193ZGMgfHxcclxuICAgICAgICAoaG9vay5fX3dkYyA9ICgpID0+IHtcclxuICAgICAgICAgICAgLy8gb25seSBmaXJlIHRoZSBob29rIGlmIHRoZSB0YXJnZXQgaW5zdGFuY2UgaXMgTk9UIGluIGEgZGVhY3RpdmF0ZWQgYnJhbmNoLlxyXG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHRhcmdldDtcclxuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LmlzRGVhY3RpdmF0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGhvb2soKTtcclxuICAgICAgICB9KTtcclxuICAgIGluamVjdEhvb2sodHlwZSwgd3JhcHBlZEhvb2ssIHRhcmdldCk7XHJcbiAgICAvLyBJbiBhZGRpdGlvbiB0byByZWdpc3RlcmluZyBpdCBvbiB0aGUgdGFyZ2V0IGluc3RhbmNlLCB3ZSB3YWxrIHVwIHRoZSBwYXJlbnRcclxuICAgIC8vIGNoYWluIGFuZCByZWdpc3RlciBpdCBvbiBhbGwgYW5jZXN0b3IgaW5zdGFuY2VzIHRoYXQgYXJlIGtlZXAtYWxpdmUgcm9vdHMuXHJcbiAgICAvLyBUaGlzIGF2b2lkcyB0aGUgbmVlZCB0byB3YWxrIHRoZSBlbnRpcmUgY29tcG9uZW50IHRyZWUgd2hlbiBpbnZva2luZyB0aGVzZVxyXG4gICAgLy8gaG9va3MsIGFuZCBtb3JlIGltcG9ydGFudGx5LCBhdm9pZHMgdGhlIG5lZWQgdG8gdHJhY2sgY2hpbGQgY29tcG9uZW50cyBpblxyXG4gICAgLy8gYXJyYXlzLlxyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIGxldCBjdXJyZW50ID0gdGFyZ2V0LnBhcmVudDtcclxuICAgICAgICB3aGlsZSAoY3VycmVudCAmJiBjdXJyZW50LnBhcmVudCkge1xyXG4gICAgICAgICAgICBpZiAoaXNLZWVwQWxpdmUoY3VycmVudC5wYXJlbnQudm5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICBpbmplY3RUb0tlZXBBbGl2ZVJvb3Qod3JhcHBlZEhvb2ssIHR5cGUsIHRhcmdldCwgY3VycmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpbmplY3RUb0tlZXBBbGl2ZVJvb3QoaG9vaywgdHlwZSwgdGFyZ2V0LCBrZWVwQWxpdmVSb290KSB7XHJcbiAgICAvLyBpbmplY3RIb29rIHdyYXBzIHRoZSBvcmlnaW5hbCBmb3IgZXJyb3IgaGFuZGxpbmcsIHNvIG1ha2Ugc3VyZSB0byByZW1vdmVcclxuICAgIC8vIHRoZSB3cmFwcGVkIHZlcnNpb24uXHJcbiAgICBjb25zdCBpbmplY3RlZCA9IGluamVjdEhvb2sodHlwZSwgaG9vaywga2VlcEFsaXZlUm9vdCwgdHJ1ZSAvKiBwcmVwZW5kICovKTtcclxuICAgIG9uVW5tb3VudGVkKCgpID0+IHtcclxuICAgICAgICByZW1vdmUoa2VlcEFsaXZlUm9vdFt0eXBlXSwgaW5qZWN0ZWQpO1xyXG4gICAgfSwgdGFyZ2V0KTtcclxufVxyXG5mdW5jdGlvbiByZXNldFNoYXBlRmxhZyh2bm9kZSkge1xyXG4gICAgbGV0IHNoYXBlRmxhZyA9IHZub2RlLnNoYXBlRmxhZztcclxuICAgIGlmIChzaGFwZUZsYWcgJiAyNTYgLyogQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovKSB7XHJcbiAgICAgICAgc2hhcGVGbGFnIC09IDI1NiAvKiBDT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi87XHJcbiAgICB9XHJcbiAgICBpZiAoc2hhcGVGbGFnICYgNTEyIC8qIENPTVBPTkVOVF9LRVBUX0FMSVZFICovKSB7XHJcbiAgICAgICAgc2hhcGVGbGFnIC09IDUxMiAvKiBDT01QT05FTlRfS0VQVF9BTElWRSAqLztcclxuICAgIH1cclxuICAgIHZub2RlLnNoYXBlRmxhZyA9IHNoYXBlRmxhZztcclxufVxyXG5mdW5jdGlvbiBnZXRJbm5lckNoaWxkKHZub2RlKSB7XHJcbiAgICByZXR1cm4gdm5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNVU1BFTlNFICovID8gdm5vZGUuc3NDb250ZW50IDogdm5vZGU7XHJcbn1cblxuZnVuY3Rpb24gaW5qZWN0SG9vayh0eXBlLCBob29rLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UsIHByZXBlbmQgPSBmYWxzZSkge1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIGNvbnN0IGhvb2tzID0gdGFyZ2V0W3R5cGVdIHx8ICh0YXJnZXRbdHlwZV0gPSBbXSk7XHJcbiAgICAgICAgLy8gY2FjaGUgdGhlIGVycm9yIGhhbmRsaW5nIHdyYXBwZXIgZm9yIGluamVjdGVkIGhvb2tzIHNvIHRoZSBzYW1lIGhvb2tcclxuICAgICAgICAvLyBjYW4gYmUgcHJvcGVybHkgZGVkdXBlZCBieSB0aGUgc2NoZWR1bGVyLiBcIl9fd2VoXCIgc3RhbmRzIGZvciBcIndpdGggZXJyb3JcclxuICAgICAgICAvLyBoYW5kbGluZ1wiLlxyXG4gICAgICAgIGNvbnN0IHdyYXBwZWRIb29rID0gaG9vay5fX3dlaCB8fFxyXG4gICAgICAgICAgICAoaG9vay5fX3dlaCA9ICguLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmlzVW5tb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gZGlzYWJsZSB0cmFja2luZyBpbnNpZGUgYWxsIGxpZmVjeWNsZSBob29rc1xyXG4gICAgICAgICAgICAgICAgLy8gc2luY2UgdGhleSBjYW4gcG90ZW50aWFsbHkgYmUgY2FsbGVkIGluc2lkZSBlZmZlY3RzLlxyXG4gICAgICAgICAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgICAgICAgICAgLy8gU2V0IGN1cnJlbnRJbnN0YW5jZSBkdXJpbmcgaG9vayBpbnZvY2F0aW9uLlxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBhc3N1bWVzIHRoZSBob29rIGRvZXMgbm90IHN5bmNocm9ub3VzbHkgdHJpZ2dlciBvdGhlciBob29rcywgd2hpY2hcclxuICAgICAgICAgICAgICAgIC8vIGNhbiBvbmx5IGJlIGZhbHNlIHdoZW4gdGhlIHVzZXIgZG9lcyBzb21ldGhpbmcgcmVhbGx5IGZ1bmt5LlxyXG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCB0YXJnZXQsIHR5cGUsIGFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChwcmVwZW5kKSB7XHJcbiAgICAgICAgICAgIGhvb2tzLnVuc2hpZnQod3JhcHBlZEhvb2spO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaG9va3MucHVzaCh3cmFwcGVkSG9vayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB3cmFwcGVkSG9vaztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGFwaU5hbWUgPSB0b0hhbmRsZXJLZXkoRXJyb3JUeXBlU3RyaW5nc1t0eXBlXS5yZXBsYWNlKC8gaG9vayQvLCAnJykpO1xyXG4gICAgICAgIHdhcm4oYCR7YXBpTmFtZX0gaXMgY2FsbGVkIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZSB0byBiZSBgICtcclxuICAgICAgICAgICAgYGFzc29jaWF0ZWQgd2l0aC4gYCArXHJcbiAgICAgICAgICAgIGBMaWZlY3ljbGUgaW5qZWN0aW9uIEFQSXMgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgZXhlY3V0aW9uIG9mIHNldHVwKCkuYCArXHJcbiAgICAgICAgICAgIChgIElmIHlvdSBhcmUgdXNpbmcgYXN5bmMgc2V0dXAoKSwgbWFrZSBzdXJlIHRvIHJlZ2lzdGVyIGxpZmVjeWNsZSBgICtcclxuICAgICAgICAgICAgICAgICAgICBgaG9va3MgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdCBzdGF0ZW1lbnQuYFxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgY3JlYXRlSG9vayA9IChsaWZlY3ljbGUpID0+IChob29rLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UpID0+IFxyXG4vLyBwb3N0LWNyZWF0ZSBsaWZlY3ljbGUgcmVnaXN0cmF0aW9ucyBhcmUgbm9vcHMgZHVyaW5nIFNTUiAoZXhjZXB0IGZvciBzZXJ2ZXJQcmVmZXRjaClcclxuKCFpc0luU1NSQ29tcG9uZW50U2V0dXAgfHwgbGlmZWN5Y2xlID09PSBcInNwXCIgLyogU0VSVkVSX1BSRUZFVENIICovKSAmJlxyXG4gICAgaW5qZWN0SG9vayhsaWZlY3ljbGUsIGhvb2ssIHRhcmdldCk7XHJcbmNvbnN0IG9uQmVmb3JlTW91bnQgPSBjcmVhdGVIb29rKFwiYm1cIiAvKiBCRUZPUkVfTU9VTlQgKi8pO1xyXG5jb25zdCBvbk1vdW50ZWQgPSBjcmVhdGVIb29rKFwibVwiIC8qIE1PVU5URUQgKi8pO1xyXG5jb25zdCBvbkJlZm9yZVVwZGF0ZSA9IGNyZWF0ZUhvb2soXCJidVwiIC8qIEJFRk9SRV9VUERBVEUgKi8pO1xyXG5jb25zdCBvblVwZGF0ZWQgPSBjcmVhdGVIb29rKFwidVwiIC8qIFVQREFURUQgKi8pO1xyXG5jb25zdCBvbkJlZm9yZVVubW91bnQgPSBjcmVhdGVIb29rKFwiYnVtXCIgLyogQkVGT1JFX1VOTU9VTlQgKi8pO1xyXG5jb25zdCBvblVubW91bnRlZCA9IGNyZWF0ZUhvb2soXCJ1bVwiIC8qIFVOTU9VTlRFRCAqLyk7XHJcbmNvbnN0IG9uU2VydmVyUHJlZmV0Y2ggPSBjcmVhdGVIb29rKFwic3BcIiAvKiBTRVJWRVJfUFJFRkVUQ0ggKi8pO1xyXG5jb25zdCBvblJlbmRlclRyaWdnZXJlZCA9IGNyZWF0ZUhvb2soXCJydGdcIiAvKiBSRU5ERVJfVFJJR0dFUkVEICovKTtcclxuY29uc3Qgb25SZW5kZXJUcmFja2VkID0gY3JlYXRlSG9vayhcInJ0Y1wiIC8qIFJFTkRFUl9UUkFDS0VEICovKTtcclxuZnVuY3Rpb24gb25FcnJvckNhcHR1cmVkKGhvb2ssIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgaW5qZWN0SG9vayhcImVjXCIgLyogRVJST1JfQ0FQVFVSRUQgKi8sIGhvb2ssIHRhcmdldCk7XHJcbn1cblxuZnVuY3Rpb24gY3JlYXRlRHVwbGljYXRlQ2hlY2tlcigpIHtcclxuICAgIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHJldHVybiAodHlwZSwga2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGNhY2hlW2tleV0pIHtcclxuICAgICAgICAgICAgd2FybihgJHt0eXBlfSBwcm9wZXJ0eSBcIiR7a2V5fVwiIGlzIGFscmVhZHkgZGVmaW5lZCBpbiAke2NhY2hlW2tleV19LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2FjaGVba2V5XSA9IHR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5sZXQgc2hvdWxkQ2FjaGVBY2Nlc3MgPSB0cnVlO1xyXG5mdW5jdGlvbiBhcHBseU9wdGlvbnMoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSByZXNvbHZlTWVyZ2VkT3B0aW9ucyhpbnN0YW5jZSk7XHJcbiAgICBjb25zdCBwdWJsaWNUaGlzID0gaW5zdGFuY2UucHJveHk7XHJcbiAgICBjb25zdCBjdHggPSBpbnN0YW5jZS5jdHg7XHJcbiAgICAvLyBkbyBub3QgY2FjaGUgcHJvcGVydHkgYWNjZXNzIG9uIHB1YmxpYyBwcm94eSBkdXJpbmcgc3RhdGUgaW5pdGlhbGl6YXRpb25cclxuICAgIHNob3VsZENhY2hlQWNjZXNzID0gZmFsc2U7XHJcbiAgICAvLyBjYWxsIGJlZm9yZUNyZWF0ZSBmaXJzdCBiZWZvcmUgYWNjZXNzaW5nIG90aGVyIG9wdGlvbnMgc2luY2VcclxuICAgIC8vIHRoZSBob29rIG1heSBtdXRhdGUgcmVzb2x2ZWQgb3B0aW9ucyAoIzI3OTEpXHJcbiAgICBpZiAob3B0aW9ucy5iZWZvcmVDcmVhdGUpIHtcclxuICAgICAgICBjYWxsSG9vayhvcHRpb25zLmJlZm9yZUNyZWF0ZSwgaW5zdGFuY2UsIFwiYmNcIiAvKiBCRUZPUkVfQ1JFQVRFICovKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgXHJcbiAgICAvLyBzdGF0ZVxyXG4gICAgZGF0YTogZGF0YU9wdGlvbnMsIGNvbXB1dGVkOiBjb21wdXRlZE9wdGlvbnMsIG1ldGhvZHMsIHdhdGNoOiB3YXRjaE9wdGlvbnMsIHByb3ZpZGU6IHByb3ZpZGVPcHRpb25zLCBpbmplY3Q6IGluamVjdE9wdGlvbnMsIFxyXG4gICAgLy8gbGlmZWN5Y2xlXHJcbiAgICBjcmVhdGVkLCBiZWZvcmVNb3VudCwgbW91bnRlZCwgYmVmb3JlVXBkYXRlLCB1cGRhdGVkLCBhY3RpdmF0ZWQsIGRlYWN0aXZhdGVkLCBiZWZvcmVEZXN0cm95LCBiZWZvcmVVbm1vdW50LCBkZXN0cm95ZWQsIHVubW91bnRlZCwgcmVuZGVyLCByZW5kZXJUcmFja2VkLCByZW5kZXJUcmlnZ2VyZWQsIGVycm9yQ2FwdHVyZWQsIHNlcnZlclByZWZldGNoLCBcclxuICAgIC8vIHB1YmxpYyBBUElcclxuICAgIGV4cG9zZSwgaW5oZXJpdEF0dHJzLCBcclxuICAgIC8vIGFzc2V0c1xyXG4gICAgY29tcG9uZW50cywgZGlyZWN0aXZlcywgZmlsdGVycyB9ID0gb3B0aW9ucztcclxuICAgIGNvbnN0IGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGNyZWF0ZUR1cGxpY2F0ZUNoZWNrZXIoKSA6IG51bGw7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY29uc3QgW3Byb3BzT3B0aW9uc10gPSBpbnN0YW5jZS5wcm9wc09wdGlvbnM7XHJcbiAgICAgICAgaWYgKHByb3BzT3B0aW9ucykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wc09wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIlByb3BzXCIgLyogUFJPUFMgKi8sIGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBvcHRpb25zIGluaXRpYWxpemF0aW9uIG9yZGVyICh0byBiZSBjb25zaXN0ZW50IHdpdGggVnVlIDIpOlxyXG4gICAgLy8gLSBwcm9wcyAoYWxyZWFkeSBkb25lIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbilcclxuICAgIC8vIC0gaW5qZWN0XHJcbiAgICAvLyAtIG1ldGhvZHNcclxuICAgIC8vIC0gZGF0YSAoZGVmZXJyZWQgc2luY2UgaXQgcmVsaWVzIG9uIGB0aGlzYCBhY2Nlc3MpXHJcbiAgICAvLyAtIGNvbXB1dGVkXHJcbiAgICAvLyAtIHdhdGNoIChkZWZlcnJlZCBzaW5jZSBpdCByZWxpZXMgb24gYHRoaXNgIGFjY2VzcylcclxuICAgIGlmIChpbmplY3RPcHRpb25zKSB7XHJcbiAgICAgICAgcmVzb2x2ZUluamVjdGlvbnMoaW5qZWN0T3B0aW9ucywgY3R4LCBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMsIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLnVud3JhcEluamVjdGVkUmVmKTtcclxuICAgIH1cclxuICAgIGlmIChtZXRob2RzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWV0aG9kcykge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRob2RIYW5kbGVyID0gbWV0aG9kc1trZXldO1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihtZXRob2RIYW5kbGVyKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gSW4gZGV2IG1vZGUsIHdlIHVzZSB0aGUgYGNyZWF0ZVJlbmRlckNvbnRleHRgIGZ1bmN0aW9uIHRvIGRlZmluZVxyXG4gICAgICAgICAgICAgICAgLy8gbWV0aG9kcyB0byB0aGUgcHJveHkgdGFyZ2V0LCBhbmQgdGhvc2UgYXJlIHJlYWQtb25seSBidXRcclxuICAgICAgICAgICAgICAgIC8vIHJlY29uZmlndXJhYmxlLCBzbyBpdCBuZWVkcyB0byBiZSByZWRlZmluZWQgaGVyZVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbWV0aG9kSGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHhba2V5XSA9IG1ldGhvZEhhbmRsZXIuYmluZChwdWJsaWNUaGlzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJNZXRob2RzXCIgLyogTUVUSE9EUyAqLywga2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYE1ldGhvZCBcIiR7a2V5fVwiIGhhcyB0eXBlIFwiJHt0eXBlb2YgbWV0aG9kSGFuZGxlcn1cIiBpbiB0aGUgY29tcG9uZW50IGRlZmluaXRpb24uIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P2ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGRhdGFPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNGdW5jdGlvbihkYXRhT3B0aW9ucykpIHtcclxuICAgICAgICAgICAgd2FybihgVGhlIGRhdGEgb3B0aW9uIG11c3QgYmUgYSBmdW5jdGlvbi4gYCArXHJcbiAgICAgICAgICAgICAgICBgUGxhaW4gb2JqZWN0IHVzYWdlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBkYXRhT3B0aW9ucy5jYWxsKHB1YmxpY1RoaXMsIHB1YmxpY1RoaXMpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNQcm9taXNlKGRhdGEpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYGRhdGEoKSByZXR1cm5lZCBhIFByb21pc2UgLSBub3RlIGRhdGEoKSBjYW5ub3QgYmUgYXN5bmM7IElmIHlvdSBgICtcclxuICAgICAgICAgICAgICAgIGBpbnRlbmQgdG8gcGVyZm9ybSBkYXRhIGZldGNoaW5nIGJlZm9yZSBjb21wb25lbnQgcmVuZGVycywgdXNlIGAgK1xyXG4gICAgICAgICAgICAgICAgYGFzeW5jIHNldHVwKCkgKyA8U3VzcGVuc2U+LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBkYXRhKCkgc2hvdWxkIHJldHVybiBhbiBvYmplY3QuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5kYXRhID0gcmVhY3RpdmUoZGF0YSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJEYXRhXCIgLyogREFUQSAqLywga2V5KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBleHBvc2UgZGF0YSBvbiBjdHggZHVyaW5nIGRldlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlbMF0gIT09ICckJyAmJiBrZXlbMF0gIT09ICdfJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGRhdGFba2V5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzdGF0ZSBpbml0aWFsaXphdGlvbiBjb21wbGV0ZSBhdCB0aGlzIHBvaW50IC0gc3RhcnQgY2FjaGluZyBhY2Nlc3NcclxuICAgIHNob3VsZENhY2hlQWNjZXNzID0gdHJ1ZTtcclxuICAgIGlmIChjb21wdXRlZE9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21wdXRlZE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0ID0gY29tcHV0ZWRPcHRpb25zW2tleV07XHJcbiAgICAgICAgICAgIGNvbnN0IGdldCA9IGlzRnVuY3Rpb24ob3B0KVxyXG4gICAgICAgICAgICAgICAgPyBvcHQuYmluZChwdWJsaWNUaGlzLCBwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgOiBpc0Z1bmN0aW9uKG9wdC5nZXQpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBvcHQuZ2V0LmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcylcclxuICAgICAgICAgICAgICAgICAgICA6IE5PT1A7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZ2V0ID09PSBOT09QKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDb21wdXRlZCBwcm9wZXJ0eSBcIiR7a2V5fVwiIGhhcyBubyBnZXR0ZXIuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgc2V0ID0gIWlzRnVuY3Rpb24ob3B0KSAmJiBpc0Z1bmN0aW9uKG9wdC5zZXQpXHJcbiAgICAgICAgICAgICAgICA/IG9wdC5zZXQuYmluZChwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICA/ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgV3JpdGUgb3BlcmF0aW9uIGZhaWxlZDogY29tcHV0ZWQgcHJvcGVydHkgXCIke2tleX1cIiBpcyByZWFkb25seS5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgOiBOT09QO1xyXG4gICAgICAgICAgICBjb25zdCBjID0gY29tcHV0ZWQoe1xyXG4gICAgICAgICAgICAgICAgZ2V0LFxyXG4gICAgICAgICAgICAgICAgc2V0XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGMudmFsdWUsXHJcbiAgICAgICAgICAgICAgICBzZXQ6IHYgPT4gKGMudmFsdWUgPSB2KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiQ29tcHV0ZWRcIiAvKiBDT01QVVRFRCAqLywga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh3YXRjaE9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB3YXRjaE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgY3JlYXRlV2F0Y2hlcih3YXRjaE9wdGlvbnNba2V5XSwgY3R4LCBwdWJsaWNUaGlzLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm92aWRlT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IHByb3ZpZGVzID0gaXNGdW5jdGlvbihwcm92aWRlT3B0aW9ucylcclxuICAgICAgICAgICAgPyBwcm92aWRlT3B0aW9ucy5jYWxsKHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgIDogcHJvdmlkZU9wdGlvbnM7XHJcbiAgICAgICAgUmVmbGVjdC5vd25LZXlzKHByb3ZpZGVzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgIHByb3ZpZGUoa2V5LCBwcm92aWRlc1trZXldKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjcmVhdGVkKSB7XHJcbiAgICAgICAgY2FsbEhvb2soY3JlYXRlZCwgaW5zdGFuY2UsIFwiY1wiIC8qIENSRUFURUQgKi8pO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJMaWZlY3ljbGVIb29rKHJlZ2lzdGVyLCBob29rKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoaG9vaykpIHtcclxuICAgICAgICAgICAgaG9vay5mb3JFYWNoKF9ob29rID0+IHJlZ2lzdGVyKF9ob29rLmJpbmQocHVibGljVGhpcykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaG9vaykge1xyXG4gICAgICAgICAgICByZWdpc3Rlcihob29rLmJpbmQocHVibGljVGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkJlZm9yZU1vdW50LCBiZWZvcmVNb3VudCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25Nb3VudGVkLCBtb3VudGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkJlZm9yZVVwZGF0ZSwgYmVmb3JlVXBkYXRlKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblVwZGF0ZWQsIHVwZGF0ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQWN0aXZhdGVkLCBhY3RpdmF0ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uRGVhY3RpdmF0ZWQsIGRlYWN0aXZhdGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkVycm9yQ2FwdHVyZWQsIGVycm9yQ2FwdHVyZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uUmVuZGVyVHJhY2tlZCwgcmVuZGVyVHJhY2tlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25SZW5kZXJUcmlnZ2VyZWQsIHJlbmRlclRyaWdnZXJlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25CZWZvcmVVbm1vdW50LCBiZWZvcmVVbm1vdW50KTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblVubW91bnRlZCwgdW5tb3VudGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblNlcnZlclByZWZldGNoLCBzZXJ2ZXJQcmVmZXRjaCk7XHJcbiAgICBpZiAoaXNBcnJheShleHBvc2UpKSB7XHJcbiAgICAgICAgaWYgKGV4cG9zZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhwb3NlZCA9IGluc3RhbmNlLmV4cG9zZWQgfHwgKGluc3RhbmNlLmV4cG9zZWQgPSB7fSk7XHJcbiAgICAgICAgICAgIGV4cG9zZS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3NlZCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBwdWJsaWNUaGlzW2tleV0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0OiB2YWwgPT4gKHB1YmxpY1RoaXNba2V5XSA9IHZhbClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIWluc3RhbmNlLmV4cG9zZWQpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuZXhwb3NlZCA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG9wdGlvbnMgdGhhdCBhcmUgaGFuZGxlZCB3aGVuIGNyZWF0aW5nIHRoZSBpbnN0YW5jZSBidXQgYWxzbyBuZWVkIHRvIGJlXHJcbiAgICAvLyBhcHBsaWVkIGZyb20gbWl4aW5zXHJcbiAgICBpZiAocmVuZGVyICYmIGluc3RhbmNlLnJlbmRlciA9PT0gTk9PUCkge1xyXG4gICAgICAgIGluc3RhbmNlLnJlbmRlciA9IHJlbmRlcjtcclxuICAgIH1cclxuICAgIGlmIChpbmhlcml0QXR0cnMgIT0gbnVsbCkge1xyXG4gICAgICAgIGluc3RhbmNlLmluaGVyaXRBdHRycyA9IGluaGVyaXRBdHRycztcclxuICAgIH1cclxuICAgIC8vIGFzc2V0IG9wdGlvbnMuXHJcbiAgICBpZiAoY29tcG9uZW50cylcclxuICAgICAgICBpbnN0YW5jZS5jb21wb25lbnRzID0gY29tcG9uZW50cztcclxuICAgIGlmIChkaXJlY3RpdmVzKVxyXG4gICAgICAgIGluc3RhbmNlLmRpcmVjdGl2ZXMgPSBkaXJlY3RpdmVzO1xyXG59XHJcbmZ1bmN0aW9uIHJlc29sdmVJbmplY3Rpb25zKGluamVjdE9wdGlvbnMsIGN0eCwgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzID0gTk9PUCwgdW53cmFwUmVmID0gZmFsc2UpIHtcclxuICAgIGlmIChpc0FycmF5KGluamVjdE9wdGlvbnMpKSB7XHJcbiAgICAgICAgaW5qZWN0T3B0aW9ucyA9IG5vcm1hbGl6ZUluamVjdChpbmplY3RPcHRpb25zKTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluamVjdE9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBvcHQgPSBpbmplY3RPcHRpb25zW2tleV07XHJcbiAgICAgICAgbGV0IGluamVjdGVkO1xyXG4gICAgICAgIGlmIChpc09iamVjdChvcHQpKSB7XHJcbiAgICAgICAgICAgIGlmICgnZGVmYXVsdCcgaW4gb3B0KSB7XHJcbiAgICAgICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQuZnJvbSB8fCBrZXksIG9wdC5kZWZhdWx0LCB0cnVlIC8qIHRyZWF0IGRlZmF1bHQgZnVuY3Rpb24gYXMgZmFjdG9yeSAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQuZnJvbSB8fCBrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNSZWYoaW5qZWN0ZWQpKSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoZSBjaGVjayBpbiAzLjNcclxuICAgICAgICAgICAgaWYgKHVud3JhcFJlZikge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBpbmplY3RlZC52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICBzZXQ6IHYgPT4gKGluamVjdGVkLnZhbHVlID0gdilcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYGluamVjdGVkIHByb3BlcnR5IFwiJHtrZXl9XCIgaXMgYSByZWYgYW5kIHdpbGwgYmUgYXV0by11bndyYXBwZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBhbmQgbm8gbG9uZ2VyIG5lZWRzIFxcYC52YWx1ZVxcYCBpbiB0aGUgbmV4dCBtaW5vciByZWxlYXNlLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYFRvIG9wdC1pbiB0byB0aGUgbmV3IGJlaGF2aW9yIG5vdywgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBzZXQgXFxgYXBwLmNvbmZpZy51bndyYXBJbmplY3RlZFJlZiA9IHRydWVcXGAgKHRoaXMgY29uZmlnIGlzIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgdGVtcG9yYXJ5IGFuZCB3aWxsIG5vdCBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZS4pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjdHhba2V5XSA9IGluamVjdGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjdHhba2V5XSA9IGluamVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIkluamVjdFwiIC8qIElOSkVDVCAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY2FsbEhvb2soaG9vaywgaW5zdGFuY2UsIHR5cGUpIHtcclxuICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGlzQXJyYXkoaG9vaylcclxuICAgICAgICA/IGhvb2subWFwKGggPT4gaC5iaW5kKGluc3RhbmNlLnByb3h5KSlcclxuICAgICAgICA6IGhvb2suYmluZChpbnN0YW5jZS5wcm94eSksIGluc3RhbmNlLCB0eXBlKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVXYXRjaGVyKHJhdywgY3R4LCBwdWJsaWNUaGlzLCBrZXkpIHtcclxuICAgIGNvbnN0IGdldHRlciA9IGtleS5pbmNsdWRlcygnLicpXHJcbiAgICAgICAgPyBjcmVhdGVQYXRoR2V0dGVyKHB1YmxpY1RoaXMsIGtleSlcclxuICAgICAgICA6ICgpID0+IHB1YmxpY1RoaXNba2V5XTtcclxuICAgIGlmIChpc1N0cmluZyhyYXcpKSB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IGN0eFtyYXddO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XHJcbiAgICAgICAgICAgIHdhdGNoKGdldHRlciwgaGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIGhhbmRsZXIgc3BlY2lmaWVkIGJ5IGtleSBcIiR7cmF3fVwiYCwgaGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbihyYXcpKSB7XHJcbiAgICAgICAgd2F0Y2goZ2V0dGVyLCByYXcuYmluZChwdWJsaWNUaGlzKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdChyYXcpKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgICAgICByYXcuZm9yRWFjaChyID0+IGNyZWF0ZVdhdGNoZXIociwgY3R4LCBwdWJsaWNUaGlzLCBrZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSBpc0Z1bmN0aW9uKHJhdy5oYW5kbGVyKVxyXG4gICAgICAgICAgICAgICAgPyByYXcuaGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgICAgICA6IGN0eFtyYXcuaGFuZGxlcl07XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXRjaChnZXR0ZXIsIGhhbmRsZXIsIHJhdyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIGhhbmRsZXIgc3BlY2lmaWVkIGJ5IGtleSBcIiR7cmF3LmhhbmRsZXJ9XCJgLCBoYW5kbGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYEludmFsaWQgd2F0Y2ggb3B0aW9uOiBcIiR7a2V5fVwiYCwgcmF3KTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogUmVzb2x2ZSBtZXJnZWQgb3B0aW9ucyBhbmQgY2FjaGUgaXQgb24gdGhlIGNvbXBvbmVudC5cclxuICogVGhpcyBpcyBkb25lIG9ubHkgb25jZSBwZXItY29tcG9uZW50IHNpbmNlIHRoZSBtZXJnaW5nIGRvZXMgbm90IGludm9sdmVcclxuICogaW5zdGFuY2VzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZU1lcmdlZE9wdGlvbnMoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGJhc2UgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgY29uc3QgeyBtaXhpbnMsIGV4dGVuZHM6IGV4dGVuZHNPcHRpb25zIH0gPSBiYXNlO1xyXG4gICAgY29uc3QgeyBtaXhpbnM6IGdsb2JhbE1peGlucywgb3B0aW9uc0NhY2hlOiBjYWNoZSwgY29uZmlnOiB7IG9wdGlvbk1lcmdlU3RyYXRlZ2llcyB9IH0gPSBpbnN0YW5jZS5hcHBDb250ZXh0O1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGJhc2UpO1xyXG4gICAgbGV0IHJlc29sdmVkO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJlc29sdmVkID0gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIWdsb2JhbE1peGlucy5sZW5ndGggJiYgIW1peGlucyAmJiAhZXh0ZW5kc09wdGlvbnMpIHtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHJlc29sdmVkID0gYmFzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXNvbHZlZCA9IHt9O1xyXG4gICAgICAgIGlmIChnbG9iYWxNaXhpbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGdsb2JhbE1peGlucy5mb3JFYWNoKG0gPT4gbWVyZ2VPcHRpb25zKHJlc29sdmVkLCBtLCBvcHRpb25NZXJnZVN0cmF0ZWdpZXMsIHRydWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWVyZ2VPcHRpb25zKHJlc29sdmVkLCBiYXNlLCBvcHRpb25NZXJnZVN0cmF0ZWdpZXMpO1xyXG4gICAgfVxyXG4gICAgY2FjaGUuc2V0KGJhc2UsIHJlc29sdmVkKTtcclxuICAgIHJldHVybiByZXNvbHZlZDtcclxufVxyXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnModG8sIGZyb20sIHN0cmF0cywgYXNNaXhpbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB7IG1peGlucywgZXh0ZW5kczogZXh0ZW5kc09wdGlvbnMgfSA9IGZyb207XHJcbiAgICBpZiAoZXh0ZW5kc09wdGlvbnMpIHtcclxuICAgICAgICBtZXJnZU9wdGlvbnModG8sIGV4dGVuZHNPcHRpb25zLCBzdHJhdHMsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKG1peGlucykge1xyXG4gICAgICAgIG1peGlucy5mb3JFYWNoKChtKSA9PiBtZXJnZU9wdGlvbnModG8sIG0sIHN0cmF0cywgdHJ1ZSkpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZnJvbSkge1xyXG4gICAgICAgIGlmIChhc01peGluICYmIGtleSA9PT0gJ2V4cG9zZScpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBcImV4cG9zZVwiIG9wdGlvbiBpcyBpZ25vcmVkIHdoZW4gZGVjbGFyZWQgaW4gbWl4aW5zIG9yIGV4dGVuZHMuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBJdCBzaG91bGQgb25seSBiZSBkZWNsYXJlZCBpbiB0aGUgYmFzZSBjb21wb25lbnQgaXRzZWxmLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qgc3RyYXQgPSBpbnRlcm5hbE9wdGlvbk1lcmdlU3RyYXRzW2tleV0gfHwgKHN0cmF0cyAmJiBzdHJhdHNba2V5XSk7XHJcbiAgICAgICAgICAgIHRvW2tleV0gPSBzdHJhdCA/IHN0cmF0KHRvW2tleV0sIGZyb21ba2V5XSkgOiBmcm9tW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvO1xyXG59XHJcbmNvbnN0IGludGVybmFsT3B0aW9uTWVyZ2VTdHJhdHMgPSB7XHJcbiAgICBkYXRhOiBtZXJnZURhdGFGbixcclxuICAgIHByb3BzOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICBlbWl0czogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgLy8gb2JqZWN0c1xyXG4gICAgbWV0aG9kczogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgY29tcHV0ZWQ6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIC8vIGxpZmVjeWNsZVxyXG4gICAgYmVmb3JlQ3JlYXRlOiBtZXJnZUFzQXJyYXksXHJcbiAgICBjcmVhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVNb3VudDogbWVyZ2VBc0FycmF5LFxyXG4gICAgbW91bnRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlVXBkYXRlOiBtZXJnZUFzQXJyYXksXHJcbiAgICB1cGRhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVEZXN0cm95OiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVVbm1vdW50OiBtZXJnZUFzQXJyYXksXHJcbiAgICBkZXN0cm95ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIHVubW91bnRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYWN0aXZhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBkZWFjdGl2YXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgZXJyb3JDYXB0dXJlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgc2VydmVyUHJlZmV0Y2g6IG1lcmdlQXNBcnJheSxcclxuICAgIC8vIGFzc2V0c1xyXG4gICAgY29tcG9uZW50czogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgZGlyZWN0aXZlczogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgLy8gd2F0Y2hcclxuICAgIHdhdGNoOiBtZXJnZVdhdGNoT3B0aW9ucyxcclxuICAgIC8vIHByb3ZpZGUgLyBpbmplY3RcclxuICAgIHByb3ZpZGU6IG1lcmdlRGF0YUZuLFxyXG4gICAgaW5qZWN0OiBtZXJnZUluamVjdFxyXG59O1xyXG5mdW5jdGlvbiBtZXJnZURhdGFGbih0bywgZnJvbSkge1xyXG4gICAgaWYgKCFmcm9tKSB7XHJcbiAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0bykge1xyXG4gICAgICAgIHJldHVybiBmcm9tO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERhdGFGbigpIHtcclxuICAgICAgICByZXR1cm4gKGV4dGVuZCkoaXNGdW5jdGlvbih0bykgPyB0by5jYWxsKHRoaXMsIHRoaXMpIDogdG8sIGlzRnVuY3Rpb24oZnJvbSkgPyBmcm9tLmNhbGwodGhpcywgdGhpcykgOiBmcm9tKTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VJbmplY3QodG8sIGZyb20pIHtcclxuICAgIHJldHVybiBtZXJnZU9iamVjdE9wdGlvbnMobm9ybWFsaXplSW5qZWN0KHRvKSwgbm9ybWFsaXplSW5qZWN0KGZyb20pKTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVJbmplY3QocmF3KSB7XHJcbiAgICBpZiAoaXNBcnJheShyYXcpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmVzW3Jhd1tpXV0gPSByYXdbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmF3O1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlQXNBcnJheSh0bywgZnJvbSkge1xyXG4gICAgcmV0dXJuIHRvID8gWy4uLm5ldyBTZXQoW10uY29uY2F0KHRvLCBmcm9tKSldIDogZnJvbTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZU9iamVjdE9wdGlvbnModG8sIGZyb20pIHtcclxuICAgIHJldHVybiB0byA/IGV4dGVuZChleHRlbmQoT2JqZWN0LmNyZWF0ZShudWxsKSwgdG8pLCBmcm9tKSA6IGZyb207XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VXYXRjaE9wdGlvbnModG8sIGZyb20pIHtcclxuICAgIGlmICghdG8pXHJcbiAgICAgICAgcmV0dXJuIGZyb207XHJcbiAgICBpZiAoIWZyb20pXHJcbiAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgY29uc3QgbWVyZ2VkID0gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIHRvKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZyb20pIHtcclxuICAgICAgICBtZXJnZWRba2V5XSA9IG1lcmdlQXNBcnJheSh0b1trZXldLCBmcm9tW2tleV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1lcmdlZDtcclxufVxuXG5mdW5jdGlvbiBpbml0UHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBpc1N0YXRlZnVsLCAvLyByZXN1bHQgb2YgYml0d2lzZSBmbGFnIGNvbXBhcmlzb25cclxuaXNTU1IgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgcHJvcHMgPSB7fTtcclxuICAgIGNvbnN0IGF0dHJzID0ge307XHJcbiAgICBkZWYoYXR0cnMsIEludGVybmFsT2JqZWN0S2V5LCAxKTtcclxuICAgIGluc3RhbmNlLnByb3BzRGVmYXVsdHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKTtcclxuICAgIC8vIGVuc3VyZSBhbGwgZGVjbGFyZWQgcHJvcCBrZXlzIGFyZSBwcmVzZW50XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnN0YW5jZS5wcm9wc09wdGlvbnNbMF0pIHtcclxuICAgICAgICBpZiAoIShrZXkgaW4gcHJvcHMpKSB7XHJcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdmFsaWRhdGlvblxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHZhbGlkYXRlUHJvcHMocmF3UHJvcHMgfHwge30sIHByb3BzLCBpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTdGF0ZWZ1bCkge1xyXG4gICAgICAgIC8vIHN0YXRlZnVsXHJcbiAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBpc1NTUiA/IHByb3BzIDogc2hhbGxvd1JlYWN0aXZlKHByb3BzKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UudHlwZS5wcm9wcykge1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbmFsIHcvIG9wdGlvbmFsIHByb3BzLCBwcm9wcyA9PT0gYXR0cnNcclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBhdHRycztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uYWwgdy8gZGVjbGFyZWQgcHJvcHNcclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBwcm9wcztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpbnN0YW5jZS5hdHRycyA9IGF0dHJzO1xyXG59XHJcbmZ1bmN0aW9uIHVwZGF0ZVByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcmF3UHJldlByb3BzLCBvcHRpbWl6ZWQpIHtcclxuICAgIGNvbnN0IHsgcHJvcHMsIGF0dHJzLCB2bm9kZTogeyBwYXRjaEZsYWcgfSB9ID0gaW5zdGFuY2U7XHJcbiAgICBjb25zdCByYXdDdXJyZW50UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICBjb25zdCBbb3B0aW9uc10gPSBpbnN0YW5jZS5wcm9wc09wdGlvbnM7XHJcbiAgICBsZXQgaGFzQXR0cnNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBpZiAoXHJcbiAgICAvLyBhbHdheXMgZm9yY2UgZnVsbCBkaWZmIGluIGRldlxyXG4gICAgLy8gLSAjMTk0MiBpZiBobXIgaXMgZW5hYmxlZCB3aXRoIHNmYyBjb21wb25lbnRcclxuICAgIC8vIC0gdml0ZSM4NzIgbm9uLXNmYyBjb21wb25lbnQgdXNlZCBieSBzZmMgY29tcG9uZW50XHJcbiAgICAhKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgIChpbnN0YW5jZS50eXBlLl9faG1ySWQgfHxcclxuICAgICAgICAgICAgKGluc3RhbmNlLnBhcmVudCAmJiBpbnN0YW5jZS5wYXJlbnQudHlwZS5fX2htcklkKSkpICYmXHJcbiAgICAgICAgKG9wdGltaXplZCB8fCBwYXRjaEZsYWcgPiAwKSAmJlxyXG4gICAgICAgICEocGF0Y2hGbGFnICYgMTYgLyogRlVMTF9QUk9QUyAqLykpIHtcclxuICAgICAgICBpZiAocGF0Y2hGbGFnICYgOCAvKiBQUk9QUyAqLykge1xyXG4gICAgICAgICAgICAvLyBDb21waWxlci1nZW5lcmF0ZWQgcHJvcHMgJiBubyBrZXlzIGNoYW5nZSwganVzdCBzZXQgdGhlIHVwZGF0ZWRcclxuICAgICAgICAgICAgLy8gdGhlIHByb3BzLlxyXG4gICAgICAgICAgICBjb25zdCBwcm9wc1RvVXBkYXRlID0gaW5zdGFuY2Uudm5vZGUuZHluYW1pY1Byb3BzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzVG9VcGRhdGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBrZXkgPSBwcm9wc1RvVXBkYXRlW2ldO1xyXG4gICAgICAgICAgICAgICAgLy8gUFJPUFMgZmxhZyBndWFyYW50ZWVzIHJhd1Byb3BzIHRvIGJlIG5vbi1udWxsXHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJhd1Byb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGF0dHIgLyBwcm9wcyBzZXBhcmF0aW9uIHdhcyBkb25lIG9uIGluaXQgYW5kIHdpbGwgYmUgY29uc2lzdGVudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY29kZSBwYXRoLCBzbyBqdXN0IGNoZWNrIGlmIGF0dHJzIGhhdmUgaXQuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bihhdHRycywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IGF0dHJzW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbWVsaXplZEtleSA9IGNhbWVsaXplKGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzW2NhbWVsaXplZEtleV0gPSByZXNvbHZlUHJvcFZhbHVlKG9wdGlvbnMsIHJhd0N1cnJlbnRQcm9wcywgY2FtZWxpemVkS2V5LCB2YWx1ZSwgaW5zdGFuY2UsIGZhbHNlIC8qIGlzQWJzZW50ICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IGF0dHJzW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnNba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGZ1bGwgcHJvcHMgdXBkYXRlLlxyXG4gICAgICAgIGlmIChzZXRGdWxsUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBwcm9wcywgYXR0cnMpKSB7XHJcbiAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluIGNhc2Ugb2YgZHluYW1pYyBwcm9wcywgY2hlY2sgaWYgd2UgbmVlZCB0byBkZWxldGUga2V5cyBmcm9tXHJcbiAgICAgICAgLy8gdGhlIHByb3BzIG9iamVjdFxyXG4gICAgICAgIGxldCBrZWJhYktleTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByYXdDdXJyZW50UHJvcHMpIHtcclxuICAgICAgICAgICAgaWYgKCFyYXdQcm9wcyB8fFxyXG4gICAgICAgICAgICAgICAgLy8gZm9yIGNhbWVsQ2FzZVxyXG4gICAgICAgICAgICAgICAgKCFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoZSBvcmlnaW5hbCBwcm9wcyB3YXMgcGFzc2VkIGluIGFzIGtlYmFiLWNhc2VcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgY29udmVydGVkIHRvIGNhbWVsQ2FzZSAoIzk1NSlcclxuICAgICAgICAgICAgICAgICAgICAoKGtlYmFiS2V5ID0gaHlwaGVuYXRlKGtleSkpID09PSBrZXkgfHwgIWhhc093bihyYXdQcm9wcywga2ViYWJLZXkpKSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd1ByZXZQcm9wcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgY2FtZWxDYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyYXdQcmV2UHJvcHNba2V5XSAhPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3Iga2ViYWItY2FzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3UHJldlByb3BzW2tlYmFiS2V5XSAhPT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wc1trZXldID0gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCByYXdDdXJyZW50UHJvcHMsIGtleSwgdW5kZWZpbmVkLCBpbnN0YW5jZSwgdHJ1ZSAvKiBpc0Fic2VudCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHByb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgZnVuY3Rpb25hbCBjb21wb25lbnQgdy9vIHByb3BzIGRlY2xhcmF0aW9uLCBwcm9wcyBhbmRcclxuICAgICAgICAvLyBhdHRycyBwb2ludCB0byB0aGUgc2FtZSBvYmplY3Qgc28gaXQgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIHVwZGF0ZWQuXHJcbiAgICAgICAgaWYgKGF0dHJzICE9PSByYXdDdXJyZW50UHJvcHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcmF3UHJvcHMgfHxcclxuICAgICAgICAgICAgICAgICAgICAoIWhhc093bihyYXdQcm9wcywga2V5KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoIWZhbHNlICkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGF0dHJzW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRyaWdnZXIgdXBkYXRlcyBmb3IgJGF0dHJzIGluIGNhc2UgaXQncyB1c2VkIGluIGNvbXBvbmVudCBzbG90c1xyXG4gICAgaWYgKGhhc0F0dHJzQ2hhbmdlZCkge1xyXG4gICAgICAgIHRyaWdnZXIoaW5zdGFuY2UsIFwic2V0XCIgLyogU0VUICovLCAnJGF0dHJzJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgdmFsaWRhdGVQcm9wcyhyYXdQcm9wcyB8fCB7fSwgcHJvcHMsIGluc3RhbmNlKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBzZXRGdWxsUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBwcm9wcywgYXR0cnMpIHtcclxuICAgIGNvbnN0IFtvcHRpb25zLCBuZWVkQ2FzdEtleXNdID0gaW5zdGFuY2UucHJvcHNPcHRpb25zO1xyXG4gICAgbGV0IGhhc0F0dHJzQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgbGV0IHJhd0Nhc3RWYWx1ZXM7XHJcbiAgICBpZiAocmF3UHJvcHMpIHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gcmF3UHJvcHMpIHtcclxuICAgICAgICAgICAgLy8ga2V5LCByZWYgYXJlIHJlc2VydmVkIGFuZCBuZXZlciBwYXNzZWQgZG93blxyXG4gICAgICAgICAgICBpZiAoaXNSZXNlcnZlZFByb3Aoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByYXdQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAvLyBwcm9wIG9wdGlvbiBuYW1lcyBhcmUgY2FtZWxpemVkIGR1cmluZyBub3JtYWxpemF0aW9uLCBzbyB0byBzdXBwb3J0XHJcbiAgICAgICAgICAgIC8vIGtlYmFiIC0+IGNhbWVsIGNvbnZlcnNpb24gaGVyZSB3ZSBuZWVkIHRvIGNhbWVsaXplIHRoZSBrZXkuXHJcbiAgICAgICAgICAgIGxldCBjYW1lbEtleTtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsIChjYW1lbEtleSA9IGNhbWVsaXplKGtleSkpKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFuZWVkQ2FzdEtleXMgfHwgIW5lZWRDYXN0S2V5cy5pbmNsdWRlcyhjYW1lbEtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wc1tjYW1lbEtleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIChyYXdDYXN0VmFsdWVzIHx8IChyYXdDYXN0VmFsdWVzID0ge30pKVtjYW1lbEtleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghaXNFbWl0TGlzdGVuZXIoaW5zdGFuY2UuZW1pdHNPcHRpb25zLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIShrZXkgaW4gYXR0cnMpIHx8IHZhbHVlICE9PSBhdHRyc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXR0cnNba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobmVlZENhc3RLZXlzKSB7XHJcbiAgICAgICAgY29uc3QgcmF3Q3VycmVudFByb3BzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgICAgIGNvbnN0IGNhc3RWYWx1ZXMgPSByYXdDYXN0VmFsdWVzIHx8IEVNUFRZX09CSjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lZWRDYXN0S2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBuZWVkQ2FzdEtleXNbaV07XHJcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSByZXNvbHZlUHJvcFZhbHVlKG9wdGlvbnMsIHJhd0N1cnJlbnRQcm9wcywga2V5LCBjYXN0VmFsdWVzW2tleV0sIGluc3RhbmNlLCAhaGFzT3duKGNhc3RWYWx1ZXMsIGtleSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBoYXNBdHRyc0NoYW5nZWQ7XHJcbn1cclxuZnVuY3Rpb24gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCBwcm9wcywga2V5LCB2YWx1ZSwgaW5zdGFuY2UsIGlzQWJzZW50KSB7XHJcbiAgICBjb25zdCBvcHQgPSBvcHRpb25zW2tleV07XHJcbiAgICBpZiAob3B0ICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBoYXNEZWZhdWx0ID0gaGFzT3duKG9wdCwgJ2RlZmF1bHQnKTtcclxuICAgICAgICAvLyBkZWZhdWx0IHZhbHVlc1xyXG4gICAgICAgIGlmIChoYXNEZWZhdWx0ICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gb3B0LmRlZmF1bHQ7XHJcbiAgICAgICAgICAgIGlmIChvcHQudHlwZSAhPT0gRnVuY3Rpb24gJiYgaXNGdW5jdGlvbihkZWZhdWx0VmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzRGVmYXVsdHMgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSBpbiBwcm9wc0RlZmF1bHRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcm9wc0RlZmF1bHRzW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcHJvcHNEZWZhdWx0c1trZXldID0gZGVmYXVsdFZhbHVlLmNhbGwobnVsbCwgcHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBib29sZWFuIGNhc3RpbmdcclxuICAgICAgICBpZiAob3B0WzAgLyogc2hvdWxkQ2FzdCAqL10pIHtcclxuICAgICAgICAgICAgaWYgKGlzQWJzZW50ICYmICFoYXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdFsxIC8qIHNob3VsZENhc3RUcnVlICovXSAmJlxyXG4gICAgICAgICAgICAgICAgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gaHlwaGVuYXRlKGtleSkpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHNPcHRpb25zKGNvbXAsIGFwcENvbnRleHQsIGFzTWl4aW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgY2FjaGUgPSBhcHBDb250ZXh0LnByb3BzQ2FjaGU7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoY29tcCk7XHJcbiAgICBpZiAoY2FjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhdyA9IGNvbXAucHJvcHM7XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0ge307XHJcbiAgICBjb25zdCBuZWVkQ2FzdEtleXMgPSBbXTtcclxuICAgIC8vIGFwcGx5IG1peGluL2V4dGVuZHMgcHJvcHNcclxuICAgIGxldCBoYXNFeHRlbmRzID0gZmFsc2U7XHJcbiAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXyAmJiAhaXNGdW5jdGlvbihjb21wKSkge1xyXG4gICAgICAgIGNvbnN0IGV4dGVuZFByb3BzID0gKHJhdykgPT4ge1xyXG4gICAgICAgICAgICBoYXNFeHRlbmRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgW3Byb3BzLCBrZXlzXSA9IG5vcm1hbGl6ZVByb3BzT3B0aW9ucyhyYXcsIGFwcENvbnRleHQsIHRydWUpO1xyXG4gICAgICAgICAgICBleHRlbmQobm9ybWFsaXplZCwgcHJvcHMpO1xyXG4gICAgICAgICAgICBpZiAoa2V5cylcclxuICAgICAgICAgICAgICAgIG5lZWRDYXN0S2V5cy5wdXNoKC4uLmtleXMpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFhc01peGluICYmIGFwcENvbnRleHQubWl4aW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBhcHBDb250ZXh0Lm1peGlucy5mb3JFYWNoKGV4dGVuZFByb3BzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAuZXh0ZW5kcykge1xyXG4gICAgICAgICAgICBleHRlbmRQcm9wcyhjb21wLmV4dGVuZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcC5taXhpbnMpIHtcclxuICAgICAgICAgICAgY29tcC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFyYXcgJiYgIWhhc0V4dGVuZHMpIHtcclxuICAgICAgICBjYWNoZS5zZXQoY29tcCwgRU1QVFlfQVJSKTtcclxuICAgICAgICByZXR1cm4gRU1QVFlfQVJSO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzU3RyaW5nKHJhd1tpXSkpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHByb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC5gLCByYXdbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBjYW1lbGl6ZShyYXdbaV0pO1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVQcm9wTmFtZShub3JtYWxpemVkS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVkS2V5XSA9IEVNUFRZX09CSjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJhdykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzT2JqZWN0KHJhdykpIHtcclxuICAgICAgICAgICAgd2FybihgaW52YWxpZCBwcm9wcyBvcHRpb25zYCwgcmF3KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmF3KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVQcm9wTmFtZShub3JtYWxpemVkS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gcmF3W2tleV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gKG5vcm1hbGl6ZWRbbm9ybWFsaXplZEtleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgIGlzQXJyYXkob3B0KSB8fCBpc0Z1bmN0aW9uKG9wdCkgPyB7IHR5cGU6IG9wdCB9IDogb3B0KTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbGVhbkluZGV4ID0gZ2V0VHlwZUluZGV4KEJvb2xlYW4sIHByb3AudHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nSW5kZXggPSBnZXRUeXBlSW5kZXgoU3RyaW5nLCBwcm9wLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BbMCAvKiBzaG91bGRDYXN0ICovXSA9IGJvb2xlYW5JbmRleCA+IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BbMSAvKiBzaG91bGRDYXN0VHJ1ZSAqL10gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdJbmRleCA8IDAgfHwgYm9vbGVhbkluZGV4IDwgc3RyaW5nSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHByb3AgbmVlZHMgYm9vbGVhbiBjYXN0aW5nIG9yIGRlZmF1bHQgdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYm9vbGVhbkluZGV4ID4gLTEgfHwgaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZENhc3RLZXlzLnB1c2gobm9ybWFsaXplZEtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzID0gW25vcm1hbGl6ZWQsIG5lZWRDYXN0S2V5c107XHJcbiAgICBjYWNoZS5zZXQoY29tcCwgcmVzKTtcclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wTmFtZShrZXkpIHtcclxuICAgIGlmIChrZXlbMF0gIT09ICckJykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FybihgSW52YWxpZCBwcm9wIG5hbWU6IFwiJHtrZXl9XCIgaXMgYSByZXNlcnZlZCBwcm9wZXJ0eS5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG4vLyB1c2UgZnVuY3Rpb24gc3RyaW5nIG5hbWUgdG8gY2hlY2sgdHlwZSBjb25zdHJ1Y3RvcnNcclxuLy8gc28gdGhhdCBpdCB3b3JrcyBhY3Jvc3Mgdm1zIC8gaWZyYW1lcy5cclxuZnVuY3Rpb24gZ2V0VHlwZShjdG9yKSB7XHJcbiAgICBjb25zdCBtYXRjaCA9IGN0b3IgJiYgY3Rvci50b1N0cmluZygpLm1hdGNoKC9eXFxzKmZ1bmN0aW9uIChcXHcrKS8pO1xyXG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBjdG9yID09PSBudWxsID8gJ251bGwnIDogJyc7XHJcbn1cclxuZnVuY3Rpb24gaXNTYW1lVHlwZShhLCBiKSB7XHJcbiAgICByZXR1cm4gZ2V0VHlwZShhKSA9PT0gZ2V0VHlwZShiKTtcclxufVxyXG5mdW5jdGlvbiBnZXRUeXBlSW5kZXgodHlwZSwgZXhwZWN0ZWRUeXBlcykge1xyXG4gICAgaWYgKGlzQXJyYXkoZXhwZWN0ZWRUeXBlcykpIHtcclxuICAgICAgICByZXR1cm4gZXhwZWN0ZWRUeXBlcy5maW5kSW5kZXgodCA9PiBpc1NhbWVUeXBlKHQsIHR5cGUpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24oZXhwZWN0ZWRUeXBlcykpIHtcclxuICAgICAgICByZXR1cm4gaXNTYW1lVHlwZShleHBlY3RlZFR5cGVzLCB0eXBlKSA/IDAgOiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcHMocmF3UHJvcHMsIHByb3BzLCBpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgcmVzb2x2ZWRWYWx1ZXMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICBjb25zdCBvcHRpb25zID0gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucykge1xyXG4gICAgICAgIGxldCBvcHQgPSBvcHRpb25zW2tleV07XHJcbiAgICAgICAgaWYgKG9wdCA9PSBudWxsKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB2YWxpZGF0ZVByb3Aoa2V5LCByZXNvbHZlZFZhbHVlc1trZXldLCBvcHQsICFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiYgIWhhc093bihyYXdQcm9wcywgaHlwaGVuYXRlKGtleSkpKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcChuYW1lLCB2YWx1ZSwgcHJvcCwgaXNBYnNlbnQpIHtcclxuICAgIGNvbnN0IHsgdHlwZSwgcmVxdWlyZWQsIHZhbGlkYXRvciB9ID0gcHJvcDtcclxuICAgIC8vIHJlcXVpcmVkIVxyXG4gICAgaWYgKHJlcXVpcmVkICYmIGlzQWJzZW50KSB7XHJcbiAgICAgICAgd2FybignTWlzc2luZyByZXF1aXJlZCBwcm9wOiBcIicgKyBuYW1lICsgJ1wiJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gbWlzc2luZyBidXQgb3B0aW9uYWxcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsICYmICFwcm9wLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gdHlwZSBjaGVja1xyXG4gICAgaWYgKHR5cGUgIT0gbnVsbCAmJiB0eXBlICE9PSB0cnVlKSB7XHJcbiAgICAgICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCB0eXBlcyA9IGlzQXJyYXkodHlwZSkgPyB0eXBlIDogW3R5cGVdO1xyXG4gICAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZXMgPSBbXTtcclxuICAgICAgICAvLyB2YWx1ZSBpcyB2YWxpZCBhcyBsb25nIGFzIG9uZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGVzIG1hdGNoXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGggJiYgIWlzVmFsaWQ7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHZhbGlkLCBleHBlY3RlZFR5cGUgfSA9IGFzc2VydFR5cGUodmFsdWUsIHR5cGVzW2ldKTtcclxuICAgICAgICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGV4cGVjdGVkVHlwZSB8fCAnJyk7XHJcbiAgICAgICAgICAgIGlzVmFsaWQgPSB2YWxpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oZ2V0SW52YWxpZFR5cGVNZXNzYWdlKG5hbWUsIHZhbHVlLCBleHBlY3RlZFR5cGVzKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjdXN0b20gdmFsaWRhdG9yXHJcbiAgICBpZiAodmFsaWRhdG9yICYmICF2YWxpZGF0b3IodmFsdWUpKSB7XHJcbiAgICAgICAgd2FybignSW52YWxpZCBwcm9wOiBjdXN0b20gdmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicpO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGlzU2ltcGxlVHlwZSA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcCgnU3RyaW5nLE51bWJlcixCb29sZWFuLEZ1bmN0aW9uLFN5bWJvbCxCaWdJbnQnKTtcclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBsZXQgdmFsaWQ7XHJcbiAgICBjb25zdCBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xyXG4gICAgaWYgKGlzU2ltcGxlVHlwZShleHBlY3RlZFR5cGUpKSB7XHJcbiAgICAgICAgY29uc3QgdCA9IHR5cGVvZiB2YWx1ZTtcclxuICAgICAgICB2YWxpZCA9IHQgPT09IGV4cGVjdGVkVHlwZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIC8vIGZvciBwcmltaXRpdmUgd3JhcHBlciBvYmplY3RzXHJcbiAgICAgICAgaWYgKCF2YWxpZCAmJiB0ID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdPYmplY3QnKSB7XHJcbiAgICAgICAgdmFsaWQgPSBpc09iamVjdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdBcnJheScpIHtcclxuICAgICAgICB2YWxpZCA9IGlzQXJyYXkodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnbnVsbCcpIHtcclxuICAgICAgICB2YWxpZCA9IHZhbHVlID09PSBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHZhbGlkLFxyXG4gICAgICAgIGV4cGVjdGVkVHlwZVxyXG4gICAgfTtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIGdldEludmFsaWRUeXBlTWVzc2FnZShuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcykge1xyXG4gICAgbGV0IG1lc3NhZ2UgPSBgSW52YWxpZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIiR7bmFtZX1cIi5gICtcclxuICAgICAgICBgIEV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlcy5tYXAoY2FwaXRhbGl6ZSkuam9pbignIHwgJyl9YDtcclxuICAgIGNvbnN0IGV4cGVjdGVkVHlwZSA9IGV4cGVjdGVkVHlwZXNbMF07XHJcbiAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB0b1Jhd1R5cGUodmFsdWUpO1xyXG4gICAgY29uc3QgZXhwZWN0ZWRWYWx1ZSA9IHN0eWxlVmFsdWUodmFsdWUsIGV4cGVjdGVkVHlwZSk7XHJcbiAgICBjb25zdCByZWNlaXZlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgcmVjZWl2ZWRUeXBlKTtcclxuICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc3BlY2lmeSBleHBlY3RlZCB2YWx1ZVxyXG4gICAgaWYgKGV4cGVjdGVkVHlwZXMubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgaXNFeHBsaWNhYmxlKGV4cGVjdGVkVHlwZSkgJiZcclxuICAgICAgICAhaXNCb29sZWFuKGV4cGVjdGVkVHlwZSwgcmVjZWl2ZWRUeXBlKSkge1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gYCB3aXRoIHZhbHVlICR7ZXhwZWN0ZWRWYWx1ZX1gO1xyXG4gICAgfVxyXG4gICAgbWVzc2FnZSArPSBgLCBnb3QgJHtyZWNlaXZlZFR5cGV9IGA7XHJcbiAgICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNwZWNpZnkgcmVjZWl2ZWQgdmFsdWVcclxuICAgIGlmIChpc0V4cGxpY2FibGUocmVjZWl2ZWRUeXBlKSkge1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gYHdpdGggdmFsdWUgJHtyZWNlaXZlZFZhbHVlfS5gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1lc3NhZ2U7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBzdHlsZVZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ1N0cmluZycpIHtcclxuICAgICAgICByZXR1cm4gYFwiJHt2YWx1ZX1cImA7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlID09PSAnTnVtYmVyJykge1xyXG4gICAgICAgIHJldHVybiBgJHtOdW1iZXIodmFsdWUpfWA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWV9YDtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIGlzRXhwbGljYWJsZSh0eXBlKSB7XHJcbiAgICBjb25zdCBleHBsaWNpdFR5cGVzID0gWydzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nXTtcclxuICAgIHJldHVybiBleHBsaWNpdFR5cGVzLnNvbWUoZWxlbSA9PiB0eXBlLnRvTG93ZXJDYXNlKCkgPT09IGVsZW0pO1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gaXNCb29sZWFuKC4uLmFyZ3MpIHtcclxuICAgIHJldHVybiBhcmdzLnNvbWUoZWxlbSA9PiBlbGVtLnRvTG93ZXJDYXNlKCkgPT09ICdib29sZWFuJyk7XHJcbn1cblxuY29uc3QgaXNJbnRlcm5hbEtleSA9IChrZXkpID0+IGtleVswXSA9PT0gJ18nIHx8IGtleSA9PT0gJyRzdGFibGUnO1xyXG5jb25zdCBub3JtYWxpemVTbG90VmFsdWUgPSAodmFsdWUpID0+IGlzQXJyYXkodmFsdWUpXHJcbiAgICA/IHZhbHVlLm1hcChub3JtYWxpemVWTm9kZSlcclxuICAgIDogW25vcm1hbGl6ZVZOb2RlKHZhbHVlKV07XHJcbmNvbnN0IG5vcm1hbGl6ZVNsb3QgPSAoa2V5LCByYXdTbG90LCBjdHgpID0+IHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB3aXRoQ3R4KCguLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjdXJyZW50SW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgd2FybihgU2xvdCBcIiR7a2V5fVwiIGludm9rZWQgb3V0c2lkZSBvZiB0aGUgcmVuZGVyIGZ1bmN0aW9uOiBgICtcclxuICAgICAgICAgICAgICAgIGB0aGlzIHdpbGwgbm90IHRyYWNrIGRlcGVuZGVuY2llcyB1c2VkIGluIHRoZSBzbG90LiBgICtcclxuICAgICAgICAgICAgICAgIGBJbnZva2UgdGhlIHNsb3QgZnVuY3Rpb24gaW5zaWRlIHRoZSByZW5kZXIgZnVuY3Rpb24gaW5zdGVhZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVNsb3RWYWx1ZShyYXdTbG90KC4uLmFyZ3MpKTtcclxuICAgIH0sIGN0eCk7XHJcbiAgICBub3JtYWxpemVkLl9jID0gZmFsc2U7XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxufTtcclxuY29uc3Qgbm9ybWFsaXplT2JqZWN0U2xvdHMgPSAocmF3U2xvdHMsIHNsb3RzLCBpbnN0YW5jZSkgPT4ge1xyXG4gICAgY29uc3QgY3R4ID0gcmF3U2xvdHMuX2N0eDtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHJhd1Nsb3RzKSB7XHJcbiAgICAgICAgaWYgKGlzSW50ZXJuYWxLZXkoa2V5KSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSByYXdTbG90c1trZXldO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBzbG90c1trZXldID0gbm9ybWFsaXplU2xvdChrZXksIHZhbHVlLCBjdHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICEoZmFsc2UgKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgTm9uLWZ1bmN0aW9uIHZhbHVlIGVuY291bnRlcmVkIGZvciBzbG90IFwiJHtrZXl9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBQcmVmZXIgZnVuY3Rpb24gc2xvdHMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU2xvdFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgc2xvdHNba2V5XSA9ICgpID0+IG5vcm1hbGl6ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5jb25zdCBub3JtYWxpemVWTm9kZVNsb3RzID0gKGluc3RhbmNlLCBjaGlsZHJlbikgPT4ge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICFpc0tlZXBBbGl2ZShpbnN0YW5jZS52bm9kZSkgJiZcclxuICAgICAgICAhKGZhbHNlICkpIHtcclxuICAgICAgICB3YXJuKGBOb24tZnVuY3Rpb24gdmFsdWUgZW5jb3VudGVyZWQgZm9yIGRlZmF1bHQgc2xvdC4gYCArXHJcbiAgICAgICAgICAgIGBQcmVmZXIgZnVuY3Rpb24gc2xvdHMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS5gKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVTbG90VmFsdWUoY2hpbGRyZW4pO1xyXG4gICAgaW5zdGFuY2Uuc2xvdHMuZGVmYXVsdCA9ICgpID0+IG5vcm1hbGl6ZWQ7XHJcbn07XHJcbmNvbnN0IGluaXRTbG90cyA9IChpbnN0YW5jZSwgY2hpbGRyZW4pID0+IHtcclxuICAgIGlmIChpbnN0YW5jZS52bm9kZS5zaGFwZUZsYWcgJiAzMiAvKiBTTE9UU19DSElMRFJFTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjaGlsZHJlbi5fO1xyXG4gICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgIC8vIHVzZXJzIGNhbiBnZXQgdGhlIHNoYWxsb3cgcmVhZG9ubHkgdmVyc2lvbiBvZiB0aGUgc2xvdHMgb2JqZWN0IHRocm91Z2ggYHRoaXMuJHNsb3RzYCxcclxuICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGF2b2lkIHRoZSBwcm94eSBvYmplY3QgcG9sbHV0aW5nIHRoZSBzbG90cyBvZiB0aGUgaW50ZXJuYWwgaW5zdGFuY2VcclxuICAgICAgICAgICAgaW5zdGFuY2Uuc2xvdHMgPSB0b1JhdyhjaGlsZHJlbik7XHJcbiAgICAgICAgICAgIC8vIG1ha2UgY29tcGlsZXIgbWFya2VyIG5vbi1lbnVtZXJhYmxlXHJcbiAgICAgICAgICAgIGRlZihjaGlsZHJlbiwgJ18nLCB0eXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZU9iamVjdFNsb3RzKGNoaWxkcmVuLCAoaW5zdGFuY2Uuc2xvdHMgPSB7fSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGluc3RhbmNlLnNsb3RzID0ge307XHJcbiAgICAgICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZVZOb2RlU2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBkZWYoaW5zdGFuY2Uuc2xvdHMsIEludGVybmFsT2JqZWN0S2V5LCAxKTtcclxufTtcclxuY29uc3QgdXBkYXRlU2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgIGNvbnN0IHsgdm5vZGUsIHNsb3RzIH0gPSBpbnN0YW5jZTtcclxuICAgIGxldCBuZWVkRGVsZXRpb25DaGVjayA9IHRydWU7XHJcbiAgICBsZXQgZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0ID0gRU1QVFlfT0JKO1xyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDMyIC8qIFNMT1RTX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IGNoaWxkcmVuLl87XHJcbiAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgICAgLy8gY29tcGlsZWQgc2xvdHMuXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgICAgICAgICAgLy8gUGFyZW50IHdhcyBITVIgdXBkYXRlZCBzbyBzbG90IGNvbnRlbnQgbWF5IGhhdmUgY2hhbmdlZC5cclxuICAgICAgICAgICAgICAgIC8vIGZvcmNlIHVwZGF0ZSBzbG90cyBhbmQgbWFyayBpbnN0YW5jZSBmb3IgaG1yIGFzIHdlbGxcclxuICAgICAgICAgICAgICAgIGV4dGVuZChzbG90cywgY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGltaXplZCAmJiB0eXBlID09PSAxIC8qIFNUQUJMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gY29tcGlsZWQgQU5EIHN0YWJsZS5cclxuICAgICAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gdXBkYXRlLCBhbmQgc2tpcCBzdGFsZSBzbG90cyByZW1vdmFsLlxyXG4gICAgICAgICAgICAgICAgbmVlZERlbGV0aW9uQ2hlY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVkIGJ1dCBkeW5hbWljICh2LWlmL3YtZm9yIG9uIHNsb3RzKSAtIHVwZGF0ZSBzbG90cywgYnV0IHNraXBcclxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6YXRpb24uXHJcbiAgICAgICAgICAgICAgICBleHRlbmQoc2xvdHMsIGNoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIC8vICMyODkzXHJcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHJlbmRlcmluZyB0aGUgb3B0aW1pemVkIHNsb3RzIGJ5IG1hbnVhbGx5IHdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9uLFxyXG4gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBkZWxldGUgdGhlIGBzbG90cy5fYCBmbGFnIGlmIG5lY2Vzc2FyeSB0byBtYWtlIHN1YnNlcXVlbnQgdXBkYXRlcyByZWxpYWJsZSxcclxuICAgICAgICAgICAgICAgIC8vIGkuZS4gbGV0IHRoZSBgcmVuZGVyU2xvdGAgY3JlYXRlIHRoZSBiYWlsZWQgRnJhZ21lbnRcclxuICAgICAgICAgICAgICAgIGlmICghb3B0aW1pemVkICYmIHR5cGUgPT09IDEgLyogU1RBQkxFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNsb3RzLl87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5lZWREZWxldGlvbkNoZWNrID0gIWNoaWxkcmVuLiRzdGFibGU7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZU9iamVjdFNsb3RzKGNoaWxkcmVuLCBzbG90cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IGNoaWxkcmVuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICAvLyBub24gc2xvdCBvYmplY3QgY2hpbGRyZW4gKGRpcmVjdCB2YWx1ZSkgcGFzc2VkIHRvIGEgY29tcG9uZW50XHJcbiAgICAgICAgbm9ybWFsaXplVk5vZGVTbG90cyhpbnN0YW5jZSwgY2hpbGRyZW4pO1xyXG4gICAgICAgIGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IHsgZGVmYXVsdDogMSB9O1xyXG4gICAgfVxyXG4gICAgLy8gZGVsZXRlIHN0YWxlIHNsb3RzXHJcbiAgICBpZiAobmVlZERlbGV0aW9uQ2hlY2spIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzbG90cykge1xyXG4gICAgICAgICAgICBpZiAoIWlzSW50ZXJuYWxLZXkoa2V5KSAmJiAhKGtleSBpbiBkZWxldGlvbkNvbXBhcmlzb25UYXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgc2xvdHNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcblxuLyoqXHJcblJ1bnRpbWUgaGVscGVyIGZvciBhcHBseWluZyBkaXJlY3RpdmVzIHRvIGEgdm5vZGUuIEV4YW1wbGUgdXNhZ2U6XHJcblxuY29uc3QgY29tcCA9IHJlc29sdmVDb21wb25lbnQoJ2NvbXAnKVxyXG5jb25zdCBmb28gPSByZXNvbHZlRGlyZWN0aXZlKCdmb28nKVxyXG5jb25zdCBiYXIgPSByZXNvbHZlRGlyZWN0aXZlKCdiYXInKVxyXG5cbnJldHVybiB3aXRoRGlyZWN0aXZlcyhoKGNvbXApLCBbXHJcbiAgW2ZvbywgdGhpcy54XSxcclxuICBbYmFyLCB0aGlzLnldXHJcbl0pXHJcbiovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlRGlyZWN0aXZlTmFtZShuYW1lKSB7XHJcbiAgICBpZiAoaXNCdWlsdEluRGlyZWN0aXZlKG5hbWUpKSB7XHJcbiAgICAgICAgd2FybignRG8gbm90IHVzZSBidWlsdC1pbiBkaXJlY3RpdmUgaWRzIGFzIGN1c3RvbSBkaXJlY3RpdmUgaWQ6ICcgKyBuYW1lKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQWRkcyBkaXJlY3RpdmVzIHRvIGEgVk5vZGUuXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoRGlyZWN0aXZlcyh2bm9kZSwgZGlyZWN0aXZlcykge1xyXG4gICAgY29uc3QgaW50ZXJuYWxJbnN0YW5jZSA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlID09PSBudWxsKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYHdpdGhEaXJlY3RpdmVzIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHJlbmRlciBmdW5jdGlvbnMuYCk7XHJcbiAgICAgICAgcmV0dXJuIHZub2RlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBpbnRlcm5hbEluc3RhbmNlLnByb3h5O1xyXG4gICAgY29uc3QgYmluZGluZ3MgPSB2bm9kZS5kaXJzIHx8ICh2bm9kZS5kaXJzID0gW10pO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXJlY3RpdmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IFtkaXIsIHZhbHVlLCBhcmcsIG1vZGlmaWVycyA9IEVNUFRZX09CSl0gPSBkaXJlY3RpdmVzW2ldO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGRpcikpIHtcclxuICAgICAgICAgICAgZGlyID0ge1xyXG4gICAgICAgICAgICAgICAgbW91bnRlZDogZGlyLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlZDogZGlyXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXIuZGVlcCkge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJpbmRpbmdzLnB1c2goe1xyXG4gICAgICAgICAgICBkaXIsXHJcbiAgICAgICAgICAgIGluc3RhbmNlLFxyXG4gICAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgICAgb2xkVmFsdWU6IHZvaWQgMCxcclxuICAgICAgICAgICAgYXJnLFxyXG4gICAgICAgICAgICBtb2RpZmllcnNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG5mdW5jdGlvbiBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBwcmV2Vk5vZGUsIGluc3RhbmNlLCBuYW1lKSB7XHJcbiAgICBjb25zdCBiaW5kaW5ncyA9IHZub2RlLmRpcnM7XHJcbiAgICBjb25zdCBvbGRCaW5kaW5ncyA9IHByZXZWTm9kZSAmJiBwcmV2Vk5vZGUuZGlycztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmluZGluZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBiaW5kaW5nID0gYmluZGluZ3NbaV07XHJcbiAgICAgICAgaWYgKG9sZEJpbmRpbmdzKSB7XHJcbiAgICAgICAgICAgIGJpbmRpbmcub2xkVmFsdWUgPSBvbGRCaW5kaW5nc1tpXS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGhvb2sgPSBiaW5kaW5nLmRpcltuYW1lXTtcclxuICAgICAgICBpZiAoaG9vaykge1xyXG4gICAgICAgICAgICAvLyBkaXNhYmxlIHRyYWNraW5nIGluc2lkZSBhbGwgbGlmZWN5Y2xlIGhvb2tzXHJcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZXkgY2FuIHBvdGVudGlhbGx5IGJlIGNhbGxlZCBpbnNpZGUgZWZmZWN0cy5cclxuICAgICAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCBpbnN0YW5jZSwgOCAvKiBESVJFQ1RJVkVfSE9PSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuZWwsXHJcbiAgICAgICAgICAgICAgICBiaW5kaW5nLFxyXG4gICAgICAgICAgICAgICAgdm5vZGUsXHJcbiAgICAgICAgICAgICAgICBwcmV2Vk5vZGVcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuZnVuY3Rpb24gY3JlYXRlQXBwQ29udGV4dCgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYXBwOiBudWxsLFxyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgICBpc05hdGl2ZVRhZzogTk8sXHJcbiAgICAgICAgICAgIHBlcmZvcm1hbmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllczoge30sXHJcbiAgICAgICAgICAgIG9wdGlvbk1lcmdlU3RyYXRlZ2llczoge30sXHJcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcjogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB3YXJuSGFuZGxlcjogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHt9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtaXhpbnM6IFtdLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IHt9LFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IHt9LFxyXG4gICAgICAgIHByb3ZpZGVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxyXG4gICAgICAgIG9wdGlvbnNDYWNoZTogbmV3IFdlYWtNYXAoKSxcclxuICAgICAgICBwcm9wc0NhY2hlOiBuZXcgV2Vha01hcCgpLFxyXG4gICAgICAgIGVtaXRzQ2FjaGU6IG5ldyBXZWFrTWFwKClcclxuICAgIH07XHJcbn1cclxubGV0IHVpZCA9IDA7XHJcbmZ1bmN0aW9uIGNyZWF0ZUFwcEFQSShyZW5kZXIsIGh5ZHJhdGUpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiBjcmVhdGVBcHAocm9vdENvbXBvbmVudCwgcm9vdFByb3BzID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChyb290UHJvcHMgIT0gbnVsbCAmJiAhaXNPYmplY3Qocm9vdFByb3BzKSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2Fybihgcm9vdCBwcm9wcyBwYXNzZWQgdG8gYXBwLm1vdW50KCkgbXVzdCBiZSBhbiBvYmplY3QuYCk7XHJcbiAgICAgICAgICAgIHJvb3RQcm9wcyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVBcHBDb250ZXh0KCk7XHJcbiAgICAgICAgY29uc3QgaW5zdGFsbGVkUGx1Z2lucyA9IG5ldyBTZXQoKTtcclxuICAgICAgICBsZXQgaXNNb3VudGVkID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgYXBwID0gKGNvbnRleHQuYXBwID0ge1xyXG4gICAgICAgICAgICBfdWlkOiB1aWQrKyxcclxuICAgICAgICAgICAgX2NvbXBvbmVudDogcm9vdENvbXBvbmVudCxcclxuICAgICAgICAgICAgX3Byb3BzOiByb290UHJvcHMsXHJcbiAgICAgICAgICAgIF9jb250YWluZXI6IG51bGwsXHJcbiAgICAgICAgICAgIF9jb250ZXh0OiBjb250ZXh0LFxyXG4gICAgICAgICAgICBfaW5zdGFuY2U6IG51bGwsXHJcbiAgICAgICAgICAgIHZlcnNpb24sXHJcbiAgICAgICAgICAgIGdldCBjb25maWcoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jb25maWc7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCBjb25maWcodikge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYGFwcC5jb25maWcgY2Fubm90IGJlIHJlcGxhY2VkLiBNb2RpZnkgaW5kaXZpZHVhbCBvcHRpb25zIGluc3RlYWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHVzZShwbHVnaW4sIC4uLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YWxsZWRQbHVnaW5zLmhhcyhwbHVnaW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYFBsdWdpbiBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQgdG8gdGFyZ2V0IGFwcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBsdWdpbiAmJiBpc0Z1bmN0aW9uKHBsdWdpbi5pbnN0YWxsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZFBsdWdpbnMuYWRkKHBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luLmluc3RhbGwoYXBwLCAuLi5vcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24ocGx1Z2luKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZFBsdWdpbnMuYWRkKHBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luKGFwcCwgLi4ub3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBBIHBsdWdpbiBtdXN0IGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCB3aXRoIGFuIFwiaW5zdGFsbFwiIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgZnVuY3Rpb24uYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtaXhpbihtaXhpbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQubWl4aW5zLmluY2x1ZGVzKG1peGluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm1peGlucy5wdXNoKG1peGluKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oJ01peGluIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCB0byB0YXJnZXQgYXBwJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWl4aW4ubmFtZSA/IGA6ICR7bWl4aW4ubmFtZX1gIDogJycpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKCdNaXhpbnMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGJ1aWxkcyBzdXBwb3J0aW5nIE9wdGlvbnMgQVBJJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb21wb25lbnQobmFtZSwgY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWUsIGNvbnRleHQuY29uZmlnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY29tcG9uZW50c1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY29udGV4dC5jb21wb25lbnRzW25hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IFwiJHtuYW1lfVwiIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCBpbiB0YXJnZXQgYXBwLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jb21wb25lbnRzW25hbWVdID0gY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGlyZWN0aXZlKG5hbWUsIGRpcmVjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlRGlyZWN0aXZlTmFtZShuYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghZGlyZWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZGlyZWN0aXZlc1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY29udGV4dC5kaXJlY3RpdmVzW25hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgRGlyZWN0aXZlIFwiJHtuYW1lfVwiIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCBpbiB0YXJnZXQgYXBwLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5kaXJlY3RpdmVzW25hbWVdID0gZGlyZWN0aXZlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbW91bnQocm9vdENvbnRhaW5lciwgaXNIeWRyYXRlLCBpc1NWRykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKHJvb3RDb21wb25lbnQsIHJvb3RQcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgYXBwIGNvbnRleHQgb24gdGhlIHJvb3QgVk5vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB3aWxsIGJlIHNldCBvbiB0aGUgcm9vdCBpbnN0YW5jZSBvbiBpbml0aWFsIG1vdW50LlxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLmFwcENvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEhNUiByb290IHJlbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZWxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIoY2xvbmVWTm9kZSh2bm9kZSksIHJvb3RDb250YWluZXIsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSHlkcmF0ZSAmJiBoeWRyYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh5ZHJhdGUodm5vZGUsIHJvb3RDb250YWluZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyKHZub2RlLCByb290Q29udGFpbmVyLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlzTW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwLl9jb250YWluZXIgPSByb290Q29udGFpbmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3RDb250YWluZXIuX192dWVfYXBwX18gPSBhcHA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLl9pbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNJbml0QXBwKGFwcCwgdmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRFeHBvc2VQcm94eSh2bm9kZS5jb21wb25lbnQpIHx8IHZub2RlLmNvbXBvbmVudC5wcm94eTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEFwcCBoYXMgYWxyZWFkeSBiZWVuIG1vdW50ZWQuXFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBJZiB5b3Ugd2FudCB0byByZW1vdW50IHRoZSBzYW1lIGFwcCwgbW92ZSB5b3VyIGFwcCBjcmVhdGlvbiBsb2dpYyBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGludG8gYSBmYWN0b3J5IGZ1bmN0aW9uIGFuZCBjcmVhdGUgZnJlc2ggYXBwIGluc3RhbmNlcyBmb3IgZWFjaCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYG1vdW50IC0gZS5nLiBcXGBjb25zdCBjcmVhdGVNeUFwcCA9ICgpID0+IGNyZWF0ZUFwcChBcHApXFxgYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHVubW91bnQoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyKG51bGwsIGFwcC5fY29udGFpbmVyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNVbm1vdW50QXBwKGFwcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhcHAuX2NvbnRhaW5lci5fX3Z1ZV9hcHBfXztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENhbm5vdCB1bm1vdW50IGFuIGFwcCB0aGF0IGlzIG5vdCBtb3VudGVkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwcm92aWRlKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5IGluIGNvbnRleHQucHJvdmlkZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBBcHAgYWxyZWFkeSBwcm92aWRlcyBwcm9wZXJ0eSB3aXRoIGtleSBcIiR7U3RyaW5nKGtleSl9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgSXQgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXcgdmFsdWUuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBUeXBlU2NyaXB0IGRvZXNuJ3QgYWxsb3cgc3ltYm9scyBhcyBpbmRleCB0eXBlXHJcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzI0NTg3XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnByb3ZpZGVzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgfTtcclxufVxuXG4vKipcclxuICogRnVuY3Rpb24gZm9yIGhhbmRsaW5nIGEgdGVtcGxhdGUgcmVmXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRSZWYocmF3UmVmLCBvbGRSYXdSZWYsIHBhcmVudFN1c3BlbnNlLCB2bm9kZSwgaXNVbm1vdW50ID0gZmFsc2UpIHtcclxuICAgIGlmIChpc0FycmF5KHJhd1JlZikpIHtcclxuICAgICAgICByYXdSZWYuZm9yRWFjaCgociwgaSkgPT4gc2V0UmVmKHIsIG9sZFJhd1JlZiAmJiAoaXNBcnJheShvbGRSYXdSZWYpID8gb2xkUmF3UmVmW2ldIDogb2xkUmF3UmVmKSwgcGFyZW50U3VzcGVuc2UsIHZub2RlLCBpc1VubW91bnQpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNBc3luY1dyYXBwZXIodm5vZGUpICYmICFpc1VubW91bnQpIHtcclxuICAgICAgICAvLyB3aGVuIG1vdW50aW5nIGFzeW5jIGNvbXBvbmVudHMsIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZSxcclxuICAgICAgICAvLyBiZWNhdXNlIHRoZSB0ZW1wbGF0ZSByZWYgaXMgZm9yd2FyZGVkIHRvIGlubmVyIGNvbXBvbmVudFxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlZlZhbHVlID0gdm5vZGUuc2hhcGVGbGFnICYgNCAvKiBTVEFURUZVTF9DT01QT05FTlQgKi9cclxuICAgICAgICA/IGdldEV4cG9zZVByb3h5KHZub2RlLmNvbXBvbmVudCkgfHwgdm5vZGUuY29tcG9uZW50LnByb3h5XHJcbiAgICAgICAgOiB2bm9kZS5lbDtcclxuICAgIGNvbnN0IHZhbHVlID0gaXNVbm1vdW50ID8gbnVsbCA6IHJlZlZhbHVlO1xyXG4gICAgY29uc3QgeyBpOiBvd25lciwgcjogcmVmIH0gPSByYXdSZWY7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFvd25lcikge1xyXG4gICAgICAgIHdhcm4oYE1pc3NpbmcgcmVmIG93bmVyIGNvbnRleHQuIHJlZiBjYW5ub3QgYmUgdXNlZCBvbiBob2lzdGVkIHZub2Rlcy4gYCArXHJcbiAgICAgICAgICAgIGBBIHZub2RlIHdpdGggcmVmIG11c3QgYmUgY3JlYXRlZCBpbnNpZGUgdGhlIHJlbmRlciBmdW5jdGlvbi5gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbGRSZWYgPSBvbGRSYXdSZWYgJiYgb2xkUmF3UmVmLnI7XHJcbiAgICBjb25zdCByZWZzID0gb3duZXIucmVmcyA9PT0gRU1QVFlfT0JKID8gKG93bmVyLnJlZnMgPSB7fSkgOiBvd25lci5yZWZzO1xyXG4gICAgY29uc3Qgc2V0dXBTdGF0ZSA9IG93bmVyLnNldHVwU3RhdGU7XHJcbiAgICAvLyBkeW5hbWljIHJlZiBjaGFuZ2VkLiB1bnNldCBvbGQgcmVmXHJcbiAgICBpZiAob2xkUmVmICE9IG51bGwgJiYgb2xkUmVmICE9PSByZWYpIHtcclxuICAgICAgICBpZiAoaXNTdHJpbmcob2xkUmVmKSkge1xyXG4gICAgICAgICAgICByZWZzW29sZFJlZl0gPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoaGFzT3duKHNldHVwU3RhdGUsIG9sZFJlZikpIHtcclxuICAgICAgICAgICAgICAgIHNldHVwU3RhdGVbb2xkUmVmXSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNSZWYob2xkUmVmKSkge1xyXG4gICAgICAgICAgICBvbGRSZWYudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpc0Z1bmN0aW9uKHJlZikpIHtcclxuICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcocmVmLCBvd25lciwgMTIgLyogRlVOQ1RJT05fUkVGICovLCBbdmFsdWUsIHJlZnNdKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IF9pc1N0cmluZyA9IGlzU3RyaW5nKHJlZik7XHJcbiAgICAgICAgY29uc3QgX2lzUmVmID0gaXNSZWYocmVmKTtcclxuICAgICAgICBpZiAoX2lzU3RyaW5nIHx8IF9pc1JlZikge1xyXG4gICAgICAgICAgICBjb25zdCBkb1NldCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyYXdSZWYuZikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gX2lzU3RyaW5nID8gcmVmc1tyZWZdIDogcmVmLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VubW91bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcnJheShleGlzdGluZykgJiYgcmVtb3ZlKGV4aXN0aW5nLCByZWZWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXkoZXhpc3RpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tyZWZdID0gW3JlZlZhbHVlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IFtyZWZWYWx1ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhd1JlZi5rKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZzW3Jhd1JlZi5rXSA9IHJlZi52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZXhpc3RpbmcuaW5jbHVkZXMocmVmVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5wdXNoKHJlZlZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9pc1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlZnNbcmVmXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oc2V0dXBTdGF0ZSwgcmVmKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR1cFN0YXRlW3JlZl0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1JlZihyZWYpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd1JlZi5rKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZzW3Jhd1JlZi5rXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignSW52YWxpZCB0ZW1wbGF0ZSByZWYgdHlwZTonLCByZWYsIGAoJHt0eXBlb2YgcmVmfSlgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBkb1NldC5pZCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGRvU2V0LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb1NldCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKCdJbnZhbGlkIHRlbXBsYXRlIHJlZiB0eXBlOicsIHJlZiwgYCgke3R5cGVvZiByZWZ9KWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5sZXQgaGFzTWlzbWF0Y2ggPSBmYWxzZTtcclxuY29uc3QgaXNTVkdDb250YWluZXIgPSAoY29udGFpbmVyKSA9PiAvc3ZnLy50ZXN0KGNvbnRhaW5lci5uYW1lc3BhY2VVUkkpICYmIGNvbnRhaW5lci50YWdOYW1lICE9PSAnZm9yZWlnbk9iamVjdCc7XHJcbmNvbnN0IGlzQ29tbWVudCA9IChub2RlKSA9PiBub2RlLm5vZGVUeXBlID09PSA4IC8qIENPTU1FTlQgKi87XHJcbi8vIE5vdGU6IGh5ZHJhdGlvbiBpcyBET00tc3BlY2lmaWNcclxuLy8gQnV0IHdlIGhhdmUgdG8gcGxhY2UgaXQgaW4gY29yZSBkdWUgdG8gdGlnaHQgY291cGxpbmcgd2l0aCBjb3JlIC0gc3BsaXR0aW5nXHJcbi8vIGl0IG91dCBjcmVhdGVzIGEgdG9uIG9mIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkuXHJcbi8vIEh5ZHJhdGlvbiBhbHNvIGRlcGVuZHMgb24gc29tZSByZW5kZXJlciBpbnRlcm5hbCBsb2dpYyB3aGljaCBuZWVkcyB0byBiZVxyXG4vLyBwYXNzZWQgaW4gdmlhIGFyZ3VtZW50cy5cclxuZnVuY3Rpb24gY3JlYXRlSHlkcmF0aW9uRnVuY3Rpb25zKHJlbmRlcmVySW50ZXJuYWxzKSB7XHJcbiAgICBjb25zdCB7IG10OiBtb3VudENvbXBvbmVudCwgcDogcGF0Y2gsIG86IHsgcGF0Y2hQcm9wLCBuZXh0U2libGluZywgcGFyZW50Tm9kZSwgcmVtb3ZlLCBpbnNlcnQsIGNyZWF0ZUNvbW1lbnQgfSB9ID0gcmVuZGVyZXJJbnRlcm5hbHM7XHJcbiAgICBjb25zdCBoeWRyYXRlID0gKHZub2RlLCBjb250YWluZXIpID0+IHtcclxuICAgICAgICBpZiAoIWNvbnRhaW5lci5oYXNDaGlsZE5vZGVzKCkpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBBdHRlbXB0aW5nIHRvIGh5ZHJhdGUgZXhpc3RpbmcgbWFya3VwIGJ1dCBjb250YWluZXIgaXMgZW1wdHkuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBQZXJmb3JtaW5nIGZ1bGwgbW91bnQgaW5zdGVhZC5gKTtcclxuICAgICAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUsIGNvbnRhaW5lcik7XHJcbiAgICAgICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaGFzTWlzbWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICBoeWRyYXRlTm9kZShjb250YWluZXIuZmlyc3RDaGlsZCwgdm5vZGUsIG51bGwsIG51bGwsIG51bGwpO1xyXG4gICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XHJcbiAgICAgICAgaWYgKGhhc01pc21hdGNoICYmICFmYWxzZSkge1xyXG4gICAgICAgICAgICAvLyB0aGlzIGVycm9yIHNob3VsZCBzaG93IHVwIGluIHByb2R1Y3Rpb25cclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgSHlkcmF0aW9uIGNvbXBsZXRlZCBidXQgY29udGFpbnMgbWlzbWF0Y2hlcy5gKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaHlkcmF0ZU5vZGUgPSAobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkID0gZmFsc2UpID0+IHtcclxuICAgICAgICBjb25zdCBpc0ZyYWdtZW50U3RhcnQgPSBpc0NvbW1lbnQobm9kZSkgJiYgbm9kZS5kYXRhID09PSAnWyc7XHJcbiAgICAgICAgY29uc3Qgb25NaXNtYXRjaCA9ICgpID0+IGhhbmRsZU1pc21hdGNoKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIGlzRnJhZ21lbnRTdGFydCk7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCByZWYsIHNoYXBlRmxhZyB9ID0gdm5vZGU7XHJcbiAgICAgICAgY29uc3QgZG9tVHlwZSA9IG5vZGUubm9kZVR5cGU7XHJcbiAgICAgICAgdm5vZGUuZWwgPSBub2RlO1xyXG4gICAgICAgIGxldCBuZXh0Tm9kZSA9IG51bGw7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgVGV4dDpcclxuICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSAzIC8qIFRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGEgIT09IHZub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gdGV4dCBtaXNtYXRjaDpgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgXFxuLSBDbGllbnQ6ICR7SlNPTi5zdHJpbmdpZnkobm9kZS5kYXRhKX1gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgXFxuLSBTZXJ2ZXI6ICR7SlNPTi5zdHJpbmdpZnkodm5vZGUuY2hpbGRyZW4pfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmRhdGEgPSB2bm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIENvbW1lbnQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gOCAvKiBDT01NRU5UICovIHx8IGlzRnJhZ21lbnRTdGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXRpYzpcclxuICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSAxIC8qIEVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRldGVybWluZSBhbmNob3IsIGFkb3B0IGNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHN0YXRpYyB2bm9kZSBoYXMgaXRzIGNvbnRlbnQgc3RyaXBwZWQgZHVyaW5nIGJ1aWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkb3B0IGl0IGZyb20gdGhlIHNlcnZlci1yZW5kZXJlZCBIVE1MLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRUb0Fkb3B0Q29udGVudCA9ICF2bm9kZS5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2bm9kZS5zdGF0aWNDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkVG9BZG9wdENvbnRlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS5jaGlsZHJlbiArPSBuZXh0Tm9kZS5vdXRlckhUTUw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSB2bm9kZS5zdGF0aWNDb3VudCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IG5leHROb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobmV4dE5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dE5vZGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBGcmFnbWVudDpcclxuICAgICAgICAgICAgICAgIGlmICghaXNGcmFnbWVudFN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IGh5ZHJhdGVGcmFnbWVudChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMSAvKiBFTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDEgLyogRUxFTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS50eXBlLnRvTG93ZXJDYXNlKCkgIT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gaHlkcmF0ZUVsZW1lbnQobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2IC8qIENPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gc2V0dGluZyB1cCB0aGUgcmVuZGVyIGVmZmVjdCwgaWYgdGhlIGluaXRpYWwgdm5vZGUgYWxyZWFkeVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGhhcyAuZWwgc2V0LCB0aGUgY29tcG9uZW50IHdpbGwgcGVyZm9ybSBoeWRyYXRpb24gaW5zdGVhZCBvZiBtb3VudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIGl0cyBzdWItdHJlZS5cclxuICAgICAgICAgICAgICAgICAgICB2bm9kZS5zbG90U2NvcGVJZHMgPSBzbG90U2NvcGVJZHM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudENvbXBvbmVudCh2bm9kZSwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWR0NvbnRhaW5lcihjb250YWluZXIpLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudCBtYXkgYmUgYXN5bmMsIHNvIGluIHRoZSBjYXNlIG9mIGZyYWdtZW50cyB3ZSBjYW5ub3QgcmVseVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIGNvbXBvbmVudCdzIHJlbmRlcmVkIG91dHB1dCB0byBkZXRlcm1pbmUgdGhlIGVuZCBvZiB0aGUgZnJhZ21lbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkLCB3ZSBkbyBhIGxvb2thaGVhZCB0byBmaW5kIHRoZSBlbmQgYW5jaG9yIG5vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBpc0ZyYWdtZW50U3RhcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBsb2NhdGVDbG9zaW5nQXN5bmNBbmNob3Iobm9kZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyAjMzc4N1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGNvbXBvbmVudCBpcyBhc3luYywgaXQgbWF5IGdldCBtb3ZlZCAvIHVubW91bnRlZCBiZWZvcmUgaXRzXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5uZXIgY29tcG9uZW50IGlzIGxvYWRlZCwgc28gd2UgbmVlZCB0byBnaXZlIGl0IGEgcGxhY2Vob2xkZXJcclxuICAgICAgICAgICAgICAgICAgICAvLyB2bm9kZSB0aGF0IG1hdGNoZXMgaXRzIGFkb3B0ZWQgRE9NLlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FzeW5jV3JhcHBlcih2bm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YlRyZWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZyYWdtZW50U3RhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWUgPSBjcmVhdGVWTm9kZShGcmFnbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJUcmVlLmFuY2hvciA9IG5leHROb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXh0Tm9kZS5wcmV2aW91c1NpYmxpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRhaW5lci5sYXN0Q2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJUcmVlID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVUeXBlID09PSAzID8gY3JlYXRlVGV4dFZOb2RlKCcnKSA6IGNyZWF0ZVZOb2RlKCdkaXYnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJUcmVlLmVsID0gbm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUuY29tcG9uZW50LnN1YlRyZWUgPSBzdWJUcmVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDggLyogQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gdm5vZGUudHlwZS5oeWRyYXRlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGh5ZHJhdGVDaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSB2bm9kZS50eXBlLmh5ZHJhdGUobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHQ29udGFpbmVyKHBhcmVudE5vZGUobm9kZSkpLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGh5ZHJhdGVOb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgSG9zdFZOb2RlIHR5cGU6JywgdHlwZSwgYCgke3R5cGVvZiB0eXBlfSlgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlZiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHNldFJlZihyZWYsIG51bGwsIHBhcmVudFN1c3BlbnNlLCB2bm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXh0Tm9kZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlRWxlbWVudCA9IChlbCwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgb3B0aW1pemVkID0gb3B0aW1pemVkIHx8ICEhdm5vZGUuZHluYW1pY0NoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHBhdGNoRmxhZywgc2hhcGVGbGFnLCBkaXJzIH0gPSB2bm9kZTtcclxuICAgICAgICAvLyAjNDAwNiBmb3IgZm9ybSBlbGVtZW50cyB3aXRoIG5vbi1zdHJpbmcgdi1tb2RlbCB2YWx1ZSBiaW5kaW5nc1xyXG4gICAgICAgIC8vIGUuZy4gPG9wdGlvbiA6dmFsdWU9XCJvYmpcIj4sIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiA6dHJ1ZS12YWx1ZT1cIjFcIj5cclxuICAgICAgICBjb25zdCBmb3JjZVBhdGNoVmFsdWUgPSAodHlwZSA9PT0gJ2lucHV0JyAmJiBkaXJzKSB8fCB0eXBlID09PSAnb3B0aW9uJztcclxuICAgICAgICAvLyBza2lwIHByb3BzICYgY2hpbGRyZW4gaWYgdGhpcyBpcyBob2lzdGVkIHN0YXRpYyBub2Rlc1xyXG4gICAgICAgIC8vICM1NDA1IGluIGRldiwgYWx3YXlzIGh5ZHJhdGUgY2hpbGRyZW4gZm9yIEhNUlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgZm9yY2VQYXRjaFZhbHVlIHx8IHBhdGNoRmxhZyAhPT0gLTEgLyogSE9JU1RFRCAqLykge1xyXG4gICAgICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnY3JlYXRlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvcmNlUGF0Y2hWYWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICFvcHRpbWl6ZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaEZsYWcgJiAoMTYgLyogRlVMTF9QUk9QUyAqLyB8IDMyIC8qIEhZRFJBVEVfRVZFTlRTICovKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZm9yY2VQYXRjaFZhbHVlICYmIGtleS5lbmRzV2l0aCgndmFsdWUnKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc09uKGtleSkgJiYgIWlzUmVzZXJ2ZWRQcm9wKGtleSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFByb3AoZWwsIGtleSwgbnVsbCwgcHJvcHNba2V5XSwgZmFsc2UsIHVuZGVmaW5lZCwgcGFyZW50Q29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3BzLm9uQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBGYXN0IHBhdGggZm9yIGNsaWNrIGxpc3RlbmVycyAod2hpY2ggaXMgbW9zdCBvZnRlbikgdG8gYXZvaWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdGVyYXRpbmcgdGhyb3VnaCBwcm9wcy5cclxuICAgICAgICAgICAgICAgICAgICBwYXRjaFByb3AoZWwsICdvbkNsaWNrJywgbnVsbCwgcHJvcHMub25DbGljaywgZmFsc2UsIHVuZGVmaW5lZCwgcGFyZW50Q29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB2bm9kZSAvIGRpcmVjdGl2ZSBob29rc1xyXG4gICAgICAgICAgICBsZXQgdm5vZGVIb29rcztcclxuICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2tzID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZUJlZm9yZU1vdW50KSkge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9va3MsIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVNb3VudCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgodm5vZGVIb29rcyA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSB8fCBkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVIb29rcyAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rcywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlycyAmJiBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdtb3VudGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2hpbGRyZW5cclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIEFSUkFZX0NISUxEUkVOICovICYmXHJcbiAgICAgICAgICAgICAgICAvLyBza2lwIGlmIGVsZW1lbnQgaGFzIGlubmVySFRNTCAvIHRleHRDb250ZW50XHJcbiAgICAgICAgICAgICAgICAhKHByb3BzICYmIChwcm9wcy5pbm5lckhUTUwgfHwgcHJvcHMudGV4dENvbnRlbnQpKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSBoeWRyYXRlQ2hpbGRyZW4oZWwuZmlyc3RDaGlsZCwgdm5vZGUsIGVsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzV2FybmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFoYXNXYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIGNoaWxkcmVuIG1pc21hdGNoIGluIDwke3Zub2RlLnR5cGV9PjogYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgc2VydmVyIHJlbmRlcmVkIGVsZW1lbnQgY29udGFpbnMgbW9yZSBjaGlsZCBub2RlcyB0aGFuIGNsaWVudCB2ZG9tLmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNXYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgU1NSZWQgRE9NIGNvbnRhaW5zIG1vcmUgbm9kZXMgdGhhbiBpdCBzaG91bGQuIFJlbW92ZSB0aGVtLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1ciA9IG5leHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dFNpYmxpbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGN1cik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgOCAvKiBURVhUX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQgIT09IHZub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gdGV4dCBjb250ZW50IG1pc21hdGNoIGluIDwke3Zub2RlLnR5cGV9PjpcXG5gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtIENsaWVudDogJHtlbC50ZXh0Q29udGVudH1cXG5gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtIFNlcnZlcjogJHt2bm9kZS5jaGlsZHJlbn1gKTtcclxuICAgICAgICAgICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IHZub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbC5uZXh0U2libGluZztcclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlQ2hpbGRyZW4gPSAobm9kZSwgcGFyZW50Vk5vZGUsIGNvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBvcHRpbWl6ZWQgPSBvcHRpbWl6ZWQgfHwgISFwYXJlbnRWTm9kZS5keW5hbWljQ2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRWTm9kZS5jaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBsID0gY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgIGxldCBoYXNXYXJuZWQgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2bm9kZSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjaGlsZHJlbltpXVxyXG4gICAgICAgICAgICAgICAgOiAoY2hpbGRyZW5baV0gPSBub3JtYWxpemVWTm9kZShjaGlsZHJlbltpXSkpO1xyXG4gICAgICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IGh5ZHJhdGVOb2RlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodm5vZGUudHlwZSA9PT0gVGV4dCAmJiAhdm5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaGFzV2FybmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIGNoaWxkcmVuIG1pc21hdGNoIGluIDwke2NvbnRhaW5lci50YWdOYW1lLnRvTG93ZXJDYXNlKCl9PjogYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBzZXJ2ZXIgcmVuZGVyZWQgZWxlbWVudCBjb250YWlucyBmZXdlciBjaGlsZCBub2RlcyB0aGFuIGNsaWVudCB2ZG9tLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc1dhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgU1NSZWQgRE9NIGRpZG4ndCBjb250YWluIGVub3VnaCBub2Rlcy4gTW91bnQgdGhlIG1pc3Npbmcgb25lcy5cclxuICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIHZub2RlLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHQ29udGFpbmVyKGNvbnRhaW5lciksIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaHlkcmF0ZUZyYWdtZW50ID0gKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgc2xvdFNjb3BlSWRzOiBmcmFnbWVudFNsb3RTY29wZUlkcyB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50U2xvdFNjb3BlSWRzKSB7XHJcbiAgICAgICAgICAgIHNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkc1xyXG4gICAgICAgICAgICAgICAgPyBzbG90U2NvcGVJZHMuY29uY2F0KGZyYWdtZW50U2xvdFNjb3BlSWRzKVxyXG4gICAgICAgICAgICAgICAgOiBmcmFnbWVudFNsb3RTY29wZUlkcztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcclxuICAgICAgICBjb25zdCBuZXh0ID0gaHlkcmF0ZUNoaWxkcmVuKG5leHRTaWJsaW5nKG5vZGUpLCB2bm9kZSwgY29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgaWYgKG5leHQgJiYgaXNDb21tZW50KG5leHQpICYmIG5leHQuZGF0YSA9PT0gJ10nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0U2libGluZygodm5vZGUuYW5jaG9yID0gbmV4dCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZnJhZ21lbnQgZGlkbid0IGh5ZHJhdGUgc3VjY2Vzc2Z1bGx5LCBzaW5jZSB3ZSBkaWRuJ3QgZ2V0IGEgZW5kIGFuY2hvclxyXG4gICAgICAgICAgICAvLyBiYWNrLiBUaGlzIHNob3VsZCBoYXZlIGxlZCB0byBub2RlL2NoaWxkcmVuIG1pc21hdGNoIHdhcm5pbmdzLlxyXG4gICAgICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBhbmNob3IgaXMgbWlzc2luZywgd2UgbmVlZCB0byBjcmVhdGUgb25lIGFuZCBpbnNlcnQgaXRcclxuICAgICAgICAgICAgaW5zZXJ0KCh2bm9kZS5hbmNob3IgPSBjcmVhdGVDb21tZW50KGBdYCkpLCBjb250YWluZXIsIG5leHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlTWlzbWF0Y2ggPSAobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgaXNGcmFnbWVudCkgPT4ge1xyXG4gICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIG5vZGUgbWlzbWF0Y2g6XFxuLSBDbGllbnQgdm5vZGU6YCwgdm5vZGUudHlwZSwgYFxcbi0gU2VydmVyIHJlbmRlcmVkIERPTTpgLCBub2RlLCBub2RlLm5vZGVUeXBlID09PSAzIC8qIFRFWFQgKi9cclxuICAgICAgICAgICAgICAgID8gYCh0ZXh0KWBcclxuICAgICAgICAgICAgICAgIDogaXNDb21tZW50KG5vZGUpICYmIG5vZGUuZGF0YSA9PT0gJ1snXHJcbiAgICAgICAgICAgICAgICAgICAgPyBgKHN0YXJ0IG9mIGZyYWdtZW50KWBcclxuICAgICAgICAgICAgICAgICAgICA6IGBgKTtcclxuICAgICAgICB2bm9kZS5lbCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGlzRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGV4Y2Vzc2l2ZSBmcmFnbWVudCBub2Rlc1xyXG4gICAgICAgICAgICBjb25zdCBlbmQgPSBsb2NhdGVDbG9zaW5nQXN5bmNBbmNob3Iobm9kZSk7XHJcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0ICE9PSBlbmQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmUobmV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcclxuICAgICAgICByZW1vdmUobm9kZSk7XHJcbiAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUsIGNvbnRhaW5lciwgbmV4dCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkdDb250YWluZXIoY29udGFpbmVyKSwgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICByZXR1cm4gbmV4dDtcclxuICAgIH07XHJcbiAgICBjb25zdCBsb2NhdGVDbG9zaW5nQXN5bmNBbmNob3IgPSAobm9kZSkgPT4ge1xyXG4gICAgICAgIGxldCBtYXRjaCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKG5vZGUpIHtcclxuICAgICAgICAgICAgbm9kZSA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAobm9kZSAmJiBpc0NvbW1lbnQobm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGEgPT09ICdbJylcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaCsrO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YSA9PT0gJ10nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLS07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBbaHlkcmF0ZSwgaHlkcmF0ZU5vZGVdO1xyXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG5sZXQgc3VwcG9ydGVkO1xyXG5sZXQgcGVyZjtcclxuZnVuY3Rpb24gc3RhcnRNZWFzdXJlKGluc3RhbmNlLCB0eXBlKSB7XHJcbiAgICBpZiAoaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcucGVyZm9ybWFuY2UgJiYgaXNTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgIHBlcmYubWFyayhgdnVlLSR7dHlwZX0tJHtpbnN0YW5jZS51aWR9YCk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIGRldnRvb2xzUGVyZlN0YXJ0KGluc3RhbmNlLCB0eXBlLCBzdXBwb3J0ZWQgPyBwZXJmLm5vdygpIDogRGF0ZS5ub3coKSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZW5kTWVhc3VyZShpbnN0YW5jZSwgdHlwZSkge1xyXG4gICAgaWYgKGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLnBlcmZvcm1hbmNlICYmIGlzU3VwcG9ydGVkKCkpIHtcclxuICAgICAgICBjb25zdCBzdGFydFRhZyA9IGB2dWUtJHt0eXBlfS0ke2luc3RhbmNlLnVpZH1gO1xyXG4gICAgICAgIGNvbnN0IGVuZFRhZyA9IHN0YXJ0VGFnICsgYDplbmRgO1xyXG4gICAgICAgIHBlcmYubWFyayhlbmRUYWcpO1xyXG4gICAgICAgIHBlcmYubWVhc3VyZShgPCR7Zm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgaW5zdGFuY2UudHlwZSl9PiAke3R5cGV9YCwgc3RhcnRUYWcsIGVuZFRhZyk7XHJcbiAgICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcclxuICAgICAgICBwZXJmLmNsZWFyTWFya3MoZW5kVGFnKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgZGV2dG9vbHNQZXJmRW5kKGluc3RhbmNlLCB0eXBlLCBzdXBwb3J0ZWQgPyBwZXJmLm5vdygpIDogRGF0ZS5ub3coKSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTdXBwb3J0ZWQoKSB7XHJcbiAgICBpZiAoc3VwcG9ydGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gc3VwcG9ydGVkO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wZXJmb3JtYW5jZSkge1xyXG4gICAgICAgIHN1cHBvcnRlZCA9IHRydWU7XHJcbiAgICAgICAgcGVyZiA9IHdpbmRvdy5wZXJmb3JtYW5jZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHN1cHBvcnRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1cHBvcnRlZDtcclxufVxuXG4vKipcclxuICogVGhpcyBpcyBvbmx5IGNhbGxlZCBpbiBlc20tYnVuZGxlciBidWlsZHMuXHJcbiAqIEl0IGlzIGNhbGxlZCB3aGVuIGEgcmVuZGVyZXIgaXMgY3JlYXRlZCwgaW4gYGJhc2VDcmVhdGVSZW5kZXJlcmAgc28gdGhhdFxyXG4gKiBpbXBvcnRpbmcgcnVudGltZS1jb3JlIGlzIHNpZGUtZWZmZWN0cyBmcmVlLlxyXG4gKlxyXG4gKiBpc3RhbmJ1bC1pZ25vcmUtbmV4dFxyXG4gKi9cclxuZnVuY3Rpb24gaW5pdEZlYXR1cmVGbGFncygpIHtcclxuICAgIGNvbnN0IG5lZWRXYXJuID0gW107XHJcbiAgICBpZiAodHlwZW9mIF9fVlVFX09QVElPTlNfQVBJX18gIT09ICdib29sZWFuJykge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBuZWVkV2Fybi5wdXNoKGBfX1ZVRV9PUFRJT05TX0FQSV9fYCk7XHJcbiAgICAgICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX09QVElPTlNfQVBJX18gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBfX1ZVRV9QUk9EX0RFVlRPT0xTX18gIT09ICdib29sZWFuJykge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBuZWVkV2Fybi5wdXNoKGBfX1ZVRV9QUk9EX0RFVlRPT0xTX19gKTtcclxuICAgICAgICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfUFJPRF9ERVZUT09MU19fID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG5lZWRXYXJuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IG11bHRpID0gbmVlZFdhcm4ubGVuZ3RoID4gMTtcclxuICAgICAgICBjb25zb2xlLndhcm4oYEZlYXR1cmUgZmxhZyR7bXVsdGkgPyBgc2AgOiBgYH0gJHtuZWVkV2Fybi5qb2luKCcsICcpfSAke211bHRpID8gYGFyZWAgOiBgaXNgfSBub3QgZXhwbGljaXRseSBkZWZpbmVkLiBZb3UgYXJlIHJ1bm5pbmcgdGhlIGVzbS1idW5kbGVyIGJ1aWxkIG9mIFZ1ZSwgYCArXHJcbiAgICAgICAgICAgIGB3aGljaCBleHBlY3RzIHRoZXNlIGNvbXBpbGUtdGltZSBmZWF0dXJlIGZsYWdzIHRvIGJlIGdsb2JhbGx5IGluamVjdGVkIGAgK1xyXG4gICAgICAgICAgICBgdmlhIHRoZSBidW5kbGVyIGNvbmZpZyBpbiBvcmRlciB0byBnZXQgYmV0dGVyIHRyZWUtc2hha2luZyBpbiB0aGUgYCArXHJcbiAgICAgICAgICAgIGBwcm9kdWN0aW9uIGJ1bmRsZS5cXG5cXG5gICtcclxuICAgICAgICAgICAgYEZvciBtb3JlIGRldGFpbHMsIHNlZSBodHRwczovL2xpbmsudnVlanMub3JnL2ZlYXR1cmUtZmxhZ3MuYCk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgcXVldWVQb3N0UmVuZGVyRWZmZWN0ID0gcXVldWVFZmZlY3RXaXRoU3VzcGVuc2VcclxuICAgIDtcclxuLyoqXHJcbiAqIFRoZSBjcmVhdGVSZW5kZXJlciBmdW5jdGlvbiBhY2NlcHRzIHR3byBnZW5lcmljIGFyZ3VtZW50czpcclxuICogSG9zdE5vZGUgYW5kIEhvc3RFbGVtZW50LCBjb3JyZXNwb25kaW5nIHRvIE5vZGUgYW5kIEVsZW1lbnQgdHlwZXMgaW4gdGhlXHJcbiAqIGhvc3QgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBmb3IgcnVudGltZS1kb20sIEhvc3ROb2RlIHdvdWxkIGJlIHRoZSBET01cclxuICogYE5vZGVgIGludGVyZmFjZSBhbmQgSG9zdEVsZW1lbnQgd291bGQgYmUgdGhlIERPTSBgRWxlbWVudGAgaW50ZXJmYWNlLlxyXG4gKlxyXG4gKiBDdXN0b20gcmVuZGVyZXJzIGNhbiBwYXNzIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB0eXBlcyBsaWtlIHRoaXM6XHJcbiAqXHJcbiAqIGBgYCBqc1xyXG4gKiBjb25zdCB7IHJlbmRlciwgY3JlYXRlQXBwIH0gPSBjcmVhdGVSZW5kZXJlcjxOb2RlLCBFbGVtZW50Pih7XHJcbiAqICAgcGF0Y2hQcm9wLFxyXG4gKiAgIC4uLm5vZGVPcHNcclxuICogfSlcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZW5kZXJlcihvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gYmFzZUNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMpO1xyXG59XHJcbi8vIFNlcGFyYXRlIEFQSSBmb3IgY3JlYXRpbmcgaHlkcmF0aW9uLWVuYWJsZWQgcmVuZGVyZXIuXHJcbi8vIEh5ZHJhdGlvbiBsb2dpYyBpcyBvbmx5IHVzZWQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIG1ha2luZyBpdFxyXG4vLyB0cmVlLXNoYWthYmxlLlxyXG5mdW5jdGlvbiBjcmVhdGVIeWRyYXRpb25SZW5kZXJlcihvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gYmFzZUNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMsIGNyZWF0ZUh5ZHJhdGlvbkZ1bmN0aW9ucyk7XHJcbn1cclxuLy8gaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gYmFzZUNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMsIGNyZWF0ZUh5ZHJhdGlvbkZucykge1xyXG4gICAgLy8gY29tcGlsZS10aW1lIGZlYXR1cmUgZmxhZ3MgY2hlY2tcclxuICAgIHtcclxuICAgICAgICBpbml0RmVhdHVyZUZsYWdzKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YXJnZXQgPSBnZXRHbG9iYWxUaGlzKCk7XHJcbiAgICB0YXJnZXQuX19WVUVfXyA9IHRydWU7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIHNldERldnRvb2xzSG9vayh0YXJnZXQuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXywgdGFyZ2V0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgaW5zZXJ0OiBob3N0SW5zZXJ0LCByZW1vdmU6IGhvc3RSZW1vdmUsIHBhdGNoUHJvcDogaG9zdFBhdGNoUHJvcCwgY3JlYXRlRWxlbWVudDogaG9zdENyZWF0ZUVsZW1lbnQsIGNyZWF0ZVRleHQ6IGhvc3RDcmVhdGVUZXh0LCBjcmVhdGVDb21tZW50OiBob3N0Q3JlYXRlQ29tbWVudCwgc2V0VGV4dDogaG9zdFNldFRleHQsIHNldEVsZW1lbnRUZXh0OiBob3N0U2V0RWxlbWVudFRleHQsIHBhcmVudE5vZGU6IGhvc3RQYXJlbnROb2RlLCBuZXh0U2libGluZzogaG9zdE5leHRTaWJsaW5nLCBzZXRTY29wZUlkOiBob3N0U2V0U2NvcGVJZCA9IE5PT1AsIGNsb25lTm9kZTogaG9zdENsb25lTm9kZSwgaW5zZXJ0U3RhdGljQ29udGVudDogaG9zdEluc2VydFN0YXRpY0NvbnRlbnQgfSA9IG9wdGlvbnM7XHJcbiAgICAvLyBOb3RlOiBmdW5jdGlvbnMgaW5zaWRlIHRoaXMgY2xvc3VyZSBzaG91bGQgdXNlIGBjb25zdCB4eHggPSAoKSA9PiB7fWBcclxuICAgIC8vIHN0eWxlIGluIG9yZGVyIHRvIHByZXZlbnQgYmVpbmcgaW5saW5lZCBieSBtaW5pZmllcnMuXHJcbiAgICBjb25zdCBwYXRjaCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yID0gbnVsbCwgcGFyZW50Q29tcG9uZW50ID0gbnVsbCwgcGFyZW50U3VzcGVuc2UgPSBudWxsLCBpc1NWRyA9IGZhbHNlLCBzbG90U2NvcGVJZHMgPSBudWxsLCBvcHRpbWl6ZWQgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZyA/IGZhbHNlIDogISFuMi5keW5hbWljQ2hpbGRyZW4pID0+IHtcclxuICAgICAgICBpZiAobjEgPT09IG4yKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcGF0Y2hpbmcgJiBub3Qgc2FtZSB0eXBlLCB1bm1vdW50IG9sZCB0cmVlXHJcbiAgICAgICAgaWYgKG4xICYmICFpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xyXG4gICAgICAgICAgICBhbmNob3IgPSBnZXROZXh0SG9zdE5vZGUobjEpO1xyXG4gICAgICAgICAgICB1bm1vdW50KG4xLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgbjEgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobjIucGF0Y2hGbGFnID09PSAtMiAvKiBCQUlMICovKSB7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBuMi5keW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IHR5cGUsIHJlZiwgc2hhcGVGbGFnIH0gPSBuMjtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBUZXh0OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc1RleHQobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBDb21tZW50OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1lbnROb2RlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdGljOlxyXG4gICAgICAgICAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudFN0YXRpY05vZGUobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRpY05vZGUobjEsIG4yLCBjb250YWluZXIsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEZyYWdtZW50OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0ZyYWdtZW50KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxIC8qIEVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRWxlbWVudChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgNiAvKiBDT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29tcG9uZW50KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBURUxFUE9SVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUucHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGludGVybmFscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlLnByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBpbnRlcm5hbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignSW52YWxpZCBWTm9kZSB0eXBlOicsIHR5cGUsIGAoJHt0eXBlb2YgdHlwZX0pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNldCByZWZcclxuICAgICAgICBpZiAocmVmICE9IG51bGwgJiYgcGFyZW50Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHNldFJlZihyZWYsIG4xICYmIG4xLnJlZiwgcGFyZW50U3VzcGVuc2UsIG4yIHx8IG4xLCAhbjIpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzVGV4dCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydCgobjIuZWwgPSBob3N0Q3JlYXRlVGV4dChuMi5jaGlsZHJlbikpLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBlbCA9IChuMi5lbCA9IG4xLmVsKTtcclxuICAgICAgICAgICAgaWYgKG4yLmNoaWxkcmVuICE9PSBuMS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgaG9zdFNldFRleHQoZWwsIG4yLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzQ29tbWVudE5vZGUgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcikgPT4ge1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoKG4yLmVsID0gaG9zdENyZWF0ZUNvbW1lbnQobjIuY2hpbGRyZW4gfHwgJycpKSwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdGhlcmUncyBubyBzdXBwb3J0IGZvciBkeW5hbWljIGNvbW1lbnRzXHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50U3RhdGljTm9kZSA9IChuMiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHKSA9PiB7XHJcbiAgICAgICAgW24yLmVsLCBuMi5hbmNob3JdID0gaG9zdEluc2VydFN0YXRpY0NvbnRlbnQobjIuY2hpbGRyZW4sIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgbjIuZWwsIG4yLmFuY2hvcik7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBEZXYgLyBITVIgb25seVxyXG4gICAgICovXHJcbiAgICBjb25zdCBwYXRjaFN0YXRpY05vZGUgPSAobjEsIG4yLCBjb250YWluZXIsIGlzU1ZHKSA9PiB7XHJcbiAgICAgICAgLy8gc3RhdGljIG5vZGVzIGFyZSBvbmx5IHBhdGNoZWQgZHVyaW5nIGRldiBmb3IgSE1SXHJcbiAgICAgICAgaWYgKG4yLmNoaWxkcmVuICE9PSBuMS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICBjb25zdCBhbmNob3IgPSBob3N0TmV4dFNpYmxpbmcobjEuYW5jaG9yKTtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGV4aXN0aW5nXHJcbiAgICAgICAgICAgIHJlbW92ZVN0YXRpY05vZGUobjEpO1xyXG4gICAgICAgICAgICBbbjIuZWwsIG4yLmFuY2hvcl0gPSBob3N0SW5zZXJ0U3RhdGljQ29udGVudChuMi5jaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgICAgIG4yLmFuY2hvciA9IG4xLmFuY2hvcjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW92ZVN0YXRpY05vZGUgPSAoeyBlbCwgYW5jaG9yIH0sIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpID0+IHtcclxuICAgICAgICBsZXQgbmV4dDtcclxuICAgICAgICB3aGlsZSAoZWwgJiYgZWwgIT09IGFuY2hvcikge1xyXG4gICAgICAgICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGVsKTtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBuZXh0U2libGluZyk7XHJcbiAgICAgICAgICAgIGVsID0gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdEluc2VydChhbmNob3IsIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbW92ZVN0YXRpY05vZGUgPSAoeyBlbCwgYW5jaG9yIH0pID0+IHtcclxuICAgICAgICBsZXQgbmV4dDtcclxuICAgICAgICB3aGlsZSAoZWwgJiYgZWwgIT09IGFuY2hvcikge1xyXG4gICAgICAgICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGVsKTtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShlbCk7XHJcbiAgICAgICAgICAgIGVsID0gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdFJlbW92ZShhbmNob3IpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NFbGVtZW50ID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGlzU1ZHID0gaXNTVkcgfHwgbjIudHlwZSA9PT0gJ3N2Zyc7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgbW91bnRFbGVtZW50KG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhdGNoRWxlbWVudChuMSwgbjIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50RWxlbWVudCA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGxldCBlbDtcclxuICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNoYXBlRmxhZywgdHJhbnNpdGlvbiwgcGF0Y2hGbGFnLCBkaXJzIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB2bm9kZS5lbCAmJlxyXG4gICAgICAgICAgICBob3N0Q2xvbmVOb2RlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID09PSAtMSAvKiBIT0lTVEVEICovKSB7XHJcbiAgICAgICAgICAgIC8vIElmIGEgdm5vZGUgaGFzIG5vbi1udWxsIGVsLCBpdCBtZWFucyBpdCdzIGJlaW5nIHJldXNlZC5cclxuICAgICAgICAgICAgLy8gT25seSBzdGF0aWMgdm5vZGVzIGNhbiBiZSByZXVzZWQsIHNvIGl0cyBtb3VudGVkIERPTSBub2RlcyBzaG91bGQgYmVcclxuICAgICAgICAgICAgLy8gZXhhY3RseSB0aGUgc2FtZSwgYW5kIHdlIGNhbiBzaW1wbHkgZG8gYSBjbG9uZSBoZXJlLlxyXG4gICAgICAgICAgICAvLyBvbmx5IGRvIHRoaXMgaW4gcHJvZHVjdGlvbiBzaW5jZSBjbG9uZWQgdHJlZXMgY2Fubm90IGJlIEhNUiB1cGRhdGVkLlxyXG4gICAgICAgICAgICBlbCA9IHZub2RlLmVsID0gaG9zdENsb25lTm9kZSh2bm9kZS5lbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbCA9IHZub2RlLmVsID0gaG9zdENyZWF0ZUVsZW1lbnQodm5vZGUudHlwZSwgaXNTVkcsIHByb3BzICYmIHByb3BzLmlzLCBwcm9wcyk7XHJcbiAgICAgICAgICAgIC8vIG1vdW50IGNoaWxkcmVuIGZpcnN0LCBzaW5jZSBzb21lIHByb3BzIG1heSByZWx5IG9uIGNoaWxkIGNvbnRlbnRcclxuICAgICAgICAgICAgLy8gYmVpbmcgYWxyZWFkeSByZW5kZXJlZCwgZS5nLiBgPHNlbGVjdCB2YWx1ZT5gXHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiA4IC8qIFRFWFRfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChlbCwgdm5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIEFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudENoaWxkcmVuKHZub2RlLmNoaWxkcmVuLCBlbCwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcgJiYgdHlwZSAhPT0gJ2ZvcmVpZ25PYmplY3QnLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRpcnMpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2NyZWF0ZWQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ3ZhbHVlJyAmJiAhaXNSZXNlcnZlZFByb3Aoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIG51bGwsIHByb3BzW2tleV0sIGlzU1ZHLCB2bm9kZS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIFNwZWNpYWwgY2FzZSBmb3Igc2V0dGluZyB2YWx1ZSBvbiBET00gZWxlbWVudHM6XHJcbiAgICAgICAgICAgICAgICAgKiAtIGl0IGNhbiBiZSBvcmRlci1zZW5zaXRpdmUgKGUuZy4gc2hvdWxkIGJlIHNldCAqYWZ0ZXIqIG1pbi9tYXgsICMyMzI1LCAjNDAyNClcclxuICAgICAgICAgICAgICAgICAqIC0gaXQgbmVlZHMgdG8gYmUgZm9yY2VkICgjMTQ3MSlcclxuICAgICAgICAgICAgICAgICAqICMyMzUzIHByb3Bvc2VzIGFkZGluZyBhbm90aGVyIHJlbmRlcmVyIG9wdGlvbiB0byBjb25maWd1cmUgdGhpcywgYnV0XHJcbiAgICAgICAgICAgICAgICAgKiB0aGUgcHJvcGVydGllcyBhZmZlY3RzIGFyZSBzbyBmaW5pdGUgaXQgaXMgd29ydGggc3BlY2lhbCBjYXNpbmcgaXRcclxuICAgICAgICAgICAgICAgICAqIGhlcmUgdG8gcmVkdWNlIHRoZSBjb21wbGV4aXR5LiAoU3BlY2lhbCBjYXNpbmcgaXQgYWxzbyBzaG91bGQgbm90XHJcbiAgICAgICAgICAgICAgICAgKiBhZmZlY3Qgbm9uLURPTSByZW5kZXJlcnMpXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIGlmICgndmFsdWUnIGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3ZhbHVlJywgbnVsbCwgcHJvcHMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBwcm9wcy5vblZub2RlQmVmb3JlTW91bnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2NvcGVJZFxyXG4gICAgICAgICAgICBzZXRTY29wZUlkKGVsLCB2bm9kZSwgdm5vZGUuc2NvcGVJZCwgc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWwsICdfX3Zub2RlJywge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZub2RlLFxyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbCwgJ19fdnVlUGFyZW50Q29tcG9uZW50Jywge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHBhcmVudENvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVNb3VudCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAjMTU4MyBGb3IgaW5zaWRlIHN1c3BlbnNlICsgc3VzcGVuc2Ugbm90IHJlc29sdmVkIGNhc2UsIGVudGVyIGhvb2sgc2hvdWxkIGNhbGwgd2hlbiBzdXNwZW5zZSByZXNvbHZlZFxyXG4gICAgICAgIC8vICMxNjg5IEZvciBpbnNpZGUgc3VzcGVuc2UgKyBzdXNwZW5zZSByZXNvbHZlZCBjYXNlLCBqdXN0IGNhbGwgaXRcclxuICAgICAgICBjb25zdCBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyA9ICghcGFyZW50U3VzcGVuc2UgfHwgKHBhcmVudFN1c3BlbnNlICYmICFwYXJlbnRTdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSkgJiZcclxuICAgICAgICAgICAgdHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQ7XHJcbiAgICAgICAgaWYgKG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzKSB7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlTW91bnRlZCkgfHxcclxuICAgICAgICAgICAgbmVlZENhbGxUcmFuc2l0aW9uSG9va3MgfHxcclxuICAgICAgICAgICAgZGlycykge1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVIb29rICYmIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgbmVlZENhbGxUcmFuc2l0aW9uSG9va3MgJiYgdHJhbnNpdGlvbi5lbnRlcihlbCk7XHJcbiAgICAgICAgICAgICAgICBkaXJzICYmIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ21vdW50ZWQnKTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBzZXRTY29wZUlkID0gKGVsLCB2bm9kZSwgc2NvcGVJZCwgc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQpID0+IHtcclxuICAgICAgICBpZiAoc2NvcGVJZCkge1xyXG4gICAgICAgICAgICBob3N0U2V0U2NvcGVJZChlbCwgc2NvcGVJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzbG90U2NvcGVJZHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbG90U2NvcGVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRTY29wZUlkKGVsLCBzbG90U2NvcGVJZHNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJlbnRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgbGV0IHN1YlRyZWUgPSBwYXJlbnRDb21wb25lbnQuc3ViVHJlZTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgc3ViVHJlZS5wYXRjaEZsYWcgPiAwICYmXHJcbiAgICAgICAgICAgICAgICBzdWJUcmVlLnBhdGNoRmxhZyAmIDIwNDggLyogREVWX1JPT1RfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHN1YlRyZWUgPVxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclNpbmdsZVJvb3Qoc3ViVHJlZS5jaGlsZHJlbikgfHwgc3ViVHJlZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodm5vZGUgPT09IHN1YlRyZWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFZOb2RlID0gcGFyZW50Q29tcG9uZW50LnZub2RlO1xyXG4gICAgICAgICAgICAgICAgc2V0U2NvcGVJZChlbCwgcGFyZW50Vk5vZGUsIHBhcmVudFZOb2RlLnNjb3BlSWQsIHBhcmVudFZOb2RlLnNsb3RTY29wZUlkcywgcGFyZW50Q29tcG9uZW50LnBhcmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW91bnRDaGlsZHJlbiA9IChjaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgc3RhcnQgPSAwKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSAoY2hpbGRyZW5baV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoY2hpbGRyZW5baV0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGNoaWxkcmVuW2ldKSk7XHJcbiAgICAgICAgICAgIHBhdGNoKG51bGwsIGNoaWxkLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hFbGVtZW50ID0gKG4xLCBuMiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWwgPSAobjIuZWwgPSBuMS5lbCk7XHJcbiAgICAgICAgbGV0IHsgcGF0Y2hGbGFnLCBkeW5hbWljQ2hpbGRyZW4sIGRpcnMgfSA9IG4yO1xyXG4gICAgICAgIC8vICMxNDI2IHRha2UgdGhlIG9sZCB2bm9kZSdzIHBhdGNoIGZsYWcgaW50byBhY2NvdW50IHNpbmNlIHVzZXIgbWF5IGNsb25lIGFcclxuICAgICAgICAvLyBjb21waWxlci1nZW5lcmF0ZWQgdm5vZGUsIHdoaWNoIGRlLW9wdHMgdG8gRlVMTF9QUk9QU1xyXG4gICAgICAgIHBhdGNoRmxhZyB8PSBuMS5wYXRjaEZsYWcgJiAxNiAvKiBGVUxMX1BST1BTICovO1xyXG4gICAgICAgIGNvbnN0IG9sZFByb3BzID0gbjEucHJvcHMgfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGNvbnN0IG5ld1Byb3BzID0gbjIucHJvcHMgfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgLy8gZGlzYWJsZSByZWN1cnNlIGluIGJlZm9yZVVwZGF0ZSBob29rc1xyXG4gICAgICAgIHBhcmVudENvbXBvbmVudCAmJiB0b2dnbGVSZWN1cnNlKHBhcmVudENvbXBvbmVudCwgZmFsc2UpO1xyXG4gICAgICAgIGlmICgodm5vZGVIb29rID0gbmV3UHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkpIHtcclxuICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCBuMiwgbjEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKG4yLCBuMSwgcGFyZW50Q29tcG9uZW50LCAnYmVmb3JlVXBkYXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudENvbXBvbmVudCAmJiB0b2dnbGVSZWN1cnNlKHBhcmVudENvbXBvbmVudCwgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgIC8vIEhNUiB1cGRhdGVkLCBmb3JjZSBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID0gMDtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFyZUNoaWxkcmVuU1ZHID0gaXNTVkcgJiYgbjIudHlwZSAhPT0gJ2ZvcmVpZ25PYmplY3QnO1xyXG4gICAgICAgIGlmIChkeW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgcGF0Y2hCbG9ja0NoaWxkcmVuKG4xLmR5bmFtaWNDaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBlbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgYXJlQ2hpbGRyZW5TVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcGFyZW50Q29tcG9uZW50ICYmIHBhcmVudENvbXBvbmVudC50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghb3B0aW1pemVkKSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICBwYXRjaENoaWxkcmVuKG4xLCBuMiwgZWwsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGFyZUNoaWxkcmVuU1ZHLCBzbG90U2NvcGVJZHMsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyA+IDApIHtcclxuICAgICAgICAgICAgLy8gdGhlIHByZXNlbmNlIG9mIGEgcGF0Y2hGbGFnIG1lYW5zIHRoaXMgZWxlbWVudCdzIHJlbmRlciBjb2RlIHdhc1xyXG4gICAgICAgICAgICAvLyBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBjYW4gdGFrZSB0aGUgZmFzdCBwYXRoLlxyXG4gICAgICAgICAgICAvLyBpbiB0aGlzIHBhdGggb2xkIG5vZGUgYW5kIG5ldyBub2RlIGFyZSBndWFyYW50ZWVkIHRvIGhhdmUgdGhlIHNhbWUgc2hhcGVcclxuICAgICAgICAgICAgLy8gKGkuZS4gYXQgdGhlIGV4YWN0IHNhbWUgcG9zaXRpb24gaW4gdGhlIHNvdXJjZSB0ZW1wbGF0ZSlcclxuICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDE2IC8qIEZVTExfUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgcHJvcHMgY29udGFpbiBkeW5hbWljIGtleXMsIGZ1bGwgZGlmZiBuZWVkZWRcclxuICAgICAgICAgICAgICAgIHBhdGNoUHJvcHMoZWwsIG4yLCBvbGRQcm9wcywgbmV3UHJvcHMsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNsYXNzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGZsYWcgaXMgbWF0Y2hlZCB3aGVuIHRoZSBlbGVtZW50IGhhcyBkeW5hbWljIGNsYXNzIGJpbmRpbmdzLlxyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDIgLyogQ0xBU1MgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2xkUHJvcHMuY2xhc3MgIT09IG5ld1Byb3BzLmNsYXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsICdjbGFzcycsIG51bGwsIG5ld1Byb3BzLmNsYXNzLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gc3R5bGVcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGR5bmFtaWMgc3R5bGUgYmluZGluZ3NcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiA0IC8qIFNUWUxFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3N0eWxlJywgb2xkUHJvcHMuc3R5bGUsIG5ld1Byb3BzLnN0eWxlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBmbGFnIGlzIG1hdGNoZWQgd2hlbiB0aGUgZWxlbWVudCBoYXMgZHluYW1pYyBwcm9wL2F0dHIgYmluZGluZ3NcclxuICAgICAgICAgICAgICAgIC8vIG90aGVyIHRoYW4gY2xhc3MgYW5kIHN0eWxlLiBUaGUga2V5cyBvZiBkeW5hbWljIHByb3AvYXR0cnMgYXJlIHNhdmVkIGZvclxyXG4gICAgICAgICAgICAgICAgLy8gZmFzdGVyIGl0ZXJhdGlvbi5cclxuICAgICAgICAgICAgICAgIC8vIE5vdGUgZHluYW1pYyBrZXlzIGxpa2UgOltmb29dPVwiYmFyXCIgd2lsbCBjYXVzZSB0aGlzIG9wdGltaXphdGlvbiB0b1xyXG4gICAgICAgICAgICAgICAgLy8gYmFpbCBvdXQgYW5kIGdvIHRocm91Z2ggYSBmdWxsIGRpZmYgYmVjYXVzZSB3ZSBuZWVkIHRvIHVuc2V0IHRoZSBvbGQga2V5XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgOCAvKiBQUk9QUyAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBmbGFnIGlzIHByZXNlbnQgdGhlbiBkeW5hbWljUHJvcHMgbXVzdCBiZSBub24tbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzVG9VcGRhdGUgPSBuMi5keW5hbWljUHJvcHM7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wc1RvVXBkYXRlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHByb3BzVG9VcGRhdGVbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBvbGRQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbmV3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzE0NzEgZm9yY2UgcGF0Y2ggdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT09IHByZXYgfHwga2V5ID09PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIHByZXYsIG5leHQsIGlzU1ZHLCBuMS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0ZXh0XHJcbiAgICAgICAgICAgIC8vIFRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIG9ubHkgZHluYW1pYyB0ZXh0IGNoaWxkcmVuLlxyXG4gICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgMSAvKiBURVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobjEuY2hpbGRyZW4gIT09IG4yLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFNldEVsZW1lbnRUZXh0KGVsLCBuMi5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIW9wdGltaXplZCAmJiBkeW5hbWljQ2hpbGRyZW4gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvLyB1bm9wdGltaXplZCwgZnVsbCBkaWZmXHJcbiAgICAgICAgICAgIHBhdGNoUHJvcHMoZWwsIG4yLCBvbGRQcm9wcywgbmV3UHJvcHMsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBuZXdQcm9wcy5vblZub2RlVXBkYXRlZCkgfHwgZGlycykge1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVIb29rICYmIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgbjIsIG4xKTtcclxuICAgICAgICAgICAgICAgIGRpcnMgJiYgaW52b2tlRGlyZWN0aXZlSG9vayhuMiwgbjEsIHBhcmVudENvbXBvbmVudCwgJ3VwZGF0ZWQnKTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyBUaGUgZmFzdCBwYXRoIGZvciBibG9ja3MuXHJcbiAgICBjb25zdCBwYXRjaEJsb2NrQ2hpbGRyZW4gPSAob2xkQ2hpbGRyZW4sIG5ld0NoaWxkcmVuLCBmYWxsYmFja0NvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcykgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgb2xkVk5vZGUgPSBvbGRDaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgY29uc3QgbmV3Vk5vZGUgPSBuZXdDaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjb250YWluZXIgKHBhcmVudCBlbGVtZW50KSBmb3IgdGhlIHBhdGNoLlxyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBcclxuICAgICAgICAgICAgLy8gb2xkVk5vZGUgbWF5IGJlIGFuIGVycm9yZWQgYXN5bmMgc2V0dXAoKSBjb21wb25lbnQgaW5zaWRlIFN1c3BlbnNlXHJcbiAgICAgICAgICAgIC8vIHdoaWNoIHdpbGwgbm90IGhhdmUgYSBtb3VudGVkIGVsZW1lbnRcclxuICAgICAgICAgICAgb2xkVk5vZGUuZWwgJiZcclxuICAgICAgICAgICAgICAgIC8vIC0gSW4gdGhlIGNhc2Ugb2YgYSBGcmFnbWVudCwgd2UgbmVlZCB0byBwcm92aWRlIHRoZSBhY3R1YWwgcGFyZW50XHJcbiAgICAgICAgICAgICAgICAvLyBvZiB0aGUgRnJhZ21lbnQgaXRzZWxmIHNvIGl0IGNhbiBtb3ZlIGl0cyBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIChvbGRWTm9kZS50eXBlID09PSBGcmFnbWVudCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gSW4gdGhlIGNhc2Ugb2YgZGlmZmVyZW50IG5vZGVzLCB0aGVyZSBpcyBnb2luZyB0byBiZSBhIHJlcGxhY2VtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYWxzbyByZXF1aXJlcyB0aGUgY29ycmVjdCBwYXJlbnQgY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgIWlzU2FtZVZOb2RlVHlwZShvbGRWTm9kZSwgbmV3Vk5vZGUpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSBJbiB0aGUgY2FzZSBvZiBhIGNvbXBvbmVudCwgaXQgY291bGQgY29udGFpbiBhbnl0aGluZy5cclxuICAgICAgICAgICAgICAgICAgICBvbGRWTm9kZS5zaGFwZUZsYWcgJiAoNiAvKiBDT01QT05FTlQgKi8gfCA2NCAvKiBURUxFUE9SVCAqLykpXHJcbiAgICAgICAgICAgICAgICA/IGhvc3RQYXJlbnROb2RlKG9sZFZOb2RlLmVsKVxyXG4gICAgICAgICAgICAgICAgOiAvLyBJbiBvdGhlciBjYXNlcywgdGhlIHBhcmVudCBjb250YWluZXIgaXMgbm90IGFjdHVhbGx5IHVzZWQgc28gd2VcclxuICAgICAgICAgICAgICAgICAgICAvLyBqdXN0IHBhc3MgdGhlIGJsb2NrIGVsZW1lbnQgaGVyZSB0byBhdm9pZCBhIERPTSBwYXJlbnROb2RlIGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tDb250YWluZXI7XHJcbiAgICAgICAgICAgIHBhdGNoKG9sZFZOb2RlLCBuZXdWTm9kZSwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hQcm9wcyA9IChlbCwgdm5vZGUsIG9sZFByb3BzLCBuZXdQcm9wcywgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpID0+IHtcclxuICAgICAgICBpZiAob2xkUHJvcHMgIT09IG5ld1Byb3BzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBlbXB0eSBzdHJpbmcgaXMgbm90IHZhbGlkIHByb3BcclxuICAgICAgICAgICAgICAgIGlmIChpc1Jlc2VydmVkUHJvcChrZXkpKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IG5ld1Byb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gb2xkUHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIC8vIGRlZmVyIHBhdGNoaW5nIHZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCAhPT0gcHJldiAmJiBrZXkgIT09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIHByZXYsIG5leHQsIGlzU1ZHLCB2bm9kZS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob2xkUHJvcHMgIT09IEVNUFRZX09CSikge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2xkUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXJ2ZWRQcm9wKGtleSkgJiYgIShrZXkgaW4gbmV3UHJvcHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgb2xkUHJvcHNba2V5XSwgbnVsbCwgaXNTVkcsIHZub2RlLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoJ3ZhbHVlJyBpbiBuZXdQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3ZhbHVlJywgb2xkUHJvcHMudmFsdWUsIG5ld1Byb3BzLnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzRnJhZ21lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnRTdGFydEFuY2hvciA9IChuMi5lbCA9IG4xID8gbjEuZWwgOiBob3N0Q3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgIGNvbnN0IGZyYWdtZW50RW5kQW5jaG9yID0gKG4yLmFuY2hvciA9IG4xID8gbjEuYW5jaG9yIDogaG9zdENyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICBsZXQgeyBwYXRjaEZsYWcsIGR5bmFtaWNDaGlsZHJlbiwgc2xvdFNjb3BlSWRzOiBmcmFnbWVudFNsb3RTY29wZUlkcyB9ID0gbjI7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgIC8vIEhNUiB1cGRhdGVkLCBmb3JjZSBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID0gMDtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgYSBzbG90IGZyYWdtZW50IHdpdGggOnNsb3R0ZWQgc2NvcGUgaWRzXHJcbiAgICAgICAgaWYgKGZyYWdtZW50U2xvdFNjb3BlSWRzKSB7XHJcbiAgICAgICAgICAgIHNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkc1xyXG4gICAgICAgICAgICAgICAgPyBzbG90U2NvcGVJZHMuY29uY2F0KGZyYWdtZW50U2xvdFNjb3BlSWRzKVxyXG4gICAgICAgICAgICAgICAgOiBmcmFnbWVudFNsb3RTY29wZUlkcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChmcmFnbWVudFN0YXJ0QW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoZnJhZ21lbnRFbmRBbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgLy8gYSBmcmFnbWVudCBjYW4gb25seSBoYXZlIGFycmF5IGNoaWxkcmVuXHJcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZXkgYXJlIGVpdGhlciBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyLCBvciBpbXBsaWNpdGx5IGNyZWF0ZWRcclxuICAgICAgICAgICAgLy8gZnJvbSBhcnJheXMuXHJcbiAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4objIuY2hpbGRyZW4sIGNvbnRhaW5lciwgZnJhZ21lbnRFbmRBbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGF0Y2hGbGFnID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnICYgNjQgLyogU1RBQkxFX0ZSQUdNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICBkeW5hbWljQ2hpbGRyZW4gJiZcclxuICAgICAgICAgICAgICAgIC8vICMyNzE1IHRoZSBwcmV2aW91cyBmcmFnbWVudCBjb3VsZCd2ZSBiZWVuIGEgQkFJTGVkIG9uZSBhcyBhIHJlc3VsdFxyXG4gICAgICAgICAgICAgICAgLy8gb2YgcmVuZGVyU2xvdCgpIHdpdGggbm8gdmFsaWQgY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIG4xLmR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgLy8gYSBzdGFibGUgZnJhZ21lbnQgKHRlbXBsYXRlIHJvb3Qgb3IgPHRlbXBsYXRlIHYtZm9yPikgZG9lc24ndCBuZWVkIHRvXHJcbiAgICAgICAgICAgICAgICAvLyBwYXRjaCBjaGlsZHJlbiBvcmRlciwgYnV0IGl0IG1heSBjb250YWluIGR5bmFtaWNDaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHBhdGNoQmxvY2tDaGlsZHJlbihuMS5keW5hbWljQ2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgY29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcGFyZW50Q29tcG9uZW50ICYmIHBhcmVudENvbXBvbmVudC50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAgIC8vICMyMDgwIGlmIHRoZSBzdGFibGUgZnJhZ21lbnQgaGFzIGEga2V5LCBpdCdzIGEgPHRlbXBsYXRlIHYtZm9yPiB0aGF0IG1heVxyXG4gICAgICAgICAgICAgICAgLy8gIGdldCBtb3ZlZCBhcm91bmQuIE1ha2Ugc3VyZSBhbGwgcm9vdCBsZXZlbCB2bm9kZXMgaW5oZXJpdCBlbC5cclxuICAgICAgICAgICAgICAgIC8vICMyMTM0IG9yIGlmIGl0J3MgYSBjb21wb25lbnQgcm9vdCwgaXQgbWF5IGFsc28gZ2V0IG1vdmVkIGFyb3VuZFxyXG4gICAgICAgICAgICAgICAgLy8gYXMgdGhlIGNvbXBvbmVudCBpcyBiZWluZyBtb3ZlZC5cclxuICAgICAgICAgICAgICAgIG4yLmtleSAhPSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHBhcmVudENvbXBvbmVudCAmJiBuMiA9PT0gcGFyZW50Q29tcG9uZW50LnN1YlRyZWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIsIHRydWUgLyogc2hhbGxvdyAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBrZXllZCAvIHVua2V5ZWQsIG9yIG1hbnVhbCBmcmFnbWVudHMuXHJcbiAgICAgICAgICAgICAgICAvLyBmb3Iga2V5ZWQgJiB1bmtleWVkLCBzaW5jZSB0aGV5IGFyZSBjb21waWxlciBnZW5lcmF0ZWQgZnJvbSB2LWZvcixcclxuICAgICAgICAgICAgICAgIC8vIGVhY2ggY2hpbGQgaXMgZ3VhcmFudGVlZCB0byBiZSBhIGJsb2NrIHNvIHRoZSBmcmFnbWVudCB3aWxsIG5ldmVyXHJcbiAgICAgICAgICAgICAgICAvLyBoYXZlIGR5bmFtaWNDaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHBhdGNoQ2hpbGRyZW4objEsIG4yLCBjb250YWluZXIsIGZyYWdtZW50RW5kQW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NDb21wb25lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgbjIuc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzO1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChuMi5zaGFwZUZsYWcgJiA1MTIgLyogQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi8pIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5jdHguYWN0aXZhdGUobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG1vdW50Q29tcG9uZW50KG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudChuMSwgbjIsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50Q29tcG9uZW50ID0gKGluaXRpYWxWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IChpbml0aWFsVk5vZGUuY29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UoaW5pdGlhbFZOb2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbnN0YW5jZS50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgcmVnaXN0ZXJITVIoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChpbml0aWFsVk5vZGUpO1xyXG4gICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBtb3VudGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbmplY3QgcmVuZGVyZXIgaW50ZXJuYWxzIGZvciBrZWVwQWxpdmVcclxuICAgICAgICBpZiAoaXNLZWVwQWxpdmUoaW5pdGlhbFZOb2RlKSkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5jdHgucmVuZGVyZXIgPSBpbnRlcm5hbHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHJlc29sdmUgcHJvcHMgYW5kIHNsb3RzIGZvciBzZXR1cCBjb250ZXh0XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBpbml0YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0dXBDb21wb25lbnQoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgaW5pdGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNldHVwKCkgaXMgYXN5bmMuIFRoaXMgY29tcG9uZW50IHJlbGllcyBvbiBhc3luYyBsb2dpYyB0byBiZSByZXNvbHZlZFxyXG4gICAgICAgIC8vIGJlZm9yZSBwcm9jZWVkaW5nXHJcbiAgICAgICAgaWYgKGluc3RhbmNlLmFzeW5jRGVwKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlICYmIHBhcmVudFN1c3BlbnNlLnJlZ2lzdGVyRGVwKGluc3RhbmNlLCBzZXR1cFJlbmRlckVmZmVjdCk7XHJcbiAgICAgICAgICAgIC8vIEdpdmUgaXQgYSBwbGFjZWhvbGRlciBpZiB0aGlzIGlzIG5vdCBoeWRyYXRpb25cclxuICAgICAgICAgICAgLy8gVE9ETyBoYW5kbGUgc2VsZi1kZWZpbmVkIGZhbGxiYWNrXHJcbiAgICAgICAgICAgIGlmICghaW5pdGlhbFZOb2RlLmVsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IChpbnN0YW5jZS5zdWJUcmVlID0gY3JlYXRlVk5vZGUoQ29tbWVudCkpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1lbnROb2RlKG51bGwsIHBsYWNlaG9sZGVyLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXR1cFJlbmRlckVmZmVjdChpbnN0YW5jZSwgaW5pdGlhbFZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYG1vdW50YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVwZGF0ZUNvbXBvbmVudCA9IChuMSwgbjIsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gKG4yLmNvbXBvbmVudCA9IG4xLmNvbXBvbmVudCk7XHJcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUNvbXBvbmVudChuMSwgbjIsIG9wdGltaXplZCkpIHtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlLmFzeW5jRGVwICYmXHJcbiAgICAgICAgICAgICAgICAhaW5zdGFuY2UuYXN5bmNSZXNvbHZlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gYXN5bmMgJiBzdGlsbCBwZW5kaW5nIC0ganVzdCB1cGRhdGUgcHJvcHMgYW5kIHNsb3RzXHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgY29tcG9uZW50J3MgcmVhY3RpdmUgZWZmZWN0IGZvciByZW5kZXIgaXNuJ3Qgc2V0LXVwIHlldFxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChuMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIoaW5zdGFuY2UsIG4yLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub3JtYWwgdXBkYXRlXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5uZXh0ID0gbjI7XHJcbiAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIHRoZSBjaGlsZCBjb21wb25lbnQgaXMgYWxzbyBxdWV1ZWQsIHJlbW92ZSBpdCB0byBhdm9pZFxyXG4gICAgICAgICAgICAgICAgLy8gZG91YmxlIHVwZGF0aW5nIHRoZSBzYW1lIGNoaWxkIGNvbXBvbmVudCBpbiB0aGUgc2FtZSBmbHVzaC5cclxuICAgICAgICAgICAgICAgIGludmFsaWRhdGVKb2IoaW5zdGFuY2UudXBkYXRlKTtcclxuICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlLnVwZGF0ZSBpcyB0aGUgcmVhY3RpdmUgZWZmZWN0LlxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG5vIHVwZGF0ZSBuZWVkZWQuIGp1c3QgY29weSBvdmVyIHByb3BlcnRpZXNcclxuICAgICAgICAgICAgbjIuY29tcG9uZW50ID0gbjEuY29tcG9uZW50O1xyXG4gICAgICAgICAgICBuMi5lbCA9IG4xLmVsO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS52bm9kZSA9IG4yO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBzZXR1cFJlbmRlckVmZmVjdCA9IChpbnN0YW5jZSwgaW5pdGlhbFZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRVcGRhdGVGbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGVsLCBwcm9wcyB9ID0gaW5pdGlhbFZOb2RlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBibSwgbSwgcGFyZW50IH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQXN5bmNXcmFwcGVyVk5vZGUgPSBpc0FzeW5jV3JhcHBlcihpbml0aWFsVk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlTW91bnQgaG9va1xyXG4gICAgICAgICAgICAgICAgaWYgKGJtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoYm0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25Wbm9kZUJlZm9yZU1vdW50XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXN5bmNXcmFwcGVyVk5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZUJlZm9yZU1vdW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudCwgaW5pdGlhbFZOb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsICYmIGh5ZHJhdGVOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdm5vZGUgaGFzIGFkb3B0ZWQgaG9zdCBub2RlIC0gcGVyZm9ybSBoeWRyYXRpb24gaW5zdGVhZCBvZiBtb3VudC5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoeWRyYXRlU3ViVHJlZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3ViVHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgaHlkcmF0ZWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh5ZHJhdGVOb2RlKGVsLCBpbnN0YW5jZS5zdWJUcmVlLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgaHlkcmF0ZWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBc3luY1dyYXBwZXJWTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVk5vZGUudHlwZS5fX2FzeW5jTG9hZGVyKCkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90ZTogd2UgYXJlIG1vdmluZyB0aGUgcmVuZGVyIGNhbGwgaW50byBhbiBhc3luYyBjYWxsYmFjayxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggbWVhbnMgaXQgd29uJ3QgdHJhY2sgZGVwZW5kZW5jaWVzIC0gYnV0IGl0J3Mgb2sgYmVjYXVzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHNlcnZlci1yZW5kZXJlZCBhc3luYyB3cmFwcGVyIGlzIGFscmVhZHkgaW4gcmVzb2x2ZWQgc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGl0IHdpbGwgbmV2ZXIgbmVlZCB0byBjaGFuZ2UuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+ICFpbnN0YW5jZS5pc1VubW91bnRlZCAmJiBoeWRyYXRlU3ViVHJlZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh5ZHJhdGVTdWJUcmVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViVHJlZSA9IChpbnN0YW5jZS5zdWJUcmVlID0gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHBhdGNoYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIHN1YlRyZWUsIGNvbnRhaW5lciwgYW5jaG9yLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsVk5vZGUuZWwgPSBzdWJUcmVlLmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gbW91bnRlZCBob29rXHJcbiAgICAgICAgICAgICAgICBpZiAobSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChtLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvblZub2RlTW91bnRlZFxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FzeW5jV3JhcHBlclZOb2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlZEluaXRpYWxWTm9kZSA9IGluaXRpYWxWTm9kZTtcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4gaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBzY29wZWRJbml0aWFsVk5vZGUpLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBhY3RpdmF0ZWQgaG9vayBmb3Iga2VlcC1hbGl2ZSByb290cy5cclxuICAgICAgICAgICAgICAgIC8vICMxNzQyIGFjdGl2YXRlZCBob29rIG11c3QgYmUgYWNjZXNzZWQgYWZ0ZXIgZmlyc3QgcmVuZGVyXHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgaG9vayBtYXkgYmUgaW5qZWN0ZWQgYnkgYSBjaGlsZCBrZWVwLWFsaXZlXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbFZOb2RlLnNoYXBlRmxhZyAmIDI1NiAvKiBDT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5hICYmIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChpbnN0YW5jZS5hLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vICMyNDU4OiBkZWZlcmVuY2UgbW91bnQtb25seSBvYmplY3QgcGFyYW1ldGVycyB0byBwcmV2ZW50IG1lbWxlYWtzXHJcbiAgICAgICAgICAgICAgICBpbml0aWFsVk5vZGUgPSBjb250YWluZXIgPSBhbmNob3IgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlQ29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRyaWdnZXJlZCBieSBtdXRhdGlvbiBvZiBjb21wb25lbnQncyBvd24gc3RhdGUgKG5leHQ6IG51bGwpXHJcbiAgICAgICAgICAgICAgICAvLyBPUiBwYXJlbnQgY2FsbGluZyBwcm9jZXNzQ29tcG9uZW50IChuZXh0OiBWTm9kZSlcclxuICAgICAgICAgICAgICAgIGxldCB7IG5leHQsIGJ1LCB1LCBwYXJlbnQsIHZub2RlIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5OZXh0ID0gbmV4dDtcclxuICAgICAgICAgICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KG5leHQgfHwgaW5zdGFuY2Uudm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgY29tcG9uZW50IGVmZmVjdCByZWN1cnNpb24gZHVyaW5nIHByZS1saWZlY3ljbGUgaG9va3MuXHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQuZWwgPSB2bm9kZS5lbDtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIoaW5zdGFuY2UsIG5leHQsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gdm5vZGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBiZWZvcmVVcGRhdGUgaG9va1xyXG4gICAgICAgICAgICAgICAgaWYgKGJ1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoYnUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25Wbm9kZUJlZm9yZVVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBuZXh0LnByb3BzICYmIG5leHQucHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIG5leHQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgLy8gcmVuZGVyXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0VHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZUcmVlID0gaW5zdGFuY2Uuc3ViVHJlZTtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnN1YlRyZWUgPSBuZXh0VHJlZTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGF0Y2gocHJldlRyZWUsIG5leHRUcmVlLCBcclxuICAgICAgICAgICAgICAgIC8vIHBhcmVudCBtYXkgaGF2ZSBjaGFuZ2VkIGlmIGl0J3MgaW4gYSB0ZWxlcG9ydFxyXG4gICAgICAgICAgICAgICAgaG9zdFBhcmVudE5vZGUocHJldlRyZWUuZWwpLCBcclxuICAgICAgICAgICAgICAgIC8vIGFuY2hvciBtYXkgaGF2ZSBjaGFuZ2VkIGlmIGl0J3MgaW4gYSBmcmFnbWVudFxyXG4gICAgICAgICAgICAgICAgZ2V0TmV4dEhvc3ROb2RlKHByZXZUcmVlKSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHBhdGNoYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuZXh0LmVsID0gbmV4dFRyZWUuZWw7XHJcbiAgICAgICAgICAgICAgICBpZiAob3JpZ2luTmV4dCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNlbGYtdHJpZ2dlcmVkIHVwZGF0ZS4gSW4gY2FzZSBvZiBIT0MsIHVwZGF0ZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdm5vZGUgZWwuIEhPQyBpcyBpbmRpY2F0ZWQgYnkgcGFyZW50IGluc3RhbmNlJ3Mgc3ViVHJlZSBwb2ludGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIGNoaWxkIGNvbXBvbmVudCdzIHZub2RlXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSE9DSG9zdEVsKGluc3RhbmNlLCBuZXh0VHJlZS5lbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGVkIGhvb2tcclxuICAgICAgICAgICAgICAgIGlmICh1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KHUsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVVcGRhdGVkXHJcbiAgICAgICAgICAgICAgICBpZiAoKHZub2RlSG9vayA9IG5leHQucHJvcHMgJiYgbmV4dC5wcm9wcy5vblZub2RlVXBkYXRlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4gaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBuZXh0LCB2bm9kZSksIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRVcGRhdGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBjcmVhdGUgcmVhY3RpdmUgZWZmZWN0IGZvciByZW5kZXJpbmdcclxuICAgICAgICBjb25zdCBlZmZlY3QgPSAoaW5zdGFuY2UuZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGNvbXBvbmVudFVwZGF0ZUZuLCAoKSA9PiBxdWV1ZUpvYihpbnN0YW5jZS51cGRhdGUpLCBpbnN0YW5jZS5zY29wZSAvLyB0cmFjayBpdCBpbiBjb21wb25lbnQncyBlZmZlY3Qgc2NvcGVcclxuICAgICAgICApKTtcclxuICAgICAgICBjb25zdCB1cGRhdGUgPSAoaW5zdGFuY2UudXBkYXRlID0gZWZmZWN0LnJ1bi5iaW5kKGVmZmVjdCkpO1xyXG4gICAgICAgIHVwZGF0ZS5pZCA9IGluc3RhbmNlLnVpZDtcclxuICAgICAgICAvLyBhbGxvd1JlY3Vyc2VcclxuICAgICAgICAvLyAjMTgwMSwgIzIwNDMgY29tcG9uZW50IHJlbmRlciBlZmZlY3RzIHNob3VsZCBhbGxvdyByZWN1cnNpdmUgdXBkYXRlc1xyXG4gICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIHRydWUpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgZWZmZWN0Lm9uVHJhY2sgPSBpbnN0YW5jZS5ydGNcclxuICAgICAgICAgICAgICAgID8gZSA9PiBpbnZva2VBcnJheUZucyhpbnN0YW5jZS5ydGMsIGUpXHJcbiAgICAgICAgICAgICAgICA6IHZvaWQgMDtcclxuICAgICAgICAgICAgZWZmZWN0Lm9uVHJpZ2dlciA9IGluc3RhbmNlLnJ0Z1xyXG4gICAgICAgICAgICAgICAgPyBlID0+IGludm9rZUFycmF5Rm5zKGluc3RhbmNlLnJ0ZywgZSlcclxuICAgICAgICAgICAgICAgIDogdm9pZCAwO1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIChmb3Igc2NoZWR1bGVyKVxyXG4gICAgICAgICAgICB1cGRhdGUub3duZXJJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB1cGRhdGUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIgPSAoaW5zdGFuY2UsIG5leHRWTm9kZSwgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgbmV4dFZOb2RlLmNvbXBvbmVudCA9IGluc3RhbmNlO1xyXG4gICAgICAgIGNvbnN0IHByZXZQcm9wcyA9IGluc3RhbmNlLnZub2RlLnByb3BzO1xyXG4gICAgICAgIGluc3RhbmNlLnZub2RlID0gbmV4dFZOb2RlO1xyXG4gICAgICAgIGluc3RhbmNlLm5leHQgPSBudWxsO1xyXG4gICAgICAgIHVwZGF0ZVByb3BzKGluc3RhbmNlLCBuZXh0Vk5vZGUucHJvcHMsIHByZXZQcm9wcywgb3B0aW1pemVkKTtcclxuICAgICAgICB1cGRhdGVTbG90cyhpbnN0YW5jZSwgbmV4dFZOb2RlLmNoaWxkcmVuLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICAvLyBwcm9wcyB1cGRhdGUgbWF5IGhhdmUgdHJpZ2dlcmVkIHByZS1mbHVzaCB3YXRjaGVycy5cclxuICAgICAgICAvLyBmbHVzaCB0aGVtIGJlZm9yZSB0aGUgcmVuZGVyIHVwZGF0ZS5cclxuICAgICAgICBmbHVzaFByZUZsdXNoQ2JzKHVuZGVmaW5lZCwgaW5zdGFuY2UudXBkYXRlKTtcclxuICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hDaGlsZHJlbiA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGMxID0gbjEgJiYgbjEuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgcHJldlNoYXBlRmxhZyA9IG4xID8gbjEuc2hhcGVGbGFnIDogMDtcclxuICAgICAgICBjb25zdCBjMiA9IG4yLmNoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IHsgcGF0Y2hGbGFnLCBzaGFwZUZsYWcgfSA9IG4yO1xyXG4gICAgICAgIC8vIGZhc3QgcGF0aFxyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiAxMjggLyogS0VZRURfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgZWl0aGVyIGZ1bGx5LWtleWVkIG9yIG1peGVkIChzb21lIGtleWVkIHNvbWUgbm90KVxyXG4gICAgICAgICAgICAgICAgLy8gcHJlc2VuY2Ugb2YgcGF0Y2hGbGFnIG1lYW5zIGNoaWxkcmVuIGFyZSBndWFyYW50ZWVkIHRvIGJlIGFycmF5c1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hLZXllZENoaWxkcmVuKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocGF0Y2hGbGFnICYgMjU2IC8qIFVOS0VZRURfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHVua2V5ZWRcclxuICAgICAgICAgICAgICAgIHBhdGNoVW5rZXllZENoaWxkcmVuKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hpbGRyZW4gaGFzIDMgcG9zc2liaWxpdGllczogdGV4dCwgYXJyYXkgb3Igbm8gY2hpbGRyZW4uXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDggLyogVEVYVF9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAvLyB0ZXh0IGNoaWxkcmVuIGZhc3QgcGF0aFxyXG4gICAgICAgICAgICBpZiAocHJldlNoYXBlRmxhZyAmIDE2IC8qIEFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjMiAhPT0gYzEpIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChjb250YWluZXIsIGMyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHByZXZTaGFwZUZsYWcgJiAxNiAvKiBBUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gcHJldiBjaGlsZHJlbiB3YXMgYXJyYXlcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBBUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHR3byBhcnJheXMsIGNhbm5vdCBhc3N1bWUgYW55dGhpbmcsIGRvIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoS2V5ZWRDaGlsZHJlbihjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbm8gbmV3IGNoaWxkcmVuLCBqdXN0IHVubW91bnQgb2xkXHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGMxLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHByZXYgY2hpbGRyZW4gd2FzIHRleHQgT1IgbnVsbFxyXG4gICAgICAgICAgICAgICAgLy8gbmV3IGNoaWxkcmVuIGlzIGFycmF5IE9SIG51bGxcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2U2hhcGVGbGFnICYgOCAvKiBURVhUX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFNldEVsZW1lbnRUZXh0KGNvbnRhaW5lciwgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gbW91bnQgbmV3IGlmIGFycmF5XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudENoaWxkcmVuKGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaFVua2V5ZWRDaGlsZHJlbiA9IChjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjMSA9IGMxIHx8IEVNUFRZX0FSUjtcclxuICAgICAgICBjMiA9IGMyIHx8IEVNUFRZX0FSUjtcclxuICAgICAgICBjb25zdCBvbGRMZW5ndGggPSBjMS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgbmV3TGVuZ3RoID0gYzIubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGNvbW1vbkxlbmd0aCA9IE1hdGgubWluKG9sZExlbmd0aCwgbmV3TGVuZ3RoKTtcclxuICAgICAgICBsZXQgaTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29tbW9uTGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpO1xyXG4gICAgICAgICAgICBwYXRjaChjMVtpXSwgbmV4dENoaWxkLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbGRMZW5ndGggPiBuZXdMZW5ndGgpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIG9sZFxyXG4gICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUsIGZhbHNlLCBjb21tb25MZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbW91bnQgbmV3XHJcbiAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4oYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGNvbW1vbkxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIGNhbiBiZSBhbGwta2V5ZWQgb3IgbWl4ZWRcclxuICAgIGNvbnN0IHBhdGNoS2V5ZWRDaGlsZHJlbiA9IChjMSwgYzIsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgY29uc3QgbDIgPSBjMi5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGUxID0gYzEubGVuZ3RoIC0gMTsgLy8gcHJldiBlbmRpbmcgaW5kZXhcclxuICAgICAgICBsZXQgZTIgPSBsMiAtIDE7IC8vIG5leHQgZW5kaW5nIGluZGV4XHJcbiAgICAgICAgLy8gMS4gc3luYyBmcm9tIHN0YXJ0XHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIChhIGIpIGQgZVxyXG4gICAgICAgIHdoaWxlIChpIDw9IGUxICYmIGkgPD0gZTIpIHtcclxuICAgICAgICAgICAgY29uc3QgbjEgPSBjMVtpXTtcclxuICAgICAgICAgICAgY29uc3QgbjIgPSAoYzJbaV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSk7XHJcbiAgICAgICAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2gobjEsIG4yLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDIuIHN5bmMgZnJvbSBlbmRcclxuICAgICAgICAvLyBhIChiIGMpXHJcbiAgICAgICAgLy8gZCBlIChiIGMpXHJcbiAgICAgICAgd2hpbGUgKGkgPD0gZTEgJiYgaSA8PSBlMikge1xyXG4gICAgICAgICAgICBjb25zdCBuMSA9IGMxW2UxXTtcclxuICAgICAgICAgICAgY29uc3QgbjIgPSAoYzJbZTJdID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2UyXSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoYzJbZTJdKSk7XHJcbiAgICAgICAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2gobjEsIG4yLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlMS0tO1xyXG4gICAgICAgICAgICBlMi0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAzLiBjb21tb24gc2VxdWVuY2UgKyBtb3VudFxyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIGkgPSAyLCBlMSA9IDEsIGUyID0gMlxyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gYyAoYSBiKVxyXG4gICAgICAgIC8vIGkgPSAwLCBlMSA9IC0xLCBlMiA9IDBcclxuICAgICAgICBpZiAoaSA+IGUxKSB7XHJcbiAgICAgICAgICAgIGlmIChpIDw9IGUyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UG9zID0gZTIgKyAxO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gbmV4dFBvcyA8IGwyID8gYzJbbmV4dFBvc10uZWwgOiBwYXJlbnRBbmNob3I7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA8PSBlMikge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIChjMltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSksIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyA0LiBjb21tb24gc2VxdWVuY2UgKyB1bm1vdW50XHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gaSA9IDIsIGUxID0gMiwgZTIgPSAxXHJcbiAgICAgICAgLy8gYSAoYiBjKVxyXG4gICAgICAgIC8vIChiIGMpXHJcbiAgICAgICAgLy8gaSA9IDAsIGUxID0gMCwgZTIgPSAtMVxyXG4gICAgICAgIGVsc2UgaWYgKGkgPiBlMikge1xyXG4gICAgICAgICAgICB3aGlsZSAoaSA8PSBlMSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChjMVtpXSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gNS4gdW5rbm93biBzZXF1ZW5jZVxyXG4gICAgICAgIC8vIFtpIC4uLiBlMSArIDFdOiBhIGIgW2MgZCBlXSBmIGdcclxuICAgICAgICAvLyBbaSAuLi4gZTIgKyAxXTogYSBiIFtlIGQgYyBoXSBmIGdcclxuICAgICAgICAvLyBpID0gMiwgZTEgPSA0LCBlMiA9IDVcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgczEgPSBpOyAvLyBwcmV2IHN0YXJ0aW5nIGluZGV4XHJcbiAgICAgICAgICAgIGNvbnN0IHMyID0gaTsgLy8gbmV4dCBzdGFydGluZyBpbmRleFxyXG4gICAgICAgICAgICAvLyA1LjEgYnVpbGQga2V5OmluZGV4IG1hcCBmb3IgbmV3Q2hpbGRyZW5cclxuICAgICAgICAgICAgY29uc3Qga2V5VG9OZXdJbmRleE1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgZm9yIChpID0gczI7IGkgPD0gZTI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltpXSlcclxuICAgICAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dENoaWxkLmtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXlUb05ld0luZGV4TWFwLmhhcyhuZXh0Q2hpbGQua2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBEdXBsaWNhdGUga2V5cyBmb3VuZCBkdXJpbmcgdXBkYXRlOmAsIEpTT04uc3RyaW5naWZ5KG5leHRDaGlsZC5rZXkpLCBgTWFrZSBzdXJlIGtleXMgYXJlIHVuaXF1ZS5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAga2V5VG9OZXdJbmRleE1hcC5zZXQobmV4dENoaWxkLmtleSwgaSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gNS4yIGxvb3AgdGhyb3VnaCBvbGQgY2hpbGRyZW4gbGVmdCB0byBiZSBwYXRjaGVkIGFuZCB0cnkgdG8gcGF0Y2hcclxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgbm9kZXMgJiByZW1vdmUgbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnRcclxuICAgICAgICAgICAgbGV0IGo7XHJcbiAgICAgICAgICAgIGxldCBwYXRjaGVkID0gMDtcclxuICAgICAgICAgICAgY29uc3QgdG9CZVBhdGNoZWQgPSBlMiAtIHMyICsgMTtcclxuICAgICAgICAgICAgbGV0IG1vdmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHVzZWQgdG8gdHJhY2sgd2hldGhlciBhbnkgbm9kZSBoYXMgbW92ZWRcclxuICAgICAgICAgICAgbGV0IG1heE5ld0luZGV4U29GYXIgPSAwO1xyXG4gICAgICAgICAgICAvLyB3b3JrcyBhcyBNYXA8bmV3SW5kZXgsIG9sZEluZGV4PlxyXG4gICAgICAgICAgICAvLyBOb3RlIHRoYXQgb2xkSW5kZXggaXMgb2Zmc2V0IGJ5ICsxXHJcbiAgICAgICAgICAgIC8vIGFuZCBvbGRJbmRleCA9IDAgaXMgYSBzcGVjaWFsIHZhbHVlIGluZGljYXRpbmcgdGhlIG5ldyBub2RlIGhhc1xyXG4gICAgICAgICAgICAvLyBubyBjb3JyZXNwb25kaW5nIG9sZCBub2RlLlxyXG4gICAgICAgICAgICAvLyB1c2VkIGZvciBkZXRlcm1pbmluZyBsb25nZXN0IHN0YWJsZSBzdWJzZXF1ZW5jZVxyXG4gICAgICAgICAgICBjb25zdCBuZXdJbmRleFRvT2xkSW5kZXhNYXAgPSBuZXcgQXJyYXkodG9CZVBhdGNoZWQpO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9CZVBhdGNoZWQ7IGkrKylcclxuICAgICAgICAgICAgICAgIG5ld0luZGV4VG9PbGRJbmRleE1hcFtpXSA9IDA7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IHMxOyBpIDw9IGUxOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZDaGlsZCA9IGMxW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoZWQgPj0gdG9CZVBhdGNoZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbGwgbmV3IGNoaWxkcmVuIGhhdmUgYmVlbiBwYXRjaGVkIHNvIHRoaXMgY2FuIG9ubHkgYmUgYSByZW1vdmFsXHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudChwcmV2Q2hpbGQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld0luZGV4O1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZDaGlsZC5rZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0luZGV4ID0ga2V5VG9OZXdJbmRleE1hcC5nZXQocHJldkNoaWxkLmtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBrZXktbGVzcyBub2RlLCB0cnkgdG8gbG9jYXRlIGEga2V5LWxlc3Mgbm9kZSBvZiB0aGUgc2FtZSB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gczI7IGogPD0gZTI7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXhUb09sZEluZGV4TWFwW2ogLSBzMl0gPT09IDAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2FtZVZOb2RlVHlwZShwcmV2Q2hpbGQsIGMyW2pdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW5kZXggPSBqO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQocHJldkNoaWxkLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0luZGV4VG9PbGRJbmRleE1hcFtuZXdJbmRleCAtIHMyXSA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleCA+PSBtYXhOZXdJbmRleFNvRmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heE5ld0luZGV4U29GYXIgPSBuZXdJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2gocHJldkNoaWxkLCBjMltuZXdJbmRleF0sIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaGVkKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gNS4zIG1vdmUgYW5kIG1vdW50XHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGxvbmdlc3Qgc3RhYmxlIHN1YnNlcXVlbmNlIG9ubHkgd2hlbiBub2RlcyBoYXZlIG1vdmVkXHJcbiAgICAgICAgICAgIGNvbnN0IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlID0gbW92ZWRcclxuICAgICAgICAgICAgICAgID8gZ2V0U2VxdWVuY2UobmV3SW5kZXhUb09sZEluZGV4TWFwKVxyXG4gICAgICAgICAgICAgICAgOiBFTVBUWV9BUlI7XHJcbiAgICAgICAgICAgIGogPSBpbmNyZWFzaW5nTmV3SW5kZXhTZXF1ZW5jZS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAvLyBsb29waW5nIGJhY2t3YXJkcyBzbyB0aGF0IHdlIGNhbiB1c2UgbGFzdCBwYXRjaGVkIG5vZGUgYXMgYW5jaG9yXHJcbiAgICAgICAgICAgIGZvciAoaSA9IHRvQmVQYXRjaGVkIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IHMyICsgaTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDaGlsZCA9IGMyW25leHRJbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNob3IgPSBuZXh0SW5kZXggKyAxIDwgbDIgPyBjMltuZXh0SW5kZXggKyAxXS5lbCA6IHBhcmVudEFuY2hvcjtcclxuICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleFRvT2xkSW5kZXhNYXBbaV0gPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3VudCBuZXdcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBuZXh0Q2hpbGQsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW92ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGlmOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHN0YWJsZSBzdWJzZXF1ZW5jZSAoZS5nLiBhIHJldmVyc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT1IgY3VycmVudCBub2RlIGlzIG5vdCBhbW9uZyB0aGUgc3RhYmxlIHNlcXVlbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGogPCAwIHx8IGkgIT09IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlW2pdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUobmV4dENoaWxkLCBjb250YWluZXIsIGFuY2hvciwgMiAvKiBSRU9SREVSICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGotLTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW92ZSA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlLCBwYXJlbnRTdXNwZW5zZSA9IG51bGwpID0+IHtcclxuICAgICAgICBjb25zdCB7IGVsLCB0eXBlLCB0cmFuc2l0aW9uLCBjaGlsZHJlbiwgc2hhcGVGbGFnIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNiAvKiBDT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgbW92ZSh2bm9kZS5jb21wb25lbnQuc3ViVHJlZSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgIHZub2RlLnN1c3BlbnNlLm1vdmUoY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNjQgLyogVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgdHlwZS5tb3ZlKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgaW50ZXJuYWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBtb3ZlKGNoaWxkcmVuW2ldLCBjb250YWluZXIsIGFuY2hvciwgbW92ZVR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQodm5vZGUuYW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IFN0YXRpYykge1xyXG4gICAgICAgICAgICBtb3ZlU3RhdGljTm9kZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNpbmdsZSBub2Rlc1xyXG4gICAgICAgIGNvbnN0IG5lZWRUcmFuc2l0aW9uID0gbW92ZVR5cGUgIT09IDIgLyogUkVPUkRFUiAqLyAmJlxyXG4gICAgICAgICAgICBzaGFwZUZsYWcgJiAxIC8qIEVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjtcclxuICAgICAgICBpZiAobmVlZFRyYW5zaXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKG1vdmVUeXBlID09PSAwIC8qIEVOVEVSICovKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmJlZm9yZUVudGVyKGVsKTtcclxuICAgICAgICAgICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB0cmFuc2l0aW9uLmVudGVyKGVsKSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBsZWF2ZSwgZGVsYXlMZWF2ZSwgYWZ0ZXJMZWF2ZSB9ID0gdHJhbnNpdGlvbjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZSA9ICgpID0+IGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBlcmZvcm1MZWF2ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZWF2ZShlbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJMZWF2ZSAmJiBhZnRlckxlYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5TGVhdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxheUxlYXZlKGVsLCByZW1vdmUsIHBlcmZvcm1MZWF2ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwZXJmb3JtTGVhdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB1bm1vdW50ID0gKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSA9IGZhbHNlLCBvcHRpbWl6ZWQgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHJlZiwgY2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgc2hhcGVGbGFnLCBwYXRjaEZsYWcsIGRpcnMgfSA9IHZub2RlO1xyXG4gICAgICAgIC8vIHVuc2V0IHJlZlxyXG4gICAgICAgIGlmIChyZWYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBzZXRSZWYocmVmLCBudWxsLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMjU2IC8qIENPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLykge1xyXG4gICAgICAgICAgICBwYXJlbnRDb21wb25lbnQuY3R4LmRlYWN0aXZhdGUodm5vZGUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNob3VsZEludm9rZURpcnMgPSBzaGFwZUZsYWcgJiAxIC8qIEVMRU1FTlQgKi8gJiYgZGlycztcclxuICAgICAgICBjb25zdCBzaG91bGRJbnZva2VWbm9kZUhvb2sgPSAhaXNBc3luY1dyYXBwZXIodm5vZGUpO1xyXG4gICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgaWYgKHNob3VsZEludm9rZVZub2RlSG9vayAmJlxyXG4gICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZUJlZm9yZVVubW91bnQpKSB7XHJcbiAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNiAvKiBDT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgdW5tb3VudENvbXBvbmVudCh2bm9kZS5jb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5zdXNwZW5zZS51bm1vdW50KHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNob3VsZEludm9rZURpcnMpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2JlZm9yZVVubW91bnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgNjQgLyogVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLnR5cGUucmVtb3ZlKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBvcHRpbWl6ZWQsIGludGVybmFscywgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGR5bmFtaWNDaGlsZHJlbiAmJlxyXG4gICAgICAgICAgICAgICAgLy8gIzExNTM6IGZhc3QgcGF0aCBzaG91bGQgbm90IGJlIHRha2VuIGZvciBub24tc3RhYmxlICh2LWZvcikgZnJhZ21lbnRzXHJcbiAgICAgICAgICAgICAgICAodHlwZSAhPT0gRnJhZ21lbnQgfHxcclxuICAgICAgICAgICAgICAgICAgICAocGF0Y2hGbGFnID4gMCAmJiBwYXRjaEZsYWcgJiA2NCAvKiBTVEFCTEVfRlJBR01FTlQgKi8pKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZmFzdCBwYXRoIGZvciBibG9jayBub2Rlczogb25seSBuZWVkIHRvIHVubW91bnQgZHluYW1pYyBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihkeW5hbWljQ2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGZhbHNlLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgodHlwZSA9PT0gRnJhZ21lbnQgJiZcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyAmXHJcbiAgICAgICAgICAgICAgICAgICAgKDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLyB8IDI1NiAvKiBVTktFWUVEX0ZSQUdNRU5UICovKSkgfHxcclxuICAgICAgICAgICAgICAgICghb3B0aW1pemVkICYmIHNoYXBlRmxhZyAmIDE2IC8qIEFSUkFZX0NISUxEUkVOICovKSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZG9SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZSh2bm9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChzaG91bGRJbnZva2VWbm9kZUhvb2sgJiZcclxuICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVVbm1vdW50ZWQpKSB8fFxyXG4gICAgICAgICAgICBzaG91bGRJbnZva2VEaXJzKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUhvb2sgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICBzaG91bGRJbnZva2VEaXJzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAndW5tb3VudGVkJyk7XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVtb3ZlID0gdm5vZGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgZWwsIGFuY2hvciwgdHJhbnNpdGlvbiB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgIHJlbW92ZUZyYWdtZW50KGVsLCBhbmNob3IpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSBTdGF0aWMpIHtcclxuICAgICAgICAgICAgcmVtb3ZlU3RhdGljTm9kZSh2bm9kZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGVyZm9ybVJlbW92ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShlbCk7XHJcbiAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uICYmICF0cmFuc2l0aW9uLnBlcnNpc3RlZCAmJiB0cmFuc2l0aW9uLmFmdGVyTGVhdmUpIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMSAvKiBFTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24gJiZcclxuICAgICAgICAgICAgIXRyYW5zaXRpb24ucGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbGVhdmUsIGRlbGF5TGVhdmUgfSA9IHRyYW5zaXRpb247XHJcbiAgICAgICAgICAgIGNvbnN0IHBlcmZvcm1MZWF2ZSA9ICgpID0+IGxlYXZlKGVsLCBwZXJmb3JtUmVtb3ZlKTtcclxuICAgICAgICAgICAgaWYgKGRlbGF5TGVhdmUpIHtcclxuICAgICAgICAgICAgICAgIGRlbGF5TGVhdmUodm5vZGUuZWwsIHBlcmZvcm1SZW1vdmUsIHBlcmZvcm1MZWF2ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwZXJmb3JtTGVhdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGVyZm9ybVJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCByZW1vdmVGcmFnbWVudCA9IChjdXIsIGVuZCkgPT4ge1xyXG4gICAgICAgIC8vIEZvciBmcmFnbWVudHMsIGRpcmVjdGx5IHJlbW92ZSBhbGwgY29udGFpbmVkIERPTSBub2Rlcy5cclxuICAgICAgICAvLyAoZnJhZ21lbnQgY2hpbGQgbm9kZXMgY2Fubm90IGhhdmUgdHJhbnNpdGlvbilcclxuICAgICAgICBsZXQgbmV4dDtcclxuICAgICAgICB3aGlsZSAoY3VyICE9PSBlbmQpIHtcclxuICAgICAgICAgICAgbmV4dCA9IGhvc3ROZXh0U2libGluZyhjdXIpO1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKGN1cik7XHJcbiAgICAgICAgICAgIGN1ciA9IG5leHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhvc3RSZW1vdmUoZW5kKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB1bm1vdW50Q29tcG9uZW50ID0gKGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpID0+IHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGluc3RhbmNlLnR5cGUuX19obXJJZCkge1xyXG4gICAgICAgICAgICB1bnJlZ2lzdGVySE1SKGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBidW0sIHNjb3BlLCB1cGRhdGUsIHN1YlRyZWUsIHVtIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAvLyBiZWZvcmVVbm1vdW50IGhvb2tcclxuICAgICAgICBpZiAoYnVtKSB7XHJcbiAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGJ1bSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHN0b3AgZWZmZWN0cyBpbiBjb21wb25lbnQgc2NvcGVcclxuICAgICAgICBzY29wZS5zdG9wKCk7XHJcbiAgICAgICAgLy8gdXBkYXRlIG1heSBiZSBudWxsIGlmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBiZWZvcmUgaXRzIGFzeW5jXHJcbiAgICAgICAgLy8gc2V0dXAgaGFzIHJlc29sdmVkLlxyXG4gICAgICAgIGlmICh1cGRhdGUpIHtcclxuICAgICAgICAgICAgLy8gc28gdGhhdCBzY2hlZHVsZXIgd2lsbCBubyBsb25nZXIgaW52b2tlIGl0XHJcbiAgICAgICAgICAgIHVwZGF0ZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdW5tb3VudChzdWJUcmVlLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdW5tb3VudGVkIGhvb2tcclxuICAgICAgICBpZiAodW0pIHtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KHVtLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmlzVW5tb3VudGVkID0gdHJ1ZTtcclxuICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgLy8gQSBjb21wb25lbnQgd2l0aCBhc3luYyBkZXAgaW5zaWRlIGEgcGVuZGluZyBzdXNwZW5zZSBpcyB1bm1vdW50ZWQgYmVmb3JlXHJcbiAgICAgICAgLy8gaXRzIGFzeW5jIGRlcCByZXNvbHZlcy4gVGhpcyBzaG91bGQgcmVtb3ZlIHRoZSBkZXAgZnJvbSB0aGUgc3VzcGVuc2UsIGFuZFxyXG4gICAgICAgIC8vIGNhdXNlIHRoZSBzdXNwZW5zZSB0byByZXNvbHZlIGltbWVkaWF0ZWx5IGlmIHRoYXQgd2FzIHRoZSBsYXN0IGRlcC5cclxuICAgICAgICBpZiAocGFyZW50U3VzcGVuc2UgJiZcclxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UucGVuZGluZ0JyYW5jaCAmJlxyXG4gICAgICAgICAgICAhcGFyZW50U3VzcGVuc2UuaXNVbm1vdW50ZWQgJiZcclxuICAgICAgICAgICAgaW5zdGFuY2UuYXN5bmNEZXAgJiZcclxuICAgICAgICAgICAgIWluc3RhbmNlLmFzeW5jUmVzb2x2ZWQgJiZcclxuICAgICAgICAgICAgaW5zdGFuY2Uuc3VzcGVuc2VJZCA9PT0gcGFyZW50U3VzcGVuc2UucGVuZGluZ0lkKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLmRlcHMtLTtcclxuICAgICAgICAgICAgaWYgKHBhcmVudFN1c3BlbnNlLmRlcHMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudFJlbW92ZWQoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB1bm1vdW50Q2hpbGRyZW4gPSAoY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlID0gZmFsc2UsIG9wdGltaXplZCA9IGZhbHNlLCBzdGFydCA9IDApID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB1bm1vdW50KGNoaWxkcmVuW2ldLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSwgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgZ2V0TmV4dEhvc3ROb2RlID0gdm5vZGUgPT4ge1xyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiA2IC8qIENPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0TmV4dEhvc3ROb2RlKHZub2RlLmNvbXBvbmVudC5zdWJUcmVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gdm5vZGUuc3VzcGVuc2UubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaG9zdE5leHRTaWJsaW5nKCh2bm9kZS5hbmNob3IgfHwgdm5vZGUuZWwpKTtcclxuICAgIH07XHJcbiAgICBjb25zdCByZW5kZXIgPSAodm5vZGUsIGNvbnRhaW5lciwgaXNTVkcpID0+IHtcclxuICAgICAgICBpZiAodm5vZGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoY29udGFpbmVyLl92bm9kZSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChjb250YWluZXIuX3Zub2RlLCBudWxsLCBudWxsLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGF0Y2goY29udGFpbmVyLl92bm9kZSB8fCBudWxsLCB2bm9kZSwgY29udGFpbmVyLCBudWxsLCBudWxsLCBudWxsLCBpc1NWRyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XHJcbiAgICAgICAgY29udGFpbmVyLl92bm9kZSA9IHZub2RlO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGludGVybmFscyA9IHtcclxuICAgICAgICBwOiBwYXRjaCxcclxuICAgICAgICB1bTogdW5tb3VudCxcclxuICAgICAgICBtOiBtb3ZlLFxyXG4gICAgICAgIHI6IHJlbW92ZSxcclxuICAgICAgICBtdDogbW91bnRDb21wb25lbnQsXHJcbiAgICAgICAgbWM6IG1vdW50Q2hpbGRyZW4sXHJcbiAgICAgICAgcGM6IHBhdGNoQ2hpbGRyZW4sXHJcbiAgICAgICAgcGJjOiBwYXRjaEJsb2NrQ2hpbGRyZW4sXHJcbiAgICAgICAgbjogZ2V0TmV4dEhvc3ROb2RlLFxyXG4gICAgICAgIG86IG9wdGlvbnNcclxuICAgIH07XHJcbiAgICBsZXQgaHlkcmF0ZTtcclxuICAgIGxldCBoeWRyYXRlTm9kZTtcclxuICAgIGlmIChjcmVhdGVIeWRyYXRpb25GbnMpIHtcclxuICAgICAgICBbaHlkcmF0ZSwgaHlkcmF0ZU5vZGVdID0gY3JlYXRlSHlkcmF0aW9uRm5zKGludGVybmFscyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlbmRlcixcclxuICAgICAgICBoeWRyYXRlLFxyXG4gICAgICAgIGNyZWF0ZUFwcDogY3JlYXRlQXBwQVBJKHJlbmRlciwgaHlkcmF0ZSlcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gdG9nZ2xlUmVjdXJzZSh7IGVmZmVjdCwgdXBkYXRlIH0sIGFsbG93ZWQpIHtcclxuICAgIGVmZmVjdC5hbGxvd1JlY3Vyc2UgPSB1cGRhdGUuYWxsb3dSZWN1cnNlID0gYWxsb3dlZDtcclxufVxyXG4vKipcclxuICogIzExNTZcclxuICogV2hlbiBhIGNvbXBvbmVudCBpcyBITVItZW5hYmxlZCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgc3RhdGljIG5vZGVzXHJcbiAqIGluc2lkZSBhIGJsb2NrIGFsc28gaW5oZXJpdCB0aGUgRE9NIGVsZW1lbnQgZnJvbSB0aGUgcHJldmlvdXMgdHJlZSBzbyB0aGF0XHJcbiAqIEhNUiB1cGRhdGVzICh3aGljaCBhcmUgZnVsbCB1cGRhdGVzKSBjYW4gcmV0cmlldmUgdGhlIGVsZW1lbnQgZm9yIHBhdGNoaW5nLlxyXG4gKlxyXG4gKiAjMjA4MFxyXG4gKiBJbnNpZGUga2V5ZWQgYHRlbXBsYXRlYCBmcmFnbWVudCBzdGF0aWMgY2hpbGRyZW4sIGlmIGEgZnJhZ21lbnQgaXMgbW92ZWQsXHJcbiAqIHRoZSBjaGlsZHJlbiB3aWxsIGFsd2F5cyBiZSBtb3ZlZC4gVGhlcmVmb3JlLCBpbiBvcmRlciB0byBlbnN1cmUgY29ycmVjdCBtb3ZlXHJcbiAqIHBvc2l0aW9uLCBlbCBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gcHJldmlvdXMgbm9kZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMiwgc2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBjaDEgPSBuMS5jaGlsZHJlbjtcclxuICAgIGNvbnN0IGNoMiA9IG4yLmNoaWxkcmVuO1xyXG4gICAgaWYgKGlzQXJyYXkoY2gxKSAmJiBpc0FycmF5KGNoMikpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoMS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAvLyB0aGlzIGlzIG9ubHkgY2FsbGVkIGluIHRoZSBvcHRpbWl6ZWQgcGF0aCBzbyBhcnJheSBjaGlsZHJlbiBhcmVcclxuICAgICAgICAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSB2bm9kZXNcclxuICAgICAgICAgICAgY29uc3QgYzEgPSBjaDFbaV07XHJcbiAgICAgICAgICAgIGxldCBjMiA9IGNoMltpXTtcclxuICAgICAgICAgICAgaWYgKGMyLnNoYXBlRmxhZyAmIDEgLyogRUxFTUVOVCAqLyAmJiAhYzIuZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYzIucGF0Y2hGbGFnIDw9IDAgfHwgYzIucGF0Y2hGbGFnID09PSAzMiAvKiBIWURSQVRFX0VWRU5UUyAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGMyID0gY2gyW2ldID0gY2xvbmVJZk1vdW50ZWQoY2gyW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICBjMi5lbCA9IGMxLmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFzaGFsbG93KVxyXG4gICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4oYzEsIGMyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBhbHNvIGluaGVyaXQgZm9yIGNvbW1lbnQgbm9kZXMsIGJ1dCBub3QgcGxhY2Vob2xkZXJzIChlLmcuIHYtaWYgd2hpY2hcclxuICAgICAgICAgICAgLy8gd291bGQgaGF2ZSByZWNlaXZlZCAuZWwgZHVyaW5nIGJsb2NrIHBhdGNoKVxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGMyLnR5cGUgPT09IENvbW1lbnQgJiYgIWMyLmVsKSB7XHJcbiAgICAgICAgICAgICAgICBjMi5lbCA9IGMxLmVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvbmdlc3RfaW5jcmVhc2luZ19zdWJzZXF1ZW5jZVxyXG5mdW5jdGlvbiBnZXRTZXF1ZW5jZShhcnIpIHtcclxuICAgIGNvbnN0IHAgPSBhcnIuc2xpY2UoKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IFswXTtcclxuICAgIGxldCBpLCBqLCB1LCB2LCBjO1xyXG4gICAgY29uc3QgbGVuID0gYXJyLmxlbmd0aDtcclxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGFyckkgPSBhcnJbaV07XHJcbiAgICAgICAgaWYgKGFyckkgIT09IDApIHtcclxuICAgICAgICAgICAgaiA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIGlmIChhcnJbal0gPCBhcnJJKSB7XHJcbiAgICAgICAgICAgICAgICBwW2ldID0gajtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGkpO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdSA9IDA7XHJcbiAgICAgICAgICAgIHYgPSByZXN1bHQubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgd2hpbGUgKHUgPCB2KSB7XHJcbiAgICAgICAgICAgICAgICBjID0gKHUgKyB2KSA+PiAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycltyZXN1bHRbY11dIDwgYXJySSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHUgPSBjICsgMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHYgPSBjO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhcnJJIDwgYXJyW3Jlc3VsdFt1XV0pIHtcclxuICAgICAgICAgICAgICAgIGlmICh1ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBbaV0gPSByZXN1bHRbdSAtIDFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3VdID0gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHUgPSByZXN1bHQubGVuZ3RoO1xyXG4gICAgdiA9IHJlc3VsdFt1IC0gMV07XHJcbiAgICB3aGlsZSAodS0tID4gMCkge1xyXG4gICAgICAgIHJlc3VsdFt1XSA9IHY7XHJcbiAgICAgICAgdiA9IHBbdl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XG5cbmNvbnN0IGlzVGVsZXBvcnQgPSAodHlwZSkgPT4gdHlwZS5fX2lzVGVsZXBvcnQ7XHJcbmNvbnN0IGlzVGVsZXBvcnREaXNhYmxlZCA9IChwcm9wcykgPT4gcHJvcHMgJiYgKHByb3BzLmRpc2FibGVkIHx8IHByb3BzLmRpc2FibGVkID09PSAnJyk7XHJcbmNvbnN0IGlzVGFyZ2V0U1ZHID0gKHRhcmdldCkgPT4gdHlwZW9mIFNWR0VsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHRhcmdldCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ7XHJcbmNvbnN0IHJlc29sdmVUYXJnZXQgPSAocHJvcHMsIHNlbGVjdCkgPT4ge1xyXG4gICAgY29uc3QgdGFyZ2V0U2VsZWN0b3IgPSBwcm9wcyAmJiBwcm9wcy50bztcclxuICAgIGlmIChpc1N0cmluZyh0YXJnZXRTZWxlY3RvcikpIHtcclxuICAgICAgICBpZiAoIXNlbGVjdCkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEN1cnJlbnQgcmVuZGVyZXIgZG9lcyBub3Qgc3VwcG9ydCBzdHJpbmcgdGFyZ2V0IGZvciBUZWxlcG9ydHMuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGAobWlzc2luZyBxdWVyeVNlbGVjdG9yIHJlbmRlcmVyIG9wdGlvbilgKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzZWxlY3QodGFyZ2V0U2VsZWN0b3IpO1xyXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgRmFpbGVkIHRvIGxvY2F0ZSBUZWxlcG9ydCB0YXJnZXQgd2l0aCBzZWxlY3RvciBcIiR7dGFyZ2V0U2VsZWN0b3J9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgTm90ZSB0aGUgdGFyZ2V0IGVsZW1lbnQgbXVzdCBleGlzdCBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkIC0gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpLmUuIHRoZSB0YXJnZXQgY2Fubm90IGJlIHJlbmRlcmVkIGJ5IHRoZSBjb21wb25lbnQgaXRzZWxmLCBhbmQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpZGVhbGx5IHNob3VsZCBiZSBvdXRzaWRlIG9mIHRoZSBlbnRpcmUgVnVlIGNvbXBvbmVudCB0cmVlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhdGFyZ2V0U2VsZWN0b3IgJiYgIWlzVGVsZXBvcnREaXNhYmxlZChwcm9wcykpIHtcclxuICAgICAgICAgICAgd2FybihgSW52YWxpZCBUZWxlcG9ydCB0YXJnZXQ6ICR7dGFyZ2V0U2VsZWN0b3J9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0YXJnZXRTZWxlY3RvcjtcclxuICAgIH1cclxufTtcclxuY29uc3QgVGVsZXBvcnRJbXBsID0ge1xyXG4gICAgX19pc1RlbGVwb3J0OiB0cnVlLFxyXG4gICAgcHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGludGVybmFscykge1xyXG4gICAgICAgIGNvbnN0IHsgbWM6IG1vdW50Q2hpbGRyZW4sIHBjOiBwYXRjaENoaWxkcmVuLCBwYmM6IHBhdGNoQmxvY2tDaGlsZHJlbiwgbzogeyBpbnNlcnQsIHF1ZXJ5U2VsZWN0b3IsIGNyZWF0ZVRleHQsIGNyZWF0ZUNvbW1lbnQgfSB9ID0gaW50ZXJuYWxzO1xyXG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gaXNUZWxlcG9ydERpc2FibGVkKG4yLnByb3BzKTtcclxuICAgICAgICBsZXQgeyBzaGFwZUZsYWcsIGNoaWxkcmVuLCBkeW5hbWljQ2hpbGRyZW4gfSA9IG4yO1xyXG4gICAgICAgIC8vICMzMzAyXHJcbiAgICAgICAgLy8gSE1SIHVwZGF0ZWQsIGZvcmNlIGZ1bGwgZGlmZlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gaW5zZXJ0IGFuY2hvcnMgaW4gdGhlIG1haW4gdmlld1xyXG4gICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IChuMi5lbCA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgPyBjcmVhdGVDb21tZW50KCd0ZWxlcG9ydCBzdGFydCcpXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICAgICAgY29uc3QgbWFpbkFuY2hvciA9IChuMi5hbmNob3IgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgID8gY3JlYXRlQ29tbWVudCgndGVsZXBvcnQgZW5kJylcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgICAgICBpbnNlcnQocGxhY2Vob2xkZXIsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgaW5zZXJ0KG1haW5BbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gKG4yLnRhcmdldCA9IHJlc29sdmVUYXJnZXQobjIucHJvcHMsIHF1ZXJ5U2VsZWN0b3IpKTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0QW5jaG9yID0gKG4yLnRhcmdldEFuY2hvciA9IGNyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgaW5zZXJ0KHRhcmdldEFuY2hvciwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIC8vICMyNjUyIHdlIGNvdWxkIGJlIHRlbGVwb3J0aW5nIGZyb20gYSBub24tU1ZHIHRyZWUgaW50byBhbiBTVkcgdHJlZVxyXG4gICAgICAgICAgICAgICAgaXNTVkcgPSBpc1NWRyB8fCBpc1RhcmdldFNWRyh0YXJnZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgVGVsZXBvcnQgdGFyZ2V0IG9uIG1vdW50OicsIHRhcmdldCwgYCgke3R5cGVvZiB0YXJnZXR9KWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdW50ID0gKGNvbnRhaW5lciwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBUZWxlcG9ydCAqYWx3YXlzKiBoYXMgQXJyYXkgY2hpbGRyZW4uIFRoaXMgaXMgZW5mb3JjZWQgaW4gYm90aCB0aGVcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVyIGFuZCB2bm9kZSBjaGlsZHJlbiBub3JtYWxpemF0aW9uLlxyXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIEFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgbW91bnQoY29udGFpbmVyLCBtYWluQW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50KHRhcmdldCwgdGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXBkYXRlIGNvbnRlbnRcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICAgICAgY29uc3QgbWFpbkFuY2hvciA9IChuMi5hbmNob3IgPSBuMS5hbmNob3IpO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAobjIudGFyZ2V0ID0gbjEudGFyZ2V0KTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0QW5jaG9yID0gKG4yLnRhcmdldEFuY2hvciA9IG4xLnRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgICAgIGNvbnN0IHdhc0Rpc2FibGVkID0gaXNUZWxlcG9ydERpc2FibGVkKG4xLnByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudENvbnRhaW5lciA9IHdhc0Rpc2FibGVkID8gY29udGFpbmVyIDogdGFyZ2V0O1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50QW5jaG9yID0gd2FzRGlzYWJsZWQgPyBtYWluQW5jaG9yIDogdGFyZ2V0QW5jaG9yO1xyXG4gICAgICAgICAgICBpc1NWRyA9IGlzU1ZHIHx8IGlzVGFyZ2V0U1ZHKHRhcmdldCk7XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIC8vIGZhc3QgcGF0aCB3aGVuIHRoZSB0ZWxlcG9ydCBoYXBwZW5zIHRvIGJlIGEgYmxvY2sgcm9vdFxyXG4gICAgICAgICAgICAgICAgcGF0Y2hCbG9ja0NoaWxkcmVuKG4xLmR5bmFtaWNDaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBjdXJyZW50Q29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICAgICAgICAgIC8vIGV2ZW4gaW4gYmxvY2sgdHJlZSBtb2RlIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCByb290LWxldmVsIG5vZGVzXHJcbiAgICAgICAgICAgICAgICAvLyBpbiB0aGUgdGVsZXBvcnQgaW5oZXJpdCBwcmV2aW91cyBET00gcmVmZXJlbmNlcyBzbyB0aGF0IHRoZXkgY2FuXHJcbiAgICAgICAgICAgICAgICAvLyBiZSBtb3ZlZCBpbiBmdXR1cmUgcGF0Y2hlcy5cclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghb3B0aW1pemVkKSB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaENoaWxkcmVuKG4xLCBuMiwgY3VycmVudENvbnRhaW5lciwgY3VycmVudEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF3YXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgLT4gZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGludG8gbWFpbiBjb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICBtb3ZlVGVsZXBvcnQobjIsIGNvbnRhaW5lciwgbWFpbkFuY2hvciwgaW50ZXJuYWxzLCAxIC8qIFRPR0dMRSAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0YXJnZXQgY2hhbmdlZFxyXG4gICAgICAgICAgICAgICAgaWYgKChuMi5wcm9wcyAmJiBuMi5wcm9wcy50bykgIT09IChuMS5wcm9wcyAmJiBuMS5wcm9wcy50bykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0VGFyZ2V0ID0gKG4yLnRhcmdldCA9IHJlc29sdmVUYXJnZXQobjIucHJvcHMsIHF1ZXJ5U2VsZWN0b3IpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlVGVsZXBvcnQobjIsIG5leHRUYXJnZXQsIG51bGwsIGludGVybmFscywgMCAvKiBUQVJHRVRfQ0hBTkdFICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgVGVsZXBvcnQgdGFyZ2V0IG9uIHVwZGF0ZTonLCB0YXJnZXQsIGAoJHt0eXBlb2YgdGFyZ2V0fSlgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3YXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGVkIC0+IGVuYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGludG8gdGVsZXBvcnQgdGFyZ2V0XHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZVRlbGVwb3J0KG4yLCB0YXJnZXQsIHRhcmdldEFuY2hvciwgaW50ZXJuYWxzLCAxIC8qIFRPR0dMRSAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBvcHRpbWl6ZWQsIHsgdW06IHVubW91bnQsIG86IHsgcmVtb3ZlOiBob3N0UmVtb3ZlIH0gfSwgZG9SZW1vdmUpIHtcclxuICAgICAgICBjb25zdCB7IHNoYXBlRmxhZywgY2hpbGRyZW4sIGFuY2hvciwgdGFyZ2V0QW5jaG9yLCB0YXJnZXQsIHByb3BzIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUodGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYW4gdW5tb3VudGVkIHRlbGVwb3J0IHNob3VsZCBhbHdheXMgcmVtb3ZlIGl0cyBjaGlsZHJlbiBpZiBub3QgZGlzYWJsZWRcclxuICAgICAgICBpZiAoZG9SZW1vdmUgfHwgIWlzVGVsZXBvcnREaXNhYmxlZChwcm9wcykpIHtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShhbmNob3IpO1xyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQoY2hpbGQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUsICEhY2hpbGQuZHluYW1pY0NoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtb3ZlOiBtb3ZlVGVsZXBvcnQsXHJcbiAgICBoeWRyYXRlOiBoeWRyYXRlVGVsZXBvcnRcclxufTtcclxuZnVuY3Rpb24gbW92ZVRlbGVwb3J0KHZub2RlLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgeyBvOiB7IGluc2VydCB9LCBtOiBtb3ZlIH0sIG1vdmVUeXBlID0gMiAvKiBSRU9SREVSICovKSB7XHJcbiAgICAvLyBtb3ZlIHRhcmdldCBhbmNob3IgaWYgdGhpcyBpcyBhIHRhcmdldCBjaGFuZ2UuXHJcbiAgICBpZiAobW92ZVR5cGUgPT09IDAgLyogVEFSR0VUX0NIQU5HRSAqLykge1xyXG4gICAgICAgIGluc2VydCh2bm9kZS50YXJnZXRBbmNob3IsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZWwsIGFuY2hvciwgc2hhcGVGbGFnLCBjaGlsZHJlbiwgcHJvcHMgfSA9IHZub2RlO1xyXG4gICAgY29uc3QgaXNSZW9yZGVyID0gbW92ZVR5cGUgPT09IDIgLyogUkVPUkRFUiAqLztcclxuICAgIC8vIG1vdmUgbWFpbiB2aWV3IGFuY2hvciBpZiB0aGlzIGlzIGEgcmUtb3JkZXIuXHJcbiAgICBpZiAoaXNSZW9yZGVyKSB7XHJcbiAgICAgICAgaW5zZXJ0KGVsLCBjb250YWluZXIsIHBhcmVudEFuY2hvcik7XHJcbiAgICB9XHJcbiAgICAvLyBpZiB0aGlzIGlzIGEgcmUtb3JkZXIgYW5kIHRlbGVwb3J0IGlzIGVuYWJsZWQgKGNvbnRlbnQgaXMgaW4gdGFyZ2V0KVxyXG4gICAgLy8gZG8gbm90IG1vdmUgY2hpbGRyZW4uIFNvIHRoZSBvcHBvc2l0ZSBpczogb25seSBtb3ZlIGNoaWxkcmVuIGlmIHRoaXNcclxuICAgIC8vIGlzIG5vdCBhIHJlb3JkZXIsIG9yIHRoZSB0ZWxlcG9ydCBpcyBkaXNhYmxlZFxyXG4gICAgaWYgKCFpc1Jlb3JkZXIgfHwgaXNUZWxlcG9ydERpc2FibGVkKHByb3BzKSkge1xyXG4gICAgICAgIC8vIFRlbGVwb3J0IGhhcyBlaXRoZXIgQXJyYXkgY2hpbGRyZW4gb3Igbm8gY2hpbGRyZW4uXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIEFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIG1vdmUoY2hpbGRyZW5baV0sIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yLCAyIC8qIFJFT1JERVIgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gbW92ZSBtYWluIHZpZXcgYW5jaG9yIGlmIHRoaXMgaXMgYSByZS1vcmRlci5cclxuICAgIGlmIChpc1Jlb3JkZXIpIHtcclxuICAgICAgICBpbnNlcnQoYW5jaG9yLCBjb250YWluZXIsIHBhcmVudEFuY2hvcik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaHlkcmF0ZVRlbGVwb3J0KG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgeyBvOiB7IG5leHRTaWJsaW5nLCBwYXJlbnROb2RlLCBxdWVyeVNlbGVjdG9yIH0gfSwgaHlkcmF0ZUNoaWxkcmVuKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSAodm5vZGUudGFyZ2V0ID0gcmVzb2x2ZVRhcmdldCh2bm9kZS5wcm9wcywgcXVlcnlTZWxlY3RvcikpO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIC8vIGlmIG11bHRpcGxlIHRlbGVwb3J0cyByZW5kZXJlZCB0byB0aGUgc2FtZSB0YXJnZXQgZWxlbWVudCwgd2UgbmVlZCB0b1xyXG4gICAgICAgIC8vIHBpY2sgdXAgZnJvbSB3aGVyZSB0aGUgbGFzdCB0ZWxlcG9ydCBmaW5pc2hlZCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBub2RlXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRhcmdldC5fbHBhIHx8IHRhcmdldC5maXJzdENoaWxkO1xyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxNiAvKiBBUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICBpZiAoaXNUZWxlcG9ydERpc2FibGVkKHZub2RlLnByb3BzKSkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuYW5jaG9yID0gaHlkcmF0ZUNoaWxkcmVuKG5leHRTaWJsaW5nKG5vZGUpLCB2bm9kZSwgcGFyZW50Tm9kZShub2RlKSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgdm5vZGUudGFyZ2V0QW5jaG9yID0gdGFyZ2V0Tm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgdm5vZGUudGFyZ2V0QW5jaG9yID0gaHlkcmF0ZUNoaWxkcmVuKHRhcmdldE5vZGUsIHZub2RlLCB0YXJnZXQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0YXJnZXQuX2xwYSA9XHJcbiAgICAgICAgICAgICAgICB2bm9kZS50YXJnZXRBbmNob3IgJiYgbmV4dFNpYmxpbmcodm5vZGUudGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdm5vZGUuYW5jaG9yICYmIG5leHRTaWJsaW5nKHZub2RlLmFuY2hvcik7XHJcbn1cclxuLy8gRm9yY2UtY2FzdGVkIHB1YmxpYyB0eXBpbmcgZm9yIGggYW5kIFRTWCBwcm9wcyBpbmZlcmVuY2VcclxuY29uc3QgVGVsZXBvcnQgPSBUZWxlcG9ydEltcGw7XG5cbmNvbnN0IENPTVBPTkVOVFMgPSAnY29tcG9uZW50cyc7XHJcbmNvbnN0IERJUkVDVElWRVMgPSAnZGlyZWN0aXZlcyc7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudChuYW1lLCBtYXliZVNlbGZSZWZlcmVuY2UpIHtcclxuICAgIHJldHVybiByZXNvbHZlQXNzZXQoQ09NUE9ORU5UUywgbmFtZSwgdHJ1ZSwgbWF5YmVTZWxmUmVmZXJlbmNlKSB8fCBuYW1lO1xyXG59XHJcbmNvbnN0IE5VTExfRFlOQU1JQ19DT01QT05FTlQgPSBTeW1ib2woKTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY0NvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgIGlmIChpc1N0cmluZyhjb21wb25lbnQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBc3NldChDT01QT05FTlRTLCBjb21wb25lbnQsIGZhbHNlKSB8fCBjb21wb25lbnQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBpbnZhbGlkIHR5cGVzIHdpbGwgZmFsbHRocm91Z2ggdG8gY3JlYXRlVk5vZGUgYW5kIHJhaXNlIHdhcm5pbmdcclxuICAgICAgICByZXR1cm4gKGNvbXBvbmVudCB8fCBOVUxMX0RZTkFNSUNfQ09NUE9ORU5UKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVEaXJlY3RpdmUobmFtZSkge1xyXG4gICAgcmV0dXJuIHJlc29sdmVBc3NldChESVJFQ1RJVkVTLCBuYW1lKTtcclxufVxyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQodHlwZSwgbmFtZSwgd2Fybk1pc3NpbmcgPSB0cnVlLCBtYXliZVNlbGZSZWZlcmVuY2UgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgfHwgY3VycmVudEluc3RhbmNlO1xyXG4gICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcclxuICAgICAgICAvLyBleHBsaWNpdCBzZWxmIG5hbWUgaGFzIGhpZ2hlc3QgcHJpb3JpdHlcclxuICAgICAgICBpZiAodHlwZSA9PT0gQ09NUE9ORU5UUykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxmTmFtZSA9IGdldENvbXBvbmVudE5hbWUoQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgaWYgKHNlbGZOYW1lICYmXHJcbiAgICAgICAgICAgICAgICAoc2VsZk5hbWUgPT09IG5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBzZWxmTmFtZSA9PT0gY2FtZWxpemUobmFtZSkgfHxcclxuICAgICAgICAgICAgICAgICAgICBzZWxmTmFtZSA9PT0gY2FwaXRhbGl6ZShjYW1lbGl6ZShuYW1lKSkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcyA9IFxyXG4gICAgICAgIC8vIGxvY2FsIHJlZ2lzdHJhdGlvblxyXG4gICAgICAgIC8vIGNoZWNrIGluc3RhbmNlW3R5cGVdIGZpcnN0IHdoaWNoIGlzIHJlc29sdmVkIGZvciBvcHRpb25zIEFQSVxyXG4gICAgICAgIHJlc29sdmUoaW5zdGFuY2VbdHlwZV0gfHwgQ29tcG9uZW50W3R5cGVdLCBuYW1lKSB8fFxyXG4gICAgICAgICAgICAvLyBnbG9iYWwgcmVnaXN0cmF0aW9uXHJcbiAgICAgICAgICAgIHJlc29sdmUoaW5zdGFuY2UuYXBwQ29udGV4dFt0eXBlXSwgbmFtZSk7XHJcbiAgICAgICAgaWYgKCFyZXMgJiYgbWF5YmVTZWxmUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICAgIC8vIGZhbGxiYWNrIHRvIGltcGxpY2l0IHNlbGYtcmVmZXJlbmNlXHJcbiAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2Fybk1pc3NpbmcgJiYgIXJlcykge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IHR5cGUgPT09IENPTVBPTkVOVFNcclxuICAgICAgICAgICAgICAgID8gYFxcbklmIHRoaXMgaXMgYSBuYXRpdmUgY3VzdG9tIGVsZW1lbnQsIG1ha2Ugc3VyZSB0byBleGNsdWRlIGl0IGZyb20gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGNvbXBvbmVudCByZXNvbHV0aW9uIHZpYSBjb21waWxlck9wdGlvbnMuaXNDdXN0b21FbGVtZW50LmBcclxuICAgICAgICAgICAgICAgIDogYGA7XHJcbiAgICAgICAgICAgIHdhcm4oYEZhaWxlZCB0byByZXNvbHZlICR7dHlwZS5zbGljZSgwLCAtMSl9OiAke25hbWV9JHtleHRyYX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYHJlc29sdmUke2NhcGl0YWxpemUodHlwZS5zbGljZSgwLCAtMSkpfSBgICtcclxuICAgICAgICAgICAgYGNhbiBvbmx5IGJlIHVzZWQgaW4gcmVuZGVyKCkgb3Igc2V0dXAoKS5gKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiByZXNvbHZlKHJlZ2lzdHJ5LCBuYW1lKSB7XHJcbiAgICByZXR1cm4gKHJlZ2lzdHJ5ICYmXHJcbiAgICAgICAgKHJlZ2lzdHJ5W25hbWVdIHx8XHJcbiAgICAgICAgICAgIHJlZ2lzdHJ5W2NhbWVsaXplKG5hbWUpXSB8fFxyXG4gICAgICAgICAgICByZWdpc3RyeVtjYXBpdGFsaXplKGNhbWVsaXplKG5hbWUpKV0pKTtcclxufVxuXG5jb25zdCBGcmFnbWVudCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnRnJhZ21lbnQnIDogdW5kZWZpbmVkKTtcclxuY29uc3QgVGV4dCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnVGV4dCcgOiB1bmRlZmluZWQpO1xyXG5jb25zdCBDb21tZW50ID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdDb21tZW50JyA6IHVuZGVmaW5lZCk7XHJcbmNvbnN0IFN0YXRpYyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnU3RhdGljJyA6IHVuZGVmaW5lZCk7XHJcbi8vIFNpbmNlIHYtaWYgYW5kIHYtZm9yIGFyZSB0aGUgdHdvIHBvc3NpYmxlIHdheXMgbm9kZSBzdHJ1Y3R1cmUgY2FuIGR5bmFtaWNhbGx5XHJcbi8vIGNoYW5nZSwgb25jZSB3ZSBjb25zaWRlciB2LWlmIGJyYW5jaGVzIGFuZCBlYWNoIHYtZm9yIGZyYWdtZW50IGEgYmxvY2ssIHdlXHJcbi8vIGNhbiBkaXZpZGUgYSB0ZW1wbGF0ZSBpbnRvIG5lc3RlZCBibG9ja3MsIGFuZCB3aXRoaW4gZWFjaCBibG9jayB0aGUgbm9kZVxyXG4vLyBzdHJ1Y3R1cmUgd291bGQgYmUgc3RhYmxlLiBUaGlzIGFsbG93cyB1cyB0byBza2lwIG1vc3QgY2hpbGRyZW4gZGlmZmluZ1xyXG4vLyBhbmQgb25seSB3b3JyeSBhYm91dCB0aGUgZHluYW1pYyBub2RlcyAoaW5kaWNhdGVkIGJ5IHBhdGNoIGZsYWdzKS5cclxuY29uc3QgYmxvY2tTdGFjayA9IFtdO1xyXG5sZXQgY3VycmVudEJsb2NrID0gbnVsbDtcclxuLyoqXHJcbiAqIE9wZW4gYSBibG9jay5cclxuICogVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYGNyZWF0ZUJsb2NrYC4gSXQgY2Fubm90IGJlIHBhcnQgb2YgYGNyZWF0ZUJsb2NrYFxyXG4gKiBiZWNhdXNlIHRoZSBjaGlsZHJlbiBvZiB0aGUgYmxvY2sgYXJlIGV2YWx1YXRlZCBiZWZvcmUgYGNyZWF0ZUJsb2NrYCBpdHNlbGZcclxuICogaXMgY2FsbGVkLiBUaGUgZ2VuZXJhdGVkIGNvZGUgdHlwaWNhbGx5IGxvb2tzIGxpa2UgdGhpczpcclxuICpcclxuICogYGBganNcclxuICogZnVuY3Rpb24gcmVuZGVyKCkge1xyXG4gKiAgIHJldHVybiAob3BlbkJsb2NrKCksY3JlYXRlQmxvY2soJ2RpdicsIG51bGwsIFsuLi5dKSlcclxuICogfVxyXG4gKiBgYGBcclxuICogZGlzYWJsZVRyYWNraW5nIGlzIHRydWUgd2hlbiBjcmVhdGluZyBhIHYtZm9yIGZyYWdtZW50IGJsb2NrLCBzaW5jZSBhIHYtZm9yXHJcbiAqIGZyYWdtZW50IGFsd2F5cyBkaWZmcyBpdHMgY2hpbGRyZW4uXHJcbiAqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBvcGVuQmxvY2soZGlzYWJsZVRyYWNraW5nID0gZmFsc2UpIHtcclxuICAgIGJsb2NrU3RhY2sucHVzaCgoY3VycmVudEJsb2NrID0gZGlzYWJsZVRyYWNraW5nID8gbnVsbCA6IFtdKSk7XHJcbn1cclxuZnVuY3Rpb24gY2xvc2VCbG9jaygpIHtcclxuICAgIGJsb2NrU3RhY2sucG9wKCk7XHJcbiAgICBjdXJyZW50QmxvY2sgPSBibG9ja1N0YWNrW2Jsb2NrU3RhY2subGVuZ3RoIC0gMV0gfHwgbnVsbDtcclxufVxyXG4vLyBXaGV0aGVyIHdlIHNob3VsZCBiZSB0cmFja2luZyBkeW5hbWljIGNoaWxkIG5vZGVzIGluc2lkZSBhIGJsb2NrLlxyXG4vLyBPbmx5IHRyYWNrcyB3aGVuIHRoaXMgdmFsdWUgaXMgPiAwXHJcbi8vIFdlIGFyZSBub3QgdXNpbmcgYSBzaW1wbGUgYm9vbGVhbiBiZWNhdXNlIHRoaXMgdmFsdWUgbWF5IG5lZWQgdG8gYmVcclxuLy8gaW5jcmVtZW50ZWQvZGVjcmVtZW50ZWQgYnkgbmVzdGVkIHVzYWdlIG9mIHYtb25jZSAoc2VlIGJlbG93KVxyXG5sZXQgaXNCbG9ja1RyZWVFbmFibGVkID0gMTtcclxuLyoqXHJcbiAqIEJsb2NrIHRyYWNraW5nIHNvbWV0aW1lcyBuZWVkcyB0byBiZSBkaXNhYmxlZCwgZm9yIGV4YW1wbGUgZHVyaW5nIHRoZVxyXG4gKiBjcmVhdGlvbiBvZiBhIHRyZWUgdGhhdCBuZWVkcyB0byBiZSBjYWNoZWQgYnkgdi1vbmNlLiBUaGUgY29tcGlsZXIgZ2VuZXJhdGVzXHJcbiAqIGNvZGUgbGlrZSB0aGlzOlxyXG4gKlxyXG4gKiBgYGAganNcclxuICogX2NhY2hlWzFdIHx8IChcclxuICogICBzZXRCbG9ja1RyYWNraW5nKC0xKSxcclxuICogICBfY2FjaGVbMV0gPSBjcmVhdGVWTm9kZSguLi4pLFxyXG4gKiAgIHNldEJsb2NrVHJhY2tpbmcoMSksXHJcbiAqICAgX2NhY2hlWzFdXHJcbiAqIClcclxuICogYGBgXHJcbiAqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRCbG9ja1RyYWNraW5nKHZhbHVlKSB7XHJcbiAgICBpc0Jsb2NrVHJlZUVuYWJsZWQgKz0gdmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gc2V0dXBCbG9jayh2bm9kZSkge1xyXG4gICAgLy8gc2F2ZSBjdXJyZW50IGJsb2NrIGNoaWxkcmVuIG9uIHRoZSBibG9jayB2bm9kZVxyXG4gICAgdm5vZGUuZHluYW1pY0NoaWxkcmVuID1cclxuICAgICAgICBpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwID8gY3VycmVudEJsb2NrIHx8IEVNUFRZX0FSUiA6IG51bGw7XHJcbiAgICAvLyBjbG9zZSBibG9ja1xyXG4gICAgY2xvc2VCbG9jaygpO1xyXG4gICAgLy8gYSBibG9jayBpcyBhbHdheXMgZ29pbmcgdG8gYmUgcGF0Y2hlZCwgc28gdHJhY2sgaXQgYXMgYSBjaGlsZCBvZiBpdHNcclxuICAgIC8vIHBhcmVudCBibG9ja1xyXG4gICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiYgY3VycmVudEJsb2NrKSB7XHJcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2godm5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudEJsb2NrKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHNoYXBlRmxhZykge1xyXG4gICAgcmV0dXJuIHNldHVwQmxvY2soY3JlYXRlQmFzZVZOb2RlKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHNoYXBlRmxhZywgdHJ1ZSAvKiBpc0Jsb2NrICovKSk7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZSBhIGJsb2NrIHJvb3Qgdm5vZGUuIFRha2VzIHRoZSBzYW1lIGV4YWN0IGFyZ3VtZW50cyBhcyBgY3JlYXRlVk5vZGVgLlxyXG4gKiBBIGJsb2NrIHJvb3Qga2VlcHMgdHJhY2sgb2YgZHluYW1pYyBub2RlcyB3aXRoaW4gdGhlIGJsb2NrIGluIHRoZVxyXG4gKiBgZHluYW1pY0NoaWxkcmVuYCBhcnJheS5cclxuICpcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUJsb2NrKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMpIHtcclxuICAgIHJldHVybiBzZXR1cEJsb2NrKGNyZWF0ZVZOb2RlKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHRydWUgLyogaXNCbG9jazogcHJldmVudCBhIGJsb2NrIGZyb20gdHJhY2tpbmcgaXRzZWxmICovKSk7XHJcbn1cclxuZnVuY3Rpb24gaXNWTm9kZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUuX192X2lzVk5vZGUgPT09IHRydWUgOiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgbjIuc2hhcGVGbGFnICYgNiAvKiBDT01QT05FTlQgKi8gJiZcclxuICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuaGFzKG4yLnR5cGUpKSB7XHJcbiAgICAgICAgLy8gSE1SIG9ubHk6IGlmIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gaG90LXVwZGF0ZWQsIGZvcmNlIGEgcmVsb2FkLlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBuMS50eXBlID09PSBuMi50eXBlICYmIG4xLmtleSA9PT0gbjIua2V5O1xyXG59XHJcbmxldCB2bm9kZUFyZ3NUcmFuc2Zvcm1lcjtcclxuLyoqXHJcbiAqIEludGVybmFsIEFQSSBmb3IgcmVnaXN0ZXJpbmcgYW4gYXJndW1lbnRzIHRyYW5zZm9ybSBmb3IgY3JlYXRlVk5vZGVcclxuICogdXNlZCBmb3IgY3JlYXRpbmcgc3R1YnMgaW4gdGhlIHRlc3QtdXRpbHNcclxuICogSXQgaXMgKmludGVybmFsKiBidXQgbmVlZHMgdG8gYmUgZXhwb3NlZCBmb3IgdGVzdC11dGlscyB0byBwaWNrIHVwIHByb3BlclxyXG4gKiB0eXBpbmdzXHJcbiAqL1xyXG5mdW5jdGlvbiB0cmFuc2Zvcm1WTm9kZUFyZ3ModHJhbnNmb3JtZXIpIHtcclxuICAgIHZub2RlQXJnc1RyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXI7XHJcbn1cclxuY29uc3QgY3JlYXRlVk5vZGVXaXRoQXJnc1RyYW5zZm9ybSA9ICguLi5hcmdzKSA9PiB7XHJcbiAgICByZXR1cm4gX2NyZWF0ZVZOb2RlKC4uLih2bm9kZUFyZ3NUcmFuc2Zvcm1lclxyXG4gICAgICAgID8gdm5vZGVBcmdzVHJhbnNmb3JtZXIoYXJncywgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlKVxyXG4gICAgICAgIDogYXJncykpO1xyXG59O1xyXG5jb25zdCBJbnRlcm5hbE9iamVjdEtleSA9IGBfX3ZJbnRlcm5hbGA7XHJcbmNvbnN0IG5vcm1hbGl6ZUtleSA9ICh7IGtleSB9KSA9PiBrZXkgIT0gbnVsbCA/IGtleSA6IG51bGw7XHJcbmNvbnN0IG5vcm1hbGl6ZVJlZiA9ICh7IHJlZiwgcmVmX2tleSwgcmVmX2ZvciB9KSA9PiB7XHJcbiAgICByZXR1cm4gKHJlZiAhPSBudWxsXHJcbiAgICAgICAgPyBpc1N0cmluZyhyZWYpIHx8IGlzUmVmKHJlZikgfHwgaXNGdW5jdGlvbihyZWYpXHJcbiAgICAgICAgICAgID8geyBpOiBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UsIHI6IHJlZiwgazogcmVmX2tleSwgZjogISFyZWZfZm9yIH1cclxuICAgICAgICAgICAgOiByZWZcclxuICAgICAgICA6IG51bGwpO1xyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVCYXNlVk5vZGUodHlwZSwgcHJvcHMgPSBudWxsLCBjaGlsZHJlbiA9IG51bGwsIHBhdGNoRmxhZyA9IDAsIGR5bmFtaWNQcm9wcyA9IG51bGwsIHNoYXBlRmxhZyA9IHR5cGUgPT09IEZyYWdtZW50ID8gMCA6IDEgLyogRUxFTUVOVCAqLywgaXNCbG9ja05vZGUgPSBmYWxzZSwgbmVlZEZ1bGxDaGlsZHJlbk5vcm1hbGl6YXRpb24gPSBmYWxzZSkge1xyXG4gICAgY29uc3Qgdm5vZGUgPSB7XHJcbiAgICAgICAgX192X2lzVk5vZGU6IHRydWUsXHJcbiAgICAgICAgX192X3NraXA6IHRydWUsXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICBwcm9wcyxcclxuICAgICAgICBrZXk6IHByb3BzICYmIG5vcm1hbGl6ZUtleShwcm9wcyksXHJcbiAgICAgICAgcmVmOiBwcm9wcyAmJiBub3JtYWxpemVSZWYocHJvcHMpLFxyXG4gICAgICAgIHNjb3BlSWQ6IGN1cnJlbnRTY29wZUlkLFxyXG4gICAgICAgIHNsb3RTY29wZUlkczogbnVsbCxcclxuICAgICAgICBjaGlsZHJlbixcclxuICAgICAgICBjb21wb25lbnQ6IG51bGwsXHJcbiAgICAgICAgc3VzcGVuc2U6IG51bGwsXHJcbiAgICAgICAgc3NDb250ZW50OiBudWxsLFxyXG4gICAgICAgIHNzRmFsbGJhY2s6IG51bGwsXHJcbiAgICAgICAgZGlyczogbnVsbCxcclxuICAgICAgICB0cmFuc2l0aW9uOiBudWxsLFxyXG4gICAgICAgIGVsOiBudWxsLFxyXG4gICAgICAgIGFuY2hvcjogbnVsbCxcclxuICAgICAgICB0YXJnZXQ6IG51bGwsXHJcbiAgICAgICAgdGFyZ2V0QW5jaG9yOiBudWxsLFxyXG4gICAgICAgIHN0YXRpY0NvdW50OiAwLFxyXG4gICAgICAgIHNoYXBlRmxhZyxcclxuICAgICAgICBwYXRjaEZsYWcsXHJcbiAgICAgICAgZHluYW1pY1Byb3BzLFxyXG4gICAgICAgIGR5bmFtaWNDaGlsZHJlbjogbnVsbCxcclxuICAgICAgICBhcHBDb250ZXh0OiBudWxsXHJcbiAgICB9O1xyXG4gICAgaWYgKG5lZWRGdWxsQ2hpbGRyZW5Ob3JtYWxpemF0aW9uKSB7XHJcbiAgICAgICAgbm9ybWFsaXplQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuKTtcclxuICAgICAgICAvLyBub3JtYWxpemUgc3VzcGVuc2UgY2hpbGRyZW5cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgIHR5cGUubm9ybWFsaXplKHZub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgIC8vIGNvbXBpbGVkIGVsZW1lbnQgdm5vZGUgLSBpZiBjaGlsZHJlbiBpcyBwYXNzZWQsIG9ubHkgcG9zc2libGUgdHlwZXMgYXJlXHJcbiAgICAgICAgLy8gc3RyaW5nIG9yIEFycmF5LlxyXG4gICAgICAgIHZub2RlLnNoYXBlRmxhZyB8PSBpc1N0cmluZyhjaGlsZHJlbilcclxuICAgICAgICAgICAgPyA4IC8qIFRFWFRfQ0hJTERSRU4gKi9cclxuICAgICAgICAgICAgOiAxNiAvKiBBUlJBWV9DSElMRFJFTiAqLztcclxuICAgIH1cclxuICAgIC8vIHZhbGlkYXRlIGtleVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB2bm9kZS5rZXkgIT09IHZub2RlLmtleSkge1xyXG4gICAgICAgIHdhcm4oYFZOb2RlIGNyZWF0ZWQgd2l0aCBpbnZhbGlkIGtleSAoTmFOKS4gVk5vZGUgdHlwZTpgLCB2bm9kZS50eXBlKTtcclxuICAgIH1cclxuICAgIC8vIHRyYWNrIHZub2RlIGZvciBibG9jayB0cmVlXHJcbiAgICBpZiAoaXNCbG9ja1RyZWVFbmFibGVkID4gMCAmJlxyXG4gICAgICAgIC8vIGF2b2lkIGEgYmxvY2sgbm9kZSBmcm9tIHRyYWNraW5nIGl0c2VsZlxyXG4gICAgICAgICFpc0Jsb2NrTm9kZSAmJlxyXG4gICAgICAgIC8vIGhhcyBjdXJyZW50IHBhcmVudCBibG9ja1xyXG4gICAgICAgIGN1cnJlbnRCbG9jayAmJlxyXG4gICAgICAgIC8vIHByZXNlbmNlIG9mIGEgcGF0Y2ggZmxhZyBpbmRpY2F0ZXMgdGhpcyBub2RlIG5lZWRzIHBhdGNoaW5nIG9uIHVwZGF0ZXMuXHJcbiAgICAgICAgLy8gY29tcG9uZW50IG5vZGVzIGFsc28gc2hvdWxkIGFsd2F5cyBiZSBwYXRjaGVkLCBiZWNhdXNlIGV2ZW4gaWYgdGhlXHJcbiAgICAgICAgLy8gY29tcG9uZW50IGRvZXNuJ3QgbmVlZCB0byB1cGRhdGUsIGl0IG5lZWRzIHRvIHBlcnNpc3QgdGhlIGluc3RhbmNlIG9uIHRvXHJcbiAgICAgICAgLy8gdGhlIG5leHQgdm5vZGUgc28gdGhhdCBpdCBjYW4gYmUgcHJvcGVybHkgdW5tb3VudGVkIGxhdGVyLlxyXG4gICAgICAgICh2bm9kZS5wYXRjaEZsYWcgPiAwIHx8IHNoYXBlRmxhZyAmIDYgLyogQ09NUE9ORU5UICovKSAmJlxyXG4gICAgICAgIC8vIHRoZSBFVkVOVFMgZmxhZyBpcyBvbmx5IGZvciBoeWRyYXRpb24gYW5kIGlmIGl0IGlzIHRoZSBvbmx5IGZsYWcsIHRoZVxyXG4gICAgICAgIC8vIHZub2RlIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBkeW5hbWljIGR1ZSB0byBoYW5kbGVyIGNhY2hpbmcuXHJcbiAgICAgICAgdm5vZGUucGF0Y2hGbGFnICE9PSAzMiAvKiBIWURSQVRFX0VWRU5UUyAqLykge1xyXG4gICAgICAgIGN1cnJlbnRCbG9jay5wdXNoKHZub2RlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG5jb25zdCBjcmVhdGVWTm9kZSA9ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBjcmVhdGVWTm9kZVdpdGhBcmdzVHJhbnNmb3JtIDogX2NyZWF0ZVZOb2RlKTtcclxuZnVuY3Rpb24gX2NyZWF0ZVZOb2RlKHR5cGUsIHByb3BzID0gbnVsbCwgY2hpbGRyZW4gPSBudWxsLCBwYXRjaEZsYWcgPSAwLCBkeW5hbWljUHJvcHMgPSBudWxsLCBpc0Jsb2NrTm9kZSA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXR5cGUgfHwgdHlwZSA9PT0gTlVMTF9EWU5BTUlDX0NPTVBPTkVOVCkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXR5cGUpIHtcclxuICAgICAgICAgICAgd2FybihgSW52YWxpZCB2bm9kZSB0eXBlIHdoZW4gY3JlYXRpbmcgdm5vZGU6ICR7dHlwZX0uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHR5cGUgPSBDb21tZW50O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVk5vZGUodHlwZSkpIHtcclxuICAgICAgICAvLyBjcmVhdGVWTm9kZSByZWNlaXZpbmcgYW4gZXhpc3Rpbmcgdm5vZGUuIFRoaXMgaGFwcGVucyBpbiBjYXNlcyBsaWtlXHJcbiAgICAgICAgLy8gPGNvbXBvbmVudCA6aXM9XCJ2bm9kZVwiLz5cclxuICAgICAgICAvLyAjMjA3OCBtYWtlIHN1cmUgdG8gbWVyZ2UgcmVmcyBkdXJpbmcgdGhlIGNsb25lIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmcgaXRcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSBjbG9uZVZOb2RlKHR5cGUsIHByb3BzLCB0cnVlIC8qIG1lcmdlUmVmOiB0cnVlICovKTtcclxuICAgICAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgbm9ybWFsaXplQ2hpbGRyZW4oY2xvbmVkLCBjaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjbG9uZWQ7XHJcbiAgICB9XHJcbiAgICAvLyBjbGFzcyBjb21wb25lbnQgbm9ybWFsaXphdGlvbi5cclxuICAgIGlmIChpc0NsYXNzQ29tcG9uZW50KHR5cGUpKSB7XHJcbiAgICAgICAgdHlwZSA9IHR5cGUuX192Y2NPcHRzO1xyXG4gICAgfVxyXG4gICAgLy8gY2xhc3MgJiBzdHlsZSBub3JtYWxpemF0aW9uLlxyXG4gICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgLy8gZm9yIHJlYWN0aXZlIG9yIHByb3h5IG9iamVjdHMsIHdlIG5lZWQgdG8gY2xvbmUgaXQgdG8gZW5hYmxlIG11dGF0aW9uLlxyXG4gICAgICAgIHByb3BzID0gZ3VhcmRSZWFjdGl2ZVByb3BzKHByb3BzKTtcclxuICAgICAgICBsZXQgeyBjbGFzczoga2xhc3MsIHN0eWxlIH0gPSBwcm9wcztcclxuICAgICAgICBpZiAoa2xhc3MgJiYgIWlzU3RyaW5nKGtsYXNzKSkge1xyXG4gICAgICAgICAgICBwcm9wcy5jbGFzcyA9IG5vcm1hbGl6ZUNsYXNzKGtsYXNzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KHN0eWxlKSkge1xyXG4gICAgICAgICAgICAvLyByZWFjdGl2ZSBzdGF0ZSBvYmplY3RzIG5lZWQgdG8gYmUgY2xvbmVkIHNpbmNlIHRoZXkgYXJlIGxpa2VseSB0byBiZVxyXG4gICAgICAgICAgICAvLyBtdXRhdGVkXHJcbiAgICAgICAgICAgIGlmIChpc1Byb3h5KHN0eWxlKSAmJiAhaXNBcnJheShzdHlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlID0gZXh0ZW5kKHt9LCBzdHlsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJvcHMuc3R5bGUgPSBub3JtYWxpemVTdHlsZShzdHlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZW5jb2RlIHRoZSB2bm9kZSB0eXBlIGluZm9ybWF0aW9uIGludG8gYSBiaXRtYXBcclxuICAgIGNvbnN0IHNoYXBlRmxhZyA9IGlzU3RyaW5nKHR5cGUpXHJcbiAgICAgICAgPyAxIC8qIEVMRU1FTlQgKi9cclxuICAgICAgICA6IGlzU3VzcGVuc2UodHlwZSlcclxuICAgICAgICAgICAgPyAxMjggLyogU1VTUEVOU0UgKi9cclxuICAgICAgICAgICAgOiBpc1RlbGVwb3J0KHR5cGUpXHJcbiAgICAgICAgICAgICAgICA/IDY0IC8qIFRFTEVQT1JUICovXHJcbiAgICAgICAgICAgICAgICA6IGlzT2JqZWN0KHR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgPyA0IC8qIFNUQVRFRlVMX0NPTVBPTkVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgIDogaXNGdW5jdGlvbih0eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDIgLyogRlVOQ1RJT05BTF9DT01QT05FTlQgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzaGFwZUZsYWcgJiA0IC8qIFNUQVRFRlVMX0NPTVBPTkVOVCAqLyAmJiBpc1Byb3h5KHR5cGUpKSB7XHJcbiAgICAgICAgdHlwZSA9IHRvUmF3KHR5cGUpO1xyXG4gICAgICAgIHdhcm4oYFZ1ZSByZWNlaXZlZCBhIENvbXBvbmVudCB3aGljaCB3YXMgbWFkZSBhIHJlYWN0aXZlIG9iamVjdC4gVGhpcyBjYW4gYCArXHJcbiAgICAgICAgICAgIGBsZWFkIHRvIHVubmVjZXNzYXJ5IHBlcmZvcm1hbmNlIG92ZXJoZWFkLCBhbmQgc2hvdWxkIGJlIGF2b2lkZWQgYnkgYCArXHJcbiAgICAgICAgICAgIGBtYXJraW5nIHRoZSBjb21wb25lbnQgd2l0aCBcXGBtYXJrUmF3XFxgIG9yIHVzaW5nIFxcYHNoYWxsb3dSZWZcXGAgYCArXHJcbiAgICAgICAgICAgIGBpbnN0ZWFkIG9mIFxcYHJlZlxcYC5gLCBgXFxuQ29tcG9uZW50IHRoYXQgd2FzIG1hZGUgcmVhY3RpdmU6IGAsIHR5cGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZUJhc2VWTm9kZSh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBzaGFwZUZsYWcsIGlzQmxvY2tOb2RlLCB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiBndWFyZFJlYWN0aXZlUHJvcHMocHJvcHMpIHtcclxuICAgIGlmICghcHJvcHMpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gaXNQcm94eShwcm9wcykgfHwgSW50ZXJuYWxPYmplY3RLZXkgaW4gcHJvcHNcclxuICAgICAgICA/IGV4dGVuZCh7fSwgcHJvcHMpXHJcbiAgICAgICAgOiBwcm9wcztcclxufVxyXG5mdW5jdGlvbiBjbG9uZVZOb2RlKHZub2RlLCBleHRyYVByb3BzLCBtZXJnZVJlZiA9IGZhbHNlKSB7XHJcbiAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgTk9UIHVzaW5nIHNwcmVhZCBvciBleHRlbmQgdG8gYXZvaWQgdGhlIHJ1bnRpbWVcclxuICAgIC8vIGtleSBlbnVtZXJhdGlvbiBjb3N0LlxyXG4gICAgY29uc3QgeyBwcm9wcywgcmVmLCBwYXRjaEZsYWcsIGNoaWxkcmVuIH0gPSB2bm9kZTtcclxuICAgIGNvbnN0IG1lcmdlZFByb3BzID0gZXh0cmFQcm9wcyA/IG1lcmdlUHJvcHMocHJvcHMgfHwge30sIGV4dHJhUHJvcHMpIDogcHJvcHM7XHJcbiAgICBjb25zdCBjbG9uZWQgPSB7XHJcbiAgICAgICAgX192X2lzVk5vZGU6IHRydWUsXHJcbiAgICAgICAgX192X3NraXA6IHRydWUsXHJcbiAgICAgICAgdHlwZTogdm5vZGUudHlwZSxcclxuICAgICAgICBwcm9wczogbWVyZ2VkUHJvcHMsXHJcbiAgICAgICAga2V5OiBtZXJnZWRQcm9wcyAmJiBub3JtYWxpemVLZXkobWVyZ2VkUHJvcHMpLFxyXG4gICAgICAgIHJlZjogZXh0cmFQcm9wcyAmJiBleHRyYVByb3BzLnJlZlxyXG4gICAgICAgICAgICA/IC8vICMyMDc4IGluIHRoZSBjYXNlIG9mIDxjb21wb25lbnQgOmlzPVwidm5vZGVcIiByZWY9XCJleHRyYVwiLz5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2bm9kZSBpdHNlbGYgYWxyZWFkeSBoYXMgYSByZWYsIGNsb25lVk5vZGUgd2lsbCBuZWVkIHRvIG1lcmdlXHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgcmVmcyBzbyB0aGUgc2luZ2xlIHZub2RlIGNhbiBiZSBzZXQgb24gbXVsdGlwbGUgcmVmc1xyXG4gICAgICAgICAgICAgICAgbWVyZ2VSZWYgJiYgcmVmXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpc0FycmF5KHJlZilcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyByZWYuY29uY2F0KG5vcm1hbGl6ZVJlZihleHRyYVByb3BzKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbcmVmLCBub3JtYWxpemVSZWYoZXh0cmFQcm9wcyldXHJcbiAgICAgICAgICAgICAgICAgICAgOiBub3JtYWxpemVSZWYoZXh0cmFQcm9wcylcclxuICAgICAgICAgICAgOiByZWYsXHJcbiAgICAgICAgc2NvcGVJZDogdm5vZGUuc2NvcGVJZCxcclxuICAgICAgICBzbG90U2NvcGVJZHM6IHZub2RlLnNsb3RTY29wZUlkcyxcclxuICAgICAgICBjaGlsZHJlbjogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHBhdGNoRmxhZyA9PT0gLTEgLyogSE9JU1RFRCAqLyAmJiBpc0FycmF5KGNoaWxkcmVuKVxyXG4gICAgICAgICAgICA/IGNoaWxkcmVuLm1hcChkZWVwQ2xvbmVWTm9kZSlcclxuICAgICAgICAgICAgOiBjaGlsZHJlbixcclxuICAgICAgICB0YXJnZXQ6IHZub2RlLnRhcmdldCxcclxuICAgICAgICB0YXJnZXRBbmNob3I6IHZub2RlLnRhcmdldEFuY2hvcixcclxuICAgICAgICBzdGF0aWNDb3VudDogdm5vZGUuc3RhdGljQ291bnQsXHJcbiAgICAgICAgc2hhcGVGbGFnOiB2bm9kZS5zaGFwZUZsYWcsXHJcbiAgICAgICAgLy8gaWYgdGhlIHZub2RlIGlzIGNsb25lZCB3aXRoIGV4dHJhIHByb3BzLCB3ZSBjYW4gbm8gbG9uZ2VyIGFzc3VtZSBpdHNcclxuICAgICAgICAvLyBleGlzdGluZyBwYXRjaCBmbGFnIHRvIGJlIHJlbGlhYmxlIGFuZCBuZWVkIHRvIGFkZCB0aGUgRlVMTF9QUk9QUyBmbGFnLlxyXG4gICAgICAgIC8vIG5vdGU6IHByZXNlcnZlIGZsYWcgZm9yIGZyYWdtZW50cyBzaW5jZSB0aGV5IHVzZSB0aGUgZmxhZyBmb3IgY2hpbGRyZW5cclxuICAgICAgICAvLyBmYXN0IHBhdGhzIG9ubHkuXHJcbiAgICAgICAgcGF0Y2hGbGFnOiBleHRyYVByb3BzICYmIHZub2RlLnR5cGUgIT09IEZyYWdtZW50XHJcbiAgICAgICAgICAgID8gcGF0Y2hGbGFnID09PSAtMSAvLyBob2lzdGVkIG5vZGVcclxuICAgICAgICAgICAgICAgID8gMTYgLyogRlVMTF9QUk9QUyAqL1xyXG4gICAgICAgICAgICAgICAgOiBwYXRjaEZsYWcgfCAxNiAvKiBGVUxMX1BST1BTICovXHJcbiAgICAgICAgICAgIDogcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wczogdm5vZGUuZHluYW1pY1Byb3BzLFxyXG4gICAgICAgIGR5bmFtaWNDaGlsZHJlbjogdm5vZGUuZHluYW1pY0NoaWxkcmVuLFxyXG4gICAgICAgIGFwcENvbnRleHQ6IHZub2RlLmFwcENvbnRleHQsXHJcbiAgICAgICAgZGlyczogdm5vZGUuZGlycyxcclxuICAgICAgICB0cmFuc2l0aW9uOiB2bm9kZS50cmFuc2l0aW9uLFxyXG4gICAgICAgIC8vIFRoZXNlIHNob3VsZCB0ZWNobmljYWxseSBvbmx5IGJlIG5vbi1udWxsIG9uIG1vdW50ZWQgVk5vZGVzLiBIb3dldmVyLFxyXG4gICAgICAgIC8vIHRoZXkgKnNob3VsZCogYmUgY29waWVkIGZvciBrZXB0LWFsaXZlIHZub2Rlcy4gU28gd2UganVzdCBhbHdheXMgY29weVxyXG4gICAgICAgIC8vIHRoZW0gc2luY2UgdGhlbSBiZWluZyBub24tbnVsbCBkdXJpbmcgYSBtb3VudCBkb2Vzbid0IGFmZmVjdCB0aGUgbG9naWMgYXNcclxuICAgICAgICAvLyB0aGV5IHdpbGwgc2ltcGx5IGJlIG92ZXJ3cml0dGVuLlxyXG4gICAgICAgIGNvbXBvbmVudDogdm5vZGUuY29tcG9uZW50LFxyXG4gICAgICAgIHN1c3BlbnNlOiB2bm9kZS5zdXNwZW5zZSxcclxuICAgICAgICBzc0NvbnRlbnQ6IHZub2RlLnNzQ29udGVudCAmJiBjbG9uZVZOb2RlKHZub2RlLnNzQ29udGVudCksXHJcbiAgICAgICAgc3NGYWxsYmFjazogdm5vZGUuc3NGYWxsYmFjayAmJiBjbG9uZVZOb2RlKHZub2RlLnNzRmFsbGJhY2spLFxyXG4gICAgICAgIGVsOiB2bm9kZS5lbCxcclxuICAgICAgICBhbmNob3I6IHZub2RlLmFuY2hvclxyXG4gICAgfTtcclxuICAgIHJldHVybiBjbG9uZWQ7XHJcbn1cclxuLyoqXHJcbiAqIERldiBvbmx5LCBmb3IgSE1SIG9mIGhvaXN0ZWQgdm5vZGVzIHJldXNlZCBpbiB2LWZvclxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdml0ZWpzL3ZpdGUvaXNzdWVzLzIwMjJcclxuICovXHJcbmZ1bmN0aW9uIGRlZXBDbG9uZVZOb2RlKHZub2RlKSB7XHJcbiAgICBjb25zdCBjbG9uZWQgPSBjbG9uZVZOb2RlKHZub2RlKTtcclxuICAgIGlmIChpc0FycmF5KHZub2RlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIGNsb25lZC5jaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuLm1hcChkZWVwQ2xvbmVWTm9kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmVkO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlVGV4dFZOb2RlKHRleHQgPSAnICcsIGZsYWcgPSAwKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlVk5vZGUoVGV4dCwgbnVsbCwgdGV4dCwgZmxhZyk7XHJcbn1cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNWTm9kZShjb250ZW50LCBudW1iZXJPZk5vZGVzKSB7XHJcbiAgICAvLyBBIHN0YXRpYyB2bm9kZSBjYW4gY29udGFpbiBtdWx0aXBsZSBzdHJpbmdpZmllZCBlbGVtZW50cywgYW5kIHRoZSBudW1iZXJcclxuICAgIC8vIG9mIGVsZW1lbnRzIGlzIG5lY2Vzc2FyeSBmb3IgaHlkcmF0aW9uLlxyXG4gICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZShTdGF0aWMsIG51bGwsIGNvbnRlbnQpO1xyXG4gICAgdm5vZGUuc3RhdGljQ291bnQgPSBudW1iZXJPZk5vZGVzO1xyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlQ29tbWVudFZOb2RlKHRleHQgPSAnJywgXHJcbi8vIHdoZW4gdXNlZCBhcyB0aGUgdi1lbHNlIGJyYW5jaCwgdGhlIGNvbW1lbnQgbm9kZSBtdXN0IGJlIGNyZWF0ZWQgYXMgYVxyXG4vLyBibG9jayB0byBlbnN1cmUgY29ycmVjdCB1cGRhdGVzLlxyXG5hc0Jsb2NrID0gZmFsc2UpIHtcclxuICAgIHJldHVybiBhc0Jsb2NrXHJcbiAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUJsb2NrKENvbW1lbnQsIG51bGwsIHRleHQpKVxyXG4gICAgICAgIDogY3JlYXRlVk5vZGUoQ29tbWVudCwgbnVsbCwgdGV4dCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplVk5vZGUoY2hpbGQpIHtcclxuICAgIGlmIChjaGlsZCA9PSBudWxsIHx8IHR5cGVvZiBjaGlsZCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgLy8gZW1wdHkgcGxhY2Vob2xkZXJcclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoQ29tbWVudCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KGNoaWxkKSkge1xyXG4gICAgICAgIC8vIGZyYWdtZW50XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKEZyYWdtZW50LCBudWxsLCBcclxuICAgICAgICAvLyAjMzY2NiwgYXZvaWQgcmVmZXJlbmNlIHBvbGx1dGlvbiB3aGVuIHJldXNpbmcgdm5vZGVcclxuICAgICAgICBjaGlsZC5zbGljZSgpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAvLyBhbHJlYWR5IHZub2RlLCB0aGlzIHNob3VsZCBiZSB0aGUgbW9zdCBjb21tb24gc2luY2UgY29tcGlsZWQgdGVtcGxhdGVzXHJcbiAgICAgICAgLy8gYWx3YXlzIHByb2R1Y2UgYWxsLXZub2RlIGNoaWxkcmVuIGFycmF5c1xyXG4gICAgICAgIHJldHVybiBjbG9uZUlmTW91bnRlZChjaGlsZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzdHJpbmdzIGFuZCBudW1iZXJzXHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKFRleHQsIG51bGwsIFN0cmluZyhjaGlsZCkpO1xyXG4gICAgfVxyXG59XHJcbi8vIG9wdGltaXplZCBub3JtYWxpemF0aW9uIGZvciB0ZW1wbGF0ZS1jb21waWxlZCByZW5kZXIgZm5zXHJcbmZ1bmN0aW9uIGNsb25lSWZNb3VudGVkKGNoaWxkKSB7XHJcbiAgICByZXR1cm4gY2hpbGQuZWwgPT09IG51bGwgfHwgY2hpbGQubWVtbyA/IGNoaWxkIDogY2xvbmVWTm9kZShjaGlsZCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuKSB7XHJcbiAgICBsZXQgdHlwZSA9IDA7XHJcbiAgICBjb25zdCB7IHNoYXBlRmxhZyB9ID0gdm5vZGU7XHJcbiAgICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xyXG4gICAgICAgIGNoaWxkcmVuID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgdHlwZSA9IDE2IC8qIEFSUkFZX0NISUxEUkVOICovO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAoMSAvKiBFTEVNRU5UICovIHwgNjQgLyogVEVMRVBPUlQgKi8pKSB7XHJcbiAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSBzbG90IHRvIHBsYWluIGNoaWxkcmVuIGZvciBwbGFpbiBlbGVtZW50IGFuZCBUZWxlcG9ydFxyXG4gICAgICAgICAgICBjb25zdCBzbG90ID0gY2hpbGRyZW4uZGVmYXVsdDtcclxuICAgICAgICAgICAgaWYgKHNsb3QpIHtcclxuICAgICAgICAgICAgICAgIC8vIF9jIG1hcmtlciBpcyBhZGRlZCBieSB3aXRoQ3R4KCkgaW5kaWNhdGluZyB0aGlzIGlzIGEgY29tcGlsZWQgc2xvdFxyXG4gICAgICAgICAgICAgICAgc2xvdC5fYyAmJiAoc2xvdC5fZCA9IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBzbG90KCkpO1xyXG4gICAgICAgICAgICAgICAgc2xvdC5fYyAmJiAoc2xvdC5fZCA9IHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSAzMiAvKiBTTE9UU19DSElMRFJFTiAqLztcclxuICAgICAgICAgICAgY29uc3Qgc2xvdEZsYWcgPSBjaGlsZHJlbi5fO1xyXG4gICAgICAgICAgICBpZiAoIXNsb3RGbGFnICYmICEoSW50ZXJuYWxPYmplY3RLZXkgaW4gY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5fY3R4ID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNsb3RGbGFnID09PSAzIC8qIEZPUldBUkRFRCAqLyAmJiBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIC8vIGEgY2hpbGQgY29tcG9uZW50IHJlY2VpdmVzIGZvcndhcmRlZCBzbG90cyBmcm9tIHRoZSBwYXJlbnQuXHJcbiAgICAgICAgICAgICAgICAvLyBpdHMgc2xvdCB0eXBlIGlzIGRldGVybWluZWQgYnkgaXRzIHBhcmVudCdzIHNsb3QgdHlwZS5cclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2Uuc2xvdHMuXyA9PT0gMSAvKiBTVEFCTEUgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5fID0gMSAvKiBTVEFCTEUgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5fID0gMiAvKiBEWU5BTUlDICovO1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLnBhdGNoRmxhZyB8PSAxMDI0IC8qIERZTkFNSUNfU0xPVFMgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGNoaWxkcmVuKSkge1xyXG4gICAgICAgIGNoaWxkcmVuID0geyBkZWZhdWx0OiBjaGlsZHJlbiwgX2N0eDogY3VycmVudFJlbmRlcmluZ0luc3RhbmNlIH07XHJcbiAgICAgICAgdHlwZSA9IDMyIC8qIFNMT1RTX0NISUxEUkVOICovO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY2hpbGRyZW4gPSBTdHJpbmcoY2hpbGRyZW4pO1xyXG4gICAgICAgIC8vIGZvcmNlIHRlbGVwb3J0IGNoaWxkcmVuIHRvIGFycmF5IHNvIGl0IGNhbiBiZSBtb3ZlZCBhcm91bmRcclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNjQgLyogVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgdHlwZSA9IDE2IC8qIEFSUkFZX0NISUxEUkVOICovO1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSA4IC8qIFRFWFRfQ0hJTERSRU4gKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdm5vZGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIHZub2RlLnNoYXBlRmxhZyB8PSB0eXBlO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlUHJvcHMoLi4uYXJncykge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCB0b01lcmdlID0gYXJnc1tpXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0b01lcmdlKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXQuY2xhc3MgIT09IHRvTWVyZ2UuY2xhc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXQuY2xhc3MgPSBub3JtYWxpemVDbGFzcyhbcmV0LmNsYXNzLCB0b01lcmdlLmNsYXNzXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXQuc3R5bGUgPSBub3JtYWxpemVTdHlsZShbcmV0LnN0eWxlLCB0b01lcmdlLnN0eWxlXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNPbihrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IHJldFtrZXldO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5jb21pbmcgPSB0b01lcmdlW2tleV07XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5jb21pbmcgJiZcclxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZyAhPT0gaW5jb21pbmcgJiZcclxuICAgICAgICAgICAgICAgICAgICAhKGlzQXJyYXkoZXhpc3RpbmcpICYmIGV4aXN0aW5nLmluY2x1ZGVzKGluY29taW5nKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRba2V5XSA9IGV4aXN0aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBpbmNvbWluZylcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBpbmNvbWluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXRba2V5XSA9IHRvTWVyZ2Vba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuZnVuY3Rpb24gaW52b2tlVk5vZGVIb29rKGhvb2ssIGluc3RhbmNlLCB2bm9kZSwgcHJldlZOb2RlID0gbnVsbCkge1xyXG4gICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgaW5zdGFuY2UsIDcgLyogVk5PREVfSE9PSyAqLywgW1xyXG4gICAgICAgIHZub2RlLFxyXG4gICAgICAgIHByZXZWTm9kZVxyXG4gICAgXSk7XHJcbn1cblxuLyoqXHJcbiAqIEFjdHVhbCBpbXBsZW1lbnRhdGlvblxyXG4gKi9cclxuZnVuY3Rpb24gcmVuZGVyTGlzdChzb3VyY2UsIHJlbmRlckl0ZW0sIGNhY2hlLCBpbmRleCkge1xyXG4gICAgbGV0IHJldDtcclxuICAgIGNvbnN0IGNhY2hlZCA9IChjYWNoZSAmJiBjYWNoZVtpbmRleF0pO1xyXG4gICAgaWYgKGlzQXJyYXkoc291cmNlKSB8fCBpc1N0cmluZyhzb3VyY2UpKSB7XHJcbiAgICAgICAgcmV0ID0gbmV3IEFycmF5KHNvdXJjZS5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gc291cmNlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICByZXRbaV0gPSByZW5kZXJJdGVtKHNvdXJjZVtpXSwgaSwgdW5kZWZpbmVkLCBjYWNoZWQgJiYgY2FjaGVkW2ldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2Ygc291cmNlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIU51bWJlci5pc0ludGVnZXIoc291cmNlKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBUaGUgdi1mb3IgcmFuZ2UgZXhwZWN0IGFuIGludGVnZXIgdmFsdWUgYnV0IGdvdCAke3NvdXJjZX0uYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0ID0gbmV3IEFycmF5KHNvdXJjZSk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2U7IGkrKykge1xyXG4gICAgICAgICAgICByZXRbaV0gPSByZW5kZXJJdGVtKGkgKyAxLCBpLCB1bmRlZmluZWQsIGNhY2hlZCAmJiBjYWNoZWRbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHNvdXJjZSkpIHtcclxuICAgICAgICBpZiAoc291cmNlW1N5bWJvbC5pdGVyYXRvcl0pIHtcclxuICAgICAgICAgICAgcmV0ID0gQXJyYXkuZnJvbShzb3VyY2UsIChpdGVtLCBpKSA9PiByZW5kZXJJdGVtKGl0ZW0sIGksIHVuZGVmaW5lZCwgY2FjaGVkICYmIGNhY2hlZFtpXSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XHJcbiAgICAgICAgICAgIHJldCA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XHJcbiAgICAgICAgICAgICAgICByZXRbaV0gPSByZW5kZXJJdGVtKHNvdXJjZVtrZXldLCBrZXksIGksIGNhY2hlZCAmJiBjYWNoZWRbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0ID0gW107XHJcbiAgICB9XHJcbiAgICBpZiAoY2FjaGUpIHtcclxuICAgICAgICBjYWNoZVtpbmRleF0gPSByZXQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XG5cbi8qKlxyXG4gKiBDb21waWxlciBydW50aW1lIGhlbHBlciBmb3IgY3JlYXRpbmcgZHluYW1pYyBzbG90cyBvYmplY3RcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVNsb3RzKHNsb3RzLCBkeW5hbWljU2xvdHMpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHluYW1pY1Nsb3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgc2xvdCA9IGR5bmFtaWNTbG90c1tpXTtcclxuICAgICAgICAvLyBhcnJheSBvZiBkeW5hbWljIHNsb3QgZ2VuZXJhdGVkIGJ5IDx0ZW1wbGF0ZSB2LWZvcj1cIi4uLlwiICNbLi4uXT5cclxuICAgICAgICBpZiAoaXNBcnJheShzbG90KSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNsb3QubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIHNsb3RzW3Nsb3Rbal0ubmFtZV0gPSBzbG90W2pdLmZuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNsb3QpIHtcclxuICAgICAgICAgICAgLy8gY29uZGl0aW9uYWwgc2luZ2xlIHNsb3QgZ2VuZXJhdGVkIGJ5IDx0ZW1wbGF0ZSB2LWlmPVwiLi4uXCIgI2Zvbz5cclxuICAgICAgICAgICAgc2xvdHNbc2xvdC5uYW1lXSA9IHNsb3QuZm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNsb3RzO1xyXG59XG5cbi8qKlxyXG4gKiBDb21waWxlciBydW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIGA8c2xvdC8+YFxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVuZGVyU2xvdChzbG90cywgbmFtZSwgcHJvcHMgPSB7fSwgXHJcbi8vIHRoaXMgaXMgbm90IGEgdXNlci1mYWNpbmcgZnVuY3Rpb24sIHNvIHRoZSBmYWxsYmFjayBpcyBhbHdheXMgZ2VuZXJhdGVkIGJ5XHJcbi8vIHRoZSBjb21waWxlciBhbmQgZ3VhcmFudGVlZCB0byBiZSBhIGZ1bmN0aW9uIHJldHVybmluZyBhbiBhcnJheVxyXG5mYWxsYmFjaywgbm9TbG90dGVkKSB7XHJcbiAgICBpZiAoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLmlzQ0UpIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoJ3Nsb3QnLCBuYW1lID09PSAnZGVmYXVsdCcgPyBudWxsIDogeyBuYW1lIH0sIGZhbGxiYWNrICYmIGZhbGxiYWNrKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IHNsb3QgPSBzbG90c1tuYW1lXTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgc2xvdCAmJiBzbG90Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB3YXJuKGBTU1Itb3B0aW1pemVkIHNsb3QgZnVuY3Rpb24gZGV0ZWN0ZWQgaW4gYSBub24tU1NSLW9wdGltaXplZCByZW5kZXIgYCArXHJcbiAgICAgICAgICAgIGBmdW5jdGlvbi4gWW91IG5lZWQgdG8gbWFyayB0aGlzIGNvbXBvbmVudCB3aXRoICRkeW5hbWljLXNsb3RzIGluIHRoZSBgICtcclxuICAgICAgICAgICAgYHBhcmVudCB0ZW1wbGF0ZS5gKTtcclxuICAgICAgICBzbG90ID0gKCkgPT4gW107XHJcbiAgICB9XHJcbiAgICAvLyBhIGNvbXBpbGVkIHNsb3QgZGlzYWJsZXMgYmxvY2sgdHJhY2tpbmcgYnkgZGVmYXVsdCB0byBhdm9pZCBtYW51YWxcclxuICAgIC8vIGludm9jYXRpb24gaW50ZXJmZXJpbmcgd2l0aCB0ZW1wbGF0ZS1iYXNlZCBibG9jayB0cmFja2luZywgYnV0IGluXHJcbiAgICAvLyBgcmVuZGVyU2xvdGAgd2UgY2FuIGJlIHN1cmUgdGhhdCBpdCdzIHRlbXBsYXRlLWJhc2VkIHNvIHdlIGNhbiBmb3JjZVxyXG4gICAgLy8gZW5hYmxlIGl0LlxyXG4gICAgaWYgKHNsb3QgJiYgc2xvdC5fYykge1xyXG4gICAgICAgIHNsb3QuX2QgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIG9wZW5CbG9jaygpO1xyXG4gICAgY29uc3QgdmFsaWRTbG90Q29udGVudCA9IHNsb3QgJiYgZW5zdXJlVmFsaWRWTm9kZShzbG90KHByb3BzKSk7XHJcbiAgICBjb25zdCByZW5kZXJlZCA9IGNyZWF0ZUJsb2NrKEZyYWdtZW50LCB7IGtleTogcHJvcHMua2V5IHx8IGBfJHtuYW1lfWAgfSwgdmFsaWRTbG90Q29udGVudCB8fCAoZmFsbGJhY2sgPyBmYWxsYmFjaygpIDogW10pLCB2YWxpZFNsb3RDb250ZW50ICYmIHNsb3RzLl8gPT09IDEgLyogU1RBQkxFICovXHJcbiAgICAgICAgPyA2NCAvKiBTVEFCTEVfRlJBR01FTlQgKi9cclxuICAgICAgICA6IC0yIC8qIEJBSUwgKi8pO1xyXG4gICAgaWYgKCFub1Nsb3R0ZWQgJiYgcmVuZGVyZWQuc2NvcGVJZCkge1xyXG4gICAgICAgIHJlbmRlcmVkLnNsb3RTY29wZUlkcyA9IFtyZW5kZXJlZC5zY29wZUlkICsgJy1zJ107XHJcbiAgICB9XHJcbiAgICBpZiAoc2xvdCAmJiBzbG90Ll9jKSB7XHJcbiAgICAgICAgc2xvdC5fZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVuZGVyZWQ7XHJcbn1cclxuZnVuY3Rpb24gZW5zdXJlVmFsaWRWTm9kZSh2bm9kZXMpIHtcclxuICAgIHJldHVybiB2bm9kZXMuc29tZShjaGlsZCA9PiB7XHJcbiAgICAgICAgaWYgKCFpc1ZOb2RlKGNoaWxkKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IENvbW1lbnQpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gRnJhZ21lbnQgJiZcclxuICAgICAgICAgICAgIWVuc3VyZVZhbGlkVk5vZGUoY2hpbGQuY2hpbGRyZW4pKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KVxyXG4gICAgICAgID8gdm5vZGVzXHJcbiAgICAgICAgOiBudWxsO1xyXG59XG5cbi8qKlxyXG4gKiBGb3IgcHJlZml4aW5nIGtleXMgaW4gdi1vbj1cIm9ialwiIHdpdGggXCJvblwiXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiB0b0hhbmRsZXJzKG9iaikge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc09iamVjdChvYmopKSB7XHJcbiAgICAgICAgd2Fybihgdi1vbiB3aXRoIG5vIGFyZ3VtZW50IGV4cGVjdHMgYW4gb2JqZWN0IHZhbHVlLmApO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICByZXRbdG9IYW5kbGVyS2V5KGtleSldID0gb2JqW2tleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XG5cbi8qKlxyXG4gKiAjMjQzNyBJbiBWdWUgMywgZnVuY3Rpb25hbCBjb21wb25lbnRzIGRvIG5vdCBoYXZlIGEgcHVibGljIGluc3RhbmNlIHByb3h5IGJ1dFxyXG4gKiB0aGV5IGV4aXN0IGluIHRoZSBpbnRlcm5hbCBwYXJlbnQgY2hhaW4uIEZvciBjb2RlIHRoYXQgcmVsaWVzIG9uIHRyYXZlcnNpbmdcclxuICogcHVibGljICRwYXJlbnQgY2hhaW5zLCBza2lwIGZ1bmN0aW9uYWwgb25lcyBhbmQgZ28gdG8gdGhlIHBhcmVudCBpbnN0ZWFkLlxyXG4gKi9cclxuY29uc3QgZ2V0UHVibGljSW5zdGFuY2UgPSAoaSkgPT4ge1xyXG4gICAgaWYgKCFpKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgaWYgKGlzU3RhdGVmdWxDb21wb25lbnQoaSkpXHJcbiAgICAgICAgcmV0dXJuIGdldEV4cG9zZVByb3h5KGkpIHx8IGkucHJveHk7XHJcbiAgICByZXR1cm4gZ2V0UHVibGljSW5zdGFuY2UoaS5wYXJlbnQpO1xyXG59O1xyXG5jb25zdCBwdWJsaWNQcm9wZXJ0aWVzTWFwID0gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIHtcclxuICAgICQ6IGkgPT4gaSxcclxuICAgICRlbDogaSA9PiBpLnZub2RlLmVsLFxyXG4gICAgJGRhdGE6IGkgPT4gaS5kYXRhLFxyXG4gICAgJHByb3BzOiBpID0+ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaS5wcm9wcykgOiBpLnByb3BzKSxcclxuICAgICRhdHRyczogaSA9PiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGkuYXR0cnMpIDogaS5hdHRycyksXHJcbiAgICAkc2xvdHM6IGkgPT4gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpLnNsb3RzKSA6IGkuc2xvdHMpLFxyXG4gICAgJHJlZnM6IGkgPT4gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpLnJlZnMpIDogaS5yZWZzKSxcclxuICAgICRwYXJlbnQ6IGkgPT4gZ2V0UHVibGljSW5zdGFuY2UoaS5wYXJlbnQpLFxyXG4gICAgJHJvb3Q6IGkgPT4gZ2V0UHVibGljSW5zdGFuY2UoaS5yb290KSxcclxuICAgICRlbWl0OiBpID0+IGkuZW1pdCxcclxuICAgICRvcHRpb25zOiBpID0+IChfX1ZVRV9PUFRJT05TX0FQSV9fID8gcmVzb2x2ZU1lcmdlZE9wdGlvbnMoaSkgOiBpLnR5cGUpLFxyXG4gICAgJGZvcmNlVXBkYXRlOiBpID0+ICgpID0+IHF1ZXVlSm9iKGkudXBkYXRlKSxcclxuICAgICRuZXh0VGljazogaSA9PiBuZXh0VGljay5iaW5kKGkucHJveHkpLFxyXG4gICAgJHdhdGNoOiBpID0+IChfX1ZVRV9PUFRJT05TX0FQSV9fID8gaW5zdGFuY2VXYXRjaC5iaW5kKGkpIDogTk9PUClcclxufSk7XHJcbmNvbnN0IFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyA9IHtcclxuICAgIGdldCh7IF86IGluc3RhbmNlIH0sIGtleSkge1xyXG4gICAgICAgIGNvbnN0IHsgY3R4LCBzZXR1cFN0YXRlLCBkYXRhLCBwcm9wcywgYWNjZXNzQ2FjaGUsIHR5cGUsIGFwcENvbnRleHQgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgIC8vIGZvciBpbnRlcm5hbCBmb3JtYXR0ZXJzIHRvIGtub3cgdGhhdCB0aGlzIGlzIGEgVnVlIGluc3RhbmNlXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXkgPT09ICdfX2lzVnVlJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcHJpb3JpdGl6ZSA8c2NyaXB0IHNldHVwPiBiaW5kaW5ncyBkdXJpbmcgZGV2LlxyXG4gICAgICAgIC8vIHRoaXMgYWxsb3dzIGV2ZW4gcHJvcGVydGllcyB0aGF0IHN0YXJ0IHdpdGggXyBvciAkIHRvIGJlIHVzZWQgLSBzbyB0aGF0XHJcbiAgICAgICAgLy8gaXQgYWxpZ25zIHdpdGggdGhlIHByb2R1Y3Rpb24gYmVoYXZpb3Igd2hlcmUgdGhlIHJlbmRlciBmbiBpcyBpbmxpbmVkIGFuZFxyXG4gICAgICAgIC8vIGluZGVlZCBoYXMgYWNjZXNzIHRvIGFsbCBkZWNsYXJlZCB2YXJpYWJsZXMuXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICBzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiZcclxuICAgICAgICAgICAgc2V0dXBTdGF0ZS5fX2lzU2NyaXB0U2V0dXAgJiZcclxuICAgICAgICAgICAgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNldHVwU3RhdGVba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZGF0YSAvIHByb3BzIC8gY3R4XHJcbiAgICAgICAgLy8gVGhpcyBnZXR0ZXIgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IHByb3BlcnR5IGFjY2VzcyBvbiB0aGUgcmVuZGVyIGNvbnRleHRcclxuICAgICAgICAvLyBkdXJpbmcgcmVuZGVyIGFuZCBpcyBhIG1ham9yIGhvdHNwb3QuIFRoZSBtb3N0IGV4cGVuc2l2ZSBwYXJ0IG9mIHRoaXNcclxuICAgICAgICAvLyBpcyB0aGUgbXVsdGlwbGUgaGFzT3duKCkgY2FsbHMuIEl0J3MgbXVjaCBmYXN0ZXIgdG8gZG8gYSBzaW1wbGUgcHJvcGVydHlcclxuICAgICAgICAvLyBhY2Nlc3Mgb24gYSBwbGFpbiBvYmplY3QsIHNvIHdlIHVzZSBhbiBhY2Nlc3NDYWNoZSBvYmplY3QgKHdpdGggbnVsbFxyXG4gICAgICAgIC8vIHByb3RvdHlwZSkgdG8gbWVtb2l6ZSB3aGF0IGFjY2VzcyB0eXBlIGEga2V5IGNvcnJlc3BvbmRzIHRvLlxyXG4gICAgICAgIGxldCBub3JtYWxpemVkUHJvcHM7XHJcbiAgICAgICAgaWYgKGtleVswXSAhPT0gJyQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSBhY2Nlc3NDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICBpZiAobiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDEgLyogU0VUVVAgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR1cFN0YXRlW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyIC8qIERBVEEgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0IC8qIENPTlRFWFQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHhba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDMgLyogUFJPUFMgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQ6IGp1c3QgZmFsbHRocm91Z2hcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAxIC8qIFNFVFVQICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHVwU3RhdGVba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGRhdGEsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAyIC8qIERBVEEgKi87XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAvLyBvbmx5IGNhY2hlIG90aGVyIHByb3BlcnRpZXMgd2hlbiBpbnN0YW5jZSBoYXMgZGVjbGFyZWQgKHRodXMgc3RhYmxlKVxyXG4gICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICAobm9ybWFsaXplZFByb3BzID0gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdKSAmJlxyXG4gICAgICAgICAgICAgICAgaGFzT3duKG5vcm1hbGl6ZWRQcm9wcywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDMgLyogUFJPUFMgKi87XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjdHggIT09IEVNUFRZX09CSiAmJiBoYXNPd24oY3R4LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gNCAvKiBDT05URVhUICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eFtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFfX1ZVRV9PUFRJT05TX0FQSV9fIHx8IHNob3VsZENhY2hlQWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMCAvKiBPVEhFUiAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwdWJsaWNHZXR0ZXIgPSBwdWJsaWNQcm9wZXJ0aWVzTWFwW2tleV07XHJcbiAgICAgICAgbGV0IGNzc01vZHVsZSwgZ2xvYmFsUHJvcGVydGllcztcclxuICAgICAgICAvLyBwdWJsaWMgJHh4eCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgaWYgKHB1YmxpY0dldHRlcikge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnJGF0dHJzJykge1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogR0VUICovLCBrZXkpO1xyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHB1YmxpY0dldHRlcihpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgIC8vIGNzcyBtb2R1bGUgKGluamVjdGVkIGJ5IHZ1ZS1sb2FkZXIpXHJcbiAgICAgICAgKGNzc01vZHVsZSA9IHR5cGUuX19jc3NNb2R1bGVzKSAmJlxyXG4gICAgICAgICAgICAoY3NzTW9kdWxlID0gY3NzTW9kdWxlW2tleV0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjc3NNb2R1bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGN0eCAhPT0gRU1QVFlfT0JKICYmIGhhc093bihjdHgsIGtleSkpIHtcclxuICAgICAgICAgICAgLy8gdXNlciBtYXkgc2V0IGN1c3RvbSBwcm9wZXJ0aWVzIHRvIGB0aGlzYCB0aGF0IHN0YXJ0IHdpdGggYCRgXHJcbiAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSA0IC8qIENPTlRFWFQgKi87XHJcbiAgICAgICAgICAgIHJldHVybiBjdHhba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgLy8gZ2xvYmFsIHByb3BlcnRpZXNcclxuICAgICAgICAoKGdsb2JhbFByb3BlcnRpZXMgPSBhcHBDb250ZXh0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzKSxcclxuICAgICAgICAgICAgaGFzT3duKGdsb2JhbFByb3BlcnRpZXMsIGtleSkpKSB7XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxQcm9wZXJ0aWVzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSAmJlxyXG4gICAgICAgICAgICAoIWlzU3RyaW5nKGtleSkgfHxcclxuICAgICAgICAgICAgICAgIC8vICMxMDkxIGF2b2lkIGludGVybmFsIGlzUmVmL2lzVk5vZGUgY2hlY2tzIG9uIGNvbXBvbmVudCBpbnN0YW5jZSBsZWFkaW5nXHJcbiAgICAgICAgICAgICAgICAvLyB0byBpbmZpbml0ZSB3YXJuaW5nIGxvb3BcclxuICAgICAgICAgICAgICAgIGtleS5pbmRleE9mKCdfX3YnKSAhPT0gMCkpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEgIT09IEVNUFRZX09CSiAmJlxyXG4gICAgICAgICAgICAgICAgKGtleVswXSA9PT0gJyQnIHx8IGtleVswXSA9PT0gJ18nKSAmJlxyXG4gICAgICAgICAgICAgICAgaGFzT3duKGRhdGEsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gbXVzdCBiZSBhY2Nlc3NlZCB2aWEgJGRhdGEgYmVjYXVzZSBpdCBzdGFydHMgd2l0aCBhIHJlc2VydmVkIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBjaGFyYWN0ZXIgKFwiJFwiIG9yIFwiX1wiKSBhbmQgaXMgbm90IHByb3hpZWQgb24gdGhlIHJlbmRlciBjb250ZXh0LmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGluc3RhbmNlID09PSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gd2FzIGFjY2Vzc2VkIGR1cmluZyByZW5kZXIgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGJ1dCBpcyBub3QgZGVmaW5lZCBvbiBpbnN0YW5jZS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzZXQoeyBfOiBpbnN0YW5jZSB9LCBrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgeyBkYXRhLCBzZXR1cFN0YXRlLCBjdHggfSA9IGluc3RhbmNlO1xyXG4gICAgICAgIGlmIChzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHtcclxuICAgICAgICAgICAgc2V0dXBTdGF0ZVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGRhdGEsIGtleSkpIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChoYXNPd24oaW5zdGFuY2UucHJvcHMsIGtleSkpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBBdHRlbXB0aW5nIHRvIG11dGF0ZSBwcm9wIFwiJHtrZXl9XCIuIFByb3BzIGFyZSByZWFkb25seS5gLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGtleVswXSA9PT0gJyQnICYmIGtleS5zbGljZSgxKSBpbiBpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEF0dGVtcHRpbmcgdG8gbXV0YXRlIHB1YmxpYyBwcm9wZXJ0eSBcIiR7a2V5fVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgUHJvcGVydGllcyBzdGFydGluZyB3aXRoICQgYXJlIHJlc2VydmVkIGFuZCByZWFkb25seS5gLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5IGluIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGN0eFtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG4gICAgaGFzKHsgXzogeyBkYXRhLCBzZXR1cFN0YXRlLCBhY2Nlc3NDYWNoZSwgY3R4LCBhcHBDb250ZXh0LCBwcm9wc09wdGlvbnMgfSB9LCBrZXkpIHtcclxuICAgICAgICBsZXQgbm9ybWFsaXplZFByb3BzO1xyXG4gICAgICAgIHJldHVybiAoISFhY2Nlc3NDYWNoZVtrZXldIHx8XHJcbiAgICAgICAgICAgIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGRhdGEsIGtleSkpIHx8XHJcbiAgICAgICAgICAgIChzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHx8XHJcbiAgICAgICAgICAgICgobm9ybWFsaXplZFByb3BzID0gcHJvcHNPcHRpb25zWzBdKSAmJiBoYXNPd24obm9ybWFsaXplZFByb3BzLCBrZXkpKSB8fFxyXG4gICAgICAgICAgICBoYXNPd24oY3R4LCBrZXkpIHx8XHJcbiAgICAgICAgICAgIGhhc093bihwdWJsaWNQcm9wZXJ0aWVzTWFwLCBrZXkpIHx8XHJcbiAgICAgICAgICAgIGhhc093bihhcHBDb250ZXh0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLCBrZXkpKTtcclxuICAgIH0sXHJcbiAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcikge1xyXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmdldCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yLmdldCgpLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGVzY3JpcHRvci52YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yLnZhbHVlLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpO1xyXG4gICAgfVxyXG59O1xyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFmYWxzZSkge1xyXG4gICAgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLm93bktleXMgPSAodGFyZ2V0KSA9PiB7XHJcbiAgICAgICAgd2FybihgQXZvaWQgYXBwIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIGVudW1lcmF0aW5nIGtleXMgb24gYSBjb21wb25lbnQgaW5zdGFuY2UuIGAgK1xyXG4gICAgICAgICAgICBgVGhlIGtleXMgd2lsbCBiZSBlbXB0eSBpbiBwcm9kdWN0aW9uIG1vZGUgdG8gYXZvaWQgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuYCk7XHJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBSdW50aW1lQ29tcGlsZWRQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMgPSAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLCB7XHJcbiAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAvLyBmYXN0IHBhdGggZm9yIHVuc2NvcGFibGVzIHdoZW4gdXNpbmcgYHdpdGhgIGJsb2NrXHJcbiAgICAgICAgaWYgKGtleSA9PT0gU3ltYm9sLnVuc2NvcGFibGVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycy5nZXQodGFyZ2V0LCBrZXksIHRhcmdldCk7XHJcbiAgICB9LFxyXG4gICAgaGFzKF8sIGtleSkge1xyXG4gICAgICAgIGNvbnN0IGhhcyA9IGtleVswXSAhPT0gJ18nICYmICFpc0dsb2JhbGx5V2hpdGVsaXN0ZWQoa2V5KTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFoYXMgJiYgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLmhhcyhfLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gc2hvdWxkIG5vdCBzdGFydCB3aXRoIF8gd2hpY2ggaXMgYSByZXNlcnZlZCBwcmVmaXggZm9yIFZ1ZSBpbnRlcm5hbHMuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBoYXM7XHJcbiAgICB9XHJcbn0pO1xyXG4vLyBkZXYgb25seVxyXG4vLyBJbiBkZXYgbW9kZSwgdGhlIHByb3h5IHRhcmdldCBleHBvc2VzIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgc2VlbiBvbiBgdGhpc2BcclxuLy8gZm9yIGVhc2llciBjb25zb2xlIGluc3BlY3Rpb24uIEluIHByb2QgbW9kZSBpdCB3aWxsIGJlIGFuIGVtcHR5IG9iamVjdCBzb1xyXG4vLyB0aGVzZSBwcm9wZXJ0aWVzIGRlZmluaXRpb25zIGNhbiBiZSBza2lwcGVkLlxyXG5mdW5jdGlvbiBjcmVhdGVEZXZSZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB7fTtcclxuICAgIC8vIGV4cG9zZSBpbnRlcm5hbCBpbnN0YW5jZSBmb3IgcHJveHkgaGFuZGxlcnNcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfYCwge1xyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBnZXQ6ICgpID0+IGluc3RhbmNlXHJcbiAgICB9KTtcclxuICAgIC8vIGV4cG9zZSBwdWJsaWMgcHJvcGVydGllc1xyXG4gICAgT2JqZWN0LmtleXMocHVibGljUHJvcGVydGllc01hcCkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHB1YmxpY1Byb3BlcnRpZXNNYXBba2V5XShpbnN0YW5jZSksXHJcbiAgICAgICAgICAgIC8vIGludGVyY2VwdGVkIGJ5IHRoZSBwcm94eSBzbyBubyBuZWVkIGZvciBpbXBsZW1lbnRhdGlvbixcclxuICAgICAgICAgICAgLy8gYnV0IG5lZWRlZCB0byBwcmV2ZW50IHNldCBlcnJvcnNcclxuICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuZnVuY3Rpb24gZXhwb3NlUHJvcHNPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgY3R4LCBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdIH0gPSBpbnN0YW5jZTtcclxuICAgIGlmIChwcm9wc09wdGlvbnMpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhwcm9wc09wdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBpbnN0YW5jZS5wcm9wc1trZXldLFxyXG4gICAgICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbi8vIGRldiBvbmx5XHJcbmZ1bmN0aW9uIGV4cG9zZVNldHVwU3RhdGVPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgY3R4LCBzZXR1cFN0YXRlIH0gPSBpbnN0YW5jZTtcclxuICAgIE9iamVjdC5rZXlzKHRvUmF3KHNldHVwU3RhdGUpKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaWYgKCFzZXR1cFN0YXRlLl9faXNTY3JpcHRTZXR1cCkge1xyXG4gICAgICAgICAgICBpZiAoa2V5WzBdID09PSAnJCcgfHwga2V5WzBdID09PSAnXycpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHNldHVwKCkgcmV0dXJuIHByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gc2hvdWxkIG5vdCBzdGFydCB3aXRoIFwiJFwiIG9yIFwiX1wiIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGB3aGljaCBhcmUgcmVzZXJ2ZWQgcHJlZml4ZXMgZm9yIFZ1ZSBpbnRlcm5hbHMuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBzZXR1cFN0YXRlW2tleV0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IE5PT1BcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cblxuY29uc3QgZW1wdHlBcHBDb250ZXh0ID0gY3JlYXRlQXBwQ29udGV4dCgpO1xyXG5sZXQgdWlkJDEgPSAwO1xyXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZSh2bm9kZSwgcGFyZW50LCBzdXNwZW5zZSkge1xyXG4gICAgY29uc3QgdHlwZSA9IHZub2RlLnR5cGU7XHJcbiAgICAvLyBpbmhlcml0IHBhcmVudCBhcHAgY29udGV4dCAtIG9yIC0gaWYgcm9vdCwgYWRvcHQgZnJvbSByb290IHZub2RlXHJcbiAgICBjb25zdCBhcHBDb250ZXh0ID0gKHBhcmVudCA/IHBhcmVudC5hcHBDb250ZXh0IDogdm5vZGUuYXBwQ29udGV4dCkgfHwgZW1wdHlBcHBDb250ZXh0O1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSB7XHJcbiAgICAgICAgdWlkOiB1aWQkMSsrLFxyXG4gICAgICAgIHZub2RlLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgcGFyZW50LFxyXG4gICAgICAgIGFwcENvbnRleHQsXHJcbiAgICAgICAgcm9vdDogbnVsbCxcclxuICAgICAgICBuZXh0OiBudWxsLFxyXG4gICAgICAgIHN1YlRyZWU6IG51bGwsXHJcbiAgICAgICAgZWZmZWN0OiBudWxsLFxyXG4gICAgICAgIHVwZGF0ZTogbnVsbCxcclxuICAgICAgICBzY29wZTogbmV3IEVmZmVjdFNjb3BlKHRydWUgLyogZGV0YWNoZWQgKi8pLFxyXG4gICAgICAgIHJlbmRlcjogbnVsbCxcclxuICAgICAgICBwcm94eTogbnVsbCxcclxuICAgICAgICBleHBvc2VkOiBudWxsLFxyXG4gICAgICAgIGV4cG9zZVByb3h5OiBudWxsLFxyXG4gICAgICAgIHdpdGhQcm94eTogbnVsbCxcclxuICAgICAgICBwcm92aWRlczogcGFyZW50ID8gcGFyZW50LnByb3ZpZGVzIDogT2JqZWN0LmNyZWF0ZShhcHBDb250ZXh0LnByb3ZpZGVzKSxcclxuICAgICAgICBhY2Nlc3NDYWNoZTogbnVsbCxcclxuICAgICAgICByZW5kZXJDYWNoZTogW10sXHJcbiAgICAgICAgLy8gbG9jYWwgcmVzb3ZsZWQgYXNzZXRzXHJcbiAgICAgICAgY29tcG9uZW50czogbnVsbCxcclxuICAgICAgICBkaXJlY3RpdmVzOiBudWxsLFxyXG4gICAgICAgIC8vIHJlc29sdmVkIHByb3BzIGFuZCBlbWl0cyBvcHRpb25zXHJcbiAgICAgICAgcHJvcHNPcHRpb25zOiBub3JtYWxpemVQcm9wc09wdGlvbnModHlwZSwgYXBwQ29udGV4dCksXHJcbiAgICAgICAgZW1pdHNPcHRpb25zOiBub3JtYWxpemVFbWl0c09wdGlvbnModHlwZSwgYXBwQ29udGV4dCksXHJcbiAgICAgICAgLy8gZW1pdFxyXG4gICAgICAgIGVtaXQ6IG51bGwsXHJcbiAgICAgICAgZW1pdHRlZDogbnVsbCxcclxuICAgICAgICAvLyBwcm9wcyBkZWZhdWx0IHZhbHVlXHJcbiAgICAgICAgcHJvcHNEZWZhdWx0czogRU1QVFlfT0JKLFxyXG4gICAgICAgIC8vIGluaGVyaXRBdHRyc1xyXG4gICAgICAgIGluaGVyaXRBdHRyczogdHlwZS5pbmhlcml0QXR0cnMsXHJcbiAgICAgICAgLy8gc3RhdGVcclxuICAgICAgICBjdHg6IEVNUFRZX09CSixcclxuICAgICAgICBkYXRhOiBFTVBUWV9PQkosXHJcbiAgICAgICAgcHJvcHM6IEVNUFRZX09CSixcclxuICAgICAgICBhdHRyczogRU1QVFlfT0JKLFxyXG4gICAgICAgIHNsb3RzOiBFTVBUWV9PQkosXHJcbiAgICAgICAgcmVmczogRU1QVFlfT0JKLFxyXG4gICAgICAgIHNldHVwU3RhdGU6IEVNUFRZX09CSixcclxuICAgICAgICBzZXR1cENvbnRleHQ6IG51bGwsXHJcbiAgICAgICAgLy8gc3VzcGVuc2UgcmVsYXRlZFxyXG4gICAgICAgIHN1c3BlbnNlLFxyXG4gICAgICAgIHN1c3BlbnNlSWQ6IHN1c3BlbnNlID8gc3VzcGVuc2UucGVuZGluZ0lkIDogMCxcclxuICAgICAgICBhc3luY0RlcDogbnVsbCxcclxuICAgICAgICBhc3luY1Jlc29sdmVkOiBmYWxzZSxcclxuICAgICAgICAvLyBsaWZlY3ljbGUgaG9va3NcclxuICAgICAgICAvLyBub3QgdXNpbmcgZW51bXMgaGVyZSBiZWNhdXNlIGl0IHJlc3VsdHMgaW4gY29tcHV0ZWQgcHJvcGVydGllc1xyXG4gICAgICAgIGlzTW91bnRlZDogZmFsc2UsXHJcbiAgICAgICAgaXNVbm1vdW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGlzRGVhY3RpdmF0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGJjOiBudWxsLFxyXG4gICAgICAgIGM6IG51bGwsXHJcbiAgICAgICAgYm06IG51bGwsXHJcbiAgICAgICAgbTogbnVsbCxcclxuICAgICAgICBidTogbnVsbCxcclxuICAgICAgICB1OiBudWxsLFxyXG4gICAgICAgIHVtOiBudWxsLFxyXG4gICAgICAgIGJ1bTogbnVsbCxcclxuICAgICAgICBkYTogbnVsbCxcclxuICAgICAgICBhOiBudWxsLFxyXG4gICAgICAgIHJ0ZzogbnVsbCxcclxuICAgICAgICBydGM6IG51bGwsXHJcbiAgICAgICAgZWM6IG51bGwsXHJcbiAgICAgICAgc3A6IG51bGxcclxuICAgIH07XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaW5zdGFuY2UuY3R4ID0gY3JlYXRlRGV2UmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpbnN0YW5jZS5jdHggPSB7IF86IGluc3RhbmNlIH07XHJcbiAgICB9XHJcbiAgICBpbnN0YW5jZS5yb290ID0gcGFyZW50ID8gcGFyZW50LnJvb3QgOiBpbnN0YW5jZTtcclxuICAgIGluc3RhbmNlLmVtaXQgPSBlbWl0JDEuYmluZChudWxsLCBpbnN0YW5jZSk7XHJcbiAgICAvLyBhcHBseSBjdXN0b20gZWxlbWVudCBzcGVjaWFsIGhhbmRsaW5nXHJcbiAgICBpZiAodm5vZGUuY2UpIHtcclxuICAgICAgICB2bm9kZS5jZShpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5zdGFuY2U7XHJcbn1cclxubGV0IGN1cnJlbnRJbnN0YW5jZSA9IG51bGw7XHJcbmNvbnN0IGdldEN1cnJlbnRJbnN0YW5jZSA9ICgpID0+IGN1cnJlbnRJbnN0YW5jZSB8fCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbmNvbnN0IHNldEN1cnJlbnRJbnN0YW5jZSA9IChpbnN0YW5jZSkgPT4ge1xyXG4gICAgY3VycmVudEluc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICBpbnN0YW5jZS5zY29wZS5vbigpO1xyXG59O1xyXG5jb25zdCB1bnNldEN1cnJlbnRJbnN0YW5jZSA9ICgpID0+IHtcclxuICAgIGN1cnJlbnRJbnN0YW5jZSAmJiBjdXJyZW50SW5zdGFuY2Uuc2NvcGUub2ZmKCk7XHJcbiAgICBjdXJyZW50SW5zdGFuY2UgPSBudWxsO1xyXG59O1xyXG5jb25zdCBpc0J1aWx0SW5UYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ3Nsb3QsY29tcG9uZW50Jyk7XHJcbmZ1bmN0aW9uIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lLCBjb25maWcpIHtcclxuICAgIGNvbnN0IGFwcElzTmF0aXZlVGFnID0gY29uZmlnLmlzTmF0aXZlVGFnIHx8IE5PO1xyXG4gICAgaWYgKGlzQnVpbHRJblRhZyhuYW1lKSB8fCBhcHBJc05hdGl2ZVRhZyhuYW1lKSkge1xyXG4gICAgICAgIHdhcm4oJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgaWQ6ICcgKyBuYW1lKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1N0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlKSB7XHJcbiAgICByZXR1cm4gaW5zdGFuY2Uudm5vZGUuc2hhcGVGbGFnICYgNCAvKiBTVEFURUZVTF9DT01QT05FTlQgKi87XHJcbn1cclxubGV0IGlzSW5TU1JDb21wb25lbnRTZXR1cCA9IGZhbHNlO1xyXG5mdW5jdGlvbiBzZXR1cENvbXBvbmVudChpbnN0YW5jZSwgaXNTU1IgPSBmYWxzZSkge1xyXG4gICAgaXNJblNTUkNvbXBvbmVudFNldHVwID0gaXNTU1I7XHJcbiAgICBjb25zdCB7IHByb3BzLCBjaGlsZHJlbiB9ID0gaW5zdGFuY2Uudm5vZGU7XHJcbiAgICBjb25zdCBpc1N0YXRlZnVsID0gaXNTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSk7XHJcbiAgICBpbml0UHJvcHMoaW5zdGFuY2UsIHByb3BzLCBpc1N0YXRlZnVsLCBpc1NTUik7XHJcbiAgICBpbml0U2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcclxuICAgIGNvbnN0IHNldHVwUmVzdWx0ID0gaXNTdGF0ZWZ1bFxyXG4gICAgICAgID8gc2V0dXBTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSwgaXNTU1IpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBpc0luU1NSQ29tcG9uZW50U2V0dXAgPSBmYWxzZTtcclxuICAgIHJldHVybiBzZXR1cFJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBzZXR1cFN0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlLCBpc1NTUikge1xyXG4gICAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBpZiAoQ29tcG9uZW50Lm5hbWUpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKENvbXBvbmVudC5uYW1lLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wb25lbnQuY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKENvbXBvbmVudC5jb21wb25lbnRzKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWVzW2ldLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXBvbmVudC5kaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoQ29tcG9uZW50LmRpcmVjdGl2ZXMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZURpcmVjdGl2ZU5hbWUobmFtZXNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wb25lbnQuY29tcGlsZXJPcHRpb25zICYmIGlzUnVudGltZU9ubHkoKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBcImNvbXBpbGVyT3B0aW9uc1wiIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gdXNpbmcgYSBidWlsZCBvZiBWdWUgdGhhdCBgICtcclxuICAgICAgICAgICAgICAgIGBpbmNsdWRlcyB0aGUgcnVudGltZSBjb21waWxlci4gU2luY2UgeW91IGFyZSB1c2luZyBhIHJ1bnRpbWUtb25seSBgICtcclxuICAgICAgICAgICAgICAgIGBidWlsZCwgdGhlIG9wdGlvbnMgc2hvdWxkIGJlIHBhc3NlZCB2aWEgeW91ciBidWlsZCB0b29sIGNvbmZpZyBpbnN0ZWFkLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIDAuIGNyZWF0ZSByZW5kZXIgcHJveHkgcHJvcGVydHkgYWNjZXNzIGNhY2hlXHJcbiAgICBpbnN0YW5jZS5hY2Nlc3NDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICAvLyAxLiBjcmVhdGUgcHVibGljIGluc3RhbmNlIC8gcmVuZGVyIHByb3h5XHJcbiAgICAvLyBhbHNvIG1hcmsgaXQgcmF3IHNvIGl0J3MgbmV2ZXIgb2JzZXJ2ZWRcclxuICAgIGluc3RhbmNlLnByb3h5ID0gbWFya1JhdyhuZXcgUHJveHkoaW5zdGFuY2UuY3R4LCBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMpKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBleHBvc2VQcm9wc09uUmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICAvLyAyLiBjYWxsIHNldHVwKClcclxuICAgIGNvbnN0IHsgc2V0dXAgfSA9IENvbXBvbmVudDtcclxuICAgIGlmIChzZXR1cCkge1xyXG4gICAgICAgIGNvbnN0IHNldHVwQ29udGV4dCA9IChpbnN0YW5jZS5zZXR1cENvbnRleHQgPVxyXG4gICAgICAgICAgICBzZXR1cC5sZW5ndGggPiAxID8gY3JlYXRlU2V0dXBDb250ZXh0KGluc3RhbmNlKSA6IG51bGwpO1xyXG4gICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgIGNvbnN0IHNldHVwUmVzdWx0ID0gY2FsbFdpdGhFcnJvckhhbmRsaW5nKHNldHVwLCBpbnN0YW5jZSwgMCAvKiBTRVRVUF9GVU5DVElPTiAqLywgWyhwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpbnN0YW5jZS5wcm9wcykgOiBpbnN0YW5jZS5wcm9wcywgc2V0dXBDb250ZXh0XSk7XHJcbiAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgaWYgKGlzUHJvbWlzZShzZXR1cFJlc3VsdCkpIHtcclxuICAgICAgICAgICAgc2V0dXBSZXN1bHQudGhlbih1bnNldEN1cnJlbnRJbnN0YW5jZSwgdW5zZXRDdXJyZW50SW5zdGFuY2UpO1xyXG4gICAgICAgICAgICBpZiAoaXNTU1IpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJldHVybiB0aGUgcHJvbWlzZSBzbyBzZXJ2ZXItcmVuZGVyZXIgY2FuIHdhaXQgb24gaXRcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZXR1cFJlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChyZXNvbHZlZFJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCByZXNvbHZlZFJlc3VsdCwgaXNTU1IpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZSwgaW5zdGFuY2UsIDAgLyogU0VUVVBfRlVOQ1RJT04gKi8pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhc3luYyBzZXR1cCByZXR1cm5lZCBQcm9taXNlLlxyXG4gICAgICAgICAgICAgICAgLy8gYmFpbCBoZXJlIGFuZCB3YWl0IGZvciByZS1lbnRyeS5cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFzeW5jRGVwID0gc2V0dXBSZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCBzZXR1cFJlc3VsdCwgaXNTU1IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZpbmlzaENvbXBvbmVudFNldHVwKGluc3RhbmNlLCBpc1NTUik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIHNldHVwUmVzdWx0LCBpc1NTUikge1xyXG4gICAgaWYgKGlzRnVuY3Rpb24oc2V0dXBSZXN1bHQpKSB7XHJcbiAgICAgICAgLy8gc2V0dXAgcmV0dXJuZWQgYW4gaW5saW5lIHJlbmRlciBmdW5jdGlvblxyXG4gICAgICAgIGlmIChpbnN0YW5jZS50eXBlLl9fc3NySW5saW5lUmVuZGVyKSB7XHJcbiAgICAgICAgICAgIC8vIHdoZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZSBpcyBgc3NyUmVuZGVyYCAoY29tcGlsZWQgYnkgU0ZDIGlubGluZSBtb2RlKSxcclxuICAgICAgICAgICAgLy8gc2V0IGl0IGFzIHNzclJlbmRlciBpbnN0ZWFkLlxyXG4gICAgICAgICAgICBpbnN0YW5jZS5zc3JSZW5kZXIgPSBzZXR1cFJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnJlbmRlciA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHNldHVwUmVzdWx0KSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNWTm9kZShzZXR1cFJlc3VsdCkpIHtcclxuICAgICAgICAgICAgd2Fybihgc2V0dXAoKSBzaG91bGQgbm90IHJldHVybiBWTm9kZXMgZGlyZWN0bHkgLSBgICtcclxuICAgICAgICAgICAgICAgIGByZXR1cm4gYSByZW5kZXIgZnVuY3Rpb24gaW5zdGVhZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc2V0dXAgcmV0dXJuZWQgYmluZGluZ3MuXHJcbiAgICAgICAgLy8gYXNzdW1pbmcgYSByZW5kZXIgZnVuY3Rpb24gY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZSBpcyBwcmVzZW50LlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmRldnRvb2xzUmF3U2V0dXBTdGF0ZSA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5zZXR1cFN0YXRlID0gcHJveHlSZWZzKHNldHVwUmVzdWx0KTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGV4cG9zZVNldHVwU3RhdGVPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzZXR1cFJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgd2Fybihgc2V0dXAoKSBzaG91bGQgcmV0dXJuIGFuIG9iamVjdC4gUmVjZWl2ZWQ6ICR7c2V0dXBSZXN1bHQgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2Ygc2V0dXBSZXN1bHR9YCk7XHJcbiAgICB9XHJcbiAgICBmaW5pc2hDb21wb25lbnRTZXR1cChpbnN0YW5jZSwgaXNTU1IpO1xyXG59XHJcbmxldCBjb21waWxlO1xyXG5sZXQgaW5zdGFsbFdpdGhQcm94eTtcclxuLyoqXHJcbiAqIEZvciBydW50aW1lLWRvbSB0byByZWdpc3RlciB0aGUgY29tcGlsZXIuXHJcbiAqIE5vdGUgdGhlIGV4cG9ydGVkIG1ldGhvZCB1c2VzIGFueSB0byBhdm9pZCBkLnRzIHJlbHlpbmcgb24gdGhlIGNvbXBpbGVyIHR5cGVzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmVnaXN0ZXJSdW50aW1lQ29tcGlsZXIoX2NvbXBpbGUpIHtcclxuICAgIGNvbXBpbGUgPSBfY29tcGlsZTtcclxuICAgIGluc3RhbGxXaXRoUHJveHkgPSBpID0+IHtcclxuICAgICAgICBpZiAoaS5yZW5kZXIuX3JjKSB7XHJcbiAgICAgICAgICAgIGkud2l0aFByb3h5ID0gbmV3IFByb3h5KGkuY3R4LCBSdW50aW1lQ29tcGlsZWRQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuY29uc3QgaXNSdW50aW1lT25seSA9ICgpID0+ICFjb21waWxlO1xyXG5mdW5jdGlvbiBmaW5pc2hDb21wb25lbnRTZXR1cChpbnN0YW5jZSwgaXNTU1IsIHNraXBPcHRpb25zKSB7XHJcbiAgICBjb25zdCBDb21wb25lbnQgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgLy8gdGVtcGxhdGUgLyByZW5kZXIgZnVuY3Rpb24gbm9ybWFsaXphdGlvblxyXG4gICAgLy8gY291bGQgYmUgYWxyZWFkeSBzZXQgd2hlbiByZXR1cm5lZCBmcm9tIHNldHVwKClcclxuICAgIGlmICghaW5zdGFuY2UucmVuZGVyKSB7XHJcbiAgICAgICAgLy8gb25seSBkbyBvbi10aGUtZmx5IGNvbXBpbGUgaWYgbm90IGluIFNTUiAtIFNTUiBvbi10aGUtZmx5IGNvbXBpbGF0aW9uXHJcbiAgICAgICAgLy8gaXMgZG9uZSBieSBzZXJ2ZXItcmVuZGVyZXJcclxuICAgICAgICBpZiAoIWlzU1NSICYmIGNvbXBpbGUgJiYgIUNvbXBvbmVudC5yZW5kZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBDb21wb25lbnQudGVtcGxhdGU7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYGNvbXBpbGVgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgaXNDdXN0b21FbGVtZW50LCBjb21waWxlck9wdGlvbnMgfSA9IGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBkZWxpbWl0ZXJzLCBjb21waWxlck9wdGlvbnM6IGNvbXBvbmVudENvbXBpbGVyT3B0aW9ucyB9ID0gQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmluYWxDb21waWxlck9wdGlvbnMgPSBleHRlbmQoZXh0ZW5kKHtcclxuICAgICAgICAgICAgICAgICAgICBpc0N1c3RvbUVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsaW1pdGVyc1xyXG4gICAgICAgICAgICAgICAgfSwgY29tcGlsZXJPcHRpb25zKSwgY29tcG9uZW50Q29tcGlsZXJPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIENvbXBvbmVudC5yZW5kZXIgPSBjb21waWxlKHRlbXBsYXRlLCBmaW5hbENvbXBpbGVyT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYGNvbXBpbGVgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5yZW5kZXIgPSAoQ29tcG9uZW50LnJlbmRlciB8fCBOT09QKTtcclxuICAgICAgICAvLyBmb3IgcnVudGltZS1jb21waWxlZCByZW5kZXIgZnVuY3Rpb25zIHVzaW5nIGB3aXRoYCBibG9ja3MsIHRoZSByZW5kZXJcclxuICAgICAgICAvLyBwcm94eSB1c2VkIG5lZWRzIGEgZGlmZmVyZW50IGBoYXNgIGhhbmRsZXIgd2hpY2ggaXMgbW9yZSBwZXJmb3JtYW50IGFuZFxyXG4gICAgICAgIC8vIGFsc28gb25seSBhbGxvd3MgYSB3aGl0ZWxpc3Qgb2YgZ2xvYmFscyB0byBmYWxsdGhyb3VnaC5cclxuICAgICAgICBpZiAoaW5zdGFsbFdpdGhQcm94eSkge1xyXG4gICAgICAgICAgICBpbnN0YWxsV2l0aFByb3h5KGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzdXBwb3J0IGZvciAyLnggb3B0aW9uc1xyXG4gICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIShmYWxzZSApKSB7XHJcbiAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgYXBwbHlPcHRpb25zKGluc3RhbmNlKTtcclxuICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIH1cclxuICAgIC8vIHdhcm4gbWlzc2luZyB0ZW1wbGF0ZS9yZW5kZXJcclxuICAgIC8vIHRoZSBydW50aW1lIGNvbXBpbGF0aW9uIG9mIHRlbXBsYXRlIGluIFNTUiBpcyBkb25lIGJ5IHNlcnZlci1yZW5kZXJcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIUNvbXBvbmVudC5yZW5kZXIgJiYgaW5zdGFuY2UucmVuZGVyID09PSBOT09QICYmICFpc1NTUikge1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgIGlmICghY29tcGlsZSAmJiBDb21wb25lbnQudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IHByb3ZpZGVkIHRlbXBsYXRlIG9wdGlvbiBidXQgYCArXHJcbiAgICAgICAgICAgICAgICBgcnVudGltZSBjb21waWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgVnVlLmAgK1xyXG4gICAgICAgICAgICAgICAgKGAgQ29uZmlndXJlIHlvdXIgYnVuZGxlciB0byBhbGlhcyBcInZ1ZVwiIHRvIFwidnVlL2Rpc3QvdnVlLmVzbS1idW5kbGVyLmpzXCIuYFxyXG4gICAgICAgICAgICAgICAgICAgICkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGlzIG1pc3NpbmcgdGVtcGxhdGUgb3IgcmVuZGVyIGZ1bmN0aW9uLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBdHRyc1Byb3h5KGluc3RhbmNlKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb3h5KGluc3RhbmNlLmF0dHJzLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgZ2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgICAgICAgICBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogR0VUICovLCAnJGF0dHJzJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHNldHVwQ29udGV4dC5hdHRycyBpcyByZWFkb25seS5gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVsZXRlUHJvcGVydHkoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBzZXR1cENvbnRleHQuYXR0cnMgaXMgcmVhZG9ubHkuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgOiB7XHJcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogR0VUICovLCAnJGF0dHJzJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTZXR1cENvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGV4cG9zZSA9IGV4cG9zZWQgPT4ge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5zdGFuY2UuZXhwb3NlZCkge1xyXG4gICAgICAgICAgICB3YXJuKGBleHBvc2UoKSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZSBwZXIgc2V0dXAoKS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5zdGFuY2UuZXhwb3NlZCA9IGV4cG9zZWQgfHwge307XHJcbiAgICB9O1xyXG4gICAgbGV0IGF0dHJzO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIC8vIFdlIHVzZSBnZXR0ZXJzIGluIGRldiBpbiBjYXNlIGxpYnMgbGlrZSB0ZXN0LXV0aWxzIG92ZXJ3cml0ZSBpbnN0YW5jZVxyXG4gICAgICAgIC8vIHByb3BlcnRpZXMgKG92ZXJ3cml0ZXMgc2hvdWxkIG5vdCBiZSBkb25lIGluIHByb2QpXHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUoe1xyXG4gICAgICAgICAgICBnZXQgYXR0cnMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cnMgfHwgKGF0dHJzID0gY3JlYXRlQXR0cnNQcm94eShpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXQgc2xvdHMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hhbGxvd1JlYWRvbmx5KGluc3RhbmNlLnNsb3RzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2V0IGVtaXQoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGV2ZW50LCAuLi5hcmdzKSA9PiBpbnN0YW5jZS5lbWl0KGV2ZW50LCAuLi5hcmdzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXhwb3NlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBnZXQgYXR0cnMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cnMgfHwgKGF0dHJzID0gY3JlYXRlQXR0cnNQcm94eShpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzbG90czogaW5zdGFuY2Uuc2xvdHMsXHJcbiAgICAgICAgICAgIGVtaXQ6IGluc3RhbmNlLmVtaXQsXHJcbiAgICAgICAgICAgIGV4cG9zZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0RXhwb3NlUHJveHkoaW5zdGFuY2UpIHtcclxuICAgIGlmIChpbnN0YW5jZS5leHBvc2VkKSB7XHJcbiAgICAgICAgcmV0dXJuIChpbnN0YW5jZS5leHBvc2VQcm94eSB8fFxyXG4gICAgICAgICAgICAoaW5zdGFuY2UuZXhwb3NlUHJveHkgPSBuZXcgUHJveHkocHJveHlSZWZzKG1hcmtSYXcoaW5zdGFuY2UuZXhwb3NlZCkpLCB7XHJcbiAgICAgICAgICAgICAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSBpbiBwdWJsaWNQcm9wZXJ0aWVzTWFwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdWJsaWNQcm9wZXJ0aWVzTWFwW2tleV0oaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpKTtcclxuICAgIH1cclxufVxyXG5jb25zdCBjbGFzc2lmeVJFID0gLyg/Ol58Wy1fXSkoXFx3KS9nO1xyXG5jb25zdCBjbGFzc2lmeSA9IChzdHIpID0+IHN0ci5yZXBsYWNlKGNsYXNzaWZ5UkUsIGMgPT4gYy50b1VwcGVyQ2FzZSgpKS5yZXBsYWNlKC9bLV9dL2csICcnKTtcclxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZShDb21wb25lbnQpIHtcclxuICAgIHJldHVybiBpc0Z1bmN0aW9uKENvbXBvbmVudClcclxuICAgICAgICA/IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZVxyXG4gICAgICAgIDogQ29tcG9uZW50Lm5hbWU7XHJcbn1cclxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuZnVuY3Rpb24gZm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgQ29tcG9uZW50LCBpc1Jvb3QgPSBmYWxzZSkge1xyXG4gICAgbGV0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKENvbXBvbmVudCk7XHJcbiAgICBpZiAoIW5hbWUgJiYgQ29tcG9uZW50Ll9fZmlsZSkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gQ29tcG9uZW50Ll9fZmlsZS5tYXRjaCgvKFteL1xcXFxdKylcXC5cXHcrJC8pO1xyXG4gICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICBuYW1lID0gbWF0Y2hbMV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFuYW1lICYmIGluc3RhbmNlICYmIGluc3RhbmNlLnBhcmVudCkge1xyXG4gICAgICAgIC8vIHRyeSB0byBpbmZlciB0aGUgbmFtZSBiYXNlZCBvbiByZXZlcnNlIHJlc29sdXRpb25cclxuICAgICAgICBjb25zdCBpbmZlckZyb21SZWdpc3RyeSA9IChyZWdpc3RyeSkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZWdpc3RyeSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lzdHJ5W2tleV0gPT09IENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIG5hbWUgPVxyXG4gICAgICAgICAgICBpbmZlckZyb21SZWdpc3RyeShpbnN0YW5jZS5jb21wb25lbnRzIHx8XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQudHlwZS5jb21wb25lbnRzKSB8fCBpbmZlckZyb21SZWdpc3RyeShpbnN0YW5jZS5hcHBDb250ZXh0LmNvbXBvbmVudHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5hbWUgPyBjbGFzc2lmeShuYW1lKSA6IGlzUm9vdCA/IGBBcHBgIDogYEFub255bW91c2A7XHJcbn1cclxuZnVuY3Rpb24gaXNDbGFzc0NvbXBvbmVudCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24odmFsdWUpICYmICdfX3ZjY09wdHMnIGluIHZhbHVlO1xyXG59XG5cbmNvbnN0IGNvbXB1dGVkID0gKChnZXR0ZXJPck9wdGlvbnMsIGRlYnVnT3B0aW9ucykgPT4ge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIGNvbXB1dGVkJDEoZ2V0dGVyT3JPcHRpb25zLCBkZWJ1Z09wdGlvbnMsIGlzSW5TU1JDb21wb25lbnRTZXR1cCk7XHJcbn0pO1xuXG4vLyBkZXYgb25seVxyXG5jb25zdCB3YXJuUnVudGltZVVzYWdlID0gKG1ldGhvZCkgPT4gd2FybihgJHttZXRob2R9KCkgaXMgYSBjb21waWxlci1oaW50IGhlbHBlciB0aGF0IGlzIG9ubHkgdXNhYmxlIGluc2lkZSBgICtcclxuICAgIGA8c2NyaXB0IHNldHVwPiBvZiBhIHNpbmdsZSBmaWxlIGNvbXBvbmVudC4gSXRzIGFyZ3VtZW50cyBzaG91bGQgYmUgYCArXHJcbiAgICBgY29tcGlsZWQgYXdheSBhbmQgcGFzc2luZyBpdCBhdCBydW50aW1lIGhhcyBubyBlZmZlY3QuYCk7XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGRlZmluZVByb3BzKCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm5SdW50aW1lVXNhZ2UoYGRlZmluZVByb3BzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBkZWZpbmVFbWl0cygpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVFbWl0c2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuLyoqXHJcbiAqIFZ1ZSBgPHNjcmlwdCBzZXR1cD5gIGNvbXBpbGVyIG1hY3JvIGZvciBkZWNsYXJpbmcgYSBjb21wb25lbnQncyBleHBvc2VkXHJcbiAqIGluc3RhbmNlIHByb3BlcnRpZXMgd2hlbiBpdCBpcyBhY2Nlc3NlZCBieSBhIHBhcmVudCBjb21wb25lbnQgdmlhIHRlbXBsYXRlXHJcbiAqIHJlZnMuXHJcbiAqXHJcbiAqIGA8c2NyaXB0IHNldHVwPmAgY29tcG9uZW50cyBhcmUgY2xvc2VkIGJ5IGRlZmF1bHQgLSBpLmUuIHZhcmlhYmxlcyBpbnNpZGVcclxuICogdGhlIGA8c2NyaXB0IHNldHVwPmAgc2NvcGUgaXMgbm90IGV4cG9zZWQgdG8gcGFyZW50IHVubGVzcyBleHBsaWNpdGx5IGV4cG9zZWRcclxuICogdmlhIGBkZWZpbmVFeHBvc2VgLlxyXG4gKlxyXG4gKiBUaGlzIGlzIG9ubHkgdXNhYmxlIGluc2lkZSBgPHNjcmlwdCBzZXR1cD5gLCBpcyBjb21waWxlZCBhd2F5IGluIHRoZVxyXG4gKiBvdXRwdXQgYW5kIHNob3VsZCAqKm5vdCoqIGJlIGFjdHVhbGx5IGNhbGxlZCBhdCBydW50aW1lLlxyXG4gKi9cclxuZnVuY3Rpb24gZGVmaW5lRXhwb3NlKGV4cG9zZWQpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVFeHBvc2VgKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogVnVlIGA8c2NyaXB0IHNldHVwPmAgY29tcGlsZXIgbWFjcm8gZm9yIHByb3ZpZGluZyBwcm9wcyBkZWZhdWx0IHZhbHVlcyB3aGVuXHJcbiAqIHVzaW5nIHR5cGUtYmFzZWQgYGRlZmluZVByb3BzYCBkZWNsYXJhdGlvbi5cclxuICpcclxuICogRXhhbXBsZSB1c2FnZTpcclxuICogYGBgdHNcclxuICogd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPHtcclxuICogICBzaXplPzogbnVtYmVyXHJcbiAqICAgbGFiZWxzPzogc3RyaW5nW11cclxuICogfT4oKSwge1xyXG4gKiAgIHNpemU6IDMsXHJcbiAqICAgbGFiZWxzOiAoKSA9PiBbJ2RlZmF1bHQgbGFiZWwnXVxyXG4gKiB9KVxyXG4gKiBgYGBcclxuICpcclxuICogVGhpcyBpcyBvbmx5IHVzYWJsZSBpbnNpZGUgYDxzY3JpcHQgc2V0dXA+YCwgaXMgY29tcGlsZWQgYXdheSBpbiB0aGUgb3V0cHV0XHJcbiAqIGFuZCBzaG91bGQgKipub3QqKiBiZSBhY3R1YWxseSBjYWxsZWQgYXQgcnVudGltZS5cclxuICovXHJcbmZ1bmN0aW9uIHdpdGhEZWZhdWx0cyhwcm9wcywgZGVmYXVsdHMpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGB3aXRoRGVmYXVsdHNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbmZ1bmN0aW9uIHVzZVNsb3RzKCkge1xyXG4gICAgcmV0dXJuIGdldENvbnRleHQoKS5zbG90cztcclxufVxyXG5mdW5jdGlvbiB1c2VBdHRycygpIHtcclxuICAgIHJldHVybiBnZXRDb250ZXh0KCkuYXR0cnM7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29udGV4dCgpIHtcclxuICAgIGNvbnN0IGkgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWkpIHtcclxuICAgICAgICB3YXJuKGB1c2VDb250ZXh0KCkgY2FsbGVkIHdpdGhvdXQgYWN0aXZlIGluc3RhbmNlLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGkuc2V0dXBDb250ZXh0IHx8IChpLnNldHVwQ29udGV4dCA9IGNyZWF0ZVNldHVwQ29udGV4dChpKSk7XHJcbn1cclxuLyoqXHJcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIGRlZmF1bHQgZGVjbGFyYXRpb25zLiBJbXBvcnRlZCBieSBjb21waWxlZCBjb2RlXHJcbiAqIG9ubHkuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZnVuY3Rpb24gbWVyZ2VEZWZhdWx0cyhyYXcsIGRlZmF1bHRzKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IGlzQXJyYXkocmF3KVxyXG4gICAgICAgID8gcmF3LnJlZHVjZSgobm9ybWFsaXplZCwgcCkgPT4gKChub3JtYWxpemVkW3BdID0ge30pLCBub3JtYWxpemVkKSwge30pXHJcbiAgICAgICAgOiByYXc7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0cykge1xyXG4gICAgICAgIGNvbnN0IG9wdCA9IHByb3BzW2tleV07XHJcbiAgICAgICAgaWYgKG9wdCkge1xyXG4gICAgICAgICAgICBpZiAoaXNBcnJheShvcHQpIHx8IGlzRnVuY3Rpb24ob3B0KSkge1xyXG4gICAgICAgICAgICAgICAgcHJvcHNba2V5XSA9IHsgdHlwZTogb3B0LCBkZWZhdWx0OiBkZWZhdWx0c1trZXldIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvcHQuZGVmYXVsdCA9IGRlZmF1bHRzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3B0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSB7IGRlZmF1bHQ6IGRlZmF1bHRzW2tleV0gfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHByb3BzIGRlZmF1bHQga2V5IFwiJHtrZXl9XCIgaGFzIG5vIGNvcnJlc3BvbmRpbmcgZGVjbGFyYXRpb24uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG59XHJcbi8qKlxyXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIHByb3h5IGZvciB0aGUgcmVzdCBlbGVtZW50IHdoZW4gZGVzdHJ1Y3R1cmluZyBwcm9wcyB3aXRoXHJcbiAqIGRlZmluZVByb3BzKCkuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUHJvcHNSZXN0UHJveHkocHJvcHMsIGV4Y2x1ZGVkS2V5cykge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xyXG4gICAgICAgIGlmICghZXhjbHVkZWRLZXlzLmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJldCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBwcm9wc1trZXldXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuLyoqXHJcbiAqIGA8c2NyaXB0IHNldHVwPmAgaGVscGVyIGZvciBwZXJzaXN0aW5nIHRoZSBjdXJyZW50IGluc3RhbmNlIGNvbnRleHQgb3ZlclxyXG4gKiBhc3luYy9hd2FpdCBmbG93cy5cclxuICpcclxuICogYEB2dWUvY29tcGlsZXItc2ZjYCBjb252ZXJ0cyB0aGUgZm9sbG93aW5nOlxyXG4gKlxyXG4gKiBgYGB0c1xyXG4gKiBjb25zdCB4ID0gYXdhaXQgZm9vKClcclxuICogYGBgXHJcbiAqXHJcbiAqIGludG86XHJcbiAqXHJcbiAqIGBgYHRzXHJcbiAqIGxldCBfX3RlbXAsIF9fcmVzdG9yZVxyXG4gKiBjb25zdCB4ID0gKChbX190ZW1wLCBfX3Jlc3RvcmVdID0gd2l0aEFzeW5jQ29udGV4dCgoKSA9PiBmb28oKSkpLF9fdGVtcD1hd2FpdCBfX3RlbXAsX19yZXN0b3JlKCksX190ZW1wKVxyXG4gKiBgYGBcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoQXN5bmNDb250ZXh0KGdldEF3YWl0YWJsZSkge1xyXG4gICAgY29uc3QgY3R4ID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFjdHgpIHtcclxuICAgICAgICB3YXJuKGB3aXRoQXN5bmNDb250ZXh0IGNhbGxlZCB3aXRob3V0IGFjdGl2ZSBjdXJyZW50IGluc3RhbmNlLiBgICtcclxuICAgICAgICAgICAgYFRoaXMgaXMgbGlrZWx5IGEgYnVnLmApO1xyXG4gICAgfVxyXG4gICAgbGV0IGF3YWl0YWJsZSA9IGdldEF3YWl0YWJsZSgpO1xyXG4gICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIGlmIChpc1Byb21pc2UoYXdhaXRhYmxlKSkge1xyXG4gICAgICAgIGF3YWl0YWJsZSA9IGF3YWl0YWJsZS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGN0eCk7XHJcbiAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW2F3YWl0YWJsZSwgKCkgPT4gc2V0Q3VycmVudEluc3RhbmNlKGN0eCldO1xyXG59XG5cbi8vIEFjdHVhbCBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBoKHR5cGUsIHByb3BzT3JDaGlsZHJlbiwgY2hpbGRyZW4pIHtcclxuICAgIGNvbnN0IGwgPSBhcmd1bWVudHMubGVuZ3RoO1xyXG4gICAgaWYgKGwgPT09IDIpIHtcclxuICAgICAgICBpZiAoaXNPYmplY3QocHJvcHNPckNoaWxkcmVuKSAmJiAhaXNBcnJheShwcm9wc09yQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZSB2bm9kZSB3aXRob3V0IHByb3BzXHJcbiAgICAgICAgICAgIGlmIChpc1ZOb2RlKHByb3BzT3JDaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBudWxsLCBbcHJvcHNPckNoaWxkcmVuXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvcHMgd2l0aG91dCBjaGlsZHJlblxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgcHJvcHNPckNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG9taXQgcHJvcHNcclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIG51bGwsIHByb3BzT3JDaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGwgPiAzKSB7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobCA9PT0gMyAmJiBpc1ZOb2RlKGNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IFtjaGlsZHJlbl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wc09yQ2hpbGRyZW4sIGNoaWxkcmVuKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBzc3JDb250ZXh0S2V5ID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBzc3JDb250ZXh0YCA6IGBgKTtcclxuY29uc3QgdXNlU1NSQ29udGV4dCA9ICgpID0+IHtcclxuICAgIHtcclxuICAgICAgICBjb25zdCBjdHggPSBpbmplY3Qoc3NyQ29udGV4dEtleSk7XHJcbiAgICAgICAgaWYgKCFjdHgpIHtcclxuICAgICAgICAgICAgd2FybihgU2VydmVyIHJlbmRlcmluZyBjb250ZXh0IG5vdCBwcm92aWRlZC4gTWFrZSBzdXJlIHRvIG9ubHkgY2FsbCBgICtcclxuICAgICAgICAgICAgICAgIGB1c2VTU1JDb250ZXh0KCkgY29uZGl0aW9uYWxseSBpbiB0aGUgc2VydmVyIGJ1aWxkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3R4O1xyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBpc1NoYWxsb3codmFsdWUpIHtcclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1NoYWxsb3dcIiAvKiBJU19TSEFMTE9XICovXSk7XHJcbn1cblxuZnVuY3Rpb24gaW5pdEN1c3RvbUZvcm1hdHRlcigpIHtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG4gICAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB2dWVTdHlsZSA9IHsgc3R5bGU6ICdjb2xvcjojM2JhNzc2JyB9O1xyXG4gICAgY29uc3QgbnVtYmVyU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6IzBiMWJjOScgfTtcclxuICAgIGNvbnN0IHN0cmluZ1N0eWxlID0geyBzdHlsZTogJ2NvbG9yOiNiNjJlMjQnIH07XHJcbiAgICBjb25zdCBrZXl3b3JkU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6IzlkMjg4YycgfTtcclxuICAgIC8vIGN1c3RvbSBmb3JtYXR0ZXIgZm9yIENocm9tZVxyXG4gICAgLy8gaHR0cHM6Ly93d3cubWF0dHpldW5lcnQuY29tLzIwMTYvMDIvMTkvY3VzdG9tLWNocm9tZS1kZXZ0b29scy1vYmplY3QtZm9ybWF0dGVycy5odG1sXHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSB7XHJcbiAgICAgICAgaGVhZGVyKG9iaikge1xyXG4gICAgICAgICAgICAvLyBUT0RPIGFsc28gZm9ybWF0IENvbXBvbmVudFB1YmxpY0luc3RhbmNlICYgY3R4LnNsb3RzL2F0dHJzIGluIHNldHVwXHJcbiAgICAgICAgICAgIGlmICghaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG9iai5fX2lzVnVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWydkaXYnLCB2dWVTdHlsZSwgYFZ1ZUluc3RhbmNlYF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWYob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCB2dWVTdHlsZSwgZ2VuUmVmRmxhZyhvYmopXSxcclxuICAgICAgICAgICAgICAgICAgICAnPCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0VmFsdWUob2JqLnZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgICBgPmBcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWFjdGl2ZShvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIHZ1ZVN0eWxlLCBpc1NoYWxsb3cob2JqKSA/ICdTaGFsbG93UmVhY3RpdmUnIDogJ1JlYWN0aXZlJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgJzwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlKG9iaiksXHJcbiAgICAgICAgICAgICAgICAgICAgYD4ke2lzUmVhZG9ubHkob2JqKSA/IGAgKHJlYWRvbmx5KWAgOiBgYH1gXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVhZG9ubHkob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCB2dWVTdHlsZSwgaXNTaGFsbG93KG9iaikgPyAnU2hhbGxvd1JlYWRvbmx5JyA6ICdSZWFkb25seSddLFxyXG4gICAgICAgICAgICAgICAgICAgICc8JyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZShvYmopLFxyXG4gICAgICAgICAgICAgICAgICAgICc+J1xyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhc0JvZHkob2JqKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLl9faXNWdWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBib2R5KG9iaikge1xyXG4gICAgICAgICAgICBpZiAob2JqICYmIG9iai5fX2lzVnVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1hdEluc3RhbmNlKG9iai4kKVxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBmb3JtYXRJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgICAgIGNvbnN0IGJsb2NrcyA9IFtdO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZS50eXBlLnByb3BzICYmIGluc3RhbmNlLnByb3BzKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGNyZWF0ZUluc3RhbmNlQmxvY2soJ3Byb3BzJywgdG9SYXcoaW5zdGFuY2UucHJvcHMpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5zZXR1cFN0YXRlICE9PSBFTVBUWV9PQkopIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnc2V0dXAnLCBpbnN0YW5jZS5zZXR1cFN0YXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5kYXRhICE9PSBFTVBUWV9PQkopIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnZGF0YScsIHRvUmF3KGluc3RhbmNlLmRhdGEpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbXB1dGVkID0gZXh0cmFjdEtleXMoaW5zdGFuY2UsICdjb21wdXRlZCcpO1xyXG4gICAgICAgIGlmIChjb21wdXRlZCkge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdjb21wdXRlZCcsIGNvbXB1dGVkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGluamVjdGVkID0gZXh0cmFjdEtleXMoaW5zdGFuY2UsICdpbmplY3QnKTtcclxuICAgICAgICBpZiAoaW5qZWN0ZWQpIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnaW5qZWN0ZWQnLCBpbmplY3RlZCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBibG9ja3MucHVzaChbXHJcbiAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ3NwYW4nLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiBrZXl3b3JkU3R5bGUuc3R5bGUgKyAnO29wYWNpdHk6MC42NidcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAnJCAoaW50ZXJuYWwpOiAnXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIFsnb2JqZWN0JywgeyBvYmplY3Q6IGluc3RhbmNlIH1dXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgcmV0dXJuIGJsb2NrcztcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlQmxvY2sodHlwZSwgdGFyZ2V0KSB7XHJcbiAgICAgICAgdGFyZ2V0ID0gZXh0ZW5kKHt9LCB0YXJnZXQpO1xyXG4gICAgICAgIGlmICghT2JqZWN0LmtleXModGFyZ2V0KS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIHt9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgIHsgc3R5bGU6ICdsaW5lLWhlaWdodDoxLjI1ZW07bWFyZ2luLWJvdHRvbTowLjZlbScgfSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdjb2xvcjojNDc2NTgyJ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHR5cGVcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdwYWRkaW5nLWxlZnQ6MS4yNWVtJ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKHRhcmdldCkubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCBrZXl3b3JkU3R5bGUsIGtleSArICc6ICddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZSh0YXJnZXRba2V5XSwgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZm9ybWF0VmFsdWUodiwgYXNSYXcgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywgbnVtYmVyU3R5bGUsIHZdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIHN0cmluZ1N0eWxlLCBKU09OLnN0cmluZ2lmeSh2KV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIGtleXdvcmRTdHlsZSwgdl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ29iamVjdCcsIHsgb2JqZWN0OiBhc1JhdyA/IHRvUmF3KHYpIDogdiB9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ3NwYW4nLCBzdHJpbmdTdHlsZSwgU3RyaW5nKHYpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBleHRyYWN0S2V5cyhpbnN0YW5jZSwgdHlwZSkge1xyXG4gICAgICAgIGNvbnN0IENvbXAgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKENvbXApKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXh0cmFjdGVkID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5zdGFuY2UuY3R4KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0tleU9mVHlwZShDb21wLCBrZXksIHR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBleHRyYWN0ZWRba2V5XSA9IGluc3RhbmNlLmN0eFtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBleHRyYWN0ZWQ7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBpc0tleU9mVHlwZShDb21wLCBrZXksIHR5cGUpIHtcclxuICAgICAgICBjb25zdCBvcHRzID0gQ29tcFt0eXBlXTtcclxuICAgICAgICBpZiAoKGlzQXJyYXkob3B0cykgJiYgb3B0cy5pbmNsdWRlcyhrZXkpKSB8fFxyXG4gICAgICAgICAgICAoaXNPYmplY3Qob3B0cykgJiYga2V5IGluIG9wdHMpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcC5leHRlbmRzICYmIGlzS2V5T2ZUeXBlKENvbXAuZXh0ZW5kcywga2V5LCB0eXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXAubWl4aW5zICYmIENvbXAubWl4aW5zLnNvbWUobSA9PiBpc0tleU9mVHlwZShtLCBrZXksIHR5cGUpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZW5SZWZGbGFnKHYpIHtcclxuICAgICAgICBpZiAoaXNTaGFsbG93KHYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgU2hhbGxvd1JlZmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2LmVmZmVjdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYENvbXB1dGVkUmVmYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGBSZWZgO1xyXG4gICAgfVxyXG4gICAgaWYgKHdpbmRvdy5kZXZ0b29sc0Zvcm1hdHRlcnMpIHtcclxuICAgICAgICB3aW5kb3cuZGV2dG9vbHNGb3JtYXR0ZXJzLnB1c2goZm9ybWF0dGVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHdpbmRvdy5kZXZ0b29sc0Zvcm1hdHRlcnMgPSBbZm9ybWF0dGVyXTtcclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiB3aXRoTWVtbyhtZW1vLCByZW5kZXIsIGNhY2hlLCBpbmRleCkge1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGVbaW5kZXhdO1xyXG4gICAgaWYgKGNhY2hlZCAmJiBpc01lbW9TYW1lKGNhY2hlZCwgbWVtbykpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV0ID0gcmVuZGVyKCk7XHJcbiAgICAvLyBzaGFsbG93IGNsb25lXHJcbiAgICByZXQubWVtbyA9IG1lbW8uc2xpY2UoKTtcclxuICAgIHJldHVybiAoY2FjaGVbaW5kZXhdID0gcmV0KTtcclxufVxyXG5mdW5jdGlvbiBpc01lbW9TYW1lKGNhY2hlZCwgbWVtbykge1xyXG4gICAgY29uc3QgcHJldiA9IGNhY2hlZC5tZW1vO1xyXG4gICAgaWYgKHByZXYubGVuZ3RoICE9IG1lbW8ubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHByZXZbaV0gIT09IG1lbW9baV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG1ha2Ugc3VyZSB0byBsZXQgcGFyZW50IGJsb2NrIHRyYWNrIGl0IHdoZW4gcmV0dXJuaW5nIGNhY2hlZFxyXG4gICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiYgY3VycmVudEJsb2NrKSB7XHJcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2goY2FjaGVkKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59XG5cbi8vIENvcmUgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5jb25zdCB2ZXJzaW9uID0gXCIzLjIuMzFcIjtcclxuY29uc3QgX3NzclV0aWxzID0ge1xyXG4gICAgY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UsXHJcbiAgICBzZXR1cENvbXBvbmVudCxcclxuICAgIHJlbmRlckNvbXBvbmVudFJvb3QsXHJcbiAgICBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UsXHJcbiAgICBpc1ZOb2RlLFxyXG4gICAgbm9ybWFsaXplVk5vZGVcclxufTtcclxuLyoqXHJcbiAqIFNTUiB1dGlscyBmb3IgXFxAdnVlL3NlcnZlci1yZW5kZXJlci4gT25seSBleHBvc2VkIGluIGNqcyBidWlsZHMuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3Qgc3NyVXRpbHMgPSAoX3NzclV0aWxzICk7XHJcbi8qKlxyXG4gKiBAaW50ZXJuYWwgb25seSBleHBvc2VkIGluIGNvbXBhdCBidWlsZHNcclxuICovXHJcbmNvbnN0IHJlc29sdmVGaWx0ZXIgPSBudWxsO1xyXG4vKipcclxuICogQGludGVybmFsIG9ubHkgZXhwb3NlZCBpbiBjb21wYXQgYnVpbGRzLlxyXG4gKi9cclxuY29uc3QgY29tcGF0VXRpbHMgPSAobnVsbCk7XG5cbmV4cG9ydCB7IEJhc2VUcmFuc2l0aW9uLCBDb21tZW50LCBGcmFnbWVudCwgS2VlcEFsaXZlLCBTdGF0aWMsIFN1c3BlbnNlLCBUZWxlcG9ydCwgVGV4dCwgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcsIGNhbGxXaXRoRXJyb3JIYW5kbGluZywgY2xvbmVWTm9kZSwgY29tcGF0VXRpbHMsIGNvbXB1dGVkLCBjcmVhdGVCbG9jaywgY3JlYXRlQ29tbWVudFZOb2RlLCBjcmVhdGVFbGVtZW50QmxvY2ssIGNyZWF0ZUJhc2VWTm9kZSBhcyBjcmVhdGVFbGVtZW50Vk5vZGUsIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyLCBjcmVhdGVQcm9wc1Jlc3RQcm94eSwgY3JlYXRlUmVuZGVyZXIsIGNyZWF0ZVNsb3RzLCBjcmVhdGVTdGF0aWNWTm9kZSwgY3JlYXRlVGV4dFZOb2RlLCBjcmVhdGVWTm9kZSwgZGVmaW5lQXN5bmNDb21wb25lbnQsIGRlZmluZUNvbXBvbmVudCwgZGVmaW5lRW1pdHMsIGRlZmluZUV4cG9zZSwgZGVmaW5lUHJvcHMsIGRldnRvb2xzLCBnZXRDdXJyZW50SW5zdGFuY2UsIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbiwgZ3VhcmRSZWFjdGl2ZVByb3BzLCBoLCBoYW5kbGVFcnJvciwgaW5pdEN1c3RvbUZvcm1hdHRlciwgaW5qZWN0LCBpc01lbW9TYW1lLCBpc1J1bnRpbWVPbmx5LCBpc1ZOb2RlLCBtZXJnZURlZmF1bHRzLCBtZXJnZVByb3BzLCBuZXh0VGljaywgb25BY3RpdmF0ZWQsIG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCwgb25CZWZvcmVVcGRhdGUsIG9uRGVhY3RpdmF0ZWQsIG9uRXJyb3JDYXB0dXJlZCwgb25Nb3VudGVkLCBvblJlbmRlclRyYWNrZWQsIG9uUmVuZGVyVHJpZ2dlcmVkLCBvblNlcnZlclByZWZldGNoLCBvblVubW91bnRlZCwgb25VcGRhdGVkLCBvcGVuQmxvY2ssIHBvcFNjb3BlSWQsIHByb3ZpZGUsIHB1c2hTY29wZUlkLCBxdWV1ZVBvc3RGbHVzaENiLCByZWdpc3RlclJ1bnRpbWVDb21waWxlciwgcmVuZGVyTGlzdCwgcmVuZGVyU2xvdCwgcmVzb2x2ZUNvbXBvbmVudCwgcmVzb2x2ZURpcmVjdGl2ZSwgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsIHJlc29sdmVGaWx0ZXIsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MsIHNldEJsb2NrVHJhY2tpbmcsIHNldERldnRvb2xzSG9vaywgc2V0VHJhbnNpdGlvbkhvb2tzLCBzc3JDb250ZXh0S2V5LCBzc3JVdGlscywgdG9IYW5kbGVycywgdHJhbnNmb3JtVk5vZGVBcmdzLCB1c2VBdHRycywgdXNlU1NSQ29udGV4dCwgdXNlU2xvdHMsIHVzZVRyYW5zaXRpb25TdGF0ZSwgdmVyc2lvbiwgd2Fybiwgd2F0Y2gsIHdhdGNoRWZmZWN0LCB3YXRjaFBvc3RFZmZlY3QsIHdhdGNoU3luY0VmZmVjdCwgd2l0aEFzeW5jQ29udGV4dCwgd2l0aEN0eCwgd2l0aERlZmF1bHRzLCB3aXRoRGlyZWN0aXZlcywgd2l0aE1lbW8sIHdpdGhTY29wZUlkIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js ***!
|
||
\***********************************************************************/
|
||
/*! exports provided: EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref, camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey, BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId, Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transition\", function() { return Transition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransitionGroup\", function() { return TransitionGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VueElement\", function() { return VueElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createApp\", function() { return createApp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSSRApp\", function() { return createSSRApp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defineCustomElement\", function() { return defineCustomElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defineSSRCustomElement\", function() { return defineSSRCustomElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hydrate\", function() { return hydrate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initDirectivesForSSR\", function() { return initDirectivesForSSR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useCssModule\", function() { return useCssModule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useCssVars\", function() { return useCssVars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vModelCheckbox\", function() { return vModelCheckbox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vModelDynamic\", function() { return vModelDynamic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vModelRadio\", function() { return vModelRadio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vModelSelect\", function() { return vModelSelect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vModelText\", function() { return vModelText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vShow\", function() { return vShow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withKeys\", function() { return withKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withModifiers\", function() { return withModifiers; });\n/* harmony import */ var _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vue/runtime-core */ \"./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EffectScope\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"EffectScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactiveEffect\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"ReactiveEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"customRef\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"customRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"effect\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"effect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"effectScope\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"effectScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentScope\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isProxy\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isProxy\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isReactive\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isReactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isReadonly\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isReadonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRef\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isShallow\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isShallow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"markRaw\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"markRaw\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onScopeDispose\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onScopeDispose\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"proxyRefs\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"proxyRefs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reactive\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"readonly\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"readonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ref\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"ref\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowReactive\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"shallowReactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowReadonly\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowRef\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"shallowRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stop\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"stop\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRaw\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRef\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"toRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRefs\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"toRefs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerRef\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"triggerRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unref\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"unref\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"capitalize\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"capitalize\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeClass\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"normalizeClass\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeProps\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"normalizeProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeStyle\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStyle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toDisplayString\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"toDisplayString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toHandlerKey\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"toHandlerKey\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BaseTransition\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"BaseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Comment\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Comment\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Fragment\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KeepAlive\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"KeepAlive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Static\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Static\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Suspense\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Suspense\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Teleport\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Teleport\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Text\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"callWithAsyncErrorHandling\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"callWithAsyncErrorHandling\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"callWithErrorHandling\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"callWithErrorHandling\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cloneVNode\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"cloneVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compatUtils\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"compatUtils\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"computed\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"computed\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createBlock\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createBlock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createCommentVNode\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createCommentVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createElementBlock\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createElementBlock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createElementVNode\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createElementVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createHydrationRenderer\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createHydrationRenderer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createPropsRestProxy\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createPropsRestProxy\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createRenderer\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createRenderer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSlots\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createSlots\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createStaticVNode\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createStaticVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTextVNode\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createTextVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVNode\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineAsyncComponent\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"defineAsyncComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineComponent\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"defineComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineEmits\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"defineEmits\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineExpose\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"defineExpose\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineProps\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"defineProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"devtools\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"devtools\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentInstance\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTransitionRawChildren\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"getTransitionRawChildren\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"guardReactiveProps\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"guardReactiveProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"h\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"handleError\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"handleError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"initCustomFormatter\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"initCustomFormatter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"inject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isMemoSame\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isMemoSame\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRuntimeOnly\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isRuntimeOnly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isVNode\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mergeDefaults\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"mergeDefaults\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mergeProps\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"mergeProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nextTick\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"nextTick\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onActivated\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onActivated\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onBeforeMount\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onBeforeMount\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onBeforeUnmount\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onBeforeUnmount\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onBeforeUpdate\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onBeforeUpdate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onDeactivated\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onDeactivated\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onErrorCaptured\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onErrorCaptured\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onMounted\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onMounted\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onRenderTracked\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onRenderTracked\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onRenderTriggered\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onRenderTriggered\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onServerPrefetch\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onServerPrefetch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUnmounted\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onUnmounted\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUpdated\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onUpdated\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openBlock\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"openBlock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"popScopeId\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"popScopeId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"provide\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"provide\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pushScopeId\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"pushScopeId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"queuePostFlushCb\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"queuePostFlushCb\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerRuntimeCompiler\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"registerRuntimeCompiler\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderList\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"renderList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderSlot\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"renderSlot\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveComponent\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"resolveComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveDirective\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"resolveDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveDynamicComponent\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"resolveDynamicComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveFilter\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"resolveFilter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveTransitionHooks\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"resolveTransitionHooks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setBlockTracking\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"setBlockTracking\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setDevtoolsHook\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"setDevtoolsHook\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setTransitionHooks\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"setTransitionHooks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ssrContextKey\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"ssrContextKey\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ssrUtils\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"ssrUtils\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toHandlers\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"toHandlers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transformVNodeArgs\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"transformVNodeArgs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useAttrs\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"useAttrs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useSSRContext\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"useSSRContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useSlots\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"useSlots\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useTransitionState\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"useTransitionState\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"version\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"warn\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"watch\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"watch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"watchEffect\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"watchEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"watchPostEffect\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"watchPostEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"watchSyncEffect\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"watchSyncEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withAsyncContext\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"withAsyncContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withCtx\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"withCtx\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withDefaults\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"withDefaults\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withDirectives\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"withDirectives\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withMemo\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"withMemo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withScopeId\", function() { return _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"withScopeId\"]; });\n\n/* harmony import */ var _vue_shared__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vue/shared */ \"./node_modules/@vue/shared/dist/shared.esm-bundler.js\");\n\n\n\n\nconst svgNS = 'http://www.w3.org/2000/svg';\r\nconst doc = (typeof document !== 'undefined' ? document : null);\r\nconst templateContainer = doc && doc.createElement('template');\r\nconst nodeOps = {\r\n insert: (child, parent, anchor) => {\r\n parent.insertBefore(child, anchor || null);\r\n },\r\n remove: child => {\r\n const parent = child.parentNode;\r\n if (parent) {\r\n parent.removeChild(child);\r\n }\r\n },\r\n createElement: (tag, isSVG, is, props) => {\r\n const el = isSVG\r\n ? doc.createElementNS(svgNS, tag)\r\n : doc.createElement(tag, is ? { is } : undefined);\r\n if (tag === 'select' && props && props.multiple != null) {\r\n el.setAttribute('multiple', props.multiple);\r\n }\r\n return el;\r\n },\r\n createText: text => doc.createTextNode(text),\r\n createComment: text => doc.createComment(text),\r\n setText: (node, text) => {\r\n node.nodeValue = text;\r\n },\r\n setElementText: (el, text) => {\r\n el.textContent = text;\r\n },\r\n parentNode: node => node.parentNode,\r\n nextSibling: node => node.nextSibling,\r\n querySelector: selector => doc.querySelector(selector),\r\n setScopeId(el, id) {\r\n el.setAttribute(id, '');\r\n },\r\n cloneNode(el) {\r\n const cloned = el.cloneNode(true);\r\n // #3072\r\n // - in `patchDOMProp`, we store the actual value in the `el._value` property.\r\n // - normally, elements using `:value` bindings will not be hoisted, but if\r\n // the bound value is a constant, e.g. `:value=\"true\"` - they do get\r\n // hoisted.\r\n // - in production, hoisted nodes are cloned when subsequent inserts, but\r\n // cloneNode() does not copy the custom property we attached.\r\n // - This may need to account for other custom DOM properties we attach to\r\n // elements in addition to `_value` in the future.\r\n if (`_value` in el) {\r\n cloned._value = el._value;\r\n }\r\n return cloned;\r\n },\r\n // __UNSAFE__\r\n // Reason: innerHTML.\r\n // Static content here can only come from compiled templates.\r\n // As long as the user only uses trusted templates, this is safe.\r\n insertStaticContent(content, parent, anchor, isSVG, start, end) {\r\n // <parent> before | first ... last | anchor </parent>\r\n const before = anchor ? anchor.previousSibling : parent.lastChild;\r\n // #5308 can only take cached path if:\r\n // - has a single root node\r\n // - nextSibling info is still available\r\n if (start && (start === end || start.nextSibling)) {\r\n // cached\r\n while (true) {\r\n parent.insertBefore(start.cloneNode(true), anchor);\r\n if (start === end || !(start = start.nextSibling))\r\n break;\r\n }\r\n }\r\n else {\r\n // fresh insert\r\n templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;\r\n const template = templateContainer.content;\r\n if (isSVG) {\r\n // remove outer svg wrapper\r\n const wrapper = template.firstChild;\r\n while (wrapper.firstChild) {\r\n template.appendChild(wrapper.firstChild);\r\n }\r\n template.removeChild(wrapper);\r\n }\r\n parent.insertBefore(template, anchor);\r\n }\r\n return [\r\n // first\r\n before ? before.nextSibling : parent.firstChild,\r\n // last\r\n anchor ? anchor.previousSibling : parent.lastChild\r\n ];\r\n }\r\n};\n\n// compiler should normalize class + :class bindings on the same element\r\n// into a single binding ['staticClass', dynamic]\r\nfunction patchClass(el, value, isSVG) {\r\n // directly setting className should be faster than setAttribute in theory\r\n // if this is an element during a transition, take the temporary transition\r\n // classes into account.\r\n const transitionClasses = el._vtc;\r\n if (transitionClasses) {\r\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(' ');\r\n }\r\n if (value == null) {\r\n el.removeAttribute('class');\r\n }\r\n else if (isSVG) {\r\n el.setAttribute('class', value);\r\n }\r\n else {\r\n el.className = value;\r\n }\r\n}\n\nfunction patchStyle(el, prev, next) {\r\n const style = el.style;\r\n const isCssString = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(next);\r\n if (next && !isCssString) {\r\n for (const key in next) {\r\n setStyle(style, key, next[key]);\r\n }\r\n if (prev && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(prev)) {\r\n for (const key in prev) {\r\n if (next[key] == null) {\r\n setStyle(style, key, '');\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n const currentDisplay = style.display;\r\n if (isCssString) {\r\n if (prev !== next) {\r\n style.cssText = next;\r\n }\r\n }\r\n else if (prev) {\r\n el.removeAttribute('style');\r\n }\r\n // indicates that the `display` of the element is controlled by `v-show`,\r\n // so we always keep the current `display` value regardless of the `style`\r\n // value, thus handing over control to `v-show`.\r\n if ('_vod' in el) {\r\n style.display = currentDisplay;\r\n }\r\n }\r\n}\r\nconst importantRE = /\\s*!important$/;\r\nfunction setStyle(style, name, val) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\r\n val.forEach(v => setStyle(style, name, v));\r\n }\r\n else {\r\n if (name.startsWith('--')) {\r\n // custom property definition\r\n style.setProperty(name, val);\r\n }\r\n else {\r\n const prefixed = autoPrefix(style, name);\r\n if (importantRE.test(val)) {\r\n // !important\r\n style.setProperty(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(prefixed), val.replace(importantRE, ''), 'important');\r\n }\r\n else {\r\n style[prefixed] = val;\r\n }\r\n }\r\n }\r\n}\r\nconst prefixes = ['Webkit', 'Moz', 'ms'];\r\nconst prefixCache = {};\r\nfunction autoPrefix(style, rawName) {\r\n const cached = prefixCache[rawName];\r\n if (cached) {\r\n return cached;\r\n }\r\n let name = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"])(rawName);\r\n if (name !== 'filter' && name in style) {\r\n return (prefixCache[rawName] = name);\r\n }\r\n name = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"capitalize\"])(name);\r\n for (let i = 0; i < prefixes.length; i++) {\r\n const prefixed = prefixes[i] + name;\r\n if (prefixed in style) {\r\n return (prefixCache[rawName] = prefixed);\r\n }\r\n }\r\n return rawName;\r\n}\n\nconst xlinkNS = 'http://www.w3.org/1999/xlink';\r\nfunction patchAttr(el, key, value, isSVG, instance) {\r\n if (isSVG && key.startsWith('xlink:')) {\r\n if (value == null) {\r\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\r\n }\r\n else {\r\n el.setAttributeNS(xlinkNS, key, value);\r\n }\r\n }\r\n else {\r\n // note we are only checking boolean attributes that don't have a\r\n // corresponding dom prop of the same name here.\r\n const isBoolean = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSpecialBooleanAttr\"])(key);\r\n if (value == null || (isBoolean && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"includeBooleanAttr\"])(value))) {\r\n el.removeAttribute(key);\r\n }\r\n else {\r\n el.setAttribute(key, isBoolean ? '' : value);\r\n }\r\n }\r\n}\n\n// __UNSAFE__\r\n// functions. The user is responsible for using them with only trusted content.\r\nfunction patchDOMProp(el, key, value, \r\n// the following args are passed only due to potential innerHTML/textContent\r\n// overriding existing VNodes, in which case the old tree must be properly\r\n// unmounted.\r\nprevChildren, parentComponent, parentSuspense, unmountChildren) {\r\n if (key === 'innerHTML' || key === 'textContent') {\r\n if (prevChildren) {\r\n unmountChildren(prevChildren, parentComponent, parentSuspense);\r\n }\r\n el[key] = value == null ? '' : value;\r\n return;\r\n }\r\n if (key === 'value' &&\r\n el.tagName !== 'PROGRESS' &&\r\n // custom elements may use _value internally\r\n !el.tagName.includes('-')) {\r\n // store value as _value as well since\r\n // non-string values will be stringified.\r\n el._value = value;\r\n const newValue = value == null ? '' : value;\r\n if (el.value !== newValue ||\r\n // #4956: always set for OPTION elements because its value falls back to\r\n // textContent if no value attribute is present. And setting .value for\r\n // OPTION has no side effect\r\n el.tagName === 'OPTION') {\r\n el.value = newValue;\r\n }\r\n if (value == null) {\r\n el.removeAttribute(key);\r\n }\r\n return;\r\n }\r\n if (value === '' || value == null) {\r\n const type = typeof el[key];\r\n if (type === 'boolean') {\r\n // e.g. <select multiple> compiles to { multiple: '' }\r\n el[key] = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"includeBooleanAttr\"])(value);\r\n return;\r\n }\r\n else if (value == null && type === 'string') {\r\n // e.g. <div :id=\"null\">\r\n el[key] = '';\r\n el.removeAttribute(key);\r\n return;\r\n }\r\n else if (type === 'number') {\r\n // e.g. <img :width=\"null\">\r\n // the value of some IDL attr must be greater than 0, e.g. input.size = 0 -> error\r\n try {\r\n el[key] = 0;\r\n }\r\n catch (_a) { }\r\n el.removeAttribute(key);\r\n return;\r\n }\r\n }\r\n // some properties perform value validation and throw\r\n try {\r\n el[key] = value;\r\n }\r\n catch (e) {\r\n if ((true)) {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`Failed setting prop \"${key}\" on <${el.tagName.toLowerCase()}>: ` +\r\n `value ${value} is invalid.`, e);\r\n }\r\n }\r\n}\n\n// Async edge case fix requires storing an event listener's attach timestamp.\r\nlet _getNow = Date.now;\r\nlet skipTimestampCheck = false;\r\nif (typeof window !== 'undefined') {\r\n // Determine what event timestamp the browser is using. Annoyingly, the\r\n // timestamp can either be hi-res (relative to page load) or low-res\r\n // (relative to UNIX epoch), so in order to compare time we have to use the\r\n // same timestamp type when saving the flush timestamp.\r\n if (_getNow() > document.createEvent('Event').timeStamp) {\r\n // if the low-res timestamp which is bigger than the event timestamp\r\n // (which is evaluated AFTER) it means the event is using a hi-res timestamp,\r\n // and we need to use the hi-res version for event listeners as well.\r\n _getNow = () => performance.now();\r\n }\r\n // #3485: Firefox <= 53 has incorrect Event.timeStamp implementation\r\n // and does not fire microtasks in between event propagation, so safe to exclude.\r\n const ffMatch = navigator.userAgent.match(/firefox\\/(\\d+)/i);\r\n skipTimestampCheck = !!(ffMatch && Number(ffMatch[1]) <= 53);\r\n}\r\n// To avoid the overhead of repeatedly calling performance.now(), we cache\r\n// and use the same timestamp for all event listeners attached in the same tick.\r\nlet cachedNow = 0;\r\nconst p = Promise.resolve();\r\nconst reset = () => {\r\n cachedNow = 0;\r\n};\r\nconst getNow = () => cachedNow || (p.then(reset), (cachedNow = _getNow()));\r\nfunction addEventListener(el, event, handler, options) {\r\n el.addEventListener(event, handler, options);\r\n}\r\nfunction removeEventListener(el, event, handler, options) {\r\n el.removeEventListener(event, handler, options);\r\n}\r\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\r\n // vei = vue event invokers\r\n const invokers = el._vei || (el._vei = {});\r\n const existingInvoker = invokers[rawName];\r\n if (nextValue && existingInvoker) {\r\n // patch\r\n existingInvoker.value = nextValue;\r\n }\r\n else {\r\n const [name, options] = parseName(rawName);\r\n if (nextValue) {\r\n // add\r\n const invoker = (invokers[rawName] = createInvoker(nextValue, instance));\r\n addEventListener(el, name, invoker, options);\r\n }\r\n else if (existingInvoker) {\r\n // remove\r\n removeEventListener(el, name, existingInvoker, options);\r\n invokers[rawName] = undefined;\r\n }\r\n }\r\n}\r\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\r\nfunction parseName(name) {\r\n let options;\r\n if (optionsModifierRE.test(name)) {\r\n options = {};\r\n let m;\r\n while ((m = name.match(optionsModifierRE))) {\r\n name = name.slice(0, name.length - m[0].length);\r\n options[m[0].toLowerCase()] = true;\r\n }\r\n }\r\n return [Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(name.slice(2)), options];\r\n}\r\nfunction createInvoker(initialValue, instance) {\r\n const invoker = (e) => {\r\n // async edge case #6566: inner click event triggers patch, event handler\r\n // attached to outer element during patch, and triggered again. This\r\n // happens because browsers fire microtask ticks between event propagation.\r\n // the solution is simple: we save the timestamp when a handler is attached,\r\n // and the handler would only fire if the event passed to it was fired\r\n // AFTER it was attached.\r\n const timeStamp = e.timeStamp || _getNow();\r\n if (skipTimestampCheck || timeStamp >= invoker.attached - 1) {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"callWithAsyncErrorHandling\"])(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* NATIVE_EVENT_HANDLER */, [e]);\r\n }\r\n };\r\n invoker.value = initialValue;\r\n invoker.attached = getNow();\r\n return invoker;\r\n}\r\nfunction patchStopImmediatePropagation(e, value) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\r\n const originalStop = e.stopImmediatePropagation;\r\n e.stopImmediatePropagation = () => {\r\n originalStop.call(e);\r\n e._stopped = true;\r\n };\r\n return value.map(fn => (e) => !e._stopped && fn && fn(e));\r\n }\r\n else {\r\n return value;\r\n }\r\n}\n\nconst nativeOnRE = /^on[a-z]/;\r\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\r\n if (key === 'class') {\r\n patchClass(el, nextValue, isSVG);\r\n }\r\n else if (key === 'style') {\r\n patchStyle(el, prevValue, nextValue);\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isOn\"])(key)) {\r\n // ignore v-model listeners\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isModelListener\"])(key)) {\r\n patchEvent(el, key, prevValue, nextValue, parentComponent);\r\n }\r\n }\r\n else if (key[0] === '.'\r\n ? ((key = key.slice(1)), true)\r\n : key[0] === '^'\r\n ? ((key = key.slice(1)), false)\r\n : shouldSetAsProp(el, key, nextValue, isSVG)) {\r\n patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n else {\r\n // special case for <input v-model type=\"checkbox\"> with\r\n // :true-value & :false-value\r\n // store value as dom properties since non-string values will be\r\n // stringified.\r\n if (key === 'true-value') {\r\n el._trueValue = nextValue;\r\n }\r\n else if (key === 'false-value') {\r\n el._falseValue = nextValue;\r\n }\r\n patchAttr(el, key, nextValue, isSVG);\r\n }\r\n};\r\nfunction shouldSetAsProp(el, key, value, isSVG) {\r\n if (isSVG) {\r\n // most keys must be set as attribute on svg elements to work\r\n // ...except innerHTML & textContent\r\n if (key === 'innerHTML' || key === 'textContent') {\r\n return true;\r\n }\r\n // or native onclick with function values\r\n if (key in el && nativeOnRE.test(key) && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // spellcheck and draggable are numerated attrs, however their\r\n // corresponding DOM properties are actually booleans - this leads to\r\n // setting it with a string \"false\" value leading it to be coerced to\r\n // `true`, so we need to always treat them as attributes.\r\n // Note that `contentEditable` doesn't have this problem: its DOM\r\n // property is also enumerated string values.\r\n if (key === 'spellcheck' || key === 'draggable') {\r\n return false;\r\n }\r\n // #1787, #2840 form property on form elements is readonly and must be set as\r\n // attribute.\r\n if (key === 'form') {\r\n return false;\r\n }\r\n // #1526 <input list> must be set as attribute\r\n if (key === 'list' && el.tagName === 'INPUT') {\r\n return false;\r\n }\r\n // #2766 <textarea type> must be set as attribute\r\n if (key === 'type' && el.tagName === 'TEXTAREA') {\r\n return false;\r\n }\r\n // native onclick with string value, must be set as attribute\r\n if (nativeOnRE.test(key) && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\r\n return false;\r\n }\r\n return key in el;\r\n}\n\nfunction defineCustomElement(options, hydate) {\r\n const Comp = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"defineComponent\"])(options);\r\n class VueCustomElement extends VueElement {\r\n constructor(initialProps) {\r\n super(Comp, initialProps, hydate);\r\n }\r\n }\r\n VueCustomElement.def = Comp;\r\n return VueCustomElement;\r\n}\r\nconst defineSSRCustomElement = ((options) => {\r\n // @ts-ignore\r\n return defineCustomElement(options, hydrate);\r\n});\r\nconst BaseClass = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {\r\n});\r\nclass VueElement extends BaseClass {\r\n constructor(_def, _props = {}, hydrate) {\r\n super();\r\n this._def = _def;\r\n this._props = _props;\r\n /**\r\n * @internal\r\n */\r\n this._instance = null;\r\n this._connected = false;\r\n this._resolved = false;\r\n this._numberProps = null;\r\n if (this.shadowRoot && hydrate) {\r\n hydrate(this._createVNode(), this.shadowRoot);\r\n }\r\n else {\r\n if (( true) && this.shadowRoot) {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`Custom element has pre-rendered declarative shadow root but is not ` +\r\n `defined as hydratable. Use \\`defineSSRCustomElement\\`.`);\r\n }\r\n this.attachShadow({ mode: 'open' });\r\n }\r\n }\r\n connectedCallback() {\r\n this._connected = true;\r\n if (!this._instance) {\r\n this._resolveDef();\r\n }\r\n }\r\n disconnectedCallback() {\r\n this._connected = false;\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"nextTick\"])(() => {\r\n if (!this._connected) {\r\n render(null, this.shadowRoot);\r\n this._instance = null;\r\n }\r\n });\r\n }\r\n /**\r\n * resolve inner component definition (handle possible async component)\r\n */\r\n _resolveDef() {\r\n if (this._resolved) {\r\n return;\r\n }\r\n this._resolved = true;\r\n // set initial attrs\r\n for (let i = 0; i < this.attributes.length; i++) {\r\n this._setAttr(this.attributes[i].name);\r\n }\r\n // watch future attr changes\r\n new MutationObserver(mutations => {\r\n for (const m of mutations) {\r\n this._setAttr(m.attributeName);\r\n }\r\n }).observe(this, { attributes: true });\r\n const resolve = (def) => {\r\n const { props, styles } = def;\r\n const hasOptions = !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(props);\r\n const rawKeys = props ? (hasOptions ? Object.keys(props) : props) : [];\r\n // cast Number-type props set before resolve\r\n let numberProps;\r\n if (hasOptions) {\r\n for (const key in this._props) {\r\n const opt = props[key];\r\n if (opt === Number || (opt && opt.type === Number)) {\r\n this._props[key] = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toNumber\"])(this._props[key]);\r\n (numberProps || (numberProps = Object.create(null)))[key] = true;\r\n }\r\n }\r\n }\r\n this._numberProps = numberProps;\r\n // check if there are props set pre-upgrade or connect\r\n for (const key of Object.keys(this)) {\r\n if (key[0] !== '_') {\r\n this._setProp(key, this[key], true, false);\r\n }\r\n }\r\n // defining getter/setters on prototype\r\n for (const key of rawKeys.map(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])) {\r\n Object.defineProperty(this, key, {\r\n get() {\r\n return this._getProp(key);\r\n },\r\n set(val) {\r\n this._setProp(key, val);\r\n }\r\n });\r\n }\r\n // apply CSS\r\n this._applyStyles(styles);\r\n // initial render\r\n this._update();\r\n };\r\n const asyncDef = this._def.__asyncLoader;\r\n if (asyncDef) {\r\n asyncDef().then(resolve);\r\n }\r\n else {\r\n resolve(this._def);\r\n }\r\n }\r\n _setAttr(key) {\r\n let value = this.getAttribute(key);\r\n if (this._numberProps && this._numberProps[key]) {\r\n value = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toNumber\"])(value);\r\n }\r\n this._setProp(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"camelize\"])(key), value, false);\r\n }\r\n /**\r\n * @internal\r\n */\r\n _getProp(key) {\r\n return this._props[key];\r\n }\r\n /**\r\n * @internal\r\n */\r\n _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\r\n if (val !== this._props[key]) {\r\n this._props[key] = val;\r\n if (shouldUpdate && this._instance) {\r\n this._update();\r\n }\r\n // reflect\r\n if (shouldReflect) {\r\n if (val === true) {\r\n this.setAttribute(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(key), '');\r\n }\r\n else if (typeof val === 'string' || typeof val === 'number') {\r\n this.setAttribute(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(key), val + '');\r\n }\r\n else if (!val) {\r\n this.removeAttribute(Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(key));\r\n }\r\n }\r\n }\r\n }\r\n _update() {\r\n render(this._createVNode(), this.shadowRoot);\r\n }\r\n _createVNode() {\r\n const vnode = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createVNode\"])(this._def, Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, this._props));\r\n if (!this._instance) {\r\n vnode.ce = instance => {\r\n this._instance = instance;\r\n instance.isCE = true;\r\n // HMR\r\n if ((true)) {\r\n instance.ceReload = newStyles => {\r\n // always reset styles\r\n if (this._styles) {\r\n this._styles.forEach(s => this.shadowRoot.removeChild(s));\r\n this._styles.length = 0;\r\n }\r\n this._applyStyles(newStyles);\r\n // if this is an async component, ceReload is called from the inner\r\n // component so no need to reload the async wrapper\r\n if (!this._def.__asyncLoader) {\r\n // reload\r\n this._instance = null;\r\n this._update();\r\n }\r\n };\r\n }\r\n // intercept emit\r\n instance.emit = (event, ...args) => {\r\n this.dispatchEvent(new CustomEvent(event, {\r\n detail: args\r\n }));\r\n };\r\n // locate nearest Vue custom element parent for provide/inject\r\n let parent = this;\r\n while ((parent =\r\n parent && (parent.parentNode || parent.host))) {\r\n if (parent instanceof VueElement) {\r\n instance.parent = parent._instance;\r\n break;\r\n }\r\n }\r\n };\r\n }\r\n return vnode;\r\n }\r\n _applyStyles(styles) {\r\n if (styles) {\r\n styles.forEach(css => {\r\n const s = document.createElement('style');\r\n s.textContent = css;\r\n this.shadowRoot.appendChild(s);\r\n // record for HMR\r\n if ((true)) {\r\n (this._styles || (this._styles = [])).push(s);\r\n }\r\n });\r\n }\r\n }\r\n}\n\nfunction useCssModule(name = '$style') {\r\n /* istanbul ignore else */\r\n {\r\n const instance = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"])();\r\n if (!instance) {\r\n ( true) && Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`useCssModule must be called inside setup()`);\r\n return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n }\r\n const modules = instance.type.__cssModules;\r\n if (!modules) {\r\n ( true) && Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`Current instance does not have CSS modules injected.`);\r\n return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n }\r\n const mod = modules[name];\r\n if (!mod) {\r\n ( true) &&\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`Current instance does not have CSS module named \"${name}\".`);\r\n return _vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY_OBJ\"];\r\n }\r\n return mod;\r\n }\r\n}\n\n/**\r\n * Runtime helper for SFC's CSS variable injection feature.\r\n * @private\r\n */\r\nfunction useCssVars(getter) {\r\n const instance = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"])();\r\n /* istanbul ignore next */\r\n if (!instance) {\r\n ( true) &&\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`useCssVars is called without current active component instance.`);\r\n return;\r\n }\r\n const setVars = () => setVarsOnVNode(instance.subTree, getter(instance.proxy));\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"watchPostEffect\"])(setVars);\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onMounted\"])(() => {\r\n const ob = new MutationObserver(setVars);\r\n ob.observe(instance.subTree.el.parentNode, { childList: true });\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onUnmounted\"])(() => ob.disconnect());\r\n });\r\n}\r\nfunction setVarsOnVNode(vnode, vars) {\r\n if (vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n const suspense = vnode.suspense;\r\n vnode = suspense.activeBranch;\r\n if (suspense.pendingBranch && !suspense.isHydrating) {\r\n suspense.effects.push(() => {\r\n setVarsOnVNode(suspense.activeBranch, vars);\r\n });\r\n }\r\n }\r\n // drill down HOCs until it's a non-component vnode\r\n while (vnode.component) {\r\n vnode = vnode.component.subTree;\r\n }\r\n if (vnode.shapeFlag & 1 /* ELEMENT */ && vnode.el) {\r\n setVarsOnNode(vnode.el, vars);\r\n }\r\n else if (vnode.type === _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"]) {\r\n vnode.children.forEach(c => setVarsOnVNode(c, vars));\r\n }\r\n else if (vnode.type === _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Static\"]) {\r\n let { el, anchor } = vnode;\r\n while (el) {\r\n setVarsOnNode(el, vars);\r\n if (el === anchor)\r\n break;\r\n el = el.nextSibling;\r\n }\r\n }\r\n}\r\nfunction setVarsOnNode(el, vars) {\r\n if (el.nodeType === 1) {\r\n const style = el.style;\r\n for (const key in vars) {\r\n style.setProperty(`--${key}`, vars[key]);\r\n }\r\n }\r\n}\n\nconst TRANSITION = 'transition';\r\nconst ANIMATION = 'animation';\r\n// DOM Transition is a higher-order-component based on the platform-agnostic\r\n// base Transition component, with DOM-specific logic.\r\nconst Transition = (props, { slots }) => Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"h\"])(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"BaseTransition\"], resolveTransitionProps(props), slots);\r\nTransition.displayName = 'Transition';\r\nconst DOMTransitionPropsValidators = {\r\n name: String,\r\n type: String,\r\n css: {\r\n type: Boolean,\r\n default: true\r\n },\r\n duration: [String, Number, Object],\r\n enterFromClass: String,\r\n enterActiveClass: String,\r\n enterToClass: String,\r\n appearFromClass: String,\r\n appearActiveClass: String,\r\n appearToClass: String,\r\n leaveFromClass: String,\r\n leaveActiveClass: String,\r\n leaveToClass: String\r\n};\r\nconst TransitionPropsValidators = (Transition.props =\r\n /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"BaseTransition\"].props, DOMTransitionPropsValidators));\r\n/**\r\n * #3227 Incoming hooks may be merged into arrays when wrapping Transition\r\n * with custom HOCs.\r\n */\r\nconst callHook = (hook, args = []) => {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(hook)) {\r\n hook.forEach(h => h(...args));\r\n }\r\n else if (hook) {\r\n hook(...args);\r\n }\r\n};\r\n/**\r\n * Check if a hook expects a callback (2nd arg), which means the user\r\n * intends to explicitly control the end of the transition.\r\n */\r\nconst hasExplicitCallback = (hook) => {\r\n return hook\r\n ? Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(hook)\r\n ? hook.some(h => h.length > 1)\r\n : hook.length > 1\r\n : false;\r\n};\r\nfunction resolveTransitionProps(rawProps) {\r\n const baseProps = {};\r\n for (const key in rawProps) {\r\n if (!(key in DOMTransitionPropsValidators)) {\r\n baseProps[key] = rawProps[key];\r\n }\r\n }\r\n if (rawProps.css === false) {\r\n return baseProps;\r\n }\r\n const { name = 'v', type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\r\n const durations = normalizeDuration(duration);\r\n const enterDuration = durations && durations[0];\r\n const leaveDuration = durations && durations[1];\r\n const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;\r\n const finishEnter = (el, isAppear, done) => {\r\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\r\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\r\n done && done();\r\n };\r\n const finishLeave = (el, done) => {\r\n removeTransitionClass(el, leaveToClass);\r\n removeTransitionClass(el, leaveActiveClass);\r\n done && done();\r\n };\r\n const makeEnterHook = (isAppear) => {\r\n return (el, done) => {\r\n const hook = isAppear ? onAppear : onEnter;\r\n const resolve = () => finishEnter(el, isAppear, done);\r\n callHook(hook, [el, resolve]);\r\n nextFrame(() => {\r\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\r\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\r\n if (!hasExplicitCallback(hook)) {\r\n whenTransitionEnds(el, type, enterDuration, resolve);\r\n }\r\n });\r\n };\r\n };\r\n return Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(baseProps, {\r\n onBeforeEnter(el) {\r\n callHook(onBeforeEnter, [el]);\r\n addTransitionClass(el, enterFromClass);\r\n addTransitionClass(el, enterActiveClass);\r\n },\r\n onBeforeAppear(el) {\r\n callHook(onBeforeAppear, [el]);\r\n addTransitionClass(el, appearFromClass);\r\n addTransitionClass(el, appearActiveClass);\r\n },\r\n onEnter: makeEnterHook(false),\r\n onAppear: makeEnterHook(true),\r\n onLeave(el, done) {\r\n const resolve = () => finishLeave(el, done);\r\n addTransitionClass(el, leaveFromClass);\r\n // force reflow so *-leave-from classes immediately take effect (#2593)\r\n forceReflow();\r\n addTransitionClass(el, leaveActiveClass);\r\n nextFrame(() => {\r\n removeTransitionClass(el, leaveFromClass);\r\n addTransitionClass(el, leaveToClass);\r\n if (!hasExplicitCallback(onLeave)) {\r\n whenTransitionEnds(el, type, leaveDuration, resolve);\r\n }\r\n });\r\n callHook(onLeave, [el, resolve]);\r\n },\r\n onEnterCancelled(el) {\r\n finishEnter(el, false);\r\n callHook(onEnterCancelled, [el]);\r\n },\r\n onAppearCancelled(el) {\r\n finishEnter(el, true);\r\n callHook(onAppearCancelled, [el]);\r\n },\r\n onLeaveCancelled(el) {\r\n finishLeave(el);\r\n callHook(onLeaveCancelled, [el]);\r\n }\r\n });\r\n}\r\nfunction normalizeDuration(duration) {\r\n if (duration == null) {\r\n return null;\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(duration)) {\r\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\r\n }\r\n else {\r\n const n = NumberOf(duration);\r\n return [n, n];\r\n }\r\n}\r\nfunction NumberOf(val) {\r\n const res = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toNumber\"])(val);\r\n if ((true))\r\n validateDuration(res);\r\n return res;\r\n}\r\nfunction validateDuration(val) {\r\n if (typeof val !== 'number') {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`<transition> explicit duration is not a valid number - ` +\r\n `got ${JSON.stringify(val)}.`);\r\n }\r\n else if (isNaN(val)) {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`<transition> explicit duration is NaN - ` +\r\n 'the duration expression might be incorrect.');\r\n }\r\n}\r\nfunction addTransitionClass(el, cls) {\r\n cls.split(/\\s+/).forEach(c => c && el.classList.add(c));\r\n (el._vtc ||\r\n (el._vtc = new Set())).add(cls);\r\n}\r\nfunction removeTransitionClass(el, cls) {\r\n cls.split(/\\s+/).forEach(c => c && el.classList.remove(c));\r\n const { _vtc } = el;\r\n if (_vtc) {\r\n _vtc.delete(cls);\r\n if (!_vtc.size) {\r\n el._vtc = undefined;\r\n }\r\n }\r\n}\r\nfunction nextFrame(cb) {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(cb);\r\n });\r\n}\r\nlet endId = 0;\r\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\r\n const id = (el._endId = ++endId);\r\n const resolveIfNotStale = () => {\r\n if (id === el._endId) {\r\n resolve();\r\n }\r\n };\r\n if (explicitTimeout) {\r\n return setTimeout(resolveIfNotStale, explicitTimeout);\r\n }\r\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\r\n if (!type) {\r\n return resolve();\r\n }\r\n const endEvent = type + 'end';\r\n let ended = 0;\r\n const end = () => {\r\n el.removeEventListener(endEvent, onEnd);\r\n resolveIfNotStale();\r\n };\r\n const onEnd = (e) => {\r\n if (e.target === el && ++ended >= propCount) {\r\n end();\r\n }\r\n };\r\n setTimeout(() => {\r\n if (ended < propCount) {\r\n end();\r\n }\r\n }, timeout + 1);\r\n el.addEventListener(endEvent, onEnd);\r\n}\r\nfunction getTransitionInfo(el, expectedType) {\r\n const styles = window.getComputedStyle(el);\r\n // JSDOM may return undefined for transition properties\r\n const getStyleProperties = (key) => (styles[key] || '').split(', ');\r\n const transitionDelays = getStyleProperties(TRANSITION + 'Delay');\r\n const transitionDurations = getStyleProperties(TRANSITION + 'Duration');\r\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\r\n const animationDelays = getStyleProperties(ANIMATION + 'Delay');\r\n const animationDurations = getStyleProperties(ANIMATION + 'Duration');\r\n const animationTimeout = getTimeout(animationDelays, animationDurations);\r\n let type = null;\r\n let timeout = 0;\r\n let propCount = 0;\r\n /* istanbul ignore if */\r\n if (expectedType === TRANSITION) {\r\n if (transitionTimeout > 0) {\r\n type = TRANSITION;\r\n timeout = transitionTimeout;\r\n propCount = transitionDurations.length;\r\n }\r\n }\r\n else if (expectedType === ANIMATION) {\r\n if (animationTimeout > 0) {\r\n type = ANIMATION;\r\n timeout = animationTimeout;\r\n propCount = animationDurations.length;\r\n }\r\n }\r\n else {\r\n timeout = Math.max(transitionTimeout, animationTimeout);\r\n type =\r\n timeout > 0\r\n ? transitionTimeout > animationTimeout\r\n ? TRANSITION\r\n : ANIMATION\r\n : null;\r\n propCount = type\r\n ? type === TRANSITION\r\n ? transitionDurations.length\r\n : animationDurations.length\r\n : 0;\r\n }\r\n const hasTransform = type === TRANSITION &&\r\n /\\b(transform|all)(,|$)/.test(styles[TRANSITION + 'Property']);\r\n return {\r\n type,\r\n timeout,\r\n propCount,\r\n hasTransform\r\n };\r\n}\r\nfunction getTimeout(delays, durations) {\r\n while (delays.length < durations.length) {\r\n delays = delays.concat(delays);\r\n }\r\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\r\n}\r\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer\r\n// numbers in a locale-dependent way, using a comma instead of a dot.\r\n// If comma is not replaced with a dot, the input will be rounded down\r\n// (i.e. acting as a floor function) causing unexpected behaviors\r\nfunction toMs(s) {\r\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\r\n}\r\n// synchronously force layout to put elements into a certain state\r\nfunction forceReflow() {\r\n return document.body.offsetHeight;\r\n}\n\nconst positionMap = new WeakMap();\r\nconst newPositionMap = new WeakMap();\r\nconst TransitionGroupImpl = {\r\n name: 'TransitionGroup',\r\n props: /*#__PURE__*/ Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, TransitionPropsValidators, {\r\n tag: String,\r\n moveClass: String\r\n }),\r\n setup(props, { slots }) {\r\n const instance = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"])();\r\n const state = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"useTransitionState\"])();\r\n let prevChildren;\r\n let children;\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"onUpdated\"])(() => {\r\n // children is guaranteed to exist after initial render\r\n if (!prevChildren.length) {\r\n return;\r\n }\r\n const moveClass = props.moveClass || `${props.name || 'v'}-move`;\r\n if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {\r\n return;\r\n }\r\n // we divide the work into three loops to avoid mixing DOM reads and writes\r\n // in each iteration - which helps prevent layout thrashing.\r\n prevChildren.forEach(callPendingCbs);\r\n prevChildren.forEach(recordPosition);\r\n const movedChildren = prevChildren.filter(applyTranslation);\r\n // force reflow to put everything in position\r\n forceReflow();\r\n movedChildren.forEach(c => {\r\n const el = c.el;\r\n const style = el.style;\r\n addTransitionClass(el, moveClass);\r\n style.transform = style.webkitTransform = style.transitionDuration = '';\r\n const cb = (el._moveCb = (e) => {\r\n if (e && e.target !== el) {\r\n return;\r\n }\r\n if (!e || /transform$/.test(e.propertyName)) {\r\n el.removeEventListener('transitionend', cb);\r\n el._moveCb = null;\r\n removeTransitionClass(el, moveClass);\r\n }\r\n });\r\n el.addEventListener('transitionend', cb);\r\n });\r\n });\r\n return () => {\r\n const rawProps = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"])(props);\r\n const cssTransitionProps = resolveTransitionProps(rawProps);\r\n let tag = rawProps.tag || _vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"];\r\n prevChildren = children;\r\n children = slots.default ? Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"getTransitionRawChildren\"])(slots.default()) : [];\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (child.key != null) {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"setTransitionHooks\"])(child, Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"resolveTransitionHooks\"])(child, cssTransitionProps, state, instance));\r\n }\r\n else if ((true)) {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`<TransitionGroup> children must be keyed.`);\r\n }\r\n }\r\n if (prevChildren) {\r\n for (let i = 0; i < prevChildren.length; i++) {\r\n const child = prevChildren[i];\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"setTransitionHooks\"])(child, Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"resolveTransitionHooks\"])(child, cssTransitionProps, state, instance));\r\n positionMap.set(child, child.el.getBoundingClientRect());\r\n }\r\n }\r\n return Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createVNode\"])(tag, null, children);\r\n };\r\n }\r\n};\r\nconst TransitionGroup = TransitionGroupImpl;\r\nfunction callPendingCbs(c) {\r\n const el = c.el;\r\n if (el._moveCb) {\r\n el._moveCb();\r\n }\r\n if (el._enterCb) {\r\n el._enterCb();\r\n }\r\n}\r\nfunction recordPosition(c) {\r\n newPositionMap.set(c, c.el.getBoundingClientRect());\r\n}\r\nfunction applyTranslation(c) {\r\n const oldPos = positionMap.get(c);\r\n const newPos = newPositionMap.get(c);\r\n const dx = oldPos.left - newPos.left;\r\n const dy = oldPos.top - newPos.top;\r\n if (dx || dy) {\r\n const s = c.el.style;\r\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\r\n s.transitionDuration = '0s';\r\n return c;\r\n }\r\n}\r\nfunction hasCSSTransform(el, root, moveClass) {\r\n // Detect whether an element with the move class applied has\r\n // CSS transitions. Since the element may be inside an entering\r\n // transition at this very moment, we make a clone of it and remove\r\n // all other transition classes applied to ensure only the move class\r\n // is applied.\r\n const clone = el.cloneNode();\r\n if (el._vtc) {\r\n el._vtc.forEach(cls => {\r\n cls.split(/\\s+/).forEach(c => c && clone.classList.remove(c));\r\n });\r\n }\r\n moveClass.split(/\\s+/).forEach(c => c && clone.classList.add(c));\r\n clone.style.display = 'none';\r\n const container = (root.nodeType === 1 ? root : root.parentNode);\r\n container.appendChild(clone);\r\n const { hasTransform } = getTransitionInfo(clone);\r\n container.removeChild(clone);\r\n return hasTransform;\r\n}\n\nconst getModelAssigner = (vnode) => {\r\n const fn = vnode.props['onUpdate:modelValue'];\r\n return Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(fn) ? value => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"invokeArrayFns\"])(fn, value) : fn;\r\n};\r\nfunction onCompositionStart(e) {\r\n e.target.composing = true;\r\n}\r\nfunction onCompositionEnd(e) {\r\n const target = e.target;\r\n if (target.composing) {\r\n target.composing = false;\r\n trigger(target, 'input');\r\n }\r\n}\r\nfunction trigger(el, type) {\r\n const e = document.createEvent('HTMLEvents');\r\n e.initEvent(type, true, true);\r\n el.dispatchEvent(e);\r\n}\r\n// We are exporting the v-model runtime directly as vnode hooks so that it can\r\n// be tree-shaken in case v-model is never used.\r\nconst vModelText = {\r\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n const castToNumber = number || (vnode.props && vnode.props.type === 'number');\r\n addEventListener(el, lazy ? 'change' : 'input', e => {\r\n if (e.target.composing)\r\n return;\r\n let domValue = el.value;\r\n if (trim) {\r\n domValue = domValue.trim();\r\n }\r\n else if (castToNumber) {\r\n domValue = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toNumber\"])(domValue);\r\n }\r\n el._assign(domValue);\r\n });\r\n if (trim) {\r\n addEventListener(el, 'change', () => {\r\n el.value = el.value.trim();\r\n });\r\n }\r\n if (!lazy) {\r\n addEventListener(el, 'compositionstart', onCompositionStart);\r\n addEventListener(el, 'compositionend', onCompositionEnd);\r\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\r\n // switching focus before confirming composition choice\r\n // this also fixes the issue where some browsers e.g. iOS Chrome\r\n // fires \"change\" instead of \"input\" on autocomplete.\r\n addEventListener(el, 'change', onCompositionEnd);\r\n }\r\n },\r\n // set value on mounted so it's after min/max for type=\"range\"\r\n mounted(el, { value }) {\r\n el.value = value == null ? '' : value;\r\n },\r\n beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n // avoid clearing unresolved text. #2302\r\n if (el.composing)\r\n return;\r\n if (document.activeElement === el) {\r\n if (lazy) {\r\n return;\r\n }\r\n if (trim && el.value.trim() === value) {\r\n return;\r\n }\r\n if ((number || el.type === 'number') && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toNumber\"])(el.value) === value) {\r\n return;\r\n }\r\n }\r\n const newValue = value == null ? '' : value;\r\n if (el.value !== newValue) {\r\n el.value = newValue;\r\n }\r\n }\r\n};\r\nconst vModelCheckbox = {\r\n // #4096 array checkboxes need to be deep traversed\r\n deep: true,\r\n created(el, _, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n addEventListener(el, 'change', () => {\r\n const modelValue = el._modelValue;\r\n const elementValue = getValue(el);\r\n const checked = el.checked;\r\n const assign = el._assign;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(modelValue)) {\r\n const index = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseIndexOf\"])(modelValue, elementValue);\r\n const found = index !== -1;\r\n if (checked && !found) {\r\n assign(modelValue.concat(elementValue));\r\n }\r\n else if (!checked && found) {\r\n const filtered = [...modelValue];\r\n filtered.splice(index, 1);\r\n assign(filtered);\r\n }\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSet\"])(modelValue)) {\r\n const cloned = new Set(modelValue);\r\n if (checked) {\r\n cloned.add(elementValue);\r\n }\r\n else {\r\n cloned.delete(elementValue);\r\n }\r\n assign(cloned);\r\n }\r\n else {\r\n assign(getCheckboxValue(el, checked));\r\n }\r\n });\r\n },\r\n // set initial checked on mount to wait for true-value/false-value\r\n mounted: setChecked,\r\n beforeUpdate(el, binding, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n setChecked(el, binding, vnode);\r\n }\r\n};\r\nfunction setChecked(el, { value, oldValue }, vnode) {\r\n el._modelValue = value;\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\r\n el.checked = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseIndexOf\"])(value, vnode.props.value) > -1;\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSet\"])(value)) {\r\n el.checked = value.has(vnode.props.value);\r\n }\r\n else if (value !== oldValue) {\r\n el.checked = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseEqual\"])(value, getCheckboxValue(el, true));\r\n }\r\n}\r\nconst vModelRadio = {\r\n created(el, { value }, vnode) {\r\n el.checked = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseEqual\"])(value, vnode.props.value);\r\n el._assign = getModelAssigner(vnode);\r\n addEventListener(el, 'change', () => {\r\n el._assign(getValue(el));\r\n });\r\n },\r\n beforeUpdate(el, { value, oldValue }, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n if (value !== oldValue) {\r\n el.checked = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseEqual\"])(value, vnode.props.value);\r\n }\r\n }\r\n};\r\nconst vModelSelect = {\r\n // <select multiple> value need to be deep traversed\r\n deep: true,\r\n created(el, { value, modifiers: { number } }, vnode) {\r\n const isSetModel = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSet\"])(value);\r\n addEventListener(el, 'change', () => {\r\n const selectedVal = Array.prototype.filter\r\n .call(el.options, (o) => o.selected)\r\n .map((o) => number ? Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"toNumber\"])(getValue(o)) : getValue(o));\r\n el._assign(el.multiple\r\n ? isSetModel\r\n ? new Set(selectedVal)\r\n : selectedVal\r\n : selectedVal[0]);\r\n });\r\n el._assign = getModelAssigner(vnode);\r\n },\r\n // set value in mounted & updated because <select> relies on its children\r\n // <option>s.\r\n mounted(el, { value }) {\r\n setSelected(el, value);\r\n },\r\n beforeUpdate(el, _binding, vnode) {\r\n el._assign = getModelAssigner(vnode);\r\n },\r\n updated(el, { value }) {\r\n setSelected(el, value);\r\n }\r\n};\r\nfunction setSelected(el, value) {\r\n const isMultiple = el.multiple;\r\n if (isMultiple && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value) && !Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSet\"])(value)) {\r\n ( true) &&\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`<select multiple v-model> expects an Array or Set value for its binding, ` +\r\n `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`);\r\n return;\r\n }\r\n for (let i = 0, l = el.options.length; i < l; i++) {\r\n const option = el.options[i];\r\n const optionValue = getValue(option);\r\n if (isMultiple) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\r\n option.selected = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseIndexOf\"])(value, optionValue) > -1;\r\n }\r\n else {\r\n option.selected = value.has(optionValue);\r\n }\r\n }\r\n else {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseEqual\"])(getValue(option), value)) {\r\n if (el.selectedIndex !== i)\r\n el.selectedIndex = i;\r\n return;\r\n }\r\n }\r\n }\r\n if (!isMultiple && el.selectedIndex !== -1) {\r\n el.selectedIndex = -1;\r\n }\r\n}\r\n// retrieve raw value set via :value bindings\r\nfunction getValue(el) {\r\n return '_value' in el ? el._value : el.value;\r\n}\r\n// retrieve raw value for true-value and false-value set via :true-value or :false-value bindings\r\nfunction getCheckboxValue(el, checked) {\r\n const key = checked ? '_trueValue' : '_falseValue';\r\n return key in el ? el[key] : checked;\r\n}\r\nconst vModelDynamic = {\r\n created(el, binding, vnode) {\r\n callModelHook(el, binding, vnode, null, 'created');\r\n },\r\n mounted(el, binding, vnode) {\r\n callModelHook(el, binding, vnode, null, 'mounted');\r\n },\r\n beforeUpdate(el, binding, vnode, prevVNode) {\r\n callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate');\r\n },\r\n updated(el, binding, vnode, prevVNode) {\r\n callModelHook(el, binding, vnode, prevVNode, 'updated');\r\n }\r\n};\r\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\r\n let modelToUse;\r\n switch (el.tagName) {\r\n case 'SELECT':\r\n modelToUse = vModelSelect;\r\n break;\r\n case 'TEXTAREA':\r\n modelToUse = vModelText;\r\n break;\r\n default:\r\n switch (vnode.props && vnode.props.type) {\r\n case 'checkbox':\r\n modelToUse = vModelCheckbox;\r\n break;\r\n case 'radio':\r\n modelToUse = vModelRadio;\r\n break;\r\n default:\r\n modelToUse = vModelText;\r\n }\r\n }\r\n const fn = modelToUse[hook];\r\n fn && fn(el, binding, vnode, prevVNode);\r\n}\r\n// SSR vnode transforms, only used when user includes client-oriented render\r\n// function in SSR\r\nfunction initVModelForSSR() {\r\n vModelText.getSSRProps = ({ value }) => ({ value });\r\n vModelRadio.getSSRProps = ({ value }, vnode) => {\r\n if (vnode.props && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseEqual\"])(vnode.props.value, value)) {\r\n return { checked: true };\r\n }\r\n };\r\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\r\n if (vnode.props && Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"looseIndexOf\"])(value, vnode.props.value) > -1) {\r\n return { checked: true };\r\n }\r\n }\r\n else if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSet\"])(value)) {\r\n if (vnode.props && value.has(vnode.props.value)) {\r\n return { checked: true };\r\n }\r\n }\r\n else if (value) {\r\n return { checked: true };\r\n }\r\n };\r\n}\n\nconst systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];\r\nconst modifierGuards = {\r\n stop: e => e.stopPropagation(),\r\n prevent: e => e.preventDefault(),\r\n self: e => e.target !== e.currentTarget,\r\n ctrl: e => !e.ctrlKey,\r\n shift: e => !e.shiftKey,\r\n alt: e => !e.altKey,\r\n meta: e => !e.metaKey,\r\n left: e => 'button' in e && e.button !== 0,\r\n middle: e => 'button' in e && e.button !== 1,\r\n right: e => 'button' in e && e.button !== 2,\r\n exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m))\r\n};\r\n/**\r\n * @private\r\n */\r\nconst withModifiers = (fn, modifiers) => {\r\n return (event, ...args) => {\r\n for (let i = 0; i < modifiers.length; i++) {\r\n const guard = modifierGuards[modifiers[i]];\r\n if (guard && guard(event, modifiers))\r\n return;\r\n }\r\n return fn(event, ...args);\r\n };\r\n};\r\n// Kept for 2.x compat.\r\n// Note: IE11 compat for `spacebar` and `del` is removed for now.\r\nconst keyNames = {\r\n esc: 'escape',\r\n space: ' ',\r\n up: 'arrow-up',\r\n left: 'arrow-left',\r\n right: 'arrow-right',\r\n down: 'arrow-down',\r\n delete: 'backspace'\r\n};\r\n/**\r\n * @private\r\n */\r\nconst withKeys = (fn, modifiers) => {\r\n return (event) => {\r\n if (!('key' in event)) {\r\n return;\r\n }\r\n const eventKey = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"hyphenate\"])(event.key);\r\n if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {\r\n return fn(event);\r\n }\r\n };\r\n};\n\nconst vShow = {\r\n beforeMount(el, { value }, { transition }) {\r\n el._vod = el.style.display === 'none' ? '' : el.style.display;\r\n if (transition && value) {\r\n transition.beforeEnter(el);\r\n }\r\n else {\r\n setDisplay(el, value);\r\n }\r\n },\r\n mounted(el, { value }, { transition }) {\r\n if (transition && value) {\r\n transition.enter(el);\r\n }\r\n },\r\n updated(el, { value, oldValue }, { transition }) {\r\n if (!value === !oldValue)\r\n return;\r\n if (transition) {\r\n if (value) {\r\n transition.beforeEnter(el);\r\n setDisplay(el, true);\r\n transition.enter(el);\r\n }\r\n else {\r\n transition.leave(el, () => {\r\n setDisplay(el, false);\r\n });\r\n }\r\n }\r\n else {\r\n setDisplay(el, value);\r\n }\r\n },\r\n beforeUnmount(el, { value }) {\r\n setDisplay(el, value);\r\n }\r\n};\r\nfunction setDisplay(el, value) {\r\n el.style.display = value ? el._vod : 'none';\r\n}\r\n// SSR vnode transforms, only used when user includes client-oriented render\r\n// function in SSR\r\nfunction initVShowForSSR() {\r\n vShow.getSSRProps = ({ value }) => {\r\n if (!value) {\r\n return { style: { display: 'none' } };\r\n }\r\n };\r\n}\n\nconst rendererOptions = Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({ patchProp }, nodeOps);\r\n// lazy create the renderer - this makes core renderer logic tree-shakable\r\n// in case the user only imports reactivity utilities from Vue.\r\nlet renderer;\r\nlet enabledHydration = false;\r\nfunction ensureRenderer() {\r\n return (renderer ||\r\n (renderer = Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createRenderer\"])(rendererOptions)));\r\n}\r\nfunction ensureHydrationRenderer() {\r\n renderer = enabledHydration\r\n ? renderer\r\n : Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"createHydrationRenderer\"])(rendererOptions);\r\n enabledHydration = true;\r\n return renderer;\r\n}\r\n// use explicit type casts here to avoid import() calls in rolled-up d.ts\r\nconst render = ((...args) => {\r\n ensureRenderer().render(...args);\r\n});\r\nconst hydrate = ((...args) => {\r\n ensureHydrationRenderer().hydrate(...args);\r\n});\r\nconst createApp = ((...args) => {\r\n const app = ensureRenderer().createApp(...args);\r\n if ((true)) {\r\n injectNativeTagCheck(app);\r\n injectCompilerOptionsCheck(app);\r\n }\r\n const { mount } = app;\r\n app.mount = (containerOrSelector) => {\r\n const container = normalizeContainer(containerOrSelector);\r\n if (!container)\r\n return;\r\n const component = app._component;\r\n if (!Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(component) && !component.render && !component.template) {\r\n // __UNSAFE__\r\n // Reason: potential execution of JS expressions in in-DOM template.\r\n // The user must make sure the in-DOM template is trusted. If it's\r\n // rendered by the server, the template should not contain any user data.\r\n component.template = container.innerHTML;\r\n }\r\n // clear content before mounting\r\n container.innerHTML = '';\r\n const proxy = mount(container, false, container instanceof SVGElement);\r\n if (container instanceof Element) {\r\n container.removeAttribute('v-cloak');\r\n container.setAttribute('data-v-app', '');\r\n }\r\n return proxy;\r\n };\r\n return app;\r\n});\r\nconst createSSRApp = ((...args) => {\r\n const app = ensureHydrationRenderer().createApp(...args);\r\n if ((true)) {\r\n injectNativeTagCheck(app);\r\n injectCompilerOptionsCheck(app);\r\n }\r\n const { mount } = app;\r\n app.mount = (containerOrSelector) => {\r\n const container = normalizeContainer(containerOrSelector);\r\n if (container) {\r\n return mount(container, true, container instanceof SVGElement);\r\n }\r\n };\r\n return app;\r\n});\r\nfunction injectNativeTagCheck(app) {\r\n // Inject `isNativeTag`\r\n // this is used for component name validation (dev only)\r\n Object.defineProperty(app.config, 'isNativeTag', {\r\n value: (tag) => Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isHTMLTag\"])(tag) || Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isSVGTag\"])(tag),\r\n writable: false\r\n });\r\n}\r\n// dev only\r\nfunction injectCompilerOptionsCheck(app) {\r\n if (Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"isRuntimeOnly\"])()) {\r\n const isCustomElement = app.config.isCustomElement;\r\n Object.defineProperty(app.config, 'isCustomElement', {\r\n get() {\r\n return isCustomElement;\r\n },\r\n set() {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`The \\`isCustomElement\\` config option is deprecated. Use ` +\r\n `\\`compilerOptions.isCustomElement\\` instead.`);\r\n }\r\n });\r\n const compilerOptions = app.config.compilerOptions;\r\n const msg = `The \\`compilerOptions\\` config option is only respected when using ` +\r\n `a build of Vue.js that includes the runtime compiler (aka \"full build\"). ` +\r\n `Since you are using the runtime-only build, \\`compilerOptions\\` ` +\r\n `must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\\n` +\r\n `- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\\n` +\r\n `- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\\n` +\r\n `- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom`;\r\n Object.defineProperty(app.config, 'compilerOptions', {\r\n get() {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(msg);\r\n return compilerOptions;\r\n },\r\n set() {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(msg);\r\n }\r\n });\r\n }\r\n}\r\nfunction normalizeContainer(container) {\r\n if (Object(_vue_shared__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\r\n const res = document.querySelector(container);\r\n if (( true) && !res) {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`Failed to mount app: mount target selector \"${container}\" returned null.`);\r\n }\r\n return res;\r\n }\r\n if (( true) &&\r\n window.ShadowRoot &&\r\n container instanceof window.ShadowRoot &&\r\n container.mode === 'closed') {\r\n Object(_vue_runtime_core__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`);\r\n }\r\n return container;\r\n}\r\nlet ssrDirectiveInitialized = false;\r\n/**\r\n * @internal\r\n */\r\nconst initDirectivesForSSR = () => {\r\n if (!ssrDirectiveInitialized) {\r\n ssrDirectiveInitialized = true;\r\n initVModelForSSR();\r\n initVShowForSSR();\r\n }\r\n }\r\n ;\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9ydW50aW1lLWRvbS9kaXN0L3J1bnRpbWUtZG9tLmVzbS1idW5kbGVyLmpzPzgzMGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNlg7QUFDM1Y7QUFDdVA7O0FBRXpSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxLQUFLO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxRQUFRO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3Qiw0REFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0REFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyw2REFBUztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrRUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhEQUFVO0FBQ3JCLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsd0VBQW9CO0FBQzlDLDRDQUE0QyxzRUFBa0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQsc0JBQXNCLHNFQUFrQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQsWUFBWSw4REFBSSx5QkFBeUIsSUFBSSxRQUFRLHlCQUF5QjtBQUM5RSx5QkFBeUIsTUFBTTtBQUMvQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9GQUEwQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdEQUFJO0FBQ2pCO0FBQ0EsYUFBYSxtRUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELDhEQUFVO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyw0REFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQix5RUFBZTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQsZ0JBQWdCLDhEQUFJO0FBQ3BCO0FBQ0E7QUFDQSwrQkFBK0IsZUFBZTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsa0VBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNEJBQTRCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxpQkFBaUIsbUJBQW1CO0FBQzdDO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQyxnQ0FBZ0MsMkRBQU87QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsNERBQVE7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLG9EQUFVO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw0REFBUTtBQUM1QjtBQUNBLHNCQUFzQiw0REFBVTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw2REFBUztBQUMvQztBQUNBO0FBQ0Esc0NBQXNDLDZEQUFTO0FBQy9DO0FBQ0E7QUFDQSx5Q0FBeUMsNkRBQVM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxRUFBVyxZQUFZLDBEQUFNLEdBQUc7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsNEVBQWtCO0FBQzNDO0FBQ0EsYUFBYSxLQUFxQyxLQUFLLDhEQUFJO0FBQzNELG1CQUFtQixxREFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLEtBQUssOERBQUk7QUFDM0QsbUJBQW1CLHFEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsZ0JBQWdCLDhEQUFJLHFEQUFxRCxLQUFLO0FBQzlFLG1CQUFtQixxREFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDRFQUFrQjtBQUN2QztBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QyxZQUFZLDhEQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLElBQUkseUVBQWU7QUFDbkIsSUFBSSxtRUFBUztBQUNiO0FBQ0Esb0RBQW9ELGtCQUFrQjtBQUN0RSxRQUFRLHFFQUFXO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwwREFBUTtBQUNwQztBQUNBO0FBQ0EsNEJBQTRCLHdEQUFNO0FBQ2xDLGFBQWEsYUFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsSUFBSTtBQUN2QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsUUFBUSxLQUFLLDJEQUFDLENBQUMsZ0VBQWM7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUFNLEdBQUcsRUFBRSxnRUFBYztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMkRBQU87QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaURBQWlELEtBQUssb0NBQW9DLEtBQUssa0NBQWtDLEtBQUssc0lBQXNJLEtBQUssb0NBQW9DLEtBQUssa0NBQWtDLEtBQUssWUFBWTtBQUN4WDtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdLQUFnSztBQUMzSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFdBQVcsMERBQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDREQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNERBQVE7QUFDeEIsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4REFBSTtBQUNaLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBLFFBQVEsOERBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJCQUEyQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMERBQU0sR0FBRztBQUNsQztBQUNBO0FBQ0EsS0FBSztBQUNMLGtCQUFrQixRQUFRO0FBQzFCLHlCQUF5Qiw0RUFBa0I7QUFDM0Msc0JBQXNCLDRFQUFrQjtBQUN4QztBQUNBO0FBQ0EsUUFBUSxtRUFBUztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxrQkFBa0I7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBLDZCQUE2QiwrREFBSztBQUNsQztBQUNBLHNDQUFzQywwREFBUTtBQUM5QztBQUNBLHVDQUF1QyxrRkFBd0I7QUFDL0QsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBO0FBQ0Esb0JBQW9CLDRFQUFrQixRQUFRLGdGQUFzQjtBQUNwRTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRCxvQkFBb0IsOERBQUk7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHlCQUF5QjtBQUN4RDtBQUNBLG9CQUFvQiw0RUFBa0IsUUFBUSxnRkFBc0I7QUFDcEU7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFFQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsR0FBRyxLQUFLLEdBQUc7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVywyREFBTyxnQkFBZ0Isa0VBQWM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsYUFBYSxxQkFBcUIsRUFBRTtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBUTtBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0EsS0FBSztBQUNMLHNCQUFzQixvQkFBb0IscUJBQXFCLEVBQUU7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCw0REFBUTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBTztBQUN2Qiw4QkFBOEIsZ0VBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIseURBQUs7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixrQkFBa0I7QUFDM0M7QUFDQSxRQUFRLDJEQUFPO0FBQ2YscUJBQXFCLGdFQUFZO0FBQ2pDO0FBQ0EsYUFBYSx5REFBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsOERBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIscUJBQXFCLDhEQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0wsc0JBQXNCLGtCQUFrQjtBQUN4QztBQUNBO0FBQ0EseUJBQXlCLDhEQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixvQkFBb0IsU0FBUyxFQUFFO0FBQ2hELDJCQUEyQix5REFBSztBQUNoQztBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsNERBQVE7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsUUFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDJEQUFPLFlBQVkseURBQUs7QUFDL0MsU0FBUyxLQUFxQztBQUM5QyxZQUFZLDhEQUFJO0FBQ2hCLDJCQUEyQixtREFBbUQ7QUFDOUU7QUFDQTtBQUNBLDBDQUEwQyxPQUFPO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBTztBQUN2QixrQ0FBa0MsZ0VBQVk7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhEQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixRQUFRLE9BQU8sUUFBUTtBQUN0RCxnQ0FBZ0MsUUFBUTtBQUN4QywyQkFBMkIsOERBQVU7QUFDckMsb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQSxtQ0FBbUMsUUFBUTtBQUMzQyxZQUFZLDJEQUFPO0FBQ25CLCtCQUErQixnRUFBWTtBQUMzQyx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLGlCQUFpQix5REFBSztBQUN0QjtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxFQUFFO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw2REFBUztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLFFBQVEsR0FBRyxhQUFhO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixRQUFRLEdBQUcsYUFBYTtBQUN6QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLGtCQUFrQixHQUFHLGFBQWE7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHVCQUF1QixRQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixRQUFRO0FBQ2xDO0FBQ0Esb0JBQW9CLFNBQVMsa0JBQWtCO0FBQy9DO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsMERBQU0sRUFBRSxZQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3RUFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUZBQXVCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw4REFBVTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNkRBQVMsU0FBUyw0REFBUTtBQUNsRDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVFQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsZ0JBQWdCLDhEQUFJO0FBQ3BCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOERBQUk7QUFDcEI7QUFDQSxhQUFhO0FBQ2I7QUFDQSxnQkFBZ0IsOERBQUk7QUFDcEI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsUUFBUSw0REFBUTtBQUNoQjtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsWUFBWSw4REFBSSxnREFBZ0QsVUFBVTtBQUMxRTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOERBQUksbUNBQW1DLGVBQWU7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVnUyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL3J1bnRpbWUtZG9tL2Rpc3QvcnVudGltZS1kb20uZXNtLWJ1bmRsZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYW1lbGl6ZSwgd2FybiwgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIGNyZWF0ZVZOb2RlLCBnZXRDdXJyZW50SW5zdGFuY2UsIHdhdGNoUG9zdEVmZmVjdCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgRnJhZ21lbnQsIFN0YXRpYywgaCwgQmFzZVRyYW5zaXRpb24sIHVzZVRyYW5zaXRpb25TdGF0ZSwgb25VcGRhdGVkLCB0b1JhdywgZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuLCBzZXRUcmFuc2l0aW9uSG9va3MsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MsIGNyZWF0ZVJlbmRlcmVyLCBpc1J1bnRpbWVPbmx5LCBjcmVhdGVIeWRyYXRpb25SZW5kZXJlciB9IGZyb20gJ0B2dWUvcnVudGltZS1jb3JlJztcbmV4cG9ydCAqIGZyb20gJ0B2dWUvcnVudGltZS1jb3JlJztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc0FycmF5LCBoeXBoZW5hdGUsIGNhcGl0YWxpemUsIGlzU3BlY2lhbEJvb2xlYW5BdHRyLCBpbmNsdWRlQm9vbGVhbkF0dHIsIGlzT24sIGlzTW9kZWxMaXN0ZW5lciwgaXNGdW5jdGlvbiwgdG9OdW1iZXIsIGNhbWVsaXplIGFzIGNhbWVsaXplJDEsIGV4dGVuZCwgRU1QVFlfT0JKLCBpc09iamVjdCwgaW52b2tlQXJyYXlGbnMsIGxvb3NlSW5kZXhPZiwgaXNTZXQsIGxvb3NlRXF1YWwsIGlzSFRNTFRhZywgaXNTVkdUYWcgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IHN2Z05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcclxuY29uc3QgZG9jID0gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1bWVudCA6IG51bGwpO1xyXG5jb25zdCB0ZW1wbGF0ZUNvbnRhaW5lciA9IGRvYyAmJiBkb2MuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTtcclxuY29uc3Qgbm9kZU9wcyA9IHtcclxuICAgIGluc2VydDogKGNoaWxkLCBwYXJlbnQsIGFuY2hvcikgPT4ge1xyXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIGFuY2hvciB8fCBudWxsKTtcclxuICAgIH0sXHJcbiAgICByZW1vdmU6IGNoaWxkID0+IHtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSBjaGlsZC5wYXJlbnROb2RlO1xyXG4gICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlRWxlbWVudDogKHRhZywgaXNTVkcsIGlzLCBwcm9wcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gaXNTVkdcclxuICAgICAgICAgICAgPyBkb2MuY3JlYXRlRWxlbWVudE5TKHN2Z05TLCB0YWcpXHJcbiAgICAgICAgICAgIDogZG9jLmNyZWF0ZUVsZW1lbnQodGFnLCBpcyA/IHsgaXMgfSA6IHVuZGVmaW5lZCk7XHJcbiAgICAgICAgaWYgKHRhZyA9PT0gJ3NlbGVjdCcgJiYgcHJvcHMgJiYgcHJvcHMubXVsdGlwbGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgcHJvcHMubXVsdGlwbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZWw7XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlVGV4dDogdGV4dCA9PiBkb2MuY3JlYXRlVGV4dE5vZGUodGV4dCksXHJcbiAgICBjcmVhdGVDb21tZW50OiB0ZXh0ID0+IGRvYy5jcmVhdGVDb21tZW50KHRleHQpLFxyXG4gICAgc2V0VGV4dDogKG5vZGUsIHRleHQpID0+IHtcclxuICAgICAgICBub2RlLm5vZGVWYWx1ZSA9IHRleHQ7XHJcbiAgICB9LFxyXG4gICAgc2V0RWxlbWVudFRleHQ6IChlbCwgdGV4dCkgPT4ge1xyXG4gICAgICAgIGVsLnRleHRDb250ZW50ID0gdGV4dDtcclxuICAgIH0sXHJcbiAgICBwYXJlbnROb2RlOiBub2RlID0+IG5vZGUucGFyZW50Tm9kZSxcclxuICAgIG5leHRTaWJsaW5nOiBub2RlID0+IG5vZGUubmV4dFNpYmxpbmcsXHJcbiAgICBxdWVyeVNlbGVjdG9yOiBzZWxlY3RvciA9PiBkb2MucXVlcnlTZWxlY3RvcihzZWxlY3RvciksXHJcbiAgICBzZXRTY29wZUlkKGVsLCBpZCkge1xyXG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZShpZCwgJycpO1xyXG4gICAgfSxcclxuICAgIGNsb25lTm9kZShlbCkge1xyXG4gICAgICAgIGNvbnN0IGNsb25lZCA9IGVsLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICAvLyAjMzA3MlxyXG4gICAgICAgIC8vIC0gaW4gYHBhdGNoRE9NUHJvcGAsIHdlIHN0b3JlIHRoZSBhY3R1YWwgdmFsdWUgaW4gdGhlIGBlbC5fdmFsdWVgIHByb3BlcnR5LlxyXG4gICAgICAgIC8vIC0gbm9ybWFsbHksIGVsZW1lbnRzIHVzaW5nIGA6dmFsdWVgIGJpbmRpbmdzIHdpbGwgbm90IGJlIGhvaXN0ZWQsIGJ1dCBpZlxyXG4gICAgICAgIC8vICAgdGhlIGJvdW5kIHZhbHVlIGlzIGEgY29uc3RhbnQsIGUuZy4gYDp2YWx1ZT1cInRydWVcImAgLSB0aGV5IGRvIGdldFxyXG4gICAgICAgIC8vICAgaG9pc3RlZC5cclxuICAgICAgICAvLyAtIGluIHByb2R1Y3Rpb24sIGhvaXN0ZWQgbm9kZXMgYXJlIGNsb25lZCB3aGVuIHN1YnNlcXVlbnQgaW5zZXJ0cywgYnV0XHJcbiAgICAgICAgLy8gICBjbG9uZU5vZGUoKSBkb2VzIG5vdCBjb3B5IHRoZSBjdXN0b20gcHJvcGVydHkgd2UgYXR0YWNoZWQuXHJcbiAgICAgICAgLy8gLSBUaGlzIG1heSBuZWVkIHRvIGFjY291bnQgZm9yIG90aGVyIGN1c3RvbSBET00gcHJvcGVydGllcyB3ZSBhdHRhY2ggdG9cclxuICAgICAgICAvLyAgIGVsZW1lbnRzIGluIGFkZGl0aW9uIHRvIGBfdmFsdWVgIGluIHRoZSBmdXR1cmUuXHJcbiAgICAgICAgaWYgKGBfdmFsdWVgIGluIGVsKSB7XHJcbiAgICAgICAgICAgIGNsb25lZC5fdmFsdWUgPSBlbC5fdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjbG9uZWQ7XHJcbiAgICB9LFxyXG4gICAgLy8gX19VTlNBRkVfX1xyXG4gICAgLy8gUmVhc29uOiBpbm5lckhUTUwuXHJcbiAgICAvLyBTdGF0aWMgY29udGVudCBoZXJlIGNhbiBvbmx5IGNvbWUgZnJvbSBjb21waWxlZCB0ZW1wbGF0ZXMuXHJcbiAgICAvLyBBcyBsb25nIGFzIHRoZSB1c2VyIG9ubHkgdXNlcyB0cnVzdGVkIHRlbXBsYXRlcywgdGhpcyBpcyBzYWZlLlxyXG4gICAgaW5zZXJ0U3RhdGljQ29udGVudChjb250ZW50LCBwYXJlbnQsIGFuY2hvciwgaXNTVkcsIHN0YXJ0LCBlbmQpIHtcclxuICAgICAgICAvLyA8cGFyZW50PiBiZWZvcmUgfCBmaXJzdCAuLi4gbGFzdCB8IGFuY2hvciA8L3BhcmVudD5cclxuICAgICAgICBjb25zdCBiZWZvcmUgPSBhbmNob3IgPyBhbmNob3IucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcclxuICAgICAgICAvLyAjNTMwOCBjYW4gb25seSB0YWtlIGNhY2hlZCBwYXRoIGlmOlxyXG4gICAgICAgIC8vIC0gaGFzIGEgc2luZ2xlIHJvb3Qgbm9kZVxyXG4gICAgICAgIC8vIC0gbmV4dFNpYmxpbmcgaW5mbyBpcyBzdGlsbCBhdmFpbGFibGVcclxuICAgICAgICBpZiAoc3RhcnQgJiYgKHN0YXJ0ID09PSBlbmQgfHwgc3RhcnQubmV4dFNpYmxpbmcpKSB7XHJcbiAgICAgICAgICAgIC8vIGNhY2hlZFxyXG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShzdGFydC5jbG9uZU5vZGUodHJ1ZSksIGFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCB8fCAhKHN0YXJ0ID0gc3RhcnQubmV4dFNpYmxpbmcpKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmcmVzaCBpbnNlcnRcclxuICAgICAgICAgICAgdGVtcGxhdGVDb250YWluZXIuaW5uZXJIVE1MID0gaXNTVkcgPyBgPHN2Zz4ke2NvbnRlbnR9PC9zdmc+YCA6IGNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGVtcGxhdGVDb250YWluZXIuY29udGVudDtcclxuICAgICAgICAgICAgaWYgKGlzU1ZHKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgb3V0ZXIgc3ZnIHdyYXBwZXJcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSB0ZW1wbGF0ZS5maXJzdENoaWxkO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHdyYXBwZXIuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLmFwcGVuZENoaWxkKHdyYXBwZXIuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5yZW1vdmVDaGlsZCh3cmFwcGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHRlbXBsYXRlLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAvLyBmaXJzdFxyXG4gICAgICAgICAgICBiZWZvcmUgPyBiZWZvcmUubmV4dFNpYmxpbmcgOiBwYXJlbnQuZmlyc3RDaGlsZCxcclxuICAgICAgICAgICAgLy8gbGFzdFxyXG4gICAgICAgICAgICBhbmNob3IgPyBhbmNob3IucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcbn07XG5cbi8vIGNvbXBpbGVyIHNob3VsZCBub3JtYWxpemUgY2xhc3MgKyA6Y2xhc3MgYmluZGluZ3Mgb24gdGhlIHNhbWUgZWxlbWVudFxyXG4vLyBpbnRvIGEgc2luZ2xlIGJpbmRpbmcgWydzdGF0aWNDbGFzcycsIGR5bmFtaWNdXHJcbmZ1bmN0aW9uIHBhdGNoQ2xhc3MoZWwsIHZhbHVlLCBpc1NWRykge1xyXG4gICAgLy8gZGlyZWN0bHkgc2V0dGluZyBjbGFzc05hbWUgc2hvdWxkIGJlIGZhc3RlciB0aGFuIHNldEF0dHJpYnV0ZSBpbiB0aGVvcnlcclxuICAgIC8vIGlmIHRoaXMgaXMgYW4gZWxlbWVudCBkdXJpbmcgYSB0cmFuc2l0aW9uLCB0YWtlIHRoZSB0ZW1wb3JhcnkgdHJhbnNpdGlvblxyXG4gICAgLy8gY2xhc3NlcyBpbnRvIGFjY291bnQuXHJcbiAgICBjb25zdCB0cmFuc2l0aW9uQ2xhc3NlcyA9IGVsLl92dGM7XHJcbiAgICBpZiAodHJhbnNpdGlvbkNsYXNzZXMpIHtcclxuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA/IFt2YWx1ZSwgLi4udHJhbnNpdGlvbkNsYXNzZXNdIDogWy4uLnRyYW5zaXRpb25DbGFzc2VzXSkuam9pbignICcpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NWRykge1xyXG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBlbC5jbGFzc05hbWUgPSB2YWx1ZTtcclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiBwYXRjaFN0eWxlKGVsLCBwcmV2LCBuZXh0KSB7XHJcbiAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xyXG4gICAgY29uc3QgaXNDc3NTdHJpbmcgPSBpc1N0cmluZyhuZXh0KTtcclxuICAgIGlmIChuZXh0ICYmICFpc0Nzc1N0cmluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5leHQpIHtcclxuICAgICAgICAgICAgc2V0U3R5bGUoc3R5bGUsIGtleSwgbmV4dFtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHByZXYgJiYgIWlzU3RyaW5nKHByZXYpKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByZXYpIHtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0W2tleV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFN0eWxlKHN0eWxlLCBrZXksICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnREaXNwbGF5ID0gc3R5bGUuZGlzcGxheTtcclxuICAgICAgICBpZiAoaXNDc3NTdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHByZXYgIT09IG5leHQpIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlLmNzc1RleHQgPSBuZXh0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHByZXYpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbmRpY2F0ZXMgdGhhdCB0aGUgYGRpc3BsYXlgIG9mIHRoZSBlbGVtZW50IGlzIGNvbnRyb2xsZWQgYnkgYHYtc2hvd2AsXHJcbiAgICAgICAgLy8gc28gd2UgYWx3YXlzIGtlZXAgdGhlIGN1cnJlbnQgYGRpc3BsYXlgIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgdGhlIGBzdHlsZWBcclxuICAgICAgICAvLyB2YWx1ZSwgdGh1cyBoYW5kaW5nIG92ZXIgY29udHJvbCB0byBgdi1zaG93YC5cclxuICAgICAgICBpZiAoJ192b2QnIGluIGVsKSB7XHJcbiAgICAgICAgICAgIHN0eWxlLmRpc3BsYXkgPSBjdXJyZW50RGlzcGxheTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuY29uc3QgaW1wb3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcclxuZnVuY3Rpb24gc2V0U3R5bGUoc3R5bGUsIG5hbWUsIHZhbCkge1xyXG4gICAgaWYgKGlzQXJyYXkodmFsKSkge1xyXG4gICAgICAgIHZhbC5mb3JFYWNoKHYgPT4gc2V0U3R5bGUoc3R5bGUsIG5hbWUsIHYpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoJy0tJykpIHtcclxuICAgICAgICAgICAgLy8gY3VzdG9tIHByb3BlcnR5IGRlZmluaXRpb25cclxuICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeGVkID0gYXV0b1ByZWZpeChzdHlsZSwgbmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcclxuICAgICAgICAgICAgICAgIC8vICFpbXBvcnRhbnRcclxuICAgICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGh5cGhlbmF0ZShwcmVmaXhlZCksIHZhbC5yZXBsYWNlKGltcG9ydGFudFJFLCAnJyksICdpbXBvcnRhbnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlW3ByZWZpeGVkXSA9IHZhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5jb25zdCBwcmVmaXhlcyA9IFsnV2Via2l0JywgJ01veicsICdtcyddO1xyXG5jb25zdCBwcmVmaXhDYWNoZSA9IHt9O1xyXG5mdW5jdGlvbiBhdXRvUHJlZml4KHN0eWxlLCByYXdOYW1lKSB7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBwcmVmaXhDYWNoZVtyYXdOYW1lXTtcclxuICAgIGlmIChjYWNoZWQpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgbGV0IG5hbWUgPSBjYW1lbGl6ZShyYXdOYW1lKTtcclxuICAgIGlmIChuYW1lICE9PSAnZmlsdGVyJyAmJiBuYW1lIGluIHN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIChwcmVmaXhDYWNoZVtyYXdOYW1lXSA9IG5hbWUpO1xyXG4gICAgfVxyXG4gICAgbmFtZSA9IGNhcGl0YWxpemUobmFtZSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZWZpeGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZml4ZWQgPSBwcmVmaXhlc1tpXSArIG5hbWU7XHJcbiAgICAgICAgaWYgKHByZWZpeGVkIGluIHN0eWxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAocHJlZml4Q2FjaGVbcmF3TmFtZV0gPSBwcmVmaXhlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJhd05hbWU7XHJcbn1cblxuY29uc3QgeGxpbmtOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcclxuZnVuY3Rpb24gcGF0Y2hBdHRyKGVsLCBrZXksIHZhbHVlLCBpc1NWRywgaW5zdGFuY2UpIHtcclxuICAgIGlmIChpc1NWRyAmJiBrZXkuc3RhcnRzV2l0aCgneGxpbms6JykpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBrZXkuc2xpY2UoNiwga2V5Lmxlbmd0aCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gbm90ZSB3ZSBhcmUgb25seSBjaGVja2luZyBib29sZWFuIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBoYXZlIGFcclxuICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGRvbSBwcm9wIG9mIHRoZSBzYW1lIG5hbWUgaGVyZS5cclxuICAgICAgICBjb25zdCBpc0Jvb2xlYW4gPSBpc1NwZWNpYWxCb29sZWFuQXR0cihrZXkpO1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IChpc0Jvb2xlYW4gJiYgIWluY2x1ZGVCb29sZWFuQXR0cih2YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwgaXNCb29sZWFuID8gJycgOiB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbi8vIF9fVU5TQUZFX19cclxuLy8gZnVuY3Rpb25zLiBUaGUgdXNlciBpcyByZXNwb25zaWJsZSBmb3IgdXNpbmcgdGhlbSB3aXRoIG9ubHkgdHJ1c3RlZCBjb250ZW50LlxyXG5mdW5jdGlvbiBwYXRjaERPTVByb3AoZWwsIGtleSwgdmFsdWUsIFxyXG4vLyB0aGUgZm9sbG93aW5nIGFyZ3MgYXJlIHBhc3NlZCBvbmx5IGR1ZSB0byBwb3RlbnRpYWwgaW5uZXJIVE1ML3RleHRDb250ZW50XHJcbi8vIG92ZXJyaWRpbmcgZXhpc3RpbmcgVk5vZGVzLCBpbiB3aGljaCBjYXNlIHRoZSBvbGQgdHJlZSBtdXN0IGJlIHByb3Blcmx5XHJcbi8vIHVubW91bnRlZC5cclxucHJldkNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pIHtcclxuICAgIGlmIChrZXkgPT09ICdpbm5lckhUTUwnIHx8IGtleSA9PT0gJ3RleHRDb250ZW50Jykge1xyXG4gICAgICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsW2tleV0gPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoa2V5ID09PSAndmFsdWUnICYmXHJcbiAgICAgICAgZWwudGFnTmFtZSAhPT0gJ1BST0dSRVNTJyAmJlxyXG4gICAgICAgIC8vIGN1c3RvbSBlbGVtZW50cyBtYXkgdXNlIF92YWx1ZSBpbnRlcm5hbGx5XHJcbiAgICAgICAgIWVsLnRhZ05hbWUuaW5jbHVkZXMoJy0nKSkge1xyXG4gICAgICAgIC8vIHN0b3JlIHZhbHVlIGFzIF92YWx1ZSBhcyB3ZWxsIHNpbmNlXHJcbiAgICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZC5cclxuICAgICAgICBlbC5fdmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgICAgIGlmIChlbC52YWx1ZSAhPT0gbmV3VmFsdWUgfHxcclxuICAgICAgICAgICAgLy8gIzQ5NTY6IGFsd2F5cyBzZXQgZm9yIE9QVElPTiBlbGVtZW50cyBiZWNhdXNlIGl0cyB2YWx1ZSBmYWxscyBiYWNrIHRvXHJcbiAgICAgICAgICAgIC8vIHRleHRDb250ZW50IGlmIG5vIHZhbHVlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiBBbmQgc2V0dGluZyAudmFsdWUgZm9yXHJcbiAgICAgICAgICAgIC8vIE9QVElPTiBoYXMgbm8gc2lkZSBlZmZlY3RcclxuICAgICAgICAgICAgZWwudGFnTmFtZSA9PT0gJ09QVElPTicpIHtcclxuICAgICAgICAgICAgZWwudmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgZWxba2V5XTtcclxuICAgICAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gPHNlbGVjdCBtdWx0aXBsZT4gY29tcGlsZXMgdG8geyBtdWx0aXBsZTogJycgfVxyXG4gICAgICAgICAgICBlbFtrZXldID0gaW5jbHVkZUJvb2xlYW5BdHRyKHZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBudWxsICYmIHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gPGRpdiA6aWQ9XCJudWxsXCI+XHJcbiAgICAgICAgICAgIGVsW2tleV0gPSAnJztcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgLy8gZS5nLiA8aW1nIDp3aWR0aD1cIm51bGxcIj5cclxuICAgICAgICAgICAgLy8gdGhlIHZhbHVlIG9mIHNvbWUgSURMIGF0dHIgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCwgZS5nLiBpbnB1dC5zaXplID0gMCAtPiBlcnJvclxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZWxba2V5XSA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKF9hKSB7IH1cclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzb21lIHByb3BlcnRpZXMgcGVyZm9ybSB2YWx1ZSB2YWxpZGF0aW9uIGFuZCB0aHJvd1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBlbFtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgRmFpbGVkIHNldHRpbmcgcHJvcCBcIiR7a2V5fVwiIG9uIDwke2VsLnRhZ05hbWUudG9Mb3dlckNhc2UoKX0+OiBgICtcclxuICAgICAgICAgICAgICAgIGB2YWx1ZSAke3ZhbHVlfSBpcyBpbnZhbGlkLmAsIGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG4vLyBBc3luYyBlZGdlIGNhc2UgZml4IHJlcXVpcmVzIHN0b3JpbmcgYW4gZXZlbnQgbGlzdGVuZXIncyBhdHRhY2ggdGltZXN0YW1wLlxyXG5sZXQgX2dldE5vdyA9IERhdGUubm93O1xyXG5sZXQgc2tpcFRpbWVzdGFtcENoZWNrID0gZmFsc2U7XHJcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgLy8gRGV0ZXJtaW5lIHdoYXQgZXZlbnQgdGltZXN0YW1wIHRoZSBicm93c2VyIGlzIHVzaW5nLiBBbm5veWluZ2x5LCB0aGVcclxuICAgIC8vIHRpbWVzdGFtcCBjYW4gZWl0aGVyIGJlIGhpLXJlcyAocmVsYXRpdmUgdG8gcGFnZSBsb2FkKSBvciBsb3ctcmVzXHJcbiAgICAvLyAocmVsYXRpdmUgdG8gVU5JWCBlcG9jaCksIHNvIGluIG9yZGVyIHRvIGNvbXBhcmUgdGltZSB3ZSBoYXZlIHRvIHVzZSB0aGVcclxuICAgIC8vIHNhbWUgdGltZXN0YW1wIHR5cGUgd2hlbiBzYXZpbmcgdGhlIGZsdXNoIHRpbWVzdGFtcC5cclxuICAgIGlmIChfZ2V0Tm93KCkgPiBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKS50aW1lU3RhbXApIHtcclxuICAgICAgICAvLyBpZiB0aGUgbG93LXJlcyB0aW1lc3RhbXAgd2hpY2ggaXMgYmlnZ2VyIHRoYW4gdGhlIGV2ZW50IHRpbWVzdGFtcFxyXG4gICAgICAgIC8vICh3aGljaCBpcyBldmFsdWF0ZWQgQUZURVIpIGl0IG1lYW5zIHRoZSBldmVudCBpcyB1c2luZyBhIGhpLXJlcyB0aW1lc3RhbXAsXHJcbiAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gdXNlIHRoZSBoaS1yZXMgdmVyc2lvbiBmb3IgZXZlbnQgbGlzdGVuZXJzIGFzIHdlbGwuXHJcbiAgICAgICAgX2dldE5vdyA9ICgpID0+IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgfVxyXG4gICAgLy8gIzM0ODU6IEZpcmVmb3ggPD0gNTMgaGFzIGluY29ycmVjdCBFdmVudC50aW1lU3RhbXAgaW1wbGVtZW50YXRpb25cclxuICAgIC8vIGFuZCBkb2VzIG5vdCBmaXJlIG1pY3JvdGFza3MgaW4gYmV0d2VlbiBldmVudCBwcm9wYWdhdGlvbiwgc28gc2FmZSB0byBleGNsdWRlLlxyXG4gICAgY29uc3QgZmZNYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvaSk7XHJcbiAgICBza2lwVGltZXN0YW1wQ2hlY2sgPSAhIShmZk1hdGNoICYmIE51bWJlcihmZk1hdGNoWzFdKSA8PSA1Myk7XHJcbn1cclxuLy8gVG8gYXZvaWQgdGhlIG92ZXJoZWFkIG9mIHJlcGVhdGVkbHkgY2FsbGluZyBwZXJmb3JtYW5jZS5ub3coKSwgd2UgY2FjaGVcclxuLy8gYW5kIHVzZSB0aGUgc2FtZSB0aW1lc3RhbXAgZm9yIGFsbCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgaW4gdGhlIHNhbWUgdGljay5cclxubGV0IGNhY2hlZE5vdyA9IDA7XHJcbmNvbnN0IHAgPSBQcm9taXNlLnJlc29sdmUoKTtcclxuY29uc3QgcmVzZXQgPSAoKSA9PiB7XHJcbiAgICBjYWNoZWROb3cgPSAwO1xyXG59O1xyXG5jb25zdCBnZXROb3cgPSAoKSA9PiBjYWNoZWROb3cgfHwgKHAudGhlbihyZXNldCksIChjYWNoZWROb3cgPSBfZ2V0Tm93KCkpKTtcclxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihlbCwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcclxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xyXG59XHJcbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoZWwsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XHJcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcclxufVxyXG5mdW5jdGlvbiBwYXRjaEV2ZW50KGVsLCByYXdOYW1lLCBwcmV2VmFsdWUsIG5leHRWYWx1ZSwgaW5zdGFuY2UgPSBudWxsKSB7XHJcbiAgICAvLyB2ZWkgPSB2dWUgZXZlbnQgaW52b2tlcnNcclxuICAgIGNvbnN0IGludm9rZXJzID0gZWwuX3ZlaSB8fCAoZWwuX3ZlaSA9IHt9KTtcclxuICAgIGNvbnN0IGV4aXN0aW5nSW52b2tlciA9IGludm9rZXJzW3Jhd05hbWVdO1xyXG4gICAgaWYgKG5leHRWYWx1ZSAmJiBleGlzdGluZ0ludm9rZXIpIHtcclxuICAgICAgICAvLyBwYXRjaFxyXG4gICAgICAgIGV4aXN0aW5nSW52b2tlci52YWx1ZSA9IG5leHRWYWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IFtuYW1lLCBvcHRpb25zXSA9IHBhcnNlTmFtZShyYXdOYW1lKTtcclxuICAgICAgICBpZiAobmV4dFZhbHVlKSB7XHJcbiAgICAgICAgICAgIC8vIGFkZFxyXG4gICAgICAgICAgICBjb25zdCBpbnZva2VyID0gKGludm9rZXJzW3Jhd05hbWVdID0gY3JlYXRlSW52b2tlcihuZXh0VmFsdWUsIGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsIG5hbWUsIGludm9rZXIsIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChleGlzdGluZ0ludm9rZXIpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlXHJcbiAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoZWwsIG5hbWUsIGV4aXN0aW5nSW52b2tlciwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIGludm9rZXJzW3Jhd05hbWVdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5jb25zdCBvcHRpb25zTW9kaWZpZXJSRSA9IC8oPzpPbmNlfFBhc3NpdmV8Q2FwdHVyZSkkLztcclxuZnVuY3Rpb24gcGFyc2VOYW1lKG5hbWUpIHtcclxuICAgIGxldCBvcHRpb25zO1xyXG4gICAgaWYgKG9wdGlvbnNNb2RpZmllclJFLnRlc3QobmFtZSkpIHtcclxuICAgICAgICBvcHRpb25zID0ge307XHJcbiAgICAgICAgbGV0IG07XHJcbiAgICAgICAgd2hpbGUgKChtID0gbmFtZS5tYXRjaChvcHRpb25zTW9kaWZpZXJSRSkpKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIG5hbWUubGVuZ3RoIC0gbVswXS5sZW5ndGgpO1xyXG4gICAgICAgICAgICBvcHRpb25zW21bMF0udG9Mb3dlckNhc2UoKV0gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBbaHlwaGVuYXRlKG5hbWUuc2xpY2UoMikpLCBvcHRpb25zXTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJbnZva2VyKGluaXRpYWxWYWx1ZSwgaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGludm9rZXIgPSAoZSkgPT4ge1xyXG4gICAgICAgIC8vIGFzeW5jIGVkZ2UgY2FzZSAjNjU2NjogaW5uZXIgY2xpY2sgZXZlbnQgdHJpZ2dlcnMgcGF0Y2gsIGV2ZW50IGhhbmRsZXJcclxuICAgICAgICAvLyBhdHRhY2hlZCB0byBvdXRlciBlbGVtZW50IGR1cmluZyBwYXRjaCwgYW5kIHRyaWdnZXJlZCBhZ2Fpbi4gVGhpc1xyXG4gICAgICAgIC8vIGhhcHBlbnMgYmVjYXVzZSBicm93c2VycyBmaXJlIG1pY3JvdGFzayB0aWNrcyBiZXR3ZWVuIGV2ZW50IHByb3BhZ2F0aW9uLlxyXG4gICAgICAgIC8vIHRoZSBzb2x1dGlvbiBpcyBzaW1wbGU6IHdlIHNhdmUgdGhlIHRpbWVzdGFtcCB3aGVuIGEgaGFuZGxlciBpcyBhdHRhY2hlZCxcclxuICAgICAgICAvLyBhbmQgdGhlIGhhbmRsZXIgd291bGQgb25seSBmaXJlIGlmIHRoZSBldmVudCBwYXNzZWQgdG8gaXQgd2FzIGZpcmVkXHJcbiAgICAgICAgLy8gQUZURVIgaXQgd2FzIGF0dGFjaGVkLlxyXG4gICAgICAgIGNvbnN0IHRpbWVTdGFtcCA9IGUudGltZVN0YW1wIHx8IF9nZXROb3coKTtcclxuICAgICAgICBpZiAoc2tpcFRpbWVzdGFtcENoZWNrIHx8IHRpbWVTdGFtcCA+PSBpbnZva2VyLmF0dGFjaGVkIC0gMSkge1xyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhwYXRjaFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihlLCBpbnZva2VyLnZhbHVlKSwgaW5zdGFuY2UsIDUgLyogTkFUSVZFX0VWRU5UX0hBTkRMRVIgKi8sIFtlXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGludm9rZXIudmFsdWUgPSBpbml0aWFsVmFsdWU7XHJcbiAgICBpbnZva2VyLmF0dGFjaGVkID0gZ2V0Tm93KCk7XHJcbiAgICByZXR1cm4gaW52b2tlcjtcclxufVxyXG5mdW5jdGlvbiBwYXRjaFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihlLCB2YWx1ZSkge1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTdG9wID0gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247XHJcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIG9yaWdpbmFsU3RvcC5jYWxsKGUpO1xyXG4gICAgICAgICAgICBlLl9zdG9wcGVkID0gdHJ1ZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZm4gPT4gKGUpID0+ICFlLl9zdG9wcGVkICYmIGZuICYmIGZuKGUpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxufVxuXG5jb25zdCBuYXRpdmVPblJFID0gL15vblthLXpdLztcclxuY29uc3QgcGF0Y2hQcm9wID0gKGVsLCBrZXksIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBpc1NWRyA9IGZhbHNlLCBwcmV2Q2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbikgPT4ge1xyXG4gICAgaWYgKGtleSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgIHBhdGNoQ2xhc3MoZWwsIG5leHRWYWx1ZSwgaXNTVkcpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XHJcbiAgICAgICAgcGF0Y2hTdHlsZShlbCwgcHJldlZhbHVlLCBuZXh0VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPbihrZXkpKSB7XHJcbiAgICAgICAgLy8gaWdub3JlIHYtbW9kZWwgbGlzdGVuZXJzXHJcbiAgICAgICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSkge1xyXG4gICAgICAgICAgICBwYXRjaEV2ZW50KGVsLCBrZXksIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBwYXJlbnRDb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGtleVswXSA9PT0gJy4nXHJcbiAgICAgICAgPyAoKGtleSA9IGtleS5zbGljZSgxKSksIHRydWUpXHJcbiAgICAgICAgOiBrZXlbMF0gPT09ICdeJ1xyXG4gICAgICAgICAgICA/ICgoa2V5ID0ga2V5LnNsaWNlKDEpKSwgZmFsc2UpXHJcbiAgICAgICAgICAgIDogc2hvdWxkU2V0QXNQcm9wKGVsLCBrZXksIG5leHRWYWx1ZSwgaXNTVkcpKSB7XHJcbiAgICAgICAgcGF0Y2hET01Qcm9wKGVsLCBrZXksIG5leHRWYWx1ZSwgcHJldkNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciA8aW5wdXQgdi1tb2RlbCB0eXBlPVwiY2hlY2tib3hcIj4gd2l0aFxyXG4gICAgICAgIC8vIDp0cnVlLXZhbHVlICYgOmZhbHNlLXZhbHVlXHJcbiAgICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgZG9tIHByb3BlcnRpZXMgc2luY2Ugbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZVxyXG4gICAgICAgIC8vIHN0cmluZ2lmaWVkLlxyXG4gICAgICAgIGlmIChrZXkgPT09ICd0cnVlLXZhbHVlJykge1xyXG4gICAgICAgICAgICBlbC5fdHJ1ZVZhbHVlID0gbmV4dFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdmYWxzZS12YWx1ZScpIHtcclxuICAgICAgICAgICAgZWwuX2ZhbHNlVmFsdWUgPSBuZXh0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhdGNoQXR0cihlbCwga2V5LCBuZXh0VmFsdWUsIGlzU1ZHKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gc2hvdWxkU2V0QXNQcm9wKGVsLCBrZXksIHZhbHVlLCBpc1NWRykge1xyXG4gICAgaWYgKGlzU1ZHKSB7XHJcbiAgICAgICAgLy8gbW9zdCBrZXlzIG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZSBvbiBzdmcgZWxlbWVudHMgdG8gd29ya1xyXG4gICAgICAgIC8vIC4uLmV4Y2VwdCBpbm5lckhUTUwgJiB0ZXh0Q29udGVudFxyXG4gICAgICAgIGlmIChrZXkgPT09ICdpbm5lckhUTUwnIHx8IGtleSA9PT0gJ3RleHRDb250ZW50Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gb3IgbmF0aXZlIG9uY2xpY2sgd2l0aCBmdW5jdGlvbiB2YWx1ZXNcclxuICAgICAgICBpZiAoa2V5IGluIGVsICYmIG5hdGl2ZU9uUkUudGVzdChrZXkpICYmIGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBzcGVsbGNoZWNrIGFuZCBkcmFnZ2FibGUgYXJlIG51bWVyYXRlZCBhdHRycywgaG93ZXZlciB0aGVpclxyXG4gICAgLy8gY29ycmVzcG9uZGluZyBET00gcHJvcGVydGllcyBhcmUgYWN0dWFsbHkgYm9vbGVhbnMgLSB0aGlzIGxlYWRzIHRvXHJcbiAgICAvLyBzZXR0aW5nIGl0IHdpdGggYSBzdHJpbmcgXCJmYWxzZVwiIHZhbHVlIGxlYWRpbmcgaXQgdG8gYmUgY29lcmNlZCB0b1xyXG4gICAgLy8gYHRydWVgLCBzbyB3ZSBuZWVkIHRvIGFsd2F5cyB0cmVhdCB0aGVtIGFzIGF0dHJpYnV0ZXMuXHJcbiAgICAvLyBOb3RlIHRoYXQgYGNvbnRlbnRFZGl0YWJsZWAgZG9lc24ndCBoYXZlIHRoaXMgcHJvYmxlbTogaXRzIERPTVxyXG4gICAgLy8gcHJvcGVydHkgaXMgYWxzbyBlbnVtZXJhdGVkIHN0cmluZyB2YWx1ZXMuXHJcbiAgICBpZiAoa2V5ID09PSAnc3BlbGxjaGVjaycgfHwga2V5ID09PSAnZHJhZ2dhYmxlJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vICMxNzg3LCAjMjg0MCBmb3JtIHByb3BlcnR5IG9uIGZvcm0gZWxlbWVudHMgaXMgcmVhZG9ubHkgYW5kIG11c3QgYmUgc2V0IGFzXHJcbiAgICAvLyBhdHRyaWJ1dGUuXHJcbiAgICBpZiAoa2V5ID09PSAnZm9ybScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAjMTUyNiA8aW5wdXQgbGlzdD4gbXVzdCBiZSBzZXQgYXMgYXR0cmlidXRlXHJcbiAgICBpZiAoa2V5ID09PSAnbGlzdCcgJiYgZWwudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vICMyNzY2IDx0ZXh0YXJlYSB0eXBlPiBtdXN0IGJlIHNldCBhcyBhdHRyaWJ1dGVcclxuICAgIGlmIChrZXkgPT09ICd0eXBlJyAmJiBlbC50YWdOYW1lID09PSAnVEVYVEFSRUEnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gbmF0aXZlIG9uY2xpY2sgd2l0aCBzdHJpbmcgdmFsdWUsIG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKG5hdGl2ZU9uUkUudGVzdChrZXkpICYmIGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBrZXkgaW4gZWw7XHJcbn1cblxuZnVuY3Rpb24gZGVmaW5lQ3VzdG9tRWxlbWVudChvcHRpb25zLCBoeWRhdGUpIHtcclxuICAgIGNvbnN0IENvbXAgPSBkZWZpbmVDb21wb25lbnQob3B0aW9ucyk7XHJcbiAgICBjbGFzcyBWdWVDdXN0b21FbGVtZW50IGV4dGVuZHMgVnVlRWxlbWVudCB7XHJcbiAgICAgICAgY29uc3RydWN0b3IoaW5pdGlhbFByb3BzKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKENvbXAsIGluaXRpYWxQcm9wcywgaHlkYXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBWdWVDdXN0b21FbGVtZW50LmRlZiA9IENvbXA7XHJcbiAgICByZXR1cm4gVnVlQ3VzdG9tRWxlbWVudDtcclxufVxyXG5jb25zdCBkZWZpbmVTU1JDdXN0b21FbGVtZW50ID0gKChvcHRpb25zKSA9PiB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gZGVmaW5lQ3VzdG9tRWxlbWVudChvcHRpb25zLCBoeWRyYXRlKTtcclxufSk7XHJcbmNvbnN0IEJhc2VDbGFzcyA9ICh0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnID8gSFRNTEVsZW1lbnQgOiBjbGFzcyB7XHJcbn0pO1xyXG5jbGFzcyBWdWVFbGVtZW50IGV4dGVuZHMgQmFzZUNsYXNzIHtcclxuICAgIGNvbnN0cnVjdG9yKF9kZWYsIF9wcm9wcyA9IHt9LCBoeWRyYXRlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9kZWYgPSBfZGVmO1xyXG4gICAgICAgIHRoaXMuX3Byb3BzID0gX3Byb3BzO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX251bWJlclByb3BzID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5zaGFkb3dSb290ICYmIGh5ZHJhdGUpIHtcclxuICAgICAgICAgICAgaHlkcmF0ZSh0aGlzLl9jcmVhdGVWTm9kZSgpLCB0aGlzLnNoYWRvd1Jvb3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0aGlzLnNoYWRvd1Jvb3QpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYEN1c3RvbSBlbGVtZW50IGhhcyBwcmUtcmVuZGVyZWQgZGVjbGFyYXRpdmUgc2hhZG93IHJvb3QgYnV0IGlzIG5vdCBgICtcclxuICAgICAgICAgICAgICAgICAgICBgZGVmaW5lZCBhcyBoeWRyYXRhYmxlLiBVc2UgXFxgZGVmaW5lU1NSQ3VzdG9tRWxlbWVudFxcYC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcclxuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZURlZigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge1xyXG4gICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIG5leHRUaWNrKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9jb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJlbmRlcihudWxsLCB0aGlzLnNoYWRvd1Jvb3QpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIHJlc29sdmUgaW5uZXIgY29tcG9uZW50IGRlZmluaXRpb24gKGhhbmRsZSBwb3NzaWJsZSBhc3luYyBjb21wb25lbnQpXHJcbiAgICAgKi9cclxuICAgIF9yZXNvbHZlRGVmKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Jlc29sdmVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBzZXQgaW5pdGlhbCBhdHRyc1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldEF0dHIodGhpcy5hdHRyaWJ1dGVzW2ldLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB3YXRjaCBmdXR1cmUgYXR0ciBjaGFuZ2VzXHJcbiAgICAgICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIG11dGF0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0QXR0cihtLmF0dHJpYnV0ZU5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkub2JzZXJ2ZSh0aGlzLCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7XHJcbiAgICAgICAgY29uc3QgcmVzb2x2ZSA9IChkZWYpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBwcm9wcywgc3R5bGVzIH0gPSBkZWY7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc09wdGlvbnMgPSAhaXNBcnJheShwcm9wcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhd0tleXMgPSBwcm9wcyA/IChoYXNPcHRpb25zID8gT2JqZWN0LmtleXMocHJvcHMpIDogcHJvcHMpIDogW107XHJcbiAgICAgICAgICAgIC8vIGNhc3QgTnVtYmVyLXR5cGUgcHJvcHMgc2V0IGJlZm9yZSByZXNvbHZlXHJcbiAgICAgICAgICAgIGxldCBudW1iZXJQcm9wcztcclxuICAgICAgICAgICAgaWYgKGhhc09wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuX3Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0ID09PSBOdW1iZXIgfHwgKG9wdCAmJiBvcHQudHlwZSA9PT0gTnVtYmVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9wc1trZXldID0gdG9OdW1iZXIodGhpcy5fcHJvcHNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChudW1iZXJQcm9wcyB8fCAobnVtYmVyUHJvcHMgPSBPYmplY3QuY3JlYXRlKG51bGwpKSlba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX251bWJlclByb3BzID0gbnVtYmVyUHJvcHM7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBwcm9wcyBzZXQgcHJlLXVwZ3JhZGUgb3IgY29ubmVjdFxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleVswXSAhPT0gJ18nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0UHJvcChrZXksIHRoaXNba2V5XSwgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlZmluaW5nIGdldHRlci9zZXR0ZXJzIG9uIHByb3RvdHlwZVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiByYXdLZXlzLm1hcChjYW1lbGl6ZSQxKSkge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGdldCgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3Aoa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0UHJvcChrZXksIHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gYXBwbHkgQ1NTXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcGx5U3R5bGVzKHN0eWxlcyk7XHJcbiAgICAgICAgICAgIC8vIGluaXRpYWwgcmVuZGVyXHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgYXN5bmNEZWYgPSB0aGlzLl9kZWYuX19hc3luY0xvYWRlcjtcclxuICAgICAgICBpZiAoYXN5bmNEZWYpIHtcclxuICAgICAgICAgICAgYXN5bmNEZWYoKS50aGVuKHJlc29sdmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLl9kZWYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9zZXRBdHRyKGtleSkge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX251bWJlclByb3BzICYmIHRoaXMuX251bWJlclByb3BzW2tleV0pIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3NldFByb3AoY2FtZWxpemUkMShrZXkpLCB2YWx1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgX2dldFByb3Aoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BzW2tleV07XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBfc2V0UHJvcChrZXksIHZhbCwgc2hvdWxkUmVmbGVjdCA9IHRydWUsIHNob3VsZFVwZGF0ZSA9IHRydWUpIHtcclxuICAgICAgICBpZiAodmFsICE9PSB0aGlzLl9wcm9wc1trZXldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Byb3BzW2tleV0gPSB2YWw7XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGUgJiYgdGhpcy5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHJlZmxlY3RcclxuICAgICAgICAgICAgaWYgKHNob3VsZFJlZmxlY3QpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShoeXBoZW5hdGUoa2V5KSwgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShoeXBoZW5hdGUoa2V5KSwgdmFsICsgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXZhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKGh5cGhlbmF0ZShrZXkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF91cGRhdGUoKSB7XHJcbiAgICAgICAgcmVuZGVyKHRoaXMuX2NyZWF0ZVZOb2RlKCksIHRoaXMuc2hhZG93Um9vdCk7XHJcbiAgICB9XHJcbiAgICBfY3JlYXRlVk5vZGUoKSB7XHJcbiAgICAgICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZSh0aGlzLl9kZWYsIGV4dGVuZCh7fSwgdGhpcy5fcHJvcHMpKTtcclxuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHZub2RlLmNlID0gaW5zdGFuY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzQ0UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgLy8gSE1SXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2VSZWxvYWQgPSBuZXdTdHlsZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbHdheXMgcmVzZXQgc3R5bGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdHlsZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlcy5mb3JFYWNoKHMgPT4gdGhpcy5zaGFkb3dSb290LnJlbW92ZUNoaWxkKHMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlcy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5U3R5bGVzKG5ld1N0eWxlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYW4gYXN5bmMgY29tcG9uZW50LCBjZVJlbG9hZCBpcyBjYWxsZWQgZnJvbSB0aGUgaW5uZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IHNvIG5vIG5lZWQgdG8gcmVsb2FkIHRoZSBhc3luYyB3cmFwcGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fZGVmLl9fYXN5bmNMb2FkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gaW50ZXJjZXB0IGVtaXRcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmVtaXQgPSAoZXZlbnQsIC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGV2ZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogYXJnc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAvLyBsb2NhdGUgbmVhcmVzdCBWdWUgY3VzdG9tIGVsZW1lbnQgcGFyZW50IGZvciBwcm92aWRlL2luamVjdFxyXG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoKHBhcmVudCA9XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50ICYmIChwYXJlbnQucGFyZW50Tm9kZSB8fCBwYXJlbnQuaG9zdCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIFZ1ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50ID0gcGFyZW50Ll9pbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdm5vZGU7XHJcbiAgICB9XHJcbiAgICBfYXBwbHlTdHlsZXMoc3R5bGVzKSB7XHJcbiAgICAgICAgaWYgKHN0eWxlcykge1xyXG4gICAgICAgICAgICBzdHlsZXMuZm9yRWFjaChjc3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICAgICAgICAgICAgICBzLnRleHRDb250ZW50ID0gY3NzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHMpO1xyXG4gICAgICAgICAgICAgICAgLy8gcmVjb3JkIGZvciBITVJcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5fc3R5bGVzIHx8ICh0aGlzLl9zdHlsZXMgPSBbXSkpLnB1c2gocyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiB1c2VDc3NNb2R1bGUobmFtZSA9ICckc3R5bGUnKSB7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgdXNlQ3NzTW9kdWxlIG11c3QgYmUgY2FsbGVkIGluc2lkZSBzZXR1cCgpYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9PQko7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSBpbnN0YW5jZS50eXBlLl9fY3NzTW9kdWxlcztcclxuICAgICAgICBpZiAoIW1vZHVsZXMpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYEN1cnJlbnQgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBDU1MgbW9kdWxlcyBpbmplY3RlZC5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX09CSjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kID0gbW9kdWxlc1tuYW1lXTtcclxuICAgICAgICBpZiAoIW1vZCkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEN1cnJlbnQgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBDU1MgbW9kdWxlIG5hbWVkIFwiJHtuYW1lfVwiLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfT0JKO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbW9kO1xyXG4gICAgfVxyXG59XG5cbi8qKlxyXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgU0ZDJ3MgQ1NTIHZhcmlhYmxlIGluamVjdGlvbiBmZWF0dXJlLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gdXNlQ3NzVmFycyhnZXR0ZXIpIHtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuKGB1c2VDc3NWYXJzIGlzIGNhbGxlZCB3aXRob3V0IGN1cnJlbnQgYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZS5gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZXRWYXJzID0gKCkgPT4gc2V0VmFyc09uVk5vZGUoaW5zdGFuY2Uuc3ViVHJlZSwgZ2V0dGVyKGluc3RhbmNlLnByb3h5KSk7XHJcbiAgICB3YXRjaFBvc3RFZmZlY3Qoc2V0VmFycyk7XHJcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9iID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoc2V0VmFycyk7XHJcbiAgICAgICAgb2Iub2JzZXJ2ZShpbnN0YW5jZS5zdWJUcmVlLmVsLnBhcmVudE5vZGUsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xyXG4gICAgICAgIG9uVW5tb3VudGVkKCgpID0+IG9iLmRpc2Nvbm5lY3QoKSk7XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBzZXRWYXJzT25WTm9kZSh2bm9kZSwgdmFycykge1xyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTVVNQRU5TRSAqLykge1xyXG4gICAgICAgIGNvbnN0IHN1c3BlbnNlID0gdm5vZGUuc3VzcGVuc2U7XHJcbiAgICAgICAgdm5vZGUgPSBzdXNwZW5zZS5hY3RpdmVCcmFuY2g7XHJcbiAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggJiYgIXN1c3BlbnNlLmlzSHlkcmF0aW5nKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZXRWYXJzT25WTm9kZShzdXNwZW5zZS5hY3RpdmVCcmFuY2gsIHZhcnMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBkcmlsbCBkb3duIEhPQ3MgdW50aWwgaXQncyBhIG5vbi1jb21wb25lbnQgdm5vZGVcclxuICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnQpIHtcclxuICAgICAgICB2bm9kZSA9IHZub2RlLmNvbXBvbmVudC5zdWJUcmVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEgLyogRUxFTUVOVCAqLyAmJiB2bm9kZS5lbCkge1xyXG4gICAgICAgIHNldFZhcnNPbk5vZGUodm5vZGUuZWwsIHZhcnMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodm5vZGUudHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gc2V0VmFyc09uVk5vZGUoYywgdmFycykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodm5vZGUudHlwZSA9PT0gU3RhdGljKSB7XHJcbiAgICAgICAgbGV0IHsgZWwsIGFuY2hvciB9ID0gdm5vZGU7XHJcbiAgICAgICAgd2hpbGUgKGVsKSB7XHJcbiAgICAgICAgICAgIHNldFZhcnNPbk5vZGUoZWwsIHZhcnMpO1xyXG4gICAgICAgICAgICBpZiAoZWwgPT09IGFuY2hvcilcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBlbCA9IGVsLm5leHRTaWJsaW5nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBzZXRWYXJzT25Ob2RlKGVsLCB2YXJzKSB7XHJcbiAgICBpZiAoZWwubm9kZVR5cGUgPT09IDEpIHtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHZhcnMpIHtcclxuICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoYC0tJHtrZXl9YCwgdmFyc1trZXldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgVFJBTlNJVElPTiA9ICd0cmFuc2l0aW9uJztcclxuY29uc3QgQU5JTUFUSU9OID0gJ2FuaW1hdGlvbic7XHJcbi8vIERPTSBUcmFuc2l0aW9uIGlzIGEgaGlnaGVyLW9yZGVyLWNvbXBvbmVudCBiYXNlZCBvbiB0aGUgcGxhdGZvcm0tYWdub3N0aWNcclxuLy8gYmFzZSBUcmFuc2l0aW9uIGNvbXBvbmVudCwgd2l0aCBET00tc3BlY2lmaWMgbG9naWMuXHJcbmNvbnN0IFRyYW5zaXRpb24gPSAocHJvcHMsIHsgc2xvdHMgfSkgPT4gaChCYXNlVHJhbnNpdGlvbiwgcmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyhwcm9wcyksIHNsb3RzKTtcclxuVHJhbnNpdGlvbi5kaXNwbGF5TmFtZSA9ICdUcmFuc2l0aW9uJztcclxuY29uc3QgRE9NVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycyA9IHtcclxuICAgIG5hbWU6IFN0cmluZyxcclxuICAgIHR5cGU6IFN0cmluZyxcclxuICAgIGNzczoge1xyXG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGR1cmF0aW9uOiBbU3RyaW5nLCBOdW1iZXIsIE9iamVjdF0sXHJcbiAgICBlbnRlckZyb21DbGFzczogU3RyaW5nLFxyXG4gICAgZW50ZXJBY3RpdmVDbGFzczogU3RyaW5nLFxyXG4gICAgZW50ZXJUb0NsYXNzOiBTdHJpbmcsXHJcbiAgICBhcHBlYXJGcm9tQ2xhc3M6IFN0cmluZyxcclxuICAgIGFwcGVhckFjdGl2ZUNsYXNzOiBTdHJpbmcsXHJcbiAgICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXHJcbiAgICBsZWF2ZUZyb21DbGFzczogU3RyaW5nLFxyXG4gICAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxyXG4gICAgbGVhdmVUb0NsYXNzOiBTdHJpbmdcclxufTtcclxuY29uc3QgVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycyA9IChUcmFuc2l0aW9uLnByb3BzID1cclxuICAgIC8qI19fUFVSRV9fKi8gZXh0ZW5kKHt9LCBCYXNlVHJhbnNpdGlvbi5wcm9wcywgRE9NVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycykpO1xyXG4vKipcclxuICogIzMyMjcgSW5jb21pbmcgaG9va3MgbWF5IGJlIG1lcmdlZCBpbnRvIGFycmF5cyB3aGVuIHdyYXBwaW5nIFRyYW5zaXRpb25cclxuICogd2l0aCBjdXN0b20gSE9Dcy5cclxuICovXHJcbmNvbnN0IGNhbGxIb29rID0gKGhvb2ssIGFyZ3MgPSBbXSkgPT4ge1xyXG4gICAgaWYgKGlzQXJyYXkoaG9vaykpIHtcclxuICAgICAgICBob29rLmZvckVhY2goaCA9PiBoKC4uLmFyZ3MpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGhvb2spIHtcclxuICAgICAgICBob29rKC4uLmFyZ3MpO1xyXG4gICAgfVxyXG59O1xyXG4vKipcclxuICogQ2hlY2sgaWYgYSBob29rIGV4cGVjdHMgYSBjYWxsYmFjayAoMm5kIGFyZyksIHdoaWNoIG1lYW5zIHRoZSB1c2VyXHJcbiAqIGludGVuZHMgdG8gZXhwbGljaXRseSBjb250cm9sIHRoZSBlbmQgb2YgdGhlIHRyYW5zaXRpb24uXHJcbiAqL1xyXG5jb25zdCBoYXNFeHBsaWNpdENhbGxiYWNrID0gKGhvb2spID0+IHtcclxuICAgIHJldHVybiBob29rXHJcbiAgICAgICAgPyBpc0FycmF5KGhvb2spXHJcbiAgICAgICAgICAgID8gaG9vay5zb21lKGggPT4gaC5sZW5ndGggPiAxKVxyXG4gICAgICAgICAgICA6IGhvb2subGVuZ3RoID4gMVxyXG4gICAgICAgIDogZmFsc2U7XHJcbn07XHJcbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uUHJvcHMocmF3UHJvcHMpIHtcclxuICAgIGNvbnN0IGJhc2VQcm9wcyA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmF3UHJvcHMpIHtcclxuICAgICAgICBpZiAoIShrZXkgaW4gRE9NVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycykpIHtcclxuICAgICAgICAgICAgYmFzZVByb3BzW2tleV0gPSByYXdQcm9wc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyYXdQcm9wcy5jc3MgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGJhc2VQcm9wcztcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbmFtZSA9ICd2JywgdHlwZSwgZHVyYXRpb24sIGVudGVyRnJvbUNsYXNzID0gYCR7bmFtZX0tZW50ZXItZnJvbWAsIGVudGVyQWN0aXZlQ2xhc3MgPSBgJHtuYW1lfS1lbnRlci1hY3RpdmVgLCBlbnRlclRvQ2xhc3MgPSBgJHtuYW1lfS1lbnRlci10b2AsIGFwcGVhckZyb21DbGFzcyA9IGVudGVyRnJvbUNsYXNzLCBhcHBlYXJBY3RpdmVDbGFzcyA9IGVudGVyQWN0aXZlQ2xhc3MsIGFwcGVhclRvQ2xhc3MgPSBlbnRlclRvQ2xhc3MsIGxlYXZlRnJvbUNsYXNzID0gYCR7bmFtZX0tbGVhdmUtZnJvbWAsIGxlYXZlQWN0aXZlQ2xhc3MgPSBgJHtuYW1lfS1sZWF2ZS1hY3RpdmVgLCBsZWF2ZVRvQ2xhc3MgPSBgJHtuYW1lfS1sZWF2ZS10b2AgfSA9IHJhd1Byb3BzO1xyXG4gICAgY29uc3QgZHVyYXRpb25zID0gbm9ybWFsaXplRHVyYXRpb24oZHVyYXRpb24pO1xyXG4gICAgY29uc3QgZW50ZXJEdXJhdGlvbiA9IGR1cmF0aW9ucyAmJiBkdXJhdGlvbnNbMF07XHJcbiAgICBjb25zdCBsZWF2ZUR1cmF0aW9uID0gZHVyYXRpb25zICYmIGR1cmF0aW9uc1sxXTtcclxuICAgIGNvbnN0IHsgb25CZWZvcmVFbnRlciwgb25FbnRlciwgb25FbnRlckNhbmNlbGxlZCwgb25MZWF2ZSwgb25MZWF2ZUNhbmNlbGxlZCwgb25CZWZvcmVBcHBlYXIgPSBvbkJlZm9yZUVudGVyLCBvbkFwcGVhciA9IG9uRW50ZXIsIG9uQXBwZWFyQ2FuY2VsbGVkID0gb25FbnRlckNhbmNlbGxlZCB9ID0gYmFzZVByb3BzO1xyXG4gICAgY29uc3QgZmluaXNoRW50ZXIgPSAoZWwsIGlzQXBwZWFyLCBkb25lKSA9PiB7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhclRvQ2xhc3MgOiBlbnRlclRvQ2xhc3MpO1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgaXNBcHBlYXIgPyBhcHBlYXJBY3RpdmVDbGFzcyA6IGVudGVyQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIGRvbmUgJiYgZG9uZSgpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGZpbmlzaExlYXZlID0gKGVsLCBkb25lKSA9PiB7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgZG9uZSAmJiBkb25lKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbWFrZUVudGVySG9vayA9IChpc0FwcGVhcikgPT4ge1xyXG4gICAgICAgIHJldHVybiAoZWwsIGRvbmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaG9vayA9IGlzQXBwZWFyID8gb25BcHBlYXIgOiBvbkVudGVyO1xyXG4gICAgICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gZmluaXNoRW50ZXIoZWwsIGlzQXBwZWFyLCBkb25lKTtcclxuICAgICAgICAgICAgY2FsbEhvb2soaG9vaywgW2VsLCByZXNvbHZlXSk7XHJcbiAgICAgICAgICAgIG5leHRGcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyRnJvbUNsYXNzIDogZW50ZXJGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhclRvQ2xhc3MgOiBlbnRlclRvQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNFeHBsaWNpdENhbGxiYWNrKGhvb2spKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBlbnRlckR1cmF0aW9uLCByZXNvbHZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZXh0ZW5kKGJhc2VQcm9wcywge1xyXG4gICAgICAgIG9uQmVmb3JlRW50ZXIoZWwpIHtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25CZWZvcmVFbnRlciwgW2VsXSk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgZW50ZXJGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGVudGVyQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25CZWZvcmVBcHBlYXIoZWwpIHtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25CZWZvcmVBcHBlYXIsIFtlbF0pO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGFwcGVhckZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYXBwZWFyQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25FbnRlcjogbWFrZUVudGVySG9vayhmYWxzZSksXHJcbiAgICAgICAgb25BcHBlYXI6IG1ha2VFbnRlckhvb2sodHJ1ZSksXHJcbiAgICAgICAgb25MZWF2ZShlbCwgZG9uZSkge1xyXG4gICAgICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gZmluaXNoTGVhdmUoZWwsIGRvbmUpO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgLy8gZm9yY2UgcmVmbG93IHNvICotbGVhdmUtZnJvbSBjbGFzc2VzIGltbWVkaWF0ZWx5IHRha2UgZWZmZWN0ICgjMjU5MylcclxuICAgICAgICAgICAgZm9yY2VSZWZsb3coKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcclxuICAgICAgICAgICAgbmV4dEZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNFeHBsaWNpdENhbGxiYWNrKG9uTGVhdmUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBsZWF2ZUR1cmF0aW9uLCByZXNvbHZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uTGVhdmUsIFtlbCwgcmVzb2x2ZV0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25FbnRlckNhbmNlbGxlZChlbCkge1xyXG4gICAgICAgICAgICBmaW5pc2hFbnRlcihlbCwgZmFsc2UpO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkVudGVyQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQXBwZWFyQ2FuY2VsbGVkKGVsKSB7XHJcbiAgICAgICAgICAgIGZpbmlzaEVudGVyKGVsLCB0cnVlKTtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25BcHBlYXJDYW5jZWxsZWQsIFtlbF0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25MZWF2ZUNhbmNlbGxlZChlbCkge1xyXG4gICAgICAgICAgICBmaW5pc2hMZWF2ZShlbCk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uTGVhdmVDYW5jZWxsZWQsIFtlbF0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cmF0aW9uKSB7XHJcbiAgICBpZiAoZHVyYXRpb24gPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QoZHVyYXRpb24pKSB7XHJcbiAgICAgICAgcmV0dXJuIFtOdW1iZXJPZihkdXJhdGlvbi5lbnRlciksIE51bWJlck9mKGR1cmF0aW9uLmxlYXZlKV07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBuID0gTnVtYmVyT2YoZHVyYXRpb24pO1xyXG4gICAgICAgIHJldHVybiBbbiwgbl07XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gTnVtYmVyT2YodmFsKSB7XHJcbiAgICBjb25zdCByZXMgPSB0b051bWJlcih2YWwpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSlcclxuICAgICAgICB2YWxpZGF0ZUR1cmF0aW9uKHJlcyk7XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbmZ1bmN0aW9uIHZhbGlkYXRlRHVyYXRpb24odmFsKSB7XHJcbiAgICBpZiAodHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICB3YXJuKGA8dHJhbnNpdGlvbj4gZXhwbGljaXQgZHVyYXRpb24gaXMgbm90IGEgdmFsaWQgbnVtYmVyIC0gYCArXHJcbiAgICAgICAgICAgIGBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfS5gKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzTmFOKHZhbCkpIHtcclxuICAgICAgICB3YXJuKGA8dHJhbnNpdGlvbj4gZXhwbGljaXQgZHVyYXRpb24gaXMgTmFOIC0gYCArXHJcbiAgICAgICAgICAgICd0aGUgZHVyYXRpb24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBjbHMpIHtcclxuICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goYyA9PiBjICYmIGVsLmNsYXNzTGlzdC5hZGQoYykpO1xyXG4gICAgKGVsLl92dGMgfHxcclxuICAgICAgICAoZWwuX3Z0YyA9IG5ldyBTZXQoKSkpLmFkZChjbHMpO1xyXG59XHJcbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgY2xzKSB7XHJcbiAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpKTtcclxuICAgIGNvbnN0IHsgX3Z0YyB9ID0gZWw7XHJcbiAgICBpZiAoX3Z0Yykge1xyXG4gICAgICAgIF92dGMuZGVsZXRlKGNscyk7XHJcbiAgICAgICAgaWYgKCFfdnRjLnNpemUpIHtcclxuICAgICAgICAgICAgZWwuX3Z0YyA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbmV4dEZyYW1lKGNiKSB7XHJcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XHJcbiAgICB9KTtcclxufVxyXG5sZXQgZW5kSWQgPSAwO1xyXG5mdW5jdGlvbiB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIGV4cGVjdGVkVHlwZSwgZXhwbGljaXRUaW1lb3V0LCByZXNvbHZlKSB7XHJcbiAgICBjb25zdCBpZCA9IChlbC5fZW5kSWQgPSArK2VuZElkKTtcclxuICAgIGNvbnN0IHJlc29sdmVJZk5vdFN0YWxlID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChpZCA9PT0gZWwuX2VuZElkKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGV4cGxpY2l0VGltZW91dCkge1xyXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KHJlc29sdmVJZk5vdFN0YWxlLCBleHBsaWNpdFRpbWVvdXQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0eXBlLCB0aW1lb3V0LCBwcm9wQ291bnQgfSA9IGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xyXG4gICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVuZEV2ZW50ID0gdHlwZSArICdlbmQnO1xyXG4gICAgbGV0IGVuZGVkID0gMDtcclxuICAgIGNvbnN0IGVuZCA9ICgpID0+IHtcclxuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGVuZEV2ZW50LCBvbkVuZCk7XHJcbiAgICAgICAgcmVzb2x2ZUlmTm90U3RhbGUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBvbkVuZCA9IChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlbCAmJiArK2VuZGVkID49IHByb3BDb3VudCkge1xyXG4gICAgICAgICAgICBlbmQoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGVuZGVkIDwgcHJvcENvdW50KSB7XHJcbiAgICAgICAgICAgIGVuZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIHRpbWVvdXQgKyAxKTtcclxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZW5kRXZlbnQsIG9uRW5kKTtcclxufVxyXG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyhlbCwgZXhwZWN0ZWRUeXBlKSB7XHJcbiAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XHJcbiAgICAvLyBKU0RPTSBtYXkgcmV0dXJuIHVuZGVmaW5lZCBmb3IgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzXHJcbiAgICBjb25zdCBnZXRTdHlsZVByb3BlcnRpZXMgPSAoa2V5KSA9PiAoc3R5bGVzW2tleV0gfHwgJycpLnNwbGl0KCcsICcpO1xyXG4gICAgY29uc3QgdHJhbnNpdGlvbkRlbGF5cyA9IGdldFN0eWxlUHJvcGVydGllcyhUUkFOU0lUSU9OICsgJ0RlbGF5Jyk7XHJcbiAgICBjb25zdCB0cmFuc2l0aW9uRHVyYXRpb25zID0gZ2V0U3R5bGVQcm9wZXJ0aWVzKFRSQU5TSVRJT04gKyAnRHVyYXRpb24nKTtcclxuICAgIGNvbnN0IHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFuc2l0aW9uRHVyYXRpb25zKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvbkRlbGF5cyA9IGdldFN0eWxlUHJvcGVydGllcyhBTklNQVRJT04gKyAnRGVsYXknKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9ucyA9IGdldFN0eWxlUHJvcGVydGllcyhBTklNQVRJT04gKyAnRHVyYXRpb24nKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25zKTtcclxuICAgIGxldCB0eXBlID0gbnVsbDtcclxuICAgIGxldCB0aW1lb3V0ID0gMDtcclxuICAgIGxldCBwcm9wQ291bnQgPSAwO1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICBpZiAoZXhwZWN0ZWRUeXBlID09PSBUUkFOU0lUSU9OKSB7XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb25UaW1lb3V0ID4gMCkge1xyXG4gICAgICAgICAgICB0eXBlID0gVFJBTlNJVElPTjtcclxuICAgICAgICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xyXG4gICAgICAgICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09IEFOSU1BVElPTikge1xyXG4gICAgICAgIGlmIChhbmltYXRpb25UaW1lb3V0ID4gMCkge1xyXG4gICAgICAgICAgICB0eXBlID0gQU5JTUFUSU9OO1xyXG4gICAgICAgICAgICB0aW1lb3V0ID0gYW5pbWF0aW9uVGltZW91dDtcclxuICAgICAgICAgICAgcHJvcENvdW50ID0gYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xyXG4gICAgICAgIHR5cGUgPVxyXG4gICAgICAgICAgICB0aW1lb3V0ID4gMFxyXG4gICAgICAgICAgICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcclxuICAgICAgICAgICAgICAgICAgICA/IFRSQU5TSVRJT05cclxuICAgICAgICAgICAgICAgICAgICA6IEFOSU1BVElPTlxyXG4gICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIHByb3BDb3VudCA9IHR5cGVcclxuICAgICAgICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXHJcbiAgICAgICAgICAgICAgICA/IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICA6IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGhcclxuICAgICAgICAgICAgOiAwO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFzVHJhbnNmb3JtID0gdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxyXG4gICAgICAgIC9cXGIodHJhbnNmb3JtfGFsbCkoLHwkKS8udGVzdChzdHlsZXNbVFJBTlNJVElPTiArICdQcm9wZXJ0eSddKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB0aW1lb3V0LFxyXG4gICAgICAgIHByb3BDb3VudCxcclxuICAgICAgICBoYXNUcmFuc2Zvcm1cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZ2V0VGltZW91dChkZWxheXMsIGR1cmF0aW9ucykge1xyXG4gICAgd2hpbGUgKGRlbGF5cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgZGVsYXlzID0gZGVsYXlzLmNvbmNhdChkZWxheXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLmR1cmF0aW9ucy5tYXAoKGQsIGkpID0+IHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSkpKTtcclxufVxyXG4vLyBPbGQgdmVyc2lvbnMgb2YgQ2hyb21pdW0gKGJlbG93IDYxLjAuMzE2My4xMDApIGZvcm1hdHMgZmxvYXRpbmcgcG9pbnRlclxyXG4vLyBudW1iZXJzIGluIGEgbG9jYWxlLWRlcGVuZGVudCB3YXksIHVzaW5nIGEgY29tbWEgaW5zdGVhZCBvZiBhIGRvdC5cclxuLy8gSWYgY29tbWEgaXMgbm90IHJlcGxhY2VkIHdpdGggYSBkb3QsIHRoZSBpbnB1dCB3aWxsIGJlIHJvdW5kZWQgZG93blxyXG4vLyAoaS5lLiBhY3RpbmcgYXMgYSBmbG9vciBmdW5jdGlvbikgY2F1c2luZyB1bmV4cGVjdGVkIGJlaGF2aW9yc1xyXG5mdW5jdGlvbiB0b01zKHMpIHtcclxuICAgIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkucmVwbGFjZSgnLCcsICcuJykpICogMTAwMDtcclxufVxyXG4vLyBzeW5jaHJvbm91c2x5IGZvcmNlIGxheW91dCB0byBwdXQgZWxlbWVudHMgaW50byBhIGNlcnRhaW4gc3RhdGVcclxuZnVuY3Rpb24gZm9yY2VSZWZsb3coKSB7XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7XHJcbn1cblxuY29uc3QgcG9zaXRpb25NYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBuZXdQb3NpdGlvbk1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmNvbnN0IFRyYW5zaXRpb25Hcm91cEltcGwgPSB7XHJcbiAgICBuYW1lOiAnVHJhbnNpdGlvbkdyb3VwJyxcclxuICAgIHByb3BzOiAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycywge1xyXG4gICAgICAgIHRhZzogU3RyaW5nLFxyXG4gICAgICAgIG1vdmVDbGFzczogU3RyaW5nXHJcbiAgICB9KSxcclxuICAgIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdXNlVHJhbnNpdGlvblN0YXRlKCk7XHJcbiAgICAgICAgbGV0IHByZXZDaGlsZHJlbjtcclxuICAgICAgICBsZXQgY2hpbGRyZW47XHJcbiAgICAgICAgb25VcGRhdGVkKCgpID0+IHtcclxuICAgICAgICAgICAgLy8gY2hpbGRyZW4gaXMgZ3VhcmFudGVlZCB0byBleGlzdCBhZnRlciBpbml0aWFsIHJlbmRlclxyXG4gICAgICAgICAgICBpZiAoIXByZXZDaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtb3ZlQ2xhc3MgPSBwcm9wcy5tb3ZlQ2xhc3MgfHwgYCR7cHJvcHMubmFtZSB8fCAndid9LW1vdmVgO1xyXG4gICAgICAgICAgICBpZiAoIWhhc0NTU1RyYW5zZm9ybShwcmV2Q2hpbGRyZW5bMF0uZWwsIGluc3RhbmNlLnZub2RlLmVsLCBtb3ZlQ2xhc3MpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gd2UgZGl2aWRlIHRoZSB3b3JrIGludG8gdGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXHJcbiAgICAgICAgICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxyXG4gICAgICAgICAgICBwcmV2Q2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XHJcbiAgICAgICAgICAgIHByZXZDaGlsZHJlbi5mb3JFYWNoKHJlY29yZFBvc2l0aW9uKTtcclxuICAgICAgICAgICAgY29uc3QgbW92ZWRDaGlsZHJlbiA9IHByZXZDaGlsZHJlbi5maWx0ZXIoYXBwbHlUcmFuc2xhdGlvbik7XHJcbiAgICAgICAgICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBwb3NpdGlvblxyXG4gICAgICAgICAgICBmb3JjZVJlZmxvdygpO1xyXG4gICAgICAgICAgICBtb3ZlZENoaWxkcmVuLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGMuZWw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUudHJhbnNmb3JtID0gc3R5bGUud2Via2l0VHJhbnNmb3JtID0gc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYiA9IChlbC5fbW92ZUNiID0gKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLnRhcmdldCAhPT0gZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWUgfHwgL3RyYW5zZm9ybSQvLnRlc3QoZS5wcm9wZXJ0eU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByYXdQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgY3NzVHJhbnNpdGlvblByb3BzID0gcmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyhyYXdQcm9wcyk7XHJcbiAgICAgICAgICAgIGxldCB0YWcgPSByYXdQcm9wcy50YWcgfHwgRnJhZ21lbnQ7XHJcbiAgICAgICAgICAgIHByZXZDaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQgPyBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oc2xvdHMuZGVmYXVsdCgpKSA6IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKGNoaWxkLCByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGNoaWxkLCBjc3NUcmFuc2l0aW9uUHJvcHMsIHN0YXRlLCBpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgPFRyYW5zaXRpb25Hcm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXllZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJldkNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gcHJldkNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhjaGlsZCwgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhjaGlsZCwgY3NzVHJhbnNpdGlvblByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk1hcC5zZXQoY2hpbGQsIGNoaWxkLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodGFnLCBudWxsLCBjaGlsZHJlbik7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuY29uc3QgVHJhbnNpdGlvbkdyb3VwID0gVHJhbnNpdGlvbkdyb3VwSW1wbDtcclxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMoYykge1xyXG4gICAgY29uc3QgZWwgPSBjLmVsO1xyXG4gICAgaWYgKGVsLl9tb3ZlQ2IpIHtcclxuICAgICAgICBlbC5fbW92ZUNiKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZWwuX2VudGVyQ2IpIHtcclxuICAgICAgICBlbC5fZW50ZXJDYigpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uKGMpIHtcclxuICAgIG5ld1Bvc2l0aW9uTWFwLnNldChjLCBjLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcclxufVxyXG5mdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uKGMpIHtcclxuICAgIGNvbnN0IG9sZFBvcyA9IHBvc2l0aW9uTWFwLmdldChjKTtcclxuICAgIGNvbnN0IG5ld1BvcyA9IG5ld1Bvc2l0aW9uTWFwLmdldChjKTtcclxuICAgIGNvbnN0IGR4ID0gb2xkUG9zLmxlZnQgLSBuZXdQb3MubGVmdDtcclxuICAgIGNvbnN0IGR5ID0gb2xkUG9zLnRvcCAtIG5ld1Bvcy50b3A7XHJcbiAgICBpZiAoZHggfHwgZHkpIHtcclxuICAgICAgICBjb25zdCBzID0gYy5lbC5zdHlsZTtcclxuICAgICAgICBzLnRyYW5zZm9ybSA9IHMud2Via2l0VHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke2R4fXB4LCR7ZHl9cHgpYDtcclxuICAgICAgICBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwcyc7XHJcbiAgICAgICAgcmV0dXJuIGM7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaGFzQ1NTVHJhbnNmb3JtKGVsLCByb290LCBtb3ZlQ2xhc3MpIHtcclxuICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xyXG4gICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXHJcbiAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXHJcbiAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcclxuICAgIC8vIGlzIGFwcGxpZWQuXHJcbiAgICBjb25zdCBjbG9uZSA9IGVsLmNsb25lTm9kZSgpO1xyXG4gICAgaWYgKGVsLl92dGMpIHtcclxuICAgICAgICBlbC5fdnRjLmZvckVhY2goY2xzID0+IHtcclxuICAgICAgICAgICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChjID0+IGMgJiYgY2xvbmUuY2xhc3NMaXN0LnJlbW92ZShjKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBtb3ZlQ2xhc3Muc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBjbG9uZS5jbGFzc0xpc3QuYWRkKGMpKTtcclxuICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSAocm9vdC5ub2RlVHlwZSA9PT0gMSA/IHJvb3QgOiByb290LnBhcmVudE5vZGUpO1xyXG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNsb25lKTtcclxuICAgIGNvbnN0IHsgaGFzVHJhbnNmb3JtIH0gPSBnZXRUcmFuc2l0aW9uSW5mbyhjbG9uZSk7XHJcbiAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY2xvbmUpO1xyXG4gICAgcmV0dXJuIGhhc1RyYW5zZm9ybTtcclxufVxuXG5jb25zdCBnZXRNb2RlbEFzc2lnbmVyID0gKHZub2RlKSA9PiB7XHJcbiAgICBjb25zdCBmbiA9IHZub2RlLnByb3BzWydvblVwZGF0ZTptb2RlbFZhbHVlJ107XHJcbiAgICByZXR1cm4gaXNBcnJheShmbikgPyB2YWx1ZSA9PiBpbnZva2VBcnJheUZucyhmbiwgdmFsdWUpIDogZm47XHJcbn07XHJcbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25TdGFydChlKSB7XHJcbiAgICBlLnRhcmdldC5jb21wb3NpbmcgPSB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQoZSkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQ7XHJcbiAgICBpZiAodGFyZ2V0LmNvbXBvc2luZykge1xyXG4gICAgICAgIHRhcmdldC5jb21wb3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgJ2lucHV0Jyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlcihlbCwgdHlwZSkge1xyXG4gICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XHJcbiAgICBlLmluaXRFdmVudCh0eXBlLCB0cnVlLCB0cnVlKTtcclxuICAgIGVsLmRpc3BhdGNoRXZlbnQoZSk7XHJcbn1cclxuLy8gV2UgYXJlIGV4cG9ydGluZyB0aGUgdi1tb2RlbCBydW50aW1lIGRpcmVjdGx5IGFzIHZub2RlIGhvb2tzIHNvIHRoYXQgaXQgY2FuXHJcbi8vIGJlIHRyZWUtc2hha2VuIGluIGNhc2Ugdi1tb2RlbCBpcyBuZXZlciB1c2VkLlxyXG5jb25zdCB2TW9kZWxUZXh0ID0ge1xyXG4gICAgY3JlYXRlZChlbCwgeyBtb2RpZmllcnM6IHsgbGF6eSwgdHJpbSwgbnVtYmVyIH0gfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgY29uc3QgY2FzdFRvTnVtYmVyID0gbnVtYmVyIHx8ICh2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50eXBlID09PSAnbnVtYmVyJyk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgbGF6eSA/ICdjaGFuZ2UnIDogJ2lucHV0JywgZSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlLnRhcmdldC5jb21wb3NpbmcpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIGxldCBkb21WYWx1ZSA9IGVsLnZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodHJpbSkge1xyXG4gICAgICAgICAgICAgICAgZG9tVmFsdWUgPSBkb21WYWx1ZS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2FzdFRvTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICBkb21WYWx1ZSA9IHRvTnVtYmVyKGRvbVZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbC5fYXNzaWduKGRvbVZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodHJpbSkge1xyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZWwudmFsdWUgPSBlbC52YWx1ZS50cmltKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWxhenkpIHtcclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NvbXBvc2l0aW9uc3RhcnQnLCBvbkNvbXBvc2l0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY29tcG9zaXRpb25lbmQnLCBvbkNvbXBvc2l0aW9uRW5kKTtcclxuICAgICAgICAgICAgLy8gU2FmYXJpIDwgMTAuMiAmIFVJV2ViVmlldyBkb2Vzbid0IGZpcmUgY29tcG9zaXRpb25lbmQgd2hlblxyXG4gICAgICAgICAgICAvLyBzd2l0Y2hpbmcgZm9jdXMgYmVmb3JlIGNvbmZpcm1pbmcgY29tcG9zaXRpb24gY2hvaWNlXHJcbiAgICAgICAgICAgIC8vIHRoaXMgYWxzbyBmaXhlcyB0aGUgaXNzdWUgd2hlcmUgc29tZSBicm93c2VycyBlLmcuIGlPUyBDaHJvbWVcclxuICAgICAgICAgICAgLy8gZmlyZXMgXCJjaGFuZ2VcIiBpbnN0ZWFkIG9mIFwiaW5wdXRcIiBvbiBhdXRvY29tcGxldGUuXHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCBvbkNvbXBvc2l0aW9uRW5kKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gc2V0IHZhbHVlIG9uIG1vdW50ZWQgc28gaXQncyBhZnRlciBtaW4vbWF4IGZvciB0eXBlPVwicmFuZ2VcIlxyXG4gICAgbW91bnRlZChlbCwgeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgZWwudmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgIH0sXHJcbiAgICBiZWZvcmVVcGRhdGUoZWwsIHsgdmFsdWUsIG1vZGlmaWVyczogeyBsYXp5LCB0cmltLCBudW1iZXIgfSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICAvLyBhdm9pZCBjbGVhcmluZyB1bnJlc29sdmVkIHRleHQuICMyMzAyXHJcbiAgICAgICAgaWYgKGVsLmNvbXBvc2luZylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlbCkge1xyXG4gICAgICAgICAgICBpZiAobGF6eSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0cmltICYmIGVsLnZhbHVlLnRyaW0oKSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKG51bWJlciB8fCBlbC50eXBlID09PSAnbnVtYmVyJykgJiYgdG9OdW1iZXIoZWwudmFsdWUpID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICAgICAgaWYgKGVsLnZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICBlbC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3Qgdk1vZGVsQ2hlY2tib3ggPSB7XHJcbiAgICAvLyAjNDA5NiBhcnJheSBjaGVja2JveGVzIG5lZWQgdG8gYmUgZGVlcCB0cmF2ZXJzZWRcclxuICAgIGRlZXA6IHRydWUsXHJcbiAgICBjcmVhdGVkKGVsLCBfLCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gZWwuX21vZGVsVmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IGdldFZhbHVlKGVsKTtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9IGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbiA9IGVsLl9hc3NpZ247XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG1vZGVsVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGxvb3NlSW5kZXhPZihtb2RlbFZhbHVlLCBlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSBpbmRleCAhPT0gLTE7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCAmJiAhZm91bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhc3NpZ24obW9kZWxWYWx1ZS5jb25jYXQoZWxlbWVudFZhbHVlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghY2hlY2tlZCAmJiBmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm1vZGVsVmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduKGZpbHRlcmVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1NldChtb2RlbFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkID0gbmV3IFNldChtb2RlbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkLmFkZChlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkLmRlbGV0ZShlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXNzaWduKGNsb25lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhc3NpZ24oZ2V0Q2hlY2tib3hWYWx1ZShlbCwgY2hlY2tlZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgLy8gc2V0IGluaXRpYWwgY2hlY2tlZCBvbiBtb3VudCB0byB3YWl0IGZvciB0cnVlLXZhbHVlL2ZhbHNlLXZhbHVlXHJcbiAgICBtb3VudGVkOiBzZXRDaGVja2VkLFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBzZXRDaGVja2VkKGVsLCBiaW5kaW5nLCB2bm9kZSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNldENoZWNrZWQoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHZub2RlKSB7XHJcbiAgICBlbC5fbW9kZWxWYWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpID4gLTE7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NldCh2YWx1ZSkpIHtcclxuICAgICAgICBlbC5jaGVja2VkID0gdmFsdWUuaGFzKHZub2RlLnByb3BzLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZhbHVlICE9PSBvbGRWYWx1ZSkge1xyXG4gICAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUVxdWFsKHZhbHVlLCBnZXRDaGVja2JveFZhbHVlKGVsLCB0cnVlKSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3Qgdk1vZGVsUmFkaW8gPSB7XHJcbiAgICBjcmVhdGVkKGVsLCB7IHZhbHVlIH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlRXF1YWwodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKTtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgZWwuX2Fzc2lnbihnZXRWYWx1ZShlbCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgeyB2YWx1ZSwgb2xkVmFsdWUgfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSBvbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICBlbC5jaGVja2VkID0gbG9vc2VFcXVhbCh2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3Qgdk1vZGVsU2VsZWN0ID0ge1xyXG4gICAgLy8gPHNlbGVjdCBtdWx0aXBsZT4gdmFsdWUgbmVlZCB0byBiZSBkZWVwIHRyYXZlcnNlZFxyXG4gICAgZGVlcDogdHJ1ZSxcclxuICAgIGNyZWF0ZWQoZWwsIHsgdmFsdWUsIG1vZGlmaWVyczogeyBudW1iZXIgfSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGNvbnN0IGlzU2V0TW9kZWwgPSBpc1NldCh2YWx1ZSk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyXHJcbiAgICAgICAgICAgICAgICAuY2FsbChlbC5vcHRpb25zLCAobykgPT4gby5zZWxlY3RlZClcclxuICAgICAgICAgICAgICAgIC5tYXAoKG8pID0+IG51bWJlciA/IHRvTnVtYmVyKGdldFZhbHVlKG8pKSA6IGdldFZhbHVlKG8pKTtcclxuICAgICAgICAgICAgZWwuX2Fzc2lnbihlbC5tdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgPyBpc1NldE1vZGVsXHJcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgU2V0KHNlbGVjdGVkVmFsKVxyXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRWYWxcclxuICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRWYWxbMF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgIH0sXHJcbiAgICAvLyBzZXQgdmFsdWUgaW4gbW91bnRlZCAmIHVwZGF0ZWQgYmVjYXVzZSA8c2VsZWN0PiByZWxpZXMgb24gaXRzIGNoaWxkcmVuXHJcbiAgICAvLyA8b3B0aW9uPnMuXHJcbiAgICBtb3VudGVkKGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBzZXRTZWxlY3RlZChlbCwgdmFsdWUpO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgX2JpbmRpbmcsIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZWQoZWwsIHsgdmFsdWUgfSkge1xyXG4gICAgICAgIHNldFNlbGVjdGVkKGVsLCB2YWx1ZSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNldFNlbGVjdGVkKGVsLCB2YWx1ZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xyXG4gICAgaWYgKGlzTXVsdGlwbGUgJiYgIWlzQXJyYXkodmFsdWUpICYmICFpc1NldCh2YWx1ZSkpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybihgPHNlbGVjdCBtdWx0aXBsZSB2LW1vZGVsPiBleHBlY3RzIGFuIEFycmF5IG9yIFNldCB2YWx1ZSBmb3IgaXRzIGJpbmRpbmcsIGAgK1xyXG4gICAgICAgICAgICAgICAgYGJ1dCBnb3QgJHtPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKX0uYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBlbC5vcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IGVsLm9wdGlvbnNbaV07XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBnZXRWYWx1ZShvcHRpb24pO1xyXG4gICAgICAgIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBvcHRpb25WYWx1ZSkgPiAtMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHZhbHVlLmhhcyhvcHRpb25WYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9wdGlvbiksIHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpXHJcbiAgICAgICAgICAgICAgICAgICAgZWwuc2VsZWN0ZWRJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzTXVsdGlwbGUgJiYgZWwuc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gLTE7XHJcbiAgICB9XHJcbn1cclxuLy8gcmV0cmlldmUgcmF3IHZhbHVlIHNldCB2aWEgOnZhbHVlIGJpbmRpbmdzXHJcbmZ1bmN0aW9uIGdldFZhbHVlKGVsKSB7XHJcbiAgICByZXR1cm4gJ192YWx1ZScgaW4gZWwgPyBlbC5fdmFsdWUgOiBlbC52YWx1ZTtcclxufVxyXG4vLyByZXRyaWV2ZSByYXcgdmFsdWUgZm9yIHRydWUtdmFsdWUgYW5kIGZhbHNlLXZhbHVlIHNldCB2aWEgOnRydWUtdmFsdWUgb3IgOmZhbHNlLXZhbHVlIGJpbmRpbmdzXHJcbmZ1bmN0aW9uIGdldENoZWNrYm94VmFsdWUoZWwsIGNoZWNrZWQpIHtcclxuICAgIGNvbnN0IGtleSA9IGNoZWNrZWQgPyAnX3RydWVWYWx1ZScgOiAnX2ZhbHNlVmFsdWUnO1xyXG4gICAgcmV0dXJuIGtleSBpbiBlbCA/IGVsW2tleV0gOiBjaGVja2VkO1xyXG59XHJcbmNvbnN0IHZNb2RlbER5bmFtaWMgPSB7XHJcbiAgICBjcmVhdGVkKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBudWxsLCAnY3JlYXRlZCcpO1xyXG4gICAgfSxcclxuICAgIG1vdW50ZWQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIG51bGwsICdtb3VudGVkJyk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSwgJ2JlZm9yZVVwZGF0ZScpO1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUpIHtcclxuICAgICAgICBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlLCAndXBkYXRlZCcpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlLCBob29rKSB7XHJcbiAgICBsZXQgbW9kZWxUb1VzZTtcclxuICAgIHN3aXRjaCAoZWwudGFnTmFtZSkge1xyXG4gICAgICAgIGNhc2UgJ1NFTEVDVCc6XHJcbiAgICAgICAgICAgIG1vZGVsVG9Vc2UgPSB2TW9kZWxTZWxlY3Q7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ1RFWFRBUkVBJzpcclxuICAgICAgICAgICAgbW9kZWxUb1VzZSA9IHZNb2RlbFRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHN3aXRjaCAodm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsVG9Vc2UgPSB2TW9kZWxDaGVja2JveDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3JhZGlvJzpcclxuICAgICAgICAgICAgICAgICAgICBtb2RlbFRvVXNlID0gdk1vZGVsUmFkaW87XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsVG9Vc2UgPSB2TW9kZWxUZXh0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBmbiA9IG1vZGVsVG9Vc2VbaG9va107XHJcbiAgICBmbiAmJiBmbihlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSk7XHJcbn1cclxuLy8gU1NSIHZub2RlIHRyYW5zZm9ybXMsIG9ubHkgdXNlZCB3aGVuIHVzZXIgaW5jbHVkZXMgY2xpZW50LW9yaWVudGVkIHJlbmRlclxyXG4vLyBmdW5jdGlvbiBpbiBTU1JcclxuZnVuY3Rpb24gaW5pdFZNb2RlbEZvclNTUigpIHtcclxuICAgIHZNb2RlbFRleHQuZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9KSA9PiAoeyB2YWx1ZSB9KTtcclxuICAgIHZNb2RlbFJhZGlvLmdldFNTUlByb3BzID0gKHsgdmFsdWUgfSwgdm5vZGUpID0+IHtcclxuICAgICAgICBpZiAodm5vZGUucHJvcHMgJiYgbG9vc2VFcXVhbCh2bm9kZS5wcm9wcy52YWx1ZSwgdmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGNoZWNrZWQ6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdk1vZGVsQ2hlY2tib3guZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9LCB2bm9kZSkgPT4ge1xyXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICBpZiAodm5vZGUucHJvcHMgJiYgbG9vc2VJbmRleE9mKHZhbHVlLCB2bm9kZS5wcm9wcy52YWx1ZSkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzU2V0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICBpZiAodm5vZGUucHJvcHMgJiYgdmFsdWUuaGFzKHZub2RlLnByb3BzLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGNoZWNrZWQ6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IHN5c3RlbU1vZGlmaWVycyA9IFsnY3RybCcsICdzaGlmdCcsICdhbHQnLCAnbWV0YSddO1xyXG5jb25zdCBtb2RpZmllckd1YXJkcyA9IHtcclxuICAgIHN0b3A6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSxcclxuICAgIHByZXZlbnQ6IGUgPT4gZS5wcmV2ZW50RGVmYXVsdCgpLFxyXG4gICAgc2VsZjogZSA9PiBlLnRhcmdldCAhPT0gZS5jdXJyZW50VGFyZ2V0LFxyXG4gICAgY3RybDogZSA9PiAhZS5jdHJsS2V5LFxyXG4gICAgc2hpZnQ6IGUgPT4gIWUuc2hpZnRLZXksXHJcbiAgICBhbHQ6IGUgPT4gIWUuYWx0S2V5LFxyXG4gICAgbWV0YTogZSA9PiAhZS5tZXRhS2V5LFxyXG4gICAgbGVmdDogZSA9PiAnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uICE9PSAwLFxyXG4gICAgbWlkZGxlOiBlID0+ICdidXR0b24nIGluIGUgJiYgZS5idXR0b24gIT09IDEsXHJcbiAgICByaWdodDogZSA9PiAnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uICE9PSAyLFxyXG4gICAgZXhhY3Q6IChlLCBtb2RpZmllcnMpID0+IHN5c3RlbU1vZGlmaWVycy5zb21lKG0gPT4gZVtgJHttfUtleWBdICYmICFtb2RpZmllcnMuaW5jbHVkZXMobSkpXHJcbn07XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3Qgd2l0aE1vZGlmaWVycyA9IChmbiwgbW9kaWZpZXJzKSA9PiB7XHJcbiAgICByZXR1cm4gKGV2ZW50LCAuLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgZ3VhcmQgPSBtb2RpZmllckd1YXJkc1ttb2RpZmllcnNbaV1dO1xyXG4gICAgICAgICAgICBpZiAoZ3VhcmQgJiYgZ3VhcmQoZXZlbnQsIG1vZGlmaWVycykpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmbihldmVudCwgLi4uYXJncyk7XHJcbiAgICB9O1xyXG59O1xyXG4vLyBLZXB0IGZvciAyLnggY29tcGF0LlxyXG4vLyBOb3RlOiBJRTExIGNvbXBhdCBmb3IgYHNwYWNlYmFyYCBhbmQgYGRlbGAgaXMgcmVtb3ZlZCBmb3Igbm93LlxyXG5jb25zdCBrZXlOYW1lcyA9IHtcclxuICAgIGVzYzogJ2VzY2FwZScsXHJcbiAgICBzcGFjZTogJyAnLFxyXG4gICAgdXA6ICdhcnJvdy11cCcsXHJcbiAgICBsZWZ0OiAnYXJyb3ctbGVmdCcsXHJcbiAgICByaWdodDogJ2Fycm93LXJpZ2h0JyxcclxuICAgIGRvd246ICdhcnJvdy1kb3duJyxcclxuICAgIGRlbGV0ZTogJ2JhY2tzcGFjZSdcclxufTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB3aXRoS2V5cyA9IChmbiwgbW9kaWZpZXJzKSA9PiB7XHJcbiAgICByZXR1cm4gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCEoJ2tleScgaW4gZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXZlbnRLZXkgPSBoeXBoZW5hdGUoZXZlbnQua2V5KTtcclxuICAgICAgICBpZiAobW9kaWZpZXJzLnNvbWUoayA9PiBrID09PSBldmVudEtleSB8fCBrZXlOYW1lc1trXSA9PT0gZXZlbnRLZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmbihldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufTtcblxuY29uc3QgdlNob3cgPSB7XHJcbiAgICBiZWZvcmVNb3VudChlbCwgeyB2YWx1ZSB9LCB7IHRyYW5zaXRpb24gfSkge1xyXG4gICAgICAgIGVsLl92b2QgPSBlbC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3BsYXk7XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb24gJiYgdmFsdWUpIHtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZXREaXNwbGF5KGVsLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1vdW50ZWQoZWwsIHsgdmFsdWUgfSwgeyB0cmFuc2l0aW9uIH0pIHtcclxuICAgICAgICBpZiAodHJhbnNpdGlvbiAmJiB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uLmVudGVyKGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgdXBkYXRlZChlbCwgeyB2YWx1ZSwgb2xkVmFsdWUgfSwgeyB0cmFuc2l0aW9uIH0pIHtcclxuICAgICAgICBpZiAoIXZhbHVlID09PSAhb2xkVmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBpZiAodHJhbnNpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgICAgICAgICAgc2V0RGlzcGxheShlbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmVudGVyKGVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24ubGVhdmUoZWwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXREaXNwbGF5KGVsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc2V0RGlzcGxheShlbCwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBiZWZvcmVVbm1vdW50KGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBzZXREaXNwbGF5KGVsLCB2YWx1ZSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNldERpc3BsYXkoZWwsIHZhbHVlKSB7XHJcbiAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBlbC5fdm9kIDogJ25vbmUnO1xyXG59XHJcbi8vIFNTUiB2bm9kZSB0cmFuc2Zvcm1zLCBvbmx5IHVzZWQgd2hlbiB1c2VyIGluY2x1ZGVzIGNsaWVudC1vcmllbnRlZCByZW5kZXJcclxuLy8gZnVuY3Rpb24gaW4gU1NSXHJcbmZ1bmN0aW9uIGluaXRWU2hvd0ZvclNTUigpIHtcclxuICAgIHZTaG93LmdldFNTUlByb3BzID0gKHsgdmFsdWUgfSkgPT4ge1xyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgc3R5bGU6IHsgZGlzcGxheTogJ25vbmUnIH0gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IHJlbmRlcmVyT3B0aW9ucyA9IGV4dGVuZCh7IHBhdGNoUHJvcCB9LCBub2RlT3BzKTtcclxuLy8gbGF6eSBjcmVhdGUgdGhlIHJlbmRlcmVyIC0gdGhpcyBtYWtlcyBjb3JlIHJlbmRlcmVyIGxvZ2ljIHRyZWUtc2hha2FibGVcclxuLy8gaW4gY2FzZSB0aGUgdXNlciBvbmx5IGltcG9ydHMgcmVhY3Rpdml0eSB1dGlsaXRpZXMgZnJvbSBWdWUuXHJcbmxldCByZW5kZXJlcjtcclxubGV0IGVuYWJsZWRIeWRyYXRpb24gPSBmYWxzZTtcclxuZnVuY3Rpb24gZW5zdXJlUmVuZGVyZXIoKSB7XHJcbiAgICByZXR1cm4gKHJlbmRlcmVyIHx8XHJcbiAgICAgICAgKHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKSkpO1xyXG59XHJcbmZ1bmN0aW9uIGVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyKCkge1xyXG4gICAgcmVuZGVyZXIgPSBlbmFibGVkSHlkcmF0aW9uXHJcbiAgICAgICAgPyByZW5kZXJlclxyXG4gICAgICAgIDogY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKTtcclxuICAgIGVuYWJsZWRIeWRyYXRpb24gPSB0cnVlO1xyXG4gICAgcmV0dXJuIHJlbmRlcmVyO1xyXG59XHJcbi8vIHVzZSBleHBsaWNpdCB0eXBlIGNhc3RzIGhlcmUgdG8gYXZvaWQgaW1wb3J0KCkgY2FsbHMgaW4gcm9sbGVkLXVwIGQudHNcclxuY29uc3QgcmVuZGVyID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBlbnN1cmVSZW5kZXJlcigpLnJlbmRlciguLi5hcmdzKTtcclxufSk7XHJcbmNvbnN0IGh5ZHJhdGUgPSAoKC4uLmFyZ3MpID0+IHtcclxuICAgIGVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyKCkuaHlkcmF0ZSguLi5hcmdzKTtcclxufSk7XHJcbmNvbnN0IGNyZWF0ZUFwcCA9ICgoLi4uYXJncykgPT4ge1xyXG4gICAgY29uc3QgYXBwID0gZW5zdXJlUmVuZGVyZXIoKS5jcmVhdGVBcHAoLi4uYXJncyk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaW5qZWN0TmF0aXZlVGFnQ2hlY2soYXBwKTtcclxuICAgICAgICBpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayhhcHApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtb3VudCB9ID0gYXBwO1xyXG4gICAgYXBwLm1vdW50ID0gKGNvbnRhaW5lck9yU2VsZWN0b3IpID0+IHtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBub3JtYWxpemVDb250YWluZXIoY29udGFpbmVyT3JTZWxlY3Rvcik7XHJcbiAgICAgICAgaWYgKCFjb250YWluZXIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBhcHAuX2NvbXBvbmVudDtcclxuICAgICAgICBpZiAoIWlzRnVuY3Rpb24oY29tcG9uZW50KSAmJiAhY29tcG9uZW50LnJlbmRlciAmJiAhY29tcG9uZW50LnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIC8vIF9fVU5TQUZFX19cclxuICAgICAgICAgICAgLy8gUmVhc29uOiBwb3RlbnRpYWwgZXhlY3V0aW9uIG9mIEpTIGV4cHJlc3Npb25zIGluIGluLURPTSB0ZW1wbGF0ZS5cclxuICAgICAgICAgICAgLy8gVGhlIHVzZXIgbXVzdCBtYWtlIHN1cmUgdGhlIGluLURPTSB0ZW1wbGF0ZSBpcyB0cnVzdGVkLiBJZiBpdCdzXHJcbiAgICAgICAgICAgIC8vIHJlbmRlcmVkIGJ5IHRoZSBzZXJ2ZXIsIHRoZSB0ZW1wbGF0ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHVzZXIgZGF0YS5cclxuICAgICAgICAgICAgY29tcG9uZW50LnRlbXBsYXRlID0gY29udGFpbmVyLmlubmVySFRNTDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2xlYXIgY29udGVudCBiZWZvcmUgbW91bnRpbmdcclxuICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgY29uc3QgcHJveHkgPSBtb3VudChjb250YWluZXIsIGZhbHNlLCBjb250YWluZXIgaW5zdGFuY2VvZiBTVkdFbGVtZW50KTtcclxuICAgICAgICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQXR0cmlidXRlKCd2LWNsb2FrJyk7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2RhdGEtdi1hcHAnLCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcm94eTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gYXBwO1xyXG59KTtcclxuY29uc3QgY3JlYXRlU1NSQXBwID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBjb25zdCBhcHAgPSBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5hcmdzKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBpbmplY3ROYXRpdmVUYWdDaGVjayhhcHApO1xyXG4gICAgICAgIGluamVjdENvbXBpbGVyT3B0aW9uc0NoZWNrKGFwcCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1vdW50IH0gPSBhcHA7XHJcbiAgICBhcHAubW91bnQgPSAoY29udGFpbmVyT3JTZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG5vcm1hbGl6ZUNvbnRhaW5lcihjb250YWluZXJPclNlbGVjdG9yKTtcclxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb3VudChjb250YWluZXIsIHRydWUsIGNvbnRhaW5lciBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gYXBwO1xyXG59KTtcclxuZnVuY3Rpb24gaW5qZWN0TmF0aXZlVGFnQ2hlY2soYXBwKSB7XHJcbiAgICAvLyBJbmplY3QgYGlzTmF0aXZlVGFnYFxyXG4gICAgLy8gdGhpcyBpcyB1c2VkIGZvciBjb21wb25lbnQgbmFtZSB2YWxpZGF0aW9uIChkZXYgb25seSlcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLCAnaXNOYXRpdmVUYWcnLCB7XHJcbiAgICAgICAgdmFsdWU6ICh0YWcpID0+IGlzSFRNTFRhZyh0YWcpIHx8IGlzU1ZHVGFnKHRhZyksXHJcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXHJcbiAgICB9KTtcclxufVxyXG4vLyBkZXYgb25seVxyXG5mdW5jdGlvbiBpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayhhcHApIHtcclxuICAgIGlmIChpc1J1bnRpbWVPbmx5KCkpIHtcclxuICAgICAgICBjb25zdCBpc0N1c3RvbUVsZW1lbnQgPSBhcHAuY29uZmlnLmlzQ3VzdG9tRWxlbWVudDtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwLmNvbmZpZywgJ2lzQ3VzdG9tRWxlbWVudCcsIHtcclxuICAgICAgICAgICAgZ2V0KCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQ3VzdG9tRWxlbWVudDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0KCkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgVGhlIFxcYGlzQ3VzdG9tRWxlbWVudFxcYCBjb25maWcgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFVzZSBgICtcclxuICAgICAgICAgICAgICAgICAgICBgXFxgY29tcGlsZXJPcHRpb25zLmlzQ3VzdG9tRWxlbWVudFxcYCBpbnN0ZWFkLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gYXBwLmNvbmZpZy5jb21waWxlck9wdGlvbnM7XHJcbiAgICAgICAgY29uc3QgbXNnID0gYFRoZSBcXGBjb21waWxlck9wdGlvbnNcXGAgY29uZmlnIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIGAgK1xyXG4gICAgICAgICAgICBgYSBidWlsZCBvZiBWdWUuanMgdGhhdCBpbmNsdWRlcyB0aGUgcnVudGltZSBjb21waWxlciAoYWthIFwiZnVsbCBidWlsZFwiKS4gYCArXHJcbiAgICAgICAgICAgIGBTaW5jZSB5b3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQsIFxcYGNvbXBpbGVyT3B0aW9uc1xcYCBgICtcclxuICAgICAgICAgICAgYG11c3QgYmUgcGFzc2VkIHRvIFxcYEB2dWUvY29tcGlsZXItZG9tXFxgIGluIHRoZSBidWlsZCBzZXR1cCBpbnN0ZWFkLlxcbmAgK1xyXG4gICAgICAgICAgICBgLSBGb3IgdnVlLWxvYWRlcjogcGFzcyBpdCB2aWEgdnVlLWxvYWRlcidzIFxcYGNvbXBpbGVyT3B0aW9uc1xcYCBsb2FkZXIgb3B0aW9uLlxcbmAgK1xyXG4gICAgICAgICAgICBgLSBGb3IgdnVlLWNsaTogc2VlIGh0dHBzOi8vY2xpLnZ1ZWpzLm9yZy9ndWlkZS93ZWJwYWNrLmh0bWwjbW9kaWZ5aW5nLW9wdGlvbnMtb2YtYS1sb2FkZXJcXG5gICtcclxuICAgICAgICAgICAgYC0gRm9yIHZpdGU6IHBhc3MgaXQgdmlhIEB2aXRlanMvcGx1Z2luLXZ1ZSBvcHRpb25zLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZpdGVqcy92aXRlL3RyZWUvbWFpbi9wYWNrYWdlcy9wbHVnaW4tdnVlI2V4YW1wbGUtZm9yLXBhc3Npbmctb3B0aW9ucy10by12dWVjb21waWxlci1kb21gO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLCAnY29tcGlsZXJPcHRpb25zJywge1xyXG4gICAgICAgICAgICBnZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKG1zZyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJPcHRpb25zO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKG1zZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVDb250YWluZXIoY29udGFpbmVyKSB7XHJcbiAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoY29udGFpbmVyKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFyZXMpIHtcclxuICAgICAgICAgICAgd2FybihgRmFpbGVkIHRvIG1vdW50IGFwcDogbW91bnQgdGFyZ2V0IHNlbGVjdG9yIFwiJHtjb250YWluZXJ9XCIgcmV0dXJuZWQgbnVsbC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICB3aW5kb3cuU2hhZG93Um9vdCAmJlxyXG4gICAgICAgIGNvbnRhaW5lciBpbnN0YW5jZW9mIHdpbmRvdy5TaGFkb3dSb290ICYmXHJcbiAgICAgICAgY29udGFpbmVyLm1vZGUgPT09ICdjbG9zZWQnKSB7XHJcbiAgICAgICAgd2FybihgbW91bnRpbmcgb24gYSBTaGFkb3dSb290IHdpdGggXFxge21vZGU6IFwiY2xvc2VkXCJ9XFxgIG1heSBsZWFkIHRvIHVucHJlZGljdGFibGUgYnVnc2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcclxufVxyXG5sZXQgc3NyRGlyZWN0aXZlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuLyoqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3QgaW5pdERpcmVjdGl2ZXNGb3JTU1IgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFzc3JEaXJlY3RpdmVJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICBzc3JEaXJlY3RpdmVJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGluaXRWTW9kZWxGb3JTU1IoKTtcclxuICAgICAgICAgICAgaW5pdFZTaG93Rm9yU1NSKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgO1xuXG5leHBvcnQgeyBUcmFuc2l0aW9uLCBUcmFuc2l0aW9uR3JvdXAsIFZ1ZUVsZW1lbnQsIGNyZWF0ZUFwcCwgY3JlYXRlU1NSQXBwLCBkZWZpbmVDdXN0b21FbGVtZW50LCBkZWZpbmVTU1JDdXN0b21FbGVtZW50LCBoeWRyYXRlLCBpbml0RGlyZWN0aXZlc0ZvclNTUiwgcmVuZGVyLCB1c2VDc3NNb2R1bGUsIHVzZUNzc1ZhcnMsIHZNb2RlbENoZWNrYm94LCB2TW9kZWxEeW5hbWljLCB2TW9kZWxSYWRpbywgdk1vZGVsU2VsZWN0LCB2TW9kZWxUZXh0LCB2U2hvdywgd2l0aEtleXMsIHdpdGhNb2RpZmllcnMgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vue/shared/dist/shared.esm-bundler.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/@vue/shared/dist/shared.esm-bundler.js ***!
|
||
\*************************************************************/
|
||
/*! exports provided: EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isNoUnitNumericStyleProp, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EMPTY_ARR\", function() { return EMPTY_ARR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EMPTY_OBJ\", function() { return EMPTY_OBJ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NO\", function() { return NO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NOOP\", function() { return NOOP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PatchFlagNames\", function() { return PatchFlagNames; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"capitalize\", function() { return capitalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"def\", function() { return def; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeHtml\", function() { return escapeHtml; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeHtmlComment\", function() { return escapeHtmlComment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateCodeFrame\", function() { return generateCodeFrame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getGlobalThis\", function() { return getGlobalThis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasChanged\", function() { return hasChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwn\", function() { return hasOwn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hyphenate\", function() { return hyphenate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"includeBooleanAttr\", function() { return includeBooleanAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invokeArrayFns\", function() { return invokeArrayFns; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBooleanAttr\", function() { return isBooleanAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBuiltInDirective\", function() { return isBuiltInDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isGloballyWhitelisted\", function() { return isGloballyWhitelisted; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHTMLTag\", function() { return isHTMLTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIntegerKey\", function() { return isIntegerKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isKnownHtmlAttr\", function() { return isKnownHtmlAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isKnownSvgAttr\", function() { return isKnownSvgAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMap\", function() { return isMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isModelListener\", function() { return isModelListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNoUnitNumericStyleProp\", function() { return isNoUnitNumericStyleProp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isOn\", function() { return isOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPlainObject\", function() { return isPlainObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPromise\", function() { return isPromise; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isReservedProp\", function() { return isReservedProp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSSRSafeAttrName\", function() { return isSSRSafeAttrName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSVGTag\", function() { return isSVGTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSet\", function() { return isSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSpecialBooleanAttr\", function() { return isSpecialBooleanAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSymbol\", function() { return isSymbol; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVoidTag\", function() { return isVoidTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"looseEqual\", function() { return looseEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"looseIndexOf\", function() { return looseIndexOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeMap\", function() { return makeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeClass\", function() { return normalizeClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeProps\", function() { return normalizeProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeStyle\", function() { return normalizeStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"objectToString\", function() { return objectToString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseStringStyle\", function() { return parseStringStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"propsToAttrMap\", function() { return propsToAttrMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"remove\", function() { return remove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slotFlagsText\", function() { return slotFlagsText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringifyStyle\", function() { return stringifyStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDisplayString\", function() { return toDisplayString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toHandlerKey\", function() { return toHandlerKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toRawType\", function() { return toRawType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toTypeString\", function() { return toTypeString; });\n/**\r\n * Make a map and return a function for checking if a key\r\n * is in that map.\r\n * IMPORTANT: all calls of this function must be prefixed with\r\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\r\n * So that rollup can tree-shake them if necessary.\r\n */\r\nfunction makeMap(str, expectsLowerCase) {\r\n const map = Object.create(null);\r\n const list = str.split(',');\r\n for (let i = 0; i < list.length; i++) {\r\n map[list[i]] = true;\r\n }\r\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\r\n}\n\n/**\r\n * dev only flag -> name mapping\r\n */\r\nconst PatchFlagNames = {\r\n [1 /* TEXT */]: `TEXT`,\r\n [2 /* CLASS */]: `CLASS`,\r\n [4 /* STYLE */]: `STYLE`,\r\n [8 /* PROPS */]: `PROPS`,\r\n [16 /* FULL_PROPS */]: `FULL_PROPS`,\r\n [32 /* HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\r\n [64 /* STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\r\n [128 /* KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\r\n [256 /* UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\r\n [512 /* NEED_PATCH */]: `NEED_PATCH`,\r\n [1024 /* DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\r\n [2048 /* DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\r\n [-1 /* HOISTED */]: `HOISTED`,\r\n [-2 /* BAIL */]: `BAIL`\r\n};\n\n/**\r\n * Dev only\r\n */\r\nconst slotFlagsText = {\r\n [1 /* STABLE */]: 'STABLE',\r\n [2 /* DYNAMIC */]: 'DYNAMIC',\r\n [3 /* FORWARDED */]: 'FORWARDED'\r\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\r\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\r\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\r\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n // Split the content into individual lines but capture the newline sequence\r\n // that separated each line. This is important because the actual sequence is\r\n // needed to properly take into account the full line length for offset\r\n // comparison\r\n let lines = source.split(/(\\r?\\n)/);\r\n // Separate the lines and newline sequences into separate arrays for easier referencing\r\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\r\n lines = lines.filter((_, idx) => idx % 2 === 0);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count +=\r\n lines[i].length +\r\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\r\n if (count >= start) {\r\n for (let j = i - range; j <= i + range || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - (lineLength + newLineSeqLength));\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + newLineSeqLength;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * On the client we only need to offer special cases for boolean attributes that\r\n * have different names from their corresponding dom properties:\r\n * - itemscope -> N/A\r\n * - allowfullscreen -> allowFullscreen\r\n * - formnovalidate -> formNoValidate\r\n * - ismap -> isMap\r\n * - nomodule -> noModule\r\n * - novalidate -> noValidate\r\n * - readonly -> readOnly\r\n */\r\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\r\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\r\n/**\r\n * The full list is needed during SSR to produce the correct initial markup.\r\n */\r\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\r\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\r\n `loop,open,required,reversed,scoped,seamless,` +\r\n `checked,muted,multiple,selected`);\r\n/**\r\n * Boolean attributes should be included if the value is truthy or ''.\r\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\r\n */\r\nfunction includeBooleanAttr(value) {\r\n return !!value || value === '';\r\n}\r\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\r\nconst attrValidationCache = {};\r\nfunction isSSRSafeAttrName(name) {\r\n if (attrValidationCache.hasOwnProperty(name)) {\r\n return attrValidationCache[name];\r\n }\r\n const isUnsafe = unsafeAttrCharRE.test(name);\r\n if (isUnsafe) {\r\n console.error(`unsafe attribute name: ${name}`);\r\n }\r\n return (attrValidationCache[name] = !isUnsafe);\r\n}\r\nconst propsToAttrMap = {\r\n acceptCharset: 'accept-charset',\r\n className: 'class',\r\n htmlFor: 'for',\r\n httpEquiv: 'http-equiv'\r\n};\r\n/**\r\n * CSS properties that accept plain numbers\r\n */\r\nconst isNoUnitNumericStyleProp = /*#__PURE__*/ makeMap(`animation-iteration-count,border-image-outset,border-image-slice,` +\r\n `border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,` +\r\n `columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,` +\r\n `grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,` +\r\n `grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,` +\r\n `line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,` +\r\n // SVG\r\n `fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,` +\r\n `stroke-miterlimit,stroke-opacity,stroke-width`);\r\n/**\r\n * Known attributes, this is used for stringification of runtime static nodes\r\n * so that we don't stringify bindings that cannot be set from HTML.\r\n * Don't also forget to allow `data-*` and `aria-*`!\r\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\r\n */\r\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\r\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\r\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\r\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\r\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\r\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\r\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\r\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\r\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\r\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\r\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\r\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\r\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\r\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\r\n `value,width,wrap`);\r\n/**\r\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\r\n */\r\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\r\n `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\r\n `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\r\n `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\r\n `color-interpolation-filters,color-profile,color-rendering,` +\r\n `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\r\n `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\r\n `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\r\n `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\r\n `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\r\n `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\r\n `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\r\n `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\r\n `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\r\n `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\r\n `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\r\n `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\r\n `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\r\n `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\r\n `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\r\n `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\r\n `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\r\n `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\r\n `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\r\n `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\r\n `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\r\n `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\r\n `strikethrough-position,strikethrough-thickness,string,stroke,` +\r\n `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\r\n `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\r\n `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\r\n `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\r\n `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\r\n `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\r\n `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\r\n `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\r\n `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\r\n `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\r\n `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nfunction normalizeStyle(value) {\r\n if (isArray(value)) {\r\n const res = {};\r\n for (let i = 0; i < value.length; i++) {\r\n const item = value[i];\r\n const normalized = isString(item)\r\n ? parseStringStyle(item)\r\n : normalizeStyle(item);\r\n if (normalized) {\r\n for (const key in normalized) {\r\n res[key] = normalized[key];\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n else if (isString(value)) {\r\n return value;\r\n }\r\n else if (isObject(value)) {\r\n return value;\r\n }\r\n}\r\nconst listDelimiterRE = /;(?![^(]*\\))/g;\r\nconst propertyDelimiterRE = /:(.+)/;\r\nfunction parseStringStyle(cssText) {\r\n const ret = {};\r\n cssText.split(listDelimiterRE).forEach(item => {\r\n if (item) {\r\n const tmp = item.split(propertyDelimiterRE);\r\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\r\n }\r\n });\r\n return ret;\r\n}\r\nfunction stringifyStyle(styles) {\r\n let ret = '';\r\n if (!styles || isString(styles)) {\r\n return ret;\r\n }\r\n for (const key in styles) {\r\n const value = styles[key];\r\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\r\n if (isString(value) ||\r\n (typeof value === 'number' && isNoUnitNumericStyleProp(normalizedKey))) {\r\n // only render valid values\r\n ret += `${normalizedKey}:${value};`;\r\n }\r\n }\r\n return ret;\r\n}\r\nfunction normalizeClass(value) {\r\n let res = '';\r\n if (isString(value)) {\r\n res = value;\r\n }\r\n else if (isArray(value)) {\r\n for (let i = 0; i < value.length; i++) {\r\n const normalized = normalizeClass(value[i]);\r\n if (normalized) {\r\n res += normalized + ' ';\r\n }\r\n }\r\n }\r\n else if (isObject(value)) {\r\n for (const name in value) {\r\n if (value[name]) {\r\n res += name + ' ';\r\n }\r\n }\r\n }\r\n return res.trim();\r\n}\r\nfunction normalizeProps(props) {\r\n if (!props)\r\n return null;\r\n let { class: klass, style } = props;\r\n if (klass && !isString(klass)) {\r\n props.class = normalizeClass(klass);\r\n }\r\n if (style) {\r\n props.style = normalizeStyle(style);\r\n }\r\n return props;\r\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\r\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\r\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\r\n 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\r\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\r\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\r\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\r\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\r\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\r\n 'option,output,progress,select,textarea,details,dialog,menu,' +\r\n 'summary,template,blockquote,iframe,tfoot';\r\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\r\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\r\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\r\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\r\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\r\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\r\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\r\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\r\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\r\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\r\n 'text,textPath,title,tspan,unknown,use,view';\r\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\r\n/**\r\n * Compiler only.\r\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\r\n */\r\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\r\n/**\r\n * Compiler only.\r\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\r\n */\r\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\r\n/**\r\n * Compiler only.\r\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\r\n */\r\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\nconst escapeRE = /[\"'&<>]/;\r\nfunction escapeHtml(string) {\r\n const str = '' + string;\r\n const match = escapeRE.exec(str);\r\n if (!match) {\r\n return str;\r\n }\r\n let html = '';\r\n let escaped;\r\n let index;\r\n let lastIndex = 0;\r\n for (index = match.index; index < str.length; index++) {\r\n switch (str.charCodeAt(index)) {\r\n case 34: // \"\r\n escaped = '"';\r\n break;\r\n case 38: // &\r\n escaped = '&';\r\n break;\r\n case 39: // '\r\n escaped = ''';\r\n break;\r\n case 60: // <\r\n escaped = '<';\r\n break;\r\n case 62: // >\r\n escaped = '>';\r\n break;\r\n default:\r\n continue;\r\n }\r\n if (lastIndex !== index) {\r\n html += str.slice(lastIndex, index);\r\n }\r\n lastIndex = index + 1;\r\n html += escaped;\r\n }\r\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\r\n}\r\n// https://www.w3.org/TR/html52/syntax.html#comments\r\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\r\nfunction escapeHtmlComment(src) {\r\n return src.replace(commentStripRE, '');\r\n}\n\nfunction looseCompareArrays(a, b) {\r\n if (a.length !== b.length)\r\n return false;\r\n let equal = true;\r\n for (let i = 0; equal && i < a.length; i++) {\r\n equal = looseEqual(a[i], b[i]);\r\n }\r\n return equal;\r\n}\r\nfunction looseEqual(a, b) {\r\n if (a === b)\r\n return true;\r\n let aValidType = isDate(a);\r\n let bValidType = isDate(b);\r\n if (aValidType || bValidType) {\r\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\r\n }\r\n aValidType = isArray(a);\r\n bValidType = isArray(b);\r\n if (aValidType || bValidType) {\r\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\r\n }\r\n aValidType = isObject(a);\r\n bValidType = isObject(b);\r\n if (aValidType || bValidType) {\r\n /* istanbul ignore if: this if will probably never be called */\r\n if (!aValidType || !bValidType) {\r\n return false;\r\n }\r\n const aKeysCount = Object.keys(a).length;\r\n const bKeysCount = Object.keys(b).length;\r\n if (aKeysCount !== bKeysCount) {\r\n return false;\r\n }\r\n for (const key in a) {\r\n const aHasKey = a.hasOwnProperty(key);\r\n const bHasKey = b.hasOwnProperty(key);\r\n if ((aHasKey && !bHasKey) ||\r\n (!aHasKey && bHasKey) ||\r\n !looseEqual(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n }\r\n return String(a) === String(b);\r\n}\r\nfunction looseIndexOf(arr, val) {\r\n return arr.findIndex(item => looseEqual(item, val));\r\n}\n\n/**\r\n * For converting {{ interpolation }} values to displayed strings.\r\n * @private\r\n */\r\nconst toDisplayString = (val) => {\r\n return isString(val)\r\n ? val\r\n : val == null\r\n ? ''\r\n : isArray(val) ||\r\n (isObject(val) &&\r\n (val.toString === objectToString || !isFunction(val.toString)))\r\n ? JSON.stringify(val, replacer, 2)\r\n : String(val);\r\n};\r\nconst replacer = (_key, val) => {\r\n // can't use isRef here since @vue/shared has no deps\r\n if (val && val.__v_isRef) {\r\n return replacer(_key, val.value);\r\n }\r\n else if (isMap(val)) {\r\n return {\r\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\r\n entries[`${key} =>`] = val;\r\n return entries;\r\n }, {})\r\n };\r\n }\r\n else if (isSet(val)) {\r\n return {\r\n [`Set(${val.size})`]: [...val.values()]\r\n };\r\n }\r\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\r\n return String(val);\r\n }\r\n return val;\r\n};\n\nconst EMPTY_OBJ = ( true)\r\n ? Object.freeze({})\r\n : undefined;\r\nconst EMPTY_ARR = ( true) ? Object.freeze([]) : undefined;\r\nconst NOOP = () => { };\r\n/**\r\n * Always return false.\r\n */\r\nconst NO = () => false;\r\nconst onRE = /^on[^a-z]/;\r\nconst isOn = (key) => onRE.test(key);\r\nconst isModelListener = (key) => key.startsWith('onUpdate:');\r\nconst extend = Object.assign;\r\nconst remove = (arr, el) => {\r\n const i = arr.indexOf(el);\r\n if (i > -1) {\r\n arr.splice(i, 1);\r\n }\r\n};\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\r\nconst isArray = Array.isArray;\r\nconst isMap = (val) => toTypeString(val) === '[object Map]';\r\nconst isSet = (val) => toTypeString(val) === '[object Set]';\r\nconst isDate = (val) => val instanceof Date;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst toRawType = (value) => {\r\n // extract \"RawType\" from strings like \"[object RawType]\"\r\n return toTypeString(value).slice(8, -1);\r\n};\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\nconst isIntegerKey = (key) => isString(key) &&\r\n key !== 'NaN' &&\r\n key[0] !== '-' &&\r\n '' + parseInt(key, 10) === key;\r\nconst isReservedProp = /*#__PURE__*/ makeMap(\r\n// the leading comma is intentional so empty string \"\" is also included\r\n',key,ref,ref_for,ref_key,' +\r\n 'onVnodeBeforeMount,onVnodeMounted,' +\r\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\r\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\r\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\r\nconst cacheStringFunction = (fn) => {\r\n const cache = Object.create(null);\r\n return ((str) => {\r\n const hit = cache[str];\r\n return hit || (cache[str] = fn(str));\r\n });\r\n};\r\nconst camelizeRE = /-(\\w)/g;\r\n/**\r\n * @private\r\n */\r\nconst camelize = cacheStringFunction((str) => {\r\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\r\n});\r\nconst hyphenateRE = /\\B([A-Z])/g;\r\n/**\r\n * @private\r\n */\r\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\r\n/**\r\n * @private\r\n */\r\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\r\n/**\r\n * @private\r\n */\r\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\r\n// compare whether a value has changed, accounting for NaN.\r\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\r\nconst invokeArrayFns = (fns, arg) => {\r\n for (let i = 0; i < fns.length; i++) {\r\n fns[i](arg);\r\n }\r\n};\r\nconst def = (obj, key, value) => {\r\n Object.defineProperty(obj, key, {\r\n configurable: true,\r\n enumerable: false,\r\n value\r\n });\r\n};\r\nconst toNumber = (val) => {\r\n const n = parseFloat(val);\r\n return isNaN(n) ? val : n;\r\n};\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\n\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9zaGFyZWQvZGlzdC9zaGFyZWQuZXNtLWJ1bmRsZXIuanM/OWZmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsK0JBQStCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixLQUFLLEVBQUUsaURBQWlELEtBQUssU0FBUztBQUNsRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsZUFBZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsS0FBSztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGNBQWMsR0FBRyxPQUFPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHNCQUFzQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixvQkFBb0I7QUFDakQ7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsU0FBUztBQUM3QiwyQkFBMkIsSUFBSTtBQUMvQjtBQUNBLGFBQWEsSUFBSTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixLQUFxQztBQUN4RCxzQkFBc0I7QUFDdEIsTUFBTSxTQUFFO0FBQ1IsbUJBQW1CLEtBQXFDLHdCQUF3QixTQUFFO0FBQ2xGLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCxnQkFBZ0I7QUFDN0U7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7O0FBRXF5QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AdnVlL3NoYXJlZC9kaXN0L3NoYXJlZC5lc20tYnVuZGxlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcclxuICogaXMgaW4gdGhhdCBtYXAuXHJcbiAqIElNUE9SVEFOVDogYWxsIGNhbGxzIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwcmVmaXhlZCB3aXRoXHJcbiAqIFxcL1xcKiNcXF9cXF9QVVJFXFxfXFxfXFwqXFwvXHJcbiAqIFNvIHRoYXQgcm9sbHVwIGNhbiB0cmVlLXNoYWtlIHRoZW0gaWYgbmVjZXNzYXJ5LlxyXG4gKi9cclxuZnVuY3Rpb24gbWFrZU1hcChzdHIsIGV4cGVjdHNMb3dlckNhc2UpIHtcclxuICAgIGNvbnN0IG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICBjb25zdCBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBtYXBbbGlzdFtpXV0gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2UgPyB2YWwgPT4gISFtYXBbdmFsLnRvTG93ZXJDYXNlKCldIDogdmFsID0+ICEhbWFwW3ZhbF07XHJcbn1cblxuLyoqXHJcbiAqIGRldiBvbmx5IGZsYWcgLT4gbmFtZSBtYXBwaW5nXHJcbiAqL1xyXG5jb25zdCBQYXRjaEZsYWdOYW1lcyA9IHtcclxuICAgIFsxIC8qIFRFWFQgKi9dOiBgVEVYVGAsXHJcbiAgICBbMiAvKiBDTEFTUyAqL106IGBDTEFTU2AsXHJcbiAgICBbNCAvKiBTVFlMRSAqL106IGBTVFlMRWAsXHJcbiAgICBbOCAvKiBQUk9QUyAqL106IGBQUk9QU2AsXHJcbiAgICBbMTYgLyogRlVMTF9QUk9QUyAqL106IGBGVUxMX1BST1BTYCxcclxuICAgIFszMiAvKiBIWURSQVRFX0VWRU5UUyAqL106IGBIWURSQVRFX0VWRU5UU2AsXHJcbiAgICBbNjQgLyogU1RBQkxFX0ZSQUdNRU5UICovXTogYFNUQUJMRV9GUkFHTUVOVGAsXHJcbiAgICBbMTI4IC8qIEtFWUVEX0ZSQUdNRU5UICovXTogYEtFWUVEX0ZSQUdNRU5UYCxcclxuICAgIFsyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqL106IGBVTktFWUVEX0ZSQUdNRU5UYCxcclxuICAgIFs1MTIgLyogTkVFRF9QQVRDSCAqL106IGBORUVEX1BBVENIYCxcclxuICAgIFsxMDI0IC8qIERZTkFNSUNfU0xPVFMgKi9dOiBgRFlOQU1JQ19TTE9UU2AsXHJcbiAgICBbMjA0OCAvKiBERVZfUk9PVF9GUkFHTUVOVCAqL106IGBERVZfUk9PVF9GUkFHTUVOVGAsXHJcbiAgICBbLTEgLyogSE9JU1RFRCAqL106IGBIT0lTVEVEYCxcclxuICAgIFstMiAvKiBCQUlMICovXTogYEJBSUxgXHJcbn07XG5cbi8qKlxyXG4gKiBEZXYgb25seVxyXG4gKi9cclxuY29uc3Qgc2xvdEZsYWdzVGV4dCA9IHtcclxuICAgIFsxIC8qIFNUQUJMRSAqL106ICdTVEFCTEUnLFxyXG4gICAgWzIgLyogRFlOQU1JQyAqL106ICdEWU5BTUlDJyxcclxuICAgIFszIC8qIEZPUldBUkRFRCAqL106ICdGT1JXQVJERUQnXHJcbn07XG5cbmNvbnN0IEdMT0JBTFNfV0hJVEVfTElTVEVEID0gJ0luZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUsaXNOYU4scGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVVUkksJyArXHJcbiAgICAnZGVjb2RlVVJJQ29tcG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsTWF0aCxOdW1iZXIsRGF0ZSxBcnJheSwnICtcclxuICAgICdPYmplY3QsQm9vbGVhbixTdHJpbmcsUmVnRXhwLE1hcCxTZXQsSlNPTixJbnRsLEJpZ0ludCc7XHJcbmNvbnN0IGlzR2xvYmFsbHlXaGl0ZWxpc3RlZCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChHTE9CQUxTX1dISVRFX0xJU1RFRCk7XG5cbmNvbnN0IHJhbmdlID0gMjtcclxuZnVuY3Rpb24gZ2VuZXJhdGVDb2RlRnJhbWUoc291cmNlLCBzdGFydCA9IDAsIGVuZCA9IHNvdXJjZS5sZW5ndGgpIHtcclxuICAgIC8vIFNwbGl0IHRoZSBjb250ZW50IGludG8gaW5kaXZpZHVhbCBsaW5lcyBidXQgY2FwdHVyZSB0aGUgbmV3bGluZSBzZXF1ZW5jZVxyXG4gICAgLy8gdGhhdCBzZXBhcmF0ZWQgZWFjaCBsaW5lLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBhY3R1YWwgc2VxdWVuY2UgaXNcclxuICAgIC8vIG5lZWRlZCB0byBwcm9wZXJseSB0YWtlIGludG8gYWNjb3VudCB0aGUgZnVsbCBsaW5lIGxlbmd0aCBmb3Igb2Zmc2V0XHJcbiAgICAvLyBjb21wYXJpc29uXHJcbiAgICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoLyhcXHI/XFxuKS8pO1xyXG4gICAgLy8gU2VwYXJhdGUgdGhlIGxpbmVzIGFuZCBuZXdsaW5lIHNlcXVlbmNlcyBpbnRvIHNlcGFyYXRlIGFycmF5cyBmb3IgZWFzaWVyIHJlZmVyZW5jaW5nXHJcbiAgICBjb25zdCBuZXdsaW5lU2VxdWVuY2VzID0gbGluZXMuZmlsdGVyKChfLCBpZHgpID0+IGlkeCAlIDIgPT09IDEpO1xyXG4gICAgbGluZXMgPSBsaW5lcy5maWx0ZXIoKF8sIGlkeCkgPT4gaWR4ICUgMiA9PT0gMCk7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgY29uc3QgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY291bnQgKz1cclxuICAgICAgICAgICAgbGluZXNbaV0ubGVuZ3RoICtcclxuICAgICAgICAgICAgICAgICgobmV3bGluZVNlcXVlbmNlc1tpXSAmJiBuZXdsaW5lU2VxdWVuY2VzW2ldLmxlbmd0aCkgfHwgMCk7XHJcbiAgICAgICAgaWYgKGNvdW50ID49IHN0YXJ0KSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpIC0gcmFuZ2U7IGogPD0gaSArIHJhbmdlIHx8IGVuZCA+IGNvdW50OyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChqIDwgMCB8fCBqID49IGxpbmVzLmxlbmd0aClcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBqICsgMTtcclxuICAgICAgICAgICAgICAgIHJlcy5wdXNoKGAke2xpbmV9JHsnICcucmVwZWF0KE1hdGgubWF4KDMgLSBTdHJpbmcobGluZSkubGVuZ3RoLCAwKSl9fCAgJHtsaW5lc1tqXX1gKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVMZW5ndGggPSBsaW5lc1tqXS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lU2VxTGVuZ3RoID0gKG5ld2xpbmVTZXF1ZW5jZXNbal0gJiYgbmV3bGluZVNlcXVlbmNlc1tqXS5sZW5ndGgpIHx8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHB1c2ggdW5kZXJsaW5lXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFkID0gc3RhcnQgLSAoY291bnQgLSAobGluZUxlbmd0aCArIG5ld0xpbmVTZXFMZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heCgxLCBlbmQgPiBjb3VudCA/IGxpbmVMZW5ndGggLSBwYWQgOiBlbmQgLSBzdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goYCAgIHwgIGAgKyAnICcucmVwZWF0KHBhZCkgKyAnXicucmVwZWF0KGxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaiA+IGkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kID4gY291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoTWF0aC5taW4oZW5kIC0gY291bnQsIGxpbmVMZW5ndGgpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goYCAgIHwgIGAgKyAnXicucmVwZWF0KGxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBsaW5lTGVuZ3RoICsgbmV3TGluZVNlcUxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzLmpvaW4oJ1xcbicpO1xyXG59XG5cbi8qKlxyXG4gKiBPbiB0aGUgY2xpZW50IHdlIG9ubHkgbmVlZCB0byBvZmZlciBzcGVjaWFsIGNhc2VzIGZvciBib29sZWFuIGF0dHJpYnV0ZXMgdGhhdFxyXG4gKiBoYXZlIGRpZmZlcmVudCBuYW1lcyBmcm9tIHRoZWlyIGNvcnJlc3BvbmRpbmcgZG9tIHByb3BlcnRpZXM6XHJcbiAqIC0gaXRlbXNjb3BlIC0+IE4vQVxyXG4gKiAtIGFsbG93ZnVsbHNjcmVlbiAtPiBhbGxvd0Z1bGxzY3JlZW5cclxuICogLSBmb3Jtbm92YWxpZGF0ZSAtPiBmb3JtTm9WYWxpZGF0ZVxyXG4gKiAtIGlzbWFwIC0+IGlzTWFwXHJcbiAqIC0gbm9tb2R1bGUgLT4gbm9Nb2R1bGVcclxuICogLSBub3ZhbGlkYXRlIC0+IG5vVmFsaWRhdGVcclxuICogLSByZWFkb25seSAtPiByZWFkT25seVxyXG4gKi9cclxuY29uc3Qgc3BlY2lhbEJvb2xlYW5BdHRycyA9IGBpdGVtc2NvcGUsYWxsb3dmdWxsc2NyZWVuLGZvcm1ub3ZhbGlkYXRlLGlzbWFwLG5vbW9kdWxlLG5vdmFsaWRhdGUscmVhZG9ubHlgO1xyXG5jb25zdCBpc1NwZWNpYWxCb29sZWFuQXR0ciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChzcGVjaWFsQm9vbGVhbkF0dHJzKTtcclxuLyoqXHJcbiAqIFRoZSBmdWxsIGxpc3QgaXMgbmVlZGVkIGR1cmluZyBTU1IgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBpbml0aWFsIG1hcmt1cC5cclxuICovXHJcbmNvbnN0IGlzQm9vbGVhbkF0dHIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoc3BlY2lhbEJvb2xlYW5BdHRycyArXHJcbiAgICBgLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjb250cm9scyxkZWZhdWx0LGRlZmVyLGRpc2FibGVkLGhpZGRlbixgICtcclxuICAgIGBsb29wLG9wZW4scmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLGAgK1xyXG4gICAgYGNoZWNrZWQsbXV0ZWQsbXVsdGlwbGUsc2VsZWN0ZWRgKTtcclxuLyoqXHJcbiAqIEJvb2xlYW4gYXR0cmlidXRlcyBzaG91bGQgYmUgaW5jbHVkZWQgaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBvciAnJy5cclxuICogZS5nLiBgPHNlbGVjdCBtdWx0aXBsZT5gIGNvbXBpbGVzIHRvIGB7IG11bHRpcGxlOiAnJyB9YFxyXG4gKi9cclxuZnVuY3Rpb24gaW5jbHVkZUJvb2xlYW5BdHRyKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISF2YWx1ZSB8fCB2YWx1ZSA9PT0gJyc7XHJcbn1cclxuY29uc3QgdW5zYWZlQXR0ckNoYXJSRSA9IC9bPi89XCInXFx1MDAwOVxcdTAwMGFcXHUwMDBjXFx1MDAyMF0vO1xyXG5jb25zdCBhdHRyVmFsaWRhdGlvbkNhY2hlID0ge307XHJcbmZ1bmN0aW9uIGlzU1NSU2FmZUF0dHJOYW1lKG5hbWUpIHtcclxuICAgIGlmIChhdHRyVmFsaWRhdGlvbkNhY2hlLmhhc093blByb3BlcnR5KG5hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGF0dHJWYWxpZGF0aW9uQ2FjaGVbbmFtZV07XHJcbiAgICB9XHJcbiAgICBjb25zdCBpc1Vuc2FmZSA9IHVuc2FmZUF0dHJDaGFyUkUudGVzdChuYW1lKTtcclxuICAgIGlmIChpc1Vuc2FmZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYHVuc2FmZSBhdHRyaWJ1dGUgbmFtZTogJHtuYW1lfWApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChhdHRyVmFsaWRhdGlvbkNhY2hlW25hbWVdID0gIWlzVW5zYWZlKTtcclxufVxyXG5jb25zdCBwcm9wc1RvQXR0ck1hcCA9IHtcclxuICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXHJcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXHJcbiAgICBodG1sRm9yOiAnZm9yJyxcclxuICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnXHJcbn07XHJcbi8qKlxyXG4gKiBDU1MgcHJvcGVydGllcyB0aGF0IGFjY2VwdCBwbGFpbiBudW1iZXJzXHJcbiAqL1xyXG5jb25zdCBpc05vVW5pdE51bWVyaWNTdHlsZVByb3AgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsYm9yZGVyLWltYWdlLW91dHNldCxib3JkZXItaW1hZ2Utc2xpY2UsYCArXHJcbiAgICBgYm9yZGVyLWltYWdlLXdpZHRoLGJveC1mbGV4LGJveC1mbGV4LWdyb3VwLGJveC1vcmRpbmFsLWdyb3VwLGNvbHVtbi1jb3VudCxgICtcclxuICAgIGBjb2x1bW5zLGZsZXgsZmxleC1ncm93LGZsZXgtcG9zaXRpdmUsZmxleC1zaHJpbmssZmxleC1uZWdhdGl2ZSxmbGV4LW9yZGVyLGAgK1xyXG4gICAgYGdyaWQtcm93LGdyaWQtcm93LWVuZCxncmlkLXJvdy1zcGFuLGdyaWQtcm93LXN0YXJ0LGdyaWQtY29sdW1uLGAgK1xyXG4gICAgYGdyaWQtY29sdW1uLWVuZCxncmlkLWNvbHVtbi1zcGFuLGdyaWQtY29sdW1uLXN0YXJ0LGZvbnQtd2VpZ2h0LGxpbmUtY2xhbXAsYCArXHJcbiAgICBgbGluZS1oZWlnaHQsb3BhY2l0eSxvcmRlcixvcnBoYW5zLHRhYi1zaXplLHdpZG93cyx6LWluZGV4LHpvb20sYCArXHJcbiAgICAvLyBTVkdcclxuICAgIGBmaWxsLW9wYWNpdHksZmxvb2Qtb3BhY2l0eSxzdG9wLW9wYWNpdHksc3Ryb2tlLWRhc2hhcnJheSxzdHJva2UtZGFzaG9mZnNldCxgICtcclxuICAgIGBzdHJva2UtbWl0ZXJsaW1pdCxzdHJva2Utb3BhY2l0eSxzdHJva2Utd2lkdGhgKTtcclxuLyoqXHJcbiAqIEtub3duIGF0dHJpYnV0ZXMsIHRoaXMgaXMgdXNlZCBmb3Igc3RyaW5naWZpY2F0aW9uIG9mIHJ1bnRpbWUgc3RhdGljIG5vZGVzXHJcbiAqIHNvIHRoYXQgd2UgZG9uJ3Qgc3RyaW5naWZ5IGJpbmRpbmdzIHRoYXQgY2Fubm90IGJlIHNldCBmcm9tIEhUTUwuXHJcbiAqIERvbid0IGFsc28gZm9yZ2V0IHRvIGFsbG93IGBkYXRhLSpgIGFuZCBgYXJpYS0qYCFcclxuICogR2VuZXJhdGVkIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9BdHRyaWJ1dGVzXHJcbiAqL1xyXG5jb25zdCBpc0tub3duSHRtbEF0dHIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYGFjY2VwdCxhY2NlcHQtY2hhcnNldCxhY2Nlc3NrZXksYWN0aW9uLGFsaWduLGFsbG93LGFsdCxhc3luYyxgICtcclxuICAgIGBhdXRvY2FwaXRhbGl6ZSxhdXRvY29tcGxldGUsYXV0b2ZvY3VzLGF1dG9wbGF5LGJhY2tncm91bmQsYmdjb2xvcixgICtcclxuICAgIGBib3JkZXIsYnVmZmVyZWQsY2FwdHVyZSxjaGFsbGVuZ2UsY2hhcnNldCxjaGVja2VkLGNpdGUsY2xhc3MsY29kZSxgICtcclxuICAgIGBjb2RlYmFzZSxjb2xvcixjb2xzLGNvbHNwYW4sY29udGVudCxjb250ZW50ZWRpdGFibGUsY29udGV4dG1lbnUsY29udHJvbHMsYCArXHJcbiAgICBgY29vcmRzLGNyb3Nzb3JpZ2luLGNzcCxkYXRhLGRhdGV0aW1lLGRlY29kaW5nLGRlZmF1bHQsZGVmZXIsZGlyLGRpcm5hbWUsYCArXHJcbiAgICBgZGlzYWJsZWQsZG93bmxvYWQsZHJhZ2dhYmxlLGRyb3B6b25lLGVuY3R5cGUsZW50ZXJrZXloaW50LGZvcixmb3JtLGAgK1xyXG4gICAgYGZvcm1hY3Rpb24sZm9ybWVuY3R5cGUsZm9ybW1ldGhvZCxmb3Jtbm92YWxpZGF0ZSxmb3JtdGFyZ2V0LGhlYWRlcnMsYCArXHJcbiAgICBgaGVpZ2h0LGhpZGRlbixoaWdoLGhyZWYsaHJlZmxhbmcsaHR0cC1lcXVpdixpY29uLGlkLGltcG9ydGFuY2UsaW50ZWdyaXR5LGAgK1xyXG4gICAgYGlzbWFwLGl0ZW1wcm9wLGtleXR5cGUsa2luZCxsYWJlbCxsYW5nLGxhbmd1YWdlLGxvYWRpbmcsbGlzdCxsb29wLGxvdyxgICtcclxuICAgIGBtYW5pZmVzdCxtYXgsbWF4bGVuZ3RoLG1pbmxlbmd0aCxtZWRpYSxtaW4sbXVsdGlwbGUsbXV0ZWQsbmFtZSxub3ZhbGlkYXRlLGAgK1xyXG4gICAgYG9wZW4sb3B0aW11bSxwYXR0ZXJuLHBpbmcscGxhY2Vob2xkZXIscG9zdGVyLHByZWxvYWQscmFkaW9ncm91cCxyZWFkb25seSxgICtcclxuICAgIGByZWZlcnJlcnBvbGljeSxyZWwscmVxdWlyZWQscmV2ZXJzZWQscm93cyxyb3dzcGFuLHNhbmRib3gsc2NvcGUsc2NvcGVkLGAgK1xyXG4gICAgYHNlbGVjdGVkLHNoYXBlLHNpemUsc2l6ZXMsc2xvdCxzcGFuLHNwZWxsY2hlY2ssc3JjLHNyY2RvYyxzcmNsYW5nLHNyY3NldCxgICtcclxuICAgIGBzdGFydCxzdGVwLHN0eWxlLHN1bW1hcnksdGFiaW5kZXgsdGFyZ2V0LHRpdGxlLHRyYW5zbGF0ZSx0eXBlLHVzZW1hcCxgICtcclxuICAgIGB2YWx1ZSx3aWR0aCx3cmFwYCk7XHJcbi8qKlxyXG4gKiBHZW5lcmF0ZWQgZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvQXR0cmlidXRlXHJcbiAqL1xyXG5jb25zdCBpc0tub3duU3ZnQXR0ciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgeG1sbnMsYWNjZW50LWhlaWdodCxhY2N1bXVsYXRlLGFkZGl0aXZlLGFsaWdubWVudC1iYXNlbGluZSxhbHBoYWJldGljLGFtcGxpdHVkZSxgICtcclxuICAgIGBhcmFiaWMtZm9ybSxhc2NlbnQsYXR0cmlidXRlTmFtZSxhdHRyaWJ1dGVUeXBlLGF6aW11dGgsYmFzZUZyZXF1ZW5jeSxgICtcclxuICAgIGBiYXNlbGluZS1zaGlmdCxiYXNlUHJvZmlsZSxiYm94LGJlZ2luLGJpYXMsYnksY2FsY01vZGUsY2FwLWhlaWdodCxjbGFzcyxgICtcclxuICAgIGBjbGlwLGNsaXBQYXRoVW5pdHMsY2xpcC1wYXRoLGNsaXAtcnVsZSxjb2xvcixjb2xvci1pbnRlcnBvbGF0aW9uLGAgK1xyXG4gICAgYGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyxjb2xvci1wcm9maWxlLGNvbG9yLXJlbmRlcmluZyxgICtcclxuICAgIGBjb250ZW50U2NyaXB0VHlwZSxjb250ZW50U3R5bGVUeXBlLGNyb3Nzb3JpZ2luLGN1cnNvcixjeCxjeSxkLGRlY2VsZXJhdGUsYCArXHJcbiAgICBgZGVzY2VudCxkaWZmdXNlQ29uc3RhbnQsZGlyZWN0aW9uLGRpc3BsYXksZGl2aXNvcixkb21pbmFudC1iYXNlbGluZSxkdXIsZHgsYCArXHJcbiAgICBgZHksZWRnZU1vZGUsZWxldmF0aW9uLGVuYWJsZS1iYWNrZ3JvdW5kLGVuZCxleHBvbmVudCxmaWxsLGZpbGwtb3BhY2l0eSxgICtcclxuICAgIGBmaWxsLXJ1bGUsZmlsdGVyLGZpbHRlclJlcyxmaWx0ZXJVbml0cyxmbG9vZC1jb2xvcixmbG9vZC1vcGFjaXR5LGAgK1xyXG4gICAgYGZvbnQtZmFtaWx5LGZvbnQtc2l6ZSxmb250LXNpemUtYWRqdXN0LGZvbnQtc3RyZXRjaCxmb250LXN0eWxlLGAgK1xyXG4gICAgYGZvbnQtdmFyaWFudCxmb250LXdlaWdodCxmb3JtYXQsZnJvbSxmcixmeCxmeSxnMSxnMixnbHlwaC1uYW1lLGAgK1xyXG4gICAgYGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwsZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwsZ2x5cGhSZWYsYCArXHJcbiAgICBgZ3JhZGllbnRUcmFuc2Zvcm0sZ3JhZGllbnRVbml0cyxoYW5naW5nLGhlaWdodCxocmVmLGhyZWZsYW5nLGhvcml6LWFkdi14LGAgK1xyXG4gICAgYGhvcml6LW9yaWdpbi14LGlkLGlkZW9ncmFwaGljLGltYWdlLXJlbmRlcmluZyxpbixpbjIsaW50ZXJjZXB0LGssazEsazIsazMsYCArXHJcbiAgICBgazQsa2VybmVsTWF0cml4LGtlcm5lbFVuaXRMZW5ndGgsa2VybmluZyxrZXlQb2ludHMsa2V5U3BsaW5lcyxrZXlUaW1lcyxgICtcclxuICAgIGBsYW5nLGxlbmd0aEFkanVzdCxsZXR0ZXItc3BhY2luZyxsaWdodGluZy1jb2xvcixsaW1pdGluZ0NvbmVBbmdsZSxsb2NhbCxgICtcclxuICAgIGBtYXJrZXItZW5kLG1hcmtlci1taWQsbWFya2VyLXN0YXJ0LG1hcmtlckhlaWdodCxtYXJrZXJVbml0cyxtYXJrZXJXaWR0aCxgICtcclxuICAgIGBtYXNrLG1hc2tDb250ZW50VW5pdHMsbWFza1VuaXRzLG1hdGhlbWF0aWNhbCxtYXgsbWVkaWEsbWV0aG9kLG1pbixtb2RlLGAgK1xyXG4gICAgYG5hbWUsbnVtT2N0YXZlcyxvZmZzZXQsb3BhY2l0eSxvcGVyYXRvcixvcmRlcixvcmllbnQsb3JpZW50YXRpb24sb3JpZ2luLGAgK1xyXG4gICAgYG92ZXJmbG93LG92ZXJsaW5lLXBvc2l0aW9uLG92ZXJsaW5lLXRoaWNrbmVzcyxwYW5vc2UtMSxwYWludC1vcmRlcixwYXRoLGAgK1xyXG4gICAgYHBhdGhMZW5ndGgscGF0dGVybkNvbnRlbnRVbml0cyxwYXR0ZXJuVHJhbnNmb3JtLHBhdHRlcm5Vbml0cyxwaW5nLGAgK1xyXG4gICAgYHBvaW50ZXItZXZlbnRzLHBvaW50cyxwb2ludHNBdFgscG9pbnRzQXRZLHBvaW50c0F0WixwcmVzZXJ2ZUFscGhhLGAgK1xyXG4gICAgYHByZXNlcnZlQXNwZWN0UmF0aW8scHJpbWl0aXZlVW5pdHMscixyYWRpdXMscmVmZXJyZXJQb2xpY3kscmVmWCxyZWZZLHJlbCxgICtcclxuICAgIGByZW5kZXJpbmctaW50ZW50LHJlcGVhdENvdW50LHJlcGVhdER1cixyZXF1aXJlZEV4dGVuc2lvbnMscmVxdWlyZWRGZWF0dXJlcyxgICtcclxuICAgIGByZXN0YXJ0LHJlc3VsdCxyb3RhdGUscngscnksc2NhbGUsc2VlZCxzaGFwZS1yZW5kZXJpbmcsc2xvcGUsc3BhY2luZyxgICtcclxuICAgIGBzcGVjdWxhckNvbnN0YW50LHNwZWN1bGFyRXhwb25lbnQsc3BlZWQsc3ByZWFkTWV0aG9kLHN0YXJ0T2Zmc2V0LGAgK1xyXG4gICAgYHN0ZERldmlhdGlvbixzdGVtaCxzdGVtdixzdGl0Y2hUaWxlcyxzdG9wLWNvbG9yLHN0b3Atb3BhY2l0eSxgICtcclxuICAgIGBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uLHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzLHN0cmluZyxzdHJva2UsYCArXHJcbiAgICBgc3Ryb2tlLWRhc2hhcnJheSxzdHJva2UtZGFzaG9mZnNldCxzdHJva2UtbGluZWNhcCxzdHJva2UtbGluZWpvaW4sYCArXHJcbiAgICBgc3Ryb2tlLW1pdGVybGltaXQsc3Ryb2tlLW9wYWNpdHksc3Ryb2tlLXdpZHRoLHN0eWxlLHN1cmZhY2VTY2FsZSxgICtcclxuICAgIGBzeXN0ZW1MYW5ndWFnZSx0YWJpbmRleCx0YWJsZVZhbHVlcyx0YXJnZXQsdGFyZ2V0WCx0YXJnZXRZLHRleHQtYW5jaG9yLGAgK1xyXG4gICAgYHRleHQtZGVjb3JhdGlvbix0ZXh0LXJlbmRlcmluZyx0ZXh0TGVuZ3RoLHRvLHRyYW5zZm9ybSx0cmFuc2Zvcm0tb3JpZ2luLGAgK1xyXG4gICAgYHR5cGUsdTEsdTIsdW5kZXJsaW5lLXBvc2l0aW9uLHVuZGVybGluZS10aGlja25lc3MsdW5pY29kZSx1bmljb2RlLWJpZGksYCArXHJcbiAgICBgdW5pY29kZS1yYW5nZSx1bml0cy1wZXItZW0sdi1hbHBoYWJldGljLHYtaGFuZ2luZyx2LWlkZW9ncmFwaGljLGAgK1xyXG4gICAgYHYtbWF0aGVtYXRpY2FsLHZhbHVlcyx2ZWN0b3ItZWZmZWN0LHZlcnNpb24sdmVydC1hZHYteSx2ZXJ0LW9yaWdpbi14LGAgK1xyXG4gICAgYHZlcnQtb3JpZ2luLXksdmlld0JveCx2aWV3VGFyZ2V0LHZpc2liaWxpdHksd2lkdGgsd2lkdGhzLHdvcmQtc3BhY2luZyxgICtcclxuICAgIGB3cml0aW5nLW1vZGUseCx4LWhlaWdodCx4MSx4Mix4Q2hhbm5lbFNlbGVjdG9yLHhsaW5rOmFjdHVhdGUseGxpbms6YXJjcm9sZSxgICtcclxuICAgIGB4bGluazpocmVmLHhsaW5rOnJvbGUseGxpbms6c2hvdyx4bGluazp0aXRsZSx4bGluazp0eXBlLHhtbDpiYXNlLHhtbDpsYW5nLGAgK1xyXG4gICAgYHhtbDpzcGFjZSx5LHkxLHkyLHlDaGFubmVsU2VsZWN0b3Iseix6b29tQW5kUGFuYCk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlKHZhbHVlKSB7XHJcbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBjb25zdCByZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB2YWx1ZVtpXTtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGlzU3RyaW5nKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICA/IHBhcnNlU3RyaW5nU3R5bGUoaXRlbSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplU3R5bGUoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBub3JtYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzW2tleV0gPSBub3JtYWxpemVkW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxufVxyXG5jb25zdCBsaXN0RGVsaW1pdGVyUkUgPSAvOyg/IVteKF0qXFwpKS9nO1xyXG5jb25zdCBwcm9wZXJ0eURlbGltaXRlclJFID0gLzooLispLztcclxuZnVuY3Rpb24gcGFyc2VTdHJpbmdTdHlsZShjc3NUZXh0KSB7XHJcbiAgICBjb25zdCByZXQgPSB7fTtcclxuICAgIGNzc1RleHQuc3BsaXQobGlzdERlbGltaXRlclJFKS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxpbWl0ZXJSRSk7XHJcbiAgICAgICAgICAgIHRtcC5sZW5ndGggPiAxICYmIChyZXRbdG1wWzBdLnRyaW0oKV0gPSB0bXBbMV0udHJpbSgpKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuZnVuY3Rpb24gc3RyaW5naWZ5U3R5bGUoc3R5bGVzKSB7XHJcbiAgICBsZXQgcmV0ID0gJyc7XHJcbiAgICBpZiAoIXN0eWxlcyB8fCBpc1N0cmluZyhzdHlsZXMpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gc3R5bGVzW2tleV07XHJcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IGtleS5zdGFydHNXaXRoKGAtLWApID8ga2V5IDogaHlwaGVuYXRlKGtleSk7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSB8fFxyXG4gICAgICAgICAgICAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc05vVW5pdE51bWVyaWNTdHlsZVByb3Aobm9ybWFsaXplZEtleSkpKSB7XHJcbiAgICAgICAgICAgIC8vIG9ubHkgcmVuZGVyIHZhbGlkIHZhbHVlc1xyXG4gICAgICAgICAgICByZXQgKz0gYCR7bm9ybWFsaXplZEtleX06JHt2YWx1ZX07YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzKHZhbHVlKSB7XHJcbiAgICBsZXQgcmVzID0gJyc7XHJcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgcmVzID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUNsYXNzKHZhbHVlW2ldKTtcclxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJlcyArPSBub3JtYWxpemVkICsgJyAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVtuYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgcmVzICs9IG5hbWUgKyAnICc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzLnRyaW0oKTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVQcm9wcyhwcm9wcykge1xyXG4gICAgaWYgKCFwcm9wcylcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIGxldCB7IGNsYXNzOiBrbGFzcywgc3R5bGUgfSA9IHByb3BzO1xyXG4gICAgaWYgKGtsYXNzICYmICFpc1N0cmluZyhrbGFzcykpIHtcclxuICAgICAgICBwcm9wcy5jbGFzcyA9IG5vcm1hbGl6ZUNsYXNzKGtsYXNzKTtcclxuICAgIH1cclxuICAgIGlmIChzdHlsZSkge1xyXG4gICAgICAgIHByb3BzLnN0eWxlID0gbm9ybWFsaXplU3R5bGUoc3R5bGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG59XG5cbi8vIFRoZXNlIHRhZyBjb25maWdzIGFyZSBzaGFyZWQgYmV0d2VlbiBjb21waWxlci1kb20gYW5kIHJ1bnRpbWUtZG9tLCBzbyB0aGV5XHJcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudFxyXG5jb25zdCBIVE1MX1RBR1MgPSAnaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlciwnICtcclxuICAgICdoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sJyArXHJcbiAgICAnZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsJyArXHJcbiAgICAnZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsJyArXHJcbiAgICAndGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSwnICtcclxuICAgICdjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsJyArXHJcbiAgICAndGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLCcgK1xyXG4gICAgJ29wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsJyArXHJcbiAgICAnc3VtbWFyeSx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCc7XHJcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9FbGVtZW50XHJcbmNvbnN0IFNWR19UQUdTID0gJ3N2ZyxhbmltYXRlLGFuaW1hdGVNb3Rpb24sYW5pbWF0ZVRyYW5zZm9ybSxjaXJjbGUsY2xpcFBhdGgsY29sb3ItcHJvZmlsZSwnICtcclxuICAgICdkZWZzLGRlc2MsZGlzY2FyZCxlbGxpcHNlLGZlQmxlbmQsZmVDb2xvck1hdHJpeCxmZUNvbXBvbmVudFRyYW5zZmVyLCcgK1xyXG4gICAgJ2ZlQ29tcG9zaXRlLGZlQ29udm9sdmVNYXRyaXgsZmVEaWZmdXNlTGlnaHRpbmcsZmVEaXNwbGFjZW1lbnRNYXAsJyArXHJcbiAgICAnZmVEaXN0YW5jZUxpZ2h0LGZlRHJvcFNoYWRvdyxmZUZsb29kLGZlRnVuY0EsZmVGdW5jQixmZUZ1bmNHLGZlRnVuY1IsJyArXHJcbiAgICAnZmVHYXVzc2lhbkJsdXIsZmVJbWFnZSxmZU1lcmdlLGZlTWVyZ2VOb2RlLGZlTW9ycGhvbG9neSxmZU9mZnNldCwnICtcclxuICAgICdmZVBvaW50TGlnaHQsZmVTcGVjdWxhckxpZ2h0aW5nLGZlU3BvdExpZ2h0LGZlVGlsZSxmZVR1cmJ1bGVuY2UsZmlsdGVyLCcgK1xyXG4gICAgJ2ZvcmVpZ25PYmplY3QsZyxoYXRjaCxoYXRjaHBhdGgsaW1hZ2UsbGluZSxsaW5lYXJHcmFkaWVudCxtYXJrZXIsbWFzaywnICtcclxuICAgICdtZXNoLG1lc2hncmFkaWVudCxtZXNocGF0Y2gsbWVzaHJvdyxtZXRhZGF0YSxtcGF0aCxwYXRoLHBhdHRlcm4sJyArXHJcbiAgICAncG9seWdvbixwb2x5bGluZSxyYWRpYWxHcmFkaWVudCxyZWN0LHNldCxzb2xpZGNvbG9yLHN0b3Asc3dpdGNoLHN5bWJvbCwnICtcclxuICAgICd0ZXh0LHRleHRQYXRoLHRpdGxlLHRzcGFuLHVua25vd24sdXNlLHZpZXcnO1xyXG5jb25zdCBWT0lEX1RBR1MgPSAnYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxocixpbWcsaW5wdXQsbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnInO1xyXG4vKipcclxuICogQ29tcGlsZXIgb25seS5cclxuICogRG8gTk9UIHVzZSBpbiBydW50aW1lIGNvZGUgcGF0aHMgdW5sZXNzIGJlaGluZCBgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpYCBmbGFnLlxyXG4gKi9cclxuY29uc3QgaXNIVE1MVGFnID0gLyojX19QVVJFX18qLyBtYWtlTWFwKEhUTUxfVEFHUyk7XHJcbi8qKlxyXG4gKiBDb21waWxlciBvbmx5LlxyXG4gKiBEbyBOT1QgdXNlIGluIHJ1bnRpbWUgY29kZSBwYXRocyB1bmxlc3MgYmVoaW5kIGAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylgIGZsYWcuXHJcbiAqL1xyXG5jb25zdCBpc1NWR1RhZyA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChTVkdfVEFHUyk7XHJcbi8qKlxyXG4gKiBDb21waWxlciBvbmx5LlxyXG4gKiBEbyBOT1QgdXNlIGluIHJ1bnRpbWUgY29kZSBwYXRocyB1bmxlc3MgYmVoaW5kIGAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylgIGZsYWcuXHJcbiAqL1xyXG5jb25zdCBpc1ZvaWRUYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoVk9JRF9UQUdTKTtcblxuY29uc3QgZXNjYXBlUkUgPSAvW1wiJyY8Pl0vO1xyXG5mdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykge1xyXG4gICAgY29uc3Qgc3RyID0gJycgKyBzdHJpbmc7XHJcbiAgICBjb25zdCBtYXRjaCA9IGVzY2FwZVJFLmV4ZWMoc3RyKTtcclxuICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG4gICAgbGV0IGh0bWwgPSAnJztcclxuICAgIGxldCBlc2NhcGVkO1xyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgbGV0IGxhc3RJbmRleCA9IDA7XHJcbiAgICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMzQ6IC8vIFwiXHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyZxdW90Oyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzODogLy8gJlxyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmYW1wOyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOTogLy8gJ1xyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmIzM5Oyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA2MDogLy8gPFxyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmbHQ7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDYyOiAvLyA+XHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyZndDsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtcclxuICAgICAgICAgICAgaHRtbCArPSBzdHIuc2xpY2UobGFzdEluZGV4LCBpbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcclxuICAgICAgICBodG1sICs9IGVzY2FwZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGFzdEluZGV4ICE9PSBpbmRleCA/IGh0bWwgKyBzdHIuc2xpY2UobGFzdEluZGV4LCBpbmRleCkgOiBodG1sO1xyXG59XHJcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sNTIvc3ludGF4Lmh0bWwjY29tbWVudHNcclxuY29uc3QgY29tbWVudFN0cmlwUkUgPSAvXi0/Pnw8IS0tfC0tPnwtLSE+fDwhLSQvZztcclxuZnVuY3Rpb24gZXNjYXBlSHRtbENvbW1lbnQoc3JjKSB7XHJcbiAgICByZXR1cm4gc3JjLnJlcGxhY2UoY29tbWVudFN0cmlwUkUsICcnKTtcclxufVxuXG5mdW5jdGlvbiBsb29zZUNvbXBhcmVBcnJheXMoYSwgYikge1xyXG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aClcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgZXF1YWwgPSB0cnVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGVxdWFsICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZXF1YWwgPSBsb29zZUVxdWFsKGFbaV0sIGJbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVxdWFsO1xyXG59XHJcbmZ1bmN0aW9uIGxvb3NlRXF1YWwoYSwgYikge1xyXG4gICAgaWYgKGEgPT09IGIpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBsZXQgYVZhbGlkVHlwZSA9IGlzRGF0ZShhKTtcclxuICAgIGxldCBiVmFsaWRUeXBlID0gaXNEYXRlKGIpO1xyXG4gICAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xyXG4gICAgICAgIHJldHVybiBhVmFsaWRUeXBlICYmIGJWYWxpZFR5cGUgPyBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCkgOiBmYWxzZTtcclxuICAgIH1cclxuICAgIGFWYWxpZFR5cGUgPSBpc0FycmF5KGEpO1xyXG4gICAgYlZhbGlkVHlwZSA9IGlzQXJyYXkoYik7XHJcbiAgICBpZiAoYVZhbGlkVHlwZSB8fCBiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIGFWYWxpZFR5cGUgJiYgYlZhbGlkVHlwZSA/IGxvb3NlQ29tcGFyZUFycmF5cyhhLCBiKSA6IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgYVZhbGlkVHlwZSA9IGlzT2JqZWN0KGEpO1xyXG4gICAgYlZhbGlkVHlwZSA9IGlzT2JqZWN0KGIpO1xyXG4gICAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdGhpcyBpZiB3aWxsIHByb2JhYmx5IG5ldmVyIGJlIGNhbGxlZCAqL1xyXG4gICAgICAgIGlmICghYVZhbGlkVHlwZSB8fCAhYlZhbGlkVHlwZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFLZXlzQ291bnQgPSBPYmplY3Qua2V5cyhhKS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgYktleXNDb3VudCA9IE9iamVjdC5rZXlzKGIpLmxlbmd0aDtcclxuICAgICAgICBpZiAoYUtleXNDb3VudCAhPT0gYktleXNDb3VudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGEpIHtcclxuICAgICAgICAgICAgY29uc3QgYUhhc0tleSA9IGEuaGFzT3duUHJvcGVydHkoa2V5KTtcclxuICAgICAgICAgICAgY29uc3QgYkhhc0tleSA9IGIuaGFzT3duUHJvcGVydHkoa2V5KTtcclxuICAgICAgICAgICAgaWYgKChhSGFzS2V5ICYmICFiSGFzS2V5KSB8fFxyXG4gICAgICAgICAgICAgICAgKCFhSGFzS2V5ICYmIGJIYXNLZXkpIHx8XHJcbiAgICAgICAgICAgICAgICAhbG9vc2VFcXVhbChhW2tleV0sIGJba2V5XSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKTtcclxufVxyXG5mdW5jdGlvbiBsb29zZUluZGV4T2YoYXJyLCB2YWwpIHtcclxuICAgIHJldHVybiBhcnIuZmluZEluZGV4KGl0ZW0gPT4gbG9vc2VFcXVhbChpdGVtLCB2YWwpKTtcclxufVxuXG4vKipcclxuICogRm9yIGNvbnZlcnRpbmcge3sgaW50ZXJwb2xhdGlvbiB9fSB2YWx1ZXMgdG8gZGlzcGxheWVkIHN0cmluZ3MuXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB0b0Rpc3BsYXlTdHJpbmcgPSAodmFsKSA9PiB7XHJcbiAgICByZXR1cm4gaXNTdHJpbmcodmFsKVxyXG4gICAgICAgID8gdmFsXHJcbiAgICAgICAgOiB2YWwgPT0gbnVsbFxyXG4gICAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICAgIDogaXNBcnJheSh2YWwpIHx8XHJcbiAgICAgICAgICAgICAgICAoaXNPYmplY3QodmFsKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWwudG9TdHJpbmcgPT09IG9iamVjdFRvU3RyaW5nIHx8ICFpc0Z1bmN0aW9uKHZhbC50b1N0cmluZykpKVxyXG4gICAgICAgICAgICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIHJlcGxhY2VyLCAyKVxyXG4gICAgICAgICAgICAgICAgOiBTdHJpbmcodmFsKTtcclxufTtcclxuY29uc3QgcmVwbGFjZXIgPSAoX2tleSwgdmFsKSA9PiB7XHJcbiAgICAvLyBjYW4ndCB1c2UgaXNSZWYgaGVyZSBzaW5jZSBAdnVlL3NoYXJlZCBoYXMgbm8gZGVwc1xyXG4gICAgaWYgKHZhbCAmJiB2YWwuX192X2lzUmVmKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlcGxhY2VyKF9rZXksIHZhbC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc01hcCh2YWwpKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgW2BNYXAoJHt2YWwuc2l6ZX0pYF06IFsuLi52YWwuZW50cmllcygpXS5yZWR1Y2UoKGVudHJpZXMsIFtrZXksIHZhbF0pID0+IHtcclxuICAgICAgICAgICAgICAgIGVudHJpZXNbYCR7a2V5fSA9PmBdID0gdmFsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJpZXM7XHJcbiAgICAgICAgICAgIH0sIHt9KVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NldCh2YWwpKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgW2BTZXQoJHt2YWwuc2l6ZX0pYF06IFsuLi52YWwudmFsdWVzKCldXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkgJiYgIWlzQXJyYXkodmFsKSAmJiAhaXNQbGFpbk9iamVjdCh2YWwpKSB7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbDtcclxufTtcblxuY29uc3QgRU1QVFlfT0JKID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICA/IE9iamVjdC5mcmVlemUoe30pXHJcbiAgICA6IHt9O1xyXG5jb25zdCBFTVBUWV9BUlIgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBPYmplY3QuZnJlZXplKFtdKSA6IFtdO1xyXG5jb25zdCBOT09QID0gKCkgPT4geyB9O1xyXG4vKipcclxuICogQWx3YXlzIHJldHVybiBmYWxzZS5cclxuICovXHJcbmNvbnN0IE5PID0gKCkgPT4gZmFsc2U7XHJcbmNvbnN0IG9uUkUgPSAvXm9uW15hLXpdLztcclxuY29uc3QgaXNPbiA9IChrZXkpID0+IG9uUkUudGVzdChrZXkpO1xyXG5jb25zdCBpc01vZGVsTGlzdGVuZXIgPSAoa2V5KSA9PiBrZXkuc3RhcnRzV2l0aCgnb25VcGRhdGU6Jyk7XHJcbmNvbnN0IGV4dGVuZCA9IE9iamVjdC5hc3NpZ247XHJcbmNvbnN0IHJlbW92ZSA9IChhcnIsIGVsKSA9PiB7XHJcbiAgICBjb25zdCBpID0gYXJyLmluZGV4T2YoZWwpO1xyXG4gICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcclxuY29uc3QgaGFzT3duID0gKHZhbCwga2V5KSA9PiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbCwga2V5KTtcclxuY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XHJcbmNvbnN0IGlzTWFwID0gKHZhbCkgPT4gdG9UeXBlU3RyaW5nKHZhbCkgPT09ICdbb2JqZWN0IE1hcF0nO1xyXG5jb25zdCBpc1NldCA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBTZXRdJztcclxuY29uc3QgaXNEYXRlID0gKHZhbCkgPT4gdmFsIGluc3RhbmNlb2YgRGF0ZTtcclxuY29uc3QgaXNGdW5jdGlvbiA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbic7XHJcbmNvbnN0IGlzU3RyaW5nID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XHJcbmNvbnN0IGlzU3ltYm9sID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ3N5bWJvbCc7XHJcbmNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xyXG5jb25zdCBpc1Byb21pc2UgPSAodmFsKSA9PiB7XHJcbiAgICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC50aGVuKSAmJiBpc0Z1bmN0aW9uKHZhbC5jYXRjaCk7XHJcbn07XHJcbmNvbnN0IG9iamVjdFRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcclxuY29uc3QgdG9UeXBlU3RyaW5nID0gKHZhbHVlKSA9PiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcclxuY29uc3QgdG9SYXdUeXBlID0gKHZhbHVlKSA9PiB7XHJcbiAgICAvLyBleHRyYWN0IFwiUmF3VHlwZVwiIGZyb20gc3RyaW5ncyBsaWtlIFwiW29iamVjdCBSYXdUeXBlXVwiXHJcbiAgICByZXR1cm4gdG9UeXBlU3RyaW5nKHZhbHVlKS5zbGljZSg4LCAtMSk7XHJcbn07XHJcbmNvbnN0IGlzUGxhaW5PYmplY3QgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XHJcbmNvbnN0IGlzSW50ZWdlcktleSA9IChrZXkpID0+IGlzU3RyaW5nKGtleSkgJiZcclxuICAgIGtleSAhPT0gJ05hTicgJiZcclxuICAgIGtleVswXSAhPT0gJy0nICYmXHJcbiAgICAnJyArIHBhcnNlSW50KGtleSwgMTApID09PSBrZXk7XHJcbmNvbnN0IGlzUmVzZXJ2ZWRQcm9wID0gLyojX19QVVJFX18qLyBtYWtlTWFwKFxyXG4vLyB0aGUgbGVhZGluZyBjb21tYSBpcyBpbnRlbnRpb25hbCBzbyBlbXB0eSBzdHJpbmcgXCJcIiBpcyBhbHNvIGluY2x1ZGVkXHJcbicsa2V5LHJlZixyZWZfZm9yLHJlZl9rZXksJyArXHJcbiAgICAnb25Wbm9kZUJlZm9yZU1vdW50LG9uVm5vZGVNb3VudGVkLCcgK1xyXG4gICAgJ29uVm5vZGVCZWZvcmVVcGRhdGUsb25Wbm9kZVVwZGF0ZWQsJyArXHJcbiAgICAnb25Wbm9kZUJlZm9yZVVubW91bnQsb25Wbm9kZVVubW91bnRlZCcpO1xyXG5jb25zdCBpc0J1aWx0SW5EaXJlY3RpdmUgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ2JpbmQsY2xvYWssZWxzZS1pZixlbHNlLGZvcixodG1sLGlmLG1vZGVsLG9uLG9uY2UscHJlLHNob3csc2xvdCx0ZXh0LG1lbW8nKTtcclxuY29uc3QgY2FjaGVTdHJpbmdGdW5jdGlvbiA9IChmbikgPT4ge1xyXG4gICAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgcmV0dXJuICgoc3RyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGl0ID0gY2FjaGVbc3RyXTtcclxuICAgICAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSk7XHJcbiAgICB9KTtcclxufTtcclxuY29uc3QgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBjYW1lbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4ge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUsIChfLCBjKSA9PiAoYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnKSk7XHJcbn0pO1xyXG5jb25zdCBoeXBoZW5hdGVSRSA9IC9cXEIoW0EtWl0pL2c7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgaHlwaGVuYXRlID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiBzdHIucmVwbGFjZShoeXBoZW5hdGVSRSwgJy0kMScpLnRvTG93ZXJDYXNlKCkpO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IGNhcGl0YWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKSk7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgdG9IYW5kbGVyS2V5ID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiBzdHIgPyBgb24ke2NhcGl0YWxpemUoc3RyKX1gIDogYGApO1xyXG4vLyBjb21wYXJlIHdoZXRoZXIgYSB2YWx1ZSBoYXMgY2hhbmdlZCwgYWNjb3VudGluZyBmb3IgTmFOLlxyXG5jb25zdCBoYXNDaGFuZ2VkID0gKHZhbHVlLCBvbGRWYWx1ZSkgPT4gIU9iamVjdC5pcyh2YWx1ZSwgb2xkVmFsdWUpO1xyXG5jb25zdCBpbnZva2VBcnJheUZucyA9IChmbnMsIGFyZykgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmbnNbaV0oYXJnKTtcclxuICAgIH1cclxufTtcclxuY29uc3QgZGVmID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxufTtcclxuY29uc3QgdG9OdW1iZXIgPSAodmFsKSA9PiB7XHJcbiAgICBjb25zdCBuID0gcGFyc2VGbG9hdCh2YWwpO1xyXG4gICAgcmV0dXJuIGlzTmFOKG4pID8gdmFsIDogbjtcclxufTtcclxubGV0IF9nbG9iYWxUaGlzO1xyXG5jb25zdCBnZXRHbG9iYWxUaGlzID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIChfZ2xvYmFsVGhpcyB8fFxyXG4gICAgICAgIChfZ2xvYmFsVGhpcyA9XHJcbiAgICAgICAgICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgPyBnbG9iYWxUaGlzXHJcbiAgICAgICAgICAgICAgICA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gc2VsZlxyXG4gICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB3aW5kb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnbG9iYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pKTtcclxufTtcblxuZXhwb3J0IHsgRU1QVFlfQVJSLCBFTVBUWV9PQkosIE5PLCBOT09QLCBQYXRjaEZsYWdOYW1lcywgY2FtZWxpemUsIGNhcGl0YWxpemUsIGRlZiwgZXNjYXBlSHRtbCwgZXNjYXBlSHRtbENvbW1lbnQsIGV4dGVuZCwgZ2VuZXJhdGVDb2RlRnJhbWUsIGdldEdsb2JhbFRoaXMsIGhhc0NoYW5nZWQsIGhhc093biwgaHlwaGVuYXRlLCBpbmNsdWRlQm9vbGVhbkF0dHIsIGludm9rZUFycmF5Rm5zLCBpc0FycmF5LCBpc0Jvb2xlYW5BdHRyLCBpc0J1aWx0SW5EaXJlY3RpdmUsIGlzRGF0ZSwgaXNGdW5jdGlvbiwgaXNHbG9iYWxseVdoaXRlbGlzdGVkLCBpc0hUTUxUYWcsIGlzSW50ZWdlcktleSwgaXNLbm93bkh0bWxBdHRyLCBpc0tub3duU3ZnQXR0ciwgaXNNYXAsIGlzTW9kZWxMaXN0ZW5lciwgaXNOb1VuaXROdW1lcmljU3R5bGVQcm9wLCBpc09iamVjdCwgaXNPbiwgaXNQbGFpbk9iamVjdCwgaXNQcm9taXNlLCBpc1Jlc2VydmVkUHJvcCwgaXNTU1JTYWZlQXR0ck5hbWUsIGlzU1ZHVGFnLCBpc1NldCwgaXNTcGVjaWFsQm9vbGVhbkF0dHIsIGlzU3RyaW5nLCBpc1N5bWJvbCwgaXNWb2lkVGFnLCBsb29zZUVxdWFsLCBsb29zZUluZGV4T2YsIG1ha2VNYXAsIG5vcm1hbGl6ZUNsYXNzLCBub3JtYWxpemVQcm9wcywgbm9ybWFsaXplU3R5bGUsIG9iamVjdFRvU3RyaW5nLCBwYXJzZVN0cmluZ1N0eWxlLCBwcm9wc1RvQXR0ck1hcCwgcmVtb3ZlLCBzbG90RmxhZ3NUZXh0LCBzdHJpbmdpZnlTdHlsZSwgdG9EaXNwbGF5U3RyaW5nLCB0b0hhbmRsZXJLZXksIHRvTnVtYmVyLCB0b1Jhd1R5cGUsIHRvVHlwZVN0cmluZyB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vue/shared/dist/shared.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vuelidate/core/dist/index.esm.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/@vuelidate/core/dist/index.esm.js ***!
|
||
\********************************************************/
|
||
/*! exports provided: CollectFlag, default, useVuelidate */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CollectFlag\", function() { return CollectFlag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return useVuelidate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useVuelidate\", function() { return useVuelidate; });\n/* harmony import */ var vue_demi__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-demi */ \"./node_modules/vue-demi/lib/index.mjs\");\n\n\nfunction unwrapObj(obj) {\n let ignoreKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return Object.keys(obj).reduce((o, k) => {\n if (ignoreKeys.includes(k)) return o;\n o[k] = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(obj[k]);\n return o;\n }, {});\n}\nfunction isFunction(val) {\n return typeof val === 'function';\n}\nfunction isProxy(value) {\n return Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"isReactive\"])(value) || Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"isReadonly\"])(value);\n}\n\n/**\n * Response form a raw Validator function.\n * Should return a Boolean or an object with $invalid property.\n * @typedef {Boolean | { $valid: Boolean }} ValidatorResponse\n */\n\n/**\n * Calls a validation rule by unwrapping its value first from a ref.\n * @param {Validator} rule\n * @param {Ref} value\n * @param {VueInstance} instance\n * @param {Object} siblingState\n * @return {Promise<ValidatorResponse> | ValidatorResponse}\n */\n\nfunction callRule(rule, value, siblingState, instance) {\n return rule.call(instance, Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(value), Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(siblingState), instance);\n}\n/**\n * Normalizes the validator result\n * Allows passing a boolean of an object like `{ $valid: Boolean }`\n * @param {ValidatorResponse} result - Validator result\n * @return {boolean}\n */\n\n\nfunction normalizeValidatorResponse(result) {\n return result.$valid !== undefined ? !result.$valid : !result;\n}\n/**\n * Returns the result of an async validator.\n * @param {Validator} rule\n * @param {Ref<*>} model\n * @param {Ref<Boolean>} $pending\n * @param {Ref<Boolean>} $dirty\n * @param {GlobalConfig} config\n * @param {boolean} config.$lazy\n * @param {Ref<*>} $response\n * @param {VueInstance} instance\n * @param {Ref<*>[]} watchTargets\n * @param {Object} siblingState\n * @param {Ref<Boolean>} $lastInvalidState\n * @param {Ref<Number>} $lastCommittedOn\n * @return {{ $invalid: Ref<Boolean>, $unwatch: WatchStopHandle }}\n */\n\n\nfunction createAsyncResult(rule, model, $pending, $dirty, _ref, $response, instance) {\n let {\n $lazy,\n $rewardEarly\n } = _ref;\n let watchTargets = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : [];\n let siblingState = arguments.length > 8 ? arguments[8] : undefined;\n let $lastInvalidState = arguments.length > 9 ? arguments[9] : undefined;\n let $lastCommittedOn = arguments.length > 10 ? arguments[10] : undefined;\n const $invalid = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(!!$dirty.value);\n const $pendingCounter = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(0);\n $pending.value = false;\n const $unwatch = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])([model, $dirty].concat(watchTargets, $lastCommittedOn), () => {\n if ( // if $lazy and not dirty, return\n $lazy && !$dirty.value || // if in $rewardEarly mode and no previous errors, nothing pending, return\n $rewardEarly && !$lastInvalidState.value && !$pending.value) {\n return;\n }\n\n let ruleResult; // make sure we dont break if a validator throws\n\n try {\n ruleResult = callRule(rule, model, siblingState, instance);\n } catch (err) {\n // convert to a promise, so we can handle it async\n ruleResult = Promise.reject(err);\n }\n\n $pendingCounter.value++;\n $pending.value = !!$pendingCounter.value; // ensure $invalid is false, while validator is resolving\n\n $invalid.value = false;\n Promise.resolve(ruleResult).then(data => {\n $pendingCounter.value--;\n $pending.value = !!$pendingCounter.value;\n $response.value = data;\n $invalid.value = normalizeValidatorResponse(data);\n }).catch(error => {\n $pendingCounter.value--;\n $pending.value = !!$pendingCounter.value;\n $response.value = error;\n $invalid.value = true;\n });\n }, {\n immediate: true,\n deep: typeof model === 'object'\n });\n return {\n $invalid,\n $unwatch\n };\n}\n/**\n * Returns the result of a sync validator\n * @param {Validator} rule\n * @param {Ref<*>} model\n * @param {Ref<Boolean>} $dirty\n * @param {GlobalConfig} config\n * @param {Boolean} config.$lazy\n * @param {Ref<*>} $response\n * @param {VueInstance} instance\n * @param {Object} siblingState\n * @param {Ref<Boolean>} $lastInvalidState\n * @return {{$unwatch: (function(): {}), $invalid: ComputedRef<boolean>}}\n */\n\n\nfunction createSyncResult(rule, model, $dirty, _ref2, $response, instance, siblingState, $lastInvalidState) {\n let {\n $lazy,\n $rewardEarly\n } = _ref2;\n\n const $unwatch = () => ({});\n\n const $invalid = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\n if ( // return early if $lazy mode and not touched\n $lazy && !$dirty.value || // If $rewardEarly mode is ON and last invalid was false (no error), return it.\n // If we want to invalidate, we just flip the last state to true, causing the computed to run again\n $rewardEarly && !$lastInvalidState.value) {\n return false;\n }\n\n let returnValue = true;\n\n try {\n const result = callRule(rule, model, siblingState, instance);\n $response.value = result;\n returnValue = normalizeValidatorResponse(result);\n } catch (err) {\n $response.value = err;\n }\n\n return returnValue;\n });\n return {\n $unwatch,\n $invalid\n };\n}\n/**\n * Returns the validation result.\n * Detects async and sync validators.\n * @param {NormalizedValidator} rule\n * @param {Ref<*>} model\n * @param {Ref<boolean>} $dirty\n * @param {GlobalConfig} config - Vuelidate config\n * @param {VueInstance} instance - component instance\n * @param {string} validatorName - name of the current validator\n * @param {string} propertyKey - the current property we are validating\n * @param {string} propertyPath - the deep path to the validated property\n * @param {Object} siblingState\n * @param {Ref<Boolean>} $lastInvalidState - the last invalid state\n * @param {Ref<Number>} $lastCommittedOn - the last time $commit was called\n * @return {{ $params: *, $message: Ref<String>, $pending: Ref<Boolean>, $invalid: Ref<Boolean>, $response: Ref<*>, $unwatch: WatchStopHandle }}\n */\n\n\nfunction createValidatorResult(rule, model, $dirty, config, instance, validatorName, propertyKey, propertyPath, siblingState, $lastInvalidState, $lastCommittedOn) {\n const $pending = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(false);\n const $params = rule.$params || {};\n const $response = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(null);\n let $invalid;\n let $unwatch;\n\n if (rule.$async) {\n ({\n $invalid,\n $unwatch\n } = createAsyncResult(rule.$validator, model, $pending, $dirty, config, $response, instance, rule.$watchTargets, siblingState, $lastInvalidState, $lastCommittedOn));\n } else {\n ({\n $invalid,\n $unwatch\n } = createSyncResult(rule.$validator, model, $dirty, config, $response, instance, siblingState, $lastInvalidState));\n }\n\n const message = rule.$message;\n const $message = isFunction(message) ? Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => message(unwrapObj({\n $pending,\n $invalid,\n $params: unwrapObj($params),\n // $params can hold refs, so we unwrap them for easy access\n $model: model,\n $response,\n $validator: validatorName,\n $propertyPath: propertyPath,\n $property: propertyKey\n }))) : message || '';\n return {\n $message,\n $params,\n $pending,\n $invalid,\n $response,\n $unwatch\n };\n}\n\n/**\n * Sorts a validation definition into rules, configs and nested validators.\n * @param {Object<NormalizedValidator|Function>} validationsRaw\n * @return {{ rules: Object<NormalizedValidator>, nestedValidators: Object, config: GlobalConfig }}\n */\n\nfunction sortValidations() {\n let validationsRaw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const validations = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(validationsRaw);\n const validationKeys = Object.keys(validations);\n const rules = {};\n const nestedValidators = {};\n const config = {};\n validationKeys.forEach(key => {\n const v = validations[key];\n\n switch (true) {\n // If it is already normalized, use it\n case isFunction(v.$validator):\n rules[key] = v;\n break;\n // If it is just a function, normalize it first\n // into { $validator: <Fun> }\n\n case isFunction(v):\n rules[key] = {\n $validator: v\n };\n break;\n // Catch $-prefixed properties as config\n\n case key.startsWith('$'):\n config[key] = v;\n break;\n // If it doesn’t match any of the above,\n // treat as nestedValidators state property\n\n default:\n nestedValidators[key] = v;\n }\n });\n return {\n rules,\n nestedValidators,\n config\n };\n}\n\nfunction _empty() {}\n\nconst ROOT_PATH = '__root';\n/** @typedef {import('vue-demi').ComponentPublicInstance} VueInstance */\n\n/** @typedef {import('vue-demi').ComputedRef} ComputedRef */\n\n/** @typedef {import('vue-demi').UnwrapRef} UnwrapRef */\n\n/** @typedef {import('vue-demi').WatchStopHandle} WatchStopHandle */\n\n/** @typedef {import('vue-demi').WritableComputedRef} WritableComputedRef */\n\n/** @typedef {import('vue-demi').UnwrapNestedRefs} UnwrapNestedRefs */\n\n/**\n * @typedef NormalizedValidator\n * @property {Validator} $validator\n * @property {String | Ref<String> | function(*): string} [$message]\n * @property {Object | Ref<Object>} [$params]\n * @property {Object | Ref<Object>} [$async]\n * @property {Ref<*>[]} [$watchTargets]\n */\n\n/**\n * Raw validator function, before being normalized\n * Can return a Promise or a {@see ValidatorResponse}\n * @typedef {function(*): ((Promise<ValidatorResponse> | ValidatorResponse))} Validator\n */\n\n/**\n * @typedef ErrorObject\n * @property {Ref<String>} $message - Reactive error message\n * @property {Ref<Object>} $params - Params passed from withParams\n * @property {Ref<Boolean>} $pending - If validation is pending\n * @property {String} $property - State key\n * @property {String} $propertyPath - Dot notation path to state\n * @property {String} $validator - Validator name\n * @property {String} $uid - Unique identifier\n */\n\n/**\n * @typedef ValidationResult\n * @property {Ref<Boolean>} $pending\n * @property {Ref<Boolean>} $dirty\n * @property {Ref<Boolean>} $invalid\n * @property {Ref<Boolean>} $error\n * @property {Ref<String>} $path\n * @property {Function} $touch\n * @property {Function} $reset\n * @property {ComputedRef<ErrorObject[]>} $errors\n * @property {ComputedRef<ErrorObject[]>} $silentErrors\n * @property {Function} $commit\n */\n\n/**\n * Creates the main Validation Results object for a state tree\n * Walks the tree's top level branches\n * @param {Object<NormalizedValidator>} rules - Rules for the current state tree\n * @param {Object} model - Current state value\n * @param {String} key - Key for the current state tree\n * @param {ResultsStorage} [resultsCache] - A cache map of all the validators\n * @param {String} [path] - the current property path\n * @param {GlobalConfig} [config] - the config object\n * @param {VueInstance} instance\n * @param {ComputedRef<Object>} externalResults\n * @param {Object} siblingState\n * @return {ValidationResult | {}}\n */\n\nfunction _call(body, then, direct) {\n if (direct) {\n return then ? then(body()) : body();\n }\n\n try {\n var result = Promise.resolve(body());\n return then ? result.then(then) : result;\n } catch (e) {\n return Promise.reject(e);\n }\n}\n/**\n * Collects the validation results of all nested state properties\n * @param {Object<NormalizedValidator|Function>} validations - The validation\n * @param {Object} nestedState - Current state\n * @param {String} path - Path to current property\n * @param {ResultsStorage} resultsCache - Validations cache map\n * @param {GlobalConfig} config - The config object\n * @param {VueInstance} instance - The current Vue instance\n * @param {ComputedRef<object>} nestedExternalResults - The external results for this nested collection\n * @return {Object<string, VuelidateState>}\n */\n\n\nfunction _callIgnored(body, direct) {\n return _call(body, _empty, direct);\n}\n\nfunction _invoke(body, then) {\n var result = body();\n\n if (result && result.then) {\n return result.then(then);\n }\n\n return then(result);\n}\n\nfunction _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nfunction createValidationResults(rules, model, key, resultsCache, path, config, instance, externalResults, siblingState) {\n // collect the property keys\n const ruleKeys = Object.keys(rules);\n const cachedResult = resultsCache.get(path, rules);\n const $dirty = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(false); // state for the $rewardEarly option\n\n /** The last invalid state of this property */\n\n const $lastInvalidState = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(false);\n /** The last time $commit was called. Used to re-trigger async calls */\n\n const $lastCommittedOn = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])(0);\n\n if (cachedResult) {\n // if the rules are the same as before, use the cached results\n if (!cachedResult.$partial) return cachedResult; // remove old watchers\n\n cachedResult.$unwatch(); // use the `$dirty.value`, so we dont save references by accident\n\n $dirty.value = cachedResult.$dirty.value;\n }\n\n const result = {\n // restore $dirty from cache\n $dirty,\n $path: path,\n $touch: () => {\n if (!$dirty.value) $dirty.value = true;\n },\n $reset: () => {\n if ($dirty.value) $dirty.value = false;\n },\n $commit: () => {}\n };\n /**\n * If there are no validation rules, it is most likely\n * a top level state, aka root\n */\n\n if (!ruleKeys.length) {\n // if there are cached results, we should overwrite them with the new ones\n cachedResult && resultsCache.set(path, rules, result);\n return result;\n }\n\n ruleKeys.forEach(ruleKey => {\n result[ruleKey] = createValidatorResult(rules[ruleKey], model, result.$dirty, config, instance, ruleKey, key, path, siblingState, $lastInvalidState, $lastCommittedOn);\n });\n result.$externalResults = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\n if (!externalResults.value) return [];\n return [].concat(externalResults.value).map((stringError, index) => ({\n $propertyPath: path,\n $property: key,\n $validator: '$externalResults',\n $uid: `${path}-externalResult-${index}`,\n $message: stringError,\n $params: {},\n $response: null,\n $pending: false\n }));\n });\n result.$invalid = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\n const r = ruleKeys.some(ruleKey => Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(result[ruleKey].$invalid)); // cache the last invalid state\n\n $lastInvalidState.value = r;\n return !!result.$externalResults.value.length || r;\n });\n result.$pending = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => ruleKeys.some(ruleKey => Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(result[ruleKey].$pending)));\n result.$error = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => result.$dirty.value ? result.$pending.value || result.$invalid.value : false);\n result.$silentErrors = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => ruleKeys.filter(ruleKey => Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(result[ruleKey].$invalid)).map(ruleKey => {\n const res = result[ruleKey];\n return Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"])({\n $propertyPath: path,\n $property: key,\n $validator: ruleKey,\n $uid: `${path}-${ruleKey}`,\n $message: res.$message,\n $params: res.$params,\n $response: res.$response,\n $pending: res.$pending\n });\n }).concat(result.$externalResults.value));\n result.$errors = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => result.$dirty.value ? result.$silentErrors.value : []);\n\n result.$unwatch = () => ruleKeys.forEach(ruleKey => {\n result[ruleKey].$unwatch();\n });\n\n result.$commit = () => {\n $lastInvalidState.value = true;\n $lastCommittedOn.value = Date.now();\n };\n\n resultsCache.set(path, rules, result);\n return result;\n}\n\nfunction collectNestedValidationResults(validations, nestedState, path, resultsCache, config, instance, nestedExternalResults) {\n const nestedValidationKeys = Object.keys(validations); // if we have no state, return empty object\n\n if (!nestedValidationKeys.length) return {};\n return nestedValidationKeys.reduce((results, nestedKey) => {\n // build validation results for nested state\n results[nestedKey] = setValidations({\n validations: validations[nestedKey],\n state: nestedState,\n key: nestedKey,\n parentKey: path,\n resultsCache,\n globalConfig: config,\n instance,\n externalResults: nestedExternalResults\n });\n return results;\n }, {});\n}\n/**\n * Generates the Meta fields from the results\n * @param {ValidationResult|{}} results\n * @param {Object.<string, VuelidateState>} nestedResults\n * @param {Object.<string, ValidationResult>} childResults\n * @return {{$anyDirty: Ref<Boolean>, $error: Ref<Boolean>, $invalid: Ref<Boolean>, $errors: Ref<ErrorObject[]>, $dirty: Ref<Boolean>, $touch: Function, $reset: Function }}\n */\n\n\nfunction createMetaFields(results, nestedResults, childResults) {\n const allResults = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => [nestedResults, childResults].filter(res => res).reduce((allRes, res) => {\n return allRes.concat(Object.values(Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(res)));\n }, [])); // returns `$dirty` as true, if all children are dirty\n\n const $dirty = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])({\n get() {\n return results.$dirty.value || (allResults.value.length ? allResults.value.every(r => r.$dirty) : false);\n },\n\n set(v) {\n results.$dirty.value = v;\n }\n\n });\n const $silentErrors = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\n // current state level errors, fallback to empty array if root\n const modelErrors = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(results.$silentErrors) || []; // collect all nested and child $silentErrors\n\n const nestedErrors = allResults.value.filter(result => (Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(result).$silentErrors || []).length).reduce((errors, result) => {\n return errors.concat(...result.$silentErrors);\n }, []); // merge the $silentErrors\n\n return modelErrors.concat(nestedErrors);\n });\n const $errors = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\n // current state level errors, fallback to empty array if root\n const modelErrors = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(results.$errors) || []; // collect all nested and child $errors\n\n const nestedErrors = allResults.value.filter(result => (Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(result).$errors || []).length).reduce((errors, result) => {\n return errors.concat(...result.$errors);\n }, []); // merge the $errors\n\n return modelErrors.concat(nestedErrors);\n });\n const $invalid = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => // if any of the nested values is invalid\n allResults.value.some(r => r.$invalid) || // or if the current state is invalid\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(results.$invalid) || // fallback to false if is root\n false);\n const $pending = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => // if any of the nested values is pending\n allResults.value.some(r => Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(r.$pending)) || // if any of the current state validators is pending\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(results.$pending) || // fallback to false if is root\n false);\n const $anyDirty = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => allResults.value.some(r => r.$dirty) || allResults.value.some(r => r.$anyDirty) || $dirty.value);\n const $error = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => $dirty.value ? $pending.value || $invalid.value : false);\n\n const $touch = () => {\n // call the root $touch\n results.$touch(); // call all nested level $touch\n\n allResults.value.forEach(result => {\n result.$touch();\n });\n };\n\n const $commit = () => {\n // call the root $touch\n results.$commit(); // call all nested level $touch\n\n allResults.value.forEach(result => {\n result.$commit();\n });\n };\n\n const $reset = () => {\n // reset the root $dirty state\n results.$reset(); // reset all the children $dirty states\n\n allResults.value.forEach(result => {\n result.$reset();\n });\n }; // Ensure that if all child and nested results are $dirty, this also becomes $dirty\n\n\n if (allResults.value.length && allResults.value.every(nr => nr.$dirty)) $touch();\n return {\n $dirty,\n $errors,\n $invalid,\n $anyDirty,\n $error,\n $pending,\n $touch,\n $reset,\n $silentErrors,\n $commit\n };\n}\n/**\n * @typedef VuelidateState\n * @property {WritableComputedRef<any>} $model\n * @property {ComputedRef<Boolean>} $dirty\n * @property {ComputedRef<Boolean>} $error\n * @property {ComputedRef<ErrorObject[]>} $errors\n * @property {ComputedRef<Boolean>} $invalid\n * @property {ComputedRef<Boolean>} $anyDirty\n * @property {ComputedRef<Boolean>} $pending\n * @property {Function} $touch\n * @property {Function} $reset\n * @property {String} $path\n * @property {ComputedRef<ErrorObject[]>} $silentErrors\n * @property {Function} [$validate]\n * @property {Function} [$getResultsForChild]\n * @property {Object.<string, VuelidateState>}\n */\n\n/**\n * Main Vuelidate bootstrap function.\n * Used both for Composition API in `setup` and for Global App usage.\n * Used to collect validation state, when walking recursively down the state tree\n * @param {Object} params\n * @param {Object<NormalizedValidator|Function>} params.validations\n * @param {Object} params.state\n * @param {String} [params.key] - Current state property key. Used when being called on nested items\n * @param {String} [params.parentKey] - Parent state property key. Used when being called recursively\n * @param {Object<string, ValidationResult>} [params.childResults] - Used to collect child results.\n * @param {ResultsStorage} params.resultsCache - The cached validation results\n * @param {VueInstance} params.instance - The current Vue instance\n * @param {GlobalConfig} params.globalConfig - The validation config, passed to this setValidations instance.\n * @param {UnwrapNestedRefs<object> | Ref<Object>} params.externalResults - External validation results\n * @return {UnwrapNestedRefs<VuelidateState>}\n */\n\n\nfunction setValidations(_ref) {\n /**\n * Executes the validators and returns the result.\n * @return {Promise<boolean>}\n */\n const $validate = _async(function () {\n $touch();\n return _invoke(function () {\n if (mergedConfig.$rewardEarly) {\n $commit(); // await the watchers\n\n return _callIgnored(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"nextTick\"]);\n }\n }, function () {\n // await the watchers\n return _call(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"nextTick\"], function () {\n return new Promise(resolve => {\n // return whether it is valid or not\n if (!$pending.value) return resolve(!$invalid.value);\n const unwatch = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])($pending, () => {\n resolve(!$invalid.value);\n unwatch();\n });\n });\n });\n });\n });\n /**\n * Returns a child component's results, based on registration name\n * @param {string} key\n * @return {VuelidateState}\n */\n\n\n let {\n validations,\n state,\n key,\n parentKey,\n childResults,\n resultsCache,\n globalConfig = {},\n instance,\n externalResults\n } = _ref;\n const path = parentKey ? `${parentKey}.${key}` : key; // Sort out the validation object into:\n // – rules = validators for current state tree fragment\n // — nestedValidators = nested state fragments keys that might contain more validators\n // – config = configuration properties that affect this state fragment\n\n const {\n rules,\n nestedValidators,\n config\n } = sortValidations(validations);\n const mergedConfig = Object.assign({}, globalConfig, config); // create protected state for cases when the state branch does not exist yet.\n // This protects when using the OptionsAPI as the data is bound after the setup method\n\n const nestedState = key ? Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\n const s = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(state);\n return s ? Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(s[key]) : undefined;\n }) : state; // cache the external results, so we can revert back to them\n\n const cachedExternalResults = Object.assign({}, Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(externalResults) || {});\n const nestedExternalResults = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\n const results = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(externalResults);\n if (!key) return results;\n return results ? Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(results[key]) : undefined;\n }); // Use rules for the current state fragment and validate it\n\n const results = createValidationResults(rules, nestedState, key, resultsCache, path, mergedConfig, instance, nestedExternalResults, state); // Use nested keys to repeat the process\n // *WARN*: This is recursive\n\n const nestedResults = collectNestedValidationResults(nestedValidators, nestedState, path, resultsCache, mergedConfig, instance, nestedExternalResults); // Collect and merge this level validation results\n // with all nested validation results\n\n const {\n $dirty,\n $errors,\n $invalid,\n $anyDirty,\n $error,\n $pending,\n $touch,\n $reset,\n $silentErrors,\n $commit\n } = createMetaFields(results, nestedResults, childResults);\n /**\n * If we have no `key`, this is the top level state\n * We dont need `$model` there.\n */\n\n const $model = key ? Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])({\n get: () => Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(nestedState),\n set: val => {\n $dirty.value = true;\n const s = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(state);\n const external = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(externalResults);\n\n if (external) {\n external[key] = cachedExternalResults[key];\n }\n\n if (Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(s[key])) {\n s[key].value = val;\n } else {\n s[key] = val;\n }\n }\n }) : null;\n\n if (key && mergedConfig.$autoDirty) {\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])(nestedState, () => {\n if (!$dirty.value) $touch();\n const external = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(externalResults);\n\n if (external) {\n external[key] = cachedExternalResults[key];\n }\n }, {\n flush: 'sync'\n });\n }\n\n function $getResultsForChild(key) {\n return (childResults.value || {})[key];\n }\n\n function $clearExternalResults() {\n if (Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(externalResults)) {\n externalResults.value = cachedExternalResults;\n } else {\n // if the external results state was empty, we need to delete every property, one by one\n if (Object.keys(cachedExternalResults).length === 0) {\n Object.keys(externalResults).forEach(k => {\n delete externalResults[k];\n });\n } else {\n // state was not empty, so we just assign it back into the current state\n Object.assign(externalResults, cachedExternalResults);\n }\n }\n }\n\n return Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"])(Object.assign({}, results, {\n // NOTE: The order here is very important, since we want to override\n // some of the *results* meta fields with the collective version of it\n // that includes the results of nested state validation results\n $model,\n $dirty,\n $error,\n $errors,\n $invalid,\n $anyDirty,\n $pending,\n $touch,\n $reset,\n $path: path || ROOT_PATH,\n $silentErrors,\n $validate,\n $commit\n }, childResults && {\n $getResultsForChild,\n $clearExternalResults\n }, nestedResults));\n}\n\nclass ResultsStorage {\n constructor() {\n this.storage = new Map();\n }\n /**\n * Stores a validation result, and its rules by its path\n * @param {String} path\n * @param {Object<NormalizedValidator>} rules\n * @param {ValidationResult} result\n */\n\n\n set(path, rules, result) {\n this.storage.set(path, {\n rules,\n result\n });\n }\n /**\n * Check if the stored `results` for the provided `path` have the same `rules` compared to 'storedRules'\n * @param {String} path\n * @param {Object<NormalizedValidator>} rules\n * @param {Object<NormalizedValidator>} storedRules\n * @return {Boolean}\n */\n\n\n checkRulesValidity(path, rules, storedRules) {\n const storedRulesKeys = Object.keys(storedRules);\n const newRulesKeys = Object.keys(rules);\n if (newRulesKeys.length !== storedRulesKeys.length) return false;\n const hasAllValidators = newRulesKeys.every(ruleKey => storedRulesKeys.includes(ruleKey));\n if (!hasAllValidators) return false;\n return newRulesKeys.every(ruleKey => {\n if (!rules[ruleKey].$params) return true;\n return Object.keys(rules[ruleKey].$params).every(paramKey => {\n // make sure to unwrap before comparing\n return Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(storedRules[ruleKey].$params[paramKey]) === Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(rules[ruleKey].$params[paramKey]);\n });\n });\n }\n /**\n * Returns the matched result if catche is valid\n * @param {String} path\n * @param {Object<NormalizedValidator>} rules\n * @return {{$partial: boolean, $dirty: Ref<Boolean>, $unwatch: function}|undefined|ValidationResult}\n */\n\n\n get(path, rules) {\n const storedRuleResultPair = this.storage.get(path);\n if (!storedRuleResultPair) return undefined;\n const {\n rules: storedRules,\n result\n } = storedRuleResultPair;\n const isValidCache = this.checkRulesValidity(path, rules, storedRules);\n const $unwatch = result.$unwatch ? result.$unwatch : () => ({});\n if (!isValidCache) return {\n $dirty: result.$dirty,\n $partial: true,\n $unwatch\n };\n return result;\n }\n\n}\n\nconst CollectFlag = {\n COLLECT_ALL: true,\n COLLECT_NONE: false\n};\nconst VuelidateInjectChildResults = Symbol('vuelidate#injectChildResults');\nconst VuelidateRemoveChildResults = Symbol('vuelidate#removeChildResults');\n/**\n * Create helpers to collect validation state from child components\n * @param {Object} params\n * @param {String | Number | Boolean} params.$scope - Parent component scope\n * @return {{sendValidationResultsToParent: function[], childResults: ComputedRef<Object>, removeValidationResultsFromParent: function[]}}\n */\n\nfunction nestedValidations(_ref) {\n let {\n $scope,\n instance\n } = _ref;\n const childResultsRaw = {};\n const childResultsKeys = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])([]);\n const childResults = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => childResultsKeys.value.reduce((results, key) => {\n results[key] = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(childResultsRaw[key]);\n return results;\n }, {}));\n /**\n * Allows children to send validation data up to their parent.\n * @param {Object} results - the results\n * @param {Object} args\n * @param {String} args.$registerAs - the $registeredAs key\n * @param {String | Number | Boolean} args.$scope - the $scope key\n */\n\n function injectChildResultsIntoParent(results, _ref2) {\n let {\n $registerAs: key,\n $scope: childScope,\n $stopPropagation\n } = _ref2;\n if ($stopPropagation || $scope === CollectFlag.COLLECT_NONE || childScope === CollectFlag.COLLECT_NONE || $scope !== CollectFlag.COLLECT_ALL && $scope !== childScope) return;\n childResultsRaw[key] = results;\n childResultsKeys.value.push(key);\n } // combine with other `injectChildResultsIntoParent` from vuelidate instances in this Vue component instance\n\n\n instance.__vuelidateInjectInstances = [].concat(instance.__vuelidateInjectInstances || [], injectChildResultsIntoParent);\n /**\n * Allows children to remove the validation data from their parent, before getting destroyed.\n * @param {String} key - the registeredAs key\n */\n\n function removeChildResultsFromParent(key) {\n // remove the key\n childResultsKeys.value = childResultsKeys.value.filter(childKey => childKey !== key); // remove the stored data for the key\n\n delete childResultsRaw[key];\n } // combine with other `removeChildResultsFromParent` from vuelidate instances in this Vue component instance\n\n\n instance.__vuelidateRemoveInstances = [].concat(instance.__vuelidateRemoveInstances || [], removeChildResultsFromParent); // inject the `injectChildResultsIntoParent` method, into the current scope\n\n const sendValidationResultsToParent = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(VuelidateInjectChildResults, []); // provide to all of its children the send results to parent function\n\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"provide\"])(VuelidateInjectChildResults, instance.__vuelidateInjectInstances);\n const removeValidationResultsFromParent = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(VuelidateRemoveChildResults, []); // provide to all of its children the remove results function\n\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"provide\"])(VuelidateRemoveChildResults, instance.__vuelidateRemoveInstances);\n return {\n childResults,\n sendValidationResultsToParent,\n removeValidationResultsFromParent\n };\n}\n\n/**\n * Helper proxy for instance property access. It makes every reference\n * reactive for the validation function\n * @param target\n * @return {*|ComputedRef<*>}\n */\n\nfunction ComputedProxyFactory(target) {\n return new Proxy(target, {\n get(target, prop) {\n return typeof target[prop] === 'object' ? ComputedProxyFactory(target[prop]) : Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => target[prop]);\n }\n\n });\n}\n\n/**\n * @typedef GlobalConfig\n * @property {String} [$registerAs] - Config Object\n * @property {String | Number | Symbol} [$scope] - A scope to limit child component registration\n * @property {Boolean} [$stopPropagation] - Tells a Vue component to stop sending its results up to the parent\n * @property {Ref<Object>} [$externalResults] - External error messages, like from server validation.\n * @property {Boolean} [$autoDirty] - Should the form watch for state changed, and automatically set `$dirty` to true.\n * @property {Boolean} [$lazy] - Should the validations be lazy, and run only after they are dirty\n * @property {Boolean} [$rewardEarly] - Once valid, re-runs property validators only on manual calls of $commit\n */\n\n/**\n * Composition API compatible Vuelidate\n * Use inside the `setup` lifecycle hook\n * @param {Object | GlobalConfig} [validations] - Validations Object or the globalConfig.\n * @param {Object} [state] - State object - required if `validations` is a validation object.\n * @param {GlobalConfig} [globalConfig] - Config Object\n * @return {ComputedRef<*>}\n */\n\nfunction useVuelidate(validations, state) {\n let globalConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n // if we pass only one argument, its most probably the globalConfig.\n // This use case is so parents can just collect results of child forms.\n if (arguments.length === 1) {\n globalConfig = validations;\n validations = undefined;\n state = undefined;\n }\n\n let {\n $registerAs,\n $scope = CollectFlag.COLLECT_ALL,\n $stopPropagation,\n $externalResults,\n currentVueInstance\n } = globalConfig;\n const instance = currentVueInstance || Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"])();\n const componentOptions = instance ? instance.proxy.$options : {}; // if there is no registration name, add one.\n\n if (!$registerAs && instance) {\n // NOTE:\n // ._uid // Vue 2.x Composition-API plugin\n // .uid // Vue 3.0\n const uid = instance.uid || instance._uid;\n $registerAs = `_vuelidate_${uid}`;\n }\n\n const validationResults = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])({});\n const resultsCache = new ResultsStorage();\n const {\n childResults,\n sendValidationResultsToParent,\n removeValidationResultsFromParent\n } = instance ? nestedValidations({\n $scope,\n instance\n }) : {\n childResults: Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])({})\n }; // Options API\n\n if (!validations && componentOptions.validations) {\n const rules = componentOptions.validations;\n state = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])({});\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"onBeforeMount\"])(() => {\n // Delay binding state to validations defined with the Options API until mounting, when the data\n // has been attached to the component instance. From that point on it will be reactive.\n state.value = instance.proxy;\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])(() => isFunction(rules) ? rules.call(state.value, new ComputedProxyFactory(state.value)) : rules, validations => {\n validationResults.value = setValidations({\n validations,\n state,\n childResults,\n resultsCache,\n globalConfig,\n instance: instance.proxy,\n externalResults: $externalResults || instance.proxy.vuelidateExternalResults\n });\n }, {\n immediate: true\n });\n });\n globalConfig = componentOptions.validationsConfig || globalConfig;\n } else {\n const validationsWatchTarget = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"])(validations) || isProxy(validations) ? validations // wrap plain objects in a reactive, so we can track changes if they have computed in them.\n : Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"])(validations || {});\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])(validationsWatchTarget, newValidationRules => {\n validationResults.value = setValidations({\n validations: newValidationRules,\n state,\n childResults,\n resultsCache,\n globalConfig,\n instance: instance ? instance.proxy : {},\n externalResults: $externalResults\n });\n }, {\n immediate: true\n });\n }\n\n if (instance) {\n // send all the data to the parent when the function is invoked inside setup.\n sendValidationResultsToParent.forEach(f => f(validationResults, {\n $registerAs,\n $scope,\n $stopPropagation\n })); // before this component is destroyed, remove all the data from the parent.\n\n Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"onBeforeUnmount\"])(() => removeValidationResultsFromParent.forEach(f => f($registerAs)));\n }\n\n return Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\n return Object.assign({}, Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(validationResults.value), childResults.value);\n });\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZWxpZGF0ZS9jb3JlL2Rpc3QvaW5kZXguZXNtLmpzPzI1YTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErSzs7QUFFL0s7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHNEQUFLO0FBQ2hCO0FBQ0EsR0FBRyxJQUFJO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMkRBQVUsV0FBVywyREFBVTtBQUN4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFdBQVcsbUJBQW1CO0FBQzNDOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxJQUFJO0FBQ2YsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7O0FBRUE7QUFDQSw2QkFBNkIsc0RBQUssU0FBUyxzREFBSztBQUNoRDtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Qsa0JBQWtCO0FBQ2xFLFdBQVcsa0JBQWtCO0FBQzdCLFlBQVk7QUFDWjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsT0FBTztBQUNsQixXQUFXLFlBQVk7QUFDdkIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxZQUFZO0FBQ3ZCLGFBQWE7QUFDYjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0RBQUc7QUFDdEIsMEJBQTBCLG9EQUFHO0FBQzdCO0FBQ0EsbUJBQW1CLHNEQUFLO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQixXQUFXLE9BQU87QUFDbEIsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSx5QkFBeUI7QUFDdEM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCw0QkFBNEI7O0FBRTVCLG1CQUFtQix5REFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0I7QUFDL0IsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxZQUFZO0FBQ3ZCLGFBQWE7QUFDYjs7O0FBR0E7QUFDQSxtQkFBbUIsb0RBQUc7QUFDdEI7QUFDQSxvQkFBb0Isb0RBQUc7QUFDdkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EseUNBQXlDLHlEQUFRO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcscUNBQXFDO0FBQ2hELGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCLHNEQUFLO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxjQUFjLDJDQUEyQzs7QUFFekQsY0FBYywrQkFBK0I7O0FBRTdDLGNBQWMsNkJBQTZCOztBQUUzQyxjQUFjLG1DQUFtQzs7QUFFakQsY0FBYyx1Q0FBdUM7O0FBRXJELGNBQWMsb0NBQW9DOztBQUVsRDtBQUNBO0FBQ0EsY0FBYyxVQUFVO0FBQ3hCLGNBQWMsMkNBQTJDO0FBQ3pELGNBQWMscUJBQXFCO0FBQ25DLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsU0FBUztBQUN2Qjs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLGFBQWEsZ0VBQWdFO0FBQzdFOztBQUVBO0FBQ0E7QUFDQSxjQUFjLFlBQVk7QUFDMUIsY0FBYyxZQUFZO0FBQzFCLGNBQWMsYUFBYTtBQUMzQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckI7O0FBRUE7QUFDQTtBQUNBLGNBQWMsYUFBYTtBQUMzQixjQUFjLGFBQWE7QUFDM0IsY0FBYyxhQUFhO0FBQzNCLGNBQWMsYUFBYTtBQUMzQixjQUFjLFlBQVk7QUFDMUIsY0FBYyxTQUFTO0FBQ3ZCLGNBQWMsU0FBUztBQUN2QixjQUFjLDJCQUEyQjtBQUN6QyxjQUFjLDJCQUEyQjtBQUN6QyxjQUFjLFNBQVM7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyw0QkFBNEI7QUFDdkMsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLGVBQWU7QUFDMUIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFlBQVk7QUFDdkIsV0FBVyxvQkFBb0I7QUFDL0IsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUNBQXFDO0FBQ2hELFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxlQUFlO0FBQzFCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFlBQVk7QUFDdkIsV0FBVyxvQkFBb0I7QUFDL0IsWUFBWTtBQUNaOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCLHNCQUFzQjtBQUNwRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0RBQUcsUUFBUTs7QUFFNUI7O0FBRUEsNEJBQTRCLG9EQUFHO0FBQy9COztBQUVBLDJCQUEyQixvREFBRzs7QUFFOUI7QUFDQTtBQUNBLG9EQUFvRDs7QUFFcEQsNEJBQTRCOztBQUU1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsNEJBQTRCLHlEQUFRO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEtBQUssa0JBQWtCLE1BQU07QUFDNUM7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsb0JBQW9CLHlEQUFRO0FBQzVCLHVDQUF1QyxzREFBSyw0QkFBNEI7O0FBRXhFO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsb0JBQW9CLHlEQUFRLGdDQUFnQyxzREFBSztBQUNqRSxrQkFBa0IseURBQVE7QUFDMUIseUJBQXlCLHlEQUFRLGtDQUFrQyxzREFBSztBQUN4RTtBQUNBLFdBQVcseURBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxLQUFLLEdBQUcsUUFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsbUJBQW1CLHlEQUFROztBQUUzQjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3REFBd0Q7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUcsSUFBSTtBQUNQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0JBQW9CO0FBQy9CLFdBQVcsZ0NBQWdDO0FBQzNDLFdBQVcsa0NBQWtDO0FBQzdDLGFBQWE7QUFDYjs7O0FBR0E7QUFDQSxxQkFBcUIseURBQVE7QUFDN0IsdUNBQXVDLHNEQUFLO0FBQzVDLEdBQUcsT0FBTzs7QUFFVixpQkFBaUIseURBQVE7QUFDekI7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSCx3QkFBd0IseURBQVE7QUFDaEM7QUFDQSx3QkFBd0Isc0RBQUssOEJBQThCOztBQUUzRCw0REFBNEQsc0RBQUs7QUFDakU7QUFDQSxLQUFLLE1BQU07O0FBRVg7QUFDQSxHQUFHO0FBQ0gsa0JBQWtCLHlEQUFRO0FBQzFCO0FBQ0Esd0JBQXdCLHNEQUFLLHdCQUF3Qjs7QUFFckQsNERBQTRELHNEQUFLO0FBQ2pFO0FBQ0EsS0FBSyxNQUFNOztBQUVYO0FBQ0EsR0FBRztBQUNILG1CQUFtQix5REFBUTtBQUMzQjtBQUNBLEVBQUUsc0RBQUs7QUFDUDtBQUNBLG1CQUFtQix5REFBUTtBQUMzQiw2QkFBNkIsc0RBQUs7QUFDbEMsRUFBRSxzREFBSztBQUNQO0FBQ0Esb0JBQW9CLHlEQUFRO0FBQzVCLGlCQUFpQix5REFBUTs7QUFFekI7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHlCQUF5QjtBQUN2QyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLDJCQUEyQjtBQUN6QyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLFNBQVM7QUFDdkIsY0FBYyxTQUFTO0FBQ3ZCLGNBQWMsT0FBTztBQUNyQixjQUFjLDJCQUEyQjtBQUN6QyxjQUFjLFNBQVM7QUFDdkIsY0FBYyxTQUFTO0FBQ3ZCLGNBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLHFDQUFxQztBQUNoRCxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLGlDQUFpQztBQUM1QyxXQUFXLGVBQWU7QUFDMUIsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsYUFBYTtBQUN4QixXQUFXLHVDQUF1QztBQUNsRCxZQUFZO0FBQ1o7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQiw0QkFBNEIsaURBQVE7QUFDcEM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxtQkFBbUIsaURBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLHNEQUFLO0FBQy9CO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYztBQUNkOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsR0FBRztBQUNILDhCQUE4QixVQUFVLEdBQUcsSUFBSSxRQUFRO0FBQ3ZEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCx1Q0FBdUMsd0JBQXdCO0FBQy9EOztBQUVBLDRCQUE0Qix5REFBUTtBQUNwQyxjQUFjLHNEQUFLO0FBQ25CLGVBQWUsc0RBQUs7QUFDcEIsR0FBRyxVQUFVOztBQUViLGdEQUFnRCxFQUFFLHNEQUFLLHVCQUF1QjtBQUM5RSxnQ0FBZ0MseURBQVE7QUFDeEMsb0JBQW9CLHNEQUFLO0FBQ3pCO0FBQ0EscUJBQXFCLHNEQUFLO0FBQzFCLEdBQUcsRUFBRTs7QUFFTCw2SUFBNkk7QUFDN0k7O0FBRUEseUpBQXlKO0FBQ3pKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLHlEQUFRO0FBQy9CLGVBQWUsc0RBQUs7QUFDcEI7QUFDQTtBQUNBLGdCQUFnQixzREFBSztBQUNyQix1QkFBdUIsc0RBQUs7O0FBRTVCO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLHNEQUFLO0FBQ2Y7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLElBQUksc0RBQUs7QUFDVDtBQUNBLHVCQUF1QixzREFBSzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0Esb0NBQW9DO0FBQ3BDOztBQUVBO0FBQ0EsUUFBUSxzREFBSztBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMseURBQVEsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsNEJBQTRCO0FBQ3pDLGFBQWEsaUJBQWlCO0FBQzlCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSw0QkFBNEI7QUFDekMsYUFBYSw0QkFBNEI7QUFDekMsY0FBYztBQUNkOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQUssNkNBQTZDLHNEQUFLO0FBQ3RFLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsNEJBQTRCO0FBQ3pDLGVBQWUsNERBQTREO0FBQzNFOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrRUFBa0U7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLDBCQUEwQjtBQUNyQyxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkIsb0RBQUc7QUFDOUIsdUJBQXVCLHlEQUFRO0FBQy9CLG1CQUFtQixzREFBSztBQUN4QjtBQUNBLEdBQUcsSUFBSTtBQUNQO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLDBCQUEwQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7QUFFQTtBQUNBO0FBQ0EseUZBQXlGOztBQUV6RjtBQUNBLEdBQUc7OztBQUdILDJIQUEySDs7QUFFM0gsd0NBQXdDLHVEQUFNLGtDQUFrQzs7QUFFaEYsRUFBRSx3REFBTztBQUNULDRDQUE0Qyx1REFBTSxrQ0FBa0M7O0FBRXBGLEVBQUUsd0RBQU87QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUZBQXFGLHlEQUFRO0FBQzdGOztBQUVBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMseUJBQXlCO0FBQ3ZDLGNBQWMsUUFBUTtBQUN0QixjQUFjLFlBQVk7QUFDMUIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFFBQVE7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxzQkFBc0I7QUFDakMsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixZQUFZO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gseUNBQXlDLG1FQUFrQjtBQUMzRCxtRUFBbUU7O0FBRW5FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsSUFBSTtBQUNwQzs7QUFFQSw0QkFBNEIsb0RBQUcsR0FBRztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsa0JBQWtCLG9EQUFHLEdBQUc7QUFDeEIsSUFBSTs7QUFFSjtBQUNBO0FBQ0EsWUFBWSxvREFBRyxHQUFHO0FBQ2xCLElBQUksOERBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzREFBSztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCxtQ0FBbUMsc0RBQUs7QUFDeEMsTUFBTSx5REFBUSxrQkFBa0I7QUFDaEMsSUFBSSxzREFBSztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxHQUFHOztBQUVSLElBQUksZ0VBQWU7QUFDbkI7O0FBRUEsU0FBUyx5REFBUTtBQUNqQiwyQkFBMkIsRUFBRSxzREFBSztBQUNsQyxHQUFHO0FBQ0g7O0FBRThEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0B2dWVsaWRhdGUvY29yZS9kaXN0L2luZGV4LmVzbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUmVhY3RpdmUsIGlzUmVhZG9ubHksIHVucmVmLCByZWYsIGNvbXB1dGVkLCB3YXRjaCwgcmVhY3RpdmUsIGlzUmVmLCBuZXh0VGljaywgaW5qZWN0LCBwcm92aWRlLCBnZXRDdXJyZW50SW5zdGFuY2UsIG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCB9IGZyb20gJ3Z1ZS1kZW1pJztcblxuZnVuY3Rpb24gdW53cmFwT2JqKG9iaikge1xuICBsZXQgaWdub3JlS2V5cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLnJlZHVjZSgobywgaykgPT4ge1xuICAgIGlmIChpZ25vcmVLZXlzLmluY2x1ZGVzKGspKSByZXR1cm4gbztcbiAgICBvW2tdID0gdW5yZWYob2JqW2tdKTtcbiAgICByZXR1cm4gbztcbiAgfSwge30pO1xufVxuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbic7XG59XG5mdW5jdGlvbiBpc1Byb3h5KHZhbHVlKSB7XG4gIHJldHVybiBpc1JlYWN0aXZlKHZhbHVlKSB8fCBpc1JlYWRvbmx5KHZhbHVlKTtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBmb3JtIGEgcmF3IFZhbGlkYXRvciBmdW5jdGlvbi5cbiAqIFNob3VsZCByZXR1cm4gYSBCb29sZWFuIG9yIGFuIG9iamVjdCB3aXRoICRpbnZhbGlkIHByb3BlcnR5LlxuICogQHR5cGVkZWYge0Jvb2xlYW4gfCB7ICR2YWxpZDogQm9vbGVhbiB9fSBWYWxpZGF0b3JSZXNwb25zZVxuICovXG5cbi8qKlxuICogQ2FsbHMgYSB2YWxpZGF0aW9uIHJ1bGUgYnkgdW53cmFwcGluZyBpdHMgdmFsdWUgZmlyc3QgZnJvbSBhIHJlZi5cbiAqIEBwYXJhbSB7VmFsaWRhdG9yfSBydWxlXG4gKiBAcGFyYW0ge1JlZn0gdmFsdWVcbiAqIEBwYXJhbSB7VnVlSW5zdGFuY2V9IGluc3RhbmNlXG4gKiBAcGFyYW0ge09iamVjdH0gc2libGluZ1N0YXRlXG4gKiBAcmV0dXJuIHtQcm9taXNlPFZhbGlkYXRvclJlc3BvbnNlPiB8IFZhbGlkYXRvclJlc3BvbnNlfVxuICovXG5cbmZ1bmN0aW9uIGNhbGxSdWxlKHJ1bGUsIHZhbHVlLCBzaWJsaW5nU3RhdGUsIGluc3RhbmNlKSB7XG4gIHJldHVybiBydWxlLmNhbGwoaW5zdGFuY2UsIHVucmVmKHZhbHVlKSwgdW5yZWYoc2libGluZ1N0YXRlKSwgaW5zdGFuY2UpO1xufVxuLyoqXG4gKiBOb3JtYWxpemVzIHRoZSB2YWxpZGF0b3IgcmVzdWx0XG4gKiBBbGxvd3MgcGFzc2luZyBhIGJvb2xlYW4gb2YgYW4gb2JqZWN0IGxpa2UgYHsgJHZhbGlkOiBCb29sZWFuIH1gXG4gKiBAcGFyYW0ge1ZhbGlkYXRvclJlc3BvbnNlfSByZXN1bHQgLSBWYWxpZGF0b3IgcmVzdWx0XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsaWRhdG9yUmVzcG9uc2UocmVzdWx0KSB7XG4gIHJldHVybiByZXN1bHQuJHZhbGlkICE9PSB1bmRlZmluZWQgPyAhcmVzdWx0LiR2YWxpZCA6ICFyZXN1bHQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBhbiBhc3luYyB2YWxpZGF0b3IuXG4gKiBAcGFyYW0ge1ZhbGlkYXRvcn0gcnVsZVxuICogQHBhcmFtIHtSZWY8Kj59IG1vZGVsXG4gKiBAcGFyYW0ge1JlZjxCb29sZWFuPn0gJHBlbmRpbmdcbiAqIEBwYXJhbSB7UmVmPEJvb2xlYW4+fSAkZGlydHlcbiAqIEBwYXJhbSB7R2xvYmFsQ29uZmlnfSBjb25maWdcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gY29uZmlnLiRsYXp5XG4gKiBAcGFyYW0ge1JlZjwqPn0gJHJlc3BvbnNlXG4gKiBAcGFyYW0ge1Z1ZUluc3RhbmNlfSBpbnN0YW5jZVxuICogQHBhcmFtIHtSZWY8Kj5bXX0gd2F0Y2hUYXJnZXRzXG4gKiBAcGFyYW0ge09iamVjdH0gc2libGluZ1N0YXRlXG4gKiBAcGFyYW0ge1JlZjxCb29sZWFuPn0gJGxhc3RJbnZhbGlkU3RhdGVcbiAqIEBwYXJhbSB7UmVmPE51bWJlcj59ICRsYXN0Q29tbWl0dGVkT25cbiAqIEByZXR1cm4ge3sgJGludmFsaWQ6IFJlZjxCb29sZWFuPiwgJHVud2F0Y2g6IFdhdGNoU3RvcEhhbmRsZSB9fVxuICovXG5cblxuZnVuY3Rpb24gY3JlYXRlQXN5bmNSZXN1bHQocnVsZSwgbW9kZWwsICRwZW5kaW5nLCAkZGlydHksIF9yZWYsICRyZXNwb25zZSwgaW5zdGFuY2UpIHtcbiAgbGV0IHtcbiAgICAkbGF6eSxcbiAgICAkcmV3YXJkRWFybHlcbiAgfSA9IF9yZWY7XG4gIGxldCB3YXRjaFRhcmdldHMgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IFtdO1xuICBsZXQgc2libGluZ1N0YXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDggPyBhcmd1bWVudHNbOF0gOiB1bmRlZmluZWQ7XG4gIGxldCAkbGFzdEludmFsaWRTdGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiA5ID8gYXJndW1lbnRzWzldIDogdW5kZWZpbmVkO1xuICBsZXQgJGxhc3RDb21taXR0ZWRPbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxMCA/IGFyZ3VtZW50c1sxMF0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0ICRpbnZhbGlkID0gcmVmKCEhJGRpcnR5LnZhbHVlKTtcbiAgY29uc3QgJHBlbmRpbmdDb3VudGVyID0gcmVmKDApO1xuICAkcGVuZGluZy52YWx1ZSA9IGZhbHNlO1xuICBjb25zdCAkdW53YXRjaCA9IHdhdGNoKFttb2RlbCwgJGRpcnR5XS5jb25jYXQod2F0Y2hUYXJnZXRzLCAkbGFzdENvbW1pdHRlZE9uKSwgKCkgPT4ge1xuICAgIGlmICggLy8gaWYgJGxhenkgYW5kIG5vdCBkaXJ0eSwgcmV0dXJuXG4gICAgJGxhenkgJiYgISRkaXJ0eS52YWx1ZSB8fCAvLyBpZiBpbiAkcmV3YXJkRWFybHkgbW9kZSBhbmQgbm8gcHJldmlvdXMgZXJyb3JzLCBub3RoaW5nIHBlbmRpbmcsIHJldHVyblxuICAgICRyZXdhcmRFYXJseSAmJiAhJGxhc3RJbnZhbGlkU3RhdGUudmFsdWUgJiYgISRwZW5kaW5nLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJ1bGVSZXN1bHQ7IC8vIG1ha2Ugc3VyZSB3ZSBkb250IGJyZWFrIGlmIGEgdmFsaWRhdG9yIHRocm93c1xuXG4gICAgdHJ5IHtcbiAgICAgIHJ1bGVSZXN1bHQgPSBjYWxsUnVsZShydWxlLCBtb2RlbCwgc2libGluZ1N0YXRlLCBpbnN0YW5jZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBjb252ZXJ0IHRvIGEgcHJvbWlzZSwgc28gd2UgY2FuIGhhbmRsZSBpdCBhc3luY1xuICAgICAgcnVsZVJlc3VsdCA9IFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfVxuXG4gICAgJHBlbmRpbmdDb3VudGVyLnZhbHVlKys7XG4gICAgJHBlbmRpbmcudmFsdWUgPSAhISRwZW5kaW5nQ291bnRlci52YWx1ZTsgLy8gZW5zdXJlICRpbnZhbGlkIGlzIGZhbHNlLCB3aGlsZSB2YWxpZGF0b3IgaXMgcmVzb2x2aW5nXG5cbiAgICAkaW52YWxpZC52YWx1ZSA9IGZhbHNlO1xuICAgIFByb21pc2UucmVzb2x2ZShydWxlUmVzdWx0KS50aGVuKGRhdGEgPT4ge1xuICAgICAgJHBlbmRpbmdDb3VudGVyLnZhbHVlLS07XG4gICAgICAkcGVuZGluZy52YWx1ZSA9ICEhJHBlbmRpbmdDb3VudGVyLnZhbHVlO1xuICAgICAgJHJlc3BvbnNlLnZhbHVlID0gZGF0YTtcbiAgICAgICRpbnZhbGlkLnZhbHVlID0gbm9ybWFsaXplVmFsaWRhdG9yUmVzcG9uc2UoZGF0YSk7XG4gICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgJHBlbmRpbmdDb3VudGVyLnZhbHVlLS07XG4gICAgICAkcGVuZGluZy52YWx1ZSA9ICEhJHBlbmRpbmdDb3VudGVyLnZhbHVlO1xuICAgICAgJHJlc3BvbnNlLnZhbHVlID0gZXJyb3I7XG4gICAgICAkaW52YWxpZC52YWx1ZSA9IHRydWU7XG4gICAgfSk7XG4gIH0sIHtcbiAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgZGVlcDogdHlwZW9mIG1vZGVsID09PSAnb2JqZWN0J1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICAkaW52YWxpZCxcbiAgICAkdW53YXRjaFxuICB9O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYSBzeW5jIHZhbGlkYXRvclxuICogQHBhcmFtIHtWYWxpZGF0b3J9IHJ1bGVcbiAqIEBwYXJhbSB7UmVmPCo+fSBtb2RlbFxuICogQHBhcmFtIHtSZWY8Qm9vbGVhbj59ICRkaXJ0eVxuICogQHBhcmFtIHtHbG9iYWxDb25maWd9IGNvbmZpZ1xuICogQHBhcmFtIHtCb29sZWFufSBjb25maWcuJGxhenlcbiAqIEBwYXJhbSB7UmVmPCo+fSAkcmVzcG9uc2VcbiAqIEBwYXJhbSB7VnVlSW5zdGFuY2V9IGluc3RhbmNlXG4gKiBAcGFyYW0ge09iamVjdH0gc2libGluZ1N0YXRlXG4gKiBAcGFyYW0ge1JlZjxCb29sZWFuPn0gJGxhc3RJbnZhbGlkU3RhdGVcbiAqIEByZXR1cm4ge3skdW53YXRjaDogKGZ1bmN0aW9uKCk6IHt9KSwgJGludmFsaWQ6IENvbXB1dGVkUmVmPGJvb2xlYW4+fX1cbiAqL1xuXG5cbmZ1bmN0aW9uIGNyZWF0ZVN5bmNSZXN1bHQocnVsZSwgbW9kZWwsICRkaXJ0eSwgX3JlZjIsICRyZXNwb25zZSwgaW5zdGFuY2UsIHNpYmxpbmdTdGF0ZSwgJGxhc3RJbnZhbGlkU3RhdGUpIHtcbiAgbGV0IHtcbiAgICAkbGF6eSxcbiAgICAkcmV3YXJkRWFybHlcbiAgfSA9IF9yZWYyO1xuXG4gIGNvbnN0ICR1bndhdGNoID0gKCkgPT4gKHt9KTtcblxuICBjb25zdCAkaW52YWxpZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIC8vIHJldHVybiBlYXJseSBpZiAkbGF6eSBtb2RlIGFuZCBub3QgdG91Y2hlZFxuICAgICRsYXp5ICYmICEkZGlydHkudmFsdWUgfHwgLy8gSWYgJHJld2FyZEVhcmx5IG1vZGUgaXMgT04gYW5kIGxhc3QgaW52YWxpZCB3YXMgZmFsc2UgKG5vIGVycm9yKSwgcmV0dXJuIGl0LlxuICAgIC8vIElmIHdlIHdhbnQgdG8gaW52YWxpZGF0ZSwgd2UganVzdCBmbGlwIHRoZSBsYXN0IHN0YXRlIHRvIHRydWUsIGNhdXNpbmcgdGhlIGNvbXB1dGVkIHRvIHJ1biBhZ2FpblxuICAgICRyZXdhcmRFYXJseSAmJiAhJGxhc3RJbnZhbGlkU3RhdGUudmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxSdWxlKHJ1bGUsIG1vZGVsLCBzaWJsaW5nU3RhdGUsIGluc3RhbmNlKTtcbiAgICAgICRyZXNwb25zZS52YWx1ZSA9IHJlc3VsdDtcbiAgICAgIHJldHVyblZhbHVlID0gbm9ybWFsaXplVmFsaWRhdG9yUmVzcG9uc2UocmVzdWx0KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZXNwb25zZS52YWx1ZSA9IGVycjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgICR1bndhdGNoLFxuICAgICRpbnZhbGlkXG4gIH07XG59XG4vKipcbiAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24gcmVzdWx0LlxuICogRGV0ZWN0cyBhc3luYyBhbmQgc3luYyB2YWxpZGF0b3JzLlxuICogQHBhcmFtIHtOb3JtYWxpemVkVmFsaWRhdG9yfSBydWxlXG4gKiBAcGFyYW0ge1JlZjwqPn0gbW9kZWxcbiAqIEBwYXJhbSB7UmVmPGJvb2xlYW4+fSAkZGlydHlcbiAqIEBwYXJhbSB7R2xvYmFsQ29uZmlnfSBjb25maWcgLSBWdWVsaWRhdGUgY29uZmlnXG4gKiBAcGFyYW0ge1Z1ZUluc3RhbmNlfSBpbnN0YW5jZSAtIGNvbXBvbmVudCBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbGlkYXRvck5hbWUgLSBuYW1lIG9mIHRoZSBjdXJyZW50IHZhbGlkYXRvclxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5S2V5IC0gdGhlIGN1cnJlbnQgcHJvcGVydHkgd2UgYXJlIHZhbGlkYXRpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eVBhdGggLSB0aGUgZGVlcCBwYXRoIHRvIHRoZSB2YWxpZGF0ZWQgcHJvcGVydHlcbiAqIEBwYXJhbSB7T2JqZWN0fSBzaWJsaW5nU3RhdGVcbiAqIEBwYXJhbSB7UmVmPEJvb2xlYW4+fSAkbGFzdEludmFsaWRTdGF0ZSAtIHRoZSBsYXN0IGludmFsaWQgc3RhdGVcbiAqIEBwYXJhbSB7UmVmPE51bWJlcj59ICRsYXN0Q29tbWl0dGVkT24gLSB0aGUgbGFzdCB0aW1lICRjb21taXQgd2FzIGNhbGxlZFxuICogQHJldHVybiB7eyAkcGFyYW1zOiAqLCAkbWVzc2FnZTogUmVmPFN0cmluZz4sICRwZW5kaW5nOiBSZWY8Qm9vbGVhbj4sICRpbnZhbGlkOiBSZWY8Qm9vbGVhbj4sICRyZXNwb25zZTogUmVmPCo+LCAkdW53YXRjaDogV2F0Y2hTdG9wSGFuZGxlIH19XG4gKi9cblxuXG5mdW5jdGlvbiBjcmVhdGVWYWxpZGF0b3JSZXN1bHQocnVsZSwgbW9kZWwsICRkaXJ0eSwgY29uZmlnLCBpbnN0YW5jZSwgdmFsaWRhdG9yTmFtZSwgcHJvcGVydHlLZXksIHByb3BlcnR5UGF0aCwgc2libGluZ1N0YXRlLCAkbGFzdEludmFsaWRTdGF0ZSwgJGxhc3RDb21taXR0ZWRPbikge1xuICBjb25zdCAkcGVuZGluZyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0ICRwYXJhbXMgPSBydWxlLiRwYXJhbXMgfHwge307XG4gIGNvbnN0ICRyZXNwb25zZSA9IHJlZihudWxsKTtcbiAgbGV0ICRpbnZhbGlkO1xuICBsZXQgJHVud2F0Y2g7XG5cbiAgaWYgKHJ1bGUuJGFzeW5jKSB7XG4gICAgKHtcbiAgICAgICRpbnZhbGlkLFxuICAgICAgJHVud2F0Y2hcbiAgICB9ID0gY3JlYXRlQXN5bmNSZXN1bHQocnVsZS4kdmFsaWRhdG9yLCBtb2RlbCwgJHBlbmRpbmcsICRkaXJ0eSwgY29uZmlnLCAkcmVzcG9uc2UsIGluc3RhbmNlLCBydWxlLiR3YXRjaFRhcmdldHMsIHNpYmxpbmdTdGF0ZSwgJGxhc3RJbnZhbGlkU3RhdGUsICRsYXN0Q29tbWl0dGVkT24pKTtcbiAgfSBlbHNlIHtcbiAgICAoe1xuICAgICAgJGludmFsaWQsXG4gICAgICAkdW53YXRjaFxuICAgIH0gPSBjcmVhdGVTeW5jUmVzdWx0KHJ1bGUuJHZhbGlkYXRvciwgbW9kZWwsICRkaXJ0eSwgY29uZmlnLCAkcmVzcG9uc2UsIGluc3RhbmNlLCBzaWJsaW5nU3RhdGUsICRsYXN0SW52YWxpZFN0YXRlKSk7XG4gIH1cblxuICBjb25zdCBtZXNzYWdlID0gcnVsZS4kbWVzc2FnZTtcbiAgY29uc3QgJG1lc3NhZ2UgPSBpc0Z1bmN0aW9uKG1lc3NhZ2UpID8gY29tcHV0ZWQoKCkgPT4gbWVzc2FnZSh1bndyYXBPYmooe1xuICAgICRwZW5kaW5nLFxuICAgICRpbnZhbGlkLFxuICAgICRwYXJhbXM6IHVud3JhcE9iaigkcGFyYW1zKSxcbiAgICAvLyAkcGFyYW1zIGNhbiBob2xkIHJlZnMsIHNvIHdlIHVud3JhcCB0aGVtIGZvciBlYXN5IGFjY2Vzc1xuICAgICRtb2RlbDogbW9kZWwsXG4gICAgJHJlc3BvbnNlLFxuICAgICR2YWxpZGF0b3I6IHZhbGlkYXRvck5hbWUsXG4gICAgJHByb3BlcnR5UGF0aDogcHJvcGVydHlQYXRoLFxuICAgICRwcm9wZXJ0eTogcHJvcGVydHlLZXlcbiAgfSkpKSA6IG1lc3NhZ2UgfHwgJyc7XG4gIHJldHVybiB7XG4gICAgJG1lc3NhZ2UsXG4gICAgJHBhcmFtcyxcbiAgICAkcGVuZGluZyxcbiAgICAkaW52YWxpZCxcbiAgICAkcmVzcG9uc2UsXG4gICAgJHVud2F0Y2hcbiAgfTtcbn1cblxuLyoqXG4gKiBTb3J0cyBhIHZhbGlkYXRpb24gZGVmaW5pdGlvbiBpbnRvIHJ1bGVzLCBjb25maWdzIGFuZCBuZXN0ZWQgdmFsaWRhdG9ycy5cbiAqIEBwYXJhbSB7T2JqZWN0PE5vcm1hbGl6ZWRWYWxpZGF0b3J8RnVuY3Rpb24+fSB2YWxpZGF0aW9uc1Jhd1xuICogQHJldHVybiB7eyBydWxlczogT2JqZWN0PE5vcm1hbGl6ZWRWYWxpZGF0b3I+LCBuZXN0ZWRWYWxpZGF0b3JzOiBPYmplY3QsIGNvbmZpZzogR2xvYmFsQ29uZmlnIH19XG4gKi9cblxuZnVuY3Rpb24gc29ydFZhbGlkYXRpb25zKCkge1xuICBsZXQgdmFsaWRhdGlvbnNSYXcgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICBjb25zdCB2YWxpZGF0aW9ucyA9IHVucmVmKHZhbGlkYXRpb25zUmF3KTtcbiAgY29uc3QgdmFsaWRhdGlvbktleXMgPSBPYmplY3Qua2V5cyh2YWxpZGF0aW9ucyk7XG4gIGNvbnN0IHJ1bGVzID0ge307XG4gIGNvbnN0IG5lc3RlZFZhbGlkYXRvcnMgPSB7fTtcbiAgY29uc3QgY29uZmlnID0ge307XG4gIHZhbGlkYXRpb25LZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICBjb25zdCB2ID0gdmFsaWRhdGlvbnNba2V5XTtcblxuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgLy8gSWYgaXQgaXMgYWxyZWFkeSBub3JtYWxpemVkLCB1c2UgaXRcbiAgICAgIGNhc2UgaXNGdW5jdGlvbih2LiR2YWxpZGF0b3IpOlxuICAgICAgICBydWxlc1trZXldID0gdjtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBJZiBpdCBpcyBqdXN0IGEgZnVuY3Rpb24sIG5vcm1hbGl6ZSBpdCBmaXJzdFxuICAgICAgLy8gaW50byB7ICR2YWxpZGF0b3I6IDxGdW4+IH1cblxuICAgICAgY2FzZSBpc0Z1bmN0aW9uKHYpOlxuICAgICAgICBydWxlc1trZXldID0ge1xuICAgICAgICAgICR2YWxpZGF0b3I6IHZcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBDYXRjaCAkLXByZWZpeGVkIHByb3BlcnRpZXMgYXMgY29uZmlnXG5cbiAgICAgIGNhc2Uga2V5LnN0YXJ0c1dpdGgoJyQnKTpcbiAgICAgICAgY29uZmlnW2tleV0gPSB2O1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIElmIGl0IGRvZXNu4oCZdCBtYXRjaCBhbnkgb2YgdGhlIGFib3ZlLFxuICAgICAgLy8gdHJlYXQgYXMgbmVzdGVkVmFsaWRhdG9ycyBzdGF0ZSBwcm9wZXJ0eVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBuZXN0ZWRWYWxpZGF0b3JzW2tleV0gPSB2O1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcnVsZXMsXG4gICAgbmVzdGVkVmFsaWRhdG9ycyxcbiAgICBjb25maWdcbiAgfTtcbn1cblxuZnVuY3Rpb24gX2VtcHR5KCkge31cblxuY29uc3QgUk9PVF9QQVRIID0gJ19fcm9vdCc7XG4vKiogQHR5cGVkZWYge2ltcG9ydCgndnVlLWRlbWknKS5Db21wb25lbnRQdWJsaWNJbnN0YW5jZX0gVnVlSW5zdGFuY2UgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJ3Z1ZS1kZW1pJykuQ29tcHV0ZWRSZWZ9IENvbXB1dGVkUmVmICovXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCd2dWUtZGVtaScpLlVud3JhcFJlZn0gVW53cmFwUmVmICovXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCd2dWUtZGVtaScpLldhdGNoU3RvcEhhbmRsZX0gV2F0Y2hTdG9wSGFuZGxlICovXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCd2dWUtZGVtaScpLldyaXRhYmxlQ29tcHV0ZWRSZWZ9IFdyaXRhYmxlQ29tcHV0ZWRSZWYgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJ3Z1ZS1kZW1pJykuVW53cmFwTmVzdGVkUmVmc30gVW53cmFwTmVzdGVkUmVmcyAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIE5vcm1hbGl6ZWRWYWxpZGF0b3JcbiAqIEBwcm9wZXJ0eSB7VmFsaWRhdG9yfSAkdmFsaWRhdG9yXG4gKiBAcHJvcGVydHkge1N0cmluZyB8IFJlZjxTdHJpbmc+IHwgZnVuY3Rpb24oKik6IHN0cmluZ30gWyRtZXNzYWdlXVxuICogQHByb3BlcnR5IHtPYmplY3QgfCBSZWY8T2JqZWN0Pn0gWyRwYXJhbXNdXG4gKiBAcHJvcGVydHkge09iamVjdCB8IFJlZjxPYmplY3Q+fSBbJGFzeW5jXVxuICogQHByb3BlcnR5IHtSZWY8Kj5bXX0gWyR3YXRjaFRhcmdldHNdXG4gKi9cblxuLyoqXG4gKiBSYXcgdmFsaWRhdG9yIGZ1bmN0aW9uLCBiZWZvcmUgYmVpbmcgbm9ybWFsaXplZFxuICogQ2FuIHJldHVybiBhIFByb21pc2Ugb3IgYSB7QHNlZSBWYWxpZGF0b3JSZXNwb25zZX1cbiAqIEB0eXBlZGVmIHtmdW5jdGlvbigqKTogKChQcm9taXNlPFZhbGlkYXRvclJlc3BvbnNlPiB8IFZhbGlkYXRvclJlc3BvbnNlKSl9IFZhbGlkYXRvclxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgRXJyb3JPYmplY3RcbiAqIEBwcm9wZXJ0eSB7UmVmPFN0cmluZz59ICRtZXNzYWdlIC0gUmVhY3RpdmUgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtSZWY8T2JqZWN0Pn0gJHBhcmFtcyAtIFBhcmFtcyBwYXNzZWQgZnJvbSB3aXRoUGFyYW1zXG4gKiBAcHJvcGVydHkge1JlZjxCb29sZWFuPn0gJHBlbmRpbmcgLSBJZiB2YWxpZGF0aW9uIGlzIHBlbmRpbmdcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSAkcHJvcGVydHkgLSBTdGF0ZSBrZXlcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSAkcHJvcGVydHlQYXRoIC0gRG90IG5vdGF0aW9uIHBhdGggdG8gc3RhdGVcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSAkdmFsaWRhdG9yIC0gVmFsaWRhdG9yIG5hbWVcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSAkdWlkIC0gVW5pcXVlIGlkZW50aWZpZXJcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIFZhbGlkYXRpb25SZXN1bHRcbiAqIEBwcm9wZXJ0eSB7UmVmPEJvb2xlYW4+fSAkcGVuZGluZ1xuICogQHByb3BlcnR5IHtSZWY8Qm9vbGVhbj59ICRkaXJ0eVxuICogQHByb3BlcnR5IHtSZWY8Qm9vbGVhbj59ICRpbnZhbGlkXG4gKiBAcHJvcGVydHkge1JlZjxCb29sZWFuPn0gJGVycm9yXG4gKiBAcHJvcGVydHkge1JlZjxTdHJpbmc+fSAkcGF0aFxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gJHRvdWNoXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSAkcmVzZXRcbiAqIEBwcm9wZXJ0eSB7Q29tcHV0ZWRSZWY8RXJyb3JPYmplY3RbXT59ICRlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7Q29tcHV0ZWRSZWY8RXJyb3JPYmplY3RbXT59ICRzaWxlbnRFcnJvcnNcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259ICRjb21taXRcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIG1haW4gVmFsaWRhdGlvbiBSZXN1bHRzIG9iamVjdCBmb3IgYSBzdGF0ZSB0cmVlXG4gKiBXYWxrcyB0aGUgdHJlZSdzIHRvcCBsZXZlbCBicmFuY2hlc1xuICogQHBhcmFtIHtPYmplY3Q8Tm9ybWFsaXplZFZhbGlkYXRvcj59IHJ1bGVzIC0gUnVsZXMgZm9yIHRoZSBjdXJyZW50IHN0YXRlIHRyZWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtb2RlbCAtIEN1cnJlbnQgc3RhdGUgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXkgLSBLZXkgZm9yIHRoZSBjdXJyZW50IHN0YXRlIHRyZWVcbiAqIEBwYXJhbSB7UmVzdWx0c1N0b3JhZ2V9IFtyZXN1bHRzQ2FjaGVdIC0gQSBjYWNoZSBtYXAgb2YgYWxsIHRoZSB2YWxpZGF0b3JzXG4gKiBAcGFyYW0ge1N0cmluZ30gW3BhdGhdIC0gdGhlIGN1cnJlbnQgcHJvcGVydHkgcGF0aFxuICogQHBhcmFtIHtHbG9iYWxDb25maWd9IFtjb25maWddIC0gdGhlIGNvbmZpZyBvYmplY3RcbiAqIEBwYXJhbSB7VnVlSW5zdGFuY2V9IGluc3RhbmNlXG4gKiBAcGFyYW0ge0NvbXB1dGVkUmVmPE9iamVjdD59IGV4dGVybmFsUmVzdWx0c1xuICogQHBhcmFtIHtPYmplY3R9IHNpYmxpbmdTdGF0ZVxuICogQHJldHVybiB7VmFsaWRhdGlvblJlc3VsdCB8IHt9fVxuICovXG5cbmZ1bmN0aW9uIF9jYWxsKGJvZHksIHRoZW4sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgcmV0dXJuIHRoZW4gPyB0aGVuKGJvZHkoKSkgOiBib2R5KCk7XG4gIH1cblxuICB0cnkge1xuICAgIHZhciByZXN1bHQgPSBQcm9taXNlLnJlc29sdmUoYm9keSgpKTtcbiAgICByZXR1cm4gdGhlbiA/IHJlc3VsdC50aGVuKHRoZW4pIDogcmVzdWx0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICB9XG59XG4vKipcbiAqIENvbGxlY3RzIHRoZSB2YWxpZGF0aW9uIHJlc3VsdHMgb2YgYWxsIG5lc3RlZCBzdGF0ZSBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0ge09iamVjdDxOb3JtYWxpemVkVmFsaWRhdG9yfEZ1bmN0aW9uPn0gdmFsaWRhdGlvbnMgLSBUaGUgdmFsaWRhdGlvblxuICogQHBhcmFtIHtPYmplY3R9IG5lc3RlZFN0YXRlIC0gQ3VycmVudCBzdGF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGggLSBQYXRoIHRvIGN1cnJlbnQgcHJvcGVydHlcbiAqIEBwYXJhbSB7UmVzdWx0c1N0b3JhZ2V9IHJlc3VsdHNDYWNoZSAtIFZhbGlkYXRpb25zIGNhY2hlIG1hcFxuICogQHBhcmFtIHtHbG9iYWxDb25maWd9IGNvbmZpZyAtIFRoZSBjb25maWcgb2JqZWN0XG4gKiBAcGFyYW0ge1Z1ZUluc3RhbmNlfSBpbnN0YW5jZSAtIFRoZSBjdXJyZW50IFZ1ZSBpbnN0YW5jZVxuICogQHBhcmFtIHtDb21wdXRlZFJlZjxvYmplY3Q+fSBuZXN0ZWRFeHRlcm5hbFJlc3VsdHMgLSBUaGUgZXh0ZXJuYWwgcmVzdWx0cyBmb3IgdGhpcyBuZXN0ZWQgY29sbGVjdGlvblxuICogQHJldHVybiB7T2JqZWN0PHN0cmluZywgVnVlbGlkYXRlU3RhdGU+fVxuICovXG5cblxuZnVuY3Rpb24gX2NhbGxJZ25vcmVkKGJvZHksIGRpcmVjdCkge1xuICByZXR1cm4gX2NhbGwoYm9keSwgX2VtcHR5LCBkaXJlY3QpO1xufVxuXG5mdW5jdGlvbiBfaW52b2tlKGJvZHksIHRoZW4pIHtcbiAgdmFyIHJlc3VsdCA9IGJvZHkoKTtcblxuICBpZiAocmVzdWx0ICYmIHJlc3VsdC50aGVuKSB7XG4gICAgcmV0dXJuIHJlc3VsdC50aGVuKHRoZW4pO1xuICB9XG5cbiAgcmV0dXJuIHRoZW4ocmVzdWx0KTtcbn1cblxuZnVuY3Rpb24gX2FzeW5jKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBhcmdzID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGYuYXBwbHkodGhpcywgYXJncykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZhbGlkYXRpb25SZXN1bHRzKHJ1bGVzLCBtb2RlbCwga2V5LCByZXN1bHRzQ2FjaGUsIHBhdGgsIGNvbmZpZywgaW5zdGFuY2UsIGV4dGVybmFsUmVzdWx0cywgc2libGluZ1N0YXRlKSB7XG4gIC8vIGNvbGxlY3QgdGhlIHByb3BlcnR5IGtleXNcbiAgY29uc3QgcnVsZUtleXMgPSBPYmplY3Qua2V5cyhydWxlcyk7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IHJlc3VsdHNDYWNoZS5nZXQocGF0aCwgcnVsZXMpO1xuICBjb25zdCAkZGlydHkgPSByZWYoZmFsc2UpOyAvLyBzdGF0ZSBmb3IgdGhlICRyZXdhcmRFYXJseSBvcHRpb25cblxuICAvKiogVGhlIGxhc3QgaW52YWxpZCBzdGF0ZSBvZiB0aGlzIHByb3BlcnR5ICovXG5cbiAgY29uc3QgJGxhc3RJbnZhbGlkU3RhdGUgPSByZWYoZmFsc2UpO1xuICAvKiogVGhlIGxhc3QgdGltZSAkY29tbWl0IHdhcyBjYWxsZWQuIFVzZWQgdG8gcmUtdHJpZ2dlciBhc3luYyBjYWxscyAqL1xuXG4gIGNvbnN0ICRsYXN0Q29tbWl0dGVkT24gPSByZWYoMCk7XG5cbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIC8vIGlmIHRoZSBydWxlcyBhcmUgdGhlIHNhbWUgYXMgYmVmb3JlLCB1c2UgdGhlIGNhY2hlZCByZXN1bHRzXG4gICAgaWYgKCFjYWNoZWRSZXN1bHQuJHBhcnRpYWwpIHJldHVybiBjYWNoZWRSZXN1bHQ7IC8vIHJlbW92ZSBvbGQgd2F0Y2hlcnNcblxuICAgIGNhY2hlZFJlc3VsdC4kdW53YXRjaCgpOyAvLyB1c2UgdGhlIGAkZGlydHkudmFsdWVgLCBzbyB3ZSBkb250IHNhdmUgcmVmZXJlbmNlcyBieSBhY2NpZGVudFxuXG4gICAgJGRpcnR5LnZhbHVlID0gY2FjaGVkUmVzdWx0LiRkaXJ0eS52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAvLyByZXN0b3JlICRkaXJ0eSBmcm9tIGNhY2hlXG4gICAgJGRpcnR5LFxuICAgICRwYXRoOiBwYXRoLFxuICAgICR0b3VjaDogKCkgPT4ge1xuICAgICAgaWYgKCEkZGlydHkudmFsdWUpICRkaXJ0eS52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICAkcmVzZXQ6ICgpID0+IHtcbiAgICAgIGlmICgkZGlydHkudmFsdWUpICRkaXJ0eS52YWx1ZSA9IGZhbHNlO1xuICAgIH0sXG4gICAgJGNvbW1pdDogKCkgPT4ge31cbiAgfTtcbiAgLyoqXG4gICAqIElmIHRoZXJlIGFyZSBubyB2YWxpZGF0aW9uIHJ1bGVzLCBpdCBpcyBtb3N0IGxpa2VseVxuICAgKiBhIHRvcCBsZXZlbCBzdGF0ZSwgYWthIHJvb3RcbiAgICovXG5cbiAgaWYgKCFydWxlS2V5cy5sZW5ndGgpIHtcbiAgICAvLyBpZiB0aGVyZSBhcmUgY2FjaGVkIHJlc3VsdHMsIHdlIHNob3VsZCBvdmVyd3JpdGUgdGhlbSB3aXRoIHRoZSBuZXcgb25lc1xuICAgIGNhY2hlZFJlc3VsdCAmJiByZXN1bHRzQ2FjaGUuc2V0KHBhdGgsIHJ1bGVzLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBydWxlS2V5cy5mb3JFYWNoKHJ1bGVLZXkgPT4ge1xuICAgIHJlc3VsdFtydWxlS2V5XSA9IGNyZWF0ZVZhbGlkYXRvclJlc3VsdChydWxlc1tydWxlS2V5XSwgbW9kZWwsIHJlc3VsdC4kZGlydHksIGNvbmZpZywgaW5zdGFuY2UsIHJ1bGVLZXksIGtleSwgcGF0aCwgc2libGluZ1N0YXRlLCAkbGFzdEludmFsaWRTdGF0ZSwgJGxhc3RDb21taXR0ZWRPbik7XG4gIH0pO1xuICByZXN1bHQuJGV4dGVybmFsUmVzdWx0cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIWV4dGVybmFsUmVzdWx0cy52YWx1ZSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBbXS5jb25jYXQoZXh0ZXJuYWxSZXN1bHRzLnZhbHVlKS5tYXAoKHN0cmluZ0Vycm9yLCBpbmRleCkgPT4gKHtcbiAgICAgICRwcm9wZXJ0eVBhdGg6IHBhdGgsXG4gICAgICAkcHJvcGVydHk6IGtleSxcbiAgICAgICR2YWxpZGF0b3I6ICckZXh0ZXJuYWxSZXN1bHRzJyxcbiAgICAgICR1aWQ6IGAke3BhdGh9LWV4dGVybmFsUmVzdWx0LSR7aW5kZXh9YCxcbiAgICAgICRtZXNzYWdlOiBzdHJpbmdFcnJvcixcbiAgICAgICRwYXJhbXM6IHt9LFxuICAgICAgJHJlc3BvbnNlOiBudWxsLFxuICAgICAgJHBlbmRpbmc6IGZhbHNlXG4gICAgfSkpO1xuICB9KTtcbiAgcmVzdWx0LiRpbnZhbGlkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHIgPSBydWxlS2V5cy5zb21lKHJ1bGVLZXkgPT4gdW5yZWYocmVzdWx0W3J1bGVLZXldLiRpbnZhbGlkKSk7IC8vIGNhY2hlIHRoZSBsYXN0IGludmFsaWQgc3RhdGVcblxuICAgICRsYXN0SW52YWxpZFN0YXRlLnZhbHVlID0gcjtcbiAgICByZXR1cm4gISFyZXN1bHQuJGV4dGVybmFsUmVzdWx0cy52YWx1ZS5sZW5ndGggfHwgcjtcbiAgfSk7XG4gIHJlc3VsdC4kcGVuZGluZyA9IGNvbXB1dGVkKCgpID0+IHJ1bGVLZXlzLnNvbWUocnVsZUtleSA9PiB1bnJlZihyZXN1bHRbcnVsZUtleV0uJHBlbmRpbmcpKSk7XG4gIHJlc3VsdC4kZXJyb3IgPSBjb21wdXRlZCgoKSA9PiByZXN1bHQuJGRpcnR5LnZhbHVlID8gcmVzdWx0LiRwZW5kaW5nLnZhbHVlIHx8IHJlc3VsdC4kaW52YWxpZC52YWx1ZSA6IGZhbHNlKTtcbiAgcmVzdWx0LiRzaWxlbnRFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiBydWxlS2V5cy5maWx0ZXIocnVsZUtleSA9PiB1bnJlZihyZXN1bHRbcnVsZUtleV0uJGludmFsaWQpKS5tYXAocnVsZUtleSA9PiB7XG4gICAgY29uc3QgcmVzID0gcmVzdWx0W3J1bGVLZXldO1xuICAgIHJldHVybiByZWFjdGl2ZSh7XG4gICAgICAkcHJvcGVydHlQYXRoOiBwYXRoLFxuICAgICAgJHByb3BlcnR5OiBrZXksXG4gICAgICAkdmFsaWRhdG9yOiBydWxlS2V5LFxuICAgICAgJHVpZDogYCR7cGF0aH0tJHtydWxlS2V5fWAsXG4gICAgICAkbWVzc2FnZTogcmVzLiRtZXNzYWdlLFxuICAgICAgJHBhcmFtczogcmVzLiRwYXJhbXMsXG4gICAgICAkcmVzcG9uc2U6IHJlcy4kcmVzcG9uc2UsXG4gICAgICAkcGVuZGluZzogcmVzLiRwZW5kaW5nXG4gICAgfSk7XG4gIH0pLmNvbmNhdChyZXN1bHQuJGV4dGVybmFsUmVzdWx0cy52YWx1ZSkpO1xuICByZXN1bHQuJGVycm9ycyA9IGNvbXB1dGVkKCgpID0+IHJlc3VsdC4kZGlydHkudmFsdWUgPyByZXN1bHQuJHNpbGVudEVycm9ycy52YWx1ZSA6IFtdKTtcblxuICByZXN1bHQuJHVud2F0Y2ggPSAoKSA9PiBydWxlS2V5cy5mb3JFYWNoKHJ1bGVLZXkgPT4ge1xuICAgIHJlc3VsdFtydWxlS2V5XS4kdW53YXRjaCgpO1xuICB9KTtcblxuICByZXN1bHQuJGNvbW1pdCA9ICgpID0+IHtcbiAgICAkbGFzdEludmFsaWRTdGF0ZS52YWx1ZSA9IHRydWU7XG4gICAgJGxhc3RDb21taXR0ZWRPbi52YWx1ZSA9IERhdGUubm93KCk7XG4gIH07XG5cbiAgcmVzdWx0c0NhY2hlLnNldChwYXRoLCBydWxlcywgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29sbGVjdE5lc3RlZFZhbGlkYXRpb25SZXN1bHRzKHZhbGlkYXRpb25zLCBuZXN0ZWRTdGF0ZSwgcGF0aCwgcmVzdWx0c0NhY2hlLCBjb25maWcsIGluc3RhbmNlLCBuZXN0ZWRFeHRlcm5hbFJlc3VsdHMpIHtcbiAgY29uc3QgbmVzdGVkVmFsaWRhdGlvbktleXMgPSBPYmplY3Qua2V5cyh2YWxpZGF0aW9ucyk7IC8vIGlmIHdlIGhhdmUgbm8gc3RhdGUsIHJldHVybiBlbXB0eSBvYmplY3RcblxuICBpZiAoIW5lc3RlZFZhbGlkYXRpb25LZXlzLmxlbmd0aCkgcmV0dXJuIHt9O1xuICByZXR1cm4gbmVzdGVkVmFsaWRhdGlvbktleXMucmVkdWNlKChyZXN1bHRzLCBuZXN0ZWRLZXkpID0+IHtcbiAgICAvLyBidWlsZCB2YWxpZGF0aW9uIHJlc3VsdHMgZm9yIG5lc3RlZCBzdGF0ZVxuICAgIHJlc3VsdHNbbmVzdGVkS2V5XSA9IHNldFZhbGlkYXRpb25zKHtcbiAgICAgIHZhbGlkYXRpb25zOiB2YWxpZGF0aW9uc1tuZXN0ZWRLZXldLFxuICAgICAgc3RhdGU6IG5lc3RlZFN0YXRlLFxuICAgICAga2V5OiBuZXN0ZWRLZXksXG4gICAgICBwYXJlbnRLZXk6IHBhdGgsXG4gICAgICByZXN1bHRzQ2FjaGUsXG4gICAgICBnbG9iYWxDb25maWc6IGNvbmZpZyxcbiAgICAgIGluc3RhbmNlLFxuICAgICAgZXh0ZXJuYWxSZXN1bHRzOiBuZXN0ZWRFeHRlcm5hbFJlc3VsdHNcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfSwge30pO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIE1ldGEgZmllbGRzIGZyb20gdGhlIHJlc3VsdHNcbiAqIEBwYXJhbSB7VmFsaWRhdGlvblJlc3VsdHx7fX0gcmVzdWx0c1xuICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywgVnVlbGlkYXRlU3RhdGU+fSBuZXN0ZWRSZXN1bHRzXG4gKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCBWYWxpZGF0aW9uUmVzdWx0Pn0gY2hpbGRSZXN1bHRzXG4gKiBAcmV0dXJuIHt7JGFueURpcnR5OiBSZWY8Qm9vbGVhbj4sICRlcnJvcjogUmVmPEJvb2xlYW4+LCAkaW52YWxpZDogUmVmPEJvb2xlYW4+LCAkZXJyb3JzOiBSZWY8RXJyb3JPYmplY3RbXT4sICRkaXJ0eTogUmVmPEJvb2xlYW4+LCAkdG91Y2g6IEZ1bmN0aW9uLCAkcmVzZXQ6IEZ1bmN0aW9uIH19XG4gKi9cblxuXG5mdW5jdGlvbiBjcmVhdGVNZXRhRmllbGRzKHJlc3VsdHMsIG5lc3RlZFJlc3VsdHMsIGNoaWxkUmVzdWx0cykge1xuICBjb25zdCBhbGxSZXN1bHRzID0gY29tcHV0ZWQoKCkgPT4gW25lc3RlZFJlc3VsdHMsIGNoaWxkUmVzdWx0c10uZmlsdGVyKHJlcyA9PiByZXMpLnJlZHVjZSgoYWxsUmVzLCByZXMpID0+IHtcbiAgICByZXR1cm4gYWxsUmVzLmNvbmNhdChPYmplY3QudmFsdWVzKHVucmVmKHJlcykpKTtcbiAgfSwgW10pKTsgLy8gcmV0dXJucyBgJGRpcnR5YCBhcyB0cnVlLCBpZiBhbGwgY2hpbGRyZW4gYXJlIGRpcnR5XG5cbiAgY29uc3QgJGRpcnR5ID0gY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiByZXN1bHRzLiRkaXJ0eS52YWx1ZSB8fCAoYWxsUmVzdWx0cy52YWx1ZS5sZW5ndGggPyBhbGxSZXN1bHRzLnZhbHVlLmV2ZXJ5KHIgPT4gci4kZGlydHkpIDogZmFsc2UpO1xuICAgIH0sXG5cbiAgICBzZXQodikge1xuICAgICAgcmVzdWx0cy4kZGlydHkudmFsdWUgPSB2O1xuICAgIH1cblxuICB9KTtcbiAgY29uc3QgJHNpbGVudEVycm9ycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBjdXJyZW50IHN0YXRlIGxldmVsIGVycm9ycywgZmFsbGJhY2sgdG8gZW1wdHkgYXJyYXkgaWYgcm9vdFxuICAgIGNvbnN0IG1vZGVsRXJyb3JzID0gdW5yZWYocmVzdWx0cy4kc2lsZW50RXJyb3JzKSB8fCBbXTsgLy8gY29sbGVjdCBhbGwgbmVzdGVkIGFuZCBjaGlsZCAkc2lsZW50RXJyb3JzXG5cbiAgICBjb25zdCBuZXN0ZWRFcnJvcnMgPSBhbGxSZXN1bHRzLnZhbHVlLmZpbHRlcihyZXN1bHQgPT4gKHVucmVmKHJlc3VsdCkuJHNpbGVudEVycm9ycyB8fCBbXSkubGVuZ3RoKS5yZWR1Y2UoKGVycm9ycywgcmVzdWx0KSA9PiB7XG4gICAgICByZXR1cm4gZXJyb3JzLmNvbmNhdCguLi5yZXN1bHQuJHNpbGVudEVycm9ycyk7XG4gICAgfSwgW10pOyAvLyBtZXJnZSB0aGUgJHNpbGVudEVycm9yc1xuXG4gICAgcmV0dXJuIG1vZGVsRXJyb3JzLmNvbmNhdChuZXN0ZWRFcnJvcnMpO1xuICB9KTtcbiAgY29uc3QgJGVycm9ycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBjdXJyZW50IHN0YXRlIGxldmVsIGVycm9ycywgZmFsbGJhY2sgdG8gZW1wdHkgYXJyYXkgaWYgcm9vdFxuICAgIGNvbnN0IG1vZGVsRXJyb3JzID0gdW5yZWYocmVzdWx0cy4kZXJyb3JzKSB8fCBbXTsgLy8gY29sbGVjdCBhbGwgbmVzdGVkIGFuZCBjaGlsZCAkZXJyb3JzXG5cbiAgICBjb25zdCBuZXN0ZWRFcnJvcnMgPSBhbGxSZXN1bHRzLnZhbHVlLmZpbHRlcihyZXN1bHQgPT4gKHVucmVmKHJlc3VsdCkuJGVycm9ycyB8fCBbXSkubGVuZ3RoKS5yZWR1Y2UoKGVycm9ycywgcmVzdWx0KSA9PiB7XG4gICAgICByZXR1cm4gZXJyb3JzLmNvbmNhdCguLi5yZXN1bHQuJGVycm9ycyk7XG4gICAgfSwgW10pOyAvLyBtZXJnZSB0aGUgJGVycm9yc1xuXG4gICAgcmV0dXJuIG1vZGVsRXJyb3JzLmNvbmNhdChuZXN0ZWRFcnJvcnMpO1xuICB9KTtcbiAgY29uc3QgJGludmFsaWQgPSBjb21wdXRlZCgoKSA9PiAvLyBpZiBhbnkgb2YgdGhlIG5lc3RlZCB2YWx1ZXMgaXMgaW52YWxpZFxuICBhbGxSZXN1bHRzLnZhbHVlLnNvbWUociA9PiByLiRpbnZhbGlkKSB8fCAvLyBvciBpZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBpbnZhbGlkXG4gIHVucmVmKHJlc3VsdHMuJGludmFsaWQpIHx8IC8vIGZhbGxiYWNrIHRvIGZhbHNlIGlmIGlzIHJvb3RcbiAgZmFsc2UpO1xuICBjb25zdCAkcGVuZGluZyA9IGNvbXB1dGVkKCgpID0+IC8vIGlmIGFueSBvZiB0aGUgbmVzdGVkIHZhbHVlcyBpcyBwZW5kaW5nXG4gIGFsbFJlc3VsdHMudmFsdWUuc29tZShyID0+IHVucmVmKHIuJHBlbmRpbmcpKSB8fCAvLyBpZiBhbnkgb2YgdGhlIGN1cnJlbnQgc3RhdGUgdmFsaWRhdG9ycyBpcyBwZW5kaW5nXG4gIHVucmVmKHJlc3VsdHMuJHBlbmRpbmcpIHx8IC8vIGZhbGxiYWNrIHRvIGZhbHNlIGlmIGlzIHJvb3RcbiAgZmFsc2UpO1xuICBjb25zdCAkYW55RGlydHkgPSBjb21wdXRlZCgoKSA9PiBhbGxSZXN1bHRzLnZhbHVlLnNvbWUociA9PiByLiRkaXJ0eSkgfHwgYWxsUmVzdWx0cy52YWx1ZS5zb21lKHIgPT4gci4kYW55RGlydHkpIHx8ICRkaXJ0eS52YWx1ZSk7XG4gIGNvbnN0ICRlcnJvciA9IGNvbXB1dGVkKCgpID0+ICRkaXJ0eS52YWx1ZSA/ICRwZW5kaW5nLnZhbHVlIHx8ICRpbnZhbGlkLnZhbHVlIDogZmFsc2UpO1xuXG4gIGNvbnN0ICR0b3VjaCA9ICgpID0+IHtcbiAgICAvLyBjYWxsIHRoZSByb290ICR0b3VjaFxuICAgIHJlc3VsdHMuJHRvdWNoKCk7IC8vIGNhbGwgYWxsIG5lc3RlZCBsZXZlbCAkdG91Y2hcblxuICAgIGFsbFJlc3VsdHMudmFsdWUuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgcmVzdWx0LiR0b3VjaCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0ICRjb21taXQgPSAoKSA9PiB7XG4gICAgLy8gY2FsbCB0aGUgcm9vdCAkdG91Y2hcbiAgICByZXN1bHRzLiRjb21taXQoKTsgLy8gY2FsbCBhbGwgbmVzdGVkIGxldmVsICR0b3VjaFxuXG4gICAgYWxsUmVzdWx0cy52YWx1ZS5mb3JFYWNoKHJlc3VsdCA9PiB7XG4gICAgICByZXN1bHQuJGNvbW1pdCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0ICRyZXNldCA9ICgpID0+IHtcbiAgICAvLyByZXNldCB0aGUgcm9vdCAkZGlydHkgc3RhdGVcbiAgICByZXN1bHRzLiRyZXNldCgpOyAvLyByZXNldCBhbGwgdGhlIGNoaWxkcmVuICRkaXJ0eSBzdGF0ZXNcblxuICAgIGFsbFJlc3VsdHMudmFsdWUuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgcmVzdWx0LiRyZXNldCgpO1xuICAgIH0pO1xuICB9OyAvLyBFbnN1cmUgdGhhdCBpZiBhbGwgY2hpbGQgYW5kIG5lc3RlZCByZXN1bHRzIGFyZSAkZGlydHksIHRoaXMgYWxzbyBiZWNvbWVzICRkaXJ0eVxuXG5cbiAgaWYgKGFsbFJlc3VsdHMudmFsdWUubGVuZ3RoICYmIGFsbFJlc3VsdHMudmFsdWUuZXZlcnkobnIgPT4gbnIuJGRpcnR5KSkgJHRvdWNoKCk7XG4gIHJldHVybiB7XG4gICAgJGRpcnR5LFxuICAgICRlcnJvcnMsXG4gICAgJGludmFsaWQsXG4gICAgJGFueURpcnR5LFxuICAgICRlcnJvcixcbiAgICAkcGVuZGluZyxcbiAgICAkdG91Y2gsXG4gICAgJHJlc2V0LFxuICAgICRzaWxlbnRFcnJvcnMsXG4gICAgJGNvbW1pdFxuICB9O1xufVxuLyoqXG4gKiBAdHlwZWRlZiBWdWVsaWRhdGVTdGF0ZVxuICogQHByb3BlcnR5IHtXcml0YWJsZUNvbXB1dGVkUmVmPGFueT59ICRtb2RlbFxuICogQHByb3BlcnR5IHtDb21wdXRlZFJlZjxCb29sZWFuPn0gJGRpcnR5XG4gKiBAcHJvcGVydHkge0NvbXB1dGVkUmVmPEJvb2xlYW4+fSAkZXJyb3JcbiAqIEBwcm9wZXJ0eSB7Q29tcHV0ZWRSZWY8RXJyb3JPYmplY3RbXT59ICRlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7Q29tcHV0ZWRSZWY8Qm9vbGVhbj59ICRpbnZhbGlkXG4gKiBAcHJvcGVydHkge0NvbXB1dGVkUmVmPEJvb2xlYW4+fSAkYW55RGlydHlcbiAqIEBwcm9wZXJ0eSB7Q29tcHV0ZWRSZWY8Qm9vbGVhbj59ICRwZW5kaW5nXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSAkdG91Y2hcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259ICRyZXNldFxuICogQHByb3BlcnR5IHtTdHJpbmd9ICRwYXRoXG4gKiBAcHJvcGVydHkge0NvbXB1dGVkUmVmPEVycm9yT2JqZWN0W10+fSAkc2lsZW50RXJyb3JzXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBbJHZhbGlkYXRlXVxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gWyRnZXRSZXN1bHRzRm9yQ2hpbGRdXG4gKiBAcHJvcGVydHkge09iamVjdC48c3RyaW5nLCBWdWVsaWRhdGVTdGF0ZT59XG4gKi9cblxuLyoqXG4gKiBNYWluIFZ1ZWxpZGF0ZSBib290c3RyYXAgZnVuY3Rpb24uXG4gKiBVc2VkIGJvdGggZm9yIENvbXBvc2l0aW9uIEFQSSBpbiBgc2V0dXBgIGFuZCBmb3IgR2xvYmFsIEFwcCB1c2FnZS5cbiAqIFVzZWQgdG8gY29sbGVjdCB2YWxpZGF0aW9uIHN0YXRlLCB3aGVuIHdhbGtpbmcgcmVjdXJzaXZlbHkgZG93biB0aGUgc3RhdGUgdHJlZVxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuICogQHBhcmFtIHtPYmplY3Q8Tm9ybWFsaXplZFZhbGlkYXRvcnxGdW5jdGlvbj59IHBhcmFtcy52YWxpZGF0aW9uc1xuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcy5zdGF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMua2V5XSAtIEN1cnJlbnQgc3RhdGUgcHJvcGVydHkga2V5LiBVc2VkIHdoZW4gYmVpbmcgY2FsbGVkIG9uIG5lc3RlZCBpdGVtc1xuICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMucGFyZW50S2V5XSAtIFBhcmVudCBzdGF0ZSBwcm9wZXJ0eSBrZXkuIFVzZWQgd2hlbiBiZWluZyBjYWxsZWQgcmVjdXJzaXZlbHlcbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgVmFsaWRhdGlvblJlc3VsdD59IFtwYXJhbXMuY2hpbGRSZXN1bHRzXSAtIFVzZWQgdG8gY29sbGVjdCBjaGlsZCByZXN1bHRzLlxuICogQHBhcmFtIHtSZXN1bHRzU3RvcmFnZX0gcGFyYW1zLnJlc3VsdHNDYWNoZSAtIFRoZSBjYWNoZWQgdmFsaWRhdGlvbiByZXN1bHRzXG4gKiBAcGFyYW0ge1Z1ZUluc3RhbmNlfSBwYXJhbXMuaW5zdGFuY2UgLSBUaGUgY3VycmVudCBWdWUgaW5zdGFuY2VcbiAqIEBwYXJhbSB7R2xvYmFsQ29uZmlnfSBwYXJhbXMuZ2xvYmFsQ29uZmlnIC0gVGhlIHZhbGlkYXRpb24gY29uZmlnLCBwYXNzZWQgdG8gdGhpcyBzZXRWYWxpZGF0aW9ucyBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7VW53cmFwTmVzdGVkUmVmczxvYmplY3Q+IHwgUmVmPE9iamVjdD59IHBhcmFtcy5leHRlcm5hbFJlc3VsdHMgLSBFeHRlcm5hbCB2YWxpZGF0aW9uIHJlc3VsdHNcbiAqIEByZXR1cm4ge1Vud3JhcE5lc3RlZFJlZnM8VnVlbGlkYXRlU3RhdGU+fVxuICovXG5cblxuZnVuY3Rpb24gc2V0VmFsaWRhdGlvbnMoX3JlZikge1xuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIHZhbGlkYXRvcnMgYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGNvbnN0ICR2YWxpZGF0ZSA9IF9hc3luYyhmdW5jdGlvbiAoKSB7XG4gICAgJHRvdWNoKCk7XG4gICAgcmV0dXJuIF9pbnZva2UoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG1lcmdlZENvbmZpZy4kcmV3YXJkRWFybHkpIHtcbiAgICAgICAgJGNvbW1pdCgpOyAvLyBhd2FpdCB0aGUgd2F0Y2hlcnNcblxuICAgICAgICByZXR1cm4gX2NhbGxJZ25vcmVkKG5leHRUaWNrKTtcbiAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBhd2FpdCB0aGUgd2F0Y2hlcnNcbiAgICAgIHJldHVybiBfY2FsbChuZXh0VGljaywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgLy8gcmV0dXJuIHdoZXRoZXIgaXQgaXMgdmFsaWQgb3Igbm90XG4gICAgICAgICAgaWYgKCEkcGVuZGluZy52YWx1ZSkgcmV0dXJuIHJlc29sdmUoISRpbnZhbGlkLnZhbHVlKTtcbiAgICAgICAgICBjb25zdCB1bndhdGNoID0gd2F0Y2goJHBlbmRpbmcsICgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoISRpbnZhbGlkLnZhbHVlKTtcbiAgICAgICAgICAgIHVud2F0Y2goKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2hpbGQgY29tcG9uZW50J3MgcmVzdWx0cywgYmFzZWQgb24gcmVnaXN0cmF0aW9uIG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcmV0dXJuIHtWdWVsaWRhdGVTdGF0ZX1cbiAgICovXG5cblxuICBsZXQge1xuICAgIHZhbGlkYXRpb25zLFxuICAgIHN0YXRlLFxuICAgIGtleSxcbiAgICBwYXJlbnRLZXksXG4gICAgY2hpbGRSZXN1bHRzLFxuICAgIHJlc3VsdHNDYWNoZSxcbiAgICBnbG9iYWxDb25maWcgPSB7fSxcbiAgICBpbnN0YW5jZSxcbiAgICBleHRlcm5hbFJlc3VsdHNcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHBhdGggPSBwYXJlbnRLZXkgPyBgJHtwYXJlbnRLZXl9LiR7a2V5fWAgOiBrZXk7IC8vIFNvcnQgb3V0IHRoZSB2YWxpZGF0aW9uIG9iamVjdCBpbnRvOlxuICAvLyDigJMgcnVsZXMgPSB2YWxpZGF0b3JzIGZvciBjdXJyZW50IHN0YXRlIHRyZWUgZnJhZ21lbnRcbiAgLy8g4oCUIG5lc3RlZFZhbGlkYXRvcnMgPSBuZXN0ZWQgc3RhdGUgZnJhZ21lbnRzIGtleXMgdGhhdCBtaWdodCBjb250YWluIG1vcmUgdmFsaWRhdG9yc1xuICAvLyDigJMgY29uZmlnID0gY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoaXMgc3RhdGUgZnJhZ21lbnRcblxuICBjb25zdCB7XG4gICAgcnVsZXMsXG4gICAgbmVzdGVkVmFsaWRhdG9ycyxcbiAgICBjb25maWdcbiAgfSA9IHNvcnRWYWxpZGF0aW9ucyh2YWxpZGF0aW9ucyk7XG4gIGNvbnN0IG1lcmdlZENvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGdsb2JhbENvbmZpZywgY29uZmlnKTsgLy8gY3JlYXRlIHByb3RlY3RlZCBzdGF0ZSBmb3IgY2FzZXMgd2hlbiB0aGUgc3RhdGUgYnJhbmNoIGRvZXMgbm90IGV4aXN0IHlldC5cbiAgLy8gVGhpcyBwcm90ZWN0cyB3aGVuIHVzaW5nIHRoZSBPcHRpb25zQVBJIGFzIHRoZSBkYXRhIGlzIGJvdW5kIGFmdGVyIHRoZSBzZXR1cCBtZXRob2RcblxuICBjb25zdCBuZXN0ZWRTdGF0ZSA9IGtleSA/IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzID0gdW5yZWYoc3RhdGUpO1xuICAgIHJldHVybiBzID8gdW5yZWYoc1trZXldKSA6IHVuZGVmaW5lZDtcbiAgfSkgOiBzdGF0ZTsgLy8gY2FjaGUgdGhlIGV4dGVybmFsIHJlc3VsdHMsIHNvIHdlIGNhbiByZXZlcnQgYmFjayB0byB0aGVtXG5cbiAgY29uc3QgY2FjaGVkRXh0ZXJuYWxSZXN1bHRzID0gT2JqZWN0LmFzc2lnbih7fSwgdW5yZWYoZXh0ZXJuYWxSZXN1bHRzKSB8fCB7fSk7XG4gIGNvbnN0IG5lc3RlZEV4dGVybmFsUmVzdWx0cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZXN1bHRzID0gdW5yZWYoZXh0ZXJuYWxSZXN1bHRzKTtcbiAgICBpZiAoIWtleSkgcmV0dXJuIHJlc3VsdHM7XG4gICAgcmV0dXJuIHJlc3VsdHMgPyB1bnJlZihyZXN1bHRzW2tleV0pIDogdW5kZWZpbmVkO1xuICB9KTsgLy8gVXNlIHJ1bGVzIGZvciB0aGUgY3VycmVudCBzdGF0ZSBmcmFnbWVudCBhbmQgdmFsaWRhdGUgaXRcblxuICBjb25zdCByZXN1bHRzID0gY3JlYXRlVmFsaWRhdGlvblJlc3VsdHMocnVsZXMsIG5lc3RlZFN0YXRlLCBrZXksIHJlc3VsdHNDYWNoZSwgcGF0aCwgbWVyZ2VkQ29uZmlnLCBpbnN0YW5jZSwgbmVzdGVkRXh0ZXJuYWxSZXN1bHRzLCBzdGF0ZSk7IC8vIFVzZSBuZXN0ZWQga2V5cyB0byByZXBlYXQgdGhlIHByb2Nlc3NcbiAgLy8gKldBUk4qOiBUaGlzIGlzIHJlY3Vyc2l2ZVxuXG4gIGNvbnN0IG5lc3RlZFJlc3VsdHMgPSBjb2xsZWN0TmVzdGVkVmFsaWRhdGlvblJlc3VsdHMobmVzdGVkVmFsaWRhdG9ycywgbmVzdGVkU3RhdGUsIHBhdGgsIHJlc3VsdHNDYWNoZSwgbWVyZ2VkQ29uZmlnLCBpbnN0YW5jZSwgbmVzdGVkRXh0ZXJuYWxSZXN1bHRzKTsgLy8gQ29sbGVjdCBhbmQgbWVyZ2UgdGhpcyBsZXZlbCB2YWxpZGF0aW9uIHJlc3VsdHNcbiAgLy8gd2l0aCBhbGwgbmVzdGVkIHZhbGlkYXRpb24gcmVzdWx0c1xuXG4gIGNvbnN0IHtcbiAgICAkZGlydHksXG4gICAgJGVycm9ycyxcbiAgICAkaW52YWxpZCxcbiAgICAkYW55RGlydHksXG4gICAgJGVycm9yLFxuICAgICRwZW5kaW5nLFxuICAgICR0b3VjaCxcbiAgICAkcmVzZXQsXG4gICAgJHNpbGVudEVycm9ycyxcbiAgICAkY29tbWl0XG4gIH0gPSBjcmVhdGVNZXRhRmllbGRzKHJlc3VsdHMsIG5lc3RlZFJlc3VsdHMsIGNoaWxkUmVzdWx0cyk7XG4gIC8qKlxuICAgKiBJZiB3ZSBoYXZlIG5vIGBrZXlgLCB0aGlzIGlzIHRoZSB0b3AgbGV2ZWwgc3RhdGVcbiAgICogV2UgZG9udCBuZWVkIGAkbW9kZWxgIHRoZXJlLlxuICAgKi9cblxuICBjb25zdCAkbW9kZWwgPSBrZXkgPyBjb21wdXRlZCh7XG4gICAgZ2V0OiAoKSA9PiB1bnJlZihuZXN0ZWRTdGF0ZSksXG4gICAgc2V0OiB2YWwgPT4ge1xuICAgICAgJGRpcnR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHMgPSB1bnJlZihzdGF0ZSk7XG4gICAgICBjb25zdCBleHRlcm5hbCA9IHVucmVmKGV4dGVybmFsUmVzdWx0cyk7XG5cbiAgICAgIGlmIChleHRlcm5hbCkge1xuICAgICAgICBleHRlcm5hbFtrZXldID0gY2FjaGVkRXh0ZXJuYWxSZXN1bHRzW2tleV07XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1JlZihzW2tleV0pKSB7XG4gICAgICAgIHNba2V5XS52YWx1ZSA9IHZhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNba2V5XSA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH0pIDogbnVsbDtcblxuICBpZiAoa2V5ICYmIG1lcmdlZENvbmZpZy4kYXV0b0RpcnR5KSB7XG4gICAgd2F0Y2gobmVzdGVkU3RhdGUsICgpID0+IHtcbiAgICAgIGlmICghJGRpcnR5LnZhbHVlKSAkdG91Y2goKTtcbiAgICAgIGNvbnN0IGV4dGVybmFsID0gdW5yZWYoZXh0ZXJuYWxSZXN1bHRzKTtcblxuICAgICAgaWYgKGV4dGVybmFsKSB7XG4gICAgICAgIGV4dGVybmFsW2tleV0gPSBjYWNoZWRFeHRlcm5hbFJlc3VsdHNba2V5XTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBmbHVzaDogJ3N5bmMnXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiAkZ2V0UmVzdWx0c0ZvckNoaWxkKGtleSkge1xuICAgIHJldHVybiAoY2hpbGRSZXN1bHRzLnZhbHVlIHx8IHt9KVtrZXldO1xuICB9XG5cbiAgZnVuY3Rpb24gJGNsZWFyRXh0ZXJuYWxSZXN1bHRzKCkge1xuICAgIGlmIChpc1JlZihleHRlcm5hbFJlc3VsdHMpKSB7XG4gICAgICBleHRlcm5hbFJlc3VsdHMudmFsdWUgPSBjYWNoZWRFeHRlcm5hbFJlc3VsdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIHRoZSBleHRlcm5hbCByZXN1bHRzIHN0YXRlIHdhcyBlbXB0eSwgd2UgbmVlZCB0byBkZWxldGUgZXZlcnkgcHJvcGVydHksIG9uZSBieSBvbmVcbiAgICAgIGlmIChPYmplY3Qua2V5cyhjYWNoZWRFeHRlcm5hbFJlc3VsdHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBPYmplY3Qua2V5cyhleHRlcm5hbFJlc3VsdHMpLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgZGVsZXRlIGV4dGVybmFsUmVzdWx0c1trXTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzdGF0ZSB3YXMgbm90IGVtcHR5LCBzbyB3ZSBqdXN0IGFzc2lnbiBpdCBiYWNrIGludG8gdGhlIGN1cnJlbnQgc3RhdGVcbiAgICAgICAgT2JqZWN0LmFzc2lnbihleHRlcm5hbFJlc3VsdHMsIGNhY2hlZEV4dGVybmFsUmVzdWx0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlYWN0aXZlKE9iamVjdC5hc3NpZ24oe30sIHJlc3VsdHMsIHtcbiAgICAvLyBOT1RFOiBUaGUgb3JkZXIgaGVyZSBpcyB2ZXJ5IGltcG9ydGFudCwgc2luY2Ugd2Ugd2FudCB0byBvdmVycmlkZVxuICAgIC8vIHNvbWUgb2YgdGhlICpyZXN1bHRzKiBtZXRhIGZpZWxkcyB3aXRoIHRoZSBjb2xsZWN0aXZlIHZlcnNpb24gb2YgaXRcbiAgICAvLyB0aGF0IGluY2x1ZGVzIHRoZSByZXN1bHRzIG9mIG5lc3RlZCBzdGF0ZSB2YWxpZGF0aW9uIHJlc3VsdHNcbiAgICAkbW9kZWwsXG4gICAgJGRpcnR5LFxuICAgICRlcnJvcixcbiAgICAkZXJyb3JzLFxuICAgICRpbnZhbGlkLFxuICAgICRhbnlEaXJ0eSxcbiAgICAkcGVuZGluZyxcbiAgICAkdG91Y2gsXG4gICAgJHJlc2V0LFxuICAgICRwYXRoOiBwYXRoIHx8IFJPT1RfUEFUSCxcbiAgICAkc2lsZW50RXJyb3JzLFxuICAgICR2YWxpZGF0ZSxcbiAgICAkY29tbWl0XG4gIH0sIGNoaWxkUmVzdWx0cyAmJiB7XG4gICAgJGdldFJlc3VsdHNGb3JDaGlsZCxcbiAgICAkY2xlYXJFeHRlcm5hbFJlc3VsdHNcbiAgfSwgbmVzdGVkUmVzdWx0cykpO1xufVxuXG5jbGFzcyBSZXN1bHRzU3RvcmFnZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3RvcmFnZSA9IG5ldyBNYXAoKTtcbiAgfVxuICAvKipcbiAgICogU3RvcmVzIGEgdmFsaWRhdGlvbiByZXN1bHQsIGFuZCBpdHMgcnVsZXMgYnkgaXRzIHBhdGhcbiAgICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAgICogQHBhcmFtIHtPYmplY3Q8Tm9ybWFsaXplZFZhbGlkYXRvcj59IHJ1bGVzXG4gICAqIEBwYXJhbSB7VmFsaWRhdGlvblJlc3VsdH0gcmVzdWx0XG4gICAqL1xuXG5cbiAgc2V0KHBhdGgsIHJ1bGVzLCByZXN1bHQpIHtcbiAgICB0aGlzLnN0b3JhZ2Uuc2V0KHBhdGgsIHtcbiAgICAgIHJ1bGVzLFxuICAgICAgcmVzdWx0XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBzdG9yZWQgYHJlc3VsdHNgIGZvciB0aGUgcHJvdmlkZWQgYHBhdGhgIGhhdmUgdGhlIHNhbWUgYHJ1bGVzYCBjb21wYXJlZCB0byAnc3RvcmVkUnVsZXMnXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gICAqIEBwYXJhbSB7T2JqZWN0PE5vcm1hbGl6ZWRWYWxpZGF0b3I+fSBydWxlc1xuICAgKiBAcGFyYW0ge09iamVjdDxOb3JtYWxpemVkVmFsaWRhdG9yPn0gc3RvcmVkUnVsZXNcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG5cblxuICBjaGVja1J1bGVzVmFsaWRpdHkocGF0aCwgcnVsZXMsIHN0b3JlZFJ1bGVzKSB7XG4gICAgY29uc3Qgc3RvcmVkUnVsZXNLZXlzID0gT2JqZWN0LmtleXMoc3RvcmVkUnVsZXMpO1xuICAgIGNvbnN0IG5ld1J1bGVzS2V5cyA9IE9iamVjdC5rZXlzKHJ1bGVzKTtcbiAgICBpZiAobmV3UnVsZXNLZXlzLmxlbmd0aCAhPT0gc3RvcmVkUnVsZXNLZXlzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGhhc0FsbFZhbGlkYXRvcnMgPSBuZXdSdWxlc0tleXMuZXZlcnkocnVsZUtleSA9PiBzdG9yZWRSdWxlc0tleXMuaW5jbHVkZXMocnVsZUtleSkpO1xuICAgIGlmICghaGFzQWxsVmFsaWRhdG9ycykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBuZXdSdWxlc0tleXMuZXZlcnkocnVsZUtleSA9PiB7XG4gICAgICBpZiAoIXJ1bGVzW3J1bGVLZXldLiRwYXJhbXMpIHJldHVybiB0cnVlO1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHJ1bGVzW3J1bGVLZXldLiRwYXJhbXMpLmV2ZXJ5KHBhcmFtS2V5ID0+IHtcbiAgICAgICAgLy8gbWFrZSBzdXJlIHRvIHVud3JhcCBiZWZvcmUgY29tcGFyaW5nXG4gICAgICAgIHJldHVybiB1bnJlZihzdG9yZWRSdWxlc1tydWxlS2V5XS4kcGFyYW1zW3BhcmFtS2V5XSkgPT09IHVucmVmKHJ1bGVzW3J1bGVLZXldLiRwYXJhbXNbcGFyYW1LZXldKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtYXRjaGVkIHJlc3VsdCBpZiBjYXRjaGUgaXMgdmFsaWRcbiAgICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAgICogQHBhcmFtIHtPYmplY3Q8Tm9ybWFsaXplZFZhbGlkYXRvcj59IHJ1bGVzXG4gICAqIEByZXR1cm4ge3skcGFydGlhbDogYm9vbGVhbiwgJGRpcnR5OiBSZWY8Qm9vbGVhbj4sICR1bndhdGNoOiBmdW5jdGlvbn18dW5kZWZpbmVkfFZhbGlkYXRpb25SZXN1bHR9XG4gICAqL1xuXG5cbiAgZ2V0KHBhdGgsIHJ1bGVzKSB7XG4gICAgY29uc3Qgc3RvcmVkUnVsZVJlc3VsdFBhaXIgPSB0aGlzLnN0b3JhZ2UuZ2V0KHBhdGgpO1xuICAgIGlmICghc3RvcmVkUnVsZVJlc3VsdFBhaXIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qge1xuICAgICAgcnVsZXM6IHN0b3JlZFJ1bGVzLFxuICAgICAgcmVzdWx0XG4gICAgfSA9IHN0b3JlZFJ1bGVSZXN1bHRQYWlyO1xuICAgIGNvbnN0IGlzVmFsaWRDYWNoZSA9IHRoaXMuY2hlY2tSdWxlc1ZhbGlkaXR5KHBhdGgsIHJ1bGVzLCBzdG9yZWRSdWxlcyk7XG4gICAgY29uc3QgJHVud2F0Y2ggPSByZXN1bHQuJHVud2F0Y2ggPyByZXN1bHQuJHVud2F0Y2ggOiAoKSA9PiAoe30pO1xuICAgIGlmICghaXNWYWxpZENhY2hlKSByZXR1cm4ge1xuICAgICAgJGRpcnR5OiByZXN1bHQuJGRpcnR5LFxuICAgICAgJHBhcnRpYWw6IHRydWUsXG4gICAgICAkdW53YXRjaFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG59XG5cbmNvbnN0IENvbGxlY3RGbGFnID0ge1xuICBDT0xMRUNUX0FMTDogdHJ1ZSxcbiAgQ09MTEVDVF9OT05FOiBmYWxzZVxufTtcbmNvbnN0IFZ1ZWxpZGF0ZUluamVjdENoaWxkUmVzdWx0cyA9IFN5bWJvbCgndnVlbGlkYXRlI2luamVjdENoaWxkUmVzdWx0cycpO1xuY29uc3QgVnVlbGlkYXRlUmVtb3ZlQ2hpbGRSZXN1bHRzID0gU3ltYm9sKCd2dWVsaWRhdGUjcmVtb3ZlQ2hpbGRSZXN1bHRzJyk7XG4vKipcbiAqIENyZWF0ZSBoZWxwZXJzIHRvIGNvbGxlY3QgdmFsaWRhdGlvbiBzdGF0ZSBmcm9tIGNoaWxkIGNvbXBvbmVudHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcbiAqIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyIHwgQm9vbGVhbn0gcGFyYW1zLiRzY29wZSAtIFBhcmVudCBjb21wb25lbnQgc2NvcGVcbiAqIEByZXR1cm4ge3tzZW5kVmFsaWRhdGlvblJlc3VsdHNUb1BhcmVudDogZnVuY3Rpb25bXSwgY2hpbGRSZXN1bHRzOiBDb21wdXRlZFJlZjxPYmplY3Q+LCByZW1vdmVWYWxpZGF0aW9uUmVzdWx0c0Zyb21QYXJlbnQ6IGZ1bmN0aW9uW119fVxuICovXG5cbmZ1bmN0aW9uIG5lc3RlZFZhbGlkYXRpb25zKF9yZWYpIHtcbiAgbGV0IHtcbiAgICAkc2NvcGUsXG4gICAgaW5zdGFuY2VcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGNoaWxkUmVzdWx0c1JhdyA9IHt9O1xuICBjb25zdCBjaGlsZFJlc3VsdHNLZXlzID0gcmVmKFtdKTtcbiAgY29uc3QgY2hpbGRSZXN1bHRzID0gY29tcHV0ZWQoKCkgPT4gY2hpbGRSZXN1bHRzS2V5cy52YWx1ZS5yZWR1Y2UoKHJlc3VsdHMsIGtleSkgPT4ge1xuICAgIHJlc3VsdHNba2V5XSA9IHVucmVmKGNoaWxkUmVzdWx0c1Jhd1trZXldKTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfSwge30pKTtcbiAgLyoqXG4gICAqIEFsbG93cyBjaGlsZHJlbiB0byBzZW5kIHZhbGlkYXRpb24gZGF0YSB1cCB0byB0aGVpciBwYXJlbnQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSByZXN1bHRzIC0gdGhlIHJlc3VsdHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MuJHJlZ2lzdGVyQXMgLSB0aGUgJHJlZ2lzdGVyZWRBcyBrZXlcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXIgfCBCb29sZWFufSBhcmdzLiRzY29wZSAtIHRoZSAkc2NvcGUga2V5XG4gICAqL1xuXG4gIGZ1bmN0aW9uIGluamVjdENoaWxkUmVzdWx0c0ludG9QYXJlbnQocmVzdWx0cywgX3JlZjIpIHtcbiAgICBsZXQge1xuICAgICAgJHJlZ2lzdGVyQXM6IGtleSxcbiAgICAgICRzY29wZTogY2hpbGRTY29wZSxcbiAgICAgICRzdG9wUHJvcGFnYXRpb25cbiAgICB9ID0gX3JlZjI7XG4gICAgaWYgKCRzdG9wUHJvcGFnYXRpb24gfHwgJHNjb3BlID09PSBDb2xsZWN0RmxhZy5DT0xMRUNUX05PTkUgfHwgY2hpbGRTY29wZSA9PT0gQ29sbGVjdEZsYWcuQ09MTEVDVF9OT05FIHx8ICRzY29wZSAhPT0gQ29sbGVjdEZsYWcuQ09MTEVDVF9BTEwgJiYgJHNjb3BlICE9PSBjaGlsZFNjb3BlKSByZXR1cm47XG4gICAgY2hpbGRSZXN1bHRzUmF3W2tleV0gPSByZXN1bHRzO1xuICAgIGNoaWxkUmVzdWx0c0tleXMudmFsdWUucHVzaChrZXkpO1xuICB9IC8vIGNvbWJpbmUgd2l0aCBvdGhlciBgaW5qZWN0Q2hpbGRSZXN1bHRzSW50b1BhcmVudGAgZnJvbSB2dWVsaWRhdGUgaW5zdGFuY2VzIGluIHRoaXMgVnVlIGNvbXBvbmVudCBpbnN0YW5jZVxuXG5cbiAgaW5zdGFuY2UuX192dWVsaWRhdGVJbmplY3RJbnN0YW5jZXMgPSBbXS5jb25jYXQoaW5zdGFuY2UuX192dWVsaWRhdGVJbmplY3RJbnN0YW5jZXMgfHwgW10sIGluamVjdENoaWxkUmVzdWx0c0ludG9QYXJlbnQpO1xuICAvKipcbiAgICogQWxsb3dzIGNoaWxkcmVuIHRvIHJlbW92ZSB0aGUgdmFsaWRhdGlvbiBkYXRhIGZyb20gdGhlaXIgcGFyZW50LCBiZWZvcmUgZ2V0dGluZyBkZXN0cm95ZWQuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBrZXkgLSB0aGUgcmVnaXN0ZXJlZEFzIGtleVxuICAgKi9cblxuICBmdW5jdGlvbiByZW1vdmVDaGlsZFJlc3VsdHNGcm9tUGFyZW50KGtleSkge1xuICAgIC8vIHJlbW92ZSB0aGUga2V5XG4gICAgY2hpbGRSZXN1bHRzS2V5cy52YWx1ZSA9IGNoaWxkUmVzdWx0c0tleXMudmFsdWUuZmlsdGVyKGNoaWxkS2V5ID0+IGNoaWxkS2V5ICE9PSBrZXkpOyAvLyByZW1vdmUgdGhlIHN0b3JlZCBkYXRhIGZvciB0aGUga2V5XG5cbiAgICBkZWxldGUgY2hpbGRSZXN1bHRzUmF3W2tleV07XG4gIH0gLy8gY29tYmluZSB3aXRoIG90aGVyIGByZW1vdmVDaGlsZFJlc3VsdHNGcm9tUGFyZW50YCBmcm9tIHZ1ZWxpZGF0ZSBpbnN0YW5jZXMgaW4gdGhpcyBWdWUgY29tcG9uZW50IGluc3RhbmNlXG5cblxuICBpbnN0YW5jZS5fX3Z1ZWxpZGF0ZVJlbW92ZUluc3RhbmNlcyA9IFtdLmNvbmNhdChpbnN0YW5jZS5fX3Z1ZWxpZGF0ZVJlbW92ZUluc3RhbmNlcyB8fCBbXSwgcmVtb3ZlQ2hpbGRSZXN1bHRzRnJvbVBhcmVudCk7IC8vIGluamVjdCB0aGUgYGluamVjdENoaWxkUmVzdWx0c0ludG9QYXJlbnRgIG1ldGhvZCwgaW50byB0aGUgY3VycmVudCBzY29wZVxuXG4gIGNvbnN0IHNlbmRWYWxpZGF0aW9uUmVzdWx0c1RvUGFyZW50ID0gaW5qZWN0KFZ1ZWxpZGF0ZUluamVjdENoaWxkUmVzdWx0cywgW10pOyAvLyBwcm92aWRlIHRvIGFsbCBvZiBpdHMgY2hpbGRyZW4gdGhlIHNlbmQgcmVzdWx0cyB0byBwYXJlbnQgZnVuY3Rpb25cblxuICBwcm92aWRlKFZ1ZWxpZGF0ZUluamVjdENoaWxkUmVzdWx0cywgaW5zdGFuY2UuX192dWVsaWRhdGVJbmplY3RJbnN0YW5jZXMpO1xuICBjb25zdCByZW1vdmVWYWxpZGF0aW9uUmVzdWx0c0Zyb21QYXJlbnQgPSBpbmplY3QoVnVlbGlkYXRlUmVtb3ZlQ2hpbGRSZXN1bHRzLCBbXSk7IC8vIHByb3ZpZGUgdG8gYWxsIG9mIGl0cyBjaGlsZHJlbiB0aGUgcmVtb3ZlIHJlc3VsdHMgIGZ1bmN0aW9uXG5cbiAgcHJvdmlkZShWdWVsaWRhdGVSZW1vdmVDaGlsZFJlc3VsdHMsIGluc3RhbmNlLl9fdnVlbGlkYXRlUmVtb3ZlSW5zdGFuY2VzKTtcbiAgcmV0dXJuIHtcbiAgICBjaGlsZFJlc3VsdHMsXG4gICAgc2VuZFZhbGlkYXRpb25SZXN1bHRzVG9QYXJlbnQsXG4gICAgcmVtb3ZlVmFsaWRhdGlvblJlc3VsdHNGcm9tUGFyZW50XG4gIH07XG59XG5cbi8qKlxuICogSGVscGVyIHByb3h5IGZvciBpbnN0YW5jZSBwcm9wZXJ0eSBhY2Nlc3MuIEl0IG1ha2VzIGV2ZXJ5IHJlZmVyZW5jZVxuICogcmVhY3RpdmUgZm9yIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcmV0dXJuIHsqfENvbXB1dGVkUmVmPCo+fVxuICovXG5cbmZ1bmN0aW9uIENvbXB1dGVkUHJveHlGYWN0b3J5KHRhcmdldCkge1xuICByZXR1cm4gbmV3IFByb3h5KHRhcmdldCwge1xuICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdGFyZ2V0W3Byb3BdID09PSAnb2JqZWN0JyA/IENvbXB1dGVkUHJveHlGYWN0b3J5KHRhcmdldFtwcm9wXSkgOiBjb21wdXRlZCgoKSA9PiB0YXJnZXRbcHJvcF0pO1xuICAgIH1cblxuICB9KTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBHbG9iYWxDb25maWdcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBbJHJlZ2lzdGVyQXNdIC0gQ29uZmlnIE9iamVjdFxuICogQHByb3BlcnR5IHtTdHJpbmcgfCBOdW1iZXIgfCBTeW1ib2x9IFskc2NvcGVdIC0gQSBzY29wZSB0byBsaW1pdCBjaGlsZCBjb21wb25lbnQgcmVnaXN0cmF0aW9uXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IFskc3RvcFByb3BhZ2F0aW9uXSAtIFRlbGxzIGEgVnVlIGNvbXBvbmVudCB0byBzdG9wIHNlbmRpbmcgaXRzIHJlc3VsdHMgdXAgdG8gdGhlIHBhcmVudFxuICogQHByb3BlcnR5IHtSZWY8T2JqZWN0Pn0gWyRleHRlcm5hbFJlc3VsdHNdIC0gRXh0ZXJuYWwgZXJyb3IgbWVzc2FnZXMsIGxpa2UgZnJvbSBzZXJ2ZXIgdmFsaWRhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gWyRhdXRvRGlydHldIC0gU2hvdWxkIHRoZSBmb3JtIHdhdGNoIGZvciBzdGF0ZSBjaGFuZ2VkLCBhbmQgYXV0b21hdGljYWxseSBzZXQgYCRkaXJ0eWAgdG8gdHJ1ZS5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gWyRsYXp5XSAtIFNob3VsZCB0aGUgdmFsaWRhdGlvbnMgYmUgbGF6eSwgYW5kIHJ1biBvbmx5IGFmdGVyIHRoZXkgYXJlIGRpcnR5XG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IFskcmV3YXJkRWFybHldIC0gT25jZSB2YWxpZCwgcmUtcnVucyBwcm9wZXJ0eSB2YWxpZGF0b3JzIG9ubHkgb24gbWFudWFsIGNhbGxzIG9mICRjb21taXRcbiAqL1xuXG4vKipcbiAqIENvbXBvc2l0aW9uIEFQSSBjb21wYXRpYmxlIFZ1ZWxpZGF0ZVxuICogVXNlIGluc2lkZSB0aGUgYHNldHVwYCBsaWZlY3ljbGUgaG9va1xuICogQHBhcmFtIHtPYmplY3QgfCBHbG9iYWxDb25maWd9IFt2YWxpZGF0aW9uc10gLSBWYWxpZGF0aW9ucyBPYmplY3Qgb3IgdGhlIGdsb2JhbENvbmZpZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhdGVdIC0gU3RhdGUgb2JqZWN0IC0gcmVxdWlyZWQgaWYgYHZhbGlkYXRpb25zYCBpcyBhIHZhbGlkYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtHbG9iYWxDb25maWd9IFtnbG9iYWxDb25maWddIC0gQ29uZmlnIE9iamVjdFxuICogQHJldHVybiB7Q29tcHV0ZWRSZWY8Kj59XG4gKi9cblxuZnVuY3Rpb24gdXNlVnVlbGlkYXRlKHZhbGlkYXRpb25zLCBzdGF0ZSkge1xuICBsZXQgZ2xvYmFsQ29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcblxuICAvLyBpZiB3ZSBwYXNzIG9ubHkgb25lIGFyZ3VtZW50LCBpdHMgbW9zdCBwcm9iYWJseSB0aGUgZ2xvYmFsQ29uZmlnLlxuICAvLyBUaGlzIHVzZSBjYXNlIGlzIHNvIHBhcmVudHMgY2FuIGp1c3QgY29sbGVjdCByZXN1bHRzIG9mIGNoaWxkIGZvcm1zLlxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIGdsb2JhbENvbmZpZyA9IHZhbGlkYXRpb25zO1xuICAgIHZhbGlkYXRpb25zID0gdW5kZWZpbmVkO1xuICAgIHN0YXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IHtcbiAgICAkcmVnaXN0ZXJBcyxcbiAgICAkc2NvcGUgPSBDb2xsZWN0RmxhZy5DT0xMRUNUX0FMTCxcbiAgICAkc3RvcFByb3BhZ2F0aW9uLFxuICAgICRleHRlcm5hbFJlc3VsdHMsXG4gICAgY3VycmVudFZ1ZUluc3RhbmNlXG4gIH0gPSBnbG9iYWxDb25maWc7XG4gIGNvbnN0IGluc3RhbmNlID0gY3VycmVudFZ1ZUluc3RhbmNlIHx8IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBjb25zdCBjb21wb25lbnRPcHRpb25zID0gaW5zdGFuY2UgPyBpbnN0YW5jZS5wcm94eS4kb3B0aW9ucyA6IHt9OyAvLyBpZiB0aGVyZSBpcyBubyByZWdpc3RyYXRpb24gbmFtZSwgYWRkIG9uZS5cblxuICBpZiAoISRyZWdpc3RlckFzICYmIGluc3RhbmNlKSB7XG4gICAgLy8gTk9URTpcbiAgICAvLyAuX3VpZCAvLyBWdWUgMi54IENvbXBvc2l0aW9uLUFQSSBwbHVnaW5cbiAgICAvLyAudWlkIC8vIFZ1ZSAzLjBcbiAgICBjb25zdCB1aWQgPSBpbnN0YW5jZS51aWQgfHwgaW5zdGFuY2UuX3VpZDtcbiAgICAkcmVnaXN0ZXJBcyA9IGBfdnVlbGlkYXRlXyR7dWlkfWA7XG4gIH1cblxuICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0cyA9IHJlZih7fSk7XG4gIGNvbnN0IHJlc3VsdHNDYWNoZSA9IG5ldyBSZXN1bHRzU3RvcmFnZSgpO1xuICBjb25zdCB7XG4gICAgY2hpbGRSZXN1bHRzLFxuICAgIHNlbmRWYWxpZGF0aW9uUmVzdWx0c1RvUGFyZW50LFxuICAgIHJlbW92ZVZhbGlkYXRpb25SZXN1bHRzRnJvbVBhcmVudFxuICB9ID0gaW5zdGFuY2UgPyBuZXN0ZWRWYWxpZGF0aW9ucyh7XG4gICAgJHNjb3BlLFxuICAgIGluc3RhbmNlXG4gIH0pIDoge1xuICAgIGNoaWxkUmVzdWx0czogcmVmKHt9KVxuICB9OyAvLyBPcHRpb25zIEFQSVxuXG4gIGlmICghdmFsaWRhdGlvbnMgJiYgY29tcG9uZW50T3B0aW9ucy52YWxpZGF0aW9ucykge1xuICAgIGNvbnN0IHJ1bGVzID0gY29tcG9uZW50T3B0aW9ucy52YWxpZGF0aW9ucztcbiAgICBzdGF0ZSA9IHJlZih7fSk7XG4gICAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgICAvLyBEZWxheSBiaW5kaW5nIHN0YXRlIHRvIHZhbGlkYXRpb25zIGRlZmluZWQgd2l0aCB0aGUgT3B0aW9ucyBBUEkgdW50aWwgbW91bnRpbmcsIHdoZW4gdGhlIGRhdGFcbiAgICAgIC8vIGhhcyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuIEZyb20gdGhhdCBwb2ludCBvbiBpdCB3aWxsIGJlIHJlYWN0aXZlLlxuICAgICAgc3RhdGUudmFsdWUgPSBpbnN0YW5jZS5wcm94eTtcbiAgICAgIHdhdGNoKCgpID0+IGlzRnVuY3Rpb24ocnVsZXMpID8gcnVsZXMuY2FsbChzdGF0ZS52YWx1ZSwgbmV3IENvbXB1dGVkUHJveHlGYWN0b3J5KHN0YXRlLnZhbHVlKSkgOiBydWxlcywgdmFsaWRhdGlvbnMgPT4ge1xuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0cy52YWx1ZSA9IHNldFZhbGlkYXRpb25zKHtcbiAgICAgICAgICB2YWxpZGF0aW9ucyxcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBjaGlsZFJlc3VsdHMsXG4gICAgICAgICAgcmVzdWx0c0NhY2hlLFxuICAgICAgICAgIGdsb2JhbENvbmZpZyxcbiAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UucHJveHksXG4gICAgICAgICAgZXh0ZXJuYWxSZXN1bHRzOiAkZXh0ZXJuYWxSZXN1bHRzIHx8IGluc3RhbmNlLnByb3h5LnZ1ZWxpZGF0ZUV4dGVybmFsUmVzdWx0c1xuICAgICAgICB9KTtcbiAgICAgIH0sIHtcbiAgICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBnbG9iYWxDb25maWcgPSBjb21wb25lbnRPcHRpb25zLnZhbGlkYXRpb25zQ29uZmlnIHx8IGdsb2JhbENvbmZpZztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uc1dhdGNoVGFyZ2V0ID0gaXNSZWYodmFsaWRhdGlvbnMpIHx8IGlzUHJveHkodmFsaWRhdGlvbnMpID8gdmFsaWRhdGlvbnMgLy8gd3JhcCBwbGFpbiBvYmplY3RzIGluIGEgcmVhY3RpdmUsIHNvIHdlIGNhbiB0cmFjayBjaGFuZ2VzIGlmIHRoZXkgaGF2ZSBjb21wdXRlZCBpbiB0aGVtLlxuICAgIDogcmVhY3RpdmUodmFsaWRhdGlvbnMgfHwge30pO1xuICAgIHdhdGNoKHZhbGlkYXRpb25zV2F0Y2hUYXJnZXQsIG5ld1ZhbGlkYXRpb25SdWxlcyA9PiB7XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0cy52YWx1ZSA9IHNldFZhbGlkYXRpb25zKHtcbiAgICAgICAgdmFsaWRhdGlvbnM6IG5ld1ZhbGlkYXRpb25SdWxlcyxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGNoaWxkUmVzdWx0cyxcbiAgICAgICAgcmVzdWx0c0NhY2hlLFxuICAgICAgICBnbG9iYWxDb25maWcsXG4gICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSA/IGluc3RhbmNlLnByb3h5IDoge30sXG4gICAgICAgIGV4dGVybmFsUmVzdWx0czogJGV4dGVybmFsUmVzdWx0c1xuICAgICAgfSk7XG4gICAgfSwge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBpZiAoaW5zdGFuY2UpIHtcbiAgICAvLyBzZW5kIGFsbCB0aGUgZGF0YSB0byB0aGUgcGFyZW50IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQgaW5zaWRlIHNldHVwLlxuICAgIHNlbmRWYWxpZGF0aW9uUmVzdWx0c1RvUGFyZW50LmZvckVhY2goZiA9PiBmKHZhbGlkYXRpb25SZXN1bHRzLCB7XG4gICAgICAkcmVnaXN0ZXJBcyxcbiAgICAgICRzY29wZSxcbiAgICAgICRzdG9wUHJvcGFnYXRpb25cbiAgICB9KSk7IC8vIGJlZm9yZSB0aGlzIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQsIHJlbW92ZSBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgcGFyZW50LlxuXG4gICAgb25CZWZvcmVVbm1vdW50KCgpID0+IHJlbW92ZVZhbGlkYXRpb25SZXN1bHRzRnJvbVBhcmVudC5mb3JFYWNoKGYgPT4gZigkcmVnaXN0ZXJBcykpKTtcbiAgfVxuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHVucmVmKHZhbGlkYXRpb25SZXN1bHRzLnZhbHVlKSwgY2hpbGRSZXN1bHRzLnZhbHVlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IENvbGxlY3RGbGFnLCB1c2VWdWVsaWRhdGUgYXMgZGVmYXVsdCwgdXNlVnVlbGlkYXRlIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@vuelidate/core/dist/index.esm.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/@vuelidate/validators/dist/index.esm.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/@vuelidate/validators/dist/index.esm.js ***!
|
||
\**************************************************************/
|
||
/*! exports provided: alpha, alphaNum, and, between, createI18nMessage, decimal, email, helpers, integer, ipAddress, macAddress, maxLength, maxValue, minLength, minValue, not, numeric, or, required, requiredIf, requiredUnless, sameAs, url */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alpha\", function() { return alpha; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alphaNum\", function() { return alphaNum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"and\", function() { return and; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"between\", function() { return between; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createI18nMessage\", function() { return createI18nMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decimal\", function() { return decimal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"email\", function() { return email; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"helpers\", function() { return common; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"integer\", function() { return integer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ipAddress\", function() { return ipAddress; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"macAddress\", function() { return macAddress; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"maxLength\", function() { return maxLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"maxValue\", function() { return maxValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minLength\", function() { return minLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minValue\", function() { return minValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"not\", function() { return not; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"numeric\", function() { return numeric; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"or\", function() { return or; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"required\", function() { return required; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requiredIf\", function() { return requiredIf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requiredUnless\", function() { return requiredUnless; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sameAs\", function() { return sameAs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"url\", function() { return url; });\n/* harmony import */ var vue_demi__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-demi */ \"./node_modules/vue-demi/lib/index.mjs\");\n\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\nfunction isObject(o) {\n return o !== null && typeof o === 'object' && !Array.isArray(o);\n}\n/**\n * Returns a standard ValidatorObject\n * Wraps a plain function into a ValidatorObject\n * @param {NormalizedValidator|Function} validator\n * @return {NormalizedValidator}\n */\n\nfunction normalizeValidatorObject(validator) {\n return isFunction(validator.$validator) ? Object.assign({}, validator) : {\n $validator: validator\n };\n}\nfunction isPromise(object) {\n return isObject(object) && isFunction(object.then);\n}\n/**\n * Unwraps a ValidatorResponse object, into a boolean.\n * @param {ValidatorResponse} result\n * @return {boolean}\n */\n\nfunction unwrapValidatorResponse(result) {\n if (typeof result === 'object') return result.$valid;\n return result;\n}\n/**\n * Unwraps a `NormalizedValidator` object, returning its validator function.\n * @param {NormalizedValidator | Function} validator\n * @return {function}\n */\n\nfunction unwrapNormalizedValidator(validator) {\n return validator.$validator || validator;\n}\n\n/**\n * Allows attaching parameters to a validator\n * @param {Object} $params\n * @param {NormalizedValidator|Function} $validator\n * @return {NormalizedValidator}\n */\n\nfunction withParams($params, $validator) {\n if (!isObject($params)) throw new Error(`[@vuelidate/validators]: First parameter to \"withParams\" should be an object, provided ${typeof $params}`);\n if (!isObject($validator) && !isFunction($validator)) throw new Error(`[@vuelidate/validators]: Validator must be a function or object with $validator parameter`);\n const validatorObj = normalizeValidatorObject($validator);\n validatorObj.$params = Object.assign({}, validatorObj.$params || {}, $params);\n return validatorObj;\n}\n\n/**\n * @callback MessageCallback\n * @param {Object} params\n * @return String\n */\n\n/**\n * Attaches a message to a validator\n * @param {MessageCallback | String} $message\n * @param {NormalizedValidator|Function} $validator\n * @return {NormalizedValidator}\n */\n\nfunction withMessage($message, $validator) {\n if (!isFunction($message) && typeof Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])($message) !== 'string') throw new Error(`[@vuelidate/validators]: First parameter to \"withMessage\" should be string or a function returning a string, provided ${typeof $message}`);\n if (!isObject($validator) && !isFunction($validator)) throw new Error(`[@vuelidate/validators]: Validator must be a function or object with $validator parameter`);\n const validatorObj = normalizeValidatorObject($validator);\n validatorObj.$message = $message;\n return validatorObj;\n}\n\n/**\n * @typedef {function(*): Promise<boolean|ValidatorResponse>} asyncValidator\n */\n\n/**\n * @typedef {Ref<*>[]|function(*): *} watchTargets\n */\n\n/**\n * Wraps validators that returns a Promise.\n * @param {asyncValidator} $validator\n * @param {watchTargets} $watchTargets\n * @return {{$async: boolean, $validator: asyncValidator, $watchTargets: watchTargets}}\n */\n\nfunction withAsync($validator) {\n let $watchTargets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n const validatorObj = normalizeValidatorObject($validator);\n return Object.assign({}, validatorObj, {\n $async: true,\n $watchTargets\n });\n}\n\nfunction forEach(validators) {\n return {\n $validator(collection) {\n for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n others[_key - 1] = arguments[_key];\n }\n\n // go over the collection. It can be a ref as well.\n return Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(collection).reduce((previous, collectionItem) => {\n // go over each property\n const collectionEntryResult = Object.entries(collectionItem).reduce((all, _ref) => {\n let [property, $model] = _ref;\n // get the validators for this property\n const innerValidators = validators[property] || {}; // go over each validator and run it\n\n const propertyResult = Object.entries(innerValidators).reduce((all, _ref2) => {\n let [validatorName, currentValidator] = _ref2;\n // extract the validator. Supports simple and extended validators.\n const validatorFunction = unwrapNormalizedValidator(currentValidator); // Call the validator, passing the VM as this, the value, current iterated object and the rest.\n\n const $response = validatorFunction.call(this, $model, collectionItem, ...others); // extract the valid from the result\n\n const $valid = unwrapValidatorResponse($response); // store the entire response for later\n\n all.$data[validatorName] = $response;\n all.$data.$invalid = !$valid || !!all.$data.$invalid;\n all.$data.$error = all.$data.$invalid; // if not valid, get the $message\n\n if (!$valid) {\n let $message = currentValidator.$message || '';\n const $params = currentValidator.$params || {}; // If $message is a function, we call it with the appropriate parameters\n\n if (typeof $message === 'function') {\n $message = $message({\n $pending: false,\n $invalid: !$valid,\n $params,\n $model,\n $response\n });\n } // save the error object\n\n\n all.$errors.push({\n $property: property,\n $message,\n $params,\n $response,\n $model,\n $pending: false,\n $validator: validatorName\n });\n }\n\n return {\n $valid: all.$valid && $valid,\n $data: all.$data,\n $errors: all.$errors\n };\n }, {\n $valid: true,\n $data: {},\n $errors: []\n });\n all.$data[property] = propertyResult.$data;\n all.$errors[property] = propertyResult.$errors;\n return {\n $valid: all.$valid && propertyResult.$valid,\n $data: all.$data,\n $errors: all.$errors\n };\n }, {\n $valid: true,\n $data: {},\n $errors: {}\n });\n return {\n $valid: previous.$valid && collectionEntryResult.$valid,\n $data: previous.$data.concat(collectionEntryResult.$data),\n $errors: previous.$errors.concat(collectionEntryResult.$errors)\n };\n }, {\n $valid: true,\n $data: [],\n $errors: []\n });\n },\n\n // collect all the validation errors into a 2 dimensional array, for each entry in the collection, you have an array of error messages.\n $message: _ref3 => {\n let {\n $response\n } = _ref3;\n return $response ? $response.$errors.map(context => {\n return Object.values(context).map(errors => errors.map(error => error.$message)).reduce((a, b) => a.concat(b), []);\n }) : [];\n }\n };\n}\n\n// \"required\" core, used in almost every validator to allow empty values\nconst req = value => {\n value = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(value);\n if (Array.isArray(value)) return !!value.length;\n\n if (value === undefined || value === null) {\n return false;\n }\n\n if (value === false) {\n return true;\n }\n\n if (value instanceof Date) {\n // invalid date won't pass\n return !isNaN(value.getTime());\n }\n\n if (typeof value === 'object') {\n for (let _ in value) return true;\n\n return false;\n }\n\n return !!String(value).length;\n};\n/**\n * Returns the length of an arbitrary value\n * @param {Array|Object|String} value\n * @return {number}\n */\n\nconst len = value => {\n value = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(value);\n if (Array.isArray(value)) return value.length;\n\n if (typeof value === 'object') {\n return Object.keys(value).length;\n }\n\n return String(value).length;\n};\n/**\n * Regex based validator template\n * @param {RegExp} expr\n * @return {function(*=): boolean}\n */\n\nfunction regex() {\n for (var _len = arguments.length, expr = new Array(_len), _key = 0; _key < _len; _key++) {\n expr[_key] = arguments[_key];\n }\n\n return value => {\n value = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(value);\n return !req(value) || expr.every(reg => reg.test(value));\n };\n}\n\nvar common = /*#__PURE__*/Object.freeze({\n __proto__: null,\n withParams: withParams,\n withMessage: withMessage,\n withAsync: withAsync,\n forEach: forEach,\n req: req,\n len: len,\n regex: regex,\n unwrap: vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"],\n unwrapNormalizedValidator: unwrapNormalizedValidator,\n unwrapValidatorResponse: unwrapValidatorResponse,\n normalizeValidatorObject: normalizeValidatorObject\n});\n\nvar alpha$1 = regex(/^[a-zA-Z]*$/);\n\n/**\n * Validate if value is alphabetical string.\n * @type {NormalizedValidator}\n */\n\nvar alpha = {\n $validator: alpha$1,\n $message: 'The value is not alphabetical',\n $params: {\n type: 'alpha'\n }\n};\n\nvar alphaNum$1 = regex(/^[a-zA-Z0-9]*$/);\n\n/**\n * Validate if value is alpha-numeric string.\n * @type {NormalizedValidator}\n */\n\nvar alphaNum = {\n $validator: alphaNum$1,\n $message: 'The value must be alpha-numeric',\n $params: {\n type: 'alphaNum'\n }\n};\n\nvar numeric$1 = regex(/^\\d*(\\.\\d+)?$/);\n\n/**\n * Check whether a value is numeric.\n * @type NormalizedValidator\n */\n\nvar numeric = {\n $validator: numeric$1,\n $message: 'Value must be numeric',\n $params: {\n type: 'numeric'\n }\n};\n\n/**\n * Check if a numeric value is between two values.\n * @param {Ref<Number> | Number} min\n * @param {Ref<Number> | Number} max\n * @return {function(*=): boolean}\n */\n\nfunction between$1 (min, max) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(min) <= +value && +Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(max) >= +value;\n}\n\n/**\n * Checks if a value is between two values.\n * @param {Ref<Number> | Number} min\n * @param {Ref<Number> | Number} max\n * @return {NormalizedValidator}\n */\n\nfunction between (min, max) {\n return {\n $validator: between$1(min, max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The value must be between ${$params.min} and ${$params.max}`;\n },\n $params: {\n min,\n max,\n type: 'between'\n }\n };\n}\n\nconst emailRegex = /^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nvar email$1 = regex(emailRegex);\n\n/**\n * Validate if value is an email.\n * @type {NormalizedValidator}\n */\n\nvar email = {\n $validator: email$1,\n $message: 'Value is not a valid email address',\n $params: {\n type: 'email'\n }\n};\n\n/**\n * Check if a string is an IP Address\n * @param {String} value\n * @returns {boolean}\n */\n\nfunction ipAddress$1 (value) {\n if (!req(value)) {\n return true;\n }\n\n if (typeof value !== 'string') {\n return false;\n }\n\n const nibbles = value.split('.');\n return nibbles.length === 4 && nibbles.every(nibbleValid);\n}\n\nconst nibbleValid = nibble => {\n if (nibble.length > 3 || nibble.length === 0) {\n return false;\n }\n\n if (nibble[0] === '0' && nibble !== '0') {\n return false;\n }\n\n if (!nibble.match(/^\\d+$/)) {\n return false;\n }\n\n const numeric = +nibble | 0;\n return numeric >= 0 && numeric <= 255;\n};\n\n/**\n * Validate if value is an ipAddress string.\n * @type {NormalizedValidator}\n */\n\nvar ipAddress = {\n $validator: ipAddress$1,\n $message: 'The value is not a valid IP address',\n $params: {\n type: 'ipAddress'\n }\n};\n\n/**\n * Check if value is a properly formatted Mac Address.\n * @param {String | Ref<String>} [separator]\n * @returns {function(*): boolean}\n */\n\nfunction macAddress$1 () {\n let separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ':';\n return value => {\n separator = Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(separator);\n\n if (!req(value)) {\n return true;\n }\n\n if (typeof value !== 'string') {\n return false;\n }\n\n const parts = typeof separator === 'string' && separator !== '' ? value.split(separator) : value.length === 12 || value.length === 16 ? value.match(/.{2}/g) : null;\n return parts !== null && (parts.length === 6 || parts.length === 8) && parts.every(hexValid);\n };\n}\n\nconst hexValid = hex => hex.toLowerCase().match(/^[0-9a-f]{2}$/);\n\n/**\n * Validate if value is a valid Mac Address string.\n * @returns {NormalizedValidator}\n */\n\nfunction macAddress (separator) {\n return {\n $validator: macAddress$1(separator),\n $message: 'The value is not a valid MAC Address',\n $params: {\n type: 'macAddress'\n }\n };\n}\n\n/**\n * Check if provided value has a maximum length\n * @param {Number | Ref<Number>} length\n * @returns {function(Array|Object|String): boolean}\n */\n\nfunction maxLength$1 (length) {\n return value => !req(value) || len(value) <= Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(length);\n}\n\n/**\n * Validate the max length of a string.\n * @param {Number} max\n * @return {NormalizedValidator}\n */\n\nfunction maxLength (max) {\n return {\n $validator: maxLength$1(max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The maximum length allowed is ${$params.max}`;\n },\n $params: {\n max,\n type: 'maxLength'\n }\n };\n}\n\n/**\n * Check if value is above a threshold.\n * @param {Number | Ref<Number>} length\n * @returns {function(Array|Object|String): boolean}\n */\n\nfunction minLength$1 (length) {\n return value => !req(value) || len(value) >= Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(length);\n}\n\n/**\n * Check if value is above a threshold.\n * @param {Number | Ref<Number>} min\n * @returns {NormalizedValidator}\n */\n\nfunction minLength (min) {\n return {\n $validator: minLength$1(min),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `This field should be at least ${$params.min} long`;\n },\n $params: {\n min,\n type: 'minLength'\n }\n };\n}\n\n/**\n * Validates if a value is empty.\n * @param {String | Array | Date | Object} value\n * @returns {boolean}\n */\n\nfunction required$1 (value) {\n if (typeof value === 'string') {\n value = value.trim();\n }\n\n return req(value);\n}\n\n/**\n * Check if a value is empty or not.\n * @type {NormalizedValidator}\n */\n\nvar required = {\n $validator: required$1,\n $message: 'Value is required',\n $params: {\n type: 'required'\n }\n};\n\nconst validate$1 = (prop, val) => prop ? req(typeof val === 'string' ? val.trim() : val) : true;\n/**\n * Returns required if the passed property is truthy\n * @param {Boolean | String | function(any): Boolean | Ref<string | boolean>} propOrFunction\n * @return {function(value: *, parentVM: object): Boolean}\n */\n\n\nfunction requiredIf$1(propOrFunction) {\n return function (value, parentVM) {\n if (typeof propOrFunction !== 'function') {\n return validate$1(Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(propOrFunction), value);\n }\n\n const result = propOrFunction.call(this, value, parentVM);\n return validate$1(result, value);\n };\n}\n\n/**\n * Returns required if the passed property is truthy\n * @param {Boolean | String | function(): (Boolean | Promise<boolean>)} prop\n * @return {NormalizedValidator}\n */\n\nfunction requiredIf (prop) {\n return {\n $validator: requiredIf$1(prop),\n $message: 'The value is required',\n $params: {\n type: 'requiredIf',\n prop\n }\n };\n}\n\nconst validate = (prop, val) => !prop ? req(typeof val === 'string' ? val.trim() : val) : true;\n/**\n * Returns required if the passed property is falsy.\n * @param {Boolean | String | function(any): Boolean | Ref<string | boolean>} propOrFunction\n * @return {function(value: *, parentVM: object): Boolean}\n */\n\n\nfunction requiredUnless$1(propOrFunction) {\n return function (value, parentVM) {\n if (typeof propOrFunction !== 'function') {\n return validate(Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(propOrFunction), value);\n }\n\n const result = propOrFunction.call(this, value, parentVM);\n return validate(result, value);\n };\n}\n\n/**\n * Returns required unless the passed property is truthy\n * @param {Boolean | String | function(): (Boolean | Promise<boolean>)} prop\n * @return {NormalizedValidator}\n */\n\nfunction requiredUnless (prop) {\n return {\n $validator: requiredUnless$1(prop),\n $message: 'The value is required',\n $params: {\n type: 'requiredUnless',\n prop\n }\n };\n}\n\n/**\n * Check if two values are identical.\n * @param {*} equalTo\n * @return {function(*=): boolean}\n */\n\nfunction sameAs$1 (equalTo) {\n return value => Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(value) === Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(equalTo);\n}\n\n/**\n * Check if two values are identical\n * @param {*} equalTo\n * @param {String} [otherName]\n * @return {NormalizedValidator}\n */\n\nfunction sameAs (equalTo) {\n let otherName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'other';\n return {\n $validator: sameAs$1(equalTo),\n $message: _ref => {\n return `The value must be equal to the ${otherName} value`;\n },\n $params: {\n equalTo,\n otherName,\n type: 'sameAs'\n }\n };\n}\n\n/**\n * Regex taken from {@link https://gist.github.com/dperini/729294}\n */\n\nconst urlRegex = /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\nvar url$1 = regex(urlRegex);\n\n/**\n * Check if a value is a url\n * @type {NormalizedValidator}\n */\n\nvar url = {\n $validator: url$1,\n $message: 'The value is not a valid URL address',\n $params: {\n type: 'url'\n }\n};\n\nfunction _await$1(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nfunction syncOr(validators) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return validators.reduce((valid, fn) => {\n if (unwrapValidatorResponse(valid)) return valid;\n return unwrapNormalizedValidator(fn).apply(this, args);\n }, false);\n };\n}\n\nfunction asyncOr(validators) {\n return function () {\n const _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return validators.reduce(function (valid, fn) {\n return _await$1(valid, function (r) {\n return unwrapValidatorResponse(r) ? r : unwrapNormalizedValidator(fn).apply(_this, args);\n });\n }, Promise.resolve(false));\n };\n}\n/**\n * Returns true when one of the provided functions returns true.\n * @param {...(NormalizedValidator|Function)} validators\n * @return {{$validator: function(...[*]=): (boolean | Promise<boolean>), $async: boolean, $watchTargets: any[]}}\n */\n\n\nfunction or$1() {\n for (var _len3 = arguments.length, validators = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n validators[_key3] = arguments[_key3];\n }\n\n const $async = validators.some(v => v.$async);\n const $watchTargets = validators.reduce((all, v) => {\n if (!v.$watchTargets) return all;\n return all.concat(v.$watchTargets);\n }, []);\n\n let $validator = () => false;\n\n if (validators.length) $validator = $async ? asyncOr(validators) : syncOr(validators);\n return {\n $async,\n $validator,\n $watchTargets\n };\n}\n\n/**\n * Returns true when one of the provided functions returns true.\n * @param {...(NormalizedValidator|Function)} validators\n * @return {NormalizedValidator}\n */\n\nfunction or () {\n return withParams({\n type: 'or'\n }, withMessage('The value does not match any of the provided validators', or$1(...arguments)));\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n/**\n *\n * @param validators\n * @return {function(...[*]=): Promise<boolean>}\n */\n\n\nfunction syncAnd(validators) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return validators.reduce((valid, fn) => {\n if (!unwrapValidatorResponse(valid)) return valid;\n return unwrapNormalizedValidator(fn).apply(this, args);\n }, true);\n };\n}\n\nfunction asyncAnd(validators) {\n return function () {\n const _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return validators.reduce(function (valid, fn) {\n return _await(valid, function (r) {\n return unwrapValidatorResponse(r) ? unwrapNormalizedValidator(fn).apply(_this, args) : r;\n });\n }, Promise.resolve(true));\n };\n}\n/**\n * Returns true when all validators are truthy\n * @param {...(NormalizedValidator | Function)} validators\n * @return {{$validator: function(...[*]=): (boolean | Promise<boolean>), $async: boolean, $watchTargets: any[]}}\n */\n\n\nfunction and$1() {\n for (var _len3 = arguments.length, validators = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n validators[_key3] = arguments[_key3];\n }\n\n const $async = validators.some(v => v.$async);\n const $watchTargets = validators.reduce((all, v) => {\n if (!v.$watchTargets) return all;\n return all.concat(v.$watchTargets);\n }, []);\n\n let $validator = () => false;\n\n if (validators.length) $validator = $async ? asyncAnd(validators) : syncAnd(validators);\n return {\n $async,\n $validator,\n $watchTargets\n };\n}\n\n/**\n * Validate if all validators match.\n * @param {...*} validators\n * @returns {NormalizedValidator}\n */\n\nfunction and () {\n return withParams({\n type: 'and'\n }, withMessage('The value does not match all of the provided validators', and$1(...arguments)));\n}\n\n/**\n * Swaps the result of a value\n * @param {NormalizedValidator|Function} validator\n * @returns {function(*=, *=): boolean}\n */\n\nfunction not$1 (validator) {\n return function (value, vm) {\n if (!req(value)) return true;\n const response = unwrapNormalizedValidator(validator).call(this, value, vm);\n if (!isPromise(response)) return !unwrapValidatorResponse(response);\n return response.then(r => !unwrapValidatorResponse(r));\n };\n}\n\n/**\n * Swaps the result of a value\n * @param {NormalizedValidator|Function} validator\n * @returns {NormalizedValidator}\n */\n\nfunction not (validator) {\n return {\n $validator: not$1(validator),\n $message: `The value does not match the provided validator`,\n $params: {\n type: 'not'\n }\n };\n}\n\n/**\n * Check if a value is above a threshold.\n * @param {String | Number | Ref<Number> | Ref<String>} min\n * @returns {function(*=): boolean}\n */\n\nfunction minValue$1 (min) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +value >= +Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(min);\n}\n\n/**\n * Check if a value is above a threshold.\n * @param {String | Number | Ref<Number> | Ref<String>} min\n * @returns {NormalizedValidator}\n */\n\nfunction minValue (min) {\n return {\n $validator: minValue$1(min),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The minimum value allowed is ${$params.min}`;\n },\n $params: {\n min,\n type: 'minValue'\n }\n };\n}\n\n/**\n * Check if value is below a threshold.\n * @param {Number | Ref<Number> | Ref<String>} max\n * @returns {function(*=): boolean}\n */\n\nfunction maxValue$1 (max) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +value <= +Object(vue_demi__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(max);\n}\n\n/**\n * Check if value is below a threshold.\n * @param {Number | Ref<Number> | Ref<String>} max\n * @return {NormalizedValidator}\n */\n\nvar maxValue = (max => ({\n $validator: maxValue$1(max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The maximum value is ${$params.max}`;\n },\n $params: {\n max,\n type: 'maxValue'\n }\n}));\n\n// ^-[0-9]+$ - only for negative integer (minus sign without at least 1 digit is not a number)\n\nvar integer$1 = regex(/(^[0-9]*$)|(^-[0-9]+$)/);\n\n/**\n * Validate if value is integer.\n * @type {NormalizedValidator}\n */\n\nvar integer = {\n $validator: integer$1,\n $message: 'Value is not an integer',\n $params: {\n type: 'integer'\n }\n};\n\nvar decimal$1 = regex(/^[-]?\\d*(\\.\\d+)?$/);\n\n/**\n * Validate if value is decimal number.\n * @type {NormalizedValidator}\n */\n\nvar decimal = {\n $validator: decimal$1,\n $message: 'Value must be decimal',\n $params: {\n type: 'decimal'\n }\n};\n\n/**\n * Creates a translatable version of `withMessage` helper.\n * @param {function} t - the translation function of your choice\n * @param {function} [messagePath] - a function to generate the message path, passed to `t` for each message. By default it is `validations.${$validator}`\n * @param {function} [messageParams] - a function to augment the params, passed to `t` for each message.\n */\n\nfunction createI18nMessage(_ref) {\n let {\n t,\n messagePath = _ref2 => {\n let {\n $validator\n } = _ref2;\n return `validations.${$validator}`;\n },\n messageParams = params => params\n } = _ref;\n return function withI18nMessage(validator) {\n let {\n withArguments = false,\n messagePath: localMessagePath = messagePath,\n messageParams: localMessageParams = messageParams\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n function message(props) {\n return t(localMessagePath(props), localMessageParams(Object.assign({\n model: props.$model,\n property: props.$property,\n pending: props.$pending,\n invalid: props.$invalid,\n response: props.$response,\n validator: props.$validator,\n propertyPath: props.$propertyPath\n }, props.$params)));\n }\n\n if (withArguments && typeof validator === 'function') {\n return function () {\n return withMessage(message, validator(...arguments));\n };\n }\n\n return withMessage(message, validator);\n };\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZWxpZGF0ZS92YWxpZGF0b3JzL2Rpc3QvaW5kZXguZXNtLmpzP2UzZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNkJBQTZCO0FBQ3hDLFlBQVk7QUFDWjs7QUFFQTtBQUNBLDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQkFBa0I7QUFDN0IsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsK0JBQStCO0FBQzFDLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLDZCQUE2QjtBQUN4QyxZQUFZO0FBQ1o7O0FBRUE7QUFDQSxvSUFBb0ksZUFBZTtBQUNuSjtBQUNBO0FBQ0EseUNBQXlDLDRCQUE0QjtBQUNyRTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEMsV0FBVyw2QkFBNkI7QUFDeEMsWUFBWTtBQUNaOztBQUVBO0FBQ0Esc0NBQXNDLHNEQUFLLGtLQUFrSyxnQkFBZ0I7QUFDN047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsZ0RBQWdEO0FBQzdEOztBQUVBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckM7O0FBRUE7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixXQUFXLGFBQWE7QUFDeEIsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDhGQUE4RixhQUFhO0FBQzNHO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLHNEQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQSxrRkFBa0Y7O0FBRWxGLDhGQUE4Rjs7QUFFOUYsOERBQThEOztBQUU5RDtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBO0FBQ0EsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixlQUFlOzs7QUFHZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxzREFBSztBQUNmOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0I7QUFDL0IsWUFBWTtBQUNaOztBQUVBO0FBQ0EsVUFBVSxzREFBSztBQUNmOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7O0FBRUE7QUFDQSxxRUFBcUUsYUFBYTtBQUNsRjtBQUNBOztBQUVBO0FBQ0EsWUFBWSxzREFBSztBQUNqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4Q0FBSztBQUNmO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLHFCQUFxQjtBQUNoQyxXQUFXLHFCQUFxQjtBQUNoQyxZQUFZO0FBQ1o7O0FBRUE7QUFDQSxrRkFBa0Ysc0RBQUssb0JBQW9CLHNEQUFLO0FBQ2hIOztBQUVBO0FBQ0E7QUFDQSxXQUFXLHFCQUFxQjtBQUNoQyxXQUFXLHFCQUFxQjtBQUNoQyxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDBDQUEwQyxZQUFZLE9BQU8sWUFBWTtBQUN6RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOENBQThDLEVBQUUsK0JBQStCLEVBQUUsaUpBQWlKLEdBQUcseUVBQXlFLEVBQUU7QUFDaFQ7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUs7O0FBRXJCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMkpBQTJKLEVBQUU7QUFDN0o7QUFDQTtBQUNBOztBQUVBLDJEQUEyRCxFQUFFOztBQUU3RDtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxxQkFBcUI7QUFDaEMsYUFBYTtBQUNiOztBQUVBO0FBQ0EsK0NBQStDLHNEQUFLO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCw4Q0FBOEMsWUFBWTtBQUMxRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLHFCQUFxQjtBQUNoQyxhQUFhO0FBQ2I7O0FBRUE7QUFDQSwrQ0FBK0Msc0RBQUs7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsOENBQThDLFlBQVk7QUFDMUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVywrQkFBK0I7QUFDMUMsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGtFQUFrRTtBQUM3RSxZQUFZO0FBQ1o7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzREFBSztBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyw0REFBNEQ7QUFDdkUsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsa0VBQWtFO0FBQzdFLFlBQVk7QUFDWjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHNEQUFLO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLDREQUE0RDtBQUN2RSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFlBQVk7QUFDWjs7QUFFQTtBQUNBLGtCQUFrQixzREFBSyxZQUFZLHNEQUFLO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsVUFBVTtBQUN6RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUEseUZBQXlGLElBQUksRUFBRSxFQUFFLGlDQUFpQyxJQUFJLEVBQUUsRUFBRSxzQ0FBc0MsSUFBSSxFQUFFLEVBQUUsZ0RBQWdELElBQUksb0JBQW9CLEVBQUUsNkZBQTZGLEtBQUssaURBQWlELEdBQUcsWUFBWSxJQUFJO0FBQ3hhOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVFQUF1RSxhQUFhO0FBQ3BGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDBFQUEwRSxlQUFlO0FBQ3pGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsa0NBQWtDO0FBQzdDLGFBQWE7QUFDYjs7O0FBR0E7QUFDQSw4RUFBOEUsZUFBZTtBQUM3RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxrQ0FBa0M7QUFDN0MsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7O0FBR0E7QUFDQTtBQUNBLHVFQUF1RSxhQUFhO0FBQ3BGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDBFQUEwRSxlQUFlO0FBQ3pGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0NBQW9DO0FBQy9DLGFBQWE7QUFDYjs7O0FBR0E7QUFDQSw4RUFBOEUsZUFBZTtBQUM3RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLFdBQVcsNkJBQTZCO0FBQ3hDLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLDZCQUE2QjtBQUN4QyxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLDRDQUE0QztBQUN2RCxhQUFhO0FBQ2I7O0FBRUE7QUFDQSw0RkFBNEYsc0RBQUs7QUFDakc7O0FBRUE7QUFDQTtBQUNBLFdBQVcsNENBQTRDO0FBQ3ZELGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkNBQTZDLFlBQVk7QUFDekQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxtQ0FBbUM7QUFDOUMsYUFBYTtBQUNiOztBQUVBO0FBQ0EsNEZBQTRGLHNEQUFLO0FBQ2pHOztBQUVBO0FBQ0E7QUFDQSxXQUFXLG1DQUFtQztBQUM5QyxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxtQ0FBbUMsWUFBWTtBQUMvQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUywwSEFBMEgsV0FBVztBQUN6SixXQUFXLFNBQVM7QUFDcEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDRCQUE0QixXQUFXO0FBQ3ZDLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRThPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0B2dWVsaWRhdGUvdmFsaWRhdG9ycy9kaXN0L2luZGV4LmVzbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVucmVmIH0gZnJvbSAndnVlLWRlbWknO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJztcbn1cbmZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgcmV0dXJuIG8gIT09IG51bGwgJiYgdHlwZW9mIG8gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG8pO1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RhbmRhcmQgVmFsaWRhdG9yT2JqZWN0XG4gKiBXcmFwcyBhIHBsYWluIGZ1bmN0aW9uIGludG8gYSBWYWxpZGF0b3JPYmplY3RcbiAqIEBwYXJhbSB7Tm9ybWFsaXplZFZhbGlkYXRvcnxGdW5jdGlvbn0gdmFsaWRhdG9yXG4gKiBAcmV0dXJuIHtOb3JtYWxpemVkVmFsaWRhdG9yfVxuICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbGlkYXRvck9iamVjdCh2YWxpZGF0b3IpIHtcbiAgcmV0dXJuIGlzRnVuY3Rpb24odmFsaWRhdG9yLiR2YWxpZGF0b3IpID8gT2JqZWN0LmFzc2lnbih7fSwgdmFsaWRhdG9yKSA6IHtcbiAgICAkdmFsaWRhdG9yOiB2YWxpZGF0b3JcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzUHJvbWlzZShvYmplY3QpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KG9iamVjdCkgJiYgaXNGdW5jdGlvbihvYmplY3QudGhlbik7XG59XG4vKipcbiAqIFVud3JhcHMgYSBWYWxpZGF0b3JSZXNwb25zZSBvYmplY3QsIGludG8gYSBib29sZWFuLlxuICogQHBhcmFtIHtWYWxpZGF0b3JSZXNwb25zZX0gcmVzdWx0XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5cbmZ1bmN0aW9uIHVud3JhcFZhbGlkYXRvclJlc3BvbnNlKHJlc3VsdCkge1xuICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcpIHJldHVybiByZXN1bHQuJHZhbGlkO1xuICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBVbndyYXBzIGEgYE5vcm1hbGl6ZWRWYWxpZGF0b3JgIG9iamVjdCwgcmV0dXJuaW5nIGl0cyB2YWxpZGF0b3IgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge05vcm1hbGl6ZWRWYWxpZGF0b3IgfCBGdW5jdGlvbn0gdmFsaWRhdG9yXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuXG5mdW5jdGlvbiB1bndyYXBOb3JtYWxpemVkVmFsaWRhdG9yKHZhbGlkYXRvcikge1xuICByZXR1cm4gdmFsaWRhdG9yLiR2YWxpZGF0b3IgfHwgdmFsaWRhdG9yO1xufVxuXG4vKipcbiAqIEFsbG93cyBhdHRhY2hpbmcgcGFyYW1ldGVycyB0byBhIHZhbGlkYXRvclxuICogQHBhcmFtIHtPYmplY3R9ICRwYXJhbXNcbiAqIEBwYXJhbSB7Tm9ybWFsaXplZFZhbGlkYXRvcnxGdW5jdGlvbn0gJHZhbGlkYXRvclxuICogQHJldHVybiB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG5mdW5jdGlvbiB3aXRoUGFyYW1zKCRwYXJhbXMsICR2YWxpZGF0b3IpIHtcbiAgaWYgKCFpc09iamVjdCgkcGFyYW1zKSkgdGhyb3cgbmV3IEVycm9yKGBbQHZ1ZWxpZGF0ZS92YWxpZGF0b3JzXTogRmlyc3QgcGFyYW1ldGVyIHRvIFwid2l0aFBhcmFtc1wiIHNob3VsZCBiZSBhbiBvYmplY3QsIHByb3ZpZGVkICR7dHlwZW9mICRwYXJhbXN9YCk7XG4gIGlmICghaXNPYmplY3QoJHZhbGlkYXRvcikgJiYgIWlzRnVuY3Rpb24oJHZhbGlkYXRvcikpIHRocm93IG5ldyBFcnJvcihgW0B2dWVsaWRhdGUvdmFsaWRhdG9yc106IFZhbGlkYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24gb3Igb2JqZWN0IHdpdGggJHZhbGlkYXRvciBwYXJhbWV0ZXJgKTtcbiAgY29uc3QgdmFsaWRhdG9yT2JqID0gbm9ybWFsaXplVmFsaWRhdG9yT2JqZWN0KCR2YWxpZGF0b3IpO1xuICB2YWxpZGF0b3JPYmouJHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHZhbGlkYXRvck9iai4kcGFyYW1zIHx8IHt9LCAkcGFyYW1zKTtcbiAgcmV0dXJuIHZhbGlkYXRvck9iajtcbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgTWVzc2FnZUNhbGxiYWNrXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gKiBAcmV0dXJuIFN0cmluZ1xuICovXG5cbi8qKlxuICogQXR0YWNoZXMgYSBtZXNzYWdlIHRvIGEgdmFsaWRhdG9yXG4gKiBAcGFyYW0ge01lc3NhZ2VDYWxsYmFjayB8IFN0cmluZ30gJG1lc3NhZ2VcbiAqIEBwYXJhbSB7Tm9ybWFsaXplZFZhbGlkYXRvcnxGdW5jdGlvbn0gJHZhbGlkYXRvclxuICogQHJldHVybiB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG5mdW5jdGlvbiB3aXRoTWVzc2FnZSgkbWVzc2FnZSwgJHZhbGlkYXRvcikge1xuICBpZiAoIWlzRnVuY3Rpb24oJG1lc3NhZ2UpICYmIHR5cGVvZiB1bnJlZigkbWVzc2FnZSkgIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoYFtAdnVlbGlkYXRlL3ZhbGlkYXRvcnNdOiBGaXJzdCBwYXJhbWV0ZXIgdG8gXCJ3aXRoTWVzc2FnZVwiIHNob3VsZCBiZSBzdHJpbmcgb3IgYSBmdW5jdGlvbiByZXR1cm5pbmcgYSBzdHJpbmcsIHByb3ZpZGVkICR7dHlwZW9mICRtZXNzYWdlfWApO1xuICBpZiAoIWlzT2JqZWN0KCR2YWxpZGF0b3IpICYmICFpc0Z1bmN0aW9uKCR2YWxpZGF0b3IpKSB0aHJvdyBuZXcgRXJyb3IoYFtAdnVlbGlkYXRlL3ZhbGlkYXRvcnNdOiBWYWxpZGF0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIG9iamVjdCB3aXRoICR2YWxpZGF0b3IgcGFyYW1ldGVyYCk7XG4gIGNvbnN0IHZhbGlkYXRvck9iaiA9IG5vcm1hbGl6ZVZhbGlkYXRvck9iamVjdCgkdmFsaWRhdG9yKTtcbiAgdmFsaWRhdG9yT2JqLiRtZXNzYWdlID0gJG1lc3NhZ2U7XG4gIHJldHVybiB2YWxpZGF0b3JPYmo7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge2Z1bmN0aW9uKCopOiBQcm9taXNlPGJvb2xlYW58VmFsaWRhdG9yUmVzcG9uc2U+fSBhc3luY1ZhbGlkYXRvclxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1JlZjwqPltdfGZ1bmN0aW9uKCopOiAqfSB3YXRjaFRhcmdldHNcbiAqL1xuXG4vKipcbiAqIFdyYXBzIHZhbGlkYXRvcnMgdGhhdCByZXR1cm5zIGEgUHJvbWlzZS5cbiAqIEBwYXJhbSB7YXN5bmNWYWxpZGF0b3J9ICR2YWxpZGF0b3JcbiAqIEBwYXJhbSB7d2F0Y2hUYXJnZXRzfSAkd2F0Y2hUYXJnZXRzXG4gKiBAcmV0dXJuIHt7JGFzeW5jOiBib29sZWFuLCAkdmFsaWRhdG9yOiBhc3luY1ZhbGlkYXRvciwgJHdhdGNoVGFyZ2V0czogd2F0Y2hUYXJnZXRzfX1cbiAqL1xuXG5mdW5jdGlvbiB3aXRoQXN5bmMoJHZhbGlkYXRvcikge1xuICBsZXQgJHdhdGNoVGFyZ2V0cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107XG4gIGNvbnN0IHZhbGlkYXRvck9iaiA9IG5vcm1hbGl6ZVZhbGlkYXRvck9iamVjdCgkdmFsaWRhdG9yKTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHZhbGlkYXRvck9iaiwge1xuICAgICRhc3luYzogdHJ1ZSxcbiAgICAkd2F0Y2hUYXJnZXRzXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHZhbGlkYXRvcnMpIHtcbiAgcmV0dXJuIHtcbiAgICAkdmFsaWRhdG9yKGNvbGxlY3Rpb24pIHtcbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBvdGhlcnMgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBvdGhlcnNbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICAvLyBnbyBvdmVyIHRoZSBjb2xsZWN0aW9uLiBJdCBjYW4gYmUgYSByZWYgYXMgd2VsbC5cbiAgICAgIHJldHVybiB1bnJlZihjb2xsZWN0aW9uKS5yZWR1Y2UoKHByZXZpb3VzLCBjb2xsZWN0aW9uSXRlbSkgPT4ge1xuICAgICAgICAvLyBnbyBvdmVyIGVhY2ggcHJvcGVydHlcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbkVudHJ5UmVzdWx0ID0gT2JqZWN0LmVudHJpZXMoY29sbGVjdGlvbkl0ZW0pLnJlZHVjZSgoYWxsLCBfcmVmKSA9PiB7XG4gICAgICAgICAgbGV0IFtwcm9wZXJ0eSwgJG1vZGVsXSA9IF9yZWY7XG4gICAgICAgICAgLy8gZ2V0IHRoZSB2YWxpZGF0b3JzIGZvciB0aGlzIHByb3BlcnR5XG4gICAgICAgICAgY29uc3QgaW5uZXJWYWxpZGF0b3JzID0gdmFsaWRhdG9yc1twcm9wZXJ0eV0gfHwge307IC8vIGdvIG92ZXIgZWFjaCB2YWxpZGF0b3IgYW5kIHJ1biBpdFxuXG4gICAgICAgICAgY29uc3QgcHJvcGVydHlSZXN1bHQgPSBPYmplY3QuZW50cmllcyhpbm5lclZhbGlkYXRvcnMpLnJlZHVjZSgoYWxsLCBfcmVmMikgPT4ge1xuICAgICAgICAgICAgbGV0IFt2YWxpZGF0b3JOYW1lLCBjdXJyZW50VmFsaWRhdG9yXSA9IF9yZWYyO1xuICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgdmFsaWRhdG9yLiBTdXBwb3J0cyBzaW1wbGUgYW5kIGV4dGVuZGVkIHZhbGlkYXRvcnMuXG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JGdW5jdGlvbiA9IHVud3JhcE5vcm1hbGl6ZWRWYWxpZGF0b3IoY3VycmVudFZhbGlkYXRvcik7IC8vIENhbGwgdGhlIHZhbGlkYXRvciwgcGFzc2luZyB0aGUgVk0gYXMgdGhpcywgdGhlIHZhbHVlLCBjdXJyZW50IGl0ZXJhdGVkIG9iamVjdCBhbmQgdGhlIHJlc3QuXG5cbiAgICAgICAgICAgIGNvbnN0ICRyZXNwb25zZSA9IHZhbGlkYXRvckZ1bmN0aW9uLmNhbGwodGhpcywgJG1vZGVsLCBjb2xsZWN0aW9uSXRlbSwgLi4ub3RoZXJzKTsgLy8gZXh0cmFjdCB0aGUgdmFsaWQgZnJvbSB0aGUgcmVzdWx0XG5cbiAgICAgICAgICAgIGNvbnN0ICR2YWxpZCA9IHVud3JhcFZhbGlkYXRvclJlc3BvbnNlKCRyZXNwb25zZSk7IC8vIHN0b3JlIHRoZSBlbnRpcmUgcmVzcG9uc2UgZm9yIGxhdGVyXG5cbiAgICAgICAgICAgIGFsbC4kZGF0YVt2YWxpZGF0b3JOYW1lXSA9ICRyZXNwb25zZTtcbiAgICAgICAgICAgIGFsbC4kZGF0YS4kaW52YWxpZCA9ICEkdmFsaWQgfHwgISFhbGwuJGRhdGEuJGludmFsaWQ7XG4gICAgICAgICAgICBhbGwuJGRhdGEuJGVycm9yID0gYWxsLiRkYXRhLiRpbnZhbGlkOyAvLyBpZiBub3QgdmFsaWQsIGdldCB0aGUgJG1lc3NhZ2VcblxuICAgICAgICAgICAgaWYgKCEkdmFsaWQpIHtcbiAgICAgICAgICAgICAgbGV0ICRtZXNzYWdlID0gY3VycmVudFZhbGlkYXRvci4kbWVzc2FnZSB8fCAnJztcbiAgICAgICAgICAgICAgY29uc3QgJHBhcmFtcyA9IGN1cnJlbnRWYWxpZGF0b3IuJHBhcmFtcyB8fCB7fTsgLy8gSWYgJG1lc3NhZ2UgaXMgYSBmdW5jdGlvbiwgd2UgY2FsbCBpdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwYXJhbWV0ZXJzXG5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJG1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgJHBlbmRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgJGludmFsaWQ6ICEkdmFsaWQsXG4gICAgICAgICAgICAgICAgICAkcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgJG1vZGVsLFxuICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gLy8gc2F2ZSB0aGUgZXJyb3Igb2JqZWN0XG5cblxuICAgICAgICAgICAgICBhbGwuJGVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAkcHJvcGVydHk6IHByb3BlcnR5LFxuICAgICAgICAgICAgICAgICRtZXNzYWdlLFxuICAgICAgICAgICAgICAgICRwYXJhbXMsXG4gICAgICAgICAgICAgICAgJHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICRtb2RlbCxcbiAgICAgICAgICAgICAgICAkcGVuZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJHZhbGlkYXRvcjogdmFsaWRhdG9yTmFtZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgJHZhbGlkOiBhbGwuJHZhbGlkICYmICR2YWxpZCxcbiAgICAgICAgICAgICAgJGRhdGE6IGFsbC4kZGF0YSxcbiAgICAgICAgICAgICAgJGVycm9yczogYWxsLiRlcnJvcnNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgJHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgJGRhdGE6IHt9LFxuICAgICAgICAgICAgJGVycm9yczogW11cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhbGwuJGRhdGFbcHJvcGVydHldID0gcHJvcGVydHlSZXN1bHQuJGRhdGE7XG4gICAgICAgICAgYWxsLiRlcnJvcnNbcHJvcGVydHldID0gcHJvcGVydHlSZXN1bHQuJGVycm9ycztcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJHZhbGlkOiBhbGwuJHZhbGlkICYmIHByb3BlcnR5UmVzdWx0LiR2YWxpZCxcbiAgICAgICAgICAgICRkYXRhOiBhbGwuJGRhdGEsXG4gICAgICAgICAgICAkZXJyb3JzOiBhbGwuJGVycm9yc1xuICAgICAgICAgIH07XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAkdmFsaWQ6IHRydWUsXG4gICAgICAgICAgJGRhdGE6IHt9LFxuICAgICAgICAgICRlcnJvcnM6IHt9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICR2YWxpZDogcHJldmlvdXMuJHZhbGlkICYmIGNvbGxlY3Rpb25FbnRyeVJlc3VsdC4kdmFsaWQsXG4gICAgICAgICAgJGRhdGE6IHByZXZpb3VzLiRkYXRhLmNvbmNhdChjb2xsZWN0aW9uRW50cnlSZXN1bHQuJGRhdGEpLFxuICAgICAgICAgICRlcnJvcnM6IHByZXZpb3VzLiRlcnJvcnMuY29uY2F0KGNvbGxlY3Rpb25FbnRyeVJlc3VsdC4kZXJyb3JzKVxuICAgICAgICB9O1xuICAgICAgfSwge1xuICAgICAgICAkdmFsaWQ6IHRydWUsXG4gICAgICAgICRkYXRhOiBbXSxcbiAgICAgICAgJGVycm9yczogW11cbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvLyBjb2xsZWN0IGFsbCB0aGUgdmFsaWRhdGlvbiBlcnJvcnMgaW50byBhIDIgZGltZW5zaW9uYWwgYXJyYXksIGZvciBlYWNoIGVudHJ5IGluIHRoZSBjb2xsZWN0aW9uLCB5b3UgaGF2ZSBhbiBhcnJheSBvZiBlcnJvciBtZXNzYWdlcy5cbiAgICAkbWVzc2FnZTogX3JlZjMgPT4ge1xuICAgICAgbGV0IHtcbiAgICAgICAgJHJlc3BvbnNlXG4gICAgICB9ID0gX3JlZjM7XG4gICAgICByZXR1cm4gJHJlc3BvbnNlID8gJHJlc3BvbnNlLiRlcnJvcnMubWFwKGNvbnRleHQgPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhjb250ZXh0KS5tYXAoZXJyb3JzID0+IGVycm9ycy5tYXAoZXJyb3IgPT4gZXJyb3IuJG1lc3NhZ2UpKS5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSk7XG4gICAgICB9KSA6IFtdO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gXCJyZXF1aXJlZFwiIGNvcmUsIHVzZWQgaW4gYWxtb3N0IGV2ZXJ5IHZhbGlkYXRvciB0byBhbGxvdyBlbXB0eSB2YWx1ZXNcbmNvbnN0IHJlcSA9IHZhbHVlID0+IHtcbiAgdmFsdWUgPSB1bnJlZih2YWx1ZSk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuICEhdmFsdWUubGVuZ3RoO1xuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIC8vIGludmFsaWQgZGF0ZSB3b24ndCBwYXNzXG4gICAgcmV0dXJuICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKGxldCBfIGluIHZhbHVlKSByZXR1cm4gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhIVN0cmluZyh2YWx1ZSkubGVuZ3RoO1xufTtcbi8qKlxuICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIGFuIGFyYml0cmFyeSB2YWx1ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R8U3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5cbmNvbnN0IGxlbiA9IHZhbHVlID0+IHtcbiAgdmFsdWUgPSB1bnJlZih2YWx1ZSk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aDtcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkubGVuZ3RoO1xufTtcbi8qKlxuICogUmVnZXggYmFzZWQgdmFsaWRhdG9yIHRlbXBsYXRlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gZXhwclxuICogQHJldHVybiB7ZnVuY3Rpb24oKj0pOiBib29sZWFufVxuICovXG5cbmZ1bmN0aW9uIHJlZ2V4KCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZXhwciA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBleHByW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlID0+IHtcbiAgICB2YWx1ZSA9IHVucmVmKHZhbHVlKTtcbiAgICByZXR1cm4gIXJlcSh2YWx1ZSkgfHwgZXhwci5ldmVyeShyZWcgPT4gcmVnLnRlc3QodmFsdWUpKTtcbiAgfTtcbn1cblxudmFyIGNvbW1vbiA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgX19wcm90b19fOiBudWxsLFxuICB3aXRoUGFyYW1zOiB3aXRoUGFyYW1zLFxuICB3aXRoTWVzc2FnZTogd2l0aE1lc3NhZ2UsXG4gIHdpdGhBc3luYzogd2l0aEFzeW5jLFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICByZXE6IHJlcSxcbiAgbGVuOiBsZW4sXG4gIHJlZ2V4OiByZWdleCxcbiAgdW53cmFwOiB1bnJlZixcbiAgdW53cmFwTm9ybWFsaXplZFZhbGlkYXRvcjogdW53cmFwTm9ybWFsaXplZFZhbGlkYXRvcixcbiAgdW53cmFwVmFsaWRhdG9yUmVzcG9uc2U6IHVud3JhcFZhbGlkYXRvclJlc3BvbnNlLFxuICBub3JtYWxpemVWYWxpZGF0b3JPYmplY3Q6IG5vcm1hbGl6ZVZhbGlkYXRvck9iamVjdFxufSk7XG5cbnZhciBhbHBoYSQxID0gcmVnZXgoL15bYS16QS1aXSokLyk7XG5cbi8qKlxuICogVmFsaWRhdGUgaWYgdmFsdWUgaXMgYWxwaGFiZXRpY2FsIHN0cmluZy5cbiAqIEB0eXBlIHtOb3JtYWxpemVkVmFsaWRhdG9yfVxuICovXG5cbnZhciBhbHBoYSA9IHtcbiAgJHZhbGlkYXRvcjogYWxwaGEkMSxcbiAgJG1lc3NhZ2U6ICdUaGUgdmFsdWUgaXMgbm90IGFscGhhYmV0aWNhbCcsXG4gICRwYXJhbXM6IHtcbiAgICB0eXBlOiAnYWxwaGEnXG4gIH1cbn07XG5cbnZhciBhbHBoYU51bSQxID0gcmVnZXgoL15bYS16QS1aMC05XSokLyk7XG5cbi8qKlxuICogVmFsaWRhdGUgaWYgdmFsdWUgaXMgYWxwaGEtbnVtZXJpYyBzdHJpbmcuXG4gKiBAdHlwZSB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG52YXIgYWxwaGFOdW0gPSB7XG4gICR2YWxpZGF0b3I6IGFscGhhTnVtJDEsXG4gICRtZXNzYWdlOiAnVGhlIHZhbHVlIG11c3QgYmUgYWxwaGEtbnVtZXJpYycsXG4gICRwYXJhbXM6IHtcbiAgICB0eXBlOiAnYWxwaGFOdW0nXG4gIH1cbn07XG5cbnZhciBudW1lcmljJDEgPSByZWdleCgvXlxcZCooXFwuXFxkKyk/JC8pO1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSB2YWx1ZSBpcyBudW1lcmljLlxuICogQHR5cGUgTm9ybWFsaXplZFZhbGlkYXRvclxuICovXG5cbnZhciBudW1lcmljID0ge1xuICAkdmFsaWRhdG9yOiBudW1lcmljJDEsXG4gICRtZXNzYWdlOiAnVmFsdWUgbXVzdCBiZSBudW1lcmljJyxcbiAgJHBhcmFtczoge1xuICAgIHR5cGU6ICdudW1lcmljJ1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgbnVtZXJpYyB2YWx1ZSBpcyBiZXR3ZWVuIHR3byB2YWx1ZXMuXG4gKiBAcGFyYW0ge1JlZjxOdW1iZXI+IHwgTnVtYmVyfSBtaW5cbiAqIEBwYXJhbSB7UmVmPE51bWJlcj4gfCBOdW1iZXJ9IG1heFxuICogQHJldHVybiB7ZnVuY3Rpb24oKj0pOiBib29sZWFufVxuICovXG5cbmZ1bmN0aW9uIGJldHdlZW4kMSAobWluLCBtYXgpIHtcbiAgcmV0dXJuIHZhbHVlID0+ICFyZXEodmFsdWUpIHx8ICghL1xccy8udGVzdCh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBEYXRlKSAmJiArdW5yZWYobWluKSA8PSArdmFsdWUgJiYgK3VucmVmKG1heCkgPj0gK3ZhbHVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGJldHdlZW4gdHdvIHZhbHVlcy5cbiAqIEBwYXJhbSB7UmVmPE51bWJlcj4gfCBOdW1iZXJ9IG1pblxuICogQHBhcmFtIHtSZWY8TnVtYmVyPiB8IE51bWJlcn0gbWF4XG4gKiBAcmV0dXJuIHtOb3JtYWxpemVkVmFsaWRhdG9yfVxuICovXG5cbmZ1bmN0aW9uIGJldHdlZW4gKG1pbiwgbWF4KSB7XG4gIHJldHVybiB7XG4gICAgJHZhbGlkYXRvcjogYmV0d2VlbiQxKG1pbiwgbWF4KSxcbiAgICAkbWVzc2FnZTogX3JlZiA9PiB7XG4gICAgICBsZXQge1xuICAgICAgICAkcGFyYW1zXG4gICAgICB9ID0gX3JlZjtcbiAgICAgIHJldHVybiBgVGhlIHZhbHVlIG11c3QgYmUgYmV0d2VlbiAkeyRwYXJhbXMubWlufSBhbmQgJHskcGFyYW1zLm1heH1gO1xuICAgIH0sXG4gICAgJHBhcmFtczoge1xuICAgICAgbWluLFxuICAgICAgbWF4LFxuICAgICAgdHlwZTogJ2JldHdlZW4nXG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBlbWFpbFJlZ2V4ID0gL14oPzpbQS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW0EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqfFwiKD86W1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdmXXxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGUtXFx4N2ZdKSpcIilAKD86KD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1xcLikrW2EtejAtOV17Mix9KD86W2EtejAtOS1dKlthLXowLTldKT98XFxbKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT98W2EtejAtOS1dKlthLXowLTldOig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxLVxceDVhXFx4NTMtXFx4N2ZdfFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGUtXFx4N2ZdKSspXFxdKSQvaTtcbnZhciBlbWFpbCQxID0gcmVnZXgoZW1haWxSZWdleCk7XG5cbi8qKlxuICogVmFsaWRhdGUgaWYgdmFsdWUgaXMgYW4gZW1haWwuXG4gKiBAdHlwZSB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG52YXIgZW1haWwgPSB7XG4gICR2YWxpZGF0b3I6IGVtYWlsJDEsXG4gICRtZXNzYWdlOiAnVmFsdWUgaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcycsXG4gICRwYXJhbXM6IHtcbiAgICB0eXBlOiAnZW1haWwnXG4gIH1cbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgaXMgYW4gSVAgQWRkcmVzc1xuICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuXG5mdW5jdGlvbiBpcEFkZHJlc3MkMSAodmFsdWUpIHtcbiAgaWYgKCFyZXEodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG5pYmJsZXMgPSB2YWx1ZS5zcGxpdCgnLicpO1xuICByZXR1cm4gbmliYmxlcy5sZW5ndGggPT09IDQgJiYgbmliYmxlcy5ldmVyeShuaWJibGVWYWxpZCk7XG59XG5cbmNvbnN0IG5pYmJsZVZhbGlkID0gbmliYmxlID0+IHtcbiAgaWYgKG5pYmJsZS5sZW5ndGggPiAzIHx8IG5pYmJsZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAobmliYmxlWzBdID09PSAnMCcgJiYgbmliYmxlICE9PSAnMCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIW5pYmJsZS5tYXRjaCgvXlxcZCskLykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBudW1lcmljID0gK25pYmJsZSB8IDA7XG4gIHJldHVybiBudW1lcmljID49IDAgJiYgbnVtZXJpYyA8PSAyNTU7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGlmIHZhbHVlIGlzIGFuIGlwQWRkcmVzcyBzdHJpbmcuXG4gKiBAdHlwZSB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG52YXIgaXBBZGRyZXNzID0ge1xuICAkdmFsaWRhdG9yOiBpcEFkZHJlc3MkMSxcbiAgJG1lc3NhZ2U6ICdUaGUgdmFsdWUgaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcycsXG4gICRwYXJhbXM6IHtcbiAgICB0eXBlOiAnaXBBZGRyZXNzJ1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIGEgcHJvcGVybHkgZm9ybWF0dGVkIE1hYyBBZGRyZXNzLlxuICogQHBhcmFtIHtTdHJpbmcgfCBSZWY8U3RyaW5nPn0gW3NlcGFyYXRvcl1cbiAqIEByZXR1cm5zIHtmdW5jdGlvbigqKTogYm9vbGVhbn1cbiAqL1xuXG5mdW5jdGlvbiBtYWNBZGRyZXNzJDEgKCkge1xuICBsZXQgc2VwYXJhdG9yID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnOic7XG4gIHJldHVybiB2YWx1ZSA9PiB7XG4gICAgc2VwYXJhdG9yID0gdW5yZWYoc2VwYXJhdG9yKTtcblxuICAgIGlmICghcmVxKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0cyA9IHR5cGVvZiBzZXBhcmF0b3IgPT09ICdzdHJpbmcnICYmIHNlcGFyYXRvciAhPT0gJycgPyB2YWx1ZS5zcGxpdChzZXBhcmF0b3IpIDogdmFsdWUubGVuZ3RoID09PSAxMiB8fCB2YWx1ZS5sZW5ndGggPT09IDE2ID8gdmFsdWUubWF0Y2goLy57Mn0vZykgOiBudWxsO1xuICAgIHJldHVybiBwYXJ0cyAhPT0gbnVsbCAmJiAocGFydHMubGVuZ3RoID09PSA2IHx8IHBhcnRzLmxlbmd0aCA9PT0gOCkgJiYgcGFydHMuZXZlcnkoaGV4VmFsaWQpO1xuICB9O1xufVxuXG5jb25zdCBoZXhWYWxpZCA9IGhleCA9PiBoZXgudG9Mb3dlckNhc2UoKS5tYXRjaCgvXlswLTlhLWZdezJ9JC8pO1xuXG4vKipcbiAqIFZhbGlkYXRlIGlmIHZhbHVlIGlzIGEgdmFsaWQgTWFjIEFkZHJlc3Mgc3RyaW5nLlxuICogQHJldHVybnMge05vcm1hbGl6ZWRWYWxpZGF0b3J9XG4gKi9cblxuZnVuY3Rpb24gbWFjQWRkcmVzcyAoc2VwYXJhdG9yKSB7XG4gIHJldHVybiB7XG4gICAgJHZhbGlkYXRvcjogbWFjQWRkcmVzcyQxKHNlcGFyYXRvciksXG4gICAgJG1lc3NhZ2U6ICdUaGUgdmFsdWUgaXMgbm90IGEgdmFsaWQgTUFDIEFkZHJlc3MnLFxuICAgICRwYXJhbXM6IHtcbiAgICAgIHR5cGU6ICdtYWNBZGRyZXNzJ1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBwcm92aWRlZCB2YWx1ZSBoYXMgYSBtYXhpbXVtIGxlbmd0aFxuICogQHBhcmFtIHtOdW1iZXIgfCBSZWY8TnVtYmVyPn0gbGVuZ3RoXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb24oQXJyYXl8T2JqZWN0fFN0cmluZyk6IGJvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gbWF4TGVuZ3RoJDEgKGxlbmd0aCkge1xuICByZXR1cm4gdmFsdWUgPT4gIXJlcSh2YWx1ZSkgfHwgbGVuKHZhbHVlKSA8PSB1bnJlZihsZW5ndGgpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nLlxuICogQHBhcmFtIHtOdW1iZXJ9IG1heFxuICogQHJldHVybiB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG5mdW5jdGlvbiBtYXhMZW5ndGggKG1heCkge1xuICByZXR1cm4ge1xuICAgICR2YWxpZGF0b3I6IG1heExlbmd0aCQxKG1heCksXG4gICAgJG1lc3NhZ2U6IF9yZWYgPT4ge1xuICAgICAgbGV0IHtcbiAgICAgICAgJHBhcmFtc1xuICAgICAgfSA9IF9yZWY7XG4gICAgICByZXR1cm4gYFRoZSBtYXhpbXVtIGxlbmd0aCBhbGxvd2VkIGlzICR7JHBhcmFtcy5tYXh9YDtcbiAgICB9LFxuICAgICRwYXJhbXM6IHtcbiAgICAgIG1heCxcbiAgICAgIHR5cGU6ICdtYXhMZW5ndGgnXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIGFib3ZlIGEgdGhyZXNob2xkLlxuICogQHBhcmFtIHtOdW1iZXIgfCBSZWY8TnVtYmVyPn0gbGVuZ3RoXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb24oQXJyYXl8T2JqZWN0fFN0cmluZyk6IGJvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gbWluTGVuZ3RoJDEgKGxlbmd0aCkge1xuICByZXR1cm4gdmFsdWUgPT4gIXJlcSh2YWx1ZSkgfHwgbGVuKHZhbHVlKSA+PSB1bnJlZihsZW5ndGgpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIGFib3ZlIGEgdGhyZXNob2xkLlxuICogQHBhcmFtIHtOdW1iZXIgfCBSZWY8TnVtYmVyPn0gbWluXG4gKiBAcmV0dXJucyB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG5mdW5jdGlvbiBtaW5MZW5ndGggKG1pbikge1xuICByZXR1cm4ge1xuICAgICR2YWxpZGF0b3I6IG1pbkxlbmd0aCQxKG1pbiksXG4gICAgJG1lc3NhZ2U6IF9yZWYgPT4ge1xuICAgICAgbGV0IHtcbiAgICAgICAgJHBhcmFtc1xuICAgICAgfSA9IF9yZWY7XG4gICAgICByZXR1cm4gYFRoaXMgZmllbGQgc2hvdWxkIGJlIGF0IGxlYXN0ICR7JHBhcmFtcy5taW59IGxvbmdgO1xuICAgIH0sXG4gICAgJHBhcmFtczoge1xuICAgICAgbWluLFxuICAgICAgdHlwZTogJ21pbkxlbmd0aCdcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGlmIGEgdmFsdWUgaXMgZW1wdHkuXG4gKiBAcGFyYW0ge1N0cmluZyB8IEFycmF5IHwgRGF0ZSB8IE9iamVjdH0gdmFsdWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5cbmZ1bmN0aW9uIHJlcXVpcmVkJDEgKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gIH1cblxuICByZXR1cm4gcmVxKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGVtcHR5IG9yIG5vdC5cbiAqIEB0eXBlIHtOb3JtYWxpemVkVmFsaWRhdG9yfVxuICovXG5cbnZhciByZXF1aXJlZCA9IHtcbiAgJHZhbGlkYXRvcjogcmVxdWlyZWQkMSxcbiAgJG1lc3NhZ2U6ICdWYWx1ZSBpcyByZXF1aXJlZCcsXG4gICRwYXJhbXM6IHtcbiAgICB0eXBlOiAncmVxdWlyZWQnXG4gIH1cbn07XG5cbmNvbnN0IHZhbGlkYXRlJDEgPSAocHJvcCwgdmFsKSA9PiBwcm9wID8gcmVxKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gdmFsLnRyaW0oKSA6IHZhbCkgOiB0cnVlO1xuLyoqXG4gKiBSZXR1cm5zIHJlcXVpcmVkIGlmIHRoZSBwYXNzZWQgcHJvcGVydHkgaXMgdHJ1dGh5XG4gKiBAcGFyYW0ge0Jvb2xlYW4gfCBTdHJpbmcgfCBmdW5jdGlvbihhbnkpOiBCb29sZWFuIHwgUmVmPHN0cmluZyB8IGJvb2xlYW4+fSBwcm9wT3JGdW5jdGlvblxuICogQHJldHVybiB7ZnVuY3Rpb24odmFsdWU6ICosIHBhcmVudFZNOiBvYmplY3QpOiBCb29sZWFufVxuICovXG5cblxuZnVuY3Rpb24gcmVxdWlyZWRJZiQxKHByb3BPckZ1bmN0aW9uKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUsIHBhcmVudFZNKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wT3JGdW5jdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlJDEodW5yZWYocHJvcE9yRnVuY3Rpb24pLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gcHJvcE9yRnVuY3Rpb24uY2FsbCh0aGlzLCB2YWx1ZSwgcGFyZW50Vk0pO1xuICAgIHJldHVybiB2YWxpZGF0ZSQxKHJlc3VsdCwgdmFsdWUpO1xuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgcmVxdWlyZWQgaWYgdGhlIHBhc3NlZCBwcm9wZXJ0eSBpcyB0cnV0aHlcbiAqIEBwYXJhbSB7Qm9vbGVhbiB8IFN0cmluZyB8IGZ1bmN0aW9uKCk6IChCb29sZWFuIHwgUHJvbWlzZTxib29sZWFuPil9IHByb3BcbiAqIEByZXR1cm4ge05vcm1hbGl6ZWRWYWxpZGF0b3J9XG4gKi9cblxuZnVuY3Rpb24gcmVxdWlyZWRJZiAocHJvcCkge1xuICByZXR1cm4ge1xuICAgICR2YWxpZGF0b3I6IHJlcXVpcmVkSWYkMShwcm9wKSxcbiAgICAkbWVzc2FnZTogJ1RoZSB2YWx1ZSBpcyByZXF1aXJlZCcsXG4gICAgJHBhcmFtczoge1xuICAgICAgdHlwZTogJ3JlcXVpcmVkSWYnLFxuICAgICAgcHJvcFxuICAgIH1cbiAgfTtcbn1cblxuY29uc3QgdmFsaWRhdGUgPSAocHJvcCwgdmFsKSA9PiAhcHJvcCA/IHJlcSh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/IHZhbC50cmltKCkgOiB2YWwpIDogdHJ1ZTtcbi8qKlxuICogUmV0dXJucyByZXF1aXJlZCBpZiB0aGUgcGFzc2VkIHByb3BlcnR5IGlzIGZhbHN5LlxuICogQHBhcmFtIHtCb29sZWFuIHwgU3RyaW5nIHwgZnVuY3Rpb24oYW55KTogQm9vbGVhbiB8IFJlZjxzdHJpbmcgfCBib29sZWFuPn0gcHJvcE9yRnVuY3Rpb25cbiAqIEByZXR1cm4ge2Z1bmN0aW9uKHZhbHVlOiAqLCBwYXJlbnRWTTogb2JqZWN0KTogQm9vbGVhbn1cbiAqL1xuXG5cbmZ1bmN0aW9uIHJlcXVpcmVkVW5sZXNzJDEocHJvcE9yRnVuY3Rpb24pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgcGFyZW50Vk0pIHtcbiAgICBpZiAodHlwZW9mIHByb3BPckZ1bmN0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGUodW5yZWYocHJvcE9yRnVuY3Rpb24pLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gcHJvcE9yRnVuY3Rpb24uY2FsbCh0aGlzLCB2YWx1ZSwgcGFyZW50Vk0pO1xuICAgIHJldHVybiB2YWxpZGF0ZShyZXN1bHQsIHZhbHVlKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHJlcXVpcmVkIHVubGVzcyB0aGUgcGFzc2VkIHByb3BlcnR5IGlzIHRydXRoeVxuICogQHBhcmFtIHtCb29sZWFuIHwgU3RyaW5nIHwgZnVuY3Rpb24oKTogKEJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+KX0gcHJvcFxuICogQHJldHVybiB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG5mdW5jdGlvbiByZXF1aXJlZFVubGVzcyAocHJvcCkge1xuICByZXR1cm4ge1xuICAgICR2YWxpZGF0b3I6IHJlcXVpcmVkVW5sZXNzJDEocHJvcCksXG4gICAgJG1lc3NhZ2U6ICdUaGUgdmFsdWUgaXMgcmVxdWlyZWQnLFxuICAgICRwYXJhbXM6IHtcbiAgICAgIHR5cGU6ICdyZXF1aXJlZFVubGVzcycsXG4gICAgICBwcm9wXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGlkZW50aWNhbC5cbiAqIEBwYXJhbSB7Kn0gZXF1YWxUb1xuICogQHJldHVybiB7ZnVuY3Rpb24oKj0pOiBib29sZWFufVxuICovXG5cbmZ1bmN0aW9uIHNhbWVBcyQxIChlcXVhbFRvKSB7XG4gIHJldHVybiB2YWx1ZSA9PiB1bnJlZih2YWx1ZSkgPT09IHVucmVmKGVxdWFsVG8pO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGlkZW50aWNhbFxuICogQHBhcmFtIHsqfSBlcXVhbFRvXG4gKiBAcGFyYW0ge1N0cmluZ30gW290aGVyTmFtZV1cbiAqIEByZXR1cm4ge05vcm1hbGl6ZWRWYWxpZGF0b3J9XG4gKi9cblxuZnVuY3Rpb24gc2FtZUFzIChlcXVhbFRvKSB7XG4gIGxldCBvdGhlck5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICdvdGhlcic7XG4gIHJldHVybiB7XG4gICAgJHZhbGlkYXRvcjogc2FtZUFzJDEoZXF1YWxUbyksXG4gICAgJG1lc3NhZ2U6IF9yZWYgPT4ge1xuICAgICAgcmV0dXJuIGBUaGUgdmFsdWUgbXVzdCBiZSBlcXVhbCB0byB0aGUgJHtvdGhlck5hbWV9IHZhbHVlYDtcbiAgICB9LFxuICAgICRwYXJhbXM6IHtcbiAgICAgIGVxdWFsVG8sXG4gICAgICBvdGhlck5hbWUsXG4gICAgICB0eXBlOiAnc2FtZUFzJ1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZWdleCB0YWtlbiBmcm9tIHtAbGluayBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9kcGVyaW5pLzcyOTI5NH1cbiAqL1xuXG5jb25zdCB1cmxSZWdleCA9IC9eKD86KD86KD86aHR0cHM/fGZ0cCk6KT9cXC9cXC8pKD86XFxTKyg/OjpcXFMqKT9AKT8oPzooPyEoPzoxMHwxMjcpKD86XFwuXFxkezEsM30pezN9KSg/ISg/OjE2OVxcLjI1NHwxOTJcXC4xNjgpKD86XFwuXFxkezEsM30pezJ9KSg/ITE3MlxcLig/OjFbNi05XXwyXFxkfDNbMC0xXSkoPzpcXC5cXGR7MSwzfSl7Mn0pKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswMV1cXGR8MjJbMC0zXSkoPzpcXC4oPzoxP1xcZHsxLDJ9fDJbMC00XVxcZHwyNVswLTVdKSl7Mn0oPzpcXC4oPzpbMS05XVxcZD98MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC00XSkpfCg/Oig/OlthLXowLTlcXHUwMGExLVxcdWZmZmZdW2EtejAtOVxcdTAwYTEtXFx1ZmZmZl8tXXswLDYyfSk/W2EtejAtOVxcdTAwYTEtXFx1ZmZmZl1cXC4pKyg/OlthLXpcXHUwMGExLVxcdWZmZmZdezIsfVxcLj8pKSg/OjpcXGR7Miw1fSk/KD86Wy8/I11cXFMqKT8kL2k7XG52YXIgdXJsJDEgPSByZWdleCh1cmxSZWdleCk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIHVybFxuICogQHR5cGUge05vcm1hbGl6ZWRWYWxpZGF0b3J9XG4gKi9cblxudmFyIHVybCA9IHtcbiAgJHZhbGlkYXRvcjogdXJsJDEsXG4gICRtZXNzYWdlOiAnVGhlIHZhbHVlIGlzIG5vdCBhIHZhbGlkIFVSTCBhZGRyZXNzJyxcbiAgJHBhcmFtczoge1xuICAgIHR5cGU6ICd1cmwnXG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9hd2FpdCQxKHZhbHVlLCB0aGVuLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHJldHVybiB0aGVuID8gdGhlbih2YWx1ZSkgOiB2YWx1ZTtcbiAgfVxuXG4gIGlmICghdmFsdWUgfHwgIXZhbHVlLnRoZW4pIHtcbiAgICB2YWx1ZSA9IFByb21pc2UucmVzb2x2ZSh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdGhlbiA/IHZhbHVlLnRoZW4odGhlbikgOiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gc3luY09yKHZhbGlkYXRvcnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvcnMucmVkdWNlKCh2YWxpZCwgZm4pID0+IHtcbiAgICAgIGlmICh1bndyYXBWYWxpZGF0b3JSZXNwb25zZSh2YWxpZCkpIHJldHVybiB2YWxpZDtcbiAgICAgIHJldHVybiB1bndyYXBOb3JtYWxpemVkVmFsaWRhdG9yKGZuKS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9LCBmYWxzZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGFzeW5jT3IodmFsaWRhdG9ycykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IF90aGlzID0gdGhpcztcblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0b3JzLnJlZHVjZShmdW5jdGlvbiAodmFsaWQsIGZuKSB7XG4gICAgICByZXR1cm4gX2F3YWl0JDEodmFsaWQsIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHJldHVybiB1bndyYXBWYWxpZGF0b3JSZXNwb25zZShyKSA/IHIgOiB1bndyYXBOb3JtYWxpemVkVmFsaWRhdG9yKGZuKS5hcHBseShfdGhpcywgYXJncyk7XG4gICAgICB9KTtcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoZmFsc2UpKTtcbiAgfTtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIHdoZW4gb25lIG9mIHRoZSBwcm92aWRlZCBmdW5jdGlvbnMgcmV0dXJucyB0cnVlLlxuICogQHBhcmFtIHsuLi4oTm9ybWFsaXplZFZhbGlkYXRvcnxGdW5jdGlvbil9IHZhbGlkYXRvcnNcbiAqIEByZXR1cm4ge3skdmFsaWRhdG9yOiBmdW5jdGlvbiguLi5bKl09KTogKGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+KSwgJGFzeW5jOiBib29sZWFuLCAkd2F0Y2hUYXJnZXRzOiBhbnlbXX19XG4gKi9cblxuXG5mdW5jdGlvbiBvciQxKCkge1xuICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbGlkYXRvcnMgPSBuZXcgQXJyYXkoX2xlbjMpLCBfa2V5MyA9IDA7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcbiAgICB2YWxpZGF0b3JzW19rZXkzXSA9IGFyZ3VtZW50c1tfa2V5M107XG4gIH1cblxuICBjb25zdCAkYXN5bmMgPSB2YWxpZGF0b3JzLnNvbWUodiA9PiB2LiRhc3luYyk7XG4gIGNvbnN0ICR3YXRjaFRhcmdldHMgPSB2YWxpZGF0b3JzLnJlZHVjZSgoYWxsLCB2KSA9PiB7XG4gICAgaWYgKCF2LiR3YXRjaFRhcmdldHMpIHJldHVybiBhbGw7XG4gICAgcmV0dXJuIGFsbC5jb25jYXQodi4kd2F0Y2hUYXJnZXRzKTtcbiAgfSwgW10pO1xuXG4gIGxldCAkdmFsaWRhdG9yID0gKCkgPT4gZmFsc2U7XG5cbiAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoKSAkdmFsaWRhdG9yID0gJGFzeW5jID8gYXN5bmNPcih2YWxpZGF0b3JzKSA6IHN5bmNPcih2YWxpZGF0b3JzKTtcbiAgcmV0dXJuIHtcbiAgICAkYXN5bmMsXG4gICAgJHZhbGlkYXRvcixcbiAgICAkd2F0Y2hUYXJnZXRzXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIHdoZW4gb25lIG9mIHRoZSBwcm92aWRlZCBmdW5jdGlvbnMgcmV0dXJucyB0cnVlLlxuICogQHBhcmFtIHsuLi4oTm9ybWFsaXplZFZhbGlkYXRvcnxGdW5jdGlvbil9IHZhbGlkYXRvcnNcbiAqIEByZXR1cm4ge05vcm1hbGl6ZWRWYWxpZGF0b3J9XG4gKi9cblxuZnVuY3Rpb24gb3IgKCkge1xuICByZXR1cm4gd2l0aFBhcmFtcyh7XG4gICAgdHlwZTogJ29yJ1xuICB9LCB3aXRoTWVzc2FnZSgnVGhlIHZhbHVlIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9ycycsIG9yJDEoLi4uYXJndW1lbnRzKSkpO1xufVxuXG5mdW5jdGlvbiBfYXdhaXQodmFsdWUsIHRoZW4sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgcmV0dXJuIHRoZW4gPyB0aGVuKHZhbHVlKSA6IHZhbHVlO1xuICB9XG5cbiAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUudGhlbikge1xuICAgIHZhbHVlID0gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB0aGVuID8gdmFsdWUudGhlbih0aGVuKSA6IHZhbHVlO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHZhbGlkYXRvcnNcbiAqIEByZXR1cm4ge2Z1bmN0aW9uKC4uLlsqXT0pOiBQcm9taXNlPGJvb2xlYW4+fVxuICovXG5cblxuZnVuY3Rpb24gc3luY0FuZCh2YWxpZGF0b3JzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0b3JzLnJlZHVjZSgodmFsaWQsIGZuKSA9PiB7XG4gICAgICBpZiAoIXVud3JhcFZhbGlkYXRvclJlc3BvbnNlKHZhbGlkKSkgcmV0dXJuIHZhbGlkO1xuICAgICAgcmV0dXJuIHVud3JhcE5vcm1hbGl6ZWRWYWxpZGF0b3IoZm4pLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0sIHRydWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhc3luY0FuZCh2YWxpZGF0b3JzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvcnMucmVkdWNlKGZ1bmN0aW9uICh2YWxpZCwgZm4pIHtcbiAgICAgIHJldHVybiBfYXdhaXQodmFsaWQsIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHJldHVybiB1bndyYXBWYWxpZGF0b3JSZXNwb25zZShyKSA/IHVud3JhcE5vcm1hbGl6ZWRWYWxpZGF0b3IoZm4pLmFwcGx5KF90aGlzLCBhcmdzKSA6IHI7XG4gICAgICB9KTtcbiAgICB9LCBQcm9taXNlLnJlc29sdmUodHJ1ZSkpO1xuICB9O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgd2hlbiBhbGwgdmFsaWRhdG9ycyBhcmUgdHJ1dGh5XG4gKiBAcGFyYW0gey4uLihOb3JtYWxpemVkVmFsaWRhdG9yIHwgRnVuY3Rpb24pfSB2YWxpZGF0b3JzXG4gKiBAcmV0dXJuIHt7JHZhbGlkYXRvcjogZnVuY3Rpb24oLi4uWypdPSk6IChib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiksICRhc3luYzogYm9vbGVhbiwgJHdhdGNoVGFyZ2V0czogYW55W119fVxuICovXG5cblxuZnVuY3Rpb24gYW5kJDEoKSB7XG4gIGZvciAodmFyIF9sZW4zID0gYXJndW1lbnRzLmxlbmd0aCwgdmFsaWRhdG9ycyA9IG5ldyBBcnJheShfbGVuMyksIF9rZXkzID0gMDsgX2tleTMgPCBfbGVuMzsgX2tleTMrKykge1xuICAgIHZhbGlkYXRvcnNbX2tleTNdID0gYXJndW1lbnRzW19rZXkzXTtcbiAgfVxuXG4gIGNvbnN0ICRhc3luYyA9IHZhbGlkYXRvcnMuc29tZSh2ID0+IHYuJGFzeW5jKTtcbiAgY29uc3QgJHdhdGNoVGFyZ2V0cyA9IHZhbGlkYXRvcnMucmVkdWNlKChhbGwsIHYpID0+IHtcbiAgICBpZiAoIXYuJHdhdGNoVGFyZ2V0cykgcmV0dXJuIGFsbDtcbiAgICByZXR1cm4gYWxsLmNvbmNhdCh2LiR3YXRjaFRhcmdldHMpO1xuICB9LCBbXSk7XG5cbiAgbGV0ICR2YWxpZGF0b3IgPSAoKSA9PiBmYWxzZTtcblxuICBpZiAodmFsaWRhdG9ycy5sZW5ndGgpICR2YWxpZGF0b3IgPSAkYXN5bmMgPyBhc3luY0FuZCh2YWxpZGF0b3JzKSA6IHN5bmNBbmQodmFsaWRhdG9ycyk7XG4gIHJldHVybiB7XG4gICAgJGFzeW5jLFxuICAgICR2YWxpZGF0b3IsXG4gICAgJHdhdGNoVGFyZ2V0c1xuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGlmIGFsbCB2YWxpZGF0b3JzIG1hdGNoLlxuICogQHBhcmFtIHsuLi4qfSB2YWxpZGF0b3JzXG4gKiBAcmV0dXJucyB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG5mdW5jdGlvbiBhbmQgKCkge1xuICByZXR1cm4gd2l0aFBhcmFtcyh7XG4gICAgdHlwZTogJ2FuZCdcbiAgfSwgd2l0aE1lc3NhZ2UoJ1RoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCBhbGwgb2YgdGhlIHByb3ZpZGVkIHZhbGlkYXRvcnMnLCBhbmQkMSguLi5hcmd1bWVudHMpKSk7XG59XG5cbi8qKlxuICogU3dhcHMgdGhlIHJlc3VsdCBvZiBhIHZhbHVlXG4gKiBAcGFyYW0ge05vcm1hbGl6ZWRWYWxpZGF0b3J8RnVuY3Rpb259IHZhbGlkYXRvclxuICogQHJldHVybnMge2Z1bmN0aW9uKCo9LCAqPSk6IGJvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gbm90JDEgKHZhbGlkYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlLCB2bSkge1xuICAgIGlmICghcmVxKHZhbHVlKSkgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgcmVzcG9uc2UgPSB1bndyYXBOb3JtYWxpemVkVmFsaWRhdG9yKHZhbGlkYXRvcikuY2FsbCh0aGlzLCB2YWx1ZSwgdm0pO1xuICAgIGlmICghaXNQcm9taXNlKHJlc3BvbnNlKSkgcmV0dXJuICF1bndyYXBWYWxpZGF0b3JSZXNwb25zZShyZXNwb25zZSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRoZW4ociA9PiAhdW53cmFwVmFsaWRhdG9yUmVzcG9uc2UocikpO1xuICB9O1xufVxuXG4vKipcbiAqIFN3YXBzIHRoZSByZXN1bHQgb2YgYSB2YWx1ZVxuICogQHBhcmFtIHtOb3JtYWxpemVkVmFsaWRhdG9yfEZ1bmN0aW9ufSB2YWxpZGF0b3JcbiAqIEByZXR1cm5zIHtOb3JtYWxpemVkVmFsaWRhdG9yfVxuICovXG5cbmZ1bmN0aW9uIG5vdCAodmFsaWRhdG9yKSB7XG4gIHJldHVybiB7XG4gICAgJHZhbGlkYXRvcjogbm90JDEodmFsaWRhdG9yKSxcbiAgICAkbWVzc2FnZTogYFRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yYCxcbiAgICAkcGFyYW1zOiB7XG4gICAgICB0eXBlOiAnbm90J1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGFib3ZlIGEgdGhyZXNob2xkLlxuICogQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXIgfCBSZWY8TnVtYmVyPiB8IFJlZjxTdHJpbmc+fSBtaW5cbiAqIEByZXR1cm5zIHtmdW5jdGlvbigqPSk6IGJvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gbWluVmFsdWUkMSAobWluKSB7XG4gIHJldHVybiB2YWx1ZSA9PiAhcmVxKHZhbHVlKSB8fCAoIS9cXHMvLnRlc3QodmFsdWUpIHx8IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgJiYgK3ZhbHVlID49ICt1bnJlZihtaW4pO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYWJvdmUgYSB0aHJlc2hvbGQuXG4gKiBAcGFyYW0ge1N0cmluZyB8IE51bWJlciB8IFJlZjxOdW1iZXI+IHwgUmVmPFN0cmluZz59IG1pblxuICogQHJldHVybnMge05vcm1hbGl6ZWRWYWxpZGF0b3J9XG4gKi9cblxuZnVuY3Rpb24gbWluVmFsdWUgKG1pbikge1xuICByZXR1cm4ge1xuICAgICR2YWxpZGF0b3I6IG1pblZhbHVlJDEobWluKSxcbiAgICAkbWVzc2FnZTogX3JlZiA9PiB7XG4gICAgICBsZXQge1xuICAgICAgICAkcGFyYW1zXG4gICAgICB9ID0gX3JlZjtcbiAgICAgIHJldHVybiBgVGhlIG1pbmltdW0gdmFsdWUgYWxsb3dlZCBpcyAkeyRwYXJhbXMubWlufWA7XG4gICAgfSxcbiAgICAkcGFyYW1zOiB7XG4gICAgICBtaW4sXG4gICAgICB0eXBlOiAnbWluVmFsdWUnXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIGJlbG93IGEgdGhyZXNob2xkLlxuICogQHBhcmFtIHtOdW1iZXIgfCBSZWY8TnVtYmVyPiB8IFJlZjxTdHJpbmc+fSBtYXhcbiAqIEByZXR1cm5zIHtmdW5jdGlvbigqPSk6IGJvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gbWF4VmFsdWUkMSAobWF4KSB7XG4gIHJldHVybiB2YWx1ZSA9PiAhcmVxKHZhbHVlKSB8fCAoIS9cXHMvLnRlc3QodmFsdWUpIHx8IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgJiYgK3ZhbHVlIDw9ICt1bnJlZihtYXgpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIGJlbG93IGEgdGhyZXNob2xkLlxuICogQHBhcmFtIHtOdW1iZXIgfCBSZWY8TnVtYmVyPiB8IFJlZjxTdHJpbmc+fSBtYXhcbiAqIEByZXR1cm4ge05vcm1hbGl6ZWRWYWxpZGF0b3J9XG4gKi9cblxudmFyIG1heFZhbHVlID0gKG1heCA9PiAoe1xuICAkdmFsaWRhdG9yOiBtYXhWYWx1ZSQxKG1heCksXG4gICRtZXNzYWdlOiBfcmVmID0+IHtcbiAgICBsZXQge1xuICAgICAgJHBhcmFtc1xuICAgIH0gPSBfcmVmO1xuICAgIHJldHVybiBgVGhlIG1heGltdW0gdmFsdWUgaXMgJHskcGFyYW1zLm1heH1gO1xuICB9LFxuICAkcGFyYW1zOiB7XG4gICAgbWF4LFxuICAgIHR5cGU6ICdtYXhWYWx1ZSdcbiAgfVxufSkpO1xuXG4vLyBeLVswLTldKyQgLSBvbmx5IGZvciBuZWdhdGl2ZSBpbnRlZ2VyIChtaW51cyBzaWduIHdpdGhvdXQgYXQgbGVhc3QgMSBkaWdpdCBpcyBub3QgYSBudW1iZXIpXG5cbnZhciBpbnRlZ2VyJDEgPSByZWdleCgvKF5bMC05XSokKXwoXi1bMC05XSskKS8pO1xuXG4vKipcbiAqIFZhbGlkYXRlIGlmIHZhbHVlIGlzIGludGVnZXIuXG4gKiBAdHlwZSB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG52YXIgaW50ZWdlciA9IHtcbiAgJHZhbGlkYXRvcjogaW50ZWdlciQxLFxuICAkbWVzc2FnZTogJ1ZhbHVlIGlzIG5vdCBhbiBpbnRlZ2VyJyxcbiAgJHBhcmFtczoge1xuICAgIHR5cGU6ICdpbnRlZ2VyJ1xuICB9XG59O1xuXG52YXIgZGVjaW1hbCQxID0gcmVnZXgoL15bLV0/XFxkKihcXC5cXGQrKT8kLyk7XG5cbi8qKlxuICogVmFsaWRhdGUgaWYgdmFsdWUgaXMgZGVjaW1hbCBudW1iZXIuXG4gKiBAdHlwZSB7Tm9ybWFsaXplZFZhbGlkYXRvcn1cbiAqL1xuXG52YXIgZGVjaW1hbCA9IHtcbiAgJHZhbGlkYXRvcjogZGVjaW1hbCQxLFxuICAkbWVzc2FnZTogJ1ZhbHVlIG11c3QgYmUgZGVjaW1hbCcsXG4gICRwYXJhbXM6IHtcbiAgICB0eXBlOiAnZGVjaW1hbCdcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgdHJhbnNsYXRhYmxlIHZlcnNpb24gb2YgYHdpdGhNZXNzYWdlYCBoZWxwZXIuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB0IC0gdGhlIHRyYW5zbGF0aW9uIGZ1bmN0aW9uIG9mIHlvdXIgY2hvaWNlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbbWVzc2FnZVBhdGhdIC0gYSBmdW5jdGlvbiB0byBnZW5lcmF0ZSB0aGUgbWVzc2FnZSBwYXRoLCBwYXNzZWQgdG8gYHRgIGZvciBlYWNoIG1lc3NhZ2UuIEJ5IGRlZmF1bHQgaXQgaXMgYHZhbGlkYXRpb25zLiR7JHZhbGlkYXRvcn1gXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbbWVzc2FnZVBhcmFtc10gLSBhIGZ1bmN0aW9uIHRvIGF1Z21lbnQgdGhlIHBhcmFtcywgcGFzc2VkIHRvIGB0YCBmb3IgZWFjaCBtZXNzYWdlLlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUkxOG5NZXNzYWdlKF9yZWYpIHtcbiAgbGV0IHtcbiAgICB0LFxuICAgIG1lc3NhZ2VQYXRoID0gX3JlZjIgPT4ge1xuICAgICAgbGV0IHtcbiAgICAgICAgJHZhbGlkYXRvclxuICAgICAgfSA9IF9yZWYyO1xuICAgICAgcmV0dXJuIGB2YWxpZGF0aW9ucy4keyR2YWxpZGF0b3J9YDtcbiAgICB9LFxuICAgIG1lc3NhZ2VQYXJhbXMgPSBwYXJhbXMgPT4gcGFyYW1zXG4gIH0gPSBfcmVmO1xuICByZXR1cm4gZnVuY3Rpb24gd2l0aEkxOG5NZXNzYWdlKHZhbGlkYXRvcikge1xuICAgIGxldCB7XG4gICAgICB3aXRoQXJndW1lbnRzID0gZmFsc2UsXG4gICAgICBtZXNzYWdlUGF0aDogbG9jYWxNZXNzYWdlUGF0aCA9IG1lc3NhZ2VQYXRoLFxuICAgICAgbWVzc2FnZVBhcmFtczogbG9jYWxNZXNzYWdlUGFyYW1zID0gbWVzc2FnZVBhcmFtc1xuICAgIH0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgZnVuY3Rpb24gbWVzc2FnZShwcm9wcykge1xuICAgICAgcmV0dXJuIHQobG9jYWxNZXNzYWdlUGF0aChwcm9wcyksIGxvY2FsTWVzc2FnZVBhcmFtcyhPYmplY3QuYXNzaWduKHtcbiAgICAgICAgbW9kZWw6IHByb3BzLiRtb2RlbCxcbiAgICAgICAgcHJvcGVydHk6IHByb3BzLiRwcm9wZXJ0eSxcbiAgICAgICAgcGVuZGluZzogcHJvcHMuJHBlbmRpbmcsXG4gICAgICAgIGludmFsaWQ6IHByb3BzLiRpbnZhbGlkLFxuICAgICAgICByZXNwb25zZTogcHJvcHMuJHJlc3BvbnNlLFxuICAgICAgICB2YWxpZGF0b3I6IHByb3BzLiR2YWxpZGF0b3IsXG4gICAgICAgIHByb3BlcnR5UGF0aDogcHJvcHMuJHByb3BlcnR5UGF0aFxuICAgICAgfSwgcHJvcHMuJHBhcmFtcykpKTtcbiAgICB9XG5cbiAgICBpZiAod2l0aEFyZ3VtZW50cyAmJiB0eXBlb2YgdmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gd2l0aE1lc3NhZ2UobWVzc2FnZSwgdmFsaWRhdG9yKC4uLmFyZ3VtZW50cykpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gd2l0aE1lc3NhZ2UobWVzc2FnZSwgdmFsaWRhdG9yKTtcbiAgfTtcbn1cblxuZXhwb3J0IHsgYWxwaGEsIGFscGhhTnVtLCBhbmQsIGJldHdlZW4sIGNyZWF0ZUkxOG5NZXNzYWdlLCBkZWNpbWFsLCBlbWFpbCwgY29tbW9uIGFzIGhlbHBlcnMsIGludGVnZXIsIGlwQWRkcmVzcywgbWFjQWRkcmVzcywgbWF4TGVuZ3RoLCBtYXhWYWx1ZSwgbWluTGVuZ3RoLCBtaW5WYWx1ZSwgbm90LCBudW1lcmljLCBvciwgcmVxdWlyZWQsIHJlcXVpcmVkSWYsIHJlcXVpcmVkVW5sZXNzLCBzYW1lQXMsIHVybCB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@vuelidate/validators/dist/index.esm.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/ansi-html/index.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/ansi-html/index.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nmodule.exports = ansiHTML\n\n// Reference to https://github.com/sindresorhus/ansi-regex\nvar _regANSI = /(?:(?:\\u001b\\[)|\\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\\u001b[A-M]/\n\nvar _defColors = {\n reset: ['fff', '000'], // [FOREGROUD_COLOR, BACKGROUND_COLOR]\n black: '000',\n red: 'ff0000',\n green: '209805',\n yellow: 'e8bf03',\n blue: '0000ff',\n magenta: 'ff00ff',\n cyan: '00ffee',\n lightgrey: 'f0f0f0',\n darkgrey: '888'\n}\nvar _styles = {\n 30: 'black',\n 31: 'red',\n 32: 'green',\n 33: 'yellow',\n 34: 'blue',\n 35: 'magenta',\n 36: 'cyan',\n 37: 'lightgrey'\n}\nvar _openTags = {\n '1': 'font-weight:bold', // bold\n '2': 'opacity:0.5', // dim\n '3': '<i>', // italic\n '4': '<u>', // underscore\n '8': 'display:none', // hidden\n '9': '<del>' // delete\n}\nvar _closeTags = {\n '23': '</i>', // reset italic\n '24': '</u>', // reset underscore\n '29': '</del>' // reset delete\n}\n\n;[0, 21, 22, 27, 28, 39, 49].forEach(function (n) {\n _closeTags[n] = '</span>'\n})\n\n/**\n * Converts text with ANSI color codes to HTML markup.\n * @param {String} text\n * @returns {*}\n */\nfunction ansiHTML (text) {\n // Returns the text if the string has no ANSI escape code.\n if (!_regANSI.test(text)) {\n return text\n }\n\n // Cache opened sequence.\n var ansiCodes = []\n // Replace with markup.\n var ret = text.replace(/\\033\\[(\\d+)*m/g, function (match, seq) {\n var ot = _openTags[seq]\n if (ot) {\n // If current sequence has been opened, close it.\n if (!!~ansiCodes.indexOf(seq)) { // eslint-disable-line no-extra-boolean-cast\n ansiCodes.pop()\n return '</span>'\n }\n // Open tag.\n ansiCodes.push(seq)\n return ot[0] === '<' ? ot : '<span style=\"' + ot + ';\">'\n }\n\n var ct = _closeTags[seq]\n if (ct) {\n // Pop sequence\n ansiCodes.pop()\n return ct\n }\n return ''\n })\n\n // Make sure tags are closed.\n var l = ansiCodes.length\n ;(l > 0) && (ret += Array(l + 1).join('</span>'))\n\n return ret\n}\n\n/**\n * Customize colors.\n * @param {Object} colors reference to _defColors\n */\nansiHTML.setColors = function (colors) {\n if (typeof colors !== 'object') {\n throw new Error('`colors` parameter must be an Object.')\n }\n\n var _finalColors = {}\n for (var key in _defColors) {\n var hex = colors.hasOwnProperty(key) ? colors[key] : null\n if (!hex) {\n _finalColors[key] = _defColors[key]\n continue\n }\n if ('reset' === key) {\n if (typeof hex === 'string') {\n hex = [hex]\n }\n if (!Array.isArray(hex) || hex.length === 0 || hex.some(function (h) {\n return typeof h !== 'string'\n })) {\n throw new Error('The value of `' + key + '` property must be an Array and each item could only be a hex string, e.g.: FF0000')\n }\n var defHexColor = _defColors[key]\n if (!hex[0]) {\n hex[0] = defHexColor[0]\n }\n if (hex.length === 1 || !hex[1]) {\n hex = [hex[0]]\n hex.push(defHexColor[1])\n }\n\n hex = hex.slice(0, 2)\n } else if (typeof hex !== 'string') {\n throw new Error('The value of `' + key + '` property must be a hex string, e.g.: FF0000')\n }\n _finalColors[key] = hex\n }\n _setTags(_finalColors)\n}\n\n/**\n * Reset colors.\n */\nansiHTML.reset = function () {\n _setTags(_defColors)\n}\n\n/**\n * Expose tags, including open and close.\n * @type {Object}\n */\nansiHTML.tags = {}\n\nif (Object.defineProperty) {\n Object.defineProperty(ansiHTML.tags, 'open', {\n get: function () { return _openTags }\n })\n Object.defineProperty(ansiHTML.tags, 'close', {\n get: function () { return _closeTags }\n })\n} else {\n ansiHTML.tags.open = _openTags\n ansiHTML.tags.close = _closeTags\n}\n\nfunction _setTags (colors) {\n // reset all\n _openTags['0'] = 'font-weight:normal;opacity:1;color:#' + colors.reset[0] + ';background:#' + colors.reset[1]\n // inverse\n _openTags['7'] = 'color:#' + colors.reset[1] + ';background:#' + colors.reset[0]\n // dark grey\n _openTags['90'] = 'color:#' + colors.darkgrey\n\n for (var code in _styles) {\n var color = _styles[code]\n var oriColor = colors[color] || '000'\n _openTags[code] = 'color:#' + oriColor\n code = parseInt(code)\n _openTags[(code + 10).toString()] = 'background:#' + oriColor\n }\n}\n\nansiHTML.reset()\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW5zaS1odG1sL2luZGV4LmpzPzRlMWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQVk7O0FBRVo7O0FBRUE7QUFDQSxtREFBbUQsSUFBSSxTQUFTLE1BQU0sSUFBSTs7QUFFMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCLEdBQUc7QUFDSDtBQUNBLHNCQUFzQjtBQUN0QixHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDLFVBQVUsK0JBQStCO0FBQ2hGO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9hbnNpLWh0bWwvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhbnNpSFRNTFxuXG4vLyBSZWZlcmVuY2UgdG8gaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9hbnNpLXJlZ2V4XG52YXIgX3JlZ0FOU0kgPSAvKD86KD86XFx1MDAxYlxcWyl8XFx1MDA5YikoPzooPzpbMC05XXsxLDN9KT8oPzooPzo7WzAtOV17MCwzfSkqKT9bQS1NfGYtbV0pfFxcdTAwMWJbQS1NXS9cblxudmFyIF9kZWZDb2xvcnMgPSB7XG4gIHJlc2V0OiBbJ2ZmZicsICcwMDAnXSwgLy8gW0ZPUkVHUk9VRF9DT0xPUiwgQkFDS0dST1VORF9DT0xPUl1cbiAgYmxhY2s6ICcwMDAnLFxuICByZWQ6ICdmZjAwMDAnLFxuICBncmVlbjogJzIwOTgwNScsXG4gIHllbGxvdzogJ2U4YmYwMycsXG4gIGJsdWU6ICcwMDAwZmYnLFxuICBtYWdlbnRhOiAnZmYwMGZmJyxcbiAgY3lhbjogJzAwZmZlZScsXG4gIGxpZ2h0Z3JleTogJ2YwZjBmMCcsXG4gIGRhcmtncmV5OiAnODg4J1xufVxudmFyIF9zdHlsZXMgPSB7XG4gIDMwOiAnYmxhY2snLFxuICAzMTogJ3JlZCcsXG4gIDMyOiAnZ3JlZW4nLFxuICAzMzogJ3llbGxvdycsXG4gIDM0OiAnYmx1ZScsXG4gIDM1OiAnbWFnZW50YScsXG4gIDM2OiAnY3lhbicsXG4gIDM3OiAnbGlnaHRncmV5J1xufVxudmFyIF9vcGVuVGFncyA9IHtcbiAgJzEnOiAnZm9udC13ZWlnaHQ6Ym9sZCcsIC8vIGJvbGRcbiAgJzInOiAnb3BhY2l0eTowLjUnLCAvLyBkaW1cbiAgJzMnOiAnPGk+JywgLy8gaXRhbGljXG4gICc0JzogJzx1PicsIC8vIHVuZGVyc2NvcmVcbiAgJzgnOiAnZGlzcGxheTpub25lJywgLy8gaGlkZGVuXG4gICc5JzogJzxkZWw+JyAvLyBkZWxldGVcbn1cbnZhciBfY2xvc2VUYWdzID0ge1xuICAnMjMnOiAnPC9pPicsIC8vIHJlc2V0IGl0YWxpY1xuICAnMjQnOiAnPC91PicsIC8vIHJlc2V0IHVuZGVyc2NvcmVcbiAgJzI5JzogJzwvZGVsPicgLy8gcmVzZXQgZGVsZXRlXG59XG5cbjtbMCwgMjEsIDIyLCAyNywgMjgsIDM5LCA0OV0uZm9yRWFjaChmdW5jdGlvbiAobikge1xuICBfY2xvc2VUYWdzW25dID0gJzwvc3Bhbj4nXG59KVxuXG4vKipcbiAqIENvbnZlcnRzIHRleHQgd2l0aCBBTlNJIGNvbG9yIGNvZGVzIHRvIEhUTUwgbWFya3VwLlxuICogQHBhcmFtIHtTdHJpbmd9IHRleHRcbiAqIEByZXR1cm5zIHsqfVxuICovXG5mdW5jdGlvbiBhbnNpSFRNTCAodGV4dCkge1xuICAvLyBSZXR1cm5zIHRoZSB0ZXh0IGlmIHRoZSBzdHJpbmcgaGFzIG5vIEFOU0kgZXNjYXBlIGNvZGUuXG4gIGlmICghX3JlZ0FOU0kudGVzdCh0ZXh0KSkge1xuICAgIHJldHVybiB0ZXh0XG4gIH1cblxuICAvLyBDYWNoZSBvcGVuZWQgc2VxdWVuY2UuXG4gIHZhciBhbnNpQ29kZXMgPSBbXVxuICAvLyBSZXBsYWNlIHdpdGggbWFya3VwLlxuICB2YXIgcmV0ID0gdGV4dC5yZXBsYWNlKC9cXDAzM1xcWyhcXGQrKSptL2csIGZ1bmN0aW9uIChtYXRjaCwgc2VxKSB7XG4gICAgdmFyIG90ID0gX29wZW5UYWdzW3NlcV1cbiAgICBpZiAob3QpIHtcbiAgICAgIC8vIElmIGN1cnJlbnQgc2VxdWVuY2UgaGFzIGJlZW4gb3BlbmVkLCBjbG9zZSBpdC5cbiAgICAgIGlmICghIX5hbnNpQ29kZXMuaW5kZXhPZihzZXEpKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtYm9vbGVhbi1jYXN0XG4gICAgICAgIGFuc2lDb2Rlcy5wb3AoKVxuICAgICAgICByZXR1cm4gJzwvc3Bhbj4nXG4gICAgICB9XG4gICAgICAvLyBPcGVuIHRhZy5cbiAgICAgIGFuc2lDb2Rlcy5wdXNoKHNlcSlcbiAgICAgIHJldHVybiBvdFswXSA9PT0gJzwnID8gb3QgOiAnPHNwYW4gc3R5bGU9XCInICsgb3QgKyAnO1wiPidcbiAgICB9XG5cbiAgICB2YXIgY3QgPSBfY2xvc2VUYWdzW3NlcV1cbiAgICBpZiAoY3QpIHtcbiAgICAgIC8vIFBvcCBzZXF1ZW5jZVxuICAgICAgYW5zaUNvZGVzLnBvcCgpXG4gICAgICByZXR1cm4gY3RcbiAgICB9XG4gICAgcmV0dXJuICcnXG4gIH0pXG5cbiAgLy8gTWFrZSBzdXJlIHRhZ3MgYXJlIGNsb3NlZC5cbiAgdmFyIGwgPSBhbnNpQ29kZXMubGVuZ3RoXG4gIDsobCA+IDApICYmIChyZXQgKz0gQXJyYXkobCArIDEpLmpvaW4oJzwvc3Bhbj4nKSlcblxuICByZXR1cm4gcmV0XG59XG5cbi8qKlxuICogQ3VzdG9taXplIGNvbG9ycy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb2xvcnMgcmVmZXJlbmNlIHRvIF9kZWZDb2xvcnNcbiAqL1xuYW5zaUhUTUwuc2V0Q29sb3JzID0gZnVuY3Rpb24gKGNvbG9ycykge1xuICBpZiAodHlwZW9mIGNvbG9ycyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Bjb2xvcnNgIHBhcmFtZXRlciBtdXN0IGJlIGFuIE9iamVjdC4nKVxuICB9XG5cbiAgdmFyIF9maW5hbENvbG9ycyA9IHt9XG4gIGZvciAodmFyIGtleSBpbiBfZGVmQ29sb3JzKSB7XG4gICAgdmFyIGhleCA9IGNvbG9ycy5oYXNPd25Qcm9wZXJ0eShrZXkpID8gY29sb3JzW2tleV0gOiBudWxsXG4gICAgaWYgKCFoZXgpIHtcbiAgICAgIF9maW5hbENvbG9yc1trZXldID0gX2RlZkNvbG9yc1trZXldXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoJ3Jlc2V0JyA9PT0ga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGhleCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaGV4ID0gW2hleF1cbiAgICAgIH1cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShoZXgpIHx8IGhleC5sZW5ndGggPT09IDAgfHwgaGV4LnNvbWUoZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBoICE9PSAnc3RyaW5nJ1xuICAgICAgfSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgdmFsdWUgb2YgYCcgKyBrZXkgKyAnYCBwcm9wZXJ0eSBtdXN0IGJlIGFuIEFycmF5IGFuZCBlYWNoIGl0ZW0gY291bGQgb25seSBiZSBhIGhleCBzdHJpbmcsIGUuZy46IEZGMDAwMCcpXG4gICAgICB9XG4gICAgICB2YXIgZGVmSGV4Q29sb3IgPSBfZGVmQ29sb3JzW2tleV1cbiAgICAgIGlmICghaGV4WzBdKSB7XG4gICAgICAgIGhleFswXSA9IGRlZkhleENvbG9yWzBdXG4gICAgICB9XG4gICAgICBpZiAoaGV4Lmxlbmd0aCA9PT0gMSB8fCAhaGV4WzFdKSB7XG4gICAgICAgIGhleCA9IFtoZXhbMF1dXG4gICAgICAgIGhleC5wdXNoKGRlZkhleENvbG9yWzFdKVxuICAgICAgfVxuXG4gICAgICBoZXggPSBoZXguc2xpY2UoMCwgMilcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBoZXggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB2YWx1ZSBvZiBgJyArIGtleSArICdgIHByb3BlcnR5IG11c3QgYmUgYSBoZXggc3RyaW5nLCBlLmcuOiBGRjAwMDAnKVxuICAgIH1cbiAgICBfZmluYWxDb2xvcnNba2V5XSA9IGhleFxuICB9XG4gIF9zZXRUYWdzKF9maW5hbENvbG9ycylcbn1cblxuLyoqXG4gKiBSZXNldCBjb2xvcnMuXG4gKi9cbmFuc2lIVE1MLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICBfc2V0VGFncyhfZGVmQ29sb3JzKVxufVxuXG4vKipcbiAqIEV4cG9zZSB0YWdzLCBpbmNsdWRpbmcgb3BlbiBhbmQgY2xvc2UuXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG5hbnNpSFRNTC50YWdzID0ge31cblxuaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYW5zaUhUTUwudGFncywgJ29wZW4nLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfb3BlblRhZ3MgfVxuICB9KVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYW5zaUhUTUwudGFncywgJ2Nsb3NlJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX2Nsb3NlVGFncyB9XG4gIH0pXG59IGVsc2Uge1xuICBhbnNpSFRNTC50YWdzLm9wZW4gPSBfb3BlblRhZ3NcbiAgYW5zaUhUTUwudGFncy5jbG9zZSA9IF9jbG9zZVRhZ3Ncbn1cblxuZnVuY3Rpb24gX3NldFRhZ3MgKGNvbG9ycykge1xuICAvLyByZXNldCBhbGxcbiAgX29wZW5UYWdzWycwJ10gPSAnZm9udC13ZWlnaHQ6bm9ybWFsO29wYWNpdHk6MTtjb2xvcjojJyArIGNvbG9ycy5yZXNldFswXSArICc7YmFja2dyb3VuZDojJyArIGNvbG9ycy5yZXNldFsxXVxuICAvLyBpbnZlcnNlXG4gIF9vcGVuVGFnc1snNyddID0gJ2NvbG9yOiMnICsgY29sb3JzLnJlc2V0WzFdICsgJztiYWNrZ3JvdW5kOiMnICsgY29sb3JzLnJlc2V0WzBdXG4gIC8vIGRhcmsgZ3JleVxuICBfb3BlblRhZ3NbJzkwJ10gPSAnY29sb3I6IycgKyBjb2xvcnMuZGFya2dyZXlcblxuICBmb3IgKHZhciBjb2RlIGluIF9zdHlsZXMpIHtcbiAgICB2YXIgY29sb3IgPSBfc3R5bGVzW2NvZGVdXG4gICAgdmFyIG9yaUNvbG9yID0gY29sb3JzW2NvbG9yXSB8fCAnMDAwJ1xuICAgIF9vcGVuVGFnc1tjb2RlXSA9ICdjb2xvcjojJyArIG9yaUNvbG9yXG4gICAgY29kZSA9IHBhcnNlSW50KGNvZGUpXG4gICAgX29wZW5UYWdzWyhjb2RlICsgMTApLnRvU3RyaW5nKCldID0gJ2JhY2tncm91bmQ6IycgKyBvcmlDb2xvclxuICB9XG59XG5cbmFuc2lIVE1MLnJlc2V0KClcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/ansi-html/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/ansi-regex/index.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/ansi-regex/index.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\nmodule.exports = function () {\n\treturn /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYW5zaS1yZWdleC9pbmRleC5qcz85ZWVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQSw2QkFBNkIsWUFBWSxJQUFJLElBQUksTUFBTSxJQUFJO0FBQzNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2Fuc2ktcmVnZXgvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcblx0cmV0dXJuIC9bXFx1MDAxYlxcdTAwOWJdW1soKSM7P10qKD86WzAtOV17MSw0fSg/OjtbMC05XXswLDR9KSopP1swLTlBLVBSWmNmLW5xcnk9PjxdL2c7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/ansi-regex/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js ***!
|
||
\*****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!function(e,t){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else { var o; }}(this,function(exports){\"use strict\";function i(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t<e.length;t++)o[t]=e[t];return o}return Array.from(e)}Object.defineProperty(exports,\"__esModule\",{value:!0});var l=!1;if(\"undefined\"!=typeof window){var e={get passive(){l=!0}};window.addEventListener(\"testPassive\",null,e),window.removeEventListener(\"testPassive\",null,e)}function d(t){return u.some(function(e){return!(!e.options.allowTouchMove||!e.options.allowTouchMove(t))})}function c(e){var t=e||window.event;return!!d(t.target)||(1<t.touches.length||(t.preventDefault&&t.preventDefault(),!1))}function o(){setTimeout(function(){void 0!==m&&(document.body.style.paddingRight=m,m=void 0),void 0!==f&&(document.body.style.overflow=f,f=void 0)})}var a=\"undefined\"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||\"MacIntel\"===window.navigator.platform&&1<window.navigator.maxTouchPoints),u=[],s=!1,v=-1,f=void 0,m=void 0;exports.disableBodyScroll=function(r,e){if(a){if(!r)return void console.error(\"disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.\");if(r&&!u.some(function(e){return e.targetElement===r})){var t={targetElement:r,options:e||{}};u=[].concat(i(u),[t]),r.ontouchstart=function(e){1===e.targetTouches.length&&(v=e.targetTouches[0].clientY)},r.ontouchmove=function(e){var t,o,n,i;1===e.targetTouches.length&&(o=r,i=(t=e).targetTouches[0].clientY-v,d(t.target)||(o&&0===o.scrollTop&&0<i||(n=o)&&n.scrollHeight-n.scrollTop<=n.clientHeight&&i<0?c(t):t.stopPropagation()))},s||(document.addEventListener(\"touchmove\",c,l?{passive:!1}:void 0),s=!0)}}else{n=e,setTimeout(function(){if(void 0===m){var e=!!n&&!0===n.reserveScrollBarGap,t=window.innerWidth-document.documentElement.clientWidth;e&&0<t&&(m=document.body.style.paddingRight,document.body.style.paddingRight=t+\"px\")}void 0===f&&(f=document.body.style.overflow,document.body.style.overflow=\"hidden\")});var o={targetElement:r,options:e||{}};u=[].concat(i(u),[o])}var n},exports.clearAllBodyScrollLocks=function(){a?(u.forEach(function(e){e.targetElement.ontouchstart=null,e.targetElement.ontouchmove=null}),s&&(document.removeEventListener(\"touchmove\",c,l?{passive:!1}:void 0),s=!1),u=[],v=-1):(o(),u=[])},exports.enableBodyScroll=function(t){if(a){if(!t)return void console.error(\"enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.\");t.ontouchstart=null,t.ontouchmove=null,u=u.filter(function(e){return e.targetElement!==t}),s&&0===u.length&&(document.removeEventListener(\"touchmove\",c,l?{passive:!1}:void 0),s=!1)}else(u=u.filter(function(e){return e.targetElement!==t})).length||o()}});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9keS1zY3JvbGwtbG9jay9saWIvYm9keVNjcm9sbExvY2subWluLmpzP2M3NDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0dBQWUsR0FBRyxJQUFxQyxDQUFDLGlDQUFPLENBQUMsT0FBUyxDQUFDLG9DQUFDLENBQUM7QUFBQTtBQUFBO0FBQUEsb0dBQUMsQ0FBQyxLQUFLLFVBQWdGLENBQUMsd0JBQXdCLGFBQWEsY0FBYyxxQkFBcUIsOEJBQThCLFdBQVcsY0FBYyxTQUFTLHFCQUFxQiw0Q0FBNEMsU0FBUyxFQUFFLFNBQVMsK0JBQStCLE9BQU8sY0FBYyxPQUFPLCtGQUErRixjQUFjLDBCQUEwQixpRUFBaUUsRUFBRSxjQUFjLHNCQUFzQixxRkFBcUYsYUFBYSxzQkFBc0IsZ0hBQWdILEVBQUUsOE9BQThPLHdDQUF3QyxNQUFNLGtKQUFrSiwwQkFBMEIsMkJBQTJCLEdBQUcsT0FBTywrQkFBK0IsaURBQWlELDJEQUEyRCwyQkFBMkIsWUFBWSw2TEFBNkwsZ0RBQWdELFdBQVcsZ0JBQWdCLEtBQUssMEJBQTBCLGVBQWUsK0ZBQStGLHFGQUFxRixtRkFBbUYsRUFBRSxPQUFPLCtCQUErQixzQkFBc0IsTUFBTSw0Q0FBNEMseUJBQXlCLG1FQUFtRSxvREFBb0QsV0FBVyxxQ0FBcUMsc0NBQXNDLE1BQU0sZ0pBQWdKLDhEQUE4RCwyQkFBMkIsa0VBQWtFLFdBQVcsZUFBZSw0QkFBNEIsMkJBQTJCLGdCQUFnQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9ib2R5LXNjcm9sbC1sb2NrL2xpYi9ib2R5U2Nyb2xsTG9jay5taW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtcImV4cG9ydHNcIl0sdCk7ZWxzZSBpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgZXhwb3J0cyl0KGV4cG9ydHMpO2Vsc2V7dmFyIG89e307dChvKSxlLmJvZHlTY3JvbGxMb2NrPW99fSh0aGlzLGZ1bmN0aW9uKGV4cG9ydHMpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGkoZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbz1BcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspb1t0XT1lW3RdO3JldHVybiBvfXJldHVybiBBcnJheS5mcm9tKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBsPSExO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpe3ZhciBlPXtnZXQgcGFzc2l2ZSgpe2w9ITB9fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RQYXNzaXZlXCIsbnVsbCxlKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RQYXNzaXZlXCIsbnVsbCxlKX1mdW5jdGlvbiBkKHQpe3JldHVybiB1LnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuISghZS5vcHRpb25zLmFsbG93VG91Y2hNb3ZlfHwhZS5vcHRpb25zLmFsbG93VG91Y2hNb3ZlKHQpKX0pfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZXx8d2luZG93LmV2ZW50O3JldHVybiEhZCh0LnRhcmdldCl8fCgxPHQudG91Y2hlcy5sZW5ndGh8fCh0LnByZXZlbnREZWZhdWx0JiZ0LnByZXZlbnREZWZhdWx0KCksITEpKX1mdW5jdGlvbiBvKCl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZvaWQgMCE9PW0mJihkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD1tLG09dm9pZCAwKSx2b2lkIDAhPT1mJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1mLGY9dm9pZCAwKX0pfXZhciBhPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5uYXZpZ2F0b3ImJndpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0mJigvaVAoYWR8aG9uZXxvZCkvLnRlc3Qod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSl8fFwiTWFjSW50ZWxcIj09PXdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0mJjE8d2luZG93Lm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyksdT1bXSxzPSExLHY9LTEsZj12b2lkIDAsbT12b2lkIDA7ZXhwb3J0cy5kaXNhYmxlQm9keVNjcm9sbD1mdW5jdGlvbihyLGUpe2lmKGEpe2lmKCFyKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoXCJkaXNhYmxlQm9keVNjcm9sbCB1bnN1Y2Nlc3NmdWwgLSB0YXJnZXRFbGVtZW50IG11c3QgYmUgcHJvdmlkZWQgd2hlbiBjYWxsaW5nIGRpc2FibGVCb2R5U2Nyb2xsIG9uIElPUyBkZXZpY2VzLlwiKTtpZihyJiYhdS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldEVsZW1lbnQ9PT1yfSkpe3ZhciB0PXt0YXJnZXRFbGVtZW50OnIsb3B0aW9uczplfHx7fX07dT1bXS5jb25jYXQoaSh1KSxbdF0pLHIub250b3VjaHN0YXJ0PWZ1bmN0aW9uKGUpezE9PT1lLnRhcmdldFRvdWNoZXMubGVuZ3RoJiYodj1lLnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WSl9LHIub250b3VjaG1vdmU9ZnVuY3Rpb24oZSl7dmFyIHQsbyxuLGk7MT09PWUudGFyZ2V0VG91Y2hlcy5sZW5ndGgmJihvPXIsaT0odD1lKS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFktdixkKHQudGFyZ2V0KXx8KG8mJjA9PT1vLnNjcm9sbFRvcCYmMDxpfHwobj1vKSYmbi5zY3JvbGxIZWlnaHQtbi5zY3JvbGxUb3A8PW4uY2xpZW50SGVpZ2h0JiZpPDA/Yyh0KTp0LnN0b3BQcm9wYWdhdGlvbigpKSl9LHN8fChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsYyxsP3twYXNzaXZlOiExfTp2b2lkIDApLHM9ITApfX1lbHNle249ZSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYodm9pZCAwPT09bSl7dmFyIGU9ISFuJiYhMD09PW4ucmVzZXJ2ZVNjcm9sbEJhckdhcCx0PXdpbmRvdy5pbm5lcldpZHRoLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtlJiYwPHQmJihtPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0LGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PXQrXCJweFwiKX12b2lkIDA9PT1mJiYoZj1kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93LGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9XCJoaWRkZW5cIil9KTt2YXIgbz17dGFyZ2V0RWxlbWVudDpyLG9wdGlvbnM6ZXx8e319O3U9W10uY29uY2F0KGkodSksW29dKX12YXIgbn0sZXhwb3J0cy5jbGVhckFsbEJvZHlTY3JvbGxMb2Nrcz1mdW5jdGlvbigpe2E/KHUuZm9yRWFjaChmdW5jdGlvbihlKXtlLnRhcmdldEVsZW1lbnQub250b3VjaHN0YXJ0PW51bGwsZS50YXJnZXRFbGVtZW50Lm9udG91Y2htb3ZlPW51bGx9KSxzJiYoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLGMsbD97cGFzc2l2ZTohMX06dm9pZCAwKSxzPSExKSx1PVtdLHY9LTEpOihvKCksdT1bXSl9LGV4cG9ydHMuZW5hYmxlQm9keVNjcm9sbD1mdW5jdGlvbih0KXtpZihhKXtpZighdClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKFwiZW5hYmxlQm9keVNjcm9sbCB1bnN1Y2Nlc3NmdWwgLSB0YXJnZXRFbGVtZW50IG11c3QgYmUgcHJvdmlkZWQgd2hlbiBjYWxsaW5nIGVuYWJsZUJvZHlTY3JvbGwgb24gSU9TIGRldmljZXMuXCIpO3Qub250b3VjaHN0YXJ0PW51bGwsdC5vbnRvdWNobW92ZT1udWxsLHU9dS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0RWxlbWVudCE9PXR9KSxzJiYwPT09dS5sZW5ndGgmJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsYyxsP3twYXNzaXZlOiExfTp2b2lkIDApLHM9ITEpfWVsc2UodT11LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS50YXJnZXRFbGVtZW50IT09dH0pKS5sZW5ndGh8fG8oKX19KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/chromatism/dist/chromatism.cjs.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/chromatism/dist/chromatism.cjs.js ***!
|
||
\********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("function getIlluminant(r){return ILLUMINANTS[r]}function matrixMultiply(r,t){for(var n=[],e=0;e<r.length;e++){n[e]=[];for(var o=0;o<t[0].length;o++){for(var u=0,a=0;a<r[0].length;a++)u+=r[e][a]*t[a][o];n[e][o]=u}}return n}function getTransform(r){return TRANSFORMS[r]}function determineType(r){var t=types.find(function(t){return testColorType[t](r)});if(!t)throw new Error(\"No type found for color \"+r);return t}function toRadian(r){return r*(Math.PI/180)}function toDegree(r){return r*(180/Math.PI)}function negativeModulo(r,t){return(r%t+t)%t}function bounded(r,t){return r<t[0]?r=t[0]:r>t[1]&&(r=t[1]),r}function boundedRgb(r){return{r:bounded255(r.r),g:bounded255(r.g),b:bounded255(r.b)}}function cubeRoot(r){if(Math.cbrt)return Math.cbrt(r);var t=Math.pow(Math.abs(r),1/3);return r<0?-t:t}function convert(r,t,n){if(void 0===t)throw new Error(\"No value provided\");var e=n||determineType(t);if(e===r)return t;if(conversions[e][r])return convertNow(e,r,t);var o=conversionSteps[e],u=\"string\"==typeof o?o:o[r]||o.default;return convert(r,convertNow(e,u,t),u)}function makeColourObject(r){var t={};return types$1.forEach(function(n){Object.defineProperty(t,n,{get:function(){return convertArrayOrColour(n,r)},enumerable:!0})}),t}function adapt(r,t,n){var e=convert(\"XYZ\",r),o=convert(\"lms\",getIlluminant(t)||getIlluminant(\"D65\")),u=convert(\"lms\",getIlluminant(n)||getIlluminant(\"D65\")),a=getTransform(\"BRADFORD\"),c=matrixMultiply(matrixMultiply(matrixMultiply(getTransform(\"INVERSE_BRADFORD\"),[[o.rho/u.rho,0,0],[0,o.gamma/u.gamma,0],[0,0,o.beta/u.beta]]),a),[[e.X],[e.Y],[e.Z]]);return makeColourObject({X:c[0][0],Y:c[1][0],Z:c[2][0]})}function adjacent(r,t,n){for(var e=convert(\"hsl\",n),o=[{h:e.h,s:e.s,l:e.l}],u=0;u<t-1;u++)e.h=negativeModulo(e.h+r,360),o.push({h:e.h,s:e.s,l:e.l});return makeColourObject(o)}function brightness(r,t){var n=convert(\"hsl\",t);return n.l+=r,n.l<0?n.l=0:n.l>100&&(n.l=100),makeColourObject(n)}function complementary(r){var t=convert(\"hsl\",r);return t.h=(t.h+180)%360,makeColourObject(t)}function contrast(r,t){var n=convert(\"rgb\",t);return n.r=255*((n.r/255-.5)*r+.5),n.r<0?n.r=0:n.r>255&&(n.r=255),n.g=255*((n.g/255-.5)*r+.5),n.g<0?n.g=0:n.g>255&&(n.g=255),n.b=255*((n.b/255-.5)*r+.5),n.b<0?n.b=0:n.b>255&&(n.b=255),makeColourObject(n)}function contrastRatio(r){var t=convert(\"rgb\",r);return t=(299*t.r+587*t.g+114*t.b)/1e3>=128?{r:0,g:0,b:0}:{r:255,g:255,b:255},makeColourObject(t)}function difference(r,t,n,e){n=n||1,e=e||1;var o=convert(\"cielab\",r),u=convert(\"cielab\",t),a=Math.sqrt(Math.pow(o.a,2)+Math.pow(o.b,2)),c=a-Math.sqrt(Math.pow(u.a,2)+Math.pow(u.b,2)),i=o.L-u.L,s=o.a-u.a,l=o.b-u.b,h=Math.sqrt(Math.pow(s,2)+Math.pow(l,2)-Math.pow(c,2)),f=o.L<16?.511:.040975*o.L/(1.01765*o.L),v=.0638*a/(1.0131*a),b=Math.atan2(o.b,o.a),g=b>=0?b:b+360,p=g>=164&&g<=345?.56+Math.abs(.2*Math.cos(toRadian(g+168))):.36+Math.abs(.4*Math.cos(toRadian(g+35))),m=Math.pow(a,4)/(Math.pow(a,4)+1900),d=v*(m*p+1-m),Y=Math.pow(i/(n*f),2),M=Math.pow(c/(e*v),2),y=Math.pow(h/d,2);return Math.sqrt(Y+M+y)}function slopeMod(r,t){return r>2*t?slopeMod(r-2*t,t):r>t?2*t-r:r<0?slopeMod(r+2*t,t):r}function fade(r,t,n){var e=convert(\"rgb\",t),o=convert(\"rgb\",n),u=[e];r-=1;for(var a=(o.r-e.r)/r,c=(o.g-e.g)/r,i=(o.b-e.b)/r,s={r:e.r,g:e.g,b:e.b},l=0;l<r-1;l++)s.r=slopeMod(s.r+a,255),s.g=slopeMod(s.g+c,255),s.b=slopeMod(s.b+i,255),u.push({r:s.r,g:s.g,b:s.b});return u.push(o),makeColourObject(u)}function greyscale(r){var t=convert(\"rgb\",r),n=(t.r+t.g+t.b)/3;return t={r:n,g:n,b:n},makeColourObject(t)}function hue(r,t){var n=convert(\"hsl\",t);return n.h=negativeModulo(n.h+r,360),makeColourObject(n)}function invert(r){var t=convert(\"rgb\",r);return t.r=negativeModulo(255-t.r,255),t.g=negativeModulo(255-t.g,255),t.b=negativeModulo(255-t.b,255),makeColourObject(t)}function invertLightness(r){var t=convert(\"hsl\",r);return t.l=100-t.l,makeColourObject(t)}function mid(r,t){var n=convert(\"hsl\",r),e=convert(\"hsl\",t);return makeColourObject({h:(n.h+e.h)/2,s:(n.s+e.s)/2,l:(n.l+e.l)/2})}function multiply(r,t){var n=convert(\"hsl\",r),e=convert(\"hsl\",t),o={h:n.h,s:n.s,l:n.l/100*(e.l/100)*100};return o.l=o.l>100?100:o.l,o.l=o.l<0?0:o.l,makeColourObject(o)}function saturation(r,t){var n=convert(\"hsl\",t);return n.s+=r,n.s<0?n.s=0:n.s>100&&(n.s=100),makeColourObject(n)}function sepia(r){var t=convert(\"rgb\",r),n={};return n.r=.393*t.r+.769*t.g+.189*t.b,n.g=.349*t.r+.686*t.g+.168*t.b,n.b=.272*t.r+.534*t.g+.131*t.b,makeColourObject(n)}function shade(r,t){var n=convert(\"hsv\",t);return console.log(n),n.v+=r,n.v<0?n.v=0:n.v>100&&(n.v=100),console.log(n),makeColourObject(n)}function temperature(r){var t=convert(\"xyY\",r),n=(t.x-.332)/(t.y-.1858);return-449*Math.pow(n,3)+3525*Math.pow(n,2)-6823.3*n+5520.33}function tetrad(r){for(var t=convert(\"hsl\",r),n=[{h:t.h,s:t.s,l:t.l}],e=0;e<3;e++)t.h=(t.h+90)%360,n.push({h:t.h,s:t.s,l:t.l});return makeColourObject(n)}function triad(r){for(var t=convert(\"hsl\",r),n=[{h:t.h,s:t.s,l:t.l}],e=0;e<2;e++)t.h=(t.h+120)%360,n.push({h:t.h,s:t.s,l:t.l});return makeColourObject(n)}function complementary$1(r){var t=convert(\"hsluv\",r);return t.hu=(t.hu+180)%360,makeColourObject(t)}function triad$1(r){for(var t=convert(\"hsluv\",r),n=[{hu:t.hu,s:t.s,l:t.l}],e=0;e<2;e++)t.hu=(t.hu+120)%360,n.push({h:t.hu,s:t.s,l:t.l});return makeColourObject(n)}function tetrad$1(r){for(var t=convert(\"hsluv\",r),n=[{hu:t.hu,s:t.s,l:t.l}],e=0;e<3;e++)t.hu=(t.hu+90)%360,n.push({h:t.hu,s:t.s,l:t.l});return makeColourObject(n)}Object.defineProperty(exports,\"__esModule\",{value:!0});var ILLUMINANTS={A:{X:1.0985*100,Y:100,Z:35.585},B:{X:99.072,Y:100,Z:85.223},C:{X:98.074,Y:100,Z:118.232},D50:{X:96.422,Y:100,Z:82.521},D55:{X:95.682,Y:100,Z:92.149},D65:{X:95.047,Y:100,Z:108.883},D75:{X:94.972,Y:100,Z:122.638},E:{X:100,Y:100,Z:100},F2:{X:.99186*100,Y:100,Z:67.393},F7:{X:95.041,Y:100,Z:108.747},F11:{X:1.00962*100,Y:100,Z:64.35}},TRANSFORMS={BRADFORD:[[.8951,.2664,-.1614],[-.7502,1.7135,.0367],[.0389,-.0685,1.0296]],INVERSE_BRADFORD:[[.9869929,-.1470543,.1599627],[.4323053,.5183603,.0492912],[-.0085287,.0400428,.9684867]],SRGB_XYZ:[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],INVERSE_SRGB_XYZ:[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]]},contains=function(r,t){var n=new Set(Object.keys(r));return t.every(function(r){return n.has(r)})},stringStartsWith=function(r,t){return\"string\"==typeof r&&r.slice(0,t.length)===t},testColorType={hex:function(r){return stringStartsWith(r,\"#\")},rgb:function(r){return contains(r,[\"r\",\"g\",\"b\"])},cssrgb:function(r){return stringStartsWith(r,\"rgb(\")},hsl:function(r){return contains(r,[\"h\",\"s\",\"l\"])},csshsl:function(r){return stringStartsWith(r,\"hsl(\")},hsv:function(r){return contains(r,[\"h\",\"s\",\"v\"])},cmyk:function(r){return contains(r,[\"c\",\"m\",\"y\",\"k\"])},yiq:function(r){return contains(r,[\"y\",\"i\",\"q\"])},XYZ:function(r){return contains(r,[\"X\",\"Y\",\"Z\"])},xyY:function(r){return contains(r,[\"x\",\"y\",\"Y\"])},lms:function(r){return contains(r,[\"rho\",\"gamma\",\"beta\"])},cielab:function(r){return contains(r,[\"L\",\"a\",\"b\"])},cieluv:function(r){return contains(r,[\"L\",\"u\",\"v\"])},cielch:function(r){return contains(r,[\"L\",\"C\",\"h\"])},hsluv:function(r){return contains(r,[\"hu\",\"s\",\"l\"])}},types=Object.keys(testColorType),epsilon=.008856,kappa=903.3,white=getIlluminant(\"D65\"),toR=function(r){return Math.pow(r,3)>epsilon?Math.pow(r,3):(116*r-16)/kappa},cielab={XYZ:function(r){var t=(r.L+16)/116,n=r.a/500+t,e=t-r.b/200,o=toR(n),u=toR(e),a=r.L>kappa*epsilon?Math.pow(t,3):r.L/kappa;return{X:o*white.X,Y:a*white.Y,Z:u*white.Z}}},cielch={cieluv:function(r){var t=toRadian(r.h),n=r.C*Math.cos(t),e=r.C*Math.sin(t);return{L:r.L,u:n,v:e}},hsluv:function(r){if(r.L>99.9999999)return{hu:r.h,s:0,l:100};if(r.L<1e-8)return{hu:r.h,s:0,l:0};for(var t=(r.L+16)/1560896,n=t>.008856?t:r.L/903.3,e=getTransform(\"INVERSE_SRGB_XYZ\"),o=[],u=0;u<3;u++)for(var a=e[u][0],c=e[u][1],i=e[u][2],s=0;s<2;s++){var l=(284517*a-94839*i)*n,h=(838422*i+769860*c+731718*a)*r.L*n-769860*s*r.L,f=(632260*i-126452*c)*n+126452*s;o.push({m:l/f,b:h/f})}var v=Number.MAX_VALUE,b=toRadian(r.h);o.forEach(function(r){var t=r.b/(Math.sin(b)-r.m*Math.cos(b));t>=0&&(v=Math.min(v,t))});var g=v;return{hu:r.h,s:r.C/g*100,l:r.L}}},cieluv={XYZ:function(r){var t=getIlluminant(\"D65\"),n=function(r){return 4*r.X/(r.X+15*r.Y+3*r.Z)}(t),e=function(r){return 9*r.Y/(r.X+15*r.Y+3*r.Z)}(t),o=1/3*(52*r.L/(r.u+13*r.L*n)-1),u=r.L>903.3*.008856?Math.pow((r.L+16)/116,3):r.L/903.3,a=-5*u,c=(u*(39*r.L/(r.v+13*r.L*e)-5)-a)/(o- -1/3);return{X:100*c,Y:100*u,Z:100*(c*o+a)}},cielch:function(r){var t=Math.sqrt(Math.pow(r.u,2)+Math.pow(r.v,2)),n=Math.atan2(r.v,r.u);return n<0&&(n+=2*Math.PI),n=toDegree(n),{L:r.L,C:t,h:n}}},rgb=function(r){return{r:255*(1-r.c)*(1-r.k),g:255*(1-r.m)*(1-r.k),b:255*(1-r.y)*(1-r.k)}},cmyk={rgb:rgb,cssrgb:function(r){var t=rgb(r),n=t.r,e=t.g,o=t.b;return\"rgb(\"+Math.round(n)+\",\"+Math.round(e)+\",\"+Math.round(o)+\")\"}},csshsl={hsl:function(r){var t=r.replace(/(hsl\\(|\\)|%|[\\s]*)/g,\"\").split(\",\").map(function(r){return parseInt(r,10)});return{h:t[0],s:t[1],l:t[2]}}},cssrgb={rgb:function(r){var t=r.replace(/((rgb\\(|\\))|[\\s]*)/g,\"\").split(\",\").map(function(r){return parseInt(r,10)});return{r:t[0],g:t[1],b:t[2]}}},hex={rgb:function(r){var t=r.replace(\"#\",\"\").match(/.{2}/g).map(function(r){return parseInt(r,16)});return{r:t[0],g:t[1],b:t[2]}}},hsl={rgb:function(r){if(0===r.s){var t=r.l/100*255;return{r:t,g:t,b:t}}var n,e,o;n=r.l>=50?r.l/100+r.s/100-r.l/100*(r.s/100):r.l/100*(1+r.s/100),e=r.l/100*2-n;var u,a,c,i=((o=r.h/360)+.333)%1,s=o,l=negativeModulo(o-.333,1);return u=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+6*(.666-i)*(n-e):e,a=6*s<1?e+6*(n-e)*s:2*s<1?n:3*s<2?e+6*(.666-s)*(n-e):e,c=6*l<1?e+6*(n-e)*l:2*l<1?n:3*l<2?e+6*(.666-l)*(n-e):e,u<0&&(u=0),a<0&&(a=0),c<0&&(c=0),{r:255*u,g:255*a,b:255*c}},csshsl:function(r){return\"hsl(\"+Math.round(r.h)+\",\"+Math.round(r.s)+\"%,\"+Math.round(r.l)+\"%)\"},hsv:function(r){var t=Object.assign({},r,{s:r.s/100,l:r.l/100}),n=t.s*(t.l<.5?t.l:1-t.l);return{h:t.h,s:100*(2*n/(t.l+n)),v:100*(t.l+n)}}},hsluv={cielch:function(r){if(r.L>99.9999999)return{L:100,C:0,h:r.hu};if(r.L<1e-8)return{L:0,C:0,h:r.hu};for(var t=(r.l+16)/1560896,n=t>.008856?t:r.l/903.3,e=getTransform(\"INVERSE_SRGB_XYZ\"),o=[],u=0;u<3;u++)for(var a=e[u][0],c=e[u][1],i=e[u][2],s=0;s<2;s++){var l=(284517*a-94839*i)*n,h=(838422*i+769860*c+731718*a)*r.l*n-769860*s*r.l,f=(632260*i-126452*c)*n+126452*s;o.push({m:l/f,b:h/f})}var v=Number.MAX_VALUE,b=toRadian(r.hu);o.forEach(function(r){var t=r.b/(Math.sin(b)-r.m*Math.cos(b));t>=0&&(v=Math.min(v,t))});var g=v;return{L:r.l,C:g/100*r.s,h:r.hu}}},hsv={hsl:function(r){var t=Object.assign({},r,{h:r.h/360,s:r.s/100,v:r.v/100});return{h:360*t.h,s:100*((2-t.s)*t.v<1?t.s*t.v/((2-t.s)*t.v):t.s*t.v/(2-(2-t.s)*t.v)),l:100*((2-t.s)*t.v/2)}}},lms={XYZ:function(r){var t=[r.rho,r.gamma,r.beta],n=getTransform(\"INVERSE_BRADFORD\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)});return{X:100*n[0],Y:100*n[1],Z:100*n[2]}}},bounded255=function(r){return bounded(r,[0,255])},slicedToArray=function(){function r(r,t){var n=[],e=!0,o=!1,u=void 0;try{for(var a,c=r[Symbol.iterator]();!(e=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);e=!0);}catch(r){o=!0,u=r}finally{try{!e&&c.return&&c.return()}finally{if(o)throw u}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return r(t,n);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),epsilon$1=.008856,kappa$1=903.3,white$1=getIlluminant(\"D65\"),fromXYZ={rgb:function(r){var t=[r.X,r.Y,r.Z].map(function(r){return r/100}),n=getTransform(\"INVERSE_SRGB_XYZ\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)}).map(function(r){return r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055}).map(function(r){return 255*r}),e=slicedToArray(n,3);return boundedRgb({r:e[0],g:e[1],b:e[2]})},lms:function(r){var t=[r.X,r.Y,r.Z].map(function(r){return r/100}),n=getTransform(\"BRADFORD\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)});return{rho:n[0],gamma:n[1],beta:n[2]}},cielab:function(r){var t=r.X/white$1.X,n=r.Y/white$1.Y,e=r.Z/white$1.Z,o=function(r){return r>epsilon$1?cubeRoot(r):(kappa$1*r+16)/116},u=o(t),a=o(n);return{L:116*a-16,a:500*(u-a),b:200*(a-o(e))}},cieluv:function(r){var t=r.Y/white$1.Y,n=t>epsilon$1?116*cubeRoot(t)-16:kappa$1*t,e=function(r){return 4*r.X/(r.X+15*r.Y+3*r.Z)},o=function(r){return 9*r.Y/(r.X+15*r.Y+3*r.Z)};return{L:n,u:13*n*(e(r)-e(white$1)),v:13*n*(o(r)-o(white$1))}},xyY:function(r){return{x:r.X/(r.X+r.Y+r.Z),y:r.Y/(r.X+r.Y+r.Z),Y:r.Y}}},fromXYZTolms=fromXYZ.lms,fromXYZTocielab=fromXYZ.cielab,fromXYZTocieluv=fromXYZ.cieluv,fromXYZToxyY=fromXYZ.xyY,hsl$1=function(r){var t,n,e=r.r/255,o=r.g/255,u=r.b/255,a=[e,o,u].sort(),c=(a[0]+a[2])/2*100;return a[0]===a[2]?(t=0,n=0):(t=c>=50?(a[2]-a[0])/(2-a[2]-a[0])*100:(a[2]-a[0])/(a[2]+a[0])*100,(n=a[2]===e?(o-u)/(a[2]-a[0])*60:a[2]===o?60*(2+(u-e)/(a[2]-a[0])):60*(4+(e-o)/(a[2]-a[0])))<0?n+=360:n>360&&(n%=360)),{h:n,s:t,l:c}},cieluv$1=function(r){return fromXYZTocieluv(XYZ(r))},XYZ=function(r){var t=[r.r,r.g,r.b].map(function(r){return r/255}).map(function(r){return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}),n=getTransform(\"SRGB_XYZ\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)}).map(function(r){return 100*r}),e=slicedToArray(n,3);return{X:e[0],Y:e[1],Z:e[2]}},rgb$1={hex:function(r){var t=Math.round(r.r).toString(16);1===t.length&&(t=\"0\"+t);var n=Math.round(r.g).toString(16);1===n.length&&(n=\"0\"+n);var e=Math.round(r.b).toString(16);return 1===e.length&&(e=\"0\"+e),\"#\"+t+n+e},cssrgb:function(r){return\"rgb(\"+Math.round(r.r)+\",\"+Math.round(r.g)+\",\"+Math.round(r.b)+\")\"},hsl:hsl$1,csshsl:function(r){var t=hsl$1(r),n=t.h,e=t.s,o=t.l;return\"hsl(\"+Math.round(n)+\",\"+Math.round(e)+\"%,\"+Math.round(o)+\"%)\"},cmyk:function(r){var t=r.r/255,n=r.g/255,e=r.b/255,o=1-Math.max(t,n,e);return 1!==o?{c:(1-t-o)/(1-o),m:(1-n-o)/(1-o),y:(1-e-o)/(1-o),k:o}:{c:0,m:0,y:0,k:o}},yiq:function(r){var t=r.r/255*.299+r.g/255*.587+r.b/255*.114,n=r.r/255*.596+r.g/255*-.274+r.b/255*-.322,e=r.r/255*.211+r.g/255*-.523+r.b/255*.312;return n=bounded(n,[-.5957,.5957]),e=bounded(e,[-.5226,.5226]),{y:t,i:n,q:e}},XYZ:XYZ,lms:function(r){return fromXYZTolms(XYZ(r))},cielab:function(r){return fromXYZTocielab(XYZ(r))},cieluv:cieluv$1,xyY:function(r){return fromXYZToxyY(XYZ(r))}},xyY={XYZ:function(r){var t=r.x,n=r.y,e=r.Y;return{X:e/n*t,Y:e,Z:e/n*(1-t-n)}}},bound=function(r){return bounded(r,[0,255])},yiq={rgb:function(r){var t=bounded(r.i,[-.5957,.5957]),n=bounded(r.q,[-.5226,.5226]);return{r:255*bound(r.y+.956*t+.621*n),g:255*bound(r.y+-.272*t+-.647*n),b:255*bound(r.y+-1.106*t+-1.703*n)}}},conversions=Object.freeze({cielab:cielab,cielch:cielch,cieluv:cieluv,cmyk:cmyk,csshsl:csshsl,cssrgb:cssrgb,hex:hex,hsl:hsl,hsluv:hsluv,hsv:hsv,lms:lms,rgb:rgb$1,xyY:xyY,XYZ:fromXYZ,yiq:yiq}),conversionSteps={rgb:{default:\"XYZ\",csshsl:\"hsl\",hsv:\"hsl\"},hex:\"rgb\",hsl:\"rgb\",hsv:\"hsl\",csshsl:\"hsl\",cssrgb:\"rgb\",cmyk:\"rgb\",XYZ:{default:\"rgb\",cielch:\"cieluv\",hsluv:\"cieluv\"},xyY:\"XYZ\",lms:\"XYZ\",cieluv:{default:\"XYZ\",hsluv:\"cielch\"},cielch:\"cieluv\",cielab:\"XYZ\",yiq:\"rgb\",hsluv:\"cielch\"},convertNow=function(r,t,n){return conversions[r][t](n)},types$1=Object.keys(testColorType),convertArrayOrColour=function(r,t){return Array.isArray(t)?t.map(function(t){return convert(r,t)}):convert(r,t)};exports.adapt=adapt,exports.adjacent=adjacent,exports.brightness=brightness,exports.complementary=complementary,exports.contrast=contrast,exports.contrastRatio=contrastRatio,exports.convert=makeColourObject,exports.difference=difference,exports.fade=fade,exports.greyscale=greyscale,exports.hue=hue,exports.invert=invert,exports.invertLightness=invertLightness,exports.mid=mid,exports.multiply=multiply,exports.saturation=saturation,exports.sepia=sepia,exports.shade=shade,exports.temperature=temperature,exports.tetrad=tetrad,exports.triad=triad,exports.uniformComplementary=complementary$1,exports.uniformTriad=triad$1,exports.uniformTetrad=tetrad$1;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2hyb21hdGlzbS9kaXN0L2Nocm9tYXRpc20uY2pzLmpzP2FjYTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWEsMEJBQTBCLHNCQUFzQiw2QkFBNkIsaUJBQWlCLFdBQVcsS0FBSyxRQUFRLFlBQVksY0FBYyxLQUFLLGdCQUFnQixjQUFjLHVCQUF1QixXQUFXLFNBQVMseUJBQXlCLHFCQUFxQiwwQkFBMEIsNkJBQTZCLDJCQUEyQixFQUFFLG9EQUFvRCxTQUFTLHFCQUFxQix1QkFBdUIscUJBQXFCLHVCQUF1Qiw2QkFBNkIsZ0JBQWdCLHNCQUFzQix3Q0FBd0MsdUJBQXVCLE9BQU8sdURBQXVELHFCQUFxQixpQ0FBaUMsZ0NBQWdDLGdCQUFnQix3QkFBd0IsbURBQW1ELDBCQUEwQixrQkFBa0IsOENBQThDLGdFQUFnRSxzQ0FBc0MsNkJBQTZCLFNBQVMsbUNBQW1DLDJCQUEyQixlQUFlLGlDQUFpQyxlQUFlLEVBQUUsSUFBSSxzQkFBc0IseVVBQXlVLHlCQUF5Qiw4QkFBOEIsRUFBRSx5QkFBeUIsK0JBQStCLGtCQUFrQixNQUFNLE1BQU0sMENBQTBDLGtCQUFrQixFQUFFLDJCQUEyQix5QkFBeUIsdUJBQXVCLGlFQUFpRSwwQkFBMEIsdUJBQXVCLDZDQUE2Qyx1QkFBdUIsdUJBQXVCLDRNQUE0TSwwQkFBMEIsdUJBQXVCLDZDQUE2QyxZQUFZLEVBQUUsa0JBQWtCLHFCQUFxQiw2QkFBNkIsY0FBYywwaEJBQTBoQix3QkFBd0IsdUJBQXVCLGlFQUFpRSxxQkFBcUIsZ0RBQWdELEtBQUsscURBQXFELGtCQUFrQixLQUFLLE1BQU0sb0ZBQW9GLGtCQUFrQixFQUFFLHFDQUFxQyxzQkFBc0IseUNBQXlDLFVBQVUsWUFBWSxxQkFBcUIsa0JBQWtCLHVCQUF1Qix5REFBeUQsbUJBQW1CLHVCQUF1QiwySEFBMkgsNEJBQTRCLHVCQUF1Qix1Q0FBdUMsa0JBQWtCLDBDQUEwQyx5QkFBeUIsMENBQTBDLEVBQUUsdUJBQXVCLDZDQUE2QyxxQ0FBcUMsK0RBQStELHlCQUF5Qix1QkFBdUIsaUVBQWlFLGtCQUFrQiw0QkFBNEIsd0hBQXdILG9CQUFvQix1QkFBdUIsK0ZBQStGLHdCQUF3QixnREFBZ0QsNkRBQTZELG1CQUFtQiwrQkFBK0Isa0JBQWtCLE1BQU0sSUFBSSw2QkFBNkIsa0JBQWtCLEVBQUUsMkJBQTJCLGtCQUFrQiwrQkFBK0Isa0JBQWtCLE1BQU0sSUFBSSw4QkFBOEIsa0JBQWtCLEVBQUUsMkJBQTJCLDRCQUE0Qix5QkFBeUIsK0NBQStDLG9CQUFvQixpQ0FBaUMsb0JBQW9CLE1BQU0sSUFBSSxnQ0FBZ0MsbUJBQW1CLEVBQUUsMkJBQTJCLHFCQUFxQixpQ0FBaUMsb0JBQW9CLE1BQU0sSUFBSSwrQkFBK0IsbUJBQW1CLEVBQUUsMkJBQTJCLDRDQUE0QyxTQUFTLEVBQUUsaUJBQWlCLEdBQUcsNEJBQTRCLElBQUksd0JBQXdCLElBQUkseUJBQXlCLE1BQU0sd0JBQXdCLE1BQU0sd0JBQXdCLE1BQU0seUJBQXlCLE1BQU0seUJBQXlCLElBQUksa0JBQWtCLEtBQUssNEJBQTRCLEtBQUsseUJBQXlCLE1BQU0sNkJBQTZCLGFBQWEsb1ZBQW9WLHdCQUF3Qiw4QkFBOEIsMkJBQTJCLGdCQUFnQixFQUFFLGdDQUFnQyxrREFBa0QsZ0JBQWdCLGdCQUFnQiwrQkFBK0IsaUJBQWlCLGlDQUFpQyxvQkFBb0Isa0NBQWtDLGlCQUFpQixpQ0FBaUMsb0JBQW9CLGtDQUFrQyxpQkFBaUIsaUNBQWlDLGtCQUFrQixxQ0FBcUMsaUJBQWlCLGlDQUFpQyxpQkFBaUIsaUNBQWlDLGlCQUFpQixpQ0FBaUMsaUJBQWlCLDBDQUEwQyxvQkFBb0IsaUNBQWlDLG9CQUFvQixpQ0FBaUMsb0JBQW9CLGlDQUFpQyxtQkFBbUIsbUNBQW1DLHlHQUF5Ryw0REFBNEQsU0FBUyxnQkFBZ0IseUdBQXlHLE9BQU8sc0NBQXNDLFNBQVMsbUJBQW1CLHdEQUF3RCxPQUFPLGVBQWUsbUJBQW1CLHlCQUF5QixrQkFBa0IsbUJBQW1CLGdCQUFnQiwrRkFBK0YsSUFBSSw4Q0FBOEMsSUFBSSxLQUFLLDhHQUE4RyxRQUFRLFlBQVksRUFBRSx1Q0FBdUMsc0JBQXNCLHdDQUF3Qyx3QkFBd0IsRUFBRSxRQUFRLE9BQU8sMkJBQTJCLFNBQVMsZ0JBQWdCLHlDQUF5QyxnQ0FBZ0Msa0JBQWtCLGdDQUFnQyw4SUFBOEksT0FBTywrQkFBK0Isb0JBQW9CLHVFQUF1RSwwQ0FBMEMsZ0JBQWdCLGlCQUFpQixPQUFPLG1FQUFtRSxPQUFPLDJCQUEyQiwrQkFBK0Isb0VBQW9FLFNBQVMsZ0JBQWdCLHFFQUFxRSxzQkFBc0IsRUFBRSxPQUFPLHVCQUF1QixTQUFTLGdCQUFnQixxRUFBcUUsc0JBQXNCLEVBQUUsT0FBTyx1QkFBdUIsTUFBTSxnQkFBZ0IsaUNBQWlDLEVBQUUsb0JBQW9CLHNCQUFzQixFQUFFLE9BQU8sdUJBQXVCLE1BQU0sZ0JBQWdCLFlBQVksa0JBQWtCLE9BQU8sYUFBYSxVQUFVLDhFQUE4RSxnRUFBZ0UsOE1BQThNLHlCQUF5QixvQkFBb0IsMkVBQTJFLGlCQUFpQixzQkFBc0IsSUFBSSxvQkFBb0IsMkJBQTJCLE9BQU8sMENBQTBDLFFBQVEsbUJBQW1CLHlCQUF5QixrQkFBa0IsbUJBQW1CLGdCQUFnQiwrRkFBK0YsSUFBSSw4Q0FBOEMsSUFBSSxLQUFLLDhHQUE4RyxRQUFRLFlBQVksRUFBRSx3Q0FBd0Msc0JBQXNCLHdDQUF3Qyx3QkFBd0IsRUFBRSxRQUFRLE9BQU8sMkJBQTJCLE1BQU0sZ0JBQWdCLHNCQUFzQixJQUFJLDhCQUE4QixFQUFFLE9BQU8sc0dBQXNHLE1BQU0sZ0JBQWdCLGdGQUFnRixnQ0FBZ0MsZ0JBQWdCLElBQUksRUFBRSxPQUFPLG1DQUFtQyx3QkFBd0IsMEJBQTBCLDBCQUEwQixnQkFBZ0IsNEJBQTRCLElBQUksaUNBQWlDLDJEQUEyRCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUkseUJBQXlCLFFBQVEsY0FBYyxTQUFTLHFCQUFxQiw2QkFBNkIsOENBQThDLDZFQUE2RSx5RUFBeUUsZ0JBQWdCLG9DQUFvQyxhQUFhLHFEQUFxRCxnQ0FBZ0MsZ0JBQWdCLElBQUksa0JBQWtCLHdEQUF3RCxrQkFBa0IsYUFBYSx1QkFBdUIsbUJBQW1CLHFCQUFxQixFQUFFLGlCQUFpQixvQ0FBb0MsYUFBYSw2Q0FBNkMsZ0NBQWdDLGdCQUFnQixJQUFJLEVBQUUsT0FBTywrQkFBK0Isb0JBQW9CLGtFQUFrRSxrREFBa0QsZUFBZSxPQUFPLHVDQUF1QyxvQkFBb0IsNkVBQTZFLGdDQUFnQyxlQUFlLGlDQUFpQyxPQUFPLHVEQUF1RCxpQkFBaUIsT0FBTyxnREFBZ0QsbUlBQW1JLDJFQUEyRSx3TkFBd04sYUFBYSxzQkFBc0IsK0JBQStCLGlCQUFpQixvQ0FBb0MsYUFBYSxrQkFBa0Isc0RBQXNELDZDQUE2QyxnQ0FBZ0MsZ0JBQWdCLElBQUksa0JBQWtCLGFBQWEsdUJBQXVCLE9BQU8sc0JBQXNCLFFBQVEsZ0JBQWdCLG1DQUFtQyx3QkFBd0IsbUNBQW1DLHdCQUF3QixtQ0FBbUMseUNBQXlDLG9CQUFvQix5RUFBeUUsOEJBQThCLGlDQUFpQyxxRUFBcUUsa0JBQWtCLHNEQUFzRCxjQUFjLG9EQUFvRCxFQUFFLGlCQUFpQixpQkFBaUIsa0lBQWtJLGdFQUFnRSxhQUFhLHlCQUF5Qiw0QkFBNEIsb0JBQW9CLCtCQUErQixpQ0FBaUMsNkJBQTZCLE1BQU0sZ0JBQWdCLHNCQUFzQixPQUFPLDRCQUE0QixtQkFBbUIsMEJBQTBCLE1BQU0sZ0JBQWdCLGdFQUFnRSxPQUFPLHFHQUFxRyw0QkFBNEIsa0tBQWtLLG1CQUFtQixLQUFLLHFDQUFxQyx5RUFBeUUsNkNBQTZDLDZCQUE2Qiw2QkFBNkIsdURBQXVELDRCQUE0Qiw0QkFBNEIsdUVBQXVFLDBDQUEwQyxvQkFBb0IsZ0JBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2Nocm9tYXRpc20vZGlzdC9jaHJvbWF0aXNtLmNqcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIGdldElsbHVtaW5hbnQocil7cmV0dXJuIElMTFVNSU5BTlRTW3JdfWZ1bmN0aW9uIG1hdHJpeE11bHRpcGx5KHIsdCl7Zm9yKHZhciBuPVtdLGU9MDtlPHIubGVuZ3RoO2UrKyl7bltlXT1bXTtmb3IodmFyIG89MDtvPHRbMF0ubGVuZ3RoO28rKyl7Zm9yKHZhciB1PTAsYT0wO2E8clswXS5sZW5ndGg7YSsrKXUrPXJbZV1bYV0qdFthXVtvXTtuW2VdW29dPXV9fXJldHVybiBufWZ1bmN0aW9uIGdldFRyYW5zZm9ybShyKXtyZXR1cm4gVFJBTlNGT1JNU1tyXX1mdW5jdGlvbiBkZXRlcm1pbmVUeXBlKHIpe3ZhciB0PXR5cGVzLmZpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHRlc3RDb2xvclR5cGVbdF0ocil9KTtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJObyB0eXBlIGZvdW5kIGZvciBjb2xvciBcIityKTtyZXR1cm4gdH1mdW5jdGlvbiB0b1JhZGlhbihyKXtyZXR1cm4gciooTWF0aC5QSS8xODApfWZ1bmN0aW9uIHRvRGVncmVlKHIpe3JldHVybiByKigxODAvTWF0aC5QSSl9ZnVuY3Rpb24gbmVnYXRpdmVNb2R1bG8ocix0KXtyZXR1cm4ociV0K3QpJXR9ZnVuY3Rpb24gYm91bmRlZChyLHQpe3JldHVybiByPHRbMF0/cj10WzBdOnI+dFsxXSYmKHI9dFsxXSkscn1mdW5jdGlvbiBib3VuZGVkUmdiKHIpe3JldHVybntyOmJvdW5kZWQyNTUoci5yKSxnOmJvdW5kZWQyNTUoci5nKSxiOmJvdW5kZWQyNTUoci5iKX19ZnVuY3Rpb24gY3ViZVJvb3Qocil7aWYoTWF0aC5jYnJ0KXJldHVybiBNYXRoLmNicnQocik7dmFyIHQ9TWF0aC5wb3coTWF0aC5hYnMociksMS8zKTtyZXR1cm4gcjwwPy10OnR9ZnVuY3Rpb24gY29udmVydChyLHQsbil7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoXCJObyB2YWx1ZSBwcm92aWRlZFwiKTt2YXIgZT1ufHxkZXRlcm1pbmVUeXBlKHQpO2lmKGU9PT1yKXJldHVybiB0O2lmKGNvbnZlcnNpb25zW2VdW3JdKXJldHVybiBjb252ZXJ0Tm93KGUscix0KTt2YXIgbz1jb252ZXJzaW9uU3RlcHNbZV0sdT1cInN0cmluZ1wiPT10eXBlb2Ygbz9vOm9bcl18fG8uZGVmYXVsdDtyZXR1cm4gY29udmVydChyLGNvbnZlcnROb3coZSx1LHQpLHUpfWZ1bmN0aW9uIG1ha2VDb2xvdXJPYmplY3Qocil7dmFyIHQ9e307cmV0dXJuIHR5cGVzJDEuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29udmVydEFycmF5T3JDb2xvdXIobixyKX0sZW51bWVyYWJsZTohMH0pfSksdH1mdW5jdGlvbiBhZGFwdChyLHQsbil7dmFyIGU9Y29udmVydChcIlhZWlwiLHIpLG89Y29udmVydChcImxtc1wiLGdldElsbHVtaW5hbnQodCl8fGdldElsbHVtaW5hbnQoXCJENjVcIikpLHU9Y29udmVydChcImxtc1wiLGdldElsbHVtaW5hbnQobil8fGdldElsbHVtaW5hbnQoXCJENjVcIikpLGE9Z2V0VHJhbnNmb3JtKFwiQlJBREZPUkRcIiksYz1tYXRyaXhNdWx0aXBseShtYXRyaXhNdWx0aXBseShtYXRyaXhNdWx0aXBseShnZXRUcmFuc2Zvcm0oXCJJTlZFUlNFX0JSQURGT1JEXCIpLFtbby5yaG8vdS5yaG8sMCwwXSxbMCxvLmdhbW1hL3UuZ2FtbWEsMF0sWzAsMCxvLmJldGEvdS5iZXRhXV0pLGEpLFtbZS5YXSxbZS5ZXSxbZS5aXV0pO3JldHVybiBtYWtlQ29sb3VyT2JqZWN0KHtYOmNbMF1bMF0sWTpjWzFdWzBdLFo6Y1syXVswXX0pfWZ1bmN0aW9uIGFkamFjZW50KHIsdCxuKXtmb3IodmFyIGU9Y29udmVydChcImhzbFwiLG4pLG89W3toOmUuaCxzOmUucyxsOmUubH1dLHU9MDt1PHQtMTt1KyspZS5oPW5lZ2F0aXZlTW9kdWxvKGUuaCtyLDM2MCksby5wdXNoKHtoOmUuaCxzOmUucyxsOmUubH0pO3JldHVybiBtYWtlQ29sb3VyT2JqZWN0KG8pfWZ1bmN0aW9uIGJyaWdodG5lc3Mocix0KXt2YXIgbj1jb252ZXJ0KFwiaHNsXCIsdCk7cmV0dXJuIG4ubCs9cixuLmw8MD9uLmw9MDpuLmw+MTAwJiYobi5sPTEwMCksbWFrZUNvbG91ck9iamVjdChuKX1mdW5jdGlvbiBjb21wbGVtZW50YXJ5KHIpe3ZhciB0PWNvbnZlcnQoXCJoc2xcIixyKTtyZXR1cm4gdC5oPSh0LmgrMTgwKSUzNjAsbWFrZUNvbG91ck9iamVjdCh0KX1mdW5jdGlvbiBjb250cmFzdChyLHQpe3ZhciBuPWNvbnZlcnQoXCJyZ2JcIix0KTtyZXR1cm4gbi5yPTI1NSooKG4uci8yNTUtLjUpKnIrLjUpLG4ucjwwP24ucj0wOm4ucj4yNTUmJihuLnI9MjU1KSxuLmc9MjU1Kigobi5nLzI1NS0uNSkqcisuNSksbi5nPDA/bi5nPTA6bi5nPjI1NSYmKG4uZz0yNTUpLG4uYj0yNTUqKChuLmIvMjU1LS41KSpyKy41KSxuLmI8MD9uLmI9MDpuLmI+MjU1JiYobi5iPTI1NSksbWFrZUNvbG91ck9iamVjdChuKX1mdW5jdGlvbiBjb250cmFzdFJhdGlvKHIpe3ZhciB0PWNvbnZlcnQoXCJyZ2JcIixyKTtyZXR1cm4gdD0oMjk5KnQucis1ODcqdC5nKzExNCp0LmIpLzFlMz49MTI4P3tyOjAsZzowLGI6MH06e3I6MjU1LGc6MjU1LGI6MjU1fSxtYWtlQ29sb3VyT2JqZWN0KHQpfWZ1bmN0aW9uIGRpZmZlcmVuY2Uocix0LG4sZSl7bj1ufHwxLGU9ZXx8MTt2YXIgbz1jb252ZXJ0KFwiY2llbGFiXCIsciksdT1jb252ZXJ0KFwiY2llbGFiXCIsdCksYT1NYXRoLnNxcnQoTWF0aC5wb3coby5hLDIpK01hdGgucG93KG8uYiwyKSksYz1hLU1hdGguc3FydChNYXRoLnBvdyh1LmEsMikrTWF0aC5wb3codS5iLDIpKSxpPW8uTC11Lkwscz1vLmEtdS5hLGw9by5iLXUuYixoPU1hdGguc3FydChNYXRoLnBvdyhzLDIpK01hdGgucG93KGwsMiktTWF0aC5wb3coYywyKSksZj1vLkw8MTY/LjUxMTouMDQwOTc1Km8uTC8oMS4wMTc2NSpvLkwpLHY9LjA2MzgqYS8oMS4wMTMxKmEpLGI9TWF0aC5hdGFuMihvLmIsby5hKSxnPWI+PTA/YjpiKzM2MCxwPWc+PTE2NCYmZzw9MzQ1Py41NitNYXRoLmFicyguMipNYXRoLmNvcyh0b1JhZGlhbihnKzE2OCkpKTouMzYrTWF0aC5hYnMoLjQqTWF0aC5jb3ModG9SYWRpYW4oZyszNSkpKSxtPU1hdGgucG93KGEsNCkvKE1hdGgucG93KGEsNCkrMTkwMCksZD12KihtKnArMS1tKSxZPU1hdGgucG93KGkvKG4qZiksMiksTT1NYXRoLnBvdyhjLyhlKnYpLDIpLHk9TWF0aC5wb3coaC9kLDIpO3JldHVybiBNYXRoLnNxcnQoWStNK3kpfWZ1bmN0aW9uIHNsb3BlTW9kKHIsdCl7cmV0dXJuIHI+Mip0P3Nsb3BlTW9kKHItMip0LHQpOnI+dD8yKnQtcjpyPDA/c2xvcGVNb2QocisyKnQsdCk6cn1mdW5jdGlvbiBmYWRlKHIsdCxuKXt2YXIgZT1jb252ZXJ0KFwicmdiXCIsdCksbz1jb252ZXJ0KFwicmdiXCIsbiksdT1bZV07ci09MTtmb3IodmFyIGE9KG8uci1lLnIpL3IsYz0oby5nLWUuZykvcixpPShvLmItZS5iKS9yLHM9e3I6ZS5yLGc6ZS5nLGI6ZS5ifSxsPTA7bDxyLTE7bCsrKXMucj1zbG9wZU1vZChzLnIrYSwyNTUpLHMuZz1zbG9wZU1vZChzLmcrYywyNTUpLHMuYj1zbG9wZU1vZChzLmIraSwyNTUpLHUucHVzaCh7cjpzLnIsZzpzLmcsYjpzLmJ9KTtyZXR1cm4gdS5wdXNoKG8pLG1ha2VDb2xvdXJPYmplY3QodSl9ZnVuY3Rpb24gZ3JleXNjYWxlKHIpe3ZhciB0PWNvbnZlcnQoXCJyZ2JcIixyKSxuPSh0LnIrdC5nK3QuYikvMztyZXR1cm4gdD17cjpuLGc6bixiOm59LG1ha2VDb2xvdXJPYmplY3QodCl9ZnVuY3Rpb24gaHVlKHIsdCl7dmFyIG49Y29udmVydChcImhzbFwiLHQpO3JldHVybiBuLmg9bmVnYXRpdmVNb2R1bG8obi5oK3IsMzYwKSxtYWtlQ29sb3VyT2JqZWN0KG4pfWZ1bmN0aW9uIGludmVydChyKXt2YXIgdD1jb252ZXJ0KFwicmdiXCIscik7cmV0dXJuIHQucj1uZWdhdGl2ZU1vZHVsbygyNTUtdC5yLDI1NSksdC5nPW5lZ2F0aXZlTW9kdWxvKDI1NS10LmcsMjU1KSx0LmI9bmVnYXRpdmVNb2R1bG8oMjU1LXQuYiwyNTUpLG1ha2VDb2xvdXJPYmplY3QodCl9ZnVuY3Rpb24gaW52ZXJ0TGlnaHRuZXNzKHIpe3ZhciB0PWNvbnZlcnQoXCJoc2xcIixyKTtyZXR1cm4gdC5sPTEwMC10LmwsbWFrZUNvbG91ck9iamVjdCh0KX1mdW5jdGlvbiBtaWQocix0KXt2YXIgbj1jb252ZXJ0KFwiaHNsXCIsciksZT1jb252ZXJ0KFwiaHNsXCIsdCk7cmV0dXJuIG1ha2VDb2xvdXJPYmplY3Qoe2g6KG4uaCtlLmgpLzIsczoobi5zK2UucykvMixsOihuLmwrZS5sKS8yfSl9ZnVuY3Rpb24gbXVsdGlwbHkocix0KXt2YXIgbj1jb252ZXJ0KFwiaHNsXCIsciksZT1jb252ZXJ0KFwiaHNsXCIsdCksbz17aDpuLmgsczpuLnMsbDpuLmwvMTAwKihlLmwvMTAwKSoxMDB9O3JldHVybiBvLmw9by5sPjEwMD8xMDA6by5sLG8ubD1vLmw8MD8wOm8ubCxtYWtlQ29sb3VyT2JqZWN0KG8pfWZ1bmN0aW9uIHNhdHVyYXRpb24ocix0KXt2YXIgbj1jb252ZXJ0KFwiaHNsXCIsdCk7cmV0dXJuIG4ucys9cixuLnM8MD9uLnM9MDpuLnM+MTAwJiYobi5zPTEwMCksbWFrZUNvbG91ck9iamVjdChuKX1mdW5jdGlvbiBzZXBpYShyKXt2YXIgdD1jb252ZXJ0KFwicmdiXCIsciksbj17fTtyZXR1cm4gbi5yPS4zOTMqdC5yKy43NjkqdC5nKy4xODkqdC5iLG4uZz0uMzQ5KnQucisuNjg2KnQuZysuMTY4KnQuYixuLmI9LjI3Mip0LnIrLjUzNCp0LmcrLjEzMSp0LmIsbWFrZUNvbG91ck9iamVjdChuKX1mdW5jdGlvbiBzaGFkZShyLHQpe3ZhciBuPWNvbnZlcnQoXCJoc3ZcIix0KTtyZXR1cm4gY29uc29sZS5sb2cobiksbi52Kz1yLG4udjwwP24udj0wOm4udj4xMDAmJihuLnY9MTAwKSxjb25zb2xlLmxvZyhuKSxtYWtlQ29sb3VyT2JqZWN0KG4pfWZ1bmN0aW9uIHRlbXBlcmF0dXJlKHIpe3ZhciB0PWNvbnZlcnQoXCJ4eVlcIixyKSxuPSh0LngtLjMzMikvKHQueS0uMTg1OCk7cmV0dXJuLTQ0OSpNYXRoLnBvdyhuLDMpKzM1MjUqTWF0aC5wb3cobiwyKS02ODIzLjMqbis1NTIwLjMzfWZ1bmN0aW9uIHRldHJhZChyKXtmb3IodmFyIHQ9Y29udmVydChcImhzbFwiLHIpLG49W3toOnQuaCxzOnQucyxsOnQubH1dLGU9MDtlPDM7ZSsrKXQuaD0odC5oKzkwKSUzNjAsbi5wdXNoKHtoOnQuaCxzOnQucyxsOnQubH0pO3JldHVybiBtYWtlQ29sb3VyT2JqZWN0KG4pfWZ1bmN0aW9uIHRyaWFkKHIpe2Zvcih2YXIgdD1jb252ZXJ0KFwiaHNsXCIsciksbj1be2g6dC5oLHM6dC5zLGw6dC5sfV0sZT0wO2U8MjtlKyspdC5oPSh0LmgrMTIwKSUzNjAsbi5wdXNoKHtoOnQuaCxzOnQucyxsOnQubH0pO3JldHVybiBtYWtlQ29sb3VyT2JqZWN0KG4pfWZ1bmN0aW9uIGNvbXBsZW1lbnRhcnkkMShyKXt2YXIgdD1jb252ZXJ0KFwiaHNsdXZcIixyKTtyZXR1cm4gdC5odT0odC5odSsxODApJTM2MCxtYWtlQ29sb3VyT2JqZWN0KHQpfWZ1bmN0aW9uIHRyaWFkJDEocil7Zm9yKHZhciB0PWNvbnZlcnQoXCJoc2x1dlwiLHIpLG49W3todTp0Lmh1LHM6dC5zLGw6dC5sfV0sZT0wO2U8MjtlKyspdC5odT0odC5odSsxMjApJTM2MCxuLnB1c2goe2g6dC5odSxzOnQucyxsOnQubH0pO3JldHVybiBtYWtlQ29sb3VyT2JqZWN0KG4pfWZ1bmN0aW9uIHRldHJhZCQxKHIpe2Zvcih2YXIgdD1jb252ZXJ0KFwiaHNsdXZcIixyKSxuPVt7aHU6dC5odSxzOnQucyxsOnQubH1dLGU9MDtlPDM7ZSsrKXQuaHU9KHQuaHUrOTApJTM2MCxuLnB1c2goe2g6dC5odSxzOnQucyxsOnQubH0pO3JldHVybiBtYWtlQ29sb3VyT2JqZWN0KG4pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBJTExVTUlOQU5UUz17QTp7WDoxLjA5ODUqMTAwLFk6MTAwLFo6MzUuNTg1fSxCOntYOjk5LjA3MixZOjEwMCxaOjg1LjIyM30sQzp7WDo5OC4wNzQsWToxMDAsWjoxMTguMjMyfSxENTA6e1g6OTYuNDIyLFk6MTAwLFo6ODIuNTIxfSxENTU6e1g6OTUuNjgyLFk6MTAwLFo6OTIuMTQ5fSxENjU6e1g6OTUuMDQ3LFk6MTAwLFo6MTA4Ljg4M30sRDc1OntYOjk0Ljk3MixZOjEwMCxaOjEyMi42Mzh9LEU6e1g6MTAwLFk6MTAwLFo6MTAwfSxGMjp7WDouOTkxODYqMTAwLFk6MTAwLFo6NjcuMzkzfSxGNzp7WDo5NS4wNDEsWToxMDAsWjoxMDguNzQ3fSxGMTE6e1g6MS4wMDk2MioxMDAsWToxMDAsWjo2NC4zNX19LFRSQU5TRk9STVM9e0JSQURGT1JEOltbLjg5NTEsLjI2NjQsLS4xNjE0XSxbLS43NTAyLDEuNzEzNSwuMDM2N10sWy4wMzg5LC0uMDY4NSwxLjAyOTZdXSxJTlZFUlNFX0JSQURGT1JEOltbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3XSxbLjQzMjMwNTMsLjUxODM2MDMsLjA0OTI5MTJdLFstLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddXSxTUkdCX1hZWjpbWy40MTI0LC4zNTc2LC4xODA1XSxbLjIxMjYsLjcxNTIsLjA3MjJdLFsuMDE5MywuMTE5MiwuOTUwNV1dLElOVkVSU0VfU1JHQl9YWVo6W1szLjI0MDYsLTEuNTM3MiwtLjQ5ODZdLFstLjk2ODksMS44NzU4LC4wNDE1XSxbLjA1NTcsLS4yMDQsMS4wNTddXX0sY29udGFpbnM9ZnVuY3Rpb24ocix0KXt2YXIgbj1uZXcgU2V0KE9iamVjdC5rZXlzKHIpKTtyZXR1cm4gdC5ldmVyeShmdW5jdGlvbihyKXtyZXR1cm4gbi5oYXMocil9KX0sc3RyaW5nU3RhcnRzV2l0aD1mdW5jdGlvbihyLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiByJiZyLnNsaWNlKDAsdC5sZW5ndGgpPT09dH0sdGVzdENvbG9yVHlwZT17aGV4OmZ1bmN0aW9uKHIpe3JldHVybiBzdHJpbmdTdGFydHNXaXRoKHIsXCIjXCIpfSxyZ2I6ZnVuY3Rpb24ocil7cmV0dXJuIGNvbnRhaW5zKHIsW1wiclwiLFwiZ1wiLFwiYlwiXSl9LGNzc3JnYjpmdW5jdGlvbihyKXtyZXR1cm4gc3RyaW5nU3RhcnRzV2l0aChyLFwicmdiKFwiKX0saHNsOmZ1bmN0aW9uKHIpe3JldHVybiBjb250YWlucyhyLFtcImhcIixcInNcIixcImxcIl0pfSxjc3Noc2w6ZnVuY3Rpb24ocil7cmV0dXJuIHN0cmluZ1N0YXJ0c1dpdGgocixcImhzbChcIil9LGhzdjpmdW5jdGlvbihyKXtyZXR1cm4gY29udGFpbnMocixbXCJoXCIsXCJzXCIsXCJ2XCJdKX0sY215azpmdW5jdGlvbihyKXtyZXR1cm4gY29udGFpbnMocixbXCJjXCIsXCJtXCIsXCJ5XCIsXCJrXCJdKX0seWlxOmZ1bmN0aW9uKHIpe3JldHVybiBjb250YWlucyhyLFtcInlcIixcImlcIixcInFcIl0pfSxYWVo6ZnVuY3Rpb24ocil7cmV0dXJuIGNvbnRhaW5zKHIsW1wiWFwiLFwiWVwiLFwiWlwiXSl9LHh5WTpmdW5jdGlvbihyKXtyZXR1cm4gY29udGFpbnMocixbXCJ4XCIsXCJ5XCIsXCJZXCJdKX0sbG1zOmZ1bmN0aW9uKHIpe3JldHVybiBjb250YWlucyhyLFtcInJob1wiLFwiZ2FtbWFcIixcImJldGFcIl0pfSxjaWVsYWI6ZnVuY3Rpb24ocil7cmV0dXJuIGNvbnRhaW5zKHIsW1wiTFwiLFwiYVwiLFwiYlwiXSl9LGNpZWx1djpmdW5jdGlvbihyKXtyZXR1cm4gY29udGFpbnMocixbXCJMXCIsXCJ1XCIsXCJ2XCJdKX0sY2llbGNoOmZ1bmN0aW9uKHIpe3JldHVybiBjb250YWlucyhyLFtcIkxcIixcIkNcIixcImhcIl0pfSxoc2x1djpmdW5jdGlvbihyKXtyZXR1cm4gY29udGFpbnMocixbXCJodVwiLFwic1wiLFwibFwiXSl9fSx0eXBlcz1PYmplY3Qua2V5cyh0ZXN0Q29sb3JUeXBlKSxlcHNpbG9uPS4wMDg4NTYsa2FwcGE9OTAzLjMsd2hpdGU9Z2V0SWxsdW1pbmFudChcIkQ2NVwiKSx0b1I9ZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KHIsMyk+ZXBzaWxvbj9NYXRoLnBvdyhyLDMpOigxMTYqci0xNikva2FwcGF9LGNpZWxhYj17WFlaOmZ1bmN0aW9uKHIpe3ZhciB0PShyLkwrMTYpLzExNixuPXIuYS81MDArdCxlPXQtci5iLzIwMCxvPXRvUihuKSx1PXRvUihlKSxhPXIuTD5rYXBwYSplcHNpbG9uP01hdGgucG93KHQsMyk6ci5ML2thcHBhO3JldHVybntYOm8qd2hpdGUuWCxZOmEqd2hpdGUuWSxaOnUqd2hpdGUuWn19fSxjaWVsY2g9e2NpZWx1djpmdW5jdGlvbihyKXt2YXIgdD10b1JhZGlhbihyLmgpLG49ci5DKk1hdGguY29zKHQpLGU9ci5DKk1hdGguc2luKHQpO3JldHVybntMOnIuTCx1Om4sdjplfX0saHNsdXY6ZnVuY3Rpb24ocil7aWYoci5MPjk5Ljk5OTk5OTkpcmV0dXJue2h1OnIuaCxzOjAsbDoxMDB9O2lmKHIuTDwxZS04KXJldHVybntodTpyLmgsczowLGw6MH07Zm9yKHZhciB0PShyLkwrMTYpLzE1NjA4OTYsbj10Pi4wMDg4NTY/dDpyLkwvOTAzLjMsZT1nZXRUcmFuc2Zvcm0oXCJJTlZFUlNFX1NSR0JfWFlaXCIpLG89W10sdT0wO3U8Mzt1KyspZm9yKHZhciBhPWVbdV1bMF0sYz1lW3VdWzFdLGk9ZVt1XVsyXSxzPTA7czwyO3MrKyl7dmFyIGw9KDI4NDUxNyphLTk0ODM5KmkpKm4saD0oODM4NDIyKmkrNzY5ODYwKmMrNzMxNzE4KmEpKnIuTCpuLTc2OTg2MCpzKnIuTCxmPSg2MzIyNjAqaS0xMjY0NTIqYykqbisxMjY0NTIqcztvLnB1c2goe206bC9mLGI6aC9mfSl9dmFyIHY9TnVtYmVyLk1BWF9WQUxVRSxiPXRvUmFkaWFuKHIuaCk7by5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciB0PXIuYi8oTWF0aC5zaW4oYiktci5tKk1hdGguY29zKGIpKTt0Pj0wJiYodj1NYXRoLm1pbih2LHQpKX0pO3ZhciBnPXY7cmV0dXJue2h1OnIuaCxzOnIuQy9nKjEwMCxsOnIuTH19fSxjaWVsdXY9e1hZWjpmdW5jdGlvbihyKXt2YXIgdD1nZXRJbGx1bWluYW50KFwiRDY1XCIpLG49ZnVuY3Rpb24ocil7cmV0dXJuIDQqci5YLyhyLlgrMTUqci5ZKzMqci5aKX0odCksZT1mdW5jdGlvbihyKXtyZXR1cm4gOSpyLlkvKHIuWCsxNSpyLlkrMypyLlopfSh0KSxvPTEvMyooNTIqci5MLyhyLnUrMTMqci5MKm4pLTEpLHU9ci5MPjkwMy4zKi4wMDg4NTY/TWF0aC5wb3coKHIuTCsxNikvMTE2LDMpOnIuTC85MDMuMyxhPS01KnUsYz0odSooMzkqci5MLyhyLnYrMTMqci5MKmUpLTUpLWEpLyhvLSAtMS8zKTtyZXR1cm57WDoxMDAqYyxZOjEwMCp1LFo6MTAwKihjKm8rYSl9fSxjaWVsY2g6ZnVuY3Rpb24ocil7dmFyIHQ9TWF0aC5zcXJ0KE1hdGgucG93KHIudSwyKStNYXRoLnBvdyhyLnYsMikpLG49TWF0aC5hdGFuMihyLnYsci51KTtyZXR1cm4gbjwwJiYobis9MipNYXRoLlBJKSxuPXRvRGVncmVlKG4pLHtMOnIuTCxDOnQsaDpufX19LHJnYj1mdW5jdGlvbihyKXtyZXR1cm57cjoyNTUqKDEtci5jKSooMS1yLmspLGc6MjU1KigxLXIubSkqKDEtci5rKSxiOjI1NSooMS1yLnkpKigxLXIuayl9fSxjbXlrPXtyZ2I6cmdiLGNzc3JnYjpmdW5jdGlvbihyKXt2YXIgdD1yZ2Iociksbj10LnIsZT10Lmcsbz10LmI7cmV0dXJuXCJyZ2IoXCIrTWF0aC5yb3VuZChuKStcIixcIitNYXRoLnJvdW5kKGUpK1wiLFwiK01hdGgucm91bmQobykrXCIpXCJ9fSxjc3Noc2w9e2hzbDpmdW5jdGlvbihyKXt2YXIgdD1yLnJlcGxhY2UoLyhoc2xcXCh8XFwpfCV8W1xcc10qKS9nLFwiXCIpLnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHBhcnNlSW50KHIsMTApfSk7cmV0dXJue2g6dFswXSxzOnRbMV0sbDp0WzJdfX19LGNzc3JnYj17cmdiOmZ1bmN0aW9uKHIpe3ZhciB0PXIucmVwbGFjZSgvKChyZ2JcXCh8XFwpKXxbXFxzXSopL2csXCJcIikuc3BsaXQoXCIsXCIpLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gcGFyc2VJbnQociwxMCl9KTtyZXR1cm57cjp0WzBdLGc6dFsxXSxiOnRbMl19fX0saGV4PXtyZ2I6ZnVuY3Rpb24ocil7dmFyIHQ9ci5yZXBsYWNlKFwiI1wiLFwiXCIpLm1hdGNoKC8uezJ9L2cpLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gcGFyc2VJbnQociwxNil9KTtyZXR1cm57cjp0WzBdLGc6dFsxXSxiOnRbMl19fX0saHNsPXtyZ2I6ZnVuY3Rpb24ocil7aWYoMD09PXIucyl7dmFyIHQ9ci5sLzEwMCoyNTU7cmV0dXJue3I6dCxnOnQsYjp0fX12YXIgbixlLG87bj1yLmw+PTUwP3IubC8xMDArci5zLzEwMC1yLmwvMTAwKihyLnMvMTAwKTpyLmwvMTAwKigxK3Iucy8xMDApLGU9ci5sLzEwMCoyLW47dmFyIHUsYSxjLGk9KChvPXIuaC8zNjApKy4zMzMpJTEscz1vLGw9bmVnYXRpdmVNb2R1bG8oby0uMzMzLDEpO3JldHVybiB1PTYqaTwxP2UrNioobi1lKSppOjIqaTwxP246MyppPDI/ZSs2KiguNjY2LWkpKihuLWUpOmUsYT02KnM8MT9lKzYqKG4tZSkqczoyKnM8MT9uOjMqczwyP2UrNiooLjY2Ni1zKSoobi1lKTplLGM9NipsPDE/ZSs2KihuLWUpKmw6MipsPDE/bjozKmw8Mj9lKzYqKC42NjYtbCkqKG4tZSk6ZSx1PDAmJih1PTApLGE8MCYmKGE9MCksYzwwJiYoYz0wKSx7cjoyNTUqdSxnOjI1NSphLGI6MjU1KmN9fSxjc3Noc2w6ZnVuY3Rpb24ocil7cmV0dXJuXCJoc2woXCIrTWF0aC5yb3VuZChyLmgpK1wiLFwiK01hdGgucm91bmQoci5zKStcIiUsXCIrTWF0aC5yb3VuZChyLmwpK1wiJSlcIn0saHN2OmZ1bmN0aW9uKHIpe3ZhciB0PU9iamVjdC5hc3NpZ24oe30scix7czpyLnMvMTAwLGw6ci5sLzEwMH0pLG49dC5zKih0Lmw8LjU/dC5sOjEtdC5sKTtyZXR1cm57aDp0LmgsczoxMDAqKDIqbi8odC5sK24pKSx2OjEwMCoodC5sK24pfX19LGhzbHV2PXtjaWVsY2g6ZnVuY3Rpb24ocil7aWYoci5MPjk5Ljk5OTk5OTkpcmV0dXJue0w6MTAwLEM6MCxoOnIuaHV9O2lmKHIuTDwxZS04KXJldHVybntMOjAsQzowLGg6ci5odX07Zm9yKHZhciB0PShyLmwrMTYpLzE1NjA4OTYsbj10Pi4wMDg4NTY/dDpyLmwvOTAzLjMsZT1nZXRUcmFuc2Zvcm0oXCJJTlZFUlNFX1NSR0JfWFlaXCIpLG89W10sdT0wO3U8Mzt1KyspZm9yKHZhciBhPWVbdV1bMF0sYz1lW3VdWzFdLGk9ZVt1XVsyXSxzPTA7czwyO3MrKyl7dmFyIGw9KDI4NDUxNyphLTk0ODM5KmkpKm4saD0oODM4NDIyKmkrNzY5ODYwKmMrNzMxNzE4KmEpKnIubCpuLTc2OTg2MCpzKnIubCxmPSg2MzIyNjAqaS0xMjY0NTIqYykqbisxMjY0NTIqcztvLnB1c2goe206bC9mLGI6aC9mfSl9dmFyIHY9TnVtYmVyLk1BWF9WQUxVRSxiPXRvUmFkaWFuKHIuaHUpO28uZm9yRWFjaChmdW5jdGlvbihyKXt2YXIgdD1yLmIvKE1hdGguc2luKGIpLXIubSpNYXRoLmNvcyhiKSk7dD49MCYmKHY9TWF0aC5taW4odix0KSl9KTt2YXIgZz12O3JldHVybntMOnIubCxDOmcvMTAwKnIucyxoOnIuaHV9fX0saHN2PXtoc2w6ZnVuY3Rpb24ocil7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxyLHtoOnIuaC8zNjAsczpyLnMvMTAwLHY6ci52LzEwMH0pO3JldHVybntoOjM2MCp0LmgsczoxMDAqKCgyLXQucykqdC52PDE/dC5zKnQudi8oKDItdC5zKSp0LnYpOnQucyp0LnYvKDItKDItdC5zKSp0LnYpKSxsOjEwMCooKDItdC5zKSp0LnYvMil9fX0sbG1zPXtYWVo6ZnVuY3Rpb24ocil7dmFyIHQ9W3IucmhvLHIuZ2FtbWEsci5iZXRhXSxuPWdldFRyYW5zZm9ybShcIklOVkVSU0VfQlJBREZPUkRcIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJbZV0qbit0fSwwKX0pO3JldHVybntYOjEwMCpuWzBdLFk6MTAwKm5bMV0sWjoxMDAqblsyXX19fSxib3VuZGVkMjU1PWZ1bmN0aW9uKHIpe3JldHVybiBib3VuZGVkKHIsWzAsMjU1XSl9LHNsaWNlZFRvQXJyYXk9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHIsdCl7dmFyIG49W10sZT0hMCxvPSExLHU9dm9pZCAwO3RyeXtmb3IodmFyIGEsYz1yW1N5bWJvbC5pdGVyYXRvcl0oKTshKGU9KGE9Yy5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGEudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO2U9ITApO31jYXRjaChyKXtvPSEwLHU9cn1maW5hbGx5e3RyeXshZSYmYy5yZXR1cm4mJmMucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IHV9fXJldHVybiBufXJldHVybiBmdW5jdGlvbih0LG4pe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQ7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gcih0LG4pO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfX0oKSxlcHNpbG9uJDE9LjAwODg1NixrYXBwYSQxPTkwMy4zLHdoaXRlJDE9Z2V0SWxsdW1pbmFudChcIkQ2NVwiKSxmcm9tWFlaPXtyZ2I6ZnVuY3Rpb24ocil7dmFyIHQ9W3IuWCxyLlksci5aXS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHIvMTAwfSksbj1nZXRUcmFuc2Zvcm0oXCJJTlZFUlNFX1NSR0JfWFlaXCIpLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxuLGUpe3JldHVybiByW2VdKm4rdH0sMCl9KS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHI8PS4wMDMxMzA4PzEyLjkyKnI6MS4wNTUqTWF0aC5wb3cociwxLzIuNCktLjA1NX0pLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gMjU1KnJ9KSxlPXNsaWNlZFRvQXJyYXkobiwzKTtyZXR1cm4gYm91bmRlZFJnYih7cjplWzBdLGc6ZVsxXSxiOmVbMl19KX0sbG1zOmZ1bmN0aW9uKHIpe3ZhciB0PVtyLlgsci5ZLHIuWl0ubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLzEwMH0pLG49Z2V0VHJhbnNmb3JtKFwiQlJBREZPUkRcIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJbZV0qbit0fSwwKX0pO3JldHVybntyaG86blswXSxnYW1tYTpuWzFdLGJldGE6blsyXX19LGNpZWxhYjpmdW5jdGlvbihyKXt2YXIgdD1yLlgvd2hpdGUkMS5YLG49ci5ZL3doaXRlJDEuWSxlPXIuWi93aGl0ZSQxLlosbz1mdW5jdGlvbihyKXtyZXR1cm4gcj5lcHNpbG9uJDE/Y3ViZVJvb3Qocik6KGthcHBhJDEqcisxNikvMTE2fSx1PW8odCksYT1vKG4pO3JldHVybntMOjExNiphLTE2LGE6NTAwKih1LWEpLGI6MjAwKihhLW8oZSkpfX0sY2llbHV2OmZ1bmN0aW9uKHIpe3ZhciB0PXIuWS93aGl0ZSQxLlksbj10PmVwc2lsb24kMT8xMTYqY3ViZVJvb3QodCktMTY6a2FwcGEkMSp0LGU9ZnVuY3Rpb24ocil7cmV0dXJuIDQqci5YLyhyLlgrMTUqci5ZKzMqci5aKX0sbz1mdW5jdGlvbihyKXtyZXR1cm4gOSpyLlkvKHIuWCsxNSpyLlkrMypyLlopfTtyZXR1cm57TDpuLHU6MTMqbiooZShyKS1lKHdoaXRlJDEpKSx2OjEzKm4qKG8ociktbyh3aGl0ZSQxKSl9fSx4eVk6ZnVuY3Rpb24ocil7cmV0dXJue3g6ci5YLyhyLlgrci5ZK3IuWikseTpyLlkvKHIuWCtyLlkrci5aKSxZOnIuWX19fSxmcm9tWFlaVG9sbXM9ZnJvbVhZWi5sbXMsZnJvbVhZWlRvY2llbGFiPWZyb21YWVouY2llbGFiLGZyb21YWVpUb2NpZWx1dj1mcm9tWFlaLmNpZWx1dixmcm9tWFlaVG94eVk9ZnJvbVhZWi54eVksaHNsJDE9ZnVuY3Rpb24ocil7dmFyIHQsbixlPXIuci8yNTUsbz1yLmcvMjU1LHU9ci5iLzI1NSxhPVtlLG8sdV0uc29ydCgpLGM9KGFbMF0rYVsyXSkvMioxMDA7cmV0dXJuIGFbMF09PT1hWzJdPyh0PTAsbj0wKToodD1jPj01MD8oYVsyXS1hWzBdKS8oMi1hWzJdLWFbMF0pKjEwMDooYVsyXS1hWzBdKS8oYVsyXSthWzBdKSoxMDAsKG49YVsyXT09PWU/KG8tdSkvKGFbMl0tYVswXSkqNjA6YVsyXT09PW8/NjAqKDIrKHUtZSkvKGFbMl0tYVswXSkpOjYwKig0KyhlLW8pLyhhWzJdLWFbMF0pKSk8MD9uKz0zNjA6bj4zNjAmJihuJT0zNjApKSx7aDpuLHM6dCxsOmN9fSxjaWVsdXYkMT1mdW5jdGlvbihyKXtyZXR1cm4gZnJvbVhZWlRvY2llbHV2KFhZWihyKSl9LFhZWj1mdW5jdGlvbihyKXt2YXIgdD1bci5yLHIuZyxyLmJdLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gci8yNTV9KS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHI8PS4wNDA0NT9yLzEyLjkyOk1hdGgucG93KChyKy4wNTUpLzEuMDU1LDIuNCl9KSxuPWdldFRyYW5zZm9ybShcIlNSR0JfWFlaXCIpLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxuLGUpe3JldHVybiByW2VdKm4rdH0sMCl9KS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIDEwMCpyfSksZT1zbGljZWRUb0FycmF5KG4sMyk7cmV0dXJue1g6ZVswXSxZOmVbMV0sWjplWzJdfX0scmdiJDE9e2hleDpmdW5jdGlvbihyKXt2YXIgdD1NYXRoLnJvdW5kKHIucikudG9TdHJpbmcoMTYpOzE9PT10Lmxlbmd0aCYmKHQ9XCIwXCIrdCk7dmFyIG49TWF0aC5yb3VuZChyLmcpLnRvU3RyaW5nKDE2KTsxPT09bi5sZW5ndGgmJihuPVwiMFwiK24pO3ZhciBlPU1hdGgucm91bmQoci5iKS50b1N0cmluZygxNik7cmV0dXJuIDE9PT1lLmxlbmd0aCYmKGU9XCIwXCIrZSksXCIjXCIrdCtuK2V9LGNzc3JnYjpmdW5jdGlvbihyKXtyZXR1cm5cInJnYihcIitNYXRoLnJvdW5kKHIucikrXCIsXCIrTWF0aC5yb3VuZChyLmcpK1wiLFwiK01hdGgucm91bmQoci5iKStcIilcIn0saHNsOmhzbCQxLGNzc2hzbDpmdW5jdGlvbihyKXt2YXIgdD1oc2wkMShyKSxuPXQuaCxlPXQucyxvPXQubDtyZXR1cm5cImhzbChcIitNYXRoLnJvdW5kKG4pK1wiLFwiK01hdGgucm91bmQoZSkrXCIlLFwiK01hdGgucm91bmQobykrXCIlKVwifSxjbXlrOmZ1bmN0aW9uKHIpe3ZhciB0PXIuci8yNTUsbj1yLmcvMjU1LGU9ci5iLzI1NSxvPTEtTWF0aC5tYXgodCxuLGUpO3JldHVybiAxIT09bz97YzooMS10LW8pLygxLW8pLG06KDEtbi1vKS8oMS1vKSx5OigxLWUtbykvKDEtbyksazpvfTp7YzowLG06MCx5OjAsazpvfX0seWlxOmZ1bmN0aW9uKHIpe3ZhciB0PXIuci8yNTUqLjI5OStyLmcvMjU1Ki41ODcrci5iLzI1NSouMTE0LG49ci5yLzI1NSouNTk2K3IuZy8yNTUqLS4yNzQrci5iLzI1NSotLjMyMixlPXIuci8yNTUqLjIxMStyLmcvMjU1Ki0uNTIzK3IuYi8yNTUqLjMxMjtyZXR1cm4gbj1ib3VuZGVkKG4sWy0uNTk1NywuNTk1N10pLGU9Ym91bmRlZChlLFstLjUyMjYsLjUyMjZdKSx7eTp0LGk6bixxOmV9fSxYWVo6WFlaLGxtczpmdW5jdGlvbihyKXtyZXR1cm4gZnJvbVhZWlRvbG1zKFhZWihyKSl9LGNpZWxhYjpmdW5jdGlvbihyKXtyZXR1cm4gZnJvbVhZWlRvY2llbGFiKFhZWihyKSl9LGNpZWx1djpjaWVsdXYkMSx4eVk6ZnVuY3Rpb24ocil7cmV0dXJuIGZyb21YWVpUb3h5WShYWVoocikpfX0seHlZPXtYWVo6ZnVuY3Rpb24ocil7dmFyIHQ9ci54LG49ci55LGU9ci5ZO3JldHVybntYOmUvbip0LFk6ZSxaOmUvbiooMS10LW4pfX19LGJvdW5kPWZ1bmN0aW9uKHIpe3JldHVybiBib3VuZGVkKHIsWzAsMjU1XSl9LHlpcT17cmdiOmZ1bmN0aW9uKHIpe3ZhciB0PWJvdW5kZWQoci5pLFstLjU5NTcsLjU5NTddKSxuPWJvdW5kZWQoci5xLFstLjUyMjYsLjUyMjZdKTtyZXR1cm57cjoyNTUqYm91bmQoci55Ky45NTYqdCsuNjIxKm4pLGc6MjU1KmJvdW5kKHIueSstLjI3Mip0Ky0uNjQ3Km4pLGI6MjU1KmJvdW5kKHIueSstMS4xMDYqdCstMS43MDMqbil9fX0sY29udmVyc2lvbnM9T2JqZWN0LmZyZWV6ZSh7Y2llbGFiOmNpZWxhYixjaWVsY2g6Y2llbGNoLGNpZWx1djpjaWVsdXYsY215azpjbXlrLGNzc2hzbDpjc3Noc2wsY3NzcmdiOmNzc3JnYixoZXg6aGV4LGhzbDpoc2wsaHNsdXY6aHNsdXYsaHN2OmhzdixsbXM6bG1zLHJnYjpyZ2IkMSx4eVk6eHlZLFhZWjpmcm9tWFlaLHlpcTp5aXF9KSxjb252ZXJzaW9uU3RlcHM9e3JnYjp7ZGVmYXVsdDpcIlhZWlwiLGNzc2hzbDpcImhzbFwiLGhzdjpcImhzbFwifSxoZXg6XCJyZ2JcIixoc2w6XCJyZ2JcIixoc3Y6XCJoc2xcIixjc3Noc2w6XCJoc2xcIixjc3NyZ2I6XCJyZ2JcIixjbXlrOlwicmdiXCIsWFlaOntkZWZhdWx0OlwicmdiXCIsY2llbGNoOlwiY2llbHV2XCIsaHNsdXY6XCJjaWVsdXZcIn0seHlZOlwiWFlaXCIsbG1zOlwiWFlaXCIsY2llbHV2OntkZWZhdWx0OlwiWFlaXCIsaHNsdXY6XCJjaWVsY2hcIn0sY2llbGNoOlwiY2llbHV2XCIsY2llbGFiOlwiWFlaXCIseWlxOlwicmdiXCIsaHNsdXY6XCJjaWVsY2hcIn0sY29udmVydE5vdz1mdW5jdGlvbihyLHQsbil7cmV0dXJuIGNvbnZlcnNpb25zW3JdW3RdKG4pfSx0eXBlcyQxPU9iamVjdC5rZXlzKHRlc3RDb2xvclR5cGUpLGNvbnZlcnRBcnJheU9yQ29sb3VyPWZ1bmN0aW9uKHIsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGNvbnZlcnQocix0KX0pOmNvbnZlcnQocix0KX07ZXhwb3J0cy5hZGFwdD1hZGFwdCxleHBvcnRzLmFkamFjZW50PWFkamFjZW50LGV4cG9ydHMuYnJpZ2h0bmVzcz1icmlnaHRuZXNzLGV4cG9ydHMuY29tcGxlbWVudGFyeT1jb21wbGVtZW50YXJ5LGV4cG9ydHMuY29udHJhc3Q9Y29udHJhc3QsZXhwb3J0cy5jb250cmFzdFJhdGlvPWNvbnRyYXN0UmF0aW8sZXhwb3J0cy5jb252ZXJ0PW1ha2VDb2xvdXJPYmplY3QsZXhwb3J0cy5kaWZmZXJlbmNlPWRpZmZlcmVuY2UsZXhwb3J0cy5mYWRlPWZhZGUsZXhwb3J0cy5ncmV5c2NhbGU9Z3JleXNjYWxlLGV4cG9ydHMuaHVlPWh1ZSxleHBvcnRzLmludmVydD1pbnZlcnQsZXhwb3J0cy5pbnZlcnRMaWdodG5lc3M9aW52ZXJ0TGlnaHRuZXNzLGV4cG9ydHMubWlkPW1pZCxleHBvcnRzLm11bHRpcGx5PW11bHRpcGx5LGV4cG9ydHMuc2F0dXJhdGlvbj1zYXR1cmF0aW9uLGV4cG9ydHMuc2VwaWE9c2VwaWEsZXhwb3J0cy5zaGFkZT1zaGFkZSxleHBvcnRzLnRlbXBlcmF0dXJlPXRlbXBlcmF0dXJlLGV4cG9ydHMudGV0cmFkPXRldHJhZCxleHBvcnRzLnRyaWFkPXRyaWFkLGV4cG9ydHMudW5pZm9ybUNvbXBsZW1lbnRhcnk9Y29tcGxlbWVudGFyeSQxLGV4cG9ydHMudW5pZm9ybVRyaWFkPXRyaWFkJDEsZXhwb3J0cy51bmlmb3JtVGV0cmFkPXRldHJhZCQxO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/chromatism/dist/chromatism.cjs.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/click-outside-vue3/dist/v-click-outside.umd.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/click-outside-vue3/dist/v-click-outside.umd.js ***!
|
||
\*********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("!function(e,n){ true?module.exports=n():undefined}(this,function(){var e=\"__v-click-outside\",n=\"undefined\"!=typeof window,t=\"undefined\"!=typeof navigator,r=n&&(\"ontouchstart\"in window||t&&navigator.msMaxTouchPoints>0)?[\"touchstart\"]:[\"click\"],i=function(e){var n=e.event,t=e.handler;(0,e.middleware)(n)&&t(n)},a=function(n,t){var a=function(e){var n=\"function\"==typeof e;if(!n&&\"object\"!=typeof e)throw new Error(\"v-click-outside: Binding value must be a function or an object\");return{handler:n?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||r,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(t.value),o=a.handler,d=a.middleware,c=a.detectIframe,u=a.capture;if(a.isActive){if(n[e]=a.events.map(function(e){return{event:e,srcTarget:document.documentElement,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware,o=t.path||t.composedPath&&t.composedPath();(o?o.indexOf(n)<0:!n.contains(t.target))&&i({event:t,handler:r,middleware:a})}({el:n,event:e,handler:o,middleware:d})},capture:u}}),c){var l={event:\"blur\",srcTarget:window,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware;setTimeout(function(){var e=document.activeElement;e&&\"IFRAME\"===e.tagName&&!n.contains(e)&&i({event:t,handler:r,middleware:a})},0)}({el:n,event:e,handler:o,middleware:d})},capture:u};n[e]=[].concat(n[e],[l])}n[e].forEach(function(t){var r=t.event,i=t.srcTarget,a=t.handler;return setTimeout(function(){n[e]&&i.addEventListener(r,a,u)},0)})}},o=function(n){(n[e]||[]).forEach(function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)}),delete n[e]},d=n?{beforeMount:a,updated:function(e,n){var t=n.value,r=n.oldValue;JSON.stringify(t)!==JSON.stringify(r)&&(o(e),a(e,{value:t}))},unmounted:o}:{};return{install:function(e){e.directive(\"click-outside\",d)},directive:d}});\n//# sourceMappingURL=v-click-outside.umd.js.map\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xpY2stb3V0c2lkZS12dWUzL2Rpc3Qvdi1jbGljay1vdXRzaWRlLnVtZC5qcz84MjY0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsS0FBb0Qsb0JBQW9CLFNBQWdGLENBQUMsaUJBQWlCLDhMQUE4TCwwQkFBMEIsMEJBQTBCLGlCQUFpQixrQkFBa0IsMkJBQTJCLDRHQUE0RyxPQUFPLDJEQUEyRCxTQUFTLGdIQUFnSCxrRUFBa0UsZUFBZSxpQ0FBaUMsT0FBTywrREFBK0QsbUJBQW1CLDJGQUEyRiw2Q0FBNkMsK0JBQStCLEVBQUUsRUFBRSxvQ0FBb0MsRUFBRSxZQUFZLEtBQUssT0FBTyxrREFBa0QsbUJBQW1CLGdEQUFnRCxzQkFBc0IsNkJBQTZCLDRDQUE0QywrQkFBK0IsRUFBRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUUsWUFBWSx5QkFBeUIseUJBQXlCLHdDQUF3Qyw2QkFBNkIsZ0NBQWdDLElBQUksR0FBRyxlQUFlLCtCQUErQixvRUFBb0UsY0FBYyxNQUFNLG9DQUFvQywyQkFBMkIsa0RBQWtELFFBQVEsR0FBRyxhQUFhLElBQUksT0FBTyxvQkFBb0IsK0JBQStCLGNBQWM7QUFDMStEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2NsaWNrLW91dHNpZGUtdnVlMy9kaXN0L3YtY2xpY2stb3V0c2lkZS51bWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24oZSxuKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1uKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShuKTooZXx8c2VsZilbXCJ2LWNsaWNrLW91dHNpZGVcIl09bigpfSh0aGlzLGZ1bmN0aW9uKCl7dmFyIGU9XCJfX3YtY2xpY2stb3V0c2lkZVwiLG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyx0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBuYXZpZ2F0b3Iscj1uJiYoXCJvbnRvdWNoc3RhcnRcImluIHdpbmRvd3x8dCYmbmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHM+MCk/W1widG91Y2hzdGFydFwiXTpbXCJjbGlja1wiXSxpPWZ1bmN0aW9uKGUpe3ZhciBuPWUuZXZlbnQsdD1lLmhhbmRsZXI7KDAsZS5taWRkbGV3YXJlKShuKSYmdChuKX0sYT1mdW5jdGlvbihuLHQpe3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU7aWYoIW4mJlwib2JqZWN0XCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihcInYtY2xpY2stb3V0c2lkZTogQmluZGluZyB2YWx1ZSBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0XCIpO3JldHVybntoYW5kbGVyOm4/ZTplLmhhbmRsZXIsbWlkZGxld2FyZTplLm1pZGRsZXdhcmV8fGZ1bmN0aW9uKGUpe3JldHVybiBlfSxldmVudHM6ZS5ldmVudHN8fHIsaXNBY3RpdmU6ISghMT09PWUuaXNBY3RpdmUpLGRldGVjdElmcmFtZTohKCExPT09ZS5kZXRlY3RJZnJhbWUpLGNhcHR1cmU6Qm9vbGVhbihlLmNhcHR1cmUpfX0odC52YWx1ZSksbz1hLmhhbmRsZXIsZD1hLm1pZGRsZXdhcmUsYz1hLmRldGVjdElmcmFtZSx1PWEuY2FwdHVyZTtpZihhLmlzQWN0aXZlKXtpZihuW2VdPWEuZXZlbnRzLm1hcChmdW5jdGlvbihlKXtyZXR1cm57ZXZlbnQ6ZSxzcmNUYXJnZXQ6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGhhbmRsZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWUuZWwsdD1lLmV2ZW50LHI9ZS5oYW5kbGVyLGE9ZS5taWRkbGV3YXJlLG89dC5wYXRofHx0LmNvbXBvc2VkUGF0aCYmdC5jb21wb3NlZFBhdGgoKTsobz9vLmluZGV4T2Yobik8MDohbi5jb250YWlucyh0LnRhcmdldCkpJiZpKHtldmVudDp0LGhhbmRsZXI6cixtaWRkbGV3YXJlOmF9KX0oe2VsOm4sZXZlbnQ6ZSxoYW5kbGVyOm8sbWlkZGxld2FyZTpkfSl9LGNhcHR1cmU6dX19KSxjKXt2YXIgbD17ZXZlbnQ6XCJibHVyXCIsc3JjVGFyZ2V0OndpbmRvdyxoYW5kbGVyOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1lLmVsLHQ9ZS5ldmVudCxyPWUuaGFuZGxlcixhPWUubWlkZGxld2FyZTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtlJiZcIklGUkFNRVwiPT09ZS50YWdOYW1lJiYhbi5jb250YWlucyhlKSYmaSh7ZXZlbnQ6dCxoYW5kbGVyOnIsbWlkZGxld2FyZTphfSl9LDApfSh7ZWw6bixldmVudDplLGhhbmRsZXI6byxtaWRkbGV3YXJlOmR9KX0sY2FwdHVyZTp1fTtuW2VdPVtdLmNvbmNhdChuW2VdLFtsXSl9bltlXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPXQuZXZlbnQsaT10LnNyY1RhcmdldCxhPXQuaGFuZGxlcjtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe25bZV0mJmkuYWRkRXZlbnRMaXN0ZW5lcihyLGEsdSl9LDApfSl9fSxvPWZ1bmN0aW9uKG4peyhuW2VdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcmNUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLmV2ZW50LGUuaGFuZGxlcixlLmNhcHR1cmUpfSksZGVsZXRlIG5bZV19LGQ9bj97YmVmb3JlTW91bnQ6YSx1cGRhdGVkOmZ1bmN0aW9uKGUsbil7dmFyIHQ9bi52YWx1ZSxyPW4ub2xkVmFsdWU7SlNPTi5zdHJpbmdpZnkodCkhPT1KU09OLnN0cmluZ2lmeShyKSYmKG8oZSksYShlLHt2YWx1ZTp0fSkpfSx1bm1vdW50ZWQ6b306e307cmV0dXJue2luc3RhbGw6ZnVuY3Rpb24oZSl7ZS5kaXJlY3RpdmUoXCJjbGljay1vdXRzaWRlXCIsZCl9LGRpcmVjdGl2ZTpkfX0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9di1jbGljay1vdXRzaWRlLnVtZC5qcy5tYXBcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/click-outside-vue3/dist/v-click-outside.umd.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/css-loader/lib/css-base.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/css-loader/lib/css-base.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanM/MjM1MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGdCQUFnQjtBQUNuRCxJQUFJO0FBQ0o7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0JBQW9CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxjQUFjOztBQUVsRTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgbGlzdCA9IFtdO1xuXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cdFx0XHRpZihpdGVtWzJdKSB7XG5cdFx0XHRcdHJldHVybiBcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGNvbnRlbnQgKyBcIn1cIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdFx0fVxuXHRcdH0pLmpvaW4oXCJcIik7XG5cdH07XG5cblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3Rcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG5cdHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJztcblx0dmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXHRpZiAoIWNzc01hcHBpbmcpIHtcblx0XHRyZXR1cm4gY29udGVudDtcblx0fVxuXG5cdGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcblx0XHR2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuXHRcdFx0cmV0dXJuICcvKiMgc291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJ1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbignXFxuJyk7XG5cdH1cblxuXHRyZXR1cm4gW2NvbnRlbnRdLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gY29udmVydC1zb3VyY2UtbWFwIChNSVQpXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuXHR2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcblx0dmFyIGRhdGEgPSAnc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJyArIGJhc2U2NDtcblxuXHRyZXR1cm4gJy8qIyAnICsgZGF0YSArICcgKi8nO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/lib/css-base.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/custom-event-polyfill/polyfill.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/custom-event-polyfill/polyfill.js ***!
|
||
\********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {};\n params.bubbles = !!params.bubbles;\n params.cancelable = !!params.cancelable;\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3VzdG9tLWV2ZW50LXBvbHlmaWxsL3BvbHlmaWxsLmpzPzUzNzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDLG1CQUFtQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2N1c3RvbS1ldmVudC1wb2x5ZmlsbC9wb2x5ZmlsbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFBvbHlmaWxsIGZvciBjcmVhdGluZyBDdXN0b21FdmVudHMgb24gSUU5LzEwLzExXG5cbi8vIGNvZGUgcHVsbGVkIGZyb206XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZDR0b2NjaGluaS9jdXN0b21ldmVudC1wb2x5ZmlsbFxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0N1c3RvbUV2ZW50I1BvbHlmaWxsXG5cbihmdW5jdGlvbigpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICB2YXIgY2UgPSBuZXcgd2luZG93LkN1c3RvbUV2ZW50KCd0ZXN0JywgeyBjYW5jZWxhYmxlOiB0cnVlIH0pO1xuICAgIGNlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGNlLmRlZmF1bHRQcmV2ZW50ZWQgIT09IHRydWUpIHtcbiAgICAgIC8vIElFIGhhcyBwcm9ibGVtcyB3aXRoIC5wcmV2ZW50RGVmYXVsdCgpIG9uIGN1c3RvbSBldmVudHNcbiAgICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjMzNDkxOTFcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHByZXZlbnQgZGVmYXVsdCcpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciBDdXN0b21FdmVudCA9IGZ1bmN0aW9uKGV2ZW50LCBwYXJhbXMpIHtcbiAgICAgIHZhciBldnQsIG9yaWdQcmV2ZW50O1xuICAgICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICAgICAgcGFyYW1zLmJ1YmJsZXMgPSAhIXBhcmFtcy5idWJibGVzO1xuICAgICAgcGFyYW1zLmNhbmNlbGFibGUgPSAhIXBhcmFtcy5jYW5jZWxhYmxlO1xuXG4gICAgICBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICAgIGV2dC5pbml0Q3VzdG9tRXZlbnQoXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBwYXJhbXMuYnViYmxlcyxcbiAgICAgICAgcGFyYW1zLmNhbmNlbGFibGUsXG4gICAgICAgIHBhcmFtcy5kZXRhaWxcbiAgICAgICk7XG4gICAgICBvcmlnUHJldmVudCA9IGV2dC5wcmV2ZW50RGVmYXVsdDtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBvcmlnUHJldmVudC5jYWxsKHRoaXMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnZGVmYXVsdFByZXZlbnRlZCcsIHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBldnQ7XG4gICAgfTtcblxuICAgIEN1c3RvbUV2ZW50LnByb3RvdHlwZSA9IHdpbmRvdy5FdmVudC5wcm90b3R5cGU7XG4gICAgd2luZG93LkN1c3RvbUV2ZW50ID0gQ3VzdG9tRXZlbnQ7IC8vIGV4cG9zZSBkZWZpbml0aW9uIHRvIHdpbmRvd1xuICB9XG59KSgpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/custom-event-polyfill/polyfill.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/escape-html/index.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/escape-html/index.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZXNjYXBlLWh0bWwvaW5kZXguanM/NzRhMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2VzY2FwZS1odG1sL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBlc2NhcGUtaHRtbFxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTUgQW5kcmVhcyBMdWJiZVxuICogQ29weXJpZ2h0KGMpIDIwMTUgVGlhbmNoZW5nIFwiVGltb3RoeVwiIEd1XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIG1hdGNoSHRtbFJlZ0V4cCA9IC9bXCInJjw+XS87XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVIdG1sO1xuXG4vKipcbiAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVuIHN0cmluZyBvZiBodG1sLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciBpbnNlcnRpbmcgaW50byBIVE1MXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcbiAgdmFyIHN0ciA9ICcnICsgc3RyaW5nO1xuICB2YXIgbWF0Y2ggPSBtYXRjaEh0bWxSZWdFeHAuZXhlYyhzdHIpO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgdmFyIGVzY2FwZTtcbiAgdmFyIGh0bWwgPSAnJztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3RJbmRleCA9IDA7XG5cbiAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHN0ci5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGluZGV4KSkge1xuICAgICAgY2FzZSAzNDogLy8gXCJcbiAgICAgICAgZXNjYXBlID0gJyZxdW90Oyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzODogLy8gJlxuICAgICAgICBlc2NhcGUgPSAnJmFtcDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzk6IC8vICdcbiAgICAgICAgZXNjYXBlID0gJyYjMzk7JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDYwOiAvLyA8XG4gICAgICAgIGVzY2FwZSA9ICcmbHQ7JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDYyOiAvLyA+XG4gICAgICAgIGVzY2FwZSA9ICcmZ3Q7JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobGFzdEluZGV4ICE9PSBpbmRleCkge1xuICAgICAgaHRtbCArPSBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpO1xuICAgIH1cblxuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcbiAgICBodG1sICs9IGVzY2FwZTtcbiAgfVxuXG4gIHJldHVybiBsYXN0SW5kZXggIT09IGluZGV4XG4gICAgPyBodG1sICsgc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KVxuICAgIDogaHRtbDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/escape-html/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/eventsource-polyfill/dist/browserify-eventsource.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/eventsource-polyfill/dist/browserify-eventsource.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/*\n * CommonJS module that exports EventSource polyfill version 0.9.6\n * This module is intended for browser side use\n * =====================================================================\n * THIS IS A POLYFILL MODULE, SO IT HAS SIDE EFFECTS\n * IT AUTOMATICALLY CHECKS IF window OBJECT DEFINES EventSource\n * AND ADD THE EXPORTED ONE IN CASE IT IS UNDEFINED\n * =====================================================================\n * Supported by sc AmvTek srl\n * :email: devel@amvtek.com\n */\n\n\nvar PolyfillEventSource = __webpack_require__(/*! ./eventsource.js */ \"./node_modules/eventsource-polyfill/dist/eventsource.js\").EventSource;\nmodule.exports = PolyfillEventSource;\n\n// Add EventSource to window if it is missing...\nif (window && !window.EventSource){\n window.EventSource = PolyfillEventSource;\n if (console){\n\tconsole.log(\"polyfill-eventsource added missing EventSource to window\");\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZXZlbnRzb3VyY2UtcG9seWZpbGwvZGlzdC9icm93c2VyaWZ5LWV2ZW50c291cmNlLmpzPzU3MGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0EsMEJBQTBCLG1CQUFPLENBQUMsaUZBQWtCO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2V2ZW50c291cmNlLXBvbHlmaWxsL2Rpc3QvYnJvd3NlcmlmeS1ldmVudHNvdXJjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAqIENvbW1vbkpTIG1vZHVsZSB0aGF0IGV4cG9ydHMgRXZlbnRTb3VyY2UgcG9seWZpbGwgdmVyc2lvbiAwLjkuNlxuICAgKiBUaGlzIG1vZHVsZSBpcyBpbnRlbmRlZCBmb3IgYnJvd3NlciBzaWRlIHVzZVxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICogVEhJUyBJUyBBIFBPTFlGSUxMIE1PRFVMRSwgU08gSVQgSEFTIFNJREUgRUZGRUNUU1xuICAgKiBJVCBBVVRPTUFUSUNBTExZIENIRUNLUyBJRiB3aW5kb3cgT0JKRUNUIERFRklORVMgRXZlbnRTb3VyY2VcbiAgICogQU5EIEFERCBUSEUgRVhQT1JURUQgT05FIElOIENBU0UgSVQgSVMgVU5ERUZJTkVEXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKiBTdXBwb3J0ZWQgYnkgc2MgQW12VGVrIHNybFxuICAgKiA6ZW1haWw6IGRldmVsQGFtdnRlay5jb21cbiAqL1xuXG5cbnZhciBQb2x5ZmlsbEV2ZW50U291cmNlID0gcmVxdWlyZSgnLi9ldmVudHNvdXJjZS5qcycpLkV2ZW50U291cmNlO1xubW9kdWxlLmV4cG9ydHMgPSBQb2x5ZmlsbEV2ZW50U291cmNlO1xuXG4vLyBBZGQgRXZlbnRTb3VyY2UgdG8gd2luZG93IGlmIGl0IGlzIG1pc3NpbmcuLi5cbmlmICh3aW5kb3cgJiYgIXdpbmRvdy5FdmVudFNvdXJjZSl7XG4gICAgd2luZG93LkV2ZW50U291cmNlID0gUG9seWZpbGxFdmVudFNvdXJjZTtcbiAgICBpZiAoY29uc29sZSl7XG5cdGNvbnNvbGUubG9nKFwicG9seWZpbGwtZXZlbnRzb3VyY2UgYWRkZWQgbWlzc2luZyBFdmVudFNvdXJjZSB0byB3aW5kb3dcIik7XG4gICAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/eventsource-polyfill/dist/browserify-eventsource.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/eventsource-polyfill/dist/eventsource.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/eventsource-polyfill/dist/eventsource.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/*\n * EventSource polyfill version 0.9.6\n * Supported by sc AmvTek srl\n * :email: devel@amvtek.com\n */\n;(function (global) {\n\n if (global.EventSource && !global._eventSourceImportPrefix){\n return;\n }\n\n var evsImportName = (global._eventSourceImportPrefix||'')+\"EventSource\";\n\n var EventSource = function (url, options) {\n\n if (!url || typeof url != 'string') {\n throw new SyntaxError('Not enough arguments');\n }\n\n this.URL = url;\n this.setOptions(options);\n var evs = this;\n setTimeout(function(){evs.poll()}, 0);\n };\n\n EventSource.prototype = {\n\n CONNECTING: 0,\n\n OPEN: 1,\n\n CLOSED: 2,\n\n defaultOptions: {\n\n loggingEnabled: false,\n\n loggingPrefix: \"eventsource\",\n\n interval: 500, // milliseconds\n\n bufferSizeLimit: 256*1024, // bytes\n\n silentTimeout: 300000, // milliseconds\n\n getArgs:{\n 'evs_buffer_size_limit': 256*1024\n },\n\n xhrHeaders:{\n 'Accept': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n 'X-Requested-With': 'XMLHttpRequest'\n }\n },\n\n setOptions: function(options){\n\n var defaults = this.defaultOptions;\n var option;\n\n // set all default options...\n for (option in defaults){\n\n if ( defaults.hasOwnProperty(option) ){\n this[option] = defaults[option];\n }\n }\n\n // override with what is in options\n for (option in options){\n\n if (option in defaults && options.hasOwnProperty(option)){\n this[option] = options[option];\n }\n }\n\n // if getArgs option is enabled\n // ensure evs_buffer_size_limit corresponds to bufferSizeLimit\n if (this.getArgs && this.bufferSizeLimit) {\n\n this.getArgs['evs_buffer_size_limit'] = this.bufferSizeLimit;\n }\n\n // if console is not available, force loggingEnabled to false\n if (typeof console === \"undefined\" || typeof console.log === \"undefined\") {\n\n this.loggingEnabled = false;\n }\n },\n\n log: function(message) {\n\n if (this.loggingEnabled) {\n\n console.log(\"[\" + this.loggingPrefix +\"]:\" + message)\n }\n },\n\n poll: function() {\n\n try {\n\n if (this.readyState == this.CLOSED) {\n return;\n }\n\n this.cleanup();\n this.readyState = this.CONNECTING;\n this.cursor = 0;\n this.cache = '';\n this._xhr = new this.XHR(this);\n this.resetNoActivityTimer();\n\n }\n catch (e) {\n\n // in an attempt to silence the errors\n this.log('There were errors inside the pool try-catch');\n this.dispatchEvent('error', { type: 'error', data: e.message });\n }\n },\n\n pollAgain: function (interval) {\n\n // schedule poll to be called after interval milliseconds\n var evs = this;\n evs.readyState = evs.CONNECTING;\n evs.dispatchEvent('error', {\n type: 'error',\n data: \"Reconnecting \"\n });\n this._pollTimer = setTimeout(function(){evs.poll()}, interval||0);\n },\n\n\n cleanup: function() {\n\n this.log('evs cleaning up')\n\n if (this._pollTimer){\n clearInterval(this._pollTimer);\n this._pollTimer = null;\n }\n\n if (this._noActivityTimer){\n clearInterval(this._noActivityTimer);\n this._noActivityTimer = null;\n }\n\n if (this._xhr){\n this._xhr.abort();\n this._xhr = null;\n }\n },\n\n resetNoActivityTimer: function(){\n\n if (this.silentTimeout){\n\n if (this._noActivityTimer){\n clearInterval(this._noActivityTimer);\n }\n var evs = this;\n this._noActivityTimer = setTimeout(\n function(){ evs.log('Timeout! silentTImeout:'+evs.silentTimeout); evs.pollAgain(); },\n this.silentTimeout\n );\n }\n },\n\n close: function () {\n\n this.readyState = this.CLOSED;\n this.log('Closing connection. readyState: '+this.readyState);\n this.cleanup();\n },\n\n ondata: function() {\n\n var request = this._xhr;\n\n if (request.isReady() && !request.hasError() ) {\n // reset the timer, as we have activity\n this.resetNoActivityTimer();\n\n // move this EventSource to OPEN state...\n if (this.readyState == this.CONNECTING) {\n this.readyState = this.OPEN;\n this.dispatchEvent('open', { type: 'open' });\n }\n\n var buffer = request.getBuffer();\n\n if (buffer.length > this.bufferSizeLimit) {\n this.log('buffer.length > this.bufferSizeLimit');\n this.pollAgain();\n }\n\n if (this.cursor == 0 && buffer.length > 0){\n\n // skip byte order mark \\uFEFF character if it starts the stream\n if (buffer.substring(0,1) == '\\uFEFF'){\n this.cursor = 1;\n }\n }\n\n var lastMessageIndex = this.lastMessageIndex(buffer);\n if (lastMessageIndex[0] >= this.cursor){\n\n var newcursor = lastMessageIndex[1];\n var toparse = buffer.substring(this.cursor, newcursor);\n this.parseStream(toparse);\n this.cursor = newcursor;\n }\n\n // if request is finished, reopen the connection\n if (request.isDone()) {\n this.log('request.isDone(). reopening the connection');\n this.pollAgain(this.interval);\n }\n }\n else if (this.readyState !== this.CLOSED) {\n\n this.log('this.readyState !== this.CLOSED');\n this.pollAgain(this.interval);\n\n //MV: Unsure why an error was previously dispatched\n }\n },\n\n parseStream: function(chunk) {\n\n // normalize line separators (\\r\\n,\\r,\\n) to \\n\n // remove white spaces that may precede \\n\n chunk = this.cache + this.normalizeToLF(chunk);\n\n var events = chunk.split('\\n\\n');\n\n var i, j, eventType, datas, line, retry;\n\n for (i=0; i < (events.length - 1); i++) {\n\n eventType = 'message';\n datas = [];\n parts = events[i].split('\\n');\n\n for (j=0; j < parts.length; j++) {\n\n line = this.trimWhiteSpace(parts[j]);\n\n if (line.indexOf('event') == 0) {\n\n eventType = line.replace(/event:?\\s*/, '');\n }\n else if (line.indexOf('retry') == 0) {\n\n retry = parseInt(line.replace(/retry:?\\s*/, ''));\n if(!isNaN(retry)) {\n this.interval = retry;\n }\n }\n else if (line.indexOf('data') == 0) {\n\n datas.push(line.replace(/data:?\\s*/, ''));\n }\n else if (line.indexOf('id:') == 0) {\n\n this.lastEventId = line.replace(/id:?\\s*/, '');\n }\n else if (line.indexOf('id') == 0) { // this resets the id\n\n this.lastEventId = null;\n }\n }\n\n if (datas.length) {\n // dispatch a new event\n var event = new MessageEvent(eventType, datas.join('\\n'), window.location.origin, this.lastEventId);\n this.dispatchEvent(eventType, event);\n }\n }\n\n this.cache = events[events.length - 1];\n },\n\n dispatchEvent: function (type, event) {\n var handlers = this['_' + type + 'Handlers'];\n\n if (handlers) {\n\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].call(this, event);\n }\n }\n\n if (this['on' + type]) {\n this['on' + type].call(this, event);\n }\n\n },\n\n addEventListener: function (type, handler) {\n if (!this['_' + type + 'Handlers']) {\n this['_' + type + 'Handlers'] = [];\n }\n\n this['_' + type + 'Handlers'].push(handler);\n },\n\n removeEventListener: function (type, handler) {\n var handlers = this['_' + type + 'Handlers'];\n if (!handlers) {\n return;\n }\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n break;\n }\n }\n },\n\n _pollTimer: null,\n\n _noactivityTimer: null,\n\n _xhr: null,\n\n lastEventId: null,\n\n cache: '',\n\n cursor: 0,\n\n onerror: null,\n\n onmessage: null,\n\n onopen: null,\n\n readyState: 0,\n\n // ===================================================================\n // helpers functions\n // those are attached to prototype to ease reuse and testing...\n\n urlWithParams: function (baseURL, params) {\n\n var encodedArgs = [];\n\n if (params){\n\n var key, urlarg;\n var urlize = encodeURIComponent;\n\n for (key in params){\n if (params.hasOwnProperty(key)) {\n urlarg = urlize(key)+'='+urlize(params[key]);\n encodedArgs.push(urlarg);\n }\n }\n }\n\n if (encodedArgs.length > 0){\n\n if (baseURL.indexOf('?') == -1)\n return baseURL + '?' + encodedArgs.join('&');\n return baseURL + '&' + encodedArgs.join('&');\n }\n return baseURL;\n },\n\n lastMessageIndex: function(text) {\n\n var ln2 =text.lastIndexOf('\\n\\n');\n var lr2 = text.lastIndexOf('\\r\\r');\n var lrln2 = text.lastIndexOf('\\r\\n\\r\\n');\n\n if (lrln2 > Math.max(ln2, lr2)) {\n return [lrln2, lrln2+4];\n }\n return [Math.max(ln2, lr2), Math.max(ln2, lr2) + 2]\n },\n\n trimWhiteSpace: function(str) {\n // to remove whitespaces left and right of string\n\n var reTrim = /^(\\s|\\u00A0)+|(\\s|\\u00A0)+$/g;\n return str.replace(reTrim, '');\n },\n\n normalizeToLF: function(str) {\n\n // replace \\r and \\r\\n with \\n\n return str.replace(/\\r\\n|\\r/g, '\\n');\n }\n\n };\n\n if (!isOldIE()){\n\n EventSource.isPolyfill = \"XHR\";\n\n // EventSource will send request using XMLHttpRequest\n EventSource.prototype.XHR = function(evs) {\n\n request = new XMLHttpRequest();\n this._request = request;\n evs._xhr = this;\n\n // set handlers\n request.onreadystatechange = function(){\n if (request.readyState > 1 && evs.readyState != evs.CLOSED) {\n if (request.status == 200 || (request.status>=300 && request.status<400)){\n evs.ondata();\n }\n else {\n request._failed = true;\n evs.readyState = evs.CLOSED;\n evs.dispatchEvent('error', {\n type: 'error',\n data: \"The server responded with \"+request.status\n });\n evs.close();\n }\n }\n };\n\n request.onprogress = function () {\n };\n\n request.open('GET', evs.urlWithParams(evs.URL, evs.getArgs), true);\n\n var headers = evs.xhrHeaders; // maybe null\n for (var header in headers) {\n if (headers.hasOwnProperty(header)){\n request.setRequestHeader(header, headers[header]);\n }\n }\n if (evs.lastEventId) {\n request.setRequestHeader('Last-Event-Id', evs.lastEventId);\n }\n\n request.send();\n };\n\n EventSource.prototype.XHR.prototype = {\n\n useXDomainRequest: false,\n\n _request: null,\n\n _failed: false, // true if we have had errors...\n\n isReady: function() {\n\n\n return this._request.readyState >= 2;\n },\n\n isDone: function() {\n\n return (this._request.readyState == 4);\n },\n\n hasError: function() {\n\n return (this._failed || (this._request.status >= 400));\n },\n\n getBuffer: function() {\n\n var rv = '';\n try {\n rv = this._request.responseText || '';\n }\n catch (e){}\n return rv;\n },\n\n abort: function() {\n\n if ( this._request ) {\n this._request.abort();\n }\n }\n };\n }\n else {\n\n\tEventSource.isPolyfill = \"IE_8-9\";\n\n // patch EventSource defaultOptions\n var defaults = EventSource.prototype.defaultOptions;\n defaults.xhrHeaders = null; // no headers will be sent\n defaults.getArgs['evs_preamble'] = 2048 + 8;\n\n // EventSource will send request using Internet Explorer XDomainRequest\n EventSource.prototype.XHR = function(evs) {\n\n request = new XDomainRequest();\n this._request = request;\n\n // set handlers\n request.onprogress = function(){\n request._ready = true;\n evs.ondata();\n };\n\n request.onload = function(){\n this._loaded = true;\n evs.ondata();\n };\n\n request.onerror = function(){\n this._failed = true;\n evs.readyState = evs.CLOSED;\n evs.dispatchEvent('error', {\n type: 'error',\n data: \"XDomainRequest error\"\n });\n };\n\n request.ontimeout = function(){\n this._failed = true;\n evs.readyState = evs.CLOSED;\n evs.dispatchEvent('error', {\n type: 'error',\n data: \"XDomainRequest timed out\"\n });\n };\n\n // XDomainRequest does not allow setting custom headers\n // If EventSource has enabled the use of GET arguments\n // we add parameters to URL so that server can adapt the stream...\n var reqGetArgs = {};\n if (evs.getArgs) {\n\n // copy evs.getArgs in reqGetArgs\n var defaultArgs = evs.getArgs;\n for (var key in defaultArgs) {\n if (defaultArgs.hasOwnProperty(key)){\n reqGetArgs[key] = defaultArgs[key];\n }\n }\n if (evs.lastEventId){\n reqGetArgs['evs_last_event_id'] = evs.lastEventId;\n }\n }\n // send the request\n\n request.open('GET', evs.urlWithParams(evs.URL,reqGetArgs));\n request.send();\n };\n\n EventSource.prototype.XHR.prototype = {\n\n useXDomainRequest: true,\n\n _request: null,\n\n _ready: false, // true when progress events are dispatched\n\n _loaded: false, // true when request has been loaded\n\n _failed: false, // true if when request is in error\n\n isReady: function() {\n\n return this._request._ready;\n },\n\n isDone: function() {\n\n return this._request._loaded;\n },\n\n hasError: function() {\n\n return this._request._failed;\n },\n\n getBuffer: function() {\n\n var rv = '';\n try {\n rv = this._request.responseText || '';\n }\n catch (e){}\n return rv;\n },\n\n abort: function() {\n\n if ( this._request){\n this._request.abort();\n }\n }\n };\n }\n\n function MessageEvent(type, data, origin, lastEventId) {\n\n this.bubbles = false;\n this.cancelBubble = false;\n this.cancelable = false;\n this.data = data || null;\n this.origin = origin || '';\n this.lastEventId = lastEventId || '';\n this.type = type || 'message';\n }\n\n function isOldIE () {\n\n //return true if we are in IE8 or IE9\n return (window.XDomainRequest && (window.XMLHttpRequest && new XMLHttpRequest().responseType === undefined)) ? true : false;\n }\n\n global[evsImportName] = EventSource;\n})(this);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZXZlbnRzb3VyY2UtcG9seWZpbGwvZGlzdC9ldmVudHNvdXJjZS5qcz9kMzA1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLFdBQVc7QUFDekM7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZDQUE2QyxpQ0FBaUM7QUFDOUU7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixvREFBb0QsV0FBVztBQUMvRCxTQUFTOzs7QUFHVDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxzREFBc0QsaUJBQWlCLEVBQUU7QUFDNUc7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsZUFBZTtBQUMvRDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxxQkFBcUIseUJBQXlCOztBQUU5QztBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLGtCQUFrQjs7QUFFM0M7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTs7QUFFQTs7QUFFQSwrQkFBK0IscUJBQXFCO0FBQ3BEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxRQUFRO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7O0FBR0E7QUFDQSxhQUFhOztBQUViOztBQUVBO0FBQ0EsYUFBYTs7QUFFYjs7QUFFQTtBQUNBLGFBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTs7QUFFYjs7QUFFQTtBQUNBLGFBQWE7O0FBRWI7O0FBRUE7QUFDQSxhQUFhOztBQUViOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9ldmVudHNvdXJjZS1wb2x5ZmlsbC9kaXN0L2V2ZW50c291cmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICogRXZlbnRTb3VyY2UgcG9seWZpbGwgdmVyc2lvbiAwLjkuNlxuICAgKiBTdXBwb3J0ZWQgYnkgc2MgQW12VGVrIHNybFxuICAgKiA6ZW1haWw6IGRldmVsQGFtdnRlay5jb21cbiAqL1xuOyhmdW5jdGlvbiAoZ2xvYmFsKSB7XG5cbiAgICBpZiAoZ2xvYmFsLkV2ZW50U291cmNlICYmICFnbG9iYWwuX2V2ZW50U291cmNlSW1wb3J0UHJlZml4KXtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBldnNJbXBvcnROYW1lID0gKGdsb2JhbC5fZXZlbnRTb3VyY2VJbXBvcnRQcmVmaXh8fCcnKStcIkV2ZW50U291cmNlXCI7XG5cbiAgICB2YXIgRXZlbnRTb3VyY2UgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG5cbiAgICAgICAgaWYgKCF1cmwgfHwgdHlwZW9mIHVybCAhPSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5VUkwgPSB1cmw7XG4gICAgICAgIHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgdmFyIGV2cyA9IHRoaXM7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtldnMucG9sbCgpfSwgMCk7XG4gICAgfTtcblxuICAgIEV2ZW50U291cmNlLnByb3RvdHlwZSA9IHtcblxuICAgICAgICBDT05ORUNUSU5HOiAwLFxuXG4gICAgICAgIE9QRU46IDEsXG5cbiAgICAgICAgQ0xPU0VEOiAyLFxuXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG5cbiAgICAgICAgICAgIGxvZ2dpbmdFbmFibGVkOiBmYWxzZSxcblxuICAgICAgICAgICAgbG9nZ2luZ1ByZWZpeDogXCJldmVudHNvdXJjZVwiLFxuXG4gICAgICAgICAgICBpbnRlcnZhbDogNTAwLCAvLyBtaWxsaXNlY29uZHNcblxuICAgICAgICAgICAgYnVmZmVyU2l6ZUxpbWl0OiAyNTYqMTAyNCwgLy8gYnl0ZXNcblxuICAgICAgICAgICAgc2lsZW50VGltZW91dDogMzAwMDAwLCAvLyBtaWxsaXNlY29uZHNcblxuICAgICAgICAgICAgZ2V0QXJnczp7XG4gICAgICAgICAgICAgICAgJ2V2c19idWZmZXJfc2l6ZV9saW1pdCc6IDI1NioxMDI0XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB4aHJIZWFkZXJzOntcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQvZXZlbnQtc3RyZWFtJyxcbiAgICAgICAgICAgICAgICAnQ2FjaGUtQ29udHJvbCc6ICduby1jYWNoZScsXG4gICAgICAgICAgICAgICAgJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24ob3B0aW9ucyl7XG5cbiAgICAgICAgICAgIHZhciBkZWZhdWx0cyA9IHRoaXMuZGVmYXVsdE9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgb3B0aW9uO1xuXG4gICAgICAgICAgICAvLyBzZXQgYWxsIGRlZmF1bHQgb3B0aW9ucy4uLlxuICAgICAgICAgICAgZm9yIChvcHRpb24gaW4gZGVmYXVsdHMpe1xuXG4gICAgICAgICAgICAgICAgaWYgKCBkZWZhdWx0cy5oYXNPd25Qcm9wZXJ0eShvcHRpb24pICl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNbb3B0aW9uXSA9IGRlZmF1bHRzW29wdGlvbl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvdmVycmlkZSB3aXRoIHdoYXQgaXMgaW4gb3B0aW9uc1xuICAgICAgICAgICAgZm9yIChvcHRpb24gaW4gb3B0aW9ucyl7XG5cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uIGluIGRlZmF1bHRzICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkob3B0aW9uKSl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNbb3B0aW9uXSA9IG9wdGlvbnNbb3B0aW9uXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIGdldEFyZ3Mgb3B0aW9uIGlzIGVuYWJsZWRcbiAgICAgICAgICAgIC8vIGVuc3VyZSBldnNfYnVmZmVyX3NpemVfbGltaXQgY29ycmVzcG9uZHMgdG8gYnVmZmVyU2l6ZUxpbWl0XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRBcmdzICYmIHRoaXMuYnVmZmVyU2l6ZUxpbWl0KSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmdldEFyZ3NbJ2V2c19idWZmZXJfc2l6ZV9saW1pdCddID0gdGhpcy5idWZmZXJTaXplTGltaXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSwgZm9yY2UgbG9nZ2luZ0VuYWJsZWQgdG8gZmFsc2VcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB0eXBlb2YgY29uc29sZS5sb2cgPT09IFwidW5kZWZpbmVkXCIpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2luZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBsb2c6IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2luZ0VuYWJsZWQpIHtcblxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW1wiICsgdGhpcy5sb2dnaW5nUHJlZml4ICtcIl06XCIgKyBtZXNzYWdlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHBvbGw6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSB0aGlzLkNMT1NFRCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeVN0YXRlID0gdGhpcy5DT05ORUNUSU5HO1xuICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5feGhyID0gbmV3IHRoaXMuWEhSKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXROb0FjdGl2aXR5VGltZXIoKTtcblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcblxuICAgICAgICAgICAgICAgIC8vIGluIGFuIGF0dGVtcHQgdG8gc2lsZW5jZSB0aGUgZXJyb3JzXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coJ1RoZXJlIHdlcmUgZXJyb3JzIGluc2lkZSB0aGUgcG9vbCB0cnktY2F0Y2gnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ2Vycm9yJywgeyB0eXBlOiAnZXJyb3InLCBkYXRhOiBlLm1lc3NhZ2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgcG9sbEFnYWluOiBmdW5jdGlvbiAoaW50ZXJ2YWwpIHtcblxuICAgICAgICAgICAgLy8gc2NoZWR1bGUgcG9sbCB0byBiZSBjYWxsZWQgYWZ0ZXIgaW50ZXJ2YWwgbWlsbGlzZWNvbmRzXG4gICAgICAgICAgICB2YXIgZXZzID0gdGhpcztcbiAgICAgICAgICAgIGV2cy5yZWFkeVN0YXRlID0gZXZzLkNPTk5FQ1RJTkc7XG4gICAgICAgICAgICBldnMuZGlzcGF0Y2hFdmVudCgnZXJyb3InLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBcIlJlY29ubmVjdGluZyBcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9wb2xsVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZXZzLnBvbGwoKX0sIGludGVydmFsfHwwKTtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIGNsZWFudXA6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB0aGlzLmxvZygnZXZzIGNsZWFuaW5nIHVwJylcblxuICAgICAgICAgICAgaWYgKHRoaXMuX3BvbGxUaW1lcil7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9wb2xsVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvbGxUaW1lciA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9ub0FjdGl2aXR5VGltZXIpe1xuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fbm9BY3Rpdml0eVRpbWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub0FjdGl2aXR5VGltZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5feGhyKXtcbiAgICAgICAgICAgICAgICB0aGlzLl94aHIuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl94aHIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHJlc2V0Tm9BY3Rpdml0eVRpbWVyOiBmdW5jdGlvbigpe1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zaWxlbnRUaW1lb3V0KXtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ub0FjdGl2aXR5VGltZXIpe1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX25vQWN0aXZpdHlUaW1lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBldnMgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vQWN0aXZpdHlUaW1lciA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpeyBldnMubG9nKCdUaW1lb3V0ISBzaWxlbnRUSW1lb3V0OicrZXZzLnNpbGVudFRpbWVvdXQpOyBldnMucG9sbEFnYWluKCk7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpbGVudFRpbWVvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgdGhpcy5yZWFkeVN0YXRlID0gdGhpcy5DTE9TRUQ7XG4gICAgICAgICAgICB0aGlzLmxvZygnQ2xvc2luZyBjb25uZWN0aW9uLiByZWFkeVN0YXRlOiAnK3RoaXMucmVhZHlTdGF0ZSk7XG4gICAgICAgICAgICB0aGlzLmNsZWFudXAoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBvbmRhdGE6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVxdWVzdCA9IHRoaXMuX3hocjtcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3QuaXNSZWFkeSgpICYmICFyZXF1ZXN0Lmhhc0Vycm9yKCkgKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVzZXQgdGhlIHRpbWVyLCBhcyB3ZSBoYXZlIGFjdGl2aXR5XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldE5vQWN0aXZpdHlUaW1lcigpO1xuXG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0aGlzIEV2ZW50U291cmNlIHRvIE9QRU4gc3RhdGUuLi5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IHRoaXMuQ09OTkVDVElORykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5U3RhdGUgPSB0aGlzLk9QRU47XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnb3BlbicsIHsgdHlwZTogJ29wZW4nIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSByZXF1ZXN0LmdldEJ1ZmZlcigpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPiB0aGlzLmJ1ZmZlclNpemVMaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZygnYnVmZmVyLmxlbmd0aCA+IHRoaXMuYnVmZmVyU2l6ZUxpbWl0Jyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9sbEFnYWluKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yID09IDAgJiYgYnVmZmVyLmxlbmd0aCA+IDApe1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNraXAgYnl0ZSBvcmRlciBtYXJrIFxcdUZFRkYgY2hhcmFjdGVyIGlmIGl0IHN0YXJ0cyB0aGUgc3RyZWFtXG4gICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuc3Vic3RyaW5nKDAsMSkgPT0gJ1xcdUZFRkYnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBsYXN0TWVzc2FnZUluZGV4ID0gdGhpcy5sYXN0TWVzc2FnZUluZGV4KGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3RNZXNzYWdlSW5kZXhbMF0gPj0gdGhpcy5jdXJzb3Ipe1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdjdXJzb3IgPSBsYXN0TWVzc2FnZUluZGV4WzFdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdG9wYXJzZSA9IGJ1ZmZlci5zdWJzdHJpbmcodGhpcy5jdXJzb3IsIG5ld2N1cnNvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyc2VTdHJlYW0odG9wYXJzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yID0gbmV3Y3Vyc29yO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGlmIHJlcXVlc3QgaXMgZmluaXNoZWQsIHJlb3BlbiB0aGUgY29ubmVjdGlvblxuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LmlzRG9uZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nKCdyZXF1ZXN0LmlzRG9uZSgpLiByZW9wZW5pbmcgdGhlIGNvbm5lY3Rpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2xsQWdhaW4odGhpcy5pbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5yZWFkeVN0YXRlICE9PSB0aGlzLkNMT1NFRCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coJ3RoaXMucmVhZHlTdGF0ZSAhPT0gdGhpcy5DTE9TRUQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvbGxBZ2Fpbih0aGlzLmludGVydmFsKTtcblxuICAgICAgICAgICAgICAgIC8vTVY6IFVuc3VyZSB3aHkgYW4gZXJyb3Igd2FzIHByZXZpb3VzbHkgZGlzcGF0Y2hlZFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHBhcnNlU3RyZWFtOiBmdW5jdGlvbihjaHVuaykge1xuXG4gICAgICAgICAgICAvLyBub3JtYWxpemUgbGluZSBzZXBhcmF0b3JzIChcXHJcXG4sXFxyLFxcbikgdG8gXFxuXG4gICAgICAgICAgICAvLyByZW1vdmUgd2hpdGUgc3BhY2VzIHRoYXQgbWF5IHByZWNlZGUgXFxuXG4gICAgICAgICAgICBjaHVuayA9IHRoaXMuY2FjaGUgKyB0aGlzLm5vcm1hbGl6ZVRvTEYoY2h1bmspO1xuXG4gICAgICAgICAgICB2YXIgZXZlbnRzID0gY2h1bmsuc3BsaXQoJ1xcblxcbicpO1xuXG4gICAgICAgICAgICB2YXIgaSwgaiwgZXZlbnRUeXBlLCBkYXRhcywgbGluZSwgcmV0cnk7XG5cbiAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgKGV2ZW50cy5sZW5ndGggLSAxKTsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgICBldmVudFR5cGUgPSAnbWVzc2FnZSc7XG4gICAgICAgICAgICAgICAgZGF0YXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwYXJ0cyA9IGV2ZW50c1tpXS5zcGxpdCgnXFxuJyk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGo9MDsgaiA8IHBhcnRzLmxlbmd0aDsgaisrKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgbGluZSA9IHRoaXMudHJpbVdoaXRlU3BhY2UocGFydHNbal0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lLmluZGV4T2YoJ2V2ZW50JykgPT0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFR5cGUgPSBsaW5lLnJlcGxhY2UoL2V2ZW50Oj9cXHMqLywgJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxpbmUuaW5kZXhPZigncmV0cnknKSA9PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5ID0gcGFyc2VJbnQobGluZS5yZXBsYWNlKC9yZXRyeTo/XFxzKi8sICcnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZighaXNOYU4ocmV0cnkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHJldHJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxpbmUuaW5kZXhPZignZGF0YScpID09IDApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXMucHVzaChsaW5lLnJlcGxhY2UoL2RhdGE6P1xccyovLCAnJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxpbmUuaW5kZXhPZignaWQ6JykgPT0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RFdmVudElkID0gbGluZS5yZXBsYWNlKC9pZDo/XFxzKi8sICcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsaW5lLmluZGV4T2YoJ2lkJykgPT0gMCkgeyAvLyB0aGlzIHJlc2V0cyB0aGUgaWRcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0RXZlbnRJZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZGF0YXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc3BhdGNoIGEgbmV3IGV2ZW50XG4gICAgICAgICAgICAgICAgICAgIHZhciBldmVudCA9IG5ldyBNZXNzYWdlRXZlbnQoZXZlbnRUeXBlLCBkYXRhcy5qb2luKCdcXG4nKSwgd2luZG93LmxvY2F0aW9uLm9yaWdpbiwgdGhpcy5sYXN0RXZlbnRJZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudFR5cGUsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2FjaGUgPSBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uICh0eXBlLCBldmVudCkge1xuICAgICAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpc1snXycgKyB0eXBlICsgJ0hhbmRsZXJzJ107XG5cbiAgICAgICAgICAgIGlmIChoYW5kbGVycykge1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1tpXS5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzWydvbicgKyB0eXBlXSkge1xuICAgICAgICAgICAgICAgIHRoaXNbJ29uJyArIHR5cGVdLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKHR5cGUsIGhhbmRsZXIpIHtcbiAgICAgICAgICAgIGlmICghdGhpc1snXycgKyB0eXBlICsgJ0hhbmRsZXJzJ10pIHtcbiAgICAgICAgICAgICAgICB0aGlzWydfJyArIHR5cGUgKyAnSGFuZGxlcnMnXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzWydfJyArIHR5cGUgKyAnSGFuZGxlcnMnXS5wdXNoKGhhbmRsZXIpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uICh0eXBlLCBoYW5kbGVyKSB7XG4gICAgICAgICAgICB2YXIgaGFuZGxlcnMgPSB0aGlzWydfJyArIHR5cGUgKyAnSGFuZGxlcnMnXTtcbiAgICAgICAgICAgIGlmICghaGFuZGxlcnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gaGFuZGxlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlcnNbaV0gPT09IGhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgX3BvbGxUaW1lcjogbnVsbCxcblxuICAgICAgICBfbm9hY3Rpdml0eVRpbWVyOiBudWxsLFxuXG4gICAgICAgIF94aHI6IG51bGwsXG5cbiAgICAgICAgbGFzdEV2ZW50SWQ6IG51bGwsXG5cbiAgICAgICAgY2FjaGU6ICcnLFxuXG4gICAgICAgIGN1cnNvcjogMCxcblxuICAgICAgICBvbmVycm9yOiBudWxsLFxuXG4gICAgICAgIG9ubWVzc2FnZTogbnVsbCxcblxuICAgICAgICBvbm9wZW46IG51bGwsXG5cbiAgICAgICAgcmVhZHlTdGF0ZTogMCxcblxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIGhlbHBlcnMgZnVuY3Rpb25zXG4gICAgICAgIC8vIHRob3NlIGFyZSBhdHRhY2hlZCB0byBwcm90b3R5cGUgdG8gZWFzZSByZXVzZSBhbmQgdGVzdGluZy4uLlxuXG4gICAgICAgIHVybFdpdGhQYXJhbXM6IGZ1bmN0aW9uIChiYXNlVVJMLCBwYXJhbXMpIHtcblxuICAgICAgICAgICAgdmFyIGVuY29kZWRBcmdzID0gW107XG5cbiAgICAgICAgICAgIGlmIChwYXJhbXMpe1xuXG4gICAgICAgICAgICAgICAgdmFyIGtleSwgdXJsYXJnO1xuICAgICAgICAgICAgICAgIHZhciB1cmxpemUgPSBlbmNvZGVVUklDb21wb25lbnQ7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBwYXJhbXMpe1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybGFyZyA9IHVybGl6ZShrZXkpKyc9Jyt1cmxpemUocGFyYW1zW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZEFyZ3MucHVzaCh1cmxhcmcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5jb2RlZEFyZ3MubGVuZ3RoID4gMCl7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmFzZVVSTC5pbmRleE9mKCc/JykgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBiYXNlVVJMICsgJz8nICsgZW5jb2RlZEFyZ3Muam9pbignJicpO1xuICAgICAgICAgICAgICAgIHJldHVybiBiYXNlVVJMICsgJyYnICsgZW5jb2RlZEFyZ3Muam9pbignJicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGJhc2VVUkw7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbGFzdE1lc3NhZ2VJbmRleDogZnVuY3Rpb24odGV4dCkge1xuXG4gICAgICAgICAgICB2YXIgbG4yID10ZXh0Lmxhc3RJbmRleE9mKCdcXG5cXG4nKTtcbiAgICAgICAgICAgIHZhciBscjIgPSB0ZXh0Lmxhc3RJbmRleE9mKCdcXHJcXHInKTtcbiAgICAgICAgICAgIHZhciBscmxuMiA9IHRleHQubGFzdEluZGV4T2YoJ1xcclxcblxcclxcbicpO1xuXG4gICAgICAgICAgICBpZiAobHJsbjIgPiBNYXRoLm1heChsbjIsIGxyMikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2xybG4yLCBscmxuMis0XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbTWF0aC5tYXgobG4yLCBscjIpLCBNYXRoLm1heChsbjIsIGxyMikgKyAyXVxuICAgICAgICB9LFxuXG4gICAgICAgIHRyaW1XaGl0ZVNwYWNlOiBmdW5jdGlvbihzdHIpIHtcbiAgICAgICAgICAgIC8vIHRvIHJlbW92ZSB3aGl0ZXNwYWNlcyBsZWZ0IGFuZCByaWdodCBvZiBzdHJpbmdcblxuICAgICAgICAgICAgdmFyIHJlVHJpbSA9IC9eKFxcc3xcXHUwMEEwKSt8KFxcc3xcXHUwMEEwKSskL2c7XG4gICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbm9ybWFsaXplVG9MRjogZnVuY3Rpb24oc3RyKSB7XG5cbiAgICAgICAgICAgIC8vIHJlcGxhY2UgXFxyIGFuZCBcXHJcXG4gd2l0aCBcXG5cbiAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvXFxyXFxufFxcci9nLCAnXFxuJyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBpZiAoIWlzT2xkSUUoKSl7XG5cbiAgICAgICAgRXZlbnRTb3VyY2UuaXNQb2x5ZmlsbCA9IFwiWEhSXCI7XG5cbiAgICAgICAgLy8gRXZlbnRTb3VyY2Ugd2lsbCBzZW5kIHJlcXVlc3QgdXNpbmcgWE1MSHR0cFJlcXVlc3RcbiAgICAgICAgRXZlbnRTb3VyY2UucHJvdG90eXBlLlhIUiA9IGZ1bmN0aW9uKGV2cykge1xuXG4gICAgICAgICAgICByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgICAgICAgICAgIGV2cy5feGhyID0gdGhpcztcblxuICAgICAgICAgICAgLy8gc2V0IGhhbmRsZXJzXG4gICAgICAgICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QucmVhZHlTdGF0ZSA+IDEgJiYgZXZzLnJlYWR5U3RhdGUgIT0gZXZzLkNMT1NFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT0gMjAwIHx8IChyZXF1ZXN0LnN0YXR1cz49MzAwICYmIHJlcXVlc3Quc3RhdHVzPDQwMCkpe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZzLm9uZGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5fZmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2cy5yZWFkeVN0YXRlID0gZXZzLkNMT1NFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2cy5kaXNwYXRjaEV2ZW50KCdlcnJvcicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFwiVGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBcIityZXF1ZXN0LnN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldnMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJlcXVlc3Qub25wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJlcXVlc3Qub3BlbignR0VUJywgZXZzLnVybFdpdGhQYXJhbXMoZXZzLlVSTCwgZXZzLmdldEFyZ3MpLCB0cnVlKTtcblxuICAgICAgICAgICAgdmFyIGhlYWRlcnMgPSBldnMueGhySGVhZGVyczsgLy8gbWF5YmUgbnVsbFxuICAgICAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIGhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShoZWFkZXIpKXtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlciwgaGVhZGVyc1toZWFkZXJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZzLmxhc3RFdmVudElkKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCdMYXN0LUV2ZW50LUlkJywgZXZzLmxhc3RFdmVudElkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVxdWVzdC5zZW5kKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgRXZlbnRTb3VyY2UucHJvdG90eXBlLlhIUi5wcm90b3R5cGUgPSB7XG5cbiAgICAgICAgICAgIHVzZVhEb21haW5SZXF1ZXN0OiBmYWxzZSxcblxuICAgICAgICAgICAgX3JlcXVlc3Q6IG51bGwsXG5cbiAgICAgICAgICAgIF9mYWlsZWQ6IGZhbHNlLCAvLyB0cnVlIGlmIHdlIGhhdmUgaGFkIGVycm9ycy4uLlxuXG4gICAgICAgICAgICBpc1JlYWR5OiBmdW5jdGlvbigpIHtcblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QucmVhZHlTdGF0ZSA+PSAyO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNEb25lOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5fcmVxdWVzdC5yZWFkeVN0YXRlID09IDQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFzRXJyb3I6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLl9mYWlsZWQgfHwgKHRoaXMuX3JlcXVlc3Quc3RhdHVzID49IDQwMCkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QnVmZmVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBydiA9ICcnO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJ2ID0gdGhpcy5fcmVxdWVzdC5yZXNwb25zZVRleHQgfHwgJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKXt9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ2O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLl9yZXF1ZXN0ICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcblxuXHRFdmVudFNvdXJjZS5pc1BvbHlmaWxsID0gXCJJRV84LTlcIjtcblxuICAgICAgICAvLyBwYXRjaCBFdmVudFNvdXJjZSBkZWZhdWx0T3B0aW9uc1xuICAgICAgICB2YXIgZGVmYXVsdHMgPSBFdmVudFNvdXJjZS5wcm90b3R5cGUuZGVmYXVsdE9wdGlvbnM7XG4gICAgICAgIGRlZmF1bHRzLnhockhlYWRlcnMgPSBudWxsOyAvLyBubyBoZWFkZXJzIHdpbGwgYmUgc2VudFxuICAgICAgICBkZWZhdWx0cy5nZXRBcmdzWydldnNfcHJlYW1ibGUnXSA9IDIwNDggKyA4O1xuXG4gICAgICAgIC8vIEV2ZW50U291cmNlIHdpbGwgc2VuZCByZXF1ZXN0IHVzaW5nIEludGVybmV0IEV4cGxvcmVyIFhEb21haW5SZXF1ZXN0XG4gICAgICAgIEV2ZW50U291cmNlLnByb3RvdHlwZS5YSFIgPSBmdW5jdGlvbihldnMpIHtcblxuICAgICAgICAgICAgcmVxdWVzdCA9IG5ldyBYRG9tYWluUmVxdWVzdCgpO1xuICAgICAgICAgICAgdGhpcy5fcmVxdWVzdCA9IHJlcXVlc3Q7XG5cbiAgICAgICAgICAgIC8vIHNldCBoYW5kbGVyc1xuICAgICAgICAgICAgcmVxdWVzdC5vbnByb2dyZXNzID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICByZXF1ZXN0Ll9yZWFkeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZXZzLm9uZGF0YSgpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmVxdWVzdC5vbmxvYWQgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZXZzLm9uZGF0YSgpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICB0aGlzLl9mYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGV2cy5yZWFkeVN0YXRlID0gZXZzLkNMT1NFRDtcbiAgICAgICAgICAgICAgICBldnMuZGlzcGF0Y2hFdmVudCgnZXJyb3InLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IFwiWERvbWFpblJlcXVlc3QgZXJyb3JcIlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZXZzLnJlYWR5U3RhdGUgPSBldnMuQ0xPU0VEO1xuICAgICAgICAgICAgICAgIGV2cy5kaXNwYXRjaEV2ZW50KCdlcnJvcicsIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogXCJYRG9tYWluUmVxdWVzdCB0aW1lZCBvdXRcIlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gWERvbWFpblJlcXVlc3QgZG9lcyBub3QgYWxsb3cgc2V0dGluZyBjdXN0b20gaGVhZGVyc1xuICAgICAgICAgICAgLy8gSWYgRXZlbnRTb3VyY2UgaGFzIGVuYWJsZWQgdGhlIHVzZSBvZiBHRVQgYXJndW1lbnRzXG4gICAgICAgICAgICAvLyB3ZSBhZGQgcGFyYW1ldGVycyB0byBVUkwgc28gdGhhdCBzZXJ2ZXIgY2FuIGFkYXB0IHRoZSBzdHJlYW0uLi5cbiAgICAgICAgICAgIHZhciByZXFHZXRBcmdzID0ge307XG4gICAgICAgICAgICBpZiAoZXZzLmdldEFyZ3MpIHtcblxuICAgICAgICAgICAgICAgIC8vIGNvcHkgZXZzLmdldEFyZ3MgaW4gcmVxR2V0QXJnc1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0QXJncyA9IGV2cy5nZXRBcmdzO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGVmYXVsdEFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0QXJncy5oYXNPd25Qcm9wZXJ0eShrZXkpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFHZXRBcmdzW2tleV0gPSBkZWZhdWx0QXJnc1trZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGV2cy5sYXN0RXZlbnRJZCl7XG4gICAgICAgICAgICAgICAgICAgIHJlcUdldEFyZ3NbJ2V2c19sYXN0X2V2ZW50X2lkJ10gPSBldnMubGFzdEV2ZW50SWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gc2VuZCB0aGUgcmVxdWVzdFxuXG4gICAgICAgICAgICByZXF1ZXN0Lm9wZW4oJ0dFVCcsIGV2cy51cmxXaXRoUGFyYW1zKGV2cy5VUkwscmVxR2V0QXJncykpO1xuICAgICAgICAgICAgcmVxdWVzdC5zZW5kKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgRXZlbnRTb3VyY2UucHJvdG90eXBlLlhIUi5wcm90b3R5cGUgPSB7XG5cbiAgICAgICAgICAgIHVzZVhEb21haW5SZXF1ZXN0OiB0cnVlLFxuXG4gICAgICAgICAgICBfcmVxdWVzdDogbnVsbCxcblxuICAgICAgICAgICAgX3JlYWR5OiBmYWxzZSwgLy8gdHJ1ZSB3aGVuIHByb2dyZXNzIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZFxuXG4gICAgICAgICAgICBfbG9hZGVkOiBmYWxzZSwgLy8gdHJ1ZSB3aGVuIHJlcXVlc3QgaGFzIGJlZW4gbG9hZGVkXG5cbiAgICAgICAgICAgIF9mYWlsZWQ6IGZhbHNlLCAvLyB0cnVlIGlmIHdoZW4gcmVxdWVzdCBpcyBpbiBlcnJvclxuXG4gICAgICAgICAgICBpc1JlYWR5OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0Ll9yZWFkeTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzRG9uZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdC5fbG9hZGVkO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFzRXJyb3I6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QuX2ZhaWxlZDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEJ1ZmZlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcnYgPSAnJztcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBydiA9IHRoaXMuX3JlcXVlc3QucmVzcG9uc2VUZXh0IHx8ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSl7fVxuICAgICAgICAgICAgICAgIHJldHVybiBydjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICggdGhpcy5fcmVxdWVzdCl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTWVzc2FnZUV2ZW50KHR5cGUsIGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQpIHtcblxuICAgICAgICB0aGlzLmJ1YmJsZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYW5jZWxCdWJibGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYW5jZWxhYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5vcmlnaW4gPSBvcmlnaW4gfHwgJyc7XG4gICAgICAgIHRoaXMubGFzdEV2ZW50SWQgPSBsYXN0RXZlbnRJZCB8fCAnJztcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZSB8fCAnbWVzc2FnZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPbGRJRSAoKSB7XG5cbiAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiB3ZSBhcmUgaW4gSUU4IG9yIElFOVxuICAgICAgICByZXR1cm4gKHdpbmRvdy5YRG9tYWluUmVxdWVzdCAmJiAod2luZG93LlhNTEh0dHBSZXF1ZXN0ICYmIG5ldyBYTUxIdHRwUmVxdWVzdCgpLnJlc3BvbnNlVHlwZSA9PT0gdW5kZWZpbmVkKSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZ2xvYmFsW2V2c0ltcG9ydE5hbWVdID0gRXZlbnRTb3VyY2U7XG59KSh0aGlzKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/eventsource-polyfill/dist/eventsource.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/html-entities/index.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/html-entities/index.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = {\n XmlEntities: __webpack_require__(/*! ./lib/xml-entities.js */ \"./node_modules/html-entities/lib/xml-entities.js\"),\n Html4Entities: __webpack_require__(/*! ./lib/html4-entities.js */ \"./node_modules/html-entities/lib/html4-entities.js\"),\n Html5Entities: __webpack_require__(/*! ./lib/html5-entities.js */ \"./node_modules/html-entities/lib/html5-entities.js\"),\n AllHtmlEntities: __webpack_require__(/*! ./lib/html5-entities.js */ \"./node_modules/html-entities/lib/html5-entities.js\")\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaHRtbC1lbnRpdGllcy9pbmRleC5qcz84MmM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLCtFQUF1QjtBQUM5QyxpQkFBaUIsbUJBQU8sQ0FBQyxtRkFBeUI7QUFDbEQsaUJBQWlCLG1CQUFPLENBQUMsbUZBQXlCO0FBQ2xELG1CQUFtQixtQkFBTyxDQUFDLG1GQUF5QjtBQUNwRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9odG1sLWVudGl0aWVzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gIFhtbEVudGl0aWVzOiByZXF1aXJlKCcuL2xpYi94bWwtZW50aXRpZXMuanMnKSxcbiAgSHRtbDRFbnRpdGllczogcmVxdWlyZSgnLi9saWIvaHRtbDQtZW50aXRpZXMuanMnKSxcbiAgSHRtbDVFbnRpdGllczogcmVxdWlyZSgnLi9saWIvaHRtbDUtZW50aXRpZXMuanMnKSxcbiAgQWxsSHRtbEVudGl0aWVzOiByZXF1aXJlKCcuL2xpYi9odG1sNS1lbnRpdGllcy5qcycpXG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/html-entities/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/html-entities/lib/html4-entities.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/html-entities/lib/html4-entities.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var HTML_ALPHA = ['apos', 'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect', 'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr', 'deg', 'plusmn', 'sup2', 'sup3', 'acute', 'micro', 'para', 'middot', 'cedil', 'sup1', 'ordm', 'raquo', 'frac14', 'frac12', 'frac34', 'iquest', 'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'Aelig', 'Ccedil', 'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml', 'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times', 'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig', 'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil', 'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml', 'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide', 'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml', 'quot', 'amp', 'lt', 'gt', 'OElig', 'oelig', 'Scaron', 'scaron', 'Yuml', 'circ', 'tilde', 'ensp', 'emsp', 'thinsp', 'zwnj', 'zwj', 'lrm', 'rlm', 'ndash', 'mdash', 'lsquo', 'rsquo', 'sbquo', 'ldquo', 'rdquo', 'bdquo', 'dagger', 'Dagger', 'permil', 'lsaquo', 'rsaquo', 'euro', 'fnof', 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigmaf', 'sigma', 'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega', 'thetasym', 'upsih', 'piv', 'bull', 'hellip', 'prime', 'Prime', 'oline', 'frasl', 'weierp', 'image', 'real', 'trade', 'alefsym', 'larr', 'uarr', 'rarr', 'darr', 'harr', 'crarr', 'lArr', 'uArr', 'rArr', 'dArr', 'hArr', 'forall', 'part', 'exist', 'empty', 'nabla', 'isin', 'notin', 'ni', 'prod', 'sum', 'minus', 'lowast', 'radic', 'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup', 'int', 'there4', 'sim', 'cong', 'asymp', 'ne', 'equiv', 'le', 'ge', 'sub', 'sup', 'nsub', 'sube', 'supe', 'oplus', 'otimes', 'perp', 'sdot', 'lceil', 'rceil', 'lfloor', 'rfloor', 'lang', 'rang', 'loz', 'spades', 'clubs', 'hearts', 'diams'];\nvar HTML_CODES = [39, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 34, 38, 60, 62, 338, 339, 352, 353, 376, 710, 732, 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, 402, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8226, 8230, 8242, 8243, 8254, 8260, 8472, 8465, 8476, 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830];\n\nvar alphaIndex = {};\nvar numIndex = {};\n\nvar i = 0;\nvar length = HTML_ALPHA.length;\nwhile (i < length) {\n var a = HTML_ALPHA[i];\n var c = HTML_CODES[i];\n alphaIndex[a] = String.fromCharCode(c);\n numIndex[c] = a;\n i++;\n}\n\n/**\n * @constructor\n */\nfunction Html4Entities() {}\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.prototype.decode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&(#?[\\w\\d]+);?/g, function(s, entity) {\n var chr;\n if (entity.charAt(0) === \"#\") {\n var code = entity.charAt(1).toLowerCase() === 'x' ?\n parseInt(entity.substr(2), 16) :\n parseInt(entity.substr(1));\n\n if (!(isNaN(code) || code < -32768 || code > 65535)) {\n chr = String.fromCharCode(code);\n }\n } else {\n chr = alphaIndex[entity];\n }\n return chr || s;\n });\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.decode = function(str) {\n return new Html4Entities().decode(str);\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.prototype.encode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var alpha = numIndex[str.charCodeAt(i)];\n result += alpha ? \"&\" + alpha + \";\" : str.charAt(i);\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.encode = function(str) {\n return new Html4Entities().encode(str);\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.prototype.encodeNonUTF = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var cc = str.charCodeAt(i);\n var alpha = numIndex[cc];\n if (alpha) {\n result += \"&\" + alpha + \";\";\n } else if (cc < 32 || cc > 126) {\n result += \"&#\" + cc + \";\";\n } else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.encodeNonUTF = function(str) {\n return new Html4Entities().encodeNonUTF(str);\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.prototype.encodeNonASCII = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n result += '&#' + c + ';';\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml4Entities.encodeNonASCII = function(str) {\n return new Html4Entities().encodeNonASCII(str);\n};\n\nmodule.exports = Html4Entities;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaHRtbC1lbnRpdGllcy9saWIvaHRtbDQtZW50aXRpZXMuanM/MWYwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDLFNBQVM7QUFDVCxvQ0FBb0M7QUFDcEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2h0bWwtZW50aXRpZXMvbGliL2h0bWw0LWVudGl0aWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIEhUTUxfQUxQSEEgPSBbJ2Fwb3MnLCAnbmJzcCcsICdpZXhjbCcsICdjZW50JywgJ3BvdW5kJywgJ2N1cnJlbicsICd5ZW4nLCAnYnJ2YmFyJywgJ3NlY3QnLCAndW1sJywgJ2NvcHknLCAnb3JkZicsICdsYXF1bycsICdub3QnLCAnc2h5JywgJ3JlZycsICdtYWNyJywgJ2RlZycsICdwbHVzbW4nLCAnc3VwMicsICdzdXAzJywgJ2FjdXRlJywgJ21pY3JvJywgJ3BhcmEnLCAnbWlkZG90JywgJ2NlZGlsJywgJ3N1cDEnLCAnb3JkbScsICdyYXF1bycsICdmcmFjMTQnLCAnZnJhYzEyJywgJ2ZyYWMzNCcsICdpcXVlc3QnLCAnQWdyYXZlJywgJ0FhY3V0ZScsICdBY2lyYycsICdBdGlsZGUnLCAnQXVtbCcsICdBcmluZycsICdBZWxpZycsICdDY2VkaWwnLCAnRWdyYXZlJywgJ0VhY3V0ZScsICdFY2lyYycsICdFdW1sJywgJ0lncmF2ZScsICdJYWN1dGUnLCAnSWNpcmMnLCAnSXVtbCcsICdFVEgnLCAnTnRpbGRlJywgJ09ncmF2ZScsICdPYWN1dGUnLCAnT2NpcmMnLCAnT3RpbGRlJywgJ091bWwnLCAndGltZXMnLCAnT3NsYXNoJywgJ1VncmF2ZScsICdVYWN1dGUnLCAnVWNpcmMnLCAnVXVtbCcsICdZYWN1dGUnLCAnVEhPUk4nLCAnc3psaWcnLCAnYWdyYXZlJywgJ2FhY3V0ZScsICdhY2lyYycsICdhdGlsZGUnLCAnYXVtbCcsICdhcmluZycsICdhZWxpZycsICdjY2VkaWwnLCAnZWdyYXZlJywgJ2VhY3V0ZScsICdlY2lyYycsICdldW1sJywgJ2lncmF2ZScsICdpYWN1dGUnLCAnaWNpcmMnLCAnaXVtbCcsICdldGgnLCAnbnRpbGRlJywgJ29ncmF2ZScsICdvYWN1dGUnLCAnb2NpcmMnLCAnb3RpbGRlJywgJ291bWwnLCAnZGl2aWRlJywgJ29zbGFzaCcsICd1Z3JhdmUnLCAndWFjdXRlJywgJ3VjaXJjJywgJ3V1bWwnLCAneWFjdXRlJywgJ3Rob3JuJywgJ3l1bWwnLCAncXVvdCcsICdhbXAnLCAnbHQnLCAnZ3QnLCAnT0VsaWcnLCAnb2VsaWcnLCAnU2Nhcm9uJywgJ3NjYXJvbicsICdZdW1sJywgJ2NpcmMnLCAndGlsZGUnLCAnZW5zcCcsICdlbXNwJywgJ3RoaW5zcCcsICd6d25qJywgJ3p3aicsICdscm0nLCAncmxtJywgJ25kYXNoJywgJ21kYXNoJywgJ2xzcXVvJywgJ3JzcXVvJywgJ3NicXVvJywgJ2xkcXVvJywgJ3JkcXVvJywgJ2JkcXVvJywgJ2RhZ2dlcicsICdEYWdnZXInLCAncGVybWlsJywgJ2xzYXF1bycsICdyc2FxdW8nLCAnZXVybycsICdmbm9mJywgJ0FscGhhJywgJ0JldGEnLCAnR2FtbWEnLCAnRGVsdGEnLCAnRXBzaWxvbicsICdaZXRhJywgJ0V0YScsICdUaGV0YScsICdJb3RhJywgJ0thcHBhJywgJ0xhbWJkYScsICdNdScsICdOdScsICdYaScsICdPbWljcm9uJywgJ1BpJywgJ1JobycsICdTaWdtYScsICdUYXUnLCAnVXBzaWxvbicsICdQaGknLCAnQ2hpJywgJ1BzaScsICdPbWVnYScsICdhbHBoYScsICdiZXRhJywgJ2dhbW1hJywgJ2RlbHRhJywgJ2Vwc2lsb24nLCAnemV0YScsICdldGEnLCAndGhldGEnLCAnaW90YScsICdrYXBwYScsICdsYW1iZGEnLCAnbXUnLCAnbnUnLCAneGknLCAnb21pY3JvbicsICdwaScsICdyaG8nLCAnc2lnbWFmJywgJ3NpZ21hJywgJ3RhdScsICd1cHNpbG9uJywgJ3BoaScsICdjaGknLCAncHNpJywgJ29tZWdhJywgJ3RoZXRhc3ltJywgJ3Vwc2loJywgJ3BpdicsICdidWxsJywgJ2hlbGxpcCcsICdwcmltZScsICdQcmltZScsICdvbGluZScsICdmcmFzbCcsICd3ZWllcnAnLCAnaW1hZ2UnLCAncmVhbCcsICd0cmFkZScsICdhbGVmc3ltJywgJ2xhcnInLCAndWFycicsICdyYXJyJywgJ2RhcnInLCAnaGFycicsICdjcmFycicsICdsQXJyJywgJ3VBcnInLCAnckFycicsICdkQXJyJywgJ2hBcnInLCAnZm9yYWxsJywgJ3BhcnQnLCAnZXhpc3QnLCAnZW1wdHknLCAnbmFibGEnLCAnaXNpbicsICdub3RpbicsICduaScsICdwcm9kJywgJ3N1bScsICdtaW51cycsICdsb3dhc3QnLCAncmFkaWMnLCAncHJvcCcsICdpbmZpbicsICdhbmcnLCAnYW5kJywgJ29yJywgJ2NhcCcsICdjdXAnLCAnaW50JywgJ3RoZXJlNCcsICdzaW0nLCAnY29uZycsICdhc3ltcCcsICduZScsICdlcXVpdicsICdsZScsICdnZScsICdzdWInLCAnc3VwJywgJ25zdWInLCAnc3ViZScsICdzdXBlJywgJ29wbHVzJywgJ290aW1lcycsICdwZXJwJywgJ3Nkb3QnLCAnbGNlaWwnLCAncmNlaWwnLCAnbGZsb29yJywgJ3JmbG9vcicsICdsYW5nJywgJ3JhbmcnLCAnbG96JywgJ3NwYWRlcycsICdjbHVicycsICdoZWFydHMnLCAnZGlhbXMnXTtcbnZhciBIVE1MX0NPREVTID0gWzM5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LCAyMzUsIDIzNiwgMjM3LCAyMzgsIDIzOSwgMjQwLCAyNDEsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCAzNCwgMzgsIDYwLCA2MiwgMzM4LCAzMzksIDM1MiwgMzUzLCAzNzYsIDcxMCwgNzMyLCA4MTk0LCA4MTk1LCA4MjAxLCA4MjA0LCA4MjA1LCA4MjA2LCA4MjA3LCA4MjExLCA4MjEyLCA4MjE2LCA4MjE3LCA4MjE4LCA4MjIwLCA4MjIxLCA4MjIyLCA4MjI0LCA4MjI1LCA4MjQwLCA4MjQ5LCA4MjUwLCA4MzY0LCA0MDIsIDkxMywgOTE0LCA5MTUsIDkxNiwgOTE3LCA5MTgsIDkxOSwgOTIwLCA5MjEsIDkyMiwgOTIzLCA5MjQsIDkyNSwgOTI2LCA5MjcsIDkyOCwgOTI5LCA5MzEsIDkzMiwgOTMzLCA5MzQsIDkzNSwgOTM2LCA5MzcsIDk0NSwgOTQ2LCA5NDcsIDk0OCwgOTQ5LCA5NTAsIDk1MSwgOTUyLCA5NTMsIDk1NCwgOTU1LCA5NTYsIDk1NywgOTU4LCA5NTksIDk2MCwgOTYxLCA5NjIsIDk2MywgOTY0LCA5NjUsIDk2NiwgOTY3LCA5NjgsIDk2OSwgOTc3LCA5NzgsIDk4MiwgODIyNiwgODIzMCwgODI0MiwgODI0MywgODI1NCwgODI2MCwgODQ3MiwgODQ2NSwgODQ3NiwgODQ4MiwgODUwMSwgODU5MiwgODU5MywgODU5NCwgODU5NSwgODU5NiwgODYyOSwgODY1NiwgODY1NywgODY1OCwgODY1OSwgODY2MCwgODcwNCwgODcwNiwgODcwNywgODcwOSwgODcxMSwgODcxMiwgODcxMywgODcxNSwgODcxOSwgODcyMSwgODcyMiwgODcyNywgODczMCwgODczMywgODczNCwgODczNiwgODc0MywgODc0NCwgODc0NSwgODc0NiwgODc0NywgODc1NiwgODc2NCwgODc3MywgODc3NiwgODgwMCwgODgwMSwgODgwNCwgODgwNSwgODgzNCwgODgzNSwgODgzNiwgODgzOCwgODgzOSwgODg1MywgODg1NSwgODg2OSwgODkwMSwgODk2OCwgODk2OSwgODk3MCwgODk3MSwgOTAwMSwgOTAwMiwgOTY3NCwgOTgyNCwgOTgyNywgOTgyOSwgOTgzMF07XG5cbnZhciBhbHBoYUluZGV4ID0ge307XG52YXIgbnVtSW5kZXggPSB7fTtcblxudmFyIGkgPSAwO1xudmFyIGxlbmd0aCA9IEhUTUxfQUxQSEEubGVuZ3RoO1xud2hpbGUgKGkgPCBsZW5ndGgpIHtcbiAgICB2YXIgYSA9IEhUTUxfQUxQSEFbaV07XG4gICAgdmFyIGMgPSBIVE1MX0NPREVTW2ldO1xuICAgIGFscGhhSW5kZXhbYV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgIG51bUluZGV4W2NdID0gYTtcbiAgICBpKys7XG59XG5cbi8qKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIEh0bWw0RW50aXRpZXMoKSB7fVxuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbkh0bWw0RW50aXRpZXMucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIGlmICghc3RyIHx8ICFzdHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8mKCM/W1xcd1xcZF0rKTs/L2csIGZ1bmN0aW9uKHMsIGVudGl0eSkge1xuICAgICAgICB2YXIgY2hyO1xuICAgICAgICBpZiAoZW50aXR5LmNoYXJBdCgwKSA9PT0gXCIjXCIpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gZW50aXR5LmNoYXJBdCgxKS50b0xvd2VyQ2FzZSgpID09PSAneCcgP1xuICAgICAgICAgICAgICAgIHBhcnNlSW50KGVudGl0eS5zdWJzdHIoMiksIDE2KSA6XG4gICAgICAgICAgICAgICAgcGFyc2VJbnQoZW50aXR5LnN1YnN0cigxKSk7XG5cbiAgICAgICAgICAgIGlmICghKGlzTmFOKGNvZGUpIHx8IGNvZGUgPCAtMzI3NjggfHwgY29kZSA+IDY1NTM1KSkge1xuICAgICAgICAgICAgICAgIGNociA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaHIgPSBhbHBoYUluZGV4W2VudGl0eV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNociB8fCBzO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5IdG1sNEVudGl0aWVzLmRlY29kZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBuZXcgSHRtbDRFbnRpdGllcygpLmRlY29kZShzdHIpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5IdG1sNEVudGl0aWVzLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICBpZiAoIXN0ciB8fCAhc3RyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHZhciBzdHJMZW5ndGggPSBzdHIubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBzdHJMZW5ndGgpIHtcbiAgICAgICAgdmFyIGFscGhhID0gbnVtSW5kZXhbc3RyLmNoYXJDb2RlQXQoaSldO1xuICAgICAgICByZXN1bHQgKz0gYWxwaGEgPyBcIiZcIiArIGFscGhhICsgXCI7XCIgOiBzdHIuY2hhckF0KGkpO1xuICAgICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbkh0bWw0RW50aXRpZXMuZW5jb2RlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBIdG1sNEVudGl0aWVzKCkuZW5jb2RlKHN0cik7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbkh0bWw0RW50aXRpZXMucHJvdG90eXBlLmVuY29kZU5vblVURiA9IGZ1bmN0aW9uKHN0cikge1xuICAgIGlmICghc3RyIHx8ICFzdHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgdmFyIHN0ckxlbmd0aCA9IHN0ci5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAoaSA8IHN0ckxlbmd0aCkge1xuICAgICAgICB2YXIgY2MgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgdmFyIGFscGhhID0gbnVtSW5kZXhbY2NdO1xuICAgICAgICBpZiAoYWxwaGEpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBcIiZcIiArIGFscGhhICsgXCI7XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoY2MgPCAzMiB8fCBjYyA+IDEyNikge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFwiJiNcIiArIGNjICsgXCI7XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gc3RyLmNoYXJBdChpKTtcbiAgICAgICAgfVxuICAgICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbkh0bWw0RW50aXRpZXMuZW5jb2RlTm9uVVRGID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBIdG1sNEVudGl0aWVzKCkuZW5jb2RlTm9uVVRGKHN0cik7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbkh0bWw0RW50aXRpZXMucHJvdG90eXBlLmVuY29kZU5vbkFTQ0lJID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgaWYgKCFzdHIgfHwgIXN0ci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICB2YXIgc3RyTGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgc3RyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGlmIChjIDw9IDI1NSkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IHN0cltpKytdO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ICs9ICcmIycgKyBjICsgJzsnO1xuICAgICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbkh0bWw0RW50aXRpZXMuZW5jb2RlTm9uQVNDSUkgPSBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gbmV3IEh0bWw0RW50aXRpZXMoKS5lbmNvZGVOb25BU0NJSShzdHIpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIdG1sNEVudGl0aWVzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/html-entities/lib/html4-entities.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/html-entities/lib/html5-entities.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/html-entities/lib/html5-entities.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var ENTITIES = [['Aacute', [193]], ['aacute', [225]], ['Abreve', [258]], ['abreve', [259]], ['ac', [8766]], ['acd', [8767]], ['acE', [8766, 819]], ['Acirc', [194]], ['acirc', [226]], ['acute', [180]], ['Acy', [1040]], ['acy', [1072]], ['AElig', [198]], ['aelig', [230]], ['af', [8289]], ['Afr', [120068]], ['afr', [120094]], ['Agrave', [192]], ['agrave', [224]], ['alefsym', [8501]], ['aleph', [8501]], ['Alpha', [913]], ['alpha', [945]], ['Amacr', [256]], ['amacr', [257]], ['amalg', [10815]], ['amp', [38]], ['AMP', [38]], ['andand', [10837]], ['And', [10835]], ['and', [8743]], ['andd', [10844]], ['andslope', [10840]], ['andv', [10842]], ['ang', [8736]], ['ange', [10660]], ['angle', [8736]], ['angmsdaa', [10664]], ['angmsdab', [10665]], ['angmsdac', [10666]], ['angmsdad', [10667]], ['angmsdae', [10668]], ['angmsdaf', [10669]], ['angmsdag', [10670]], ['angmsdah', [10671]], ['angmsd', [8737]], ['angrt', [8735]], ['angrtvb', [8894]], ['angrtvbd', [10653]], ['angsph', [8738]], ['angst', [197]], ['angzarr', [9084]], ['Aogon', [260]], ['aogon', [261]], ['Aopf', [120120]], ['aopf', [120146]], ['apacir', [10863]], ['ap', [8776]], ['apE', [10864]], ['ape', [8778]], ['apid', [8779]], ['apos', [39]], ['ApplyFunction', [8289]], ['approx', [8776]], ['approxeq', [8778]], ['Aring', [197]], ['aring', [229]], ['Ascr', [119964]], ['ascr', [119990]], ['Assign', [8788]], ['ast', [42]], ['asymp', [8776]], ['asympeq', [8781]], ['Atilde', [195]], ['atilde', [227]], ['Auml', [196]], ['auml', [228]], ['awconint', [8755]], ['awint', [10769]], ['backcong', [8780]], ['backepsilon', [1014]], ['backprime', [8245]], ['backsim', [8765]], ['backsimeq', [8909]], ['Backslash', [8726]], ['Barv', [10983]], ['barvee', [8893]], ['barwed', [8965]], ['Barwed', [8966]], ['barwedge', [8965]], ['bbrk', [9141]], ['bbrktbrk', [9142]], ['bcong', [8780]], ['Bcy', [1041]], ['bcy', [1073]], ['bdquo', [8222]], ['becaus', [8757]], ['because', [8757]], ['Because', [8757]], ['bemptyv', [10672]], ['bepsi', [1014]], ['bernou', [8492]], ['Bernoullis', [8492]], ['Beta', [914]], ['beta', [946]], ['beth', [8502]], ['between', [8812]], ['Bfr', [120069]], ['bfr', [120095]], ['bigcap', [8898]], ['bigcirc', [9711]], ['bigcup', [8899]], ['bigodot', [10752]], ['bigoplus', [10753]], ['bigotimes', [10754]], ['bigsqcup', [10758]], ['bigstar', [9733]], ['bigtriangledown', [9661]], ['bigtriangleup', [9651]], ['biguplus', [10756]], ['bigvee', [8897]], ['bigwedge', [8896]], ['bkarow', [10509]], ['blacklozenge', [10731]], ['blacksquare', [9642]], ['blacktriangle', [9652]], ['blacktriangledown', [9662]], ['blacktriangleleft', [9666]], ['blacktriangleright', [9656]], ['blank', [9251]], ['blk12', [9618]], ['blk14', [9617]], ['blk34', [9619]], ['block', [9608]], ['bne', [61, 8421]], ['bnequiv', [8801, 8421]], ['bNot', [10989]], ['bnot', [8976]], ['Bopf', [120121]], ['bopf', [120147]], ['bot', [8869]], ['bottom', [8869]], ['bowtie', [8904]], ['boxbox', [10697]], ['boxdl', [9488]], ['boxdL', [9557]], ['boxDl', [9558]], ['boxDL', [9559]], ['boxdr', [9484]], ['boxdR', [9554]], ['boxDr', [9555]], ['boxDR', [9556]], ['boxh', [9472]], ['boxH', [9552]], ['boxhd', [9516]], ['boxHd', [9572]], ['boxhD', [9573]], ['boxHD', [9574]], ['boxhu', [9524]], ['boxHu', [9575]], ['boxhU', [9576]], ['boxHU', [9577]], ['boxminus', [8863]], ['boxplus', [8862]], ['boxtimes', [8864]], ['boxul', [9496]], ['boxuL', [9563]], ['boxUl', [9564]], ['boxUL', [9565]], ['boxur', [9492]], ['boxuR', [9560]], ['boxUr', [9561]], ['boxUR', [9562]], ['boxv', [9474]], ['boxV', [9553]], ['boxvh', [9532]], ['boxvH', [9578]], ['boxVh', [9579]], ['boxVH', [9580]], ['boxvl', [9508]], ['boxvL', [9569]], ['boxVl', [9570]], ['boxVL', [9571]], ['boxvr', [9500]], ['boxvR', [9566]], ['boxVr', [9567]], ['boxVR', [9568]], ['bprime', [8245]], ['breve', [728]], ['Breve', [728]], ['brvbar', [166]], ['bscr', [119991]], ['Bscr', [8492]], ['bsemi', [8271]], ['bsim', [8765]], ['bsime', [8909]], ['bsolb', [10693]], ['bsol', [92]], ['bsolhsub', [10184]], ['bull', [8226]], ['bullet', [8226]], ['bump', [8782]], ['bumpE', [10926]], ['bumpe', [8783]], ['Bumpeq', [8782]], ['bumpeq', [8783]], ['Cacute', [262]], ['cacute', [263]], ['capand', [10820]], ['capbrcup', [10825]], ['capcap', [10827]], ['cap', [8745]], ['Cap', [8914]], ['capcup', [10823]], ['capdot', [10816]], ['CapitalDifferentialD', [8517]], ['caps', [8745, 65024]], ['caret', [8257]], ['caron', [711]], ['Cayleys', [8493]], ['ccaps', [10829]], ['Ccaron', [268]], ['ccaron', [269]], ['Ccedil', [199]], ['ccedil', [231]], ['Ccirc', [264]], ['ccirc', [265]], ['Cconint', [8752]], ['ccups', [10828]], ['ccupssm', [10832]], ['Cdot', [266]], ['cdot', [267]], ['cedil', [184]], ['Cedilla', [184]], ['cemptyv', [10674]], ['cent', [162]], ['centerdot', [183]], ['CenterDot', [183]], ['cfr', [120096]], ['Cfr', [8493]], ['CHcy', [1063]], ['chcy', [1095]], ['check', [10003]], ['checkmark', [10003]], ['Chi', [935]], ['chi', [967]], ['circ', [710]], ['circeq', [8791]], ['circlearrowleft', [8634]], ['circlearrowright', [8635]], ['circledast', [8859]], ['circledcirc', [8858]], ['circleddash', [8861]], ['CircleDot', [8857]], ['circledR', [174]], ['circledS', [9416]], ['CircleMinus', [8854]], ['CirclePlus', [8853]], ['CircleTimes', [8855]], ['cir', [9675]], ['cirE', [10691]], ['cire', [8791]], ['cirfnint', [10768]], ['cirmid', [10991]], ['cirscir', [10690]], ['ClockwiseContourIntegral', [8754]], ['clubs', [9827]], ['clubsuit', [9827]], ['colon', [58]], ['Colon', [8759]], ['Colone', [10868]], ['colone', [8788]], ['coloneq', [8788]], ['comma', [44]], ['commat', [64]], ['comp', [8705]], ['compfn', [8728]], ['complement', [8705]], ['complexes', [8450]], ['cong', [8773]], ['congdot', [10861]], ['Congruent', [8801]], ['conint', [8750]], ['Conint', [8751]], ['ContourIntegral', [8750]], ['copf', [120148]], ['Copf', [8450]], ['coprod', [8720]], ['Coproduct', [8720]], ['copy', [169]], ['COPY', [169]], ['copysr', [8471]], ['CounterClockwiseContourIntegral', [8755]], ['crarr', [8629]], ['cross', [10007]], ['Cross', [10799]], ['Cscr', [119966]], ['cscr', [119992]], ['csub', [10959]], ['csube', [10961]], ['csup', [10960]], ['csupe', [10962]], ['ctdot', [8943]], ['cudarrl', [10552]], ['cudarrr', [10549]], ['cuepr', [8926]], ['cuesc', [8927]], ['cularr', [8630]], ['cularrp', [10557]], ['cupbrcap', [10824]], ['cupcap', [10822]], ['CupCap', [8781]], ['cup', [8746]], ['Cup', [8915]], ['cupcup', [10826]], ['cupdot', [8845]], ['cupor', [10821]], ['cups', [8746, 65024]], ['curarr', [8631]], ['curarrm', [10556]], ['curlyeqprec', [8926]], ['curlyeqsucc', [8927]], ['curlyvee', [8910]], ['curlywedge', [8911]], ['curren', [164]], ['curvearrowleft', [8630]], ['curvearrowright', [8631]], ['cuvee', [8910]], ['cuwed', [8911]], ['cwconint', [8754]], ['cwint', [8753]], ['cylcty', [9005]], ['dagger', [8224]], ['Dagger', [8225]], ['daleth', [8504]], ['darr', [8595]], ['Darr', [8609]], ['dArr', [8659]], ['dash', [8208]], ['Dashv', [10980]], ['dashv', [8867]], ['dbkarow', [10511]], ['dblac', [733]], ['Dcaron', [270]], ['dcaron', [271]], ['Dcy', [1044]], ['dcy', [1076]], ['ddagger', [8225]], ['ddarr', [8650]], ['DD', [8517]], ['dd', [8518]], ['DDotrahd', [10513]], ['ddotseq', [10871]], ['deg', [176]], ['Del', [8711]], ['Delta', [916]], ['delta', [948]], ['demptyv', [10673]], ['dfisht', [10623]], ['Dfr', [120071]], ['dfr', [120097]], ['dHar', [10597]], ['dharl', [8643]], ['dharr', [8642]], ['DiacriticalAcute', [180]], ['DiacriticalDot', [729]], ['DiacriticalDoubleAcute', [733]], ['DiacriticalGrave', [96]], ['DiacriticalTilde', [732]], ['diam', [8900]], ['diamond', [8900]], ['Diamond', [8900]], ['diamondsuit', [9830]], ['diams', [9830]], ['die', [168]], ['DifferentialD', [8518]], ['digamma', [989]], ['disin', [8946]], ['div', [247]], ['divide', [247]], ['divideontimes', [8903]], ['divonx', [8903]], ['DJcy', [1026]], ['djcy', [1106]], ['dlcorn', [8990]], ['dlcrop', [8973]], ['dollar', [36]], ['Dopf', [120123]], ['dopf', [120149]], ['Dot', [168]], ['dot', [729]], ['DotDot', [8412]], ['doteq', [8784]], ['doteqdot', [8785]], ['DotEqual', [8784]], ['dotminus', [8760]], ['dotplus', [8724]], ['dotsquare', [8865]], ['doublebarwedge', [8966]], ['DoubleContourIntegral', [8751]], ['DoubleDot', [168]], ['DoubleDownArrow', [8659]], ['DoubleLeftArrow', [8656]], ['DoubleLeftRightArrow', [8660]], ['DoubleLeftTee', [10980]], ['DoubleLongLeftArrow', [10232]], ['DoubleLongLeftRightArrow', [10234]], ['DoubleLongRightArrow', [10233]], ['DoubleRightArrow', [8658]], ['DoubleRightTee', [8872]], ['DoubleUpArrow', [8657]], ['DoubleUpDownArrow', [8661]], ['DoubleVerticalBar', [8741]], ['DownArrowBar', [10515]], ['downarrow', [8595]], ['DownArrow', [8595]], ['Downarrow', [8659]], ['DownArrowUpArrow', [8693]], ['DownBreve', [785]], ['downdownarrows', [8650]], ['downharpoonleft', [8643]], ['downharpoonright', [8642]], ['DownLeftRightVector', [10576]], ['DownLeftTeeVector', [10590]], ['DownLeftVectorBar', [10582]], ['DownLeftVector', [8637]], ['DownRightTeeVector', [10591]], ['DownRightVectorBar', [10583]], ['DownRightVector', [8641]], ['DownTeeArrow', [8615]], ['DownTee', [8868]], ['drbkarow', [10512]], ['drcorn', [8991]], ['drcrop', [8972]], ['Dscr', [119967]], ['dscr', [119993]], ['DScy', [1029]], ['dscy', [1109]], ['dsol', [10742]], ['Dstrok', [272]], ['dstrok', [273]], ['dtdot', [8945]], ['dtri', [9663]], ['dtrif', [9662]], ['duarr', [8693]], ['duhar', [10607]], ['dwangle', [10662]], ['DZcy', [1039]], ['dzcy', [1119]], ['dzigrarr', [10239]], ['Eacute', [201]], ['eacute', [233]], ['easter', [10862]], ['Ecaron', [282]], ['ecaron', [283]], ['Ecirc', [202]], ['ecirc', [234]], ['ecir', [8790]], ['ecolon', [8789]], ['Ecy', [1069]], ['ecy', [1101]], ['eDDot', [10871]], ['Edot', [278]], ['edot', [279]], ['eDot', [8785]], ['ee', [8519]], ['efDot', [8786]], ['Efr', [120072]], ['efr', [120098]], ['eg', [10906]], ['Egrave', [200]], ['egrave', [232]], ['egs', [10902]], ['egsdot', [10904]], ['el', [10905]], ['Element', [8712]], ['elinters', [9191]], ['ell', [8467]], ['els', [10901]], ['elsdot', [10903]], ['Emacr', [274]], ['emacr', [275]], ['empty', [8709]], ['emptyset', [8709]], ['EmptySmallSquare', [9723]], ['emptyv', [8709]], ['EmptyVerySmallSquare', [9643]], ['emsp13', [8196]], ['emsp14', [8197]], ['emsp', [8195]], ['ENG', [330]], ['eng', [331]], ['ensp', [8194]], ['Eogon', [280]], ['eogon', [281]], ['Eopf', [120124]], ['eopf', [120150]], ['epar', [8917]], ['eparsl', [10723]], ['eplus', [10865]], ['epsi', [949]], ['Epsilon', [917]], ['epsilon', [949]], ['epsiv', [1013]], ['eqcirc', [8790]], ['eqcolon', [8789]], ['eqsim', [8770]], ['eqslantgtr', [10902]], ['eqslantless', [10901]], ['Equal', [10869]], ['equals', [61]], ['EqualTilde', [8770]], ['equest', [8799]], ['Equilibrium', [8652]], ['equiv', [8801]], ['equivDD', [10872]], ['eqvparsl', [10725]], ['erarr', [10609]], ['erDot', [8787]], ['escr', [8495]], ['Escr', [8496]], ['esdot', [8784]], ['Esim', [10867]], ['esim', [8770]], ['Eta', [919]], ['eta', [951]], ['ETH', [208]], ['eth', [240]], ['Euml', [203]], ['euml', [235]], ['euro', [8364]], ['excl', [33]], ['exist', [8707]], ['Exists', [8707]], ['expectation', [8496]], ['exponentiale', [8519]], ['ExponentialE', [8519]], ['fallingdotseq', [8786]], ['Fcy', [1060]], ['fcy', [1092]], ['female', [9792]], ['ffilig', [64259]], ['fflig', [64256]], ['ffllig', [64260]], ['Ffr', [120073]], ['ffr', [120099]], ['filig', [64257]], ['FilledSmallSquare', [9724]], ['FilledVerySmallSquare', [9642]], ['fjlig', [102, 106]], ['flat', [9837]], ['fllig', [64258]], ['fltns', [9649]], ['fnof', [402]], ['Fopf', [120125]], ['fopf', [120151]], ['forall', [8704]], ['ForAll', [8704]], ['fork', [8916]], ['forkv', [10969]], ['Fouriertrf', [8497]], ['fpartint', [10765]], ['frac12', [189]], ['frac13', [8531]], ['frac14', [188]], ['frac15', [8533]], ['frac16', [8537]], ['frac18', [8539]], ['frac23', [8532]], ['frac25', [8534]], ['frac34', [190]], ['frac35', [8535]], ['frac38', [8540]], ['frac45', [8536]], ['frac56', [8538]], ['frac58', [8541]], ['frac78', [8542]], ['frasl', [8260]], ['frown', [8994]], ['fscr', [119995]], ['Fscr', [8497]], ['gacute', [501]], ['Gamma', [915]], ['gamma', [947]], ['Gammad', [988]], ['gammad', [989]], ['gap', [10886]], ['Gbreve', [286]], ['gbreve', [287]], ['Gcedil', [290]], ['Gcirc', [284]], ['gcirc', [285]], ['Gcy', [1043]], ['gcy', [1075]], ['Gdot', [288]], ['gdot', [289]], ['ge', [8805]], ['gE', [8807]], ['gEl', [10892]], ['gel', [8923]], ['geq', [8805]], ['geqq', [8807]], ['geqslant', [10878]], ['gescc', [10921]], ['ges', [10878]], ['gesdot', [10880]], ['gesdoto', [10882]], ['gesdotol', [10884]], ['gesl', [8923, 65024]], ['gesles', [10900]], ['Gfr', [120074]], ['gfr', [120100]], ['gg', [8811]], ['Gg', [8921]], ['ggg', [8921]], ['gimel', [8503]], ['GJcy', [1027]], ['gjcy', [1107]], ['gla', [10917]], ['gl', [8823]], ['glE', [10898]], ['glj', [10916]], ['gnap', [10890]], ['gnapprox', [10890]], ['gne', [10888]], ['gnE', [8809]], ['gneq', [10888]], ['gneqq', [8809]], ['gnsim', [8935]], ['Gopf', [120126]], ['gopf', [120152]], ['grave', [96]], ['GreaterEqual', [8805]], ['GreaterEqualLess', [8923]], ['GreaterFullEqual', [8807]], ['GreaterGreater', [10914]], ['GreaterLess', [8823]], ['GreaterSlantEqual', [10878]], ['GreaterTilde', [8819]], ['Gscr', [119970]], ['gscr', [8458]], ['gsim', [8819]], ['gsime', [10894]], ['gsiml', [10896]], ['gtcc', [10919]], ['gtcir', [10874]], ['gt', [62]], ['GT', [62]], ['Gt', [8811]], ['gtdot', [8919]], ['gtlPar', [10645]], ['gtquest', [10876]], ['gtrapprox', [10886]], ['gtrarr', [10616]], ['gtrdot', [8919]], ['gtreqless', [8923]], ['gtreqqless', [10892]], ['gtrless', [8823]], ['gtrsim', [8819]], ['gvertneqq', [8809, 65024]], ['gvnE', [8809, 65024]], ['Hacek', [711]], ['hairsp', [8202]], ['half', [189]], ['hamilt', [8459]], ['HARDcy', [1066]], ['hardcy', [1098]], ['harrcir', [10568]], ['harr', [8596]], ['hArr', [8660]], ['harrw', [8621]], ['Hat', [94]], ['hbar', [8463]], ['Hcirc', [292]], ['hcirc', [293]], ['hearts', [9829]], ['heartsuit', [9829]], ['hellip', [8230]], ['hercon', [8889]], ['hfr', [120101]], ['Hfr', [8460]], ['HilbertSpace', [8459]], ['hksearow', [10533]], ['hkswarow', [10534]], ['hoarr', [8703]], ['homtht', [8763]], ['hookleftarrow', [8617]], ['hookrightarrow', [8618]], ['hopf', [120153]], ['Hopf', [8461]], ['horbar', [8213]], ['HorizontalLine', [9472]], ['hscr', [119997]], ['Hscr', [8459]], ['hslash', [8463]], ['Hstrok', [294]], ['hstrok', [295]], ['HumpDownHump', [8782]], ['HumpEqual', [8783]], ['hybull', [8259]], ['hyphen', [8208]], ['Iacute', [205]], ['iacute', [237]], ['ic', [8291]], ['Icirc', [206]], ['icirc', [238]], ['Icy', [1048]], ['icy', [1080]], ['Idot', [304]], ['IEcy', [1045]], ['iecy', [1077]], ['iexcl', [161]], ['iff', [8660]], ['ifr', [120102]], ['Ifr', [8465]], ['Igrave', [204]], ['igrave', [236]], ['ii', [8520]], ['iiiint', [10764]], ['iiint', [8749]], ['iinfin', [10716]], ['iiota', [8489]], ['IJlig', [306]], ['ijlig', [307]], ['Imacr', [298]], ['imacr', [299]], ['image', [8465]], ['ImaginaryI', [8520]], ['imagline', [8464]], ['imagpart', [8465]], ['imath', [305]], ['Im', [8465]], ['imof', [8887]], ['imped', [437]], ['Implies', [8658]], ['incare', [8453]], ['in', [8712]], ['infin', [8734]], ['infintie', [10717]], ['inodot', [305]], ['intcal', [8890]], ['int', [8747]], ['Int', [8748]], ['integers', [8484]], ['Integral', [8747]], ['intercal', [8890]], ['Intersection', [8898]], ['intlarhk', [10775]], ['intprod', [10812]], ['InvisibleComma', [8291]], ['InvisibleTimes', [8290]], ['IOcy', [1025]], ['iocy', [1105]], ['Iogon', [302]], ['iogon', [303]], ['Iopf', [120128]], ['iopf', [120154]], ['Iota', [921]], ['iota', [953]], ['iprod', [10812]], ['iquest', [191]], ['iscr', [119998]], ['Iscr', [8464]], ['isin', [8712]], ['isindot', [8949]], ['isinE', [8953]], ['isins', [8948]], ['isinsv', [8947]], ['isinv', [8712]], ['it', [8290]], ['Itilde', [296]], ['itilde', [297]], ['Iukcy', [1030]], ['iukcy', [1110]], ['Iuml', [207]], ['iuml', [239]], ['Jcirc', [308]], ['jcirc', [309]], ['Jcy', [1049]], ['jcy', [1081]], ['Jfr', [120077]], ['jfr', [120103]], ['jmath', [567]], ['Jopf', [120129]], ['jopf', [120155]], ['Jscr', [119973]], ['jscr', [119999]], ['Jsercy', [1032]], ['jsercy', [1112]], ['Jukcy', [1028]], ['jukcy', [1108]], ['Kappa', [922]], ['kappa', [954]], ['kappav', [1008]], ['Kcedil', [310]], ['kcedil', [311]], ['Kcy', [1050]], ['kcy', [1082]], ['Kfr', [120078]], ['kfr', [120104]], ['kgreen', [312]], ['KHcy', [1061]], ['khcy', [1093]], ['KJcy', [1036]], ['kjcy', [1116]], ['Kopf', [120130]], ['kopf', [120156]], ['Kscr', [119974]], ['kscr', [120000]], ['lAarr', [8666]], ['Lacute', [313]], ['lacute', [314]], ['laemptyv', [10676]], ['lagran', [8466]], ['Lambda', [923]], ['lambda', [955]], ['lang', [10216]], ['Lang', [10218]], ['langd', [10641]], ['langle', [10216]], ['lap', [10885]], ['Laplacetrf', [8466]], ['laquo', [171]], ['larrb', [8676]], ['larrbfs', [10527]], ['larr', [8592]], ['Larr', [8606]], ['lArr', [8656]], ['larrfs', [10525]], ['larrhk', [8617]], ['larrlp', [8619]], ['larrpl', [10553]], ['larrsim', [10611]], ['larrtl', [8610]], ['latail', [10521]], ['lAtail', [10523]], ['lat', [10923]], ['late', [10925]], ['lates', [10925, 65024]], ['lbarr', [10508]], ['lBarr', [10510]], ['lbbrk', [10098]], ['lbrace', [123]], ['lbrack', [91]], ['lbrke', [10635]], ['lbrksld', [10639]], ['lbrkslu', [10637]], ['Lcaron', [317]], ['lcaron', [318]], ['Lcedil', [315]], ['lcedil', [316]], ['lceil', [8968]], ['lcub', [123]], ['Lcy', [1051]], ['lcy', [1083]], ['ldca', [10550]], ['ldquo', [8220]], ['ldquor', [8222]], ['ldrdhar', [10599]], ['ldrushar', [10571]], ['ldsh', [8626]], ['le', [8804]], ['lE', [8806]], ['LeftAngleBracket', [10216]], ['LeftArrowBar', [8676]], ['leftarrow', [8592]], ['LeftArrow', [8592]], ['Leftarrow', [8656]], ['LeftArrowRightArrow', [8646]], ['leftarrowtail', [8610]], ['LeftCeiling', [8968]], ['LeftDoubleBracket', [10214]], ['LeftDownTeeVector', [10593]], ['LeftDownVectorBar', [10585]], ['LeftDownVector', [8643]], ['LeftFloor', [8970]], ['leftharpoondown', [8637]], ['leftharpoonup', [8636]], ['leftleftarrows', [8647]], ['leftrightarrow', [8596]], ['LeftRightArrow', [8596]], ['Leftrightarrow', [8660]], ['leftrightarrows', [8646]], ['leftrightharpoons', [8651]], ['leftrightsquigarrow', [8621]], ['LeftRightVector', [10574]], ['LeftTeeArrow', [8612]], ['LeftTee', [8867]], ['LeftTeeVector', [10586]], ['leftthreetimes', [8907]], ['LeftTriangleBar', [10703]], ['LeftTriangle', [8882]], ['LeftTriangleEqual', [8884]], ['LeftUpDownVector', [10577]], ['LeftUpTeeVector', [10592]], ['LeftUpVectorBar', [10584]], ['LeftUpVector', [8639]], ['LeftVectorBar', [10578]], ['LeftVector', [8636]], ['lEg', [10891]], ['leg', [8922]], ['leq', [8804]], ['leqq', [8806]], ['leqslant', [10877]], ['lescc', [10920]], ['les', [10877]], ['lesdot', [10879]], ['lesdoto', [10881]], ['lesdotor', [10883]], ['lesg', [8922, 65024]], ['lesges', [10899]], ['lessapprox', [10885]], ['lessdot', [8918]], ['lesseqgtr', [8922]], ['lesseqqgtr', [10891]], ['LessEqualGreater', [8922]], ['LessFullEqual', [8806]], ['LessGreater', [8822]], ['lessgtr', [8822]], ['LessLess', [10913]], ['lesssim', [8818]], ['LessSlantEqual', [10877]], ['LessTilde', [8818]], ['lfisht', [10620]], ['lfloor', [8970]], ['Lfr', [120079]], ['lfr', [120105]], ['lg', [8822]], ['lgE', [10897]], ['lHar', [10594]], ['lhard', [8637]], ['lharu', [8636]], ['lharul', [10602]], ['lhblk', [9604]], ['LJcy', [1033]], ['ljcy', [1113]], ['llarr', [8647]], ['ll', [8810]], ['Ll', [8920]], ['llcorner', [8990]], ['Lleftarrow', [8666]], ['llhard', [10603]], ['lltri', [9722]], ['Lmidot', [319]], ['lmidot', [320]], ['lmoustache', [9136]], ['lmoust', [9136]], ['lnap', [10889]], ['lnapprox', [10889]], ['lne', [10887]], ['lnE', [8808]], ['lneq', [10887]], ['lneqq', [8808]], ['lnsim', [8934]], ['loang', [10220]], ['loarr', [8701]], ['lobrk', [10214]], ['longleftarrow', [10229]], ['LongLeftArrow', [10229]], ['Longleftarrow', [10232]], ['longleftrightarrow', [10231]], ['LongLeftRightArrow', [10231]], ['Longleftrightarrow', [10234]], ['longmapsto', [10236]], ['longrightarrow', [10230]], ['LongRightArrow', [10230]], ['Longrightarrow', [10233]], ['looparrowleft', [8619]], ['looparrowright', [8620]], ['lopar', [10629]], ['Lopf', [120131]], ['lopf', [120157]], ['loplus', [10797]], ['lotimes', [10804]], ['lowast', [8727]], ['lowbar', [95]], ['LowerLeftArrow', [8601]], ['LowerRightArrow', [8600]], ['loz', [9674]], ['lozenge', [9674]], ['lozf', [10731]], ['lpar', [40]], ['lparlt', [10643]], ['lrarr', [8646]], ['lrcorner', [8991]], ['lrhar', [8651]], ['lrhard', [10605]], ['lrm', [8206]], ['lrtri', [8895]], ['lsaquo', [8249]], ['lscr', [120001]], ['Lscr', [8466]], ['lsh', [8624]], ['Lsh', [8624]], ['lsim', [8818]], ['lsime', [10893]], ['lsimg', [10895]], ['lsqb', [91]], ['lsquo', [8216]], ['lsquor', [8218]], ['Lstrok', [321]], ['lstrok', [322]], ['ltcc', [10918]], ['ltcir', [10873]], ['lt', [60]], ['LT', [60]], ['Lt', [8810]], ['ltdot', [8918]], ['lthree', [8907]], ['ltimes', [8905]], ['ltlarr', [10614]], ['ltquest', [10875]], ['ltri', [9667]], ['ltrie', [8884]], ['ltrif', [9666]], ['ltrPar', [10646]], ['lurdshar', [10570]], ['luruhar', [10598]], ['lvertneqq', [8808, 65024]], ['lvnE', [8808, 65024]], ['macr', [175]], ['male', [9794]], ['malt', [10016]], ['maltese', [10016]], ['Map', [10501]], ['map', [8614]], ['mapsto', [8614]], ['mapstodown', [8615]], ['mapstoleft', [8612]], ['mapstoup', [8613]], ['marker', [9646]], ['mcomma', [10793]], ['Mcy', [1052]], ['mcy', [1084]], ['mdash', [8212]], ['mDDot', [8762]], ['measuredangle', [8737]], ['MediumSpace', [8287]], ['Mellintrf', [8499]], ['Mfr', [120080]], ['mfr', [120106]], ['mho', [8487]], ['micro', [181]], ['midast', [42]], ['midcir', [10992]], ['mid', [8739]], ['middot', [183]], ['minusb', [8863]], ['minus', [8722]], ['minusd', [8760]], ['minusdu', [10794]], ['MinusPlus', [8723]], ['mlcp', [10971]], ['mldr', [8230]], ['mnplus', [8723]], ['models', [8871]], ['Mopf', [120132]], ['mopf', [120158]], ['mp', [8723]], ['mscr', [120002]], ['Mscr', [8499]], ['mstpos', [8766]], ['Mu', [924]], ['mu', [956]], ['multimap', [8888]], ['mumap', [8888]], ['nabla', [8711]], ['Nacute', [323]], ['nacute', [324]], ['nang', [8736, 8402]], ['nap', [8777]], ['napE', [10864, 824]], ['napid', [8779, 824]], ['napos', [329]], ['napprox', [8777]], ['natural', [9838]], ['naturals', [8469]], ['natur', [9838]], ['nbsp', [160]], ['nbump', [8782, 824]], ['nbumpe', [8783, 824]], ['ncap', [10819]], ['Ncaron', [327]], ['ncaron', [328]], ['Ncedil', [325]], ['ncedil', [326]], ['ncong', [8775]], ['ncongdot', [10861, 824]], ['ncup', [10818]], ['Ncy', [1053]], ['ncy', [1085]], ['ndash', [8211]], ['nearhk', [10532]], ['nearr', [8599]], ['neArr', [8663]], ['nearrow', [8599]], ['ne', [8800]], ['nedot', [8784, 824]], ['NegativeMediumSpace', [8203]], ['NegativeThickSpace', [8203]], ['NegativeThinSpace', [8203]], ['NegativeVeryThinSpace', [8203]], ['nequiv', [8802]], ['nesear', [10536]], ['nesim', [8770, 824]], ['NestedGreaterGreater', [8811]], ['NestedLessLess', [8810]], ['nexist', [8708]], ['nexists', [8708]], ['Nfr', [120081]], ['nfr', [120107]], ['ngE', [8807, 824]], ['nge', [8817]], ['ngeq', [8817]], ['ngeqq', [8807, 824]], ['ngeqslant', [10878, 824]], ['nges', [10878, 824]], ['nGg', [8921, 824]], ['ngsim', [8821]], ['nGt', [8811, 8402]], ['ngt', [8815]], ['ngtr', [8815]], ['nGtv', [8811, 824]], ['nharr', [8622]], ['nhArr', [8654]], ['nhpar', [10994]], ['ni', [8715]], ['nis', [8956]], ['nisd', [8954]], ['niv', [8715]], ['NJcy', [1034]], ['njcy', [1114]], ['nlarr', [8602]], ['nlArr', [8653]], ['nldr', [8229]], ['nlE', [8806, 824]], ['nle', [8816]], ['nleftarrow', [8602]], ['nLeftarrow', [8653]], ['nleftrightarrow', [8622]], ['nLeftrightarrow', [8654]], ['nleq', [8816]], ['nleqq', [8806, 824]], ['nleqslant', [10877, 824]], ['nles', [10877, 824]], ['nless', [8814]], ['nLl', [8920, 824]], ['nlsim', [8820]], ['nLt', [8810, 8402]], ['nlt', [8814]], ['nltri', [8938]], ['nltrie', [8940]], ['nLtv', [8810, 824]], ['nmid', [8740]], ['NoBreak', [8288]], ['NonBreakingSpace', [160]], ['nopf', [120159]], ['Nopf', [8469]], ['Not', [10988]], ['not', [172]], ['NotCongruent', [8802]], ['NotCupCap', [8813]], ['NotDoubleVerticalBar', [8742]], ['NotElement', [8713]], ['NotEqual', [8800]], ['NotEqualTilde', [8770, 824]], ['NotExists', [8708]], ['NotGreater', [8815]], ['NotGreaterEqual', [8817]], ['NotGreaterFullEqual', [8807, 824]], ['NotGreaterGreater', [8811, 824]], ['NotGreaterLess', [8825]], ['NotGreaterSlantEqual', [10878, 824]], ['NotGreaterTilde', [8821]], ['NotHumpDownHump', [8782, 824]], ['NotHumpEqual', [8783, 824]], ['notin', [8713]], ['notindot', [8949, 824]], ['notinE', [8953, 824]], ['notinva', [8713]], ['notinvb', [8951]], ['notinvc', [8950]], ['NotLeftTriangleBar', [10703, 824]], ['NotLeftTriangle', [8938]], ['NotLeftTriangleEqual', [8940]], ['NotLess', [8814]], ['NotLessEqual', [8816]], ['NotLessGreater', [8824]], ['NotLessLess', [8810, 824]], ['NotLessSlantEqual', [10877, 824]], ['NotLessTilde', [8820]], ['NotNestedGreaterGreater', [10914, 824]], ['NotNestedLessLess', [10913, 824]], ['notni', [8716]], ['notniva', [8716]], ['notnivb', [8958]], ['notnivc', [8957]], ['NotPrecedes', [8832]], ['NotPrecedesEqual', [10927, 824]], ['NotPrecedesSlantEqual', [8928]], ['NotReverseElement', [8716]], ['NotRightTriangleBar', [10704, 824]], ['NotRightTriangle', [8939]], ['NotRightTriangleEqual', [8941]], ['NotSquareSubset', [8847, 824]], ['NotSquareSubsetEqual', [8930]], ['NotSquareSuperset', [8848, 824]], ['NotSquareSupersetEqual', [8931]], ['NotSubset', [8834, 8402]], ['NotSubsetEqual', [8840]], ['NotSucceeds', [8833]], ['NotSucceedsEqual', [10928, 824]], ['NotSucceedsSlantEqual', [8929]], ['NotSucceedsTilde', [8831, 824]], ['NotSuperset', [8835, 8402]], ['NotSupersetEqual', [8841]], ['NotTilde', [8769]], ['NotTildeEqual', [8772]], ['NotTildeFullEqual', [8775]], ['NotTildeTilde', [8777]], ['NotVerticalBar', [8740]], ['nparallel', [8742]], ['npar', [8742]], ['nparsl', [11005, 8421]], ['npart', [8706, 824]], ['npolint', [10772]], ['npr', [8832]], ['nprcue', [8928]], ['nprec', [8832]], ['npreceq', [10927, 824]], ['npre', [10927, 824]], ['nrarrc', [10547, 824]], ['nrarr', [8603]], ['nrArr', [8655]], ['nrarrw', [8605, 824]], ['nrightarrow', [8603]], ['nRightarrow', [8655]], ['nrtri', [8939]], ['nrtrie', [8941]], ['nsc', [8833]], ['nsccue', [8929]], ['nsce', [10928, 824]], ['Nscr', [119977]], ['nscr', [120003]], ['nshortmid', [8740]], ['nshortparallel', [8742]], ['nsim', [8769]], ['nsime', [8772]], ['nsimeq', [8772]], ['nsmid', [8740]], ['nspar', [8742]], ['nsqsube', [8930]], ['nsqsupe', [8931]], ['nsub', [8836]], ['nsubE', [10949, 824]], ['nsube', [8840]], ['nsubset', [8834, 8402]], ['nsubseteq', [8840]], ['nsubseteqq', [10949, 824]], ['nsucc', [8833]], ['nsucceq', [10928, 824]], ['nsup', [8837]], ['nsupE', [10950, 824]], ['nsupe', [8841]], ['nsupset', [8835, 8402]], ['nsupseteq', [8841]], ['nsupseteqq', [10950, 824]], ['ntgl', [8825]], ['Ntilde', [209]], ['ntilde', [241]], ['ntlg', [8824]], ['ntriangleleft', [8938]], ['ntrianglelefteq', [8940]], ['ntriangleright', [8939]], ['ntrianglerighteq', [8941]], ['Nu', [925]], ['nu', [957]], ['num', [35]], ['numero', [8470]], ['numsp', [8199]], ['nvap', [8781, 8402]], ['nvdash', [8876]], ['nvDash', [8877]], ['nVdash', [8878]], ['nVDash', [8879]], ['nvge', [8805, 8402]], ['nvgt', [62, 8402]], ['nvHarr', [10500]], ['nvinfin', [10718]], ['nvlArr', [10498]], ['nvle', [8804, 8402]], ['nvlt', [60, 8402]], ['nvltrie', [8884, 8402]], ['nvrArr', [10499]], ['nvrtrie', [8885, 8402]], ['nvsim', [8764, 8402]], ['nwarhk', [10531]], ['nwarr', [8598]], ['nwArr', [8662]], ['nwarrow', [8598]], ['nwnear', [10535]], ['Oacute', [211]], ['oacute', [243]], ['oast', [8859]], ['Ocirc', [212]], ['ocirc', [244]], ['ocir', [8858]], ['Ocy', [1054]], ['ocy', [1086]], ['odash', [8861]], ['Odblac', [336]], ['odblac', [337]], ['odiv', [10808]], ['odot', [8857]], ['odsold', [10684]], ['OElig', [338]], ['oelig', [339]], ['ofcir', [10687]], ['Ofr', [120082]], ['ofr', [120108]], ['ogon', [731]], ['Ograve', [210]], ['ograve', [242]], ['ogt', [10689]], ['ohbar', [10677]], ['ohm', [937]], ['oint', [8750]], ['olarr', [8634]], ['olcir', [10686]], ['olcross', [10683]], ['oline', [8254]], ['olt', [10688]], ['Omacr', [332]], ['omacr', [333]], ['Omega', [937]], ['omega', [969]], ['Omicron', [927]], ['omicron', [959]], ['omid', [10678]], ['ominus', [8854]], ['Oopf', [120134]], ['oopf', [120160]], ['opar', [10679]], ['OpenCurlyDoubleQuote', [8220]], ['OpenCurlyQuote', [8216]], ['operp', [10681]], ['oplus', [8853]], ['orarr', [8635]], ['Or', [10836]], ['or', [8744]], ['ord', [10845]], ['order', [8500]], ['orderof', [8500]], ['ordf', [170]], ['ordm', [186]], ['origof', [8886]], ['oror', [10838]], ['orslope', [10839]], ['orv', [10843]], ['oS', [9416]], ['Oscr', [119978]], ['oscr', [8500]], ['Oslash', [216]], ['oslash', [248]], ['osol', [8856]], ['Otilde', [213]], ['otilde', [245]], ['otimesas', [10806]], ['Otimes', [10807]], ['otimes', [8855]], ['Ouml', [214]], ['ouml', [246]], ['ovbar', [9021]], ['OverBar', [8254]], ['OverBrace', [9182]], ['OverBracket', [9140]], ['OverParenthesis', [9180]], ['para', [182]], ['parallel', [8741]], ['par', [8741]], ['parsim', [10995]], ['parsl', [11005]], ['part', [8706]], ['PartialD', [8706]], ['Pcy', [1055]], ['pcy', [1087]], ['percnt', [37]], ['period', [46]], ['permil', [8240]], ['perp', [8869]], ['pertenk', [8241]], ['Pfr', [120083]], ['pfr', [120109]], ['Phi', [934]], ['phi', [966]], ['phiv', [981]], ['phmmat', [8499]], ['phone', [9742]], ['Pi', [928]], ['pi', [960]], ['pitchfork', [8916]], ['piv', [982]], ['planck', [8463]], ['planckh', [8462]], ['plankv', [8463]], ['plusacir', [10787]], ['plusb', [8862]], ['pluscir', [10786]], ['plus', [43]], ['plusdo', [8724]], ['plusdu', [10789]], ['pluse', [10866]], ['PlusMinus', [177]], ['plusmn', [177]], ['plussim', [10790]], ['plustwo', [10791]], ['pm', [177]], ['Poincareplane', [8460]], ['pointint', [10773]], ['popf', [120161]], ['Popf', [8473]], ['pound', [163]], ['prap', [10935]], ['Pr', [10939]], ['pr', [8826]], ['prcue', [8828]], ['precapprox', [10935]], ['prec', [8826]], ['preccurlyeq', [8828]], ['Precedes', [8826]], ['PrecedesEqual', [10927]], ['PrecedesSlantEqual', [8828]], ['PrecedesTilde', [8830]], ['preceq', [10927]], ['precnapprox', [10937]], ['precneqq', [10933]], ['precnsim', [8936]], ['pre', [10927]], ['prE', [10931]], ['precsim', [8830]], ['prime', [8242]], ['Prime', [8243]], ['primes', [8473]], ['prnap', [10937]], ['prnE', [10933]], ['prnsim', [8936]], ['prod', [8719]], ['Product', [8719]], ['profalar', [9006]], ['profline', [8978]], ['profsurf', [8979]], ['prop', [8733]], ['Proportional', [8733]], ['Proportion', [8759]], ['propto', [8733]], ['prsim', [8830]], ['prurel', [8880]], ['Pscr', [119979]], ['pscr', [120005]], ['Psi', [936]], ['psi', [968]], ['puncsp', [8200]], ['Qfr', [120084]], ['qfr', [120110]], ['qint', [10764]], ['qopf', [120162]], ['Qopf', [8474]], ['qprime', [8279]], ['Qscr', [119980]], ['qscr', [120006]], ['quaternions', [8461]], ['quatint', [10774]], ['quest', [63]], ['questeq', [8799]], ['quot', [34]], ['QUOT', [34]], ['rAarr', [8667]], ['race', [8765, 817]], ['Racute', [340]], ['racute', [341]], ['radic', [8730]], ['raemptyv', [10675]], ['rang', [10217]], ['Rang', [10219]], ['rangd', [10642]], ['range', [10661]], ['rangle', [10217]], ['raquo', [187]], ['rarrap', [10613]], ['rarrb', [8677]], ['rarrbfs', [10528]], ['rarrc', [10547]], ['rarr', [8594]], ['Rarr', [8608]], ['rArr', [8658]], ['rarrfs', [10526]], ['rarrhk', [8618]], ['rarrlp', [8620]], ['rarrpl', [10565]], ['rarrsim', [10612]], ['Rarrtl', [10518]], ['rarrtl', [8611]], ['rarrw', [8605]], ['ratail', [10522]], ['rAtail', [10524]], ['ratio', [8758]], ['rationals', [8474]], ['rbarr', [10509]], ['rBarr', [10511]], ['RBarr', [10512]], ['rbbrk', [10099]], ['rbrace', [125]], ['rbrack', [93]], ['rbrke', [10636]], ['rbrksld', [10638]], ['rbrkslu', [10640]], ['Rcaron', [344]], ['rcaron', [345]], ['Rcedil', [342]], ['rcedil', [343]], ['rceil', [8969]], ['rcub', [125]], ['Rcy', [1056]], ['rcy', [1088]], ['rdca', [10551]], ['rdldhar', [10601]], ['rdquo', [8221]], ['rdquor', [8221]], ['CloseCurlyDoubleQuote', [8221]], ['rdsh', [8627]], ['real', [8476]], ['realine', [8475]], ['realpart', [8476]], ['reals', [8477]], ['Re', [8476]], ['rect', [9645]], ['reg', [174]], ['REG', [174]], ['ReverseElement', [8715]], ['ReverseEquilibrium', [8651]], ['ReverseUpEquilibrium', [10607]], ['rfisht', [10621]], ['rfloor', [8971]], ['rfr', [120111]], ['Rfr', [8476]], ['rHar', [10596]], ['rhard', [8641]], ['rharu', [8640]], ['rharul', [10604]], ['Rho', [929]], ['rho', [961]], ['rhov', [1009]], ['RightAngleBracket', [10217]], ['RightArrowBar', [8677]], ['rightarrow', [8594]], ['RightArrow', [8594]], ['Rightarrow', [8658]], ['RightArrowLeftArrow', [8644]], ['rightarrowtail', [8611]], ['RightCeiling', [8969]], ['RightDoubleBracket', [10215]], ['RightDownTeeVector', [10589]], ['RightDownVectorBar', [10581]], ['RightDownVector', [8642]], ['RightFloor', [8971]], ['rightharpoondown', [8641]], ['rightharpoonup', [8640]], ['rightleftarrows', [8644]], ['rightleftharpoons', [8652]], ['rightrightarrows', [8649]], ['rightsquigarrow', [8605]], ['RightTeeArrow', [8614]], ['RightTee', [8866]], ['RightTeeVector', [10587]], ['rightthreetimes', [8908]], ['RightTriangleBar', [10704]], ['RightTriangle', [8883]], ['RightTriangleEqual', [8885]], ['RightUpDownVector', [10575]], ['RightUpTeeVector', [10588]], ['RightUpVectorBar', [10580]], ['RightUpVector', [8638]], ['RightVectorBar', [10579]], ['RightVector', [8640]], ['ring', [730]], ['risingdotseq', [8787]], ['rlarr', [8644]], ['rlhar', [8652]], ['rlm', [8207]], ['rmoustache', [9137]], ['rmoust', [9137]], ['rnmid', [10990]], ['roang', [10221]], ['roarr', [8702]], ['robrk', [10215]], ['ropar', [10630]], ['ropf', [120163]], ['Ropf', [8477]], ['roplus', [10798]], ['rotimes', [10805]], ['RoundImplies', [10608]], ['rpar', [41]], ['rpargt', [10644]], ['rppolint', [10770]], ['rrarr', [8649]], ['Rrightarrow', [8667]], ['rsaquo', [8250]], ['rscr', [120007]], ['Rscr', [8475]], ['rsh', [8625]], ['Rsh', [8625]], ['rsqb', [93]], ['rsquo', [8217]], ['rsquor', [8217]], ['CloseCurlyQuote', [8217]], ['rthree', [8908]], ['rtimes', [8906]], ['rtri', [9657]], ['rtrie', [8885]], ['rtrif', [9656]], ['rtriltri', [10702]], ['RuleDelayed', [10740]], ['ruluhar', [10600]], ['rx', [8478]], ['Sacute', [346]], ['sacute', [347]], ['sbquo', [8218]], ['scap', [10936]], ['Scaron', [352]], ['scaron', [353]], ['Sc', [10940]], ['sc', [8827]], ['sccue', [8829]], ['sce', [10928]], ['scE', [10932]], ['Scedil', [350]], ['scedil', [351]], ['Scirc', [348]], ['scirc', [349]], ['scnap', [10938]], ['scnE', [10934]], ['scnsim', [8937]], ['scpolint', [10771]], ['scsim', [8831]], ['Scy', [1057]], ['scy', [1089]], ['sdotb', [8865]], ['sdot', [8901]], ['sdote', [10854]], ['searhk', [10533]], ['searr', [8600]], ['seArr', [8664]], ['searrow', [8600]], ['sect', [167]], ['semi', [59]], ['seswar', [10537]], ['setminus', [8726]], ['setmn', [8726]], ['sext', [10038]], ['Sfr', [120086]], ['sfr', [120112]], ['sfrown', [8994]], ['sharp', [9839]], ['SHCHcy', [1065]], ['shchcy', [1097]], ['SHcy', [1064]], ['shcy', [1096]], ['ShortDownArrow', [8595]], ['ShortLeftArrow', [8592]], ['shortmid', [8739]], ['shortparallel', [8741]], ['ShortRightArrow', [8594]], ['ShortUpArrow', [8593]], ['shy', [173]], ['Sigma', [931]], ['sigma', [963]], ['sigmaf', [962]], ['sigmav', [962]], ['sim', [8764]], ['simdot', [10858]], ['sime', [8771]], ['simeq', [8771]], ['simg', [10910]], ['simgE', [10912]], ['siml', [10909]], ['simlE', [10911]], ['simne', [8774]], ['simplus', [10788]], ['simrarr', [10610]], ['slarr', [8592]], ['SmallCircle', [8728]], ['smallsetminus', [8726]], ['smashp', [10803]], ['smeparsl', [10724]], ['smid', [8739]], ['smile', [8995]], ['smt', [10922]], ['smte', [10924]], ['smtes', [10924, 65024]], ['SOFTcy', [1068]], ['softcy', [1100]], ['solbar', [9023]], ['solb', [10692]], ['sol', [47]], ['Sopf', [120138]], ['sopf', [120164]], ['spades', [9824]], ['spadesuit', [9824]], ['spar', [8741]], ['sqcap', [8851]], ['sqcaps', [8851, 65024]], ['sqcup', [8852]], ['sqcups', [8852, 65024]], ['Sqrt', [8730]], ['sqsub', [8847]], ['sqsube', [8849]], ['sqsubset', [8847]], ['sqsubseteq', [8849]], ['sqsup', [8848]], ['sqsupe', [8850]], ['sqsupset', [8848]], ['sqsupseteq', [8850]], ['square', [9633]], ['Square', [9633]], ['SquareIntersection', [8851]], ['SquareSubset', [8847]], ['SquareSubsetEqual', [8849]], ['SquareSuperset', [8848]], ['SquareSupersetEqual', [8850]], ['SquareUnion', [8852]], ['squarf', [9642]], ['squ', [9633]], ['squf', [9642]], ['srarr', [8594]], ['Sscr', [119982]], ['sscr', [120008]], ['ssetmn', [8726]], ['ssmile', [8995]], ['sstarf', [8902]], ['Star', [8902]], ['star', [9734]], ['starf', [9733]], ['straightepsilon', [1013]], ['straightphi', [981]], ['strns', [175]], ['sub', [8834]], ['Sub', [8912]], ['subdot', [10941]], ['subE', [10949]], ['sube', [8838]], ['subedot', [10947]], ['submult', [10945]], ['subnE', [10955]], ['subne', [8842]], ['subplus', [10943]], ['subrarr', [10617]], ['subset', [8834]], ['Subset', [8912]], ['subseteq', [8838]], ['subseteqq', [10949]], ['SubsetEqual', [8838]], ['subsetneq', [8842]], ['subsetneqq', [10955]], ['subsim', [10951]], ['subsub', [10965]], ['subsup', [10963]], ['succapprox', [10936]], ['succ', [8827]], ['succcurlyeq', [8829]], ['Succeeds', [8827]], ['SucceedsEqual', [10928]], ['SucceedsSlantEqual', [8829]], ['SucceedsTilde', [8831]], ['succeq', [10928]], ['succnapprox', [10938]], ['succneqq', [10934]], ['succnsim', [8937]], ['succsim', [8831]], ['SuchThat', [8715]], ['sum', [8721]], ['Sum', [8721]], ['sung', [9834]], ['sup1', [185]], ['sup2', [178]], ['sup3', [179]], ['sup', [8835]], ['Sup', [8913]], ['supdot', [10942]], ['supdsub', [10968]], ['supE', [10950]], ['supe', [8839]], ['supedot', [10948]], ['Superset', [8835]], ['SupersetEqual', [8839]], ['suphsol', [10185]], ['suphsub', [10967]], ['suplarr', [10619]], ['supmult', [10946]], ['supnE', [10956]], ['supne', [8843]], ['supplus', [10944]], ['supset', [8835]], ['Supset', [8913]], ['supseteq', [8839]], ['supseteqq', [10950]], ['supsetneq', [8843]], ['supsetneqq', [10956]], ['supsim', [10952]], ['supsub', [10964]], ['supsup', [10966]], ['swarhk', [10534]], ['swarr', [8601]], ['swArr', [8665]], ['swarrow', [8601]], ['swnwar', [10538]], ['szlig', [223]], ['Tab', [9]], ['target', [8982]], ['Tau', [932]], ['tau', [964]], ['tbrk', [9140]], ['Tcaron', [356]], ['tcaron', [357]], ['Tcedil', [354]], ['tcedil', [355]], ['Tcy', [1058]], ['tcy', [1090]], ['tdot', [8411]], ['telrec', [8981]], ['Tfr', [120087]], ['tfr', [120113]], ['there4', [8756]], ['therefore', [8756]], ['Therefore', [8756]], ['Theta', [920]], ['theta', [952]], ['thetasym', [977]], ['thetav', [977]], ['thickapprox', [8776]], ['thicksim', [8764]], ['ThickSpace', [8287, 8202]], ['ThinSpace', [8201]], ['thinsp', [8201]], ['thkap', [8776]], ['thksim', [8764]], ['THORN', [222]], ['thorn', [254]], ['tilde', [732]], ['Tilde', [8764]], ['TildeEqual', [8771]], ['TildeFullEqual', [8773]], ['TildeTilde', [8776]], ['timesbar', [10801]], ['timesb', [8864]], ['times', [215]], ['timesd', [10800]], ['tint', [8749]], ['toea', [10536]], ['topbot', [9014]], ['topcir', [10993]], ['top', [8868]], ['Topf', [120139]], ['topf', [120165]], ['topfork', [10970]], ['tosa', [10537]], ['tprime', [8244]], ['trade', [8482]], ['TRADE', [8482]], ['triangle', [9653]], ['triangledown', [9663]], ['triangleleft', [9667]], ['trianglelefteq', [8884]], ['triangleq', [8796]], ['triangleright', [9657]], ['trianglerighteq', [8885]], ['tridot', [9708]], ['trie', [8796]], ['triminus', [10810]], ['TripleDot', [8411]], ['triplus', [10809]], ['trisb', [10701]], ['tritime', [10811]], ['trpezium', [9186]], ['Tscr', [119983]], ['tscr', [120009]], ['TScy', [1062]], ['tscy', [1094]], ['TSHcy', [1035]], ['tshcy', [1115]], ['Tstrok', [358]], ['tstrok', [359]], ['twixt', [8812]], ['twoheadleftarrow', [8606]], ['twoheadrightarrow', [8608]], ['Uacute', [218]], ['uacute', [250]], ['uarr', [8593]], ['Uarr', [8607]], ['uArr', [8657]], ['Uarrocir', [10569]], ['Ubrcy', [1038]], ['ubrcy', [1118]], ['Ubreve', [364]], ['ubreve', [365]], ['Ucirc', [219]], ['ucirc', [251]], ['Ucy', [1059]], ['ucy', [1091]], ['udarr', [8645]], ['Udblac', [368]], ['udblac', [369]], ['udhar', [10606]], ['ufisht', [10622]], ['Ufr', [120088]], ['ufr', [120114]], ['Ugrave', [217]], ['ugrave', [249]], ['uHar', [10595]], ['uharl', [8639]], ['uharr', [8638]], ['uhblk', [9600]], ['ulcorn', [8988]], ['ulcorner', [8988]], ['ulcrop', [8975]], ['ultri', [9720]], ['Umacr', [362]], ['umacr', [363]], ['uml', [168]], ['UnderBar', [95]], ['UnderBrace', [9183]], ['UnderBracket', [9141]], ['UnderParenthesis', [9181]], ['Union', [8899]], ['UnionPlus', [8846]], ['Uogon', [370]], ['uogon', [371]], ['Uopf', [120140]], ['uopf', [120166]], ['UpArrowBar', [10514]], ['uparrow', [8593]], ['UpArrow', [8593]], ['Uparrow', [8657]], ['UpArrowDownArrow', [8645]], ['updownarrow', [8597]], ['UpDownArrow', [8597]], ['Updownarrow', [8661]], ['UpEquilibrium', [10606]], ['upharpoonleft', [8639]], ['upharpoonright', [8638]], ['uplus', [8846]], ['UpperLeftArrow', [8598]], ['UpperRightArrow', [8599]], ['upsi', [965]], ['Upsi', [978]], ['upsih', [978]], ['Upsilon', [933]], ['upsilon', [965]], ['UpTeeArrow', [8613]], ['UpTee', [8869]], ['upuparrows', [8648]], ['urcorn', [8989]], ['urcorner', [8989]], ['urcrop', [8974]], ['Uring', [366]], ['uring', [367]], ['urtri', [9721]], ['Uscr', [119984]], ['uscr', [120010]], ['utdot', [8944]], ['Utilde', [360]], ['utilde', [361]], ['utri', [9653]], ['utrif', [9652]], ['uuarr', [8648]], ['Uuml', [220]], ['uuml', [252]], ['uwangle', [10663]], ['vangrt', [10652]], ['varepsilon', [1013]], ['varkappa', [1008]], ['varnothing', [8709]], ['varphi', [981]], ['varpi', [982]], ['varpropto', [8733]], ['varr', [8597]], ['vArr', [8661]], ['varrho', [1009]], ['varsigma', [962]], ['varsubsetneq', [8842, 65024]], ['varsubsetneqq', [10955, 65024]], ['varsupsetneq', [8843, 65024]], ['varsupsetneqq', [10956, 65024]], ['vartheta', [977]], ['vartriangleleft', [8882]], ['vartriangleright', [8883]], ['vBar', [10984]], ['Vbar', [10987]], ['vBarv', [10985]], ['Vcy', [1042]], ['vcy', [1074]], ['vdash', [8866]], ['vDash', [8872]], ['Vdash', [8873]], ['VDash', [8875]], ['Vdashl', [10982]], ['veebar', [8891]], ['vee', [8744]], ['Vee', [8897]], ['veeeq', [8794]], ['vellip', [8942]], ['verbar', [124]], ['Verbar', [8214]], ['vert', [124]], ['Vert', [8214]], ['VerticalBar', [8739]], ['VerticalLine', [124]], ['VerticalSeparator', [10072]], ['VerticalTilde', [8768]], ['VeryThinSpace', [8202]], ['Vfr', [120089]], ['vfr', [120115]], ['vltri', [8882]], ['vnsub', [8834, 8402]], ['vnsup', [8835, 8402]], ['Vopf', [120141]], ['vopf', [120167]], ['vprop', [8733]], ['vrtri', [8883]], ['Vscr', [119985]], ['vscr', [120011]], ['vsubnE', [10955, 65024]], ['vsubne', [8842, 65024]], ['vsupnE', [10956, 65024]], ['vsupne', [8843, 65024]], ['Vvdash', [8874]], ['vzigzag', [10650]], ['Wcirc', [372]], ['wcirc', [373]], ['wedbar', [10847]], ['wedge', [8743]], ['Wedge', [8896]], ['wedgeq', [8793]], ['weierp', [8472]], ['Wfr', [120090]], ['wfr', [120116]], ['Wopf', [120142]], ['wopf', [120168]], ['wp', [8472]], ['wr', [8768]], ['wreath', [8768]], ['Wscr', [119986]], ['wscr', [120012]], ['xcap', [8898]], ['xcirc', [9711]], ['xcup', [8899]], ['xdtri', [9661]], ['Xfr', [120091]], ['xfr', [120117]], ['xharr', [10231]], ['xhArr', [10234]], ['Xi', [926]], ['xi', [958]], ['xlarr', [10229]], ['xlArr', [10232]], ['xmap', [10236]], ['xnis', [8955]], ['xodot', [10752]], ['Xopf', [120143]], ['xopf', [120169]], ['xoplus', [10753]], ['xotime', [10754]], ['xrarr', [10230]], ['xrArr', [10233]], ['Xscr', [119987]], ['xscr', [120013]], ['xsqcup', [10758]], ['xuplus', [10756]], ['xutri', [9651]], ['xvee', [8897]], ['xwedge', [8896]], ['Yacute', [221]], ['yacute', [253]], ['YAcy', [1071]], ['yacy', [1103]], ['Ycirc', [374]], ['ycirc', [375]], ['Ycy', [1067]], ['ycy', [1099]], ['yen', [165]], ['Yfr', [120092]], ['yfr', [120118]], ['YIcy', [1031]], ['yicy', [1111]], ['Yopf', [120144]], ['yopf', [120170]], ['Yscr', [119988]], ['yscr', [120014]], ['YUcy', [1070]], ['yucy', [1102]], ['yuml', [255]], ['Yuml', [376]], ['Zacute', [377]], ['zacute', [378]], ['Zcaron', [381]], ['zcaron', [382]], ['Zcy', [1047]], ['zcy', [1079]], ['Zdot', [379]], ['zdot', [380]], ['zeetrf', [8488]], ['ZeroWidthSpace', [8203]], ['Zeta', [918]], ['zeta', [950]], ['zfr', [120119]], ['Zfr', [8488]], ['ZHcy', [1046]], ['zhcy', [1078]], ['zigrarr', [8669]], ['zopf', [120171]], ['Zopf', [8484]], ['Zscr', [119989]], ['zscr', [120015]], ['zwj', [8205]], ['zwnj', [8204]]];\n\nvar alphaIndex = {};\nvar charIndex = {};\n\ncreateIndexes(alphaIndex, charIndex);\n\n/**\n * @constructor\n */\nfunction Html5Entities() {}\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml5Entities.prototype.decode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&(#?[\\w\\d]+);?/g, function(s, entity) {\n var chr;\n if (entity.charAt(0) === \"#\") {\n var code = entity.charAt(1) === 'x' ?\n parseInt(entity.substr(2).toLowerCase(), 16) :\n parseInt(entity.substr(1));\n\n if (!(isNaN(code) || code < -32768 || code > 65535)) {\n chr = String.fromCharCode(code);\n }\n } else {\n chr = alphaIndex[entity];\n }\n return chr || s;\n });\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n Html5Entities.decode = function(str) {\n return new Html5Entities().decode(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml5Entities.prototype.encode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var charInfo = charIndex[str.charCodeAt(i)];\n if (charInfo) {\n var alpha = charInfo[str.charCodeAt(i + 1)];\n if (alpha) {\n i++;\n } else {\n alpha = charInfo[''];\n }\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n }\n result += str.charAt(i);\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n Html5Entities.encode = function(str) {\n return new Html5Entities().encode(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml5Entities.prototype.encodeNonUTF = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n var charInfo = charIndex[c];\n if (charInfo) {\n var alpha = charInfo[str.charCodeAt(i + 1)];\n if (alpha) {\n i++;\n } else {\n alpha = charInfo[''];\n }\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n }\n if (c < 32 || c > 126) {\n result += '&#' + c + ';';\n } else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n Html5Entities.encodeNonUTF = function(str) {\n return new Html5Entities().encodeNonUTF(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nHtml5Entities.prototype.encodeNonASCII = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n result += '&#' + c + ';';\n i++\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n Html5Entities.encodeNonASCII = function(str) {\n return new Html5Entities().encodeNonASCII(str);\n };\n\n/**\n * @param {Object} alphaIndex Passed by reference.\n * @param {Object} charIndex Passed by reference.\n */\nfunction createIndexes(alphaIndex, charIndex) {\n var i = ENTITIES.length;\n var _results = [];\n while (i--) {\n var e = ENTITIES[i];\n var alpha = e[0];\n var chars = e[1];\n var chr = chars[0];\n var addChar = (chr < 32 || chr > 126) || chr === 62 || chr === 60 || chr === 38 || chr === 34 || chr === 39;\n var charInfo;\n if (addChar) {\n charInfo = charIndex[chr] = charIndex[chr] || {};\n }\n if (chars[1]) {\n var chr2 = chars[1];\n alphaIndex[alpha] = String.fromCharCode(chr) + String.fromCharCode(chr2);\n _results.push(addChar && (charInfo[chr2] = alpha));\n } else {\n alphaIndex[alpha] = String.fromCharCode(chr);\n _results.push(addChar && (charInfo[''] = alpha));\n }\n }\n}\n\nmodule.exports = Html5Entities;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaHRtbC1lbnRpdGllcy9saWIvaHRtbDUtZW50aXRpZXMuanM/MTdmZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2h0bWwtZW50aXRpZXMvbGliL2h0bWw1LWVudGl0aWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIEVOVElUSUVTID0gW1snQWFjdXRlJywgWzE5M11dLCBbJ2FhY3V0ZScsIFsyMjVdXSwgWydBYnJldmUnLCBbMjU4XV0sIFsnYWJyZXZlJywgWzI1OV1dLCBbJ2FjJywgWzg3NjZdXSwgWydhY2QnLCBbODc2N11dLCBbJ2FjRScsIFs4NzY2LCA4MTldXSwgWydBY2lyYycsIFsxOTRdXSwgWydhY2lyYycsIFsyMjZdXSwgWydhY3V0ZScsIFsxODBdXSwgWydBY3knLCBbMTA0MF1dLCBbJ2FjeScsIFsxMDcyXV0sIFsnQUVsaWcnLCBbMTk4XV0sIFsnYWVsaWcnLCBbMjMwXV0sIFsnYWYnLCBbODI4OV1dLCBbJ0FmcicsIFsxMjAwNjhdXSwgWydhZnInLCBbMTIwMDk0XV0sIFsnQWdyYXZlJywgWzE5Ml1dLCBbJ2FncmF2ZScsIFsyMjRdXSwgWydhbGVmc3ltJywgWzg1MDFdXSwgWydhbGVwaCcsIFs4NTAxXV0sIFsnQWxwaGEnLCBbOTEzXV0sIFsnYWxwaGEnLCBbOTQ1XV0sIFsnQW1hY3InLCBbMjU2XV0sIFsnYW1hY3InLCBbMjU3XV0sIFsnYW1hbGcnLCBbMTA4MTVdXSwgWydhbXAnLCBbMzhdXSwgWydBTVAnLCBbMzhdXSwgWydhbmRhbmQnLCBbMTA4MzddXSwgWydBbmQnLCBbMTA4MzVdXSwgWydhbmQnLCBbODc0M11dLCBbJ2FuZGQnLCBbMTA4NDRdXSwgWydhbmRzbG9wZScsIFsxMDg0MF1dLCBbJ2FuZHYnLCBbMTA4NDJdXSwgWydhbmcnLCBbODczNl1dLCBbJ2FuZ2UnLCBbMTA2NjBdXSwgWydhbmdsZScsIFs4NzM2XV0sIFsnYW5nbXNkYWEnLCBbMTA2NjRdXSwgWydhbmdtc2RhYicsIFsxMDY2NV1dLCBbJ2FuZ21zZGFjJywgWzEwNjY2XV0sIFsnYW5nbXNkYWQnLCBbMTA2NjddXSwgWydhbmdtc2RhZScsIFsxMDY2OF1dLCBbJ2FuZ21zZGFmJywgWzEwNjY5XV0sIFsnYW5nbXNkYWcnLCBbMTA2NzBdXSwgWydhbmdtc2RhaCcsIFsxMDY3MV1dLCBbJ2FuZ21zZCcsIFs4NzM3XV0sIFsnYW5ncnQnLCBbODczNV1dLCBbJ2FuZ3J0dmInLCBbODg5NF1dLCBbJ2FuZ3J0dmJkJywgWzEwNjUzXV0sIFsnYW5nc3BoJywgWzg3MzhdXSwgWydhbmdzdCcsIFsxOTddXSwgWydhbmd6YXJyJywgWzkwODRdXSwgWydBb2dvbicsIFsyNjBdXSwgWydhb2dvbicsIFsyNjFdXSwgWydBb3BmJywgWzEyMDEyMF1dLCBbJ2FvcGYnLCBbMTIwMTQ2XV0sIFsnYXBhY2lyJywgWzEwODYzXV0sIFsnYXAnLCBbODc3Nl1dLCBbJ2FwRScsIFsxMDg2NF1dLCBbJ2FwZScsIFs4Nzc4XV0sIFsnYXBpZCcsIFs4Nzc5XV0sIFsnYXBvcycsIFszOV1dLCBbJ0FwcGx5RnVuY3Rpb24nLCBbODI4OV1dLCBbJ2FwcHJveCcsIFs4Nzc2XV0sIFsnYXBwcm94ZXEnLCBbODc3OF1dLCBbJ0FyaW5nJywgWzE5N11dLCBbJ2FyaW5nJywgWzIyOV1dLCBbJ0FzY3InLCBbMTE5OTY0XV0sIFsnYXNjcicsIFsxMTk5OTBdXSwgWydBc3NpZ24nLCBbODc4OF1dLCBbJ2FzdCcsIFs0Ml1dLCBbJ2FzeW1wJywgWzg3NzZdXSwgWydhc3ltcGVxJywgWzg3ODFdXSwgWydBdGlsZGUnLCBbMTk1XV0sIFsnYXRpbGRlJywgWzIyN11dLCBbJ0F1bWwnLCBbMTk2XV0sIFsnYXVtbCcsIFsyMjhdXSwgWydhd2NvbmludCcsIFs4NzU1XV0sIFsnYXdpbnQnLCBbMTA3NjldXSwgWydiYWNrY29uZycsIFs4NzgwXV0sIFsnYmFja2Vwc2lsb24nLCBbMTAxNF1dLCBbJ2JhY2twcmltZScsIFs4MjQ1XV0sIFsnYmFja3NpbScsIFs4NzY1XV0sIFsnYmFja3NpbWVxJywgWzg5MDldXSwgWydCYWNrc2xhc2gnLCBbODcyNl1dLCBbJ0JhcnYnLCBbMTA5ODNdXSwgWydiYXJ2ZWUnLCBbODg5M11dLCBbJ2JhcndlZCcsIFs4OTY1XV0sIFsnQmFyd2VkJywgWzg5NjZdXSwgWydiYXJ3ZWRnZScsIFs4OTY1XV0sIFsnYmJyaycsIFs5MTQxXV0sIFsnYmJya3RicmsnLCBbOTE0Ml1dLCBbJ2Jjb25nJywgWzg3ODBdXSwgWydCY3knLCBbMTA0MV1dLCBbJ2JjeScsIFsxMDczXV0sIFsnYmRxdW8nLCBbODIyMl1dLCBbJ2JlY2F1cycsIFs4NzU3XV0sIFsnYmVjYXVzZScsIFs4NzU3XV0sIFsnQmVjYXVzZScsIFs4NzU3XV0sIFsnYmVtcHR5dicsIFsxMDY3Ml1dLCBbJ2JlcHNpJywgWzEwMTRdXSwgWydiZXJub3UnLCBbODQ5Ml1dLCBbJ0Jlcm5vdWxsaXMnLCBbODQ5Ml1dLCBbJ0JldGEnLCBbOTE0XV0sIFsnYmV0YScsIFs5NDZdXSwgWydiZXRoJywgWzg1MDJdXSwgWydiZXR3ZWVuJywgWzg4MTJdXSwgWydCZnInLCBbMTIwMDY5XV0sIFsnYmZyJywgWzEyMDA5NV1dLCBbJ2JpZ2NhcCcsIFs4ODk4XV0sIFsnYmlnY2lyYycsIFs5NzExXV0sIFsnYmlnY3VwJywgWzg4OTldXSwgWydiaWdvZG90JywgWzEwNzUyXV0sIFsnYmlnb3BsdXMnLCBbMTA3NTNdXSwgWydiaWdvdGltZXMnLCBbMTA3NTRdXSwgWydiaWdzcWN1cCcsIFsxMDc1OF1dLCBbJ2JpZ3N0YXInLCBbOTczM11dLCBbJ2JpZ3RyaWFuZ2xlZG93bicsIFs5NjYxXV0sIFsnYmlndHJpYW5nbGV1cCcsIFs5NjUxXV0sIFsnYmlndXBsdXMnLCBbMTA3NTZdXSwgWydiaWd2ZWUnLCBbODg5N11dLCBbJ2JpZ3dlZGdlJywgWzg4OTZdXSwgWydia2Fyb3cnLCBbMTA1MDldXSwgWydibGFja2xvemVuZ2UnLCBbMTA3MzFdXSwgWydibGFja3NxdWFyZScsIFs5NjQyXV0sIFsnYmxhY2t0cmlhbmdsZScsIFs5NjUyXV0sIFsnYmxhY2t0cmlhbmdsZWRvd24nLCBbOTY2Ml1dLCBbJ2JsYWNrdHJpYW5nbGVsZWZ0JywgWzk2NjZdXSwgWydibGFja3RyaWFuZ2xlcmlnaHQnLCBbOTY1Nl1dLCBbJ2JsYW5rJywgWzkyNTFdXSwgWydibGsxMicsIFs5NjE4XV0sIFsnYmxrMTQnLCBbOTYxN11dLCBbJ2JsazM0JywgWzk2MTldXSwgWydibG9jaycsIFs5NjA4XV0sIFsnYm5lJywgWzYxLCA4NDIxXV0sIFsnYm5lcXVpdicsIFs4ODAxLCA4NDIxXV0sIFsnYk5vdCcsIFsxMDk4OV1dLCBbJ2Jub3QnLCBbODk3Nl1dLCBbJ0JvcGYnLCBbMTIwMTIxXV0sIFsnYm9wZicsIFsxMjAxNDddXSwgWydib3QnLCBbODg2OV1dLCBbJ2JvdHRvbScsIFs4ODY5XV0sIFsnYm93dGllJywgWzg5MDRdXSwgWydib3hib3gnLCBbMTA2OTddXSwgWydib3hkbCcsIFs5NDg4XV0sIFsnYm94ZEwnLCBbOTU1N11dLCBbJ2JveERsJywgWzk1NThdXSwgWydib3hETCcsIFs5NTU5XV0sIFsnYm94ZHInLCBbOTQ4NF1dLCBbJ2JveGRSJywgWzk1NTRdXSwgWydib3hEcicsIFs5NTU1XV0sIFsnYm94RFInLCBbOTU1Nl1dLCBbJ2JveGgnLCBbOTQ3Ml1dLCBbJ2JveEgnLCBbOTU1Ml1dLCBbJ2JveGhkJywgWzk1MTZdXSwgWydib3hIZCcsIFs5NTcyXV0sIFsnYm94aEQnLCBbOTU3M11dLCBbJ2JveEhEJywgWzk1NzRdXSwgWydib3hodScsIFs5NTI0XV0sIFsnYm94SHUnLCBbOTU3NV1dLCBbJ2JveGhVJywgWzk1NzZdXSwgWydib3hIVScsIFs5NTc3XV0sIFsnYm94bWludXMnLCBbODg2M11dLCBbJ2JveHBsdXMnLCBbODg2Ml1dLCBbJ2JveHRpbWVzJywgWzg4NjRdXSwgWydib3h1bCcsIFs5NDk2XV0sIFsnYm94dUwnLCBbOTU2M11dLCBbJ2JveFVsJywgWzk1NjRdXSwgWydib3hVTCcsIFs5NTY1XV0sIFsnYm94dXInLCBbOTQ5Ml1dLCBbJ2JveHVSJywgWzk1NjBdXSwgWydib3hVcicsIFs5NTYxXV0sIFsnYm94VVInLCBbOTU2Ml1dLCBbJ2JveHYnLCBbOTQ3NF1dLCBbJ2JveFYnLCBbOTU1M11dLCBbJ2JveHZoJywgWzk1MzJdXSwgWydib3h2SCcsIFs5NTc4XV0sIFsnYm94VmgnLCBbOTU3OV1dLCBbJ2JveFZIJywgWzk1ODBdXSwgWydib3h2bCcsIFs5NTA4XV0sIFsnYm94dkwnLCBbOTU2OV1dLCBbJ2JveFZsJywgWzk1NzBdXSwgWydib3hWTCcsIFs5NTcxXV0sIFsnYm94dnInLCBbOTUwMF1dLCBbJ2JveHZSJywgWzk1NjZdXSwgWydib3hWcicsIFs5NTY3XV0sIFsnYm94VlInLCBbOTU2OF1dLCBbJ2JwcmltZScsIFs4MjQ1XV0sIFsnYnJldmUnLCBbNzI4XV0sIFsnQnJldmUnLCBbNzI4XV0sIFsnYnJ2YmFyJywgWzE2Nl1dLCBbJ2JzY3InLCBbMTE5OTkxXV0sIFsnQnNjcicsIFs4NDkyXV0sIFsnYnNlbWknLCBbODI3MV1dLCBbJ2JzaW0nLCBbODc2NV1dLCBbJ2JzaW1lJywgWzg5MDldXSwgWydic29sYicsIFsxMDY5M11dLCBbJ2Jzb2wnLCBbOTJdXSwgWydic29saHN1YicsIFsxMDE4NF1dLCBbJ2J1bGwnLCBbODIyNl1dLCBbJ2J1bGxldCcsIFs4MjI2XV0sIFsnYnVtcCcsIFs4NzgyXV0sIFsnYnVtcEUnLCBbMTA5MjZdXSwgWydidW1wZScsIFs4NzgzXV0sIFsnQnVtcGVxJywgWzg3ODJdXSwgWydidW1wZXEnLCBbODc4M11dLCBbJ0NhY3V0ZScsIFsyNjJdXSwgWydjYWN1dGUnLCBbMjYzXV0sIFsnY2FwYW5kJywgWzEwODIwXV0sIFsnY2FwYnJjdXAnLCBbMTA4MjVdXSwgWydjYXBjYXAnLCBbMTA4MjddXSwgWydjYXAnLCBbODc0NV1dLCBbJ0NhcCcsIFs4OTE0XV0sIFsnY2FwY3VwJywgWzEwODIzXV0sIFsnY2FwZG90JywgWzEwODE2XV0sIFsnQ2FwaXRhbERpZmZlcmVudGlhbEQnLCBbODUxN11dLCBbJ2NhcHMnLCBbODc0NSwgNjUwMjRdXSwgWydjYXJldCcsIFs4MjU3XV0sIFsnY2Fyb24nLCBbNzExXV0sIFsnQ2F5bGV5cycsIFs4NDkzXV0sIFsnY2NhcHMnLCBbMTA4MjldXSwgWydDY2Fyb24nLCBbMjY4XV0sIFsnY2Nhcm9uJywgWzI2OV1dLCBbJ0NjZWRpbCcsIFsxOTldXSwgWydjY2VkaWwnLCBbMjMxXV0sIFsnQ2NpcmMnLCBbMjY0XV0sIFsnY2NpcmMnLCBbMjY1XV0sIFsnQ2NvbmludCcsIFs4NzUyXV0sIFsnY2N1cHMnLCBbMTA4MjhdXSwgWydjY3Vwc3NtJywgWzEwODMyXV0sIFsnQ2RvdCcsIFsyNjZdXSwgWydjZG90JywgWzI2N11dLCBbJ2NlZGlsJywgWzE4NF1dLCBbJ0NlZGlsbGEnLCBbMTg0XV0sIFsnY2VtcHR5dicsIFsxMDY3NF1dLCBbJ2NlbnQnLCBbMTYyXV0sIFsnY2VudGVyZG90JywgWzE4M11dLCBbJ0NlbnRlckRvdCcsIFsxODNdXSwgWydjZnInLCBbMTIwMDk2XV0sIFsnQ2ZyJywgWzg0OTNdXSwgWydDSGN5JywgWzEwNjNdXSwgWydjaGN5JywgWzEwOTVdXSwgWydjaGVjaycsIFsxMDAwM11dLCBbJ2NoZWNrbWFyaycsIFsxMDAwM11dLCBbJ0NoaScsIFs5MzVdXSwgWydjaGknLCBbOTY3XV0sIFsnY2lyYycsIFs3MTBdXSwgWydjaXJjZXEnLCBbODc5MV1dLCBbJ2NpcmNsZWFycm93bGVmdCcsIFs4NjM0XV0sIFsnY2lyY2xlYXJyb3dyaWdodCcsIFs4NjM1XV0sIFsnY2lyY2xlZGFzdCcsIFs4ODU5XV0sIFsnY2lyY2xlZGNpcmMnLCBbODg1OF1dLCBbJ2NpcmNsZWRkYXNoJywgWzg4NjFdXSwgWydDaXJjbGVEb3QnLCBbODg1N11dLCBbJ2NpcmNsZWRSJywgWzE3NF1dLCBbJ2NpcmNsZWRTJywgWzk0MTZdXSwgWydDaXJjbGVNaW51cycsIFs4ODU0XV0sIFsnQ2lyY2xlUGx1cycsIFs4ODUzXV0sIFsnQ2lyY2xlVGltZXMnLCBbODg1NV1dLCBbJ2NpcicsIFs5Njc1XV0sIFsnY2lyRScsIFsxMDY5MV1dLCBbJ2NpcmUnLCBbODc5MV1dLCBbJ2NpcmZuaW50JywgWzEwNzY4XV0sIFsnY2lybWlkJywgWzEwOTkxXV0sIFsnY2lyc2NpcicsIFsxMDY5MF1dLCBbJ0Nsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCcsIFs4NzU0XV0sIFsnY2x1YnMnLCBbOTgyN11dLCBbJ2NsdWJzdWl0JywgWzk4MjddXSwgWydjb2xvbicsIFs1OF1dLCBbJ0NvbG9uJywgWzg3NTldXSwgWydDb2xvbmUnLCBbMTA4NjhdXSwgWydjb2xvbmUnLCBbODc4OF1dLCBbJ2NvbG9uZXEnLCBbODc4OF1dLCBbJ2NvbW1hJywgWzQ0XV0sIFsnY29tbWF0JywgWzY0XV0sIFsnY29tcCcsIFs4NzA1XV0sIFsnY29tcGZuJywgWzg3MjhdXSwgWydjb21wbGVtZW50JywgWzg3MDVdXSwgWydjb21wbGV4ZXMnLCBbODQ1MF1dLCBbJ2NvbmcnLCBbODc3M11dLCBbJ2Nvbmdkb3QnLCBbMTA4NjFdXSwgWydDb25ncnVlbnQnLCBbODgwMV1dLCBbJ2NvbmludCcsIFs4NzUwXV0sIFsnQ29uaW50JywgWzg3NTFdXSwgWydDb250b3VySW50ZWdyYWwnLCBbODc1MF1dLCBbJ2NvcGYnLCBbMTIwMTQ4XV0sIFsnQ29wZicsIFs4NDUwXV0sIFsnY29wcm9kJywgWzg3MjBdXSwgWydDb3Byb2R1Y3QnLCBbODcyMF1dLCBbJ2NvcHknLCBbMTY5XV0sIFsnQ09QWScsIFsxNjldXSwgWydjb3B5c3InLCBbODQ3MV1dLCBbJ0NvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWwnLCBbODc1NV1dLCBbJ2NyYXJyJywgWzg2MjldXSwgWydjcm9zcycsIFsxMDAwN11dLCBbJ0Nyb3NzJywgWzEwNzk5XV0sIFsnQ3NjcicsIFsxMTk5NjZdXSwgWydjc2NyJywgWzExOTk5Ml1dLCBbJ2NzdWInLCBbMTA5NTldXSwgWydjc3ViZScsIFsxMDk2MV1dLCBbJ2NzdXAnLCBbMTA5NjBdXSwgWydjc3VwZScsIFsxMDk2Ml1dLCBbJ2N0ZG90JywgWzg5NDNdXSwgWydjdWRhcnJsJywgWzEwNTUyXV0sIFsnY3VkYXJycicsIFsxMDU0OV1dLCBbJ2N1ZXByJywgWzg5MjZdXSwgWydjdWVzYycsIFs4OTI3XV0sIFsnY3VsYXJyJywgWzg2MzBdXSwgWydjdWxhcnJwJywgWzEwNTU3XV0sIFsnY3VwYnJjYXAnLCBbMTA4MjRdXSwgWydjdXBjYXAnLCBbMTA4MjJdXSwgWydDdXBDYXAnLCBbODc4MV1dLCBbJ2N1cCcsIFs4NzQ2XV0sIFsnQ3VwJywgWzg5MTVdXSwgWydjdXBjdXAnLCBbMTA4MjZdXSwgWydjdXBkb3QnLCBbODg0NV1dLCBbJ2N1cG9yJywgWzEwODIxXV0sIFsnY3VwcycsIFs4NzQ2LCA2NTAyNF1dLCBbJ2N1cmFycicsIFs4NjMxXV0sIFsnY3VyYXJybScsIFsxMDU1Nl1dLCBbJ2N1cmx5ZXFwcmVjJywgWzg5MjZdXSwgWydjdXJseWVxc3VjYycsIFs4OTI3XV0sIFsnY3VybHl2ZWUnLCBbODkxMF1dLCBbJ2N1cmx5d2VkZ2UnLCBbODkxMV1dLCBbJ2N1cnJlbicsIFsxNjRdXSwgWydjdXJ2ZWFycm93bGVmdCcsIFs4NjMwXV0sIFsnY3VydmVhcnJvd3JpZ2h0JywgWzg2MzFdXSwgWydjdXZlZScsIFs4OTEwXV0sIFsnY3V3ZWQnLCBbODkxMV1dLCBbJ2N3Y29uaW50JywgWzg3NTRdXSwgWydjd2ludCcsIFs4NzUzXV0sIFsnY3lsY3R5JywgWzkwMDVdXSwgWydkYWdnZXInLCBbODIyNF1dLCBbJ0RhZ2dlcicsIFs4MjI1XV0sIFsnZGFsZXRoJywgWzg1MDRdXSwgWydkYXJyJywgWzg1OTVdXSwgWydEYXJyJywgWzg2MDldXSwgWydkQXJyJywgWzg2NTldXSwgWydkYXNoJywgWzgyMDhdXSwgWydEYXNodicsIFsxMDk4MF1dLCBbJ2Rhc2h2JywgWzg4NjddXSwgWydkYmthcm93JywgWzEwNTExXV0sIFsnZGJsYWMnLCBbNzMzXV0sIFsnRGNhcm9uJywgWzI3MF1dLCBbJ2RjYXJvbicsIFsyNzFdXSwgWydEY3knLCBbMTA0NF1dLCBbJ2RjeScsIFsxMDc2XV0sIFsnZGRhZ2dlcicsIFs4MjI1XV0sIFsnZGRhcnInLCBbODY1MF1dLCBbJ0REJywgWzg1MTddXSwgWydkZCcsIFs4NTE4XV0sIFsnRERvdHJhaGQnLCBbMTA1MTNdXSwgWydkZG90c2VxJywgWzEwODcxXV0sIFsnZGVnJywgWzE3Nl1dLCBbJ0RlbCcsIFs4NzExXV0sIFsnRGVsdGEnLCBbOTE2XV0sIFsnZGVsdGEnLCBbOTQ4XV0sIFsnZGVtcHR5dicsIFsxMDY3M11dLCBbJ2RmaXNodCcsIFsxMDYyM11dLCBbJ0RmcicsIFsxMjAwNzFdXSwgWydkZnInLCBbMTIwMDk3XV0sIFsnZEhhcicsIFsxMDU5N11dLCBbJ2RoYXJsJywgWzg2NDNdXSwgWydkaGFycicsIFs4NjQyXV0sIFsnRGlhY3JpdGljYWxBY3V0ZScsIFsxODBdXSwgWydEaWFjcml0aWNhbERvdCcsIFs3MjldXSwgWydEaWFjcml0aWNhbERvdWJsZUFjdXRlJywgWzczM11dLCBbJ0RpYWNyaXRpY2FsR3JhdmUnLCBbOTZdXSwgWydEaWFjcml0aWNhbFRpbGRlJywgWzczMl1dLCBbJ2RpYW0nLCBbODkwMF1dLCBbJ2RpYW1vbmQnLCBbODkwMF1dLCBbJ0RpYW1vbmQnLCBbODkwMF1dLCBbJ2RpYW1vbmRzdWl0JywgWzk4MzBdXSwgWydkaWFtcycsIFs5ODMwXV0sIFsnZGllJywgWzE2OF1dLCBbJ0RpZmZlcmVudGlhbEQnLCBbODUxOF1dLCBbJ2RpZ2FtbWEnLCBbOTg5XV0sIFsnZGlzaW4nLCBbODk0Nl1dLCBbJ2RpdicsIFsyNDddXSwgWydkaXZpZGUnLCBbMjQ3XV0sIFsnZGl2aWRlb250aW1lcycsIFs4OTAzXV0sIFsnZGl2b254JywgWzg5MDNdXSwgWydESmN5JywgWzEwMjZdXSwgWydkamN5JywgWzExMDZdXSwgWydkbGNvcm4nLCBbODk5MF1dLCBbJ2RsY3JvcCcsIFs4OTczXV0sIFsnZG9sbGFyJywgWzM2XV0sIFsnRG9wZicsIFsxMjAxMjNdXSwgWydkb3BmJywgWzEyMDE0OV1dLCBbJ0RvdCcsIFsxNjhdXSwgWydkb3QnLCBbNzI5XV0sIFsnRG90RG90JywgWzg0MTJdXSwgWydkb3RlcScsIFs4Nzg0XV0sIFsnZG90ZXFkb3QnLCBbODc4NV1dLCBbJ0RvdEVxdWFsJywgWzg3ODRdXSwgWydkb3RtaW51cycsIFs4NzYwXV0sIFsnZG90cGx1cycsIFs4NzI0XV0sIFsnZG90c3F1YXJlJywgWzg4NjVdXSwgWydkb3VibGViYXJ3ZWRnZScsIFs4OTY2XV0sIFsnRG91YmxlQ29udG91ckludGVncmFsJywgWzg3NTFdXSwgWydEb3VibGVEb3QnLCBbMTY4XV0sIFsnRG91YmxlRG93bkFycm93JywgWzg2NTldXSwgWydEb3VibGVMZWZ0QXJyb3cnLCBbODY1Nl1dLCBbJ0RvdWJsZUxlZnRSaWdodEFycm93JywgWzg2NjBdXSwgWydEb3VibGVMZWZ0VGVlJywgWzEwOTgwXV0sIFsnRG91YmxlTG9uZ0xlZnRBcnJvdycsIFsxMDIzMl1dLCBbJ0RvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdycsIFsxMDIzNF1dLCBbJ0RvdWJsZUxvbmdSaWdodEFycm93JywgWzEwMjMzXV0sIFsnRG91YmxlUmlnaHRBcnJvdycsIFs4NjU4XV0sIFsnRG91YmxlUmlnaHRUZWUnLCBbODg3Ml1dLCBbJ0RvdWJsZVVwQXJyb3cnLCBbODY1N11dLCBbJ0RvdWJsZVVwRG93bkFycm93JywgWzg2NjFdXSwgWydEb3VibGVWZXJ0aWNhbEJhcicsIFs4NzQxXV0sIFsnRG93bkFycm93QmFyJywgWzEwNTE1XV0sIFsnZG93bmFycm93JywgWzg1OTVdXSwgWydEb3duQXJyb3cnLCBbODU5NV1dLCBbJ0Rvd25hcnJvdycsIFs4NjU5XV0sIFsnRG93bkFycm93VXBBcnJvdycsIFs4NjkzXV0sIFsnRG93bkJyZXZlJywgWzc4NV1dLCBbJ2Rvd25kb3duYXJyb3dzJywgWzg2NTBdXSwgWydkb3duaGFycG9vbmxlZnQnLCBbODY0M11dLCBbJ2Rvd25oYXJwb29ucmlnaHQnLCBbODY0Ml1dLCBbJ0Rvd25MZWZ0UmlnaHRWZWN0b3InLCBbMTA1NzZdXSwgWydEb3duTGVmdFRlZVZlY3RvcicsIFsxMDU5MF1dLCBbJ0Rvd25MZWZ0VmVjdG9yQmFyJywgWzEwNTgyXV0sIFsnRG93bkxlZnRWZWN0b3InLCBbODYzN11dLCBbJ0Rvd25SaWdodFRlZVZlY3RvcicsIFsxMDU5MV1dLCBbJ0Rvd25SaWdodFZlY3RvckJhcicsIFsxMDU4M11dLCBbJ0Rvd25SaWdodFZlY3RvcicsIFs4NjQxXV0sIFsnRG93blRlZUFycm93JywgWzg2MTVdXSwgWydEb3duVGVlJywgWzg4NjhdXSwgWydkcmJrYXJvdycsIFsxMDUxMl1dLCBbJ2RyY29ybicsIFs4OTkxXV0sIFsnZHJjcm9wJywgWzg5NzJdXSwgWydEc2NyJywgWzExOTk2N11dLCBbJ2RzY3InLCBbMTE5OTkzXV0sIFsnRFNjeScsIFsxMDI5XV0sIFsnZHNjeScsIFsxMTA5XV0sIFsnZHNvbCcsIFsxMDc0Ml1dLCBbJ0RzdHJvaycsIFsyNzJdXSwgWydkc3Ryb2snLCBbMjczXV0sIFsnZHRkb3QnLCBbODk0NV1dLCBbJ2R0cmknLCBbOTY2M11dLCBbJ2R0cmlmJywgWzk2NjJdXSwgWydkdWFycicsIFs4NjkzXV0sIFsnZHVoYXInLCBbMTA2MDddXSwgWydkd2FuZ2xlJywgWzEwNjYyXV0sIFsnRFpjeScsIFsxMDM5XV0sIFsnZHpjeScsIFsxMTE5XV0sIFsnZHppZ3JhcnInLCBbMTAyMzldXSwgWydFYWN1dGUnLCBbMjAxXV0sIFsnZWFjdXRlJywgWzIzM11dLCBbJ2Vhc3RlcicsIFsxMDg2Ml1dLCBbJ0VjYXJvbicsIFsyODJdXSwgWydlY2Fyb24nLCBbMjgzXV0sIFsnRWNpcmMnLCBbMjAyXV0sIFsnZWNpcmMnLCBbMjM0XV0sIFsnZWNpcicsIFs4NzkwXV0sIFsnZWNvbG9uJywgWzg3ODldXSwgWydFY3knLCBbMTA2OV1dLCBbJ2VjeScsIFsxMTAxXV0sIFsnZUREb3QnLCBbMTA4NzFdXSwgWydFZG90JywgWzI3OF1dLCBbJ2Vkb3QnLCBbMjc5XV0sIFsnZURvdCcsIFs4Nzg1XV0sIFsnZWUnLCBbODUxOV1dLCBbJ2VmRG90JywgWzg3ODZdXSwgWydFZnInLCBbMTIwMDcyXV0sIFsnZWZyJywgWzEyMDA5OF1dLCBbJ2VnJywgWzEwOTA2XV0sIFsnRWdyYXZlJywgWzIwMF1dLCBbJ2VncmF2ZScsIFsyMzJdXSwgWydlZ3MnLCBbMTA5MDJdXSwgWydlZ3Nkb3QnLCBbMTA5MDRdXSwgWydlbCcsIFsxMDkwNV1dLCBbJ0VsZW1lbnQnLCBbODcxMl1dLCBbJ2VsaW50ZXJzJywgWzkxOTFdXSwgWydlbGwnLCBbODQ2N11dLCBbJ2VscycsIFsxMDkwMV1dLCBbJ2Vsc2RvdCcsIFsxMDkwM11dLCBbJ0VtYWNyJywgWzI3NF1dLCBbJ2VtYWNyJywgWzI3NV1dLCBbJ2VtcHR5JywgWzg3MDldXSwgWydlbXB0eXNldCcsIFs4NzA5XV0sIFsnRW1wdHlTbWFsbFNxdWFyZScsIFs5NzIzXV0sIFsnZW1wdHl2JywgWzg3MDldXSwgWydFbXB0eVZlcnlTbWFsbFNxdWFyZScsIFs5NjQzXV0sIFsnZW1zcDEzJywgWzgxOTZdXSwgWydlbXNwMTQnLCBbODE5N11dLCBbJ2Vtc3AnLCBbODE5NV1dLCBbJ0VORycsIFszMzBdXSwgWydlbmcnLCBbMzMxXV0sIFsnZW5zcCcsIFs4MTk0XV0sIFsnRW9nb24nLCBbMjgwXV0sIFsnZW9nb24nLCBbMjgxXV0sIFsnRW9wZicsIFsxMjAxMjRdXSwgWydlb3BmJywgWzEyMDE1MF1dLCBbJ2VwYXInLCBbODkxN11dLCBbJ2VwYXJzbCcsIFsxMDcyM11dLCBbJ2VwbHVzJywgWzEwODY1XV0sIFsnZXBzaScsIFs5NDldXSwgWydFcHNpbG9uJywgWzkxN11dLCBbJ2Vwc2lsb24nLCBbOTQ5XV0sIFsnZXBzaXYnLCBbMTAxM11dLCBbJ2VxY2lyYycsIFs4NzkwXV0sIFsnZXFjb2xvbicsIFs4Nzg5XV0sIFsnZXFzaW0nLCBbODc3MF1dLCBbJ2Vxc2xhbnRndHInLCBbMTA5MDJdXSwgWydlcXNsYW50bGVzcycsIFsxMDkwMV1dLCBbJ0VxdWFsJywgWzEwODY5XV0sIFsnZXF1YWxzJywgWzYxXV0sIFsnRXF1YWxUaWxkZScsIFs4NzcwXV0sIFsnZXF1ZXN0JywgWzg3OTldXSwgWydFcXVpbGlicml1bScsIFs4NjUyXV0sIFsnZXF1aXYnLCBbODgwMV1dLCBbJ2VxdWl2REQnLCBbMTA4NzJdXSwgWydlcXZwYXJzbCcsIFsxMDcyNV1dLCBbJ2VyYXJyJywgWzEwNjA5XV0sIFsnZXJEb3QnLCBbODc4N11dLCBbJ2VzY3InLCBbODQ5NV1dLCBbJ0VzY3InLCBbODQ5Nl1dLCBbJ2VzZG90JywgWzg3ODRdXSwgWydFc2ltJywgWzEwODY3XV0sIFsnZXNpbScsIFs4NzcwXV0sIFsnRXRhJywgWzkxOV1dLCBbJ2V0YScsIFs5NTFdXSwgWydFVEgnLCBbMjA4XV0sIFsnZXRoJywgWzI0MF1dLCBbJ0V1bWwnLCBbMjAzXV0sIFsnZXVtbCcsIFsyMzVdXSwgWydldXJvJywgWzgzNjRdXSwgWydleGNsJywgWzMzXV0sIFsnZXhpc3QnLCBbODcwN11dLCBbJ0V4aXN0cycsIFs4NzA3XV0sIFsnZXhwZWN0YXRpb24nLCBbODQ5Nl1dLCBbJ2V4cG9uZW50aWFsZScsIFs4NTE5XV0sIFsnRXhwb25lbnRpYWxFJywgWzg1MTldXSwgWydmYWxsaW5nZG90c2VxJywgWzg3ODZdXSwgWydGY3knLCBbMTA2MF1dLCBbJ2ZjeScsIFsxMDkyXV0sIFsnZmVtYWxlJywgWzk3OTJdXSwgWydmZmlsaWcnLCBbNjQyNTldXSwgWydmZmxpZycsIFs2NDI1Nl1dLCBbJ2ZmbGxpZycsIFs2NDI2MF1dLCBbJ0ZmcicsIFsxMjAwNzNdXSwgWydmZnInLCBbMTIwMDk5XV0sIFsnZmlsaWcnLCBbNjQyNTddXSwgWydGaWxsZWRTbWFsbFNxdWFyZScsIFs5NzI0XV0sIFsnRmlsbGVkVmVyeVNtYWxsU3F1YXJlJywgWzk2NDJdXSwgWydmamxpZycsIFsxMDIsIDEwNl1dLCBbJ2ZsYXQnLCBbOTgzN11dLCBbJ2ZsbGlnJywgWzY0MjU4XV0sIFsnZmx0bnMnLCBbOTY0OV1dLCBbJ2Zub2YnLCBbNDAyXV0sIFsnRm9wZicsIFsxMjAxMjVdXSwgWydmb3BmJywgWzEyMDE1MV1dLCBbJ2ZvcmFsbCcsIFs4NzA0XV0sIFsnRm9yQWxsJywgWzg3MDRdXSwgWydmb3JrJywgWzg5MTZdXSwgWydmb3JrdicsIFsxMDk2OV1dLCBbJ0ZvdXJpZXJ0cmYnLCBbODQ5N11dLCBbJ2ZwYXJ0aW50JywgWzEwNzY1XV0sIFsnZnJhYzEyJywgWzE4OV1dLCBbJ2ZyYWMxMycsIFs4NTMxXV0sIFsnZnJhYzE0JywgWzE4OF1dLCBbJ2ZyYWMxNScsIFs4NTMzXV0sIFsnZnJhYzE2JywgWzg1MzddXSwgWydmcmFjMTgnLCBbODUzOV1dLCBbJ2ZyYWMyMycsIFs4NTMyXV0sIFsnZnJhYzI1JywgWzg1MzRdXSwgWydmcmFjMzQnLCBbMTkwXV0sIFsnZnJhYzM1JywgWzg1MzVdXSwgWydmcmFjMzgnLCBbODU0MF1dLCBbJ2ZyYWM0NScsIFs4NTM2XV0sIFsnZnJhYzU2JywgWzg1MzhdXSwgWydmcmFjNTgnLCBbODU0MV1dLCBbJ2ZyYWM3OCcsIFs4NTQyXV0sIFsnZnJhc2wnLCBbODI2MF1dLCBbJ2Zyb3duJywgWzg5OTRdXSwgWydmc2NyJywgWzExOTk5NV1dLCBbJ0ZzY3InLCBbODQ5N11dLCBbJ2dhY3V0ZScsIFs1MDFdXSwgWydHYW1tYScsIFs5MTVdXSwgWydnYW1tYScsIFs5NDddXSwgWydHYW1tYWQnLCBbOTg4XV0sIFsnZ2FtbWFkJywgWzk4OV1dLCBbJ2dhcCcsIFsxMDg4Nl1dLCBbJ0dicmV2ZScsIFsyODZdXSwgWydnYnJldmUnLCBbMjg3XV0sIFsnR2NlZGlsJywgWzI5MF1dLCBbJ0djaXJjJywgWzI4NF1dLCBbJ2djaXJjJywgWzI4NV1dLCBbJ0djeScsIFsxMDQzXV0sIFsnZ2N5JywgWzEwNzVdXSwgWydHZG90JywgWzI4OF1dLCBbJ2dkb3QnLCBbMjg5XV0sIFsnZ2UnLCBbODgwNV1dLCBbJ2dFJywgWzg4MDddXSwgWydnRWwnLCBbMTA4OTJdXSwgWydnZWwnLCBbODkyM11dLCBbJ2dlcScsIFs4ODA1XV0sIFsnZ2VxcScsIFs4ODA3XV0sIFsnZ2Vxc2xhbnQnLCBbMTA4NzhdXSwgWydnZXNjYycsIFsxMDkyMV1dLCBbJ2dlcycsIFsxMDg3OF1dLCBbJ2dlc2RvdCcsIFsxMDg4MF1dLCBbJ2dlc2RvdG8nLCBbMTA4ODJdXSwgWydnZXNkb3RvbCcsIFsxMDg4NF1dLCBbJ2dlc2wnLCBbODkyMywgNjUwMjRdXSwgWydnZXNsZXMnLCBbMTA5MDBdXSwgWydHZnInLCBbMTIwMDc0XV0sIFsnZ2ZyJywgWzEyMDEwMF1dLCBbJ2dnJywgWzg4MTFdXSwgWydHZycsIFs4OTIxXV0sIFsnZ2dnJywgWzg5MjFdXSwgWydnaW1lbCcsIFs4NTAzXV0sIFsnR0pjeScsIFsxMDI3XV0sIFsnZ2pjeScsIFsxMTA3XV0sIFsnZ2xhJywgWzEwOTE3XV0sIFsnZ2wnLCBbODgyM11dLCBbJ2dsRScsIFsxMDg5OF1dLCBbJ2dsaicsIFsxMDkxNl1dLCBbJ2duYXAnLCBbMTA4OTBdXSwgWydnbmFwcHJveCcsIFsxMDg5MF1dLCBbJ2duZScsIFsxMDg4OF1dLCBbJ2duRScsIFs4ODA5XV0sIFsnZ25lcScsIFsxMDg4OF1dLCBbJ2duZXFxJywgWzg4MDldXSwgWydnbnNpbScsIFs4OTM1XV0sIFsnR29wZicsIFsxMjAxMjZdXSwgWydnb3BmJywgWzEyMDE1Ml1dLCBbJ2dyYXZlJywgWzk2XV0sIFsnR3JlYXRlckVxdWFsJywgWzg4MDVdXSwgWydHcmVhdGVyRXF1YWxMZXNzJywgWzg5MjNdXSwgWydHcmVhdGVyRnVsbEVxdWFsJywgWzg4MDddXSwgWydHcmVhdGVyR3JlYXRlcicsIFsxMDkxNF1dLCBbJ0dyZWF0ZXJMZXNzJywgWzg4MjNdXSwgWydHcmVhdGVyU2xhbnRFcXVhbCcsIFsxMDg3OF1dLCBbJ0dyZWF0ZXJUaWxkZScsIFs4ODE5XV0sIFsnR3NjcicsIFsxMTk5NzBdXSwgWydnc2NyJywgWzg0NThdXSwgWydnc2ltJywgWzg4MTldXSwgWydnc2ltZScsIFsxMDg5NF1dLCBbJ2dzaW1sJywgWzEwODk2XV0sIFsnZ3RjYycsIFsxMDkxOV1dLCBbJ2d0Y2lyJywgWzEwODc0XV0sIFsnZ3QnLCBbNjJdXSwgWydHVCcsIFs2Ml1dLCBbJ0d0JywgWzg4MTFdXSwgWydndGRvdCcsIFs4OTE5XV0sIFsnZ3RsUGFyJywgWzEwNjQ1XV0sIFsnZ3RxdWVzdCcsIFsxMDg3Nl1dLCBbJ2d0cmFwcHJveCcsIFsxMDg4Nl1dLCBbJ2d0cmFycicsIFsxMDYxNl1dLCBbJ2d0cmRvdCcsIFs4OTE5XV0sIFsnZ3RyZXFsZXNzJywgWzg5MjNdXSwgWydndHJlcXFsZXNzJywgWzEwODkyXV0sIFsnZ3RybGVzcycsIFs4ODIzXV0sIFsnZ3Ryc2ltJywgWzg4MTldXSwgWydndmVydG5lcXEnLCBbODgwOSwgNjUwMjRdXSwgWydndm5FJywgWzg4MDksIDY1MDI0XV0sIFsnSGFjZWsnLCBbNzExXV0sIFsnaGFpcnNwJywgWzgyMDJdXSwgWydoYWxmJywgWzE4OV1dLCBbJ2hhbWlsdCcsIFs4NDU5XV0sIFsnSEFSRGN5JywgWzEwNjZdXSwgWydoYXJkY3knLCBbMTA5OF1dLCBbJ2hhcnJjaXInLCBbMTA1NjhdXSwgWydoYXJyJywgWzg1OTZdXSwgWydoQXJyJywgWzg2NjBdXSwgWydoYXJydycsIFs4NjIxXV0sIFsnSGF0JywgWzk0XV0sIFsnaGJhcicsIFs4NDYzXV0sIFsnSGNpcmMnLCBbMjkyXV0sIFsnaGNpcmMnLCBbMjkzXV0sIFsnaGVhcnRzJywgWzk4MjldXSwgWydoZWFydHN1aXQnLCBbOTgyOV1dLCBbJ2hlbGxpcCcsIFs4MjMwXV0sIFsnaGVyY29uJywgWzg4ODldXSwgWydoZnInLCBbMTIwMTAxXV0sIFsnSGZyJywgWzg0NjBdXSwgWydIaWxiZXJ0U3BhY2UnLCBbODQ1OV1dLCBbJ2hrc2Vhcm93JywgWzEwNTMzXV0sIFsnaGtzd2Fyb3cnLCBbMTA1MzRdXSwgWydob2FycicsIFs4NzAzXV0sIFsnaG9tdGh0JywgWzg3NjNdXSwgWydob29rbGVmdGFycm93JywgWzg2MTddXSwgWydob29rcmlnaHRhcnJvdycsIFs4NjE4XV0sIFsnaG9wZicsIFsxMjAxNTNdXSwgWydIb3BmJywgWzg0NjFdXSwgWydob3JiYXInLCBbODIxM11dLCBbJ0hvcml6b250YWxMaW5lJywgWzk0NzJdXSwgWydoc2NyJywgWzExOTk5N11dLCBbJ0hzY3InLCBbODQ1OV1dLCBbJ2hzbGFzaCcsIFs4NDYzXV0sIFsnSHN0cm9rJywgWzI5NF1dLCBbJ2hzdHJvaycsIFsyOTVdXSwgWydIdW1wRG93bkh1bXAnLCBbODc4Ml1dLCBbJ0h1bXBFcXVhbCcsIFs4NzgzXV0sIFsnaHlidWxsJywgWzgyNTldXSwgWydoeXBoZW4nLCBbODIwOF1dLCBbJ0lhY3V0ZScsIFsyMDVdXSwgWydpYWN1dGUnLCBbMjM3XV0sIFsnaWMnLCBbODI5MV1dLCBbJ0ljaXJjJywgWzIwNl1dLCBbJ2ljaXJjJywgWzIzOF1dLCBbJ0ljeScsIFsxMDQ4XV0sIFsnaWN5JywgWzEwODBdXSwgWydJZG90JywgWzMwNF1dLCBbJ0lFY3knLCBbMTA0NV1dLCBbJ2llY3knLCBbMTA3N11dLCBbJ2lleGNsJywgWzE2MV1dLCBbJ2lmZicsIFs4NjYwXV0sIFsnaWZyJywgWzEyMDEwMl1dLCBbJ0lmcicsIFs4NDY1XV0sIFsnSWdyYXZlJywgWzIwNF1dLCBbJ2lncmF2ZScsIFsyMzZdXSwgWydpaScsIFs4NTIwXV0sIFsnaWlpaW50JywgWzEwNzY0XV0sIFsnaWlpbnQnLCBbODc0OV1dLCBbJ2lpbmZpbicsIFsxMDcxNl1dLCBbJ2lpb3RhJywgWzg0ODldXSwgWydJSmxpZycsIFszMDZdXSwgWydpamxpZycsIFszMDddXSwgWydJbWFjcicsIFsyOThdXSwgWydpbWFjcicsIFsyOTldXSwgWydpbWFnZScsIFs4NDY1XV0sIFsnSW1hZ2luYXJ5SScsIFs4NTIwXV0sIFsnaW1hZ2xpbmUnLCBbODQ2NF1dLCBbJ2ltYWdwYXJ0JywgWzg0NjVdXSwgWydpbWF0aCcsIFszMDVdXSwgWydJbScsIFs4NDY1XV0sIFsnaW1vZicsIFs4ODg3XV0sIFsnaW1wZWQnLCBbNDM3XV0sIFsnSW1wbGllcycsIFs4NjU4XV0sIFsnaW5jYXJlJywgWzg0NTNdXSwgWydpbicsIFs4NzEyXV0sIFsnaW5maW4nLCBbODczNF1dLCBbJ2luZmludGllJywgWzEwNzE3XV0sIFsnaW5vZG90JywgWzMwNV1dLCBbJ2ludGNhbCcsIFs4ODkwXV0sIFsnaW50JywgWzg3NDddXSwgWydJbnQnLCBbODc0OF1dLCBbJ2ludGVnZXJzJywgWzg0ODRdXSwgWydJbnRlZ3JhbCcsIFs4NzQ3XV0sIFsnaW50ZXJjYWwnLCBbODg5MF1dLCBbJ0ludGVyc2VjdGlvbicsIFs4ODk4XV0sIFsnaW50bGFyaGsnLCBbMTA3NzVdXSwgWydpbnRwcm9kJywgWzEwODEyXV0sIFsnSW52aXNpYmxlQ29tbWEnLCBbODI5MV1dLCBbJ0ludmlzaWJsZVRpbWVzJywgWzgyOTBdXSwgWydJT2N5JywgWzEwMjVdXSwgWydpb2N5JywgWzExMDVdXSwgWydJb2dvbicsIFszMDJdXSwgWydpb2dvbicsIFszMDNdXSwgWydJb3BmJywgWzEyMDEyOF1dLCBbJ2lvcGYnLCBbMTIwMTU0XV0sIFsnSW90YScsIFs5MjFdXSwgWydpb3RhJywgWzk1M11dLCBbJ2lwcm9kJywgWzEwODEyXV0sIFsnaXF1ZXN0JywgWzE5MV1dLCBbJ2lzY3InLCBbMTE5OTk4XV0sIFsnSXNjcicsIFs4NDY0XV0sIFsnaXNpbicsIFs4NzEyXV0sIFsnaXNpbmRvdCcsIFs4OTQ5XV0sIFsnaXNpbkUnLCBbODk1M11dLCBbJ2lzaW5zJywgWzg5NDhdXSwgWydpc2luc3YnLCBbODk0N11dLCBbJ2lzaW52JywgWzg3MTJdXSwgWydpdCcsIFs4MjkwXV0sIFsnSXRpbGRlJywgWzI5Nl1dLCBbJ2l0aWxkZScsIFsyOTddXSwgWydJdWtjeScsIFsxMDMwXV0sIFsnaXVrY3knLCBbMTExMF1dLCBbJ0l1bWwnLCBbMjA3XV0sIFsnaXVtbCcsIFsyMzldXSwgWydKY2lyYycsIFszMDhdXSwgWydqY2lyYycsIFszMDldXSwgWydKY3knLCBbMTA0OV1dLCBbJ2pjeScsIFsxMDgxXV0sIFsnSmZyJywgWzEyMDA3N11dLCBbJ2pmcicsIFsxMjAxMDNdXSwgWydqbWF0aCcsIFs1NjddXSwgWydKb3BmJywgWzEyMDEyOV1dLCBbJ2pvcGYnLCBbMTIwMTU1XV0sIFsnSnNjcicsIFsxMTk5NzNdXSwgWydqc2NyJywgWzExOTk5OV1dLCBbJ0pzZXJjeScsIFsxMDMyXV0sIFsnanNlcmN5JywgWzExMTJdXSwgWydKdWtjeScsIFsxMDI4XV0sIFsnanVrY3knLCBbMTEwOF1dLCBbJ0thcHBhJywgWzkyMl1dLCBbJ2thcHBhJywgWzk1NF1dLCBbJ2thcHBhdicsIFsxMDA4XV0sIFsnS2NlZGlsJywgWzMxMF1dLCBbJ2tjZWRpbCcsIFszMTFdXSwgWydLY3knLCBbMTA1MF1dLCBbJ2tjeScsIFsxMDgyXV0sIFsnS2ZyJywgWzEyMDA3OF1dLCBbJ2tmcicsIFsxMjAxMDRdXSwgWydrZ3JlZW4nLCBbMzEyXV0sIFsnS0hjeScsIFsxMDYxXV0sIFsna2hjeScsIFsxMDkzXV0sIFsnS0pjeScsIFsxMDM2XV0sIFsna2pjeScsIFsxMTE2XV0sIFsnS29wZicsIFsxMjAxMzBdXSwgWydrb3BmJywgWzEyMDE1Nl1dLCBbJ0tzY3InLCBbMTE5OTc0XV0sIFsna3NjcicsIFsxMjAwMDBdXSwgWydsQWFycicsIFs4NjY2XV0sIFsnTGFjdXRlJywgWzMxM11dLCBbJ2xhY3V0ZScsIFszMTRdXSwgWydsYWVtcHR5dicsIFsxMDY3Nl1dLCBbJ2xhZ3JhbicsIFs4NDY2XV0sIFsnTGFtYmRhJywgWzkyM11dLCBbJ2xhbWJkYScsIFs5NTVdXSwgWydsYW5nJywgWzEwMjE2XV0sIFsnTGFuZycsIFsxMDIxOF1dLCBbJ2xhbmdkJywgWzEwNjQxXV0sIFsnbGFuZ2xlJywgWzEwMjE2XV0sIFsnbGFwJywgWzEwODg1XV0sIFsnTGFwbGFjZXRyZicsIFs4NDY2XV0sIFsnbGFxdW8nLCBbMTcxXV0sIFsnbGFycmInLCBbODY3Nl1dLCBbJ2xhcnJiZnMnLCBbMTA1MjddXSwgWydsYXJyJywgWzg1OTJdXSwgWydMYXJyJywgWzg2MDZdXSwgWydsQXJyJywgWzg2NTZdXSwgWydsYXJyZnMnLCBbMTA1MjVdXSwgWydsYXJyaGsnLCBbODYxN11dLCBbJ2xhcnJscCcsIFs4NjE5XV0sIFsnbGFycnBsJywgWzEwNTUzXV0sIFsnbGFycnNpbScsIFsxMDYxMV1dLCBbJ2xhcnJ0bCcsIFs4NjEwXV0sIFsnbGF0YWlsJywgWzEwNTIxXV0sIFsnbEF0YWlsJywgWzEwNTIzXV0sIFsnbGF0JywgWzEwOTIzXV0sIFsnbGF0ZScsIFsxMDkyNV1dLCBbJ2xhdGVzJywgWzEwOTI1LCA2NTAyNF1dLCBbJ2xiYXJyJywgWzEwNTA4XV0sIFsnbEJhcnInLCBbMTA1MTBdXSwgWydsYmJyaycsIFsxMDA5OF1dLCBbJ2xicmFjZScsIFsxMjNdXSwgWydsYnJhY2snLCBbOTFdXSwgWydsYnJrZScsIFsxMDYzNV1dLCBbJ2xicmtzbGQnLCBbMTA2MzldXSwgWydsYnJrc2x1JywgWzEwNjM3XV0sIFsnTGNhcm9uJywgWzMxN11dLCBbJ2xjYXJvbicsIFszMThdXSwgWydMY2VkaWwnLCBbMzE1XV0sIFsnbGNlZGlsJywgWzMxNl1dLCBbJ2xjZWlsJywgWzg5NjhdXSwgWydsY3ViJywgWzEyM11dLCBbJ0xjeScsIFsxMDUxXV0sIFsnbGN5JywgWzEwODNdXSwgWydsZGNhJywgWzEwNTUwXV0sIFsnbGRxdW8nLCBbODIyMF1dLCBbJ2xkcXVvcicsIFs4MjIyXV0sIFsnbGRyZGhhcicsIFsxMDU5OV1dLCBbJ2xkcnVzaGFyJywgWzEwNTcxXV0sIFsnbGRzaCcsIFs4NjI2XV0sIFsnbGUnLCBbODgwNF1dLCBbJ2xFJywgWzg4MDZdXSwgWydMZWZ0QW5nbGVCcmFja2V0JywgWzEwMjE2XV0sIFsnTGVmdEFycm93QmFyJywgWzg2NzZdXSwgWydsZWZ0YXJyb3cnLCBbODU5Ml1dLCBbJ0xlZnRBcnJvdycsIFs4NTkyXV0sIFsnTGVmdGFycm93JywgWzg2NTZdXSwgWydMZWZ0QXJyb3dSaWdodEFycm93JywgWzg2NDZdXSwgWydsZWZ0YXJyb3d0YWlsJywgWzg2MTBdXSwgWydMZWZ0Q2VpbGluZycsIFs4OTY4XV0sIFsnTGVmdERvdWJsZUJyYWNrZXQnLCBbMTAyMTRdXSwgWydMZWZ0RG93blRlZVZlY3RvcicsIFsxMDU5M11dLCBbJ0xlZnREb3duVmVjdG9yQmFyJywgWzEwNTg1XV0sIFsnTGVmdERvd25WZWN0b3InLCBbODY0M11dLCBbJ0xlZnRGbG9vcicsIFs4OTcwXV0sIFsnbGVmdGhhcnBvb25kb3duJywgWzg2MzddXSwgWydsZWZ0aGFycG9vbnVwJywgWzg2MzZdXSwgWydsZWZ0bGVmdGFycm93cycsIFs4NjQ3XV0sIFsnbGVmdHJpZ2h0YXJyb3cnLCBbODU5Nl1dLCBbJ0xlZnRSaWdodEFycm93JywgWzg1OTZdXSwgWydMZWZ0cmlnaHRhcnJvdycsIFs4NjYwXV0sIFsnbGVmdHJpZ2h0YXJyb3dzJywgWzg2NDZdXSwgWydsZWZ0cmlnaHRoYXJwb29ucycsIFs4NjUxXV0sIFsnbGVmdHJpZ2h0c3F1aWdhcnJvdycsIFs4NjIxXV0sIFsnTGVmdFJpZ2h0VmVjdG9yJywgWzEwNTc0XV0sIFsnTGVmdFRlZUFycm93JywgWzg2MTJdXSwgWydMZWZ0VGVlJywgWzg4NjddXSwgWydMZWZ0VGVlVmVjdG9yJywgWzEwNTg2XV0sIFsnbGVmdHRocmVldGltZXMnLCBbODkwN11dLCBbJ0xlZnRUcmlhbmdsZUJhcicsIFsxMDcwM11dLCBbJ0xlZnRUcmlhbmdsZScsIFs4ODgyXV0sIFsnTGVmdFRyaWFuZ2xlRXF1YWwnLCBbODg4NF1dLCBbJ0xlZnRVcERvd25WZWN0b3InLCBbMTA1NzddXSwgWydMZWZ0VXBUZWVWZWN0b3InLCBbMTA1OTJdXSwgWydMZWZ0VXBWZWN0b3JCYXInLCBbMTA1ODRdXSwgWydMZWZ0VXBWZWN0b3InLCBbODYzOV1dLCBbJ0xlZnRWZWN0b3JCYXInLCBbMTA1NzhdXSwgWydMZWZ0VmVjdG9yJywgWzg2MzZdXSwgWydsRWcnLCBbMTA4OTFdXSwgWydsZWcnLCBbODkyMl1dLCBbJ2xlcScsIFs4ODA0XV0sIFsnbGVxcScsIFs4ODA2XV0sIFsnbGVxc2xhbnQnLCBbMTA4NzddXSwgWydsZXNjYycsIFsxMDkyMF1dLCBbJ2xlcycsIFsxMDg3N11dLCBbJ2xlc2RvdCcsIFsxMDg3OV1dLCBbJ2xlc2RvdG8nLCBbMTA4ODFdXSwgWydsZXNkb3RvcicsIFsxMDg4M11dLCBbJ2xlc2cnLCBbODkyMiwgNjUwMjRdXSwgWydsZXNnZXMnLCBbMTA4OTldXSwgWydsZXNzYXBwcm94JywgWzEwODg1XV0sIFsnbGVzc2RvdCcsIFs4OTE4XV0sIFsnbGVzc2VxZ3RyJywgWzg5MjJdXSwgWydsZXNzZXFxZ3RyJywgWzEwODkxXV0sIFsnTGVzc0VxdWFsR3JlYXRlcicsIFs4OTIyXV0sIFsnTGVzc0Z1bGxFcXVhbCcsIFs4ODA2XV0sIFsnTGVzc0dyZWF0ZXInLCBbODgyMl1dLCBbJ2xlc3NndHInLCBbODgyMl1dLCBbJ0xlc3NMZXNzJywgWzEwOTEzXV0sIFsnbGVzc3NpbScsIFs4ODE4XV0sIFsnTGVzc1NsYW50RXF1YWwnLCBbMTA4NzddXSwgWydMZXNzVGlsZGUnLCBbODgxOF1dLCBbJ2xmaXNodCcsIFsxMDYyMF1dLCBbJ2xmbG9vcicsIFs4OTcwXV0sIFsnTGZyJywgWzEyMDA3OV1dLCBbJ2xmcicsIFsxMjAxMDVdXSwgWydsZycsIFs4ODIyXV0sIFsnbGdFJywgWzEwODk3XV0sIFsnbEhhcicsIFsxMDU5NF1dLCBbJ2xoYXJkJywgWzg2MzddXSwgWydsaGFydScsIFs4NjM2XV0sIFsnbGhhcnVsJywgWzEwNjAyXV0sIFsnbGhibGsnLCBbOTYwNF1dLCBbJ0xKY3knLCBbMTAzM11dLCBbJ2xqY3knLCBbMTExM11dLCBbJ2xsYXJyJywgWzg2NDddXSwgWydsbCcsIFs4ODEwXV0sIFsnTGwnLCBbODkyMF1dLCBbJ2xsY29ybmVyJywgWzg5OTBdXSwgWydMbGVmdGFycm93JywgWzg2NjZdXSwgWydsbGhhcmQnLCBbMTA2MDNdXSwgWydsbHRyaScsIFs5NzIyXV0sIFsnTG1pZG90JywgWzMxOV1dLCBbJ2xtaWRvdCcsIFszMjBdXSwgWydsbW91c3RhY2hlJywgWzkxMzZdXSwgWydsbW91c3QnLCBbOTEzNl1dLCBbJ2xuYXAnLCBbMTA4ODldXSwgWydsbmFwcHJveCcsIFsxMDg4OV1dLCBbJ2xuZScsIFsxMDg4N11dLCBbJ2xuRScsIFs4ODA4XV0sIFsnbG5lcScsIFsxMDg4N11dLCBbJ2xuZXFxJywgWzg4MDhdXSwgWydsbnNpbScsIFs4OTM0XV0sIFsnbG9hbmcnLCBbMTAyMjBdXSwgWydsb2FycicsIFs4NzAxXV0sIFsnbG9icmsnLCBbMTAyMTRdXSwgWydsb25nbGVmdGFycm93JywgWzEwMjI5XV0sIFsnTG9uZ0xlZnRBcnJvdycsIFsxMDIyOV1dLCBbJ0xvbmdsZWZ0YXJyb3cnLCBbMTAyMzJdXSwgWydsb25nbGVmdHJpZ2h0YXJyb3cnLCBbMTAyMzFdXSwgWydMb25nTGVmdFJpZ2h0QXJyb3cnLCBbMTAyMzFdXSwgWydMb25nbGVmdHJpZ2h0YXJyb3cnLCBbMTAyMzRdXSwgWydsb25nbWFwc3RvJywgWzEwMjM2XV0sIFsnbG9uZ3JpZ2h0YXJyb3cnLCBbMTAyMzBdXSwgWydMb25nUmlnaHRBcnJvdycsIFsxMDIzMF1dLCBbJ0xvbmdyaWdodGFycm93JywgWzEwMjMzXV0sIFsnbG9vcGFycm93bGVmdCcsIFs4NjE5XV0sIFsnbG9vcGFycm93cmlnaHQnLCBbODYyMF1dLCBbJ2xvcGFyJywgWzEwNjI5XV0sIFsnTG9wZicsIFsxMjAxMzFdXSwgWydsb3BmJywgWzEyMDE1N11dLCBbJ2xvcGx1cycsIFsxMDc5N11dLCBbJ2xvdGltZXMnLCBbMTA4MDRdXSwgWydsb3dhc3QnLCBbODcyN11dLCBbJ2xvd2JhcicsIFs5NV1dLCBbJ0xvd2VyTGVmdEFycm93JywgWzg2MDFdXSwgWydMb3dlclJpZ2h0QXJyb3cnLCBbODYwMF1dLCBbJ2xveicsIFs5Njc0XV0sIFsnbG96ZW5nZScsIFs5Njc0XV0sIFsnbG96ZicsIFsxMDczMV1dLCBbJ2xwYXInLCBbNDBdXSwgWydscGFybHQnLCBbMTA2NDNdXSwgWydscmFycicsIFs4NjQ2XV0sIFsnbHJjb3JuZXInLCBbODk5MV1dLCBbJ2xyaGFyJywgWzg2NTFdXSwgWydscmhhcmQnLCBbMTA2MDVdXSwgWydscm0nLCBbODIwNl1dLCBbJ2xydHJpJywgWzg4OTVdXSwgWydsc2FxdW8nLCBbODI0OV1dLCBbJ2xzY3InLCBbMTIwMDAxXV0sIFsnTHNjcicsIFs4NDY2XV0sIFsnbHNoJywgWzg2MjRdXSwgWydMc2gnLCBbODYyNF1dLCBbJ2xzaW0nLCBbODgxOF1dLCBbJ2xzaW1lJywgWzEwODkzXV0sIFsnbHNpbWcnLCBbMTA4OTVdXSwgWydsc3FiJywgWzkxXV0sIFsnbHNxdW8nLCBbODIxNl1dLCBbJ2xzcXVvcicsIFs4MjE4XV0sIFsnTHN0cm9rJywgWzMyMV1dLCBbJ2xzdHJvaycsIFszMjJdXSwgWydsdGNjJywgWzEwOTE4XV0sIFsnbHRjaXInLCBbMTA4NzNdXSwgWydsdCcsIFs2MF1dLCBbJ0xUJywgWzYwXV0sIFsnTHQnLCBbODgxMF1dLCBbJ2x0ZG90JywgWzg5MThdXSwgWydsdGhyZWUnLCBbODkwN11dLCBbJ2x0aW1lcycsIFs4OTA1XV0sIFsnbHRsYXJyJywgWzEwNjE0XV0sIFsnbHRxdWVzdCcsIFsxMDg3NV1dLCBbJ2x0cmknLCBbOTY2N11dLCBbJ2x0cmllJywgWzg4ODRdXSwgWydsdHJpZicsIFs5NjY2XV0sIFsnbHRyUGFyJywgWzEwNjQ2XV0sIFsnbHVyZHNoYXInLCBbMTA1NzBdXSwgWydsdXJ1aGFyJywgWzEwNTk4XV0sIFsnbHZlcnRuZXFxJywgWzg4MDgsIDY1MDI0XV0sIFsnbHZuRScsIFs4ODA4LCA2NTAyNF1dLCBbJ21hY3InLCBbMTc1XV0sIFsnbWFsZScsIFs5Nzk0XV0sIFsnbWFsdCcsIFsxMDAxNl1dLCBbJ21hbHRlc2UnLCBbMTAwMTZdXSwgWydNYXAnLCBbMTA1MDFdXSwgWydtYXAnLCBbODYxNF1dLCBbJ21hcHN0bycsIFs4NjE0XV0sIFsnbWFwc3RvZG93bicsIFs4NjE1XV0sIFsnbWFwc3RvbGVmdCcsIFs4NjEyXV0sIFsnbWFwc3RvdXAnLCBbODYxM11dLCBbJ21hcmtlcicsIFs5NjQ2XV0sIFsnbWNvbW1hJywgWzEwNzkzXV0sIFsnTWN5JywgWzEwNTJdXSwgWydtY3knLCBbMTA4NF1dLCBbJ21kYXNoJywgWzgyMTJdXSwgWydtRERvdCcsIFs4NzYyXV0sIFsnbWVhc3VyZWRhbmdsZScsIFs4NzM3XV0sIFsnTWVkaXVtU3BhY2UnLCBbODI4N11dLCBbJ01lbGxpbnRyZicsIFs4NDk5XV0sIFsnTWZyJywgWzEyMDA4MF1dLCBbJ21mcicsIFsxMjAxMDZdXSwgWydtaG8nLCBbODQ4N11dLCBbJ21pY3JvJywgWzE4MV1dLCBbJ21pZGFzdCcsIFs0Ml1dLCBbJ21pZGNpcicsIFsxMDk5Ml1dLCBbJ21pZCcsIFs4NzM5XV0sIFsnbWlkZG90JywgWzE4M11dLCBbJ21pbnVzYicsIFs4ODYzXV0sIFsnbWludXMnLCBbODcyMl1dLCBbJ21pbnVzZCcsIFs4NzYwXV0sIFsnbWludXNkdScsIFsxMDc5NF1dLCBbJ01pbnVzUGx1cycsIFs4NzIzXV0sIFsnbWxjcCcsIFsxMDk3MV1dLCBbJ21sZHInLCBbODIzMF1dLCBbJ21ucGx1cycsIFs4NzIzXV0sIFsnbW9kZWxzJywgWzg4NzFdXSwgWydNb3BmJywgWzEyMDEzMl1dLCBbJ21vcGYnLCBbMTIwMTU4XV0sIFsnbXAnLCBbODcyM11dLCBbJ21zY3InLCBbMTIwMDAyXV0sIFsnTXNjcicsIFs4NDk5XV0sIFsnbXN0cG9zJywgWzg3NjZdXSwgWydNdScsIFs5MjRdXSwgWydtdScsIFs5NTZdXSwgWydtdWx0aW1hcCcsIFs4ODg4XV0sIFsnbXVtYXAnLCBbODg4OF1dLCBbJ25hYmxhJywgWzg3MTFdXSwgWydOYWN1dGUnLCBbMzIzXV0sIFsnbmFjdXRlJywgWzMyNF1dLCBbJ25hbmcnLCBbODczNiwgODQwMl1dLCBbJ25hcCcsIFs4Nzc3XV0sIFsnbmFwRScsIFsxMDg2NCwgODI0XV0sIFsnbmFwaWQnLCBbODc3OSwgODI0XV0sIFsnbmFwb3MnLCBbMzI5XV0sIFsnbmFwcHJveCcsIFs4Nzc3XV0sIFsnbmF0dXJhbCcsIFs5ODM4XV0sIFsnbmF0dXJhbHMnLCBbODQ2OV1dLCBbJ25hdHVyJywgWzk4MzhdXSwgWyduYnNwJywgWzE2MF1dLCBbJ25idW1wJywgWzg3ODIsIDgyNF1dLCBbJ25idW1wZScsIFs4NzgzLCA4MjRdXSwgWyduY2FwJywgWzEwODE5XV0sIFsnTmNhcm9uJywgWzMyN11dLCBbJ25jYXJvbicsIFszMjhdXSwgWydOY2VkaWwnLCBbMzI1XV0sIFsnbmNlZGlsJywgWzMyNl1dLCBbJ25jb25nJywgWzg3NzVdXSwgWyduY29uZ2RvdCcsIFsxMDg2MSwgODI0XV0sIFsnbmN1cCcsIFsxMDgxOF1dLCBbJ05jeScsIFsxMDUzXV0sIFsnbmN5JywgWzEwODVdXSwgWyduZGFzaCcsIFs4MjExXV0sIFsnbmVhcmhrJywgWzEwNTMyXV0sIFsnbmVhcnInLCBbODU5OV1dLCBbJ25lQXJyJywgWzg2NjNdXSwgWyduZWFycm93JywgWzg1OTldXSwgWyduZScsIFs4ODAwXV0sIFsnbmVkb3QnLCBbODc4NCwgODI0XV0sIFsnTmVnYXRpdmVNZWRpdW1TcGFjZScsIFs4MjAzXV0sIFsnTmVnYXRpdmVUaGlja1NwYWNlJywgWzgyMDNdXSwgWydOZWdhdGl2ZVRoaW5TcGFjZScsIFs4MjAzXV0sIFsnTmVnYXRpdmVWZXJ5VGhpblNwYWNlJywgWzgyMDNdXSwgWyduZXF1aXYnLCBbODgwMl1dLCBbJ25lc2VhcicsIFsxMDUzNl1dLCBbJ25lc2ltJywgWzg3NzAsIDgyNF1dLCBbJ05lc3RlZEdyZWF0ZXJHcmVhdGVyJywgWzg4MTFdXSwgWydOZXN0ZWRMZXNzTGVzcycsIFs4ODEwXV0sIFsnbmV4aXN0JywgWzg3MDhdXSwgWyduZXhpc3RzJywgWzg3MDhdXSwgWydOZnInLCBbMTIwMDgxXV0sIFsnbmZyJywgWzEyMDEwN11dLCBbJ25nRScsIFs4ODA3LCA4MjRdXSwgWyduZ2UnLCBbODgxN11dLCBbJ25nZXEnLCBbODgxN11dLCBbJ25nZXFxJywgWzg4MDcsIDgyNF1dLCBbJ25nZXFzbGFudCcsIFsxMDg3OCwgODI0XV0sIFsnbmdlcycsIFsxMDg3OCwgODI0XV0sIFsnbkdnJywgWzg5MjEsIDgyNF1dLCBbJ25nc2ltJywgWzg4MjFdXSwgWyduR3QnLCBbODgxMSwgODQwMl1dLCBbJ25ndCcsIFs4ODE1XV0sIFsnbmd0cicsIFs4ODE1XV0sIFsnbkd0dicsIFs4ODExLCA4MjRdXSwgWyduaGFycicsIFs4NjIyXV0sIFsnbmhBcnInLCBbODY1NF1dLCBbJ25ocGFyJywgWzEwOTk0XV0sIFsnbmknLCBbODcxNV1dLCBbJ25pcycsIFs4OTU2XV0sIFsnbmlzZCcsIFs4OTU0XV0sIFsnbml2JywgWzg3MTVdXSwgWydOSmN5JywgWzEwMzRdXSwgWyduamN5JywgWzExMTRdXSwgWydubGFycicsIFs4NjAyXV0sIFsnbmxBcnInLCBbODY1M11dLCBbJ25sZHInLCBbODIyOV1dLCBbJ25sRScsIFs4ODA2LCA4MjRdXSwgWydubGUnLCBbODgxNl1dLCBbJ25sZWZ0YXJyb3cnLCBbODYwMl1dLCBbJ25MZWZ0YXJyb3cnLCBbODY1M11dLCBbJ25sZWZ0cmlnaHRhcnJvdycsIFs4NjIyXV0sIFsnbkxlZnRyaWdodGFycm93JywgWzg2NTRdXSwgWydubGVxJywgWzg4MTZdXSwgWydubGVxcScsIFs4ODA2LCA4MjRdXSwgWydubGVxc2xhbnQnLCBbMTA4NzcsIDgyNF1dLCBbJ25sZXMnLCBbMTA4NzcsIDgyNF1dLCBbJ25sZXNzJywgWzg4MTRdXSwgWyduTGwnLCBbODkyMCwgODI0XV0sIFsnbmxzaW0nLCBbODgyMF1dLCBbJ25MdCcsIFs4ODEwLCA4NDAyXV0sIFsnbmx0JywgWzg4MTRdXSwgWydubHRyaScsIFs4OTM4XV0sIFsnbmx0cmllJywgWzg5NDBdXSwgWyduTHR2JywgWzg4MTAsIDgyNF1dLCBbJ25taWQnLCBbODc0MF1dLCBbJ05vQnJlYWsnLCBbODI4OF1dLCBbJ05vbkJyZWFraW5nU3BhY2UnLCBbMTYwXV0sIFsnbm9wZicsIFsxMjAxNTldXSwgWydOb3BmJywgWzg0NjldXSwgWydOb3QnLCBbMTA5ODhdXSwgWydub3QnLCBbMTcyXV0sIFsnTm90Q29uZ3J1ZW50JywgWzg4MDJdXSwgWydOb3RDdXBDYXAnLCBbODgxM11dLCBbJ05vdERvdWJsZVZlcnRpY2FsQmFyJywgWzg3NDJdXSwgWydOb3RFbGVtZW50JywgWzg3MTNdXSwgWydOb3RFcXVhbCcsIFs4ODAwXV0sIFsnTm90RXF1YWxUaWxkZScsIFs4NzcwLCA4MjRdXSwgWydOb3RFeGlzdHMnLCBbODcwOF1dLCBbJ05vdEdyZWF0ZXInLCBbODgxNV1dLCBbJ05vdEdyZWF0ZXJFcXVhbCcsIFs4ODE3XV0sIFsnTm90R3JlYXRlckZ1bGxFcXVhbCcsIFs4ODA3LCA4MjRdXSwgWydOb3RHcmVhdGVyR3JlYXRlcicsIFs4ODExLCA4MjRdXSwgWydOb3RHcmVhdGVyTGVzcycsIFs4ODI1XV0sIFsnTm90R3JlYXRlclNsYW50RXF1YWwnLCBbMTA4NzgsIDgyNF1dLCBbJ05vdEdyZWF0ZXJUaWxkZScsIFs4ODIxXV0sIFsnTm90SHVtcERvd25IdW1wJywgWzg3ODIsIDgyNF1dLCBbJ05vdEh1bXBFcXVhbCcsIFs4NzgzLCA4MjRdXSwgWydub3RpbicsIFs4NzEzXV0sIFsnbm90aW5kb3QnLCBbODk0OSwgODI0XV0sIFsnbm90aW5FJywgWzg5NTMsIDgyNF1dLCBbJ25vdGludmEnLCBbODcxM11dLCBbJ25vdGludmInLCBbODk1MV1dLCBbJ25vdGludmMnLCBbODk1MF1dLCBbJ05vdExlZnRUcmlhbmdsZUJhcicsIFsxMDcwMywgODI0XV0sIFsnTm90TGVmdFRyaWFuZ2xlJywgWzg5MzhdXSwgWydOb3RMZWZ0VHJpYW5nbGVFcXVhbCcsIFs4OTQwXV0sIFsnTm90TGVzcycsIFs4ODE0XV0sIFsnTm90TGVzc0VxdWFsJywgWzg4MTZdXSwgWydOb3RMZXNzR3JlYXRlcicsIFs4ODI0XV0sIFsnTm90TGVzc0xlc3MnLCBbODgxMCwgODI0XV0sIFsnTm90TGVzc1NsYW50RXF1YWwnLCBbMTA4NzcsIDgyNF1dLCBbJ05vdExlc3NUaWxkZScsIFs4ODIwXV0sIFsnTm90TmVzdGVkR3JlYXRlckdyZWF0ZXInLCBbMTA5MTQsIDgyNF1dLCBbJ05vdE5lc3RlZExlc3NMZXNzJywgWzEwOTEzLCA4MjRdXSwgWydub3RuaScsIFs4NzE2XV0sIFsnbm90bml2YScsIFs4NzE2XV0sIFsnbm90bml2YicsIFs4OTU4XV0sIFsnbm90bml2YycsIFs4OTU3XV0sIFsnTm90UHJlY2VkZXMnLCBbODgzMl1dLCBbJ05vdFByZWNlZGVzRXF1YWwnLCBbMTA5MjcsIDgyNF1dLCBbJ05vdFByZWNlZGVzU2xhbnRFcXVhbCcsIFs4OTI4XV0sIFsnTm90UmV2ZXJzZUVsZW1lbnQnLCBbODcxNl1dLCBbJ05vdFJpZ2h0VHJpYW5nbGVCYXInLCBbMTA3MDQsIDgyNF1dLCBbJ05vdFJpZ2h0VHJpYW5nbGUnLCBbODkzOV1dLCBbJ05vdFJpZ2h0VHJpYW5nbGVFcXVhbCcsIFs4OTQxXV0sIFsnTm90U3F1YXJlU3Vic2V0JywgWzg4NDcsIDgyNF1dLCBbJ05vdFNxdWFyZVN1YnNldEVxdWFsJywgWzg5MzBdXSwgWydOb3RTcXVhcmVTdXBlcnNldCcsIFs4ODQ4LCA4MjRdXSwgWydOb3RTcXVhcmVTdXBlcnNldEVxdWFsJywgWzg5MzFdXSwgWydOb3RTdWJzZXQnLCBbODgzNCwgODQwMl1dLCBbJ05vdFN1YnNldEVxdWFsJywgWzg4NDBdXSwgWydOb3RTdWNjZWVkcycsIFs4ODMzXV0sIFsnTm90U3VjY2VlZHNFcXVhbCcsIFsxMDkyOCwgODI0XV0sIFsnTm90U3VjY2VlZHNTbGFudEVxdWFsJywgWzg5MjldXSwgWydOb3RTdWNjZWVkc1RpbGRlJywgWzg4MzEsIDgyNF1dLCBbJ05vdFN1cGVyc2V0JywgWzg4MzUsIDg0MDJdXSwgWydOb3RTdXBlcnNldEVxdWFsJywgWzg4NDFdXSwgWydOb3RUaWxkZScsIFs4NzY5XV0sIFsnTm90VGlsZGVFcXVhbCcsIFs4NzcyXV0sIFsnTm90VGlsZGVGdWxsRXF1YWwnLCBbODc3NV1dLCBbJ05vdFRpbGRlVGlsZGUnLCBbODc3N11dLCBbJ05vdFZlcnRpY2FsQmFyJywgWzg3NDBdXSwgWyducGFyYWxsZWwnLCBbODc0Ml1dLCBbJ25wYXInLCBbODc0Ml1dLCBbJ25wYXJzbCcsIFsxMTAwNSwgODQyMV1dLCBbJ25wYXJ0JywgWzg3MDYsIDgyNF1dLCBbJ25wb2xpbnQnLCBbMTA3NzJdXSwgWyducHInLCBbODgzMl1dLCBbJ25wcmN1ZScsIFs4OTI4XV0sIFsnbnByZWMnLCBbODgzMl1dLCBbJ25wcmVjZXEnLCBbMTA5MjcsIDgyNF1dLCBbJ25wcmUnLCBbMTA5MjcsIDgyNF1dLCBbJ25yYXJyYycsIFsxMDU0NywgODI0XV0sIFsnbnJhcnInLCBbODYwM11dLCBbJ25yQXJyJywgWzg2NTVdXSwgWyducmFycncnLCBbODYwNSwgODI0XV0sIFsnbnJpZ2h0YXJyb3cnLCBbODYwM11dLCBbJ25SaWdodGFycm93JywgWzg2NTVdXSwgWyducnRyaScsIFs4OTM5XV0sIFsnbnJ0cmllJywgWzg5NDFdXSwgWyduc2MnLCBbODgzM11dLCBbJ25zY2N1ZScsIFs4OTI5XV0sIFsnbnNjZScsIFsxMDkyOCwgODI0XV0sIFsnTnNjcicsIFsxMTk5NzddXSwgWyduc2NyJywgWzEyMDAwM11dLCBbJ25zaG9ydG1pZCcsIFs4NzQwXV0sIFsnbnNob3J0cGFyYWxsZWwnLCBbODc0Ml1dLCBbJ25zaW0nLCBbODc2OV1dLCBbJ25zaW1lJywgWzg3NzJdXSwgWyduc2ltZXEnLCBbODc3Ml1dLCBbJ25zbWlkJywgWzg3NDBdXSwgWyduc3BhcicsIFs4NzQyXV0sIFsnbnNxc3ViZScsIFs4OTMwXV0sIFsnbnNxc3VwZScsIFs4OTMxXV0sIFsnbnN1YicsIFs4ODM2XV0sIFsnbnN1YkUnLCBbMTA5NDksIDgyNF1dLCBbJ25zdWJlJywgWzg4NDBdXSwgWyduc3Vic2V0JywgWzg4MzQsIDg0MDJdXSwgWyduc3Vic2V0ZXEnLCBbODg0MF1dLCBbJ25zdWJzZXRlcXEnLCBbMTA5NDksIDgyNF1dLCBbJ25zdWNjJywgWzg4MzNdXSwgWyduc3VjY2VxJywgWzEwOTI4LCA4MjRdXSwgWyduc3VwJywgWzg4MzddXSwgWyduc3VwRScsIFsxMDk1MCwgODI0XV0sIFsnbnN1cGUnLCBbODg0MV1dLCBbJ25zdXBzZXQnLCBbODgzNSwgODQwMl1dLCBbJ25zdXBzZXRlcScsIFs4ODQxXV0sIFsnbnN1cHNldGVxcScsIFsxMDk1MCwgODI0XV0sIFsnbnRnbCcsIFs4ODI1XV0sIFsnTnRpbGRlJywgWzIwOV1dLCBbJ250aWxkZScsIFsyNDFdXSwgWydudGxnJywgWzg4MjRdXSwgWydudHJpYW5nbGVsZWZ0JywgWzg5MzhdXSwgWydudHJpYW5nbGVsZWZ0ZXEnLCBbODk0MF1dLCBbJ250cmlhbmdsZXJpZ2h0JywgWzg5MzldXSwgWydudHJpYW5nbGVyaWdodGVxJywgWzg5NDFdXSwgWydOdScsIFs5MjVdXSwgWydudScsIFs5NTddXSwgWydudW0nLCBbMzVdXSwgWydudW1lcm8nLCBbODQ3MF1dLCBbJ251bXNwJywgWzgxOTldXSwgWydudmFwJywgWzg3ODEsIDg0MDJdXSwgWydudmRhc2gnLCBbODg3Nl1dLCBbJ252RGFzaCcsIFs4ODc3XV0sIFsnblZkYXNoJywgWzg4NzhdXSwgWyduVkRhc2gnLCBbODg3OV1dLCBbJ252Z2UnLCBbODgwNSwgODQwMl1dLCBbJ252Z3QnLCBbNjIsIDg0MDJdXSwgWydudkhhcnInLCBbMTA1MDBdXSwgWydudmluZmluJywgWzEwNzE4XV0sIFsnbnZsQXJyJywgWzEwNDk4XV0sIFsnbnZsZScsIFs4ODA0LCA4NDAyXV0sIFsnbnZsdCcsIFs2MCwgODQwMl1dLCBbJ252bHRyaWUnLCBbODg4NCwgODQwMl1dLCBbJ252ckFycicsIFsxMDQ5OV1dLCBbJ252cnRyaWUnLCBbODg4NSwgODQwMl1dLCBbJ252c2ltJywgWzg3NjQsIDg0MDJdXSwgWydud2FyaGsnLCBbMTA1MzFdXSwgWydud2FycicsIFs4NTk4XV0sIFsnbndBcnInLCBbODY2Ml1dLCBbJ253YXJyb3cnLCBbODU5OF1dLCBbJ253bmVhcicsIFsxMDUzNV1dLCBbJ09hY3V0ZScsIFsyMTFdXSwgWydvYWN1dGUnLCBbMjQzXV0sIFsnb2FzdCcsIFs4ODU5XV0sIFsnT2NpcmMnLCBbMjEyXV0sIFsnb2NpcmMnLCBbMjQ0XV0sIFsnb2NpcicsIFs4ODU4XV0sIFsnT2N5JywgWzEwNTRdXSwgWydvY3knLCBbMTA4Nl1dLCBbJ29kYXNoJywgWzg4NjFdXSwgWydPZGJsYWMnLCBbMzM2XV0sIFsnb2RibGFjJywgWzMzN11dLCBbJ29kaXYnLCBbMTA4MDhdXSwgWydvZG90JywgWzg4NTddXSwgWydvZHNvbGQnLCBbMTA2ODRdXSwgWydPRWxpZycsIFszMzhdXSwgWydvZWxpZycsIFszMzldXSwgWydvZmNpcicsIFsxMDY4N11dLCBbJ09mcicsIFsxMjAwODJdXSwgWydvZnInLCBbMTIwMTA4XV0sIFsnb2dvbicsIFs3MzFdXSwgWydPZ3JhdmUnLCBbMjEwXV0sIFsnb2dyYXZlJywgWzI0Ml1dLCBbJ29ndCcsIFsxMDY4OV1dLCBbJ29oYmFyJywgWzEwNjc3XV0sIFsnb2htJywgWzkzN11dLCBbJ29pbnQnLCBbODc1MF1dLCBbJ29sYXJyJywgWzg2MzRdXSwgWydvbGNpcicsIFsxMDY4Nl1dLCBbJ29sY3Jvc3MnLCBbMTA2ODNdXSwgWydvbGluZScsIFs4MjU0XV0sIFsnb2x0JywgWzEwNjg4XV0sIFsnT21hY3InLCBbMzMyXV0sIFsnb21hY3InLCBbMzMzXV0sIFsnT21lZ2EnLCBbOTM3XV0sIFsnb21lZ2EnLCBbOTY5XV0sIFsnT21pY3JvbicsIFs5MjddXSwgWydvbWljcm9uJywgWzk1OV1dLCBbJ29taWQnLCBbMTA2NzhdXSwgWydvbWludXMnLCBbODg1NF1dLCBbJ09vcGYnLCBbMTIwMTM0XV0sIFsnb29wZicsIFsxMjAxNjBdXSwgWydvcGFyJywgWzEwNjc5XV0sIFsnT3BlbkN1cmx5RG91YmxlUXVvdGUnLCBbODIyMF1dLCBbJ09wZW5DdXJseVF1b3RlJywgWzgyMTZdXSwgWydvcGVycCcsIFsxMDY4MV1dLCBbJ29wbHVzJywgWzg4NTNdXSwgWydvcmFycicsIFs4NjM1XV0sIFsnT3InLCBbMTA4MzZdXSwgWydvcicsIFs4NzQ0XV0sIFsnb3JkJywgWzEwODQ1XV0sIFsnb3JkZXInLCBbODUwMF1dLCBbJ29yZGVyb2YnLCBbODUwMF1dLCBbJ29yZGYnLCBbMTcwXV0sIFsnb3JkbScsIFsxODZdXSwgWydvcmlnb2YnLCBbODg4Nl1dLCBbJ29yb3InLCBbMTA4MzhdXSwgWydvcnNsb3BlJywgWzEwODM5XV0sIFsnb3J2JywgWzEwODQzXV0sIFsnb1MnLCBbOTQxNl1dLCBbJ09zY3InLCBbMTE5OTc4XV0sIFsnb3NjcicsIFs4NTAwXV0sIFsnT3NsYXNoJywgWzIxNl1dLCBbJ29zbGFzaCcsIFsyNDhdXSwgWydvc29sJywgWzg4NTZdXSwgWydPdGlsZGUnLCBbMjEzXV0sIFsnb3RpbGRlJywgWzI0NV1dLCBbJ290aW1lc2FzJywgWzEwODA2XV0sIFsnT3RpbWVzJywgWzEwODA3XV0sIFsnb3RpbWVzJywgWzg4NTVdXSwgWydPdW1sJywgWzIxNF1dLCBbJ291bWwnLCBbMjQ2XV0sIFsnb3ZiYXInLCBbOTAyMV1dLCBbJ092ZXJCYXInLCBbODI1NF1dLCBbJ092ZXJCcmFjZScsIFs5MTgyXV0sIFsnT3ZlckJyYWNrZXQnLCBbOTE0MF1dLCBbJ092ZXJQYXJlbnRoZXNpcycsIFs5MTgwXV0sIFsncGFyYScsIFsxODJdXSwgWydwYXJhbGxlbCcsIFs4NzQxXV0sIFsncGFyJywgWzg3NDFdXSwgWydwYXJzaW0nLCBbMTA5OTVdXSwgWydwYXJzbCcsIFsxMTAwNV1dLCBbJ3BhcnQnLCBbODcwNl1dLCBbJ1BhcnRpYWxEJywgWzg3MDZdXSwgWydQY3knLCBbMTA1NV1dLCBbJ3BjeScsIFsxMDg3XV0sIFsncGVyY250JywgWzM3XV0sIFsncGVyaW9kJywgWzQ2XV0sIFsncGVybWlsJywgWzgyNDBdXSwgWydwZXJwJywgWzg4NjldXSwgWydwZXJ0ZW5rJywgWzgyNDFdXSwgWydQZnInLCBbMTIwMDgzXV0sIFsncGZyJywgWzEyMDEwOV1dLCBbJ1BoaScsIFs5MzRdXSwgWydwaGknLCBbOTY2XV0sIFsncGhpdicsIFs5ODFdXSwgWydwaG1tYXQnLCBbODQ5OV1dLCBbJ3Bob25lJywgWzk3NDJdXSwgWydQaScsIFs5MjhdXSwgWydwaScsIFs5NjBdXSwgWydwaXRjaGZvcmsnLCBbODkxNl1dLCBbJ3BpdicsIFs5ODJdXSwgWydwbGFuY2snLCBbODQ2M11dLCBbJ3BsYW5ja2gnLCBbODQ2Ml1dLCBbJ3BsYW5rdicsIFs4NDYzXV0sIFsncGx1c2FjaXInLCBbMTA3ODddXSwgWydwbHVzYicsIFs4ODYyXV0sIFsncGx1c2NpcicsIFsxMDc4Nl1dLCBbJ3BsdXMnLCBbNDNdXSwgWydwbHVzZG8nLCBbODcyNF1dLCBbJ3BsdXNkdScsIFsxMDc4OV1dLCBbJ3BsdXNlJywgWzEwODY2XV0sIFsnUGx1c01pbnVzJywgWzE3N11dLCBbJ3BsdXNtbicsIFsxNzddXSwgWydwbHVzc2ltJywgWzEwNzkwXV0sIFsncGx1c3R3bycsIFsxMDc5MV1dLCBbJ3BtJywgWzE3N11dLCBbJ1BvaW5jYXJlcGxhbmUnLCBbODQ2MF1dLCBbJ3BvaW50aW50JywgWzEwNzczXV0sIFsncG9wZicsIFsxMjAxNjFdXSwgWydQb3BmJywgWzg0NzNdXSwgWydwb3VuZCcsIFsxNjNdXSwgWydwcmFwJywgWzEwOTM1XV0sIFsnUHInLCBbMTA5MzldXSwgWydwcicsIFs4ODI2XV0sIFsncHJjdWUnLCBbODgyOF1dLCBbJ3ByZWNhcHByb3gnLCBbMTA5MzVdXSwgWydwcmVjJywgWzg4MjZdXSwgWydwcmVjY3VybHllcScsIFs4ODI4XV0sIFsnUHJlY2VkZXMnLCBbODgyNl1dLCBbJ1ByZWNlZGVzRXF1YWwnLCBbMTA5MjddXSwgWydQcmVjZWRlc1NsYW50RXF1YWwnLCBbODgyOF1dLCBbJ1ByZWNlZGVzVGlsZGUnLCBbODgzMF1dLCBbJ3ByZWNlcScsIFsxMDkyN11dLCBbJ3ByZWNuYXBwcm94JywgWzEwOTM3XV0sIFsncHJlY25lcXEnLCBbMTA5MzNdXSwgWydwcmVjbnNpbScsIFs4OTM2XV0sIFsncHJlJywgWzEwOTI3XV0sIFsncHJFJywgWzEwOTMxXV0sIFsncHJlY3NpbScsIFs4ODMwXV0sIFsncHJpbWUnLCBbODI0Ml1dLCBbJ1ByaW1lJywgWzgyNDNdXSwgWydwcmltZXMnLCBbODQ3M11dLCBbJ3BybmFwJywgWzEwOTM3XV0sIFsncHJuRScsIFsxMDkzM11dLCBbJ3BybnNpbScsIFs4OTM2XV0sIFsncHJvZCcsIFs4NzE5XV0sIFsnUHJvZHVjdCcsIFs4NzE5XV0sIFsncHJvZmFsYXInLCBbOTAwNl1dLCBbJ3Byb2ZsaW5lJywgWzg5NzhdXSwgWydwcm9mc3VyZicsIFs4OTc5XV0sIFsncHJvcCcsIFs4NzMzXV0sIFsnUHJvcG9ydGlvbmFsJywgWzg3MzNdXSwgWydQcm9wb3J0aW9uJywgWzg3NTldXSwgWydwcm9wdG8nLCBbODczM11dLCBbJ3Byc2ltJywgWzg4MzBdXSwgWydwcnVyZWwnLCBbODg4MF1dLCBbJ1BzY3InLCBbMTE5OTc5XV0sIFsncHNjcicsIFsxMjAwMDVdXSwgWydQc2knLCBbOTM2XV0sIFsncHNpJywgWzk2OF1dLCBbJ3B1bmNzcCcsIFs4MjAwXV0sIFsnUWZyJywgWzEyMDA4NF1dLCBbJ3FmcicsIFsxMjAxMTBdXSwgWydxaW50JywgWzEwNzY0XV0sIFsncW9wZicsIFsxMjAxNjJdXSwgWydRb3BmJywgWzg0NzRdXSwgWydxcHJpbWUnLCBbODI3OV1dLCBbJ1FzY3InLCBbMTE5OTgwXV0sIFsncXNjcicsIFsxMjAwMDZdXSwgWydxdWF0ZXJuaW9ucycsIFs4NDYxXV0sIFsncXVhdGludCcsIFsxMDc3NF1dLCBbJ3F1ZXN0JywgWzYzXV0sIFsncXVlc3RlcScsIFs4Nzk5XV0sIFsncXVvdCcsIFszNF1dLCBbJ1FVT1QnLCBbMzRdXSwgWydyQWFycicsIFs4NjY3XV0sIFsncmFjZScsIFs4NzY1LCA4MTddXSwgWydSYWN1dGUnLCBbMzQwXV0sIFsncmFjdXRlJywgWzM0MV1dLCBbJ3JhZGljJywgWzg3MzBdXSwgWydyYWVtcHR5dicsIFsxMDY3NV1dLCBbJ3JhbmcnLCBbMTAyMTddXSwgWydSYW5nJywgWzEwMjE5XV0sIFsncmFuZ2QnLCBbMTA2NDJdXSwgWydyYW5nZScsIFsxMDY2MV1dLCBbJ3JhbmdsZScsIFsxMDIxN11dLCBbJ3JhcXVvJywgWzE4N11dLCBbJ3JhcnJhcCcsIFsxMDYxM11dLCBbJ3JhcnJiJywgWzg2NzddXSwgWydyYXJyYmZzJywgWzEwNTI4XV0sIFsncmFycmMnLCBbMTA1NDddXSwgWydyYXJyJywgWzg1OTRdXSwgWydSYXJyJywgWzg2MDhdXSwgWydyQXJyJywgWzg2NThdXSwgWydyYXJyZnMnLCBbMTA1MjZdXSwgWydyYXJyaGsnLCBbODYxOF1dLCBbJ3JhcnJscCcsIFs4NjIwXV0sIFsncmFycnBsJywgWzEwNTY1XV0sIFsncmFycnNpbScsIFsxMDYxMl1dLCBbJ1JhcnJ0bCcsIFsxMDUxOF1dLCBbJ3JhcnJ0bCcsIFs4NjExXV0sIFsncmFycncnLCBbODYwNV1dLCBbJ3JhdGFpbCcsIFsxMDUyMl1dLCBbJ3JBdGFpbCcsIFsxMDUyNF1dLCBbJ3JhdGlvJywgWzg3NThdXSwgWydyYXRpb25hbHMnLCBbODQ3NF1dLCBbJ3JiYXJyJywgWzEwNTA5XV0sIFsnckJhcnInLCBbMTA1MTFdXSwgWydSQmFycicsIFsxMDUxMl1dLCBbJ3JiYnJrJywgWzEwMDk5XV0sIFsncmJyYWNlJywgWzEyNV1dLCBbJ3JicmFjaycsIFs5M11dLCBbJ3JicmtlJywgWzEwNjM2XV0sIFsncmJya3NsZCcsIFsxMDYzOF1dLCBbJ3JicmtzbHUnLCBbMTA2NDBdXSwgWydSY2Fyb24nLCBbMzQ0XV0sIFsncmNhcm9uJywgWzM0NV1dLCBbJ1JjZWRpbCcsIFszNDJdXSwgWydyY2VkaWwnLCBbMzQzXV0sIFsncmNlaWwnLCBbODk2OV1dLCBbJ3JjdWInLCBbMTI1XV0sIFsnUmN5JywgWzEwNTZdXSwgWydyY3knLCBbMTA4OF1dLCBbJ3JkY2EnLCBbMTA1NTFdXSwgWydyZGxkaGFyJywgWzEwNjAxXV0sIFsncmRxdW8nLCBbODIyMV1dLCBbJ3JkcXVvcicsIFs4MjIxXV0sIFsnQ2xvc2VDdXJseURvdWJsZVF1b3RlJywgWzgyMjFdXSwgWydyZHNoJywgWzg2MjddXSwgWydyZWFsJywgWzg0NzZdXSwgWydyZWFsaW5lJywgWzg0NzVdXSwgWydyZWFscGFydCcsIFs4NDc2XV0sIFsncmVhbHMnLCBbODQ3N11dLCBbJ1JlJywgWzg0NzZdXSwgWydyZWN0JywgWzk2NDVdXSwgWydyZWcnLCBbMTc0XV0sIFsnUkVHJywgWzE3NF1dLCBbJ1JldmVyc2VFbGVtZW50JywgWzg3MTVdXSwgWydSZXZlcnNlRXF1aWxpYnJpdW0nLCBbODY1MV1dLCBbJ1JldmVyc2VVcEVxdWlsaWJyaXVtJywgWzEwNjA3XV0sIFsncmZpc2h0JywgWzEwNjIxXV0sIFsncmZsb29yJywgWzg5NzFdXSwgWydyZnInLCBbMTIwMTExXV0sIFsnUmZyJywgWzg0NzZdXSwgWydySGFyJywgWzEwNTk2XV0sIFsncmhhcmQnLCBbODY0MV1dLCBbJ3JoYXJ1JywgWzg2NDBdXSwgWydyaGFydWwnLCBbMTA2MDRdXSwgWydSaG8nLCBbOTI5XV0sIFsncmhvJywgWzk2MV1dLCBbJ3Job3YnLCBbMTAwOV1dLCBbJ1JpZ2h0QW5nbGVCcmFja2V0JywgWzEwMjE3XV0sIFsnUmlnaHRBcnJvd0JhcicsIFs4Njc3XV0sIFsncmlnaHRhcnJvdycsIFs4NTk0XV0sIFsnUmlnaHRBcnJvdycsIFs4NTk0XV0sIFsnUmlnaHRhcnJvdycsIFs4NjU4XV0sIFsnUmlnaHRBcnJvd0xlZnRBcnJvdycsIFs4NjQ0XV0sIFsncmlnaHRhcnJvd3RhaWwnLCBbODYxMV1dLCBbJ1JpZ2h0Q2VpbGluZycsIFs4OTY5XV0sIFsnUmlnaHREb3VibGVCcmFja2V0JywgWzEwMjE1XV0sIFsnUmlnaHREb3duVGVlVmVjdG9yJywgWzEwNTg5XV0sIFsnUmlnaHREb3duVmVjdG9yQmFyJywgWzEwNTgxXV0sIFsnUmlnaHREb3duVmVjdG9yJywgWzg2NDJdXSwgWydSaWdodEZsb29yJywgWzg5NzFdXSwgWydyaWdodGhhcnBvb25kb3duJywgWzg2NDFdXSwgWydyaWdodGhhcnBvb251cCcsIFs4NjQwXV0sIFsncmlnaHRsZWZ0YXJyb3dzJywgWzg2NDRdXSwgWydyaWdodGxlZnRoYXJwb29ucycsIFs4NjUyXV0sIFsncmlnaHRyaWdodGFycm93cycsIFs4NjQ5XV0sIFsncmlnaHRzcXVpZ2Fycm93JywgWzg2MDVdXSwgWydSaWdodFRlZUFycm93JywgWzg2MTRdXSwgWydSaWdodFRlZScsIFs4ODY2XV0sIFsnUmlnaHRUZWVWZWN0b3InLCBbMTA1ODddXSwgWydyaWdodHRocmVldGltZXMnLCBbODkwOF1dLCBbJ1JpZ2h0VHJpYW5nbGVCYXInLCBbMTA3MDRdXSwgWydSaWdodFRyaWFuZ2xlJywgWzg4ODNdXSwgWydSaWdodFRyaWFuZ2xlRXF1YWwnLCBbODg4NV1dLCBbJ1JpZ2h0VXBEb3duVmVjdG9yJywgWzEwNTc1XV0sIFsnUmlnaHRVcFRlZVZlY3RvcicsIFsxMDU4OF1dLCBbJ1JpZ2h0VXBWZWN0b3JCYXInLCBbMTA1ODBdXSwgWydSaWdodFVwVmVjdG9yJywgWzg2MzhdXSwgWydSaWdodFZlY3RvckJhcicsIFsxMDU3OV1dLCBbJ1JpZ2h0VmVjdG9yJywgWzg2NDBdXSwgWydyaW5nJywgWzczMF1dLCBbJ3Jpc2luZ2RvdHNlcScsIFs4Nzg3XV0sIFsncmxhcnInLCBbODY0NF1dLCBbJ3JsaGFyJywgWzg2NTJdXSwgWydybG0nLCBbODIwN11dLCBbJ3Jtb3VzdGFjaGUnLCBbOTEzN11dLCBbJ3Jtb3VzdCcsIFs5MTM3XV0sIFsncm5taWQnLCBbMTA5OTBdXSwgWydyb2FuZycsIFsxMDIyMV1dLCBbJ3JvYXJyJywgWzg3MDJdXSwgWydyb2JyaycsIFsxMDIxNV1dLCBbJ3JvcGFyJywgWzEwNjMwXV0sIFsncm9wZicsIFsxMjAxNjNdXSwgWydSb3BmJywgWzg0NzddXSwgWydyb3BsdXMnLCBbMTA3OThdXSwgWydyb3RpbWVzJywgWzEwODA1XV0sIFsnUm91bmRJbXBsaWVzJywgWzEwNjA4XV0sIFsncnBhcicsIFs0MV1dLCBbJ3JwYXJndCcsIFsxMDY0NF1dLCBbJ3JwcG9saW50JywgWzEwNzcwXV0sIFsncnJhcnInLCBbODY0OV1dLCBbJ1JyaWdodGFycm93JywgWzg2NjddXSwgWydyc2FxdW8nLCBbODI1MF1dLCBbJ3JzY3InLCBbMTIwMDA3XV0sIFsnUnNjcicsIFs4NDc1XV0sIFsncnNoJywgWzg2MjVdXSwgWydSc2gnLCBbODYyNV1dLCBbJ3JzcWInLCBbOTNdXSwgWydyc3F1bycsIFs4MjE3XV0sIFsncnNxdW9yJywgWzgyMTddXSwgWydDbG9zZUN1cmx5UXVvdGUnLCBbODIxN11dLCBbJ3J0aHJlZScsIFs4OTA4XV0sIFsncnRpbWVzJywgWzg5MDZdXSwgWydydHJpJywgWzk2NTddXSwgWydydHJpZScsIFs4ODg1XV0sIFsncnRyaWYnLCBbOTY1Nl1dLCBbJ3J0cmlsdHJpJywgWzEwNzAyXV0sIFsnUnVsZURlbGF5ZWQnLCBbMTA3NDBdXSwgWydydWx1aGFyJywgWzEwNjAwXV0sIFsncngnLCBbODQ3OF1dLCBbJ1NhY3V0ZScsIFszNDZdXSwgWydzYWN1dGUnLCBbMzQ3XV0sIFsnc2JxdW8nLCBbODIxOF1dLCBbJ3NjYXAnLCBbMTA5MzZdXSwgWydTY2Fyb24nLCBbMzUyXV0sIFsnc2Nhcm9uJywgWzM1M11dLCBbJ1NjJywgWzEwOTQwXV0sIFsnc2MnLCBbODgyN11dLCBbJ3NjY3VlJywgWzg4MjldXSwgWydzY2UnLCBbMTA5MjhdXSwgWydzY0UnLCBbMTA5MzJdXSwgWydTY2VkaWwnLCBbMzUwXV0sIFsnc2NlZGlsJywgWzM1MV1dLCBbJ1NjaXJjJywgWzM0OF1dLCBbJ3NjaXJjJywgWzM0OV1dLCBbJ3NjbmFwJywgWzEwOTM4XV0sIFsnc2NuRScsIFsxMDkzNF1dLCBbJ3NjbnNpbScsIFs4OTM3XV0sIFsnc2Nwb2xpbnQnLCBbMTA3NzFdXSwgWydzY3NpbScsIFs4ODMxXV0sIFsnU2N5JywgWzEwNTddXSwgWydzY3knLCBbMTA4OV1dLCBbJ3Nkb3RiJywgWzg4NjVdXSwgWydzZG90JywgWzg5MDFdXSwgWydzZG90ZScsIFsxMDg1NF1dLCBbJ3NlYXJoaycsIFsxMDUzM11dLCBbJ3NlYXJyJywgWzg2MDBdXSwgWydzZUFycicsIFs4NjY0XV0sIFsnc2VhcnJvdycsIFs4NjAwXV0sIFsnc2VjdCcsIFsxNjddXSwgWydzZW1pJywgWzU5XV0sIFsnc2Vzd2FyJywgWzEwNTM3XV0sIFsnc2V0bWludXMnLCBbODcyNl1dLCBbJ3NldG1uJywgWzg3MjZdXSwgWydzZXh0JywgWzEwMDM4XV0sIFsnU2ZyJywgWzEyMDA4Nl1dLCBbJ3NmcicsIFsxMjAxMTJdXSwgWydzZnJvd24nLCBbODk5NF1dLCBbJ3NoYXJwJywgWzk4MzldXSwgWydTSENIY3knLCBbMTA2NV1dLCBbJ3NoY2hjeScsIFsxMDk3XV0sIFsnU0hjeScsIFsxMDY0XV0sIFsnc2hjeScsIFsxMDk2XV0sIFsnU2hvcnREb3duQXJyb3cnLCBbODU5NV1dLCBbJ1Nob3J0TGVmdEFycm93JywgWzg1OTJdXSwgWydzaG9ydG1pZCcsIFs4NzM5XV0sIFsnc2hvcnRwYXJhbGxlbCcsIFs4NzQxXV0sIFsnU2hvcnRSaWdodEFycm93JywgWzg1OTRdXSwgWydTaG9ydFVwQXJyb3cnLCBbODU5M11dLCBbJ3NoeScsIFsxNzNdXSwgWydTaWdtYScsIFs5MzFdXSwgWydzaWdtYScsIFs5NjNdXSwgWydzaWdtYWYnLCBbOTYyXV0sIFsnc2lnbWF2JywgWzk2Ml1dLCBbJ3NpbScsIFs4NzY0XV0sIFsnc2ltZG90JywgWzEwODU4XV0sIFsnc2ltZScsIFs4NzcxXV0sIFsnc2ltZXEnLCBbODc3MV1dLCBbJ3NpbWcnLCBbMTA5MTBdXSwgWydzaW1nRScsIFsxMDkxMl1dLCBbJ3NpbWwnLCBbMTA5MDldXSwgWydzaW1sRScsIFsxMDkxMV1dLCBbJ3NpbW5lJywgWzg3NzRdXSwgWydzaW1wbHVzJywgWzEwNzg4XV0sIFsnc2ltcmFycicsIFsxMDYxMF1dLCBbJ3NsYXJyJywgWzg1OTJdXSwgWydTbWFsbENpcmNsZScsIFs4NzI4XV0sIFsnc21hbGxzZXRtaW51cycsIFs4NzI2XV0sIFsnc21hc2hwJywgWzEwODAzXV0sIFsnc21lcGFyc2wnLCBbMTA3MjRdXSwgWydzbWlkJywgWzg3MzldXSwgWydzbWlsZScsIFs4OTk1XV0sIFsnc210JywgWzEwOTIyXV0sIFsnc210ZScsIFsxMDkyNF1dLCBbJ3NtdGVzJywgWzEwOTI0LCA2NTAyNF1dLCBbJ1NPRlRjeScsIFsxMDY4XV0sIFsnc29mdGN5JywgWzExMDBdXSwgWydzb2xiYXInLCBbOTAyM11dLCBbJ3NvbGInLCBbMTA2OTJdXSwgWydzb2wnLCBbNDddXSwgWydTb3BmJywgWzEyMDEzOF1dLCBbJ3NvcGYnLCBbMTIwMTY0XV0sIFsnc3BhZGVzJywgWzk4MjRdXSwgWydzcGFkZXN1aXQnLCBbOTgyNF1dLCBbJ3NwYXInLCBbODc0MV1dLCBbJ3NxY2FwJywgWzg4NTFdXSwgWydzcWNhcHMnLCBbODg1MSwgNjUwMjRdXSwgWydzcWN1cCcsIFs4ODUyXV0sIFsnc3FjdXBzJywgWzg4NTIsIDY1MDI0XV0sIFsnU3FydCcsIFs4NzMwXV0sIFsnc3FzdWInLCBbODg0N11dLCBbJ3Nxc3ViZScsIFs4ODQ5XV0sIFsnc3FzdWJzZXQnLCBbODg0N11dLCBbJ3Nxc3Vic2V0ZXEnLCBbODg0OV1dLCBbJ3Nxc3VwJywgWzg4NDhdXSwgWydzcXN1cGUnLCBbODg1MF1dLCBbJ3Nxc3Vwc2V0JywgWzg4NDhdXSwgWydzcXN1cHNldGVxJywgWzg4NTBdXSwgWydzcXVhcmUnLCBbOTYzM11dLCBbJ1NxdWFyZScsIFs5NjMzXV0sIFsnU3F1YXJlSW50ZXJzZWN0aW9uJywgWzg4NTFdXSwgWydTcXVhcmVTdWJzZXQnLCBbODg0N11dLCBbJ1NxdWFyZVN1YnNldEVxdWFsJywgWzg4NDldXSwgWydTcXVhcmVTdXBlcnNldCcsIFs4ODQ4XV0sIFsnU3F1YXJlU3VwZXJzZXRFcXVhbCcsIFs4ODUwXV0sIFsnU3F1YXJlVW5pb24nLCBbODg1Ml1dLCBbJ3NxdWFyZicsIFs5NjQyXV0sIFsnc3F1JywgWzk2MzNdXSwgWydzcXVmJywgWzk2NDJdXSwgWydzcmFycicsIFs4NTk0XV0sIFsnU3NjcicsIFsxMTk5ODJdXSwgWydzc2NyJywgWzEyMDAwOF1dLCBbJ3NzZXRtbicsIFs4NzI2XV0sIFsnc3NtaWxlJywgWzg5OTVdXSwgWydzc3RhcmYnLCBbODkwMl1dLCBbJ1N0YXInLCBbODkwMl1dLCBbJ3N0YXInLCBbOTczNF1dLCBbJ3N0YXJmJywgWzk3MzNdXSwgWydzdHJhaWdodGVwc2lsb24nLCBbMTAxM11dLCBbJ3N0cmFpZ2h0cGhpJywgWzk4MV1dLCBbJ3N0cm5zJywgWzE3NV1dLCBbJ3N1YicsIFs4ODM0XV0sIFsnU3ViJywgWzg5MTJdXSwgWydzdWJkb3QnLCBbMTA5NDFdXSwgWydzdWJFJywgWzEwOTQ5XV0sIFsnc3ViZScsIFs4ODM4XV0sIFsnc3ViZWRvdCcsIFsxMDk0N11dLCBbJ3N1Ym11bHQnLCBbMTA5NDVdXSwgWydzdWJuRScsIFsxMDk1NV1dLCBbJ3N1Ym5lJywgWzg4NDJdXSwgWydzdWJwbHVzJywgWzEwOTQzXV0sIFsnc3VicmFycicsIFsxMDYxN11dLCBbJ3N1YnNldCcsIFs4ODM0XV0sIFsnU3Vic2V0JywgWzg5MTJdXSwgWydzdWJzZXRlcScsIFs4ODM4XV0sIFsnc3Vic2V0ZXFxJywgWzEwOTQ5XV0sIFsnU3Vic2V0RXF1YWwnLCBbODgzOF1dLCBbJ3N1YnNldG5lcScsIFs4ODQyXV0sIFsnc3Vic2V0bmVxcScsIFsxMDk1NV1dLCBbJ3N1YnNpbScsIFsxMDk1MV1dLCBbJ3N1YnN1YicsIFsxMDk2NV1dLCBbJ3N1YnN1cCcsIFsxMDk2M11dLCBbJ3N1Y2NhcHByb3gnLCBbMTA5MzZdXSwgWydzdWNjJywgWzg4MjddXSwgWydzdWNjY3VybHllcScsIFs4ODI5XV0sIFsnU3VjY2VlZHMnLCBbODgyN11dLCBbJ1N1Y2NlZWRzRXF1YWwnLCBbMTA5MjhdXSwgWydTdWNjZWVkc1NsYW50RXF1YWwnLCBbODgyOV1dLCBbJ1N1Y2NlZWRzVGlsZGUnLCBbODgzMV1dLCBbJ3N1Y2NlcScsIFsxMDkyOF1dLCBbJ3N1Y2NuYXBwcm94JywgWzEwOTM4XV0sIFsnc3VjY25lcXEnLCBbMTA5MzRdXSwgWydzdWNjbnNpbScsIFs4OTM3XV0sIFsnc3VjY3NpbScsIFs4ODMxXV0sIFsnU3VjaFRoYXQnLCBbODcxNV1dLCBbJ3N1bScsIFs4NzIxXV0sIFsnU3VtJywgWzg3MjFdXSwgWydzdW5nJywgWzk4MzRdXSwgWydzdXAxJywgWzE4NV1dLCBbJ3N1cDInLCBbMTc4XV0sIFsnc3VwMycsIFsxNzldXSwgWydzdXAnLCBbODgzNV1dLCBbJ1N1cCcsIFs4OTEzXV0sIFsnc3VwZG90JywgWzEwOTQyXV0sIFsnc3VwZHN1YicsIFsxMDk2OF1dLCBbJ3N1cEUnLCBbMTA5NTBdXSwgWydzdXBlJywgWzg4MzldXSwgWydzdXBlZG90JywgWzEwOTQ4XV0sIFsnU3VwZXJzZXQnLCBbODgzNV1dLCBbJ1N1cGVyc2V0RXF1YWwnLCBbODgzOV1dLCBbJ3N1cGhzb2wnLCBbMTAxODVdXSwgWydzdXBoc3ViJywgWzEwOTY3XV0sIFsnc3VwbGFycicsIFsxMDYxOV1dLCBbJ3N1cG11bHQnLCBbMTA5NDZdXSwgWydzdXBuRScsIFsxMDk1Nl1dLCBbJ3N1cG5lJywgWzg4NDNdXSwgWydzdXBwbHVzJywgWzEwOTQ0XV0sIFsnc3Vwc2V0JywgWzg4MzVdXSwgWydTdXBzZXQnLCBbODkxM11dLCBbJ3N1cHNldGVxJywgWzg4MzldXSwgWydzdXBzZXRlcXEnLCBbMTA5NTBdXSwgWydzdXBzZXRuZXEnLCBbODg0M11dLCBbJ3N1cHNldG5lcXEnLCBbMTA5NTZdXSwgWydzdXBzaW0nLCBbMTA5NTJdXSwgWydzdXBzdWInLCBbMTA5NjRdXSwgWydzdXBzdXAnLCBbMTA5NjZdXSwgWydzd2FyaGsnLCBbMTA1MzRdXSwgWydzd2FycicsIFs4NjAxXV0sIFsnc3dBcnInLCBbODY2NV1dLCBbJ3N3YXJyb3cnLCBbODYwMV1dLCBbJ3N3bndhcicsIFsxMDUzOF1dLCBbJ3N6bGlnJywgWzIyM11dLCBbJ1RhYicsIFs5XV0sIFsndGFyZ2V0JywgWzg5ODJdXSwgWydUYXUnLCBbOTMyXV0sIFsndGF1JywgWzk2NF1dLCBbJ3RicmsnLCBbOTE0MF1dLCBbJ1RjYXJvbicsIFszNTZdXSwgWyd0Y2Fyb24nLCBbMzU3XV0sIFsnVGNlZGlsJywgWzM1NF1dLCBbJ3RjZWRpbCcsIFszNTVdXSwgWydUY3knLCBbMTA1OF1dLCBbJ3RjeScsIFsxMDkwXV0sIFsndGRvdCcsIFs4NDExXV0sIFsndGVscmVjJywgWzg5ODFdXSwgWydUZnInLCBbMTIwMDg3XV0sIFsndGZyJywgWzEyMDExM11dLCBbJ3RoZXJlNCcsIFs4NzU2XV0sIFsndGhlcmVmb3JlJywgWzg3NTZdXSwgWydUaGVyZWZvcmUnLCBbODc1Nl1dLCBbJ1RoZXRhJywgWzkyMF1dLCBbJ3RoZXRhJywgWzk1Ml1dLCBbJ3RoZXRhc3ltJywgWzk3N11dLCBbJ3RoZXRhdicsIFs5NzddXSwgWyd0aGlja2FwcHJveCcsIFs4Nzc2XV0sIFsndGhpY2tzaW0nLCBbODc2NF1dLCBbJ1RoaWNrU3BhY2UnLCBbODI4NywgODIwMl1dLCBbJ1RoaW5TcGFjZScsIFs4MjAxXV0sIFsndGhpbnNwJywgWzgyMDFdXSwgWyd0aGthcCcsIFs4Nzc2XV0sIFsndGhrc2ltJywgWzg3NjRdXSwgWydUSE9STicsIFsyMjJdXSwgWyd0aG9ybicsIFsyNTRdXSwgWyd0aWxkZScsIFs3MzJdXSwgWydUaWxkZScsIFs4NzY0XV0sIFsnVGlsZGVFcXVhbCcsIFs4NzcxXV0sIFsnVGlsZGVGdWxsRXF1YWwnLCBbODc3M11dLCBbJ1RpbGRlVGlsZGUnLCBbODc3Nl1dLCBbJ3RpbWVzYmFyJywgWzEwODAxXV0sIFsndGltZXNiJywgWzg4NjRdXSwgWyd0aW1lcycsIFsyMTVdXSwgWyd0aW1lc2QnLCBbMTA4MDBdXSwgWyd0aW50JywgWzg3NDldXSwgWyd0b2VhJywgWzEwNTM2XV0sIFsndG9wYm90JywgWzkwMTRdXSwgWyd0b3BjaXInLCBbMTA5OTNdXSwgWyd0b3AnLCBbODg2OF1dLCBbJ1RvcGYnLCBbMTIwMTM5XV0sIFsndG9wZicsIFsxMjAxNjVdXSwgWyd0b3Bmb3JrJywgWzEwOTcwXV0sIFsndG9zYScsIFsxMDUzN11dLCBbJ3RwcmltZScsIFs4MjQ0XV0sIFsndHJhZGUnLCBbODQ4Ml1dLCBbJ1RSQURFJywgWzg0ODJdXSwgWyd0cmlhbmdsZScsIFs5NjUzXV0sIFsndHJpYW5nbGVkb3duJywgWzk2NjNdXSwgWyd0cmlhbmdsZWxlZnQnLCBbOTY2N11dLCBbJ3RyaWFuZ2xlbGVmdGVxJywgWzg4ODRdXSwgWyd0cmlhbmdsZXEnLCBbODc5Nl1dLCBbJ3RyaWFuZ2xlcmlnaHQnLCBbOTY1N11dLCBbJ3RyaWFuZ2xlcmlnaHRlcScsIFs4ODg1XV0sIFsndHJpZG90JywgWzk3MDhdXSwgWyd0cmllJywgWzg3OTZdXSwgWyd0cmltaW51cycsIFsxMDgxMF1dLCBbJ1RyaXBsZURvdCcsIFs4NDExXV0sIFsndHJpcGx1cycsIFsxMDgwOV1dLCBbJ3RyaXNiJywgWzEwNzAxXV0sIFsndHJpdGltZScsIFsxMDgxMV1dLCBbJ3RycGV6aXVtJywgWzkxODZdXSwgWydUc2NyJywgWzExOTk4M11dLCBbJ3RzY3InLCBbMTIwMDA5XV0sIFsnVFNjeScsIFsxMDYyXV0sIFsndHNjeScsIFsxMDk0XV0sIFsnVFNIY3knLCBbMTAzNV1dLCBbJ3RzaGN5JywgWzExMTVdXSwgWydUc3Ryb2snLCBbMzU4XV0sIFsndHN0cm9rJywgWzM1OV1dLCBbJ3R3aXh0JywgWzg4MTJdXSwgWyd0d29oZWFkbGVmdGFycm93JywgWzg2MDZdXSwgWyd0d29oZWFkcmlnaHRhcnJvdycsIFs4NjA4XV0sIFsnVWFjdXRlJywgWzIxOF1dLCBbJ3VhY3V0ZScsIFsyNTBdXSwgWyd1YXJyJywgWzg1OTNdXSwgWydVYXJyJywgWzg2MDddXSwgWyd1QXJyJywgWzg2NTddXSwgWydVYXJyb2NpcicsIFsxMDU2OV1dLCBbJ1VicmN5JywgWzEwMzhdXSwgWyd1YnJjeScsIFsxMTE4XV0sIFsnVWJyZXZlJywgWzM2NF1dLCBbJ3VicmV2ZScsIFszNjVdXSwgWydVY2lyYycsIFsyMTldXSwgWyd1Y2lyYycsIFsyNTFdXSwgWydVY3knLCBbMTA1OV1dLCBbJ3VjeScsIFsxMDkxXV0sIFsndWRhcnInLCBbODY0NV1dLCBbJ1VkYmxhYycsIFszNjhdXSwgWyd1ZGJsYWMnLCBbMzY5XV0sIFsndWRoYXInLCBbMTA2MDZdXSwgWyd1ZmlzaHQnLCBbMTA2MjJdXSwgWydVZnInLCBbMTIwMDg4XV0sIFsndWZyJywgWzEyMDExNF1dLCBbJ1VncmF2ZScsIFsyMTddXSwgWyd1Z3JhdmUnLCBbMjQ5XV0sIFsndUhhcicsIFsxMDU5NV1dLCBbJ3VoYXJsJywgWzg2MzldXSwgWyd1aGFycicsIFs4NjM4XV0sIFsndWhibGsnLCBbOTYwMF1dLCBbJ3VsY29ybicsIFs4OTg4XV0sIFsndWxjb3JuZXInLCBbODk4OF1dLCBbJ3VsY3JvcCcsIFs4OTc1XV0sIFsndWx0cmknLCBbOTcyMF1dLCBbJ1VtYWNyJywgWzM2Ml1dLCBbJ3VtYWNyJywgWzM2M11dLCBbJ3VtbCcsIFsxNjhdXSwgWydVbmRlckJhcicsIFs5NV1dLCBbJ1VuZGVyQnJhY2UnLCBbOTE4M11dLCBbJ1VuZGVyQnJhY2tldCcsIFs5MTQxXV0sIFsnVW5kZXJQYXJlbnRoZXNpcycsIFs5MTgxXV0sIFsnVW5pb24nLCBbODg5OV1dLCBbJ1VuaW9uUGx1cycsIFs4ODQ2XV0sIFsnVW9nb24nLCBbMzcwXV0sIFsndW9nb24nLCBbMzcxXV0sIFsnVW9wZicsIFsxMjAxNDBdXSwgWyd1b3BmJywgWzEyMDE2Nl1dLCBbJ1VwQXJyb3dCYXInLCBbMTA1MTRdXSwgWyd1cGFycm93JywgWzg1OTNdXSwgWydVcEFycm93JywgWzg1OTNdXSwgWydVcGFycm93JywgWzg2NTddXSwgWydVcEFycm93RG93bkFycm93JywgWzg2NDVdXSwgWyd1cGRvd25hcnJvdycsIFs4NTk3XV0sIFsnVXBEb3duQXJyb3cnLCBbODU5N11dLCBbJ1VwZG93bmFycm93JywgWzg2NjFdXSwgWydVcEVxdWlsaWJyaXVtJywgWzEwNjA2XV0sIFsndXBoYXJwb29ubGVmdCcsIFs4NjM5XV0sIFsndXBoYXJwb29ucmlnaHQnLCBbODYzOF1dLCBbJ3VwbHVzJywgWzg4NDZdXSwgWydVcHBlckxlZnRBcnJvdycsIFs4NTk4XV0sIFsnVXBwZXJSaWdodEFycm93JywgWzg1OTldXSwgWyd1cHNpJywgWzk2NV1dLCBbJ1Vwc2knLCBbOTc4XV0sIFsndXBzaWgnLCBbOTc4XV0sIFsnVXBzaWxvbicsIFs5MzNdXSwgWyd1cHNpbG9uJywgWzk2NV1dLCBbJ1VwVGVlQXJyb3cnLCBbODYxM11dLCBbJ1VwVGVlJywgWzg4NjldXSwgWyd1cHVwYXJyb3dzJywgWzg2NDhdXSwgWyd1cmNvcm4nLCBbODk4OV1dLCBbJ3VyY29ybmVyJywgWzg5ODldXSwgWyd1cmNyb3AnLCBbODk3NF1dLCBbJ1VyaW5nJywgWzM2Nl1dLCBbJ3VyaW5nJywgWzM2N11dLCBbJ3VydHJpJywgWzk3MjFdXSwgWydVc2NyJywgWzExOTk4NF1dLCBbJ3VzY3InLCBbMTIwMDEwXV0sIFsndXRkb3QnLCBbODk0NF1dLCBbJ1V0aWxkZScsIFszNjBdXSwgWyd1dGlsZGUnLCBbMzYxXV0sIFsndXRyaScsIFs5NjUzXV0sIFsndXRyaWYnLCBbOTY1Ml1dLCBbJ3V1YXJyJywgWzg2NDhdXSwgWydVdW1sJywgWzIyMF1dLCBbJ3V1bWwnLCBbMjUyXV0sIFsndXdhbmdsZScsIFsxMDY2M11dLCBbJ3ZhbmdydCcsIFsxMDY1Ml1dLCBbJ3ZhcmVwc2lsb24nLCBbMTAxM11dLCBbJ3ZhcmthcHBhJywgWzEwMDhdXSwgWyd2YXJub3RoaW5nJywgWzg3MDldXSwgWyd2YXJwaGknLCBbOTgxXV0sIFsndmFycGknLCBbOTgyXV0sIFsndmFycHJvcHRvJywgWzg3MzNdXSwgWyd2YXJyJywgWzg1OTddXSwgWyd2QXJyJywgWzg2NjFdXSwgWyd2YXJyaG8nLCBbMTAwOV1dLCBbJ3ZhcnNpZ21hJywgWzk2Ml1dLCBbJ3ZhcnN1YnNldG5lcScsIFs4ODQyLCA2NTAyNF1dLCBbJ3ZhcnN1YnNldG5lcXEnLCBbMTA5NTUsIDY1MDI0XV0sIFsndmFyc3Vwc2V0bmVxJywgWzg4NDMsIDY1MDI0XV0sIFsndmFyc3Vwc2V0bmVxcScsIFsxMDk1NiwgNjUwMjRdXSwgWyd2YXJ0aGV0YScsIFs5NzddXSwgWyd2YXJ0cmlhbmdsZWxlZnQnLCBbODg4Ml1dLCBbJ3ZhcnRyaWFuZ2xlcmlnaHQnLCBbODg4M11dLCBbJ3ZCYXInLCBbMTA5ODRdXSwgWydWYmFyJywgWzEwOTg3XV0sIFsndkJhcnYnLCBbMTA5ODVdXSwgWydWY3knLCBbMTA0Ml1dLCBbJ3ZjeScsIFsxMDc0XV0sIFsndmRhc2gnLCBbODg2Nl1dLCBbJ3ZEYXNoJywgWzg4NzJdXSwgWydWZGFzaCcsIFs4ODczXV0sIFsnVkRhc2gnLCBbODg3NV1dLCBbJ1ZkYXNobCcsIFsxMDk4Ml1dLCBbJ3ZlZWJhcicsIFs4ODkxXV0sIFsndmVlJywgWzg3NDRdXSwgWydWZWUnLCBbODg5N11dLCBbJ3ZlZWVxJywgWzg3OTRdXSwgWyd2ZWxsaXAnLCBbODk0Ml1dLCBbJ3ZlcmJhcicsIFsxMjRdXSwgWydWZXJiYXInLCBbODIxNF1dLCBbJ3ZlcnQnLCBbMTI0XV0sIFsnVmVydCcsIFs4MjE0XV0sIFsnVmVydGljYWxCYXInLCBbODczOV1dLCBbJ1ZlcnRpY2FsTGluZScsIFsxMjRdXSwgWydWZXJ0aWNhbFNlcGFyYXRvcicsIFsxMDA3Ml1dLCBbJ1ZlcnRpY2FsVGlsZGUnLCBbODc2OF1dLCBbJ1ZlcnlUaGluU3BhY2UnLCBbODIwMl1dLCBbJ1ZmcicsIFsxMjAwODldXSwgWyd2ZnInLCBbMTIwMTE1XV0sIFsndmx0cmknLCBbODg4Ml1dLCBbJ3Zuc3ViJywgWzg4MzQsIDg0MDJdXSwgWyd2bnN1cCcsIFs4ODM1LCA4NDAyXV0sIFsnVm9wZicsIFsxMjAxNDFdXSwgWyd2b3BmJywgWzEyMDE2N11dLCBbJ3Zwcm9wJywgWzg3MzNdXSwgWyd2cnRyaScsIFs4ODgzXV0sIFsnVnNjcicsIFsxMTk5ODVdXSwgWyd2c2NyJywgWzEyMDAxMV1dLCBbJ3ZzdWJuRScsIFsxMDk1NSwgNjUwMjRdXSwgWyd2c3VibmUnLCBbODg0MiwgNjUwMjRdXSwgWyd2c3VwbkUnLCBbMTA5NTYsIDY1MDI0XV0sIFsndnN1cG5lJywgWzg4NDMsIDY1MDI0XV0sIFsnVnZkYXNoJywgWzg4NzRdXSwgWyd2emlnemFnJywgWzEwNjUwXV0sIFsnV2NpcmMnLCBbMzcyXV0sIFsnd2NpcmMnLCBbMzczXV0sIFsnd2VkYmFyJywgWzEwODQ3XV0sIFsnd2VkZ2UnLCBbODc0M11dLCBbJ1dlZGdlJywgWzg4OTZdXSwgWyd3ZWRnZXEnLCBbODc5M11dLCBbJ3dlaWVycCcsIFs4NDcyXV0sIFsnV2ZyJywgWzEyMDA5MF1dLCBbJ3dmcicsIFsxMjAxMTZdXSwgWydXb3BmJywgWzEyMDE0Ml1dLCBbJ3dvcGYnLCBbMTIwMTY4XV0sIFsnd3AnLCBbODQ3Ml1dLCBbJ3dyJywgWzg3NjhdXSwgWyd3cmVhdGgnLCBbODc2OF1dLCBbJ1dzY3InLCBbMTE5OTg2XV0sIFsnd3NjcicsIFsxMjAwMTJdXSwgWyd4Y2FwJywgWzg4OThdXSwgWyd4Y2lyYycsIFs5NzExXV0sIFsneGN1cCcsIFs4ODk5XV0sIFsneGR0cmknLCBbOTY2MV1dLCBbJ1hmcicsIFsxMjAwOTFdXSwgWyd4ZnInLCBbMTIwMTE3XV0sIFsneGhhcnInLCBbMTAyMzFdXSwgWyd4aEFycicsIFsxMDIzNF1dLCBbJ1hpJywgWzkyNl1dLCBbJ3hpJywgWzk1OF1dLCBbJ3hsYXJyJywgWzEwMjI5XV0sIFsneGxBcnInLCBbMTAyMzJdXSwgWyd4bWFwJywgWzEwMjM2XV0sIFsneG5pcycsIFs4OTU1XV0sIFsneG9kb3QnLCBbMTA3NTJdXSwgWydYb3BmJywgWzEyMDE0M11dLCBbJ3hvcGYnLCBbMTIwMTY5XV0sIFsneG9wbHVzJywgWzEwNzUzXV0sIFsneG90aW1lJywgWzEwNzU0XV0sIFsneHJhcnInLCBbMTAyMzBdXSwgWyd4ckFycicsIFsxMDIzM11dLCBbJ1hzY3InLCBbMTE5OTg3XV0sIFsneHNjcicsIFsxMjAwMTNdXSwgWyd4c3FjdXAnLCBbMTA3NThdXSwgWyd4dXBsdXMnLCBbMTA3NTZdXSwgWyd4dXRyaScsIFs5NjUxXV0sIFsneHZlZScsIFs4ODk3XV0sIFsneHdlZGdlJywgWzg4OTZdXSwgWydZYWN1dGUnLCBbMjIxXV0sIFsneWFjdXRlJywgWzI1M11dLCBbJ1lBY3knLCBbMTA3MV1dLCBbJ3lhY3knLCBbMTEwM11dLCBbJ1ljaXJjJywgWzM3NF1dLCBbJ3ljaXJjJywgWzM3NV1dLCBbJ1ljeScsIFsxMDY3XV0sIFsneWN5JywgWzEwOTldXSwgWyd5ZW4nLCBbMTY1XV0sIFsnWWZyJywgWzEyMDA5Ml1dLCBbJ3lmcicsIFsxMjAxMThdXSwgWydZSWN5JywgWzEwMzFdXSwgWyd5aWN5JywgWzExMTFdXSwgWydZb3BmJywgWzEyMDE0NF1dLCBbJ3lvcGYnLCBbMTIwMTcwXV0sIFsnWXNjcicsIFsxMTk5ODhdXSwgWyd5c2NyJywgWzEyMDAxNF1dLCBbJ1lVY3knLCBbMTA3MF1dLCBbJ3l1Y3knLCBbMTEwMl1dLCBbJ3l1bWwnLCBbMjU1XV0sIFsnWXVtbCcsIFszNzZdXSwgWydaYWN1dGUnLCBbMzc3XV0sIFsnemFjdXRlJywgWzM3OF1dLCBbJ1pjYXJvbicsIFszODFdXSwgWyd6Y2Fyb24nLCBbMzgyXV0sIFsnWmN5JywgWzEwNDddXSwgWyd6Y3knLCBbMTA3OV1dLCBbJ1pkb3QnLCBbMzc5XV0sIFsnemRvdCcsIFszODBdXSwgWyd6ZWV0cmYnLCBbODQ4OF1dLCBbJ1plcm9XaWR0aFNwYWNlJywgWzgyMDNdXSwgWydaZXRhJywgWzkxOF1dLCBbJ3pldGEnLCBbOTUwXV0sIFsnemZyJywgWzEyMDExOV1dLCBbJ1pmcicsIFs4NDg4XV0sIFsnWkhjeScsIFsxMDQ2XV0sIFsnemhjeScsIFsxMDc4XV0sIFsnemlncmFycicsIFs4NjY5XV0sIFsnem9wZicsIFsxMjAxNzFdXSwgWydab3BmJywgWzg0ODRdXSwgWydac2NyJywgWzExOTk4OV1dLCBbJ3pzY3InLCBbMTIwMDE1XV0sIFsnendqJywgWzgyMDVdXSwgWyd6d25qJywgWzgyMDRdXV07XG5cbnZhciBhbHBoYUluZGV4ID0ge307XG52YXIgY2hhckluZGV4ID0ge307XG5cbmNyZWF0ZUluZGV4ZXMoYWxwaGFJbmRleCwgY2hhckluZGV4KTtcblxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gSHRtbDVFbnRpdGllcygpIHt9XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuSHRtbDVFbnRpdGllcy5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgaWYgKCFzdHIgfHwgIXN0ci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyYoIz9bXFx3XFxkXSspOz8vZywgZnVuY3Rpb24ocywgZW50aXR5KSB7XG4gICAgICAgIHZhciBjaHI7XG4gICAgICAgIGlmIChlbnRpdHkuY2hhckF0KDApID09PSBcIiNcIikge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSBlbnRpdHkuY2hhckF0KDEpID09PSAneCcgP1xuICAgICAgICAgICAgICAgIHBhcnNlSW50KGVudGl0eS5zdWJzdHIoMikudG9Mb3dlckNhc2UoKSwgMTYpIDpcbiAgICAgICAgICAgICAgICBwYXJzZUludChlbnRpdHkuc3Vic3RyKDEpKTtcblxuICAgICAgICAgICAgaWYgKCEoaXNOYU4oY29kZSkgfHwgY29kZSA8IC0zMjc2OCB8fCBjb2RlID4gNjU1MzUpKSB7XG4gICAgICAgICAgICAgICAgY2hyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNociA9IGFscGhhSW5kZXhbZW50aXR5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hyIHx8IHM7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbiBIdG1sNUVudGl0aWVzLmRlY29kZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBuZXcgSHRtbDVFbnRpdGllcygpLmRlY29kZShzdHIpO1xuIH07XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuSHRtbDVFbnRpdGllcy5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgaWYgKCFzdHIgfHwgIXN0ci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICB2YXIgc3RyTGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgc3RyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBjaGFySW5mbyA9IGNoYXJJbmRleFtzdHIuY2hhckNvZGVBdChpKV07XG4gICAgICAgIGlmIChjaGFySW5mbykge1xuICAgICAgICAgICAgdmFyIGFscGhhID0gY2hhckluZm9bc3RyLmNoYXJDb2RlQXQoaSArIDEpXTtcbiAgICAgICAgICAgIGlmIChhbHBoYSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWxwaGEgPSBjaGFySW5mb1snJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWxwaGEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCImXCIgKyBhbHBoYSArIFwiO1wiO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gc3RyLmNoYXJBdChpKTtcbiAgICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG4gSHRtbDVFbnRpdGllcy5lbmNvZGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gbmV3IEh0bWw1RW50aXRpZXMoKS5lbmNvZGUoc3RyKTtcbiB9O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbkh0bWw1RW50aXRpZXMucHJvdG90eXBlLmVuY29kZU5vblVURiA9IGZ1bmN0aW9uKHN0cikge1xuICAgIGlmICghc3RyIHx8ICFzdHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgdmFyIHN0ckxlbmd0aCA9IHN0ci5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAoaSA8IHN0ckxlbmd0aCkge1xuICAgICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB2YXIgY2hhckluZm8gPSBjaGFySW5kZXhbY107XG4gICAgICAgIGlmIChjaGFySW5mbykge1xuICAgICAgICAgICAgdmFyIGFscGhhID0gY2hhckluZm9bc3RyLmNoYXJDb2RlQXQoaSArIDEpXTtcbiAgICAgICAgICAgIGlmIChhbHBoYSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWxwaGEgPSBjaGFySW5mb1snJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWxwaGEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCImXCIgKyBhbHBoYSArIFwiO1wiO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYyA8IDMyIHx8IGMgPiAxMjYpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnJiMnICsgYyArICc7JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBzdHIuY2hhckF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIGkrKztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuIEh0bWw1RW50aXRpZXMuZW5jb2RlTm9uVVRGID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBIdG1sNUVudGl0aWVzKCkuZW5jb2RlTm9uVVRGKHN0cik7XG4gfTtcblxuLyoqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5IdG1sNUVudGl0aWVzLnByb3RvdHlwZS5lbmNvZGVOb25BU0NJSSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIGlmICghc3RyIHx8ICFzdHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgdmFyIHN0ckxlbmd0aCA9IHN0ci5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAoaSA8IHN0ckxlbmd0aCkge1xuICAgICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoYyA8PSAyNTUpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBzdHJbaSsrXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSAnJiMnICsgYyArICc7JztcbiAgICAgICAgaSsrXG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbiBIdG1sNUVudGl0aWVzLmVuY29kZU5vbkFTQ0lJID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBIdG1sNUVudGl0aWVzKCkuZW5jb2RlTm9uQVNDSUkoc3RyKTtcbiB9O1xuXG4vKipcbiAqIEBwYXJhbSB7T2JqZWN0fSBhbHBoYUluZGV4IFBhc3NlZCBieSByZWZlcmVuY2UuXG4gKiBAcGFyYW0ge09iamVjdH0gY2hhckluZGV4IFBhc3NlZCBieSByZWZlcmVuY2UuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoYWxwaGFJbmRleCwgY2hhckluZGV4KSB7XG4gICAgdmFyIGkgPSBFTlRJVElFUy5sZW5ndGg7XG4gICAgdmFyIF9yZXN1bHRzID0gW107XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICB2YXIgZSA9IEVOVElUSUVTW2ldO1xuICAgICAgICB2YXIgYWxwaGEgPSBlWzBdO1xuICAgICAgICB2YXIgY2hhcnMgPSBlWzFdO1xuICAgICAgICB2YXIgY2hyID0gY2hhcnNbMF07XG4gICAgICAgIHZhciBhZGRDaGFyID0gKGNociA8IDMyIHx8IGNociA+IDEyNikgfHwgY2hyID09PSA2MiB8fCBjaHIgPT09IDYwIHx8IGNociA9PT0gMzggfHwgY2hyID09PSAzNCB8fCBjaHIgPT09IDM5O1xuICAgICAgICB2YXIgY2hhckluZm87XG4gICAgICAgIGlmIChhZGRDaGFyKSB7XG4gICAgICAgICAgICBjaGFySW5mbyA9IGNoYXJJbmRleFtjaHJdID0gY2hhckluZGV4W2Nocl0gfHwge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYXJzWzFdKSB7XG4gICAgICAgICAgICB2YXIgY2hyMiA9IGNoYXJzWzFdO1xuICAgICAgICAgICAgYWxwaGFJbmRleFthbHBoYV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocikgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjIpO1xuICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChhZGRDaGFyICYmIChjaGFySW5mb1tjaHIyXSA9IGFscGhhKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbHBoYUluZGV4W2FscGhhXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyKTtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2goYWRkQ2hhciAmJiAoY2hhckluZm9bJyddID0gYWxwaGEpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBIdG1sNUVudGl0aWVzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/html-entities/lib/html5-entities.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/html-entities/lib/xml-entities.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/html-entities/lib/xml-entities.js ***!
|
||
\********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var ALPHA_INDEX = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&apos': '\\'',\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': '\\'',\n '&': '&'\n};\n\nvar CHAR_INDEX = {\n 60: 'lt',\n 62: 'gt',\n 34: 'quot',\n 39: 'apos',\n 38: 'amp'\n};\n\nvar CHAR_S_INDEX = {\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '&': '&'\n};\n\n/**\n * @constructor\n */\nfunction XmlEntities() {}\n\n/**\n * @param {String} str\n * @returns {String}\n */\nXmlEntities.prototype.encode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/<|>|\"|'|&/g, function(s) {\n return CHAR_S_INDEX[s];\n });\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n XmlEntities.encode = function(str) {\n return new XmlEntities().encode(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nXmlEntities.prototype.decode = function(str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&#?[0-9a-zA-Z]+;?/g, function(s) {\n if (s.charAt(1) === '#') {\n var code = s.charAt(2).toLowerCase() === 'x' ?\n parseInt(s.substr(3), 16) :\n parseInt(s.substr(2));\n\n if (isNaN(code) || code < -32768 || code > 65535) {\n return '';\n }\n return String.fromCharCode(code);\n }\n return ALPHA_INDEX[s] || s;\n });\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n XmlEntities.decode = function(str) {\n return new XmlEntities().decode(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nXmlEntities.prototype.encodeNonUTF = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n var alpha = CHAR_INDEX[c];\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n if (c < 32 || c > 126) {\n result += '&#' + c + ';';\n } else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n XmlEntities.encodeNonUTF = function(str) {\n return new XmlEntities().encodeNonUTF(str);\n };\n\n/**\n * @param {String} str\n * @returns {String}\n */\nXmlEntities.prototype.encodeNonASCII = function(str) {\n if (!str || !str.length) {\n return '';\n }\n var strLenght = str.length;\n var result = '';\n var i = 0;\n while (i < strLenght) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n result += '&#' + c + ';';\n i++;\n }\n return result;\n};\n\n/**\n * @param {String} str\n * @returns {String}\n */\n XmlEntities.encodeNonASCII = function(str) {\n return new XmlEntities().encodeNonASCII(str);\n };\n\nmodule.exports = XmlEntities;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaHRtbC1lbnRpdGllcy9saWIveG1sLWVudGl0aWVzLmpzPzUwMjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFNBQVM7QUFDVCxXQUFXO0FBQ1gsV0FBVztBQUNYLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWM7QUFDZCxjQUFjO0FBQ2QsZ0JBQWdCO0FBQ2hCLGlCQUFpQjtBQUNqQixlQUFlO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2h0bWwtZW50aXRpZXMvbGliL3htbC1lbnRpdGllcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBBTFBIQV9JTkRFWCA9IHtcbiAgICAnJmx0JzogJzwnLFxuICAgICcmZ3QnOiAnPicsXG4gICAgJyZxdW90JzogJ1wiJyxcbiAgICAnJmFwb3MnOiAnXFwnJyxcbiAgICAnJmFtcCc6ICcmJyxcbiAgICAnJmx0Oyc6ICc8JyxcbiAgICAnJmd0Oyc6ICc+JyxcbiAgICAnJnF1b3Q7JzogJ1wiJyxcbiAgICAnJmFwb3M7JzogJ1xcJycsXG4gICAgJyZhbXA7JzogJyYnXG59O1xuXG52YXIgQ0hBUl9JTkRFWCA9IHtcbiAgICA2MDogJ2x0JyxcbiAgICA2MjogJ2d0JyxcbiAgICAzNDogJ3F1b3QnLFxuICAgIDM5OiAnYXBvcycsXG4gICAgMzg6ICdhbXAnXG59O1xuXG52YXIgQ0hBUl9TX0lOREVYID0ge1xuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgICdcXCcnOiAnJmFwb3M7JyxcbiAgICAnJic6ICcmYW1wOydcbn07XG5cbi8qKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIFhtbEVudGl0aWVzKCkge31cblxuLyoqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5YbWxFbnRpdGllcy5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgaWYgKCFzdHIgfHwgIXN0ci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLzx8PnxcInwnfCYvZywgZnVuY3Rpb24ocykge1xuICAgICAgICByZXR1cm4gQ0hBUl9TX0lOREVYW3NdO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG4gWG1sRW50aXRpZXMuZW5jb2RlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBYbWxFbnRpdGllcygpLmVuY29kZShzdHIpO1xuIH07XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuWG1sRW50aXRpZXMucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIGlmICghc3RyIHx8ICFzdHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8mIz9bMC05YS16QS1aXSs7Py9nLCBmdW5jdGlvbihzKSB7XG4gICAgICAgIGlmIChzLmNoYXJBdCgxKSA9PT0gJyMnKSB7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHMuY2hhckF0KDIpLnRvTG93ZXJDYXNlKCkgPT09ICd4JyA/XG4gICAgICAgICAgICAgICAgcGFyc2VJbnQocy5zdWJzdHIoMyksIDE2KSA6XG4gICAgICAgICAgICAgICAgcGFyc2VJbnQocy5zdWJzdHIoMikpO1xuXG4gICAgICAgICAgICBpZiAoaXNOYU4oY29kZSkgfHwgY29kZSA8IC0zMjc2OCB8fCBjb2RlID4gNjU1MzUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQUxQSEFfSU5ERVhbc10gfHwgcztcbiAgICB9KTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuIFhtbEVudGl0aWVzLmRlY29kZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBuZXcgWG1sRW50aXRpZXMoKS5kZWNvZGUoc3RyKTtcbiB9O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cblhtbEVudGl0aWVzLnByb3RvdHlwZS5lbmNvZGVOb25VVEYgPSBmdW5jdGlvbihzdHIpIHtcbiAgICBpZiAoIXN0ciB8fCAhc3RyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHZhciBzdHJMZW5ndGggPSBzdHIubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBzdHJMZW5ndGgpIHtcbiAgICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgdmFyIGFscGhhID0gQ0hBUl9JTkRFWFtjXTtcbiAgICAgICAgaWYgKGFscGhhKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gXCImXCIgKyBhbHBoYSArIFwiO1wiO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMgPCAzMiB8fCBjID4gMTI2KSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gJyYjJyArIGMgKyAnOyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gc3RyLmNoYXJBdChpKTtcbiAgICAgICAgfVxuICAgICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbiBYbWxFbnRpdGllcy5lbmNvZGVOb25VVEYgPSBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gbmV3IFhtbEVudGl0aWVzKCkuZW5jb2RlTm9uVVRGKHN0cik7XG4gfTtcblxuLyoqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5YbWxFbnRpdGllcy5wcm90b3R5cGUuZW5jb2RlTm9uQVNDSUkgPSBmdW5jdGlvbihzdHIpIHtcbiAgICBpZiAoIXN0ciB8fCAhc3RyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHZhciBzdHJMZW5naHQgPSBzdHIubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBzdHJMZW5naHQpIHtcbiAgICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGMgPD0gMjU1KSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gc3RyW2krK107XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gJyYjJyArIGMgKyAnOyc7XG4gICAgICAgIGkrKztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuIFhtbEVudGl0aWVzLmVuY29kZU5vbkFTQ0lJID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBYbWxFbnRpdGllcygpLmVuY29kZU5vbkFTQ0lJKHN0cik7XG4gfTtcblxubW9kdWxlLmV4cG9ydHMgPSBYbWxFbnRpdGllcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/html-entities/lib/xml-entities.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/iso-639-1/src/data.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/iso-639-1/src/data.js ***!
|
||
\********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\nconst LANGUAGES_LIST = {\n aa: {\n name: 'Afar',\n nativeName: 'Afaraf',\n },\n ab: {\n name: 'Abkhaz',\n nativeName: 'аҧсуа бызшәа',\n },\n ae: {\n name: 'Avestan',\n nativeName: 'avesta',\n },\n af: {\n name: 'Afrikaans',\n nativeName: 'Afrikaans',\n },\n ak: {\n name: 'Akan',\n nativeName: 'Akan',\n },\n am: {\n name: 'Amharic',\n nativeName: 'አማርኛ',\n },\n an: {\n name: 'Aragonese',\n nativeName: 'aragonés',\n },\n ar: {\n name: 'Arabic',\n nativeName: 'اَلْعَرَبِيَّةُ',\n },\n as: {\n name: 'Assamese',\n nativeName: 'অসমীয়া',\n },\n av: {\n name: 'Avaric',\n nativeName: 'авар мацӀ',\n },\n ay: {\n name: 'Aymara',\n nativeName: 'aymar aru',\n },\n az: {\n name: 'Azerbaijani',\n nativeName: 'azərbaycan dili',\n },\n ba: {\n name: 'Bashkir',\n nativeName: 'башҡорт теле',\n },\n be: {\n name: 'Belarusian',\n nativeName: 'беларуская мова',\n },\n bg: {\n name: 'Bulgarian',\n nativeName: 'български език',\n },\n bi: {\n name: 'Bislama',\n nativeName: 'Bislama',\n },\n bm: {\n name: 'Bambara',\n nativeName: 'bamanankan',\n },\n bn: {\n name: 'Bengali',\n nativeName: 'বাংলা',\n },\n bo: {\n name: 'Tibetan',\n nativeName: 'བོད་ཡིག',\n },\n br: {\n name: 'Breton',\n nativeName: 'brezhoneg',\n },\n bs: {\n name: 'Bosnian',\n nativeName: 'bosanski jezik',\n },\n ca: {\n name: 'Catalan',\n nativeName: 'Català',\n },\n ce: {\n name: 'Chechen',\n nativeName: 'нохчийн мотт',\n },\n ch: {\n name: 'Chamorro',\n nativeName: 'Chamoru',\n },\n co: {\n name: 'Corsican',\n nativeName: 'corsu',\n },\n cr: {\n name: 'Cree',\n nativeName: 'ᓀᐦᐃᔭᐍᐏᐣ',\n },\n cs: {\n name: 'Czech',\n nativeName: 'čeština',\n },\n cu: {\n name: 'Old Church Slavonic',\n nativeName: 'ѩзыкъ словѣньскъ',\n },\n cv: {\n name: 'Chuvash',\n nativeName: 'чӑваш чӗлхи',\n },\n cy: {\n name: 'Welsh',\n nativeName: 'Cymraeg',\n },\n da: {\n name: 'Danish',\n nativeName: 'dansk',\n },\n de: {\n name: 'German',\n nativeName: 'Deutsch',\n },\n dv: {\n name: 'Divehi',\n nativeName: 'ދިވެހި',\n },\n dz: {\n name: 'Dzongkha',\n nativeName: 'རྫོང་ཁ',\n },\n ee: {\n name: 'Ewe',\n nativeName: 'Eʋegbe',\n },\n el: {\n name: 'Greek',\n nativeName: 'Ελληνικά',\n },\n en: {\n name: 'English',\n nativeName: 'English',\n },\n eo: {\n name: 'Esperanto',\n nativeName: 'Esperanto',\n },\n es: {\n name: 'Spanish',\n nativeName: 'Español',\n },\n et: {\n name: 'Estonian',\n nativeName: 'eesti',\n },\n eu: {\n name: 'Basque',\n nativeName: 'euskara',\n },\n fa: {\n name: 'Persian',\n nativeName: 'فارسی',\n },\n ff: {\n name: 'Fula',\n nativeName: 'Fulfulde',\n },\n fi: {\n name: 'Finnish',\n nativeName: 'suomi',\n },\n fj: {\n name: 'Fijian',\n nativeName: 'vosa Vakaviti',\n },\n fo: {\n name: 'Faroese',\n nativeName: 'føroyskt',\n },\n fr: {\n name: 'French',\n nativeName: 'Français',\n },\n fy: {\n name: 'Western Frisian',\n nativeName: 'Frysk',\n },\n ga: {\n name: 'Irish',\n nativeName: 'Gaeilge',\n },\n gd: {\n name: 'Scottish Gaelic',\n nativeName: 'Gàidhlig',\n },\n gl: {\n name: 'Galician',\n nativeName: 'galego',\n },\n gn: {\n name: 'Guaraní',\n nativeName: \"Avañe'ẽ\",\n },\n gu: {\n name: 'Gujarati',\n nativeName: 'ગુજરાતી',\n },\n gv: {\n name: 'Manx',\n nativeName: 'Gaelg',\n },\n ha: {\n name: 'Hausa',\n nativeName: 'هَوُسَ',\n },\n he: {\n name: 'Hebrew',\n nativeName: 'עברית',\n },\n hi: {\n name: 'Hindi',\n nativeName: 'हिन्दी',\n },\n ho: {\n name: 'Hiri Motu',\n nativeName: 'Hiri Motu',\n },\n hr: {\n name: 'Croatian',\n nativeName: 'Hrvatski',\n },\n ht: {\n name: 'Haitian',\n nativeName: 'Kreyòl ayisyen',\n },\n hu: {\n name: 'Hungarian',\n nativeName: 'magyar',\n },\n hy: {\n name: 'Armenian',\n nativeName: 'Հայերեն',\n },\n hz: {\n name: 'Herero',\n nativeName: 'Otjiherero',\n },\n ia: {\n name: 'Interlingua',\n nativeName: 'Interlingua',\n },\n id: {\n name: 'Indonesian',\n nativeName: 'Bahasa Indonesia',\n },\n ie: {\n name: 'Interlingue',\n nativeName: 'Interlingue',\n },\n ig: {\n name: 'Igbo',\n nativeName: 'Asụsụ Igbo',\n },\n ii: {\n name: 'Nuosu',\n nativeName: 'ꆈꌠ꒿ Nuosuhxop',\n },\n ik: {\n name: 'Inupiaq',\n nativeName: 'Iñupiaq',\n },\n io: {\n name: 'Ido',\n nativeName: 'Ido',\n },\n is: {\n name: 'Icelandic',\n nativeName: 'Íslenska',\n },\n it: {\n name: 'Italian',\n nativeName: 'Italiano',\n },\n iu: {\n name: 'Inuktitut',\n nativeName: 'ᐃᓄᒃᑎᑐᑦ',\n },\n ja: {\n name: 'Japanese',\n nativeName: '日本語',\n },\n jv: {\n name: 'Javanese',\n nativeName: 'basa Jawa',\n },\n ka: {\n name: 'Georgian',\n nativeName: 'ქართული',\n },\n kg: {\n name: 'Kongo',\n nativeName: 'Kikongo',\n },\n ki: {\n name: 'Kikuyu',\n nativeName: 'Gĩkũyũ',\n },\n kj: {\n name: 'Kwanyama',\n nativeName: 'Kuanyama',\n },\n kk: {\n name: 'Kazakh',\n nativeName: 'қазақ тілі',\n },\n kl: {\n name: 'Kalaallisut',\n nativeName: 'kalaallisut',\n },\n km: {\n name: 'Khmer',\n nativeName: 'ខេមរភាសា',\n },\n kn: {\n name: 'Kannada',\n nativeName: 'ಕನ್ನಡ',\n },\n ko: {\n name: 'Korean',\n nativeName: '한국어',\n },\n kr: {\n name: 'Kanuri',\n nativeName: 'Kanuri',\n },\n ks: {\n name: 'Kashmiri',\n nativeName: 'कश्मीरी',\n },\n ku: {\n name: 'Kurdish',\n nativeName: 'Kurdî',\n },\n kv: {\n name: 'Komi',\n nativeName: 'коми кыв',\n },\n kw: {\n name: 'Cornish',\n nativeName: 'Kernewek',\n },\n ky: {\n name: 'Kyrgyz',\n nativeName: 'Кыргызча',\n },\n la: {\n name: 'Latin',\n nativeName: 'latine',\n },\n lb: {\n name: 'Luxembourgish',\n nativeName: 'Lëtzebuergesch',\n },\n lg: {\n name: 'Ganda',\n nativeName: 'Luganda',\n },\n li: {\n name: 'Limburgish',\n nativeName: 'Limburgs',\n },\n ln: {\n name: 'Lingala',\n nativeName: 'Lingála',\n },\n lo: {\n name: 'Lao',\n nativeName: 'ພາສາລາວ',\n },\n lt: {\n name: 'Lithuanian',\n nativeName: 'lietuvių kalba',\n },\n lu: {\n name: 'Luba-Katanga',\n nativeName: 'Kiluba',\n },\n lv: {\n name: 'Latvian',\n nativeName: 'latviešu valoda',\n },\n mg: {\n name: 'Malagasy',\n nativeName: 'fiteny malagasy',\n },\n mh: {\n name: 'Marshallese',\n nativeName: 'Kajin M̧ajeļ',\n },\n mi: {\n name: 'Māori',\n nativeName: 'te reo Māori',\n },\n mk: {\n name: 'Macedonian',\n nativeName: 'македонски јазик',\n },\n ml: {\n name: 'Malayalam',\n nativeName: 'മലയാളം',\n },\n mn: {\n name: 'Mongolian',\n nativeName: 'Монгол хэл',\n },\n mr: {\n name: 'Marathi',\n nativeName: 'मराठी',\n },\n ms: {\n name: 'Malay',\n nativeName: 'Bahasa Melayu',\n },\n mt: {\n name: 'Maltese',\n nativeName: 'Malti',\n },\n my: {\n name: 'Burmese',\n nativeName: 'ဗမာစာ',\n },\n na: {\n name: 'Nauru',\n nativeName: 'Dorerin Naoero',\n },\n nb: {\n name: 'Norwegian Bokmål',\n nativeName: 'Norsk bokmål',\n },\n nd: {\n name: 'Northern Ndebele',\n nativeName: 'isiNdebele',\n },\n ne: {\n name: 'Nepali',\n nativeName: 'नेपाली',\n },\n ng: {\n name: 'Ndonga',\n nativeName: 'Owambo',\n },\n nl: {\n name: 'Dutch',\n nativeName: 'Nederlands',\n },\n nn: {\n name: 'Norwegian Nynorsk',\n nativeName: 'Norsk nynorsk',\n },\n no: {\n name: 'Norwegian',\n nativeName: 'Norsk',\n },\n nr: {\n name: 'Southern Ndebele',\n nativeName: 'isiNdebele',\n },\n nv: {\n name: 'Navajo',\n nativeName: 'Diné bizaad',\n },\n ny: {\n name: 'Chichewa',\n nativeName: 'chiCheŵa',\n },\n oc: {\n name: 'Occitan',\n nativeName: 'occitan',\n },\n oj: {\n name: 'Ojibwe',\n nativeName: 'ᐊᓂᔑᓈᐯᒧᐎᓐ',\n },\n om: {\n name: 'Oromo',\n nativeName: 'Afaan Oromoo',\n },\n or: {\n name: 'Oriya',\n nativeName: 'ଓଡ଼ିଆ',\n },\n os: {\n name: 'Ossetian',\n nativeName: 'ирон æвзаг',\n },\n pa: {\n name: 'Panjabi',\n nativeName: 'ਪੰਜਾਬੀ',\n },\n pi: {\n name: 'Pāli',\n nativeName: 'पाऴि',\n },\n pl: {\n name: 'Polish',\n nativeName: 'Polski',\n },\n ps: {\n name: 'Pashto',\n nativeName: 'پښتو',\n },\n pt: {\n name: 'Portuguese',\n nativeName: 'Português',\n },\n qu: {\n name: 'Quechua',\n nativeName: 'Runa Simi',\n },\n rm: {\n name: 'Romansh',\n nativeName: 'rumantsch grischun',\n },\n rn: {\n name: 'Kirundi',\n nativeName: 'Ikirundi',\n },\n ro: {\n name: 'Romanian',\n nativeName: 'Română',\n },\n ru: {\n name: 'Russian',\n nativeName: 'Русский',\n },\n rw: {\n name: 'Kinyarwanda',\n nativeName: 'Ikinyarwanda',\n },\n sa: {\n name: 'Sanskrit',\n nativeName: 'संस्कृतम्',\n },\n sc: {\n name: 'Sardinian',\n nativeName: 'sardu',\n },\n sd: {\n name: 'Sindhi',\n nativeName: 'सिन्धी',\n },\n se: {\n name: 'Northern Sami',\n nativeName: 'Davvisámegiella',\n },\n sg: {\n name: 'Sango',\n nativeName: 'yângâ tî sängö',\n },\n si: {\n name: 'Sinhala',\n nativeName: 'සිංහල',\n },\n sk: {\n name: 'Slovak',\n nativeName: 'slovenčina',\n },\n sl: {\n name: 'Slovenian',\n nativeName: 'slovenščina',\n },\n sm: {\n name: 'Samoan',\n nativeName: \"gagana fa'a Samoa\",\n },\n sn: {\n name: 'Shona',\n nativeName: 'chiShona',\n },\n so: {\n name: 'Somali',\n nativeName: 'Soomaaliga',\n },\n sq: {\n name: 'Albanian',\n nativeName: 'Shqip',\n },\n sr: {\n name: 'Serbian',\n nativeName: 'српски језик',\n },\n ss: {\n name: 'Swati',\n nativeName: 'SiSwati',\n },\n st: {\n name: 'Southern Sotho',\n nativeName: 'Sesotho',\n },\n su: {\n name: 'Sundanese',\n nativeName: 'Basa Sunda',\n },\n sv: {\n name: 'Swedish',\n nativeName: 'Svenska',\n },\n sw: {\n name: 'Swahili',\n nativeName: 'Kiswahili',\n },\n ta: {\n name: 'Tamil',\n nativeName: 'தமிழ்',\n },\n te: {\n name: 'Telugu',\n nativeName: 'తెలుగు',\n },\n tg: {\n name: 'Tajik',\n nativeName: 'тоҷикӣ',\n },\n th: {\n name: 'Thai',\n nativeName: 'ไทย',\n },\n ti: {\n name: 'Tigrinya',\n nativeName: 'ትግርኛ',\n },\n tk: {\n name: 'Turkmen',\n nativeName: 'Türkmençe',\n },\n tl: {\n name: 'Tagalog',\n nativeName: 'Wikang Tagalog',\n },\n tn: {\n name: 'Tswana',\n nativeName: 'Setswana',\n },\n to: {\n name: 'Tonga',\n nativeName: 'faka Tonga',\n },\n tr: {\n name: 'Turkish',\n nativeName: 'Türkçe',\n },\n ts: {\n name: 'Tsonga',\n nativeName: 'Xitsonga',\n },\n tt: {\n name: 'Tatar',\n nativeName: 'татар теле',\n },\n tw: {\n name: 'Twi',\n nativeName: 'Twi',\n },\n ty: {\n name: 'Tahitian',\n nativeName: 'Reo Tahiti',\n },\n ug: {\n name: 'Uyghur',\n nativeName: 'ئۇيغۇرچە',\n },\n uk: {\n name: 'Ukrainian',\n nativeName: 'Українська',\n },\n ur: {\n name: 'Urdu',\n nativeName: 'اردو',\n },\n uz: {\n name: 'Uzbek',\n nativeName: 'Ўзбек',\n },\n ve: {\n name: 'Venda',\n nativeName: 'Tshivenḓa',\n },\n vi: {\n name: 'Vietnamese',\n nativeName: 'Tiếng Việt',\n },\n vo: {\n name: 'Volapük',\n nativeName: 'Volapük',\n },\n wa: {\n name: 'Walloon',\n nativeName: 'walon',\n },\n wo: {\n name: 'Wolof',\n nativeName: 'Wollof',\n },\n xh: {\n name: 'Xhosa',\n nativeName: 'isiXhosa',\n },\n yi: {\n name: 'Yiddish',\n nativeName: 'ייִדיש',\n },\n yo: {\n name: 'Yoruba',\n nativeName: 'Yorùbá',\n },\n za: {\n name: 'Zhuang',\n nativeName: 'Saɯ cueŋƅ',\n },\n zh: {\n name: 'Chinese',\n nativeName: '中文',\n },\n zu: {\n name: 'Zulu',\n nativeName: 'isiZulu',\n },\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LANGUAGES_LIST);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaXNvLTYzOS0xL3NyYy9kYXRhLmpzPzRjN2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVlLDZFQUFjLEVBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaXNvLTYzOS0xL3NyYy9kYXRhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTEFOR1VBR0VTX0xJU1QgPSB7XG4gIGFhOiB7XG4gICAgbmFtZTogJ0FmYXInLFxuICAgIG5hdGl2ZU5hbWU6ICdBZmFyYWYnLFxuICB9LFxuICBhYjoge1xuICAgIG5hbWU6ICdBYmtoYXonLFxuICAgIG5hdGl2ZU5hbWU6ICfQsNKn0YHRg9CwINCx0YvQt9GI05nQsCcsXG4gIH0sXG4gIGFlOiB7XG4gICAgbmFtZTogJ0F2ZXN0YW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdhdmVzdGEnLFxuICB9LFxuICBhZjoge1xuICAgIG5hbWU6ICdBZnJpa2FhbnMnLFxuICAgIG5hdGl2ZU5hbWU6ICdBZnJpa2FhbnMnLFxuICB9LFxuICBhazoge1xuICAgIG5hbWU6ICdBa2FuJyxcbiAgICBuYXRpdmVOYW1lOiAnQWthbicsXG4gIH0sXG4gIGFtOiB7XG4gICAgbmFtZTogJ0FtaGFyaWMnLFxuICAgIG5hdGl2ZU5hbWU6ICfhiqDhiJvhiK3hipsnLFxuICB9LFxuICBhbjoge1xuICAgIG5hbWU6ICdBcmFnb25lc2UnLFxuICAgIG5hdGl2ZU5hbWU6ICdhcmFnb27DqXMnLFxuICB9LFxuICBhcjoge1xuICAgIG5hbWU6ICdBcmFiaWMnLFxuICAgIG5hdGl2ZU5hbWU6ICfYp9mO2YTZkti52Y7YsdmO2KjZkNmK2Y7Zkdip2Y8nLFxuICB9LFxuICBhczoge1xuICAgIG5hbWU6ICdBc3NhbWVzZScsXG4gICAgbmF0aXZlTmFtZTogJ+CmheCmuOCmruCngOCmr+CmvOCmvicsXG4gIH0sXG4gIGF2OiB7XG4gICAgbmFtZTogJ0F2YXJpYycsXG4gICAgbmF0aXZlTmFtZTogJ9Cw0LLQsNGAINC80LDRhtOAJyxcbiAgfSxcbiAgYXk6IHtcbiAgICBuYW1lOiAnQXltYXJhJyxcbiAgICBuYXRpdmVOYW1lOiAnYXltYXIgYXJ1JyxcbiAgfSxcbiAgYXo6IHtcbiAgICBuYW1lOiAnQXplcmJhaWphbmknLFxuICAgIG5hdGl2ZU5hbWU6ICdhesmZcmJheWNhbiBkaWxpJyxcbiAgfSxcbiAgYmE6IHtcbiAgICBuYW1lOiAnQmFzaGtpcicsXG4gICAgbmF0aXZlTmFtZTogJ9Cx0LDRiNKh0L7RgNGCINGC0LXQu9C1JyxcbiAgfSxcbiAgYmU6IHtcbiAgICBuYW1lOiAnQmVsYXJ1c2lhbicsXG4gICAgbmF0aXZlTmFtZTogJ9Cx0LXQu9Cw0YDRg9GB0LrQsNGPINC80L7QstCwJyxcbiAgfSxcbiAgYmc6IHtcbiAgICBuYW1lOiAnQnVsZ2FyaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAn0LHRitC70LPQsNGA0YHQutC4INC10LfQuNC6JyxcbiAgfSxcbiAgYmk6IHtcbiAgICBuYW1lOiAnQmlzbGFtYScsXG4gICAgbmF0aXZlTmFtZTogJ0Jpc2xhbWEnLFxuICB9LFxuICBibToge1xuICAgIG5hbWU6ICdCYW1iYXJhJyxcbiAgICBuYXRpdmVOYW1lOiAnYmFtYW5hbmthbicsXG4gIH0sXG4gIGJuOiB7XG4gICAgbmFtZTogJ0JlbmdhbGknLFxuICAgIG5hdGl2ZU5hbWU6ICfgpqzgpr7gpoLgprLgpr4nLFxuICB9LFxuICBibzoge1xuICAgIG5hbWU6ICdUaWJldGFuJyxcbiAgICBuYXRpdmVOYW1lOiAn4L2W4L284L2R4LyL4L2h4L2y4L2CJyxcbiAgfSxcbiAgYnI6IHtcbiAgICBuYW1lOiAnQnJldG9uJyxcbiAgICBuYXRpdmVOYW1lOiAnYnJlemhvbmVnJyxcbiAgfSxcbiAgYnM6IHtcbiAgICBuYW1lOiAnQm9zbmlhbicsXG4gICAgbmF0aXZlTmFtZTogJ2Jvc2Fuc2tpIGplemlrJyxcbiAgfSxcbiAgY2E6IHtcbiAgICBuYW1lOiAnQ2F0YWxhbicsXG4gICAgbmF0aXZlTmFtZTogJ0NhdGFsw6AnLFxuICB9LFxuICBjZToge1xuICAgIG5hbWU6ICdDaGVjaGVuJyxcbiAgICBuYXRpdmVOYW1lOiAn0L3QvtGF0YfQuNC50L0g0LzQvtGC0YInLFxuICB9LFxuICBjaDoge1xuICAgIG5hbWU6ICdDaGFtb3JybycsXG4gICAgbmF0aXZlTmFtZTogJ0NoYW1vcnUnLFxuICB9LFxuICBjbzoge1xuICAgIG5hbWU6ICdDb3JzaWNhbicsXG4gICAgbmF0aXZlTmFtZTogJ2NvcnN1JyxcbiAgfSxcbiAgY3I6IHtcbiAgICBuYW1lOiAnQ3JlZScsXG4gICAgbmF0aXZlTmFtZTogJ+GTgOGQpuGQg+GUreGQjeGQj+GQoycsXG4gIH0sXG4gIGNzOiB7XG4gICAgbmFtZTogJ0N6ZWNoJyxcbiAgICBuYXRpdmVOYW1lOiAnxI1lxaF0aW5hJyxcbiAgfSxcbiAgY3U6IHtcbiAgICBuYW1lOiAnT2xkIENodXJjaCBTbGF2b25pYycsXG4gICAgbmF0aXZlTmFtZTogJ9Gp0LfRi9C60Yog0YHQu9C+0LLRo9C90YzRgdC60YonLFxuICB9LFxuICBjdjoge1xuICAgIG5hbWU6ICdDaHV2YXNoJyxcbiAgICBuYXRpdmVOYW1lOiAn0YfTkdCy0LDRiCDRh9OX0LvRhdC4JyxcbiAgfSxcbiAgY3k6IHtcbiAgICBuYW1lOiAnV2Vsc2gnLFxuICAgIG5hdGl2ZU5hbWU6ICdDeW1yYWVnJyxcbiAgfSxcbiAgZGE6IHtcbiAgICBuYW1lOiAnRGFuaXNoJyxcbiAgICBuYXRpdmVOYW1lOiAnZGFuc2snLFxuICB9LFxuICBkZToge1xuICAgIG5hbWU6ICdHZXJtYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdEZXV0c2NoJyxcbiAgfSxcbiAgZHY6IHtcbiAgICBuYW1lOiAnRGl2ZWhpJyxcbiAgICBuYXRpdmVOYW1lOiAn3oveqN6I3qzegN6oJyxcbiAgfSxcbiAgZHo6IHtcbiAgICBuYW1lOiAnRHpvbmdraGEnLFxuICAgIG5hdGl2ZU5hbWU6ICfgvaLgvqvgvbzgvYTgvIvgvYEnLFxuICB9LFxuICBlZToge1xuICAgIG5hbWU6ICdFd2UnLFxuICAgIG5hdGl2ZU5hbWU6ICdFyotlZ2JlJyxcbiAgfSxcbiAgZWw6IHtcbiAgICBuYW1lOiAnR3JlZWsnLFxuICAgIG5hdGl2ZU5hbWU6ICfOlc67zrvOt869zrnOus6sJyxcbiAgfSxcbiAgZW46IHtcbiAgICBuYW1lOiAnRW5nbGlzaCcsXG4gICAgbmF0aXZlTmFtZTogJ0VuZ2xpc2gnLFxuICB9LFxuICBlbzoge1xuICAgIG5hbWU6ICdFc3BlcmFudG8nLFxuICAgIG5hdGl2ZU5hbWU6ICdFc3BlcmFudG8nLFxuICB9LFxuICBlczoge1xuICAgIG5hbWU6ICdTcGFuaXNoJyxcbiAgICBuYXRpdmVOYW1lOiAnRXNwYcOxb2wnLFxuICB9LFxuICBldDoge1xuICAgIG5hbWU6ICdFc3RvbmlhbicsXG4gICAgbmF0aXZlTmFtZTogJ2Vlc3RpJyxcbiAgfSxcbiAgZXU6IHtcbiAgICBuYW1lOiAnQmFzcXVlJyxcbiAgICBuYXRpdmVOYW1lOiAnZXVza2FyYScsXG4gIH0sXG4gIGZhOiB7XG4gICAgbmFtZTogJ1BlcnNpYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICfZgdin2LHYs9uMJyxcbiAgfSxcbiAgZmY6IHtcbiAgICBuYW1lOiAnRnVsYScsXG4gICAgbmF0aXZlTmFtZTogJ0Z1bGZ1bGRlJyxcbiAgfSxcbiAgZmk6IHtcbiAgICBuYW1lOiAnRmlubmlzaCcsXG4gICAgbmF0aXZlTmFtZTogJ3N1b21pJyxcbiAgfSxcbiAgZmo6IHtcbiAgICBuYW1lOiAnRmlqaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAndm9zYSBWYWthdml0aScsXG4gIH0sXG4gIGZvOiB7XG4gICAgbmFtZTogJ0Zhcm9lc2UnLFxuICAgIG5hdGl2ZU5hbWU6ICdmw7hyb3lza3QnLFxuICB9LFxuICBmcjoge1xuICAgIG5hbWU6ICdGcmVuY2gnLFxuICAgIG5hdGl2ZU5hbWU6ICdGcmFuw6dhaXMnLFxuICB9LFxuICBmeToge1xuICAgIG5hbWU6ICdXZXN0ZXJuIEZyaXNpYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdGcnlzaycsXG4gIH0sXG4gIGdhOiB7XG4gICAgbmFtZTogJ0lyaXNoJyxcbiAgICBuYXRpdmVOYW1lOiAnR2FlaWxnZScsXG4gIH0sXG4gIGdkOiB7XG4gICAgbmFtZTogJ1Njb3R0aXNoIEdhZWxpYycsXG4gICAgbmF0aXZlTmFtZTogJ0fDoGlkaGxpZycsXG4gIH0sXG4gIGdsOiB7XG4gICAgbmFtZTogJ0dhbGljaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAnZ2FsZWdvJyxcbiAgfSxcbiAgZ246IHtcbiAgICBuYW1lOiAnR3VhcmFuw60nLFxuICAgIG5hdGl2ZU5hbWU6IFwiQXZhw7FlJ+G6vVwiLFxuICB9LFxuICBndToge1xuICAgIG5hbWU6ICdHdWphcmF0aScsXG4gICAgbmF0aXZlTmFtZTogJ+Cql+CrgeCqnOCqsOCqvuCqpOCrgCcsXG4gIH0sXG4gIGd2OiB7XG4gICAgbmFtZTogJ01hbngnLFxuICAgIG5hdGl2ZU5hbWU6ICdHYWVsZycsXG4gIH0sXG4gIGhhOiB7XG4gICAgbmFtZTogJ0hhdXNhJyxcbiAgICBuYXRpdmVOYW1lOiAn2YfZjtmI2Y/Ys9mOJyxcbiAgfSxcbiAgaGU6IHtcbiAgICBuYW1lOiAnSGVicmV3JyxcbiAgICBuYXRpdmVOYW1lOiAn16LXkdeo15nXqicsXG4gIH0sXG4gIGhpOiB7XG4gICAgbmFtZTogJ0hpbmRpJyxcbiAgICBuYXRpdmVOYW1lOiAn4KS54KS/4KSo4KWN4KSm4KWAJyxcbiAgfSxcbiAgaG86IHtcbiAgICBuYW1lOiAnSGlyaSBNb3R1JyxcbiAgICBuYXRpdmVOYW1lOiAnSGlyaSBNb3R1JyxcbiAgfSxcbiAgaHI6IHtcbiAgICBuYW1lOiAnQ3JvYXRpYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdIcnZhdHNraScsXG4gIH0sXG4gIGh0OiB7XG4gICAgbmFtZTogJ0hhaXRpYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdLcmV5w7JsIGF5aXN5ZW4nLFxuICB9LFxuICBodToge1xuICAgIG5hbWU6ICdIdW5nYXJpYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdtYWd5YXInLFxuICB9LFxuICBoeToge1xuICAgIG5hbWU6ICdBcm1lbmlhbicsXG4gICAgbmF0aXZlTmFtZTogJ9WA1aHVtdWl1oDVpdW2JyxcbiAgfSxcbiAgaHo6IHtcbiAgICBuYW1lOiAnSGVyZXJvJyxcbiAgICBuYXRpdmVOYW1lOiAnT3RqaWhlcmVybycsXG4gIH0sXG4gIGlhOiB7XG4gICAgbmFtZTogJ0ludGVybGluZ3VhJyxcbiAgICBuYXRpdmVOYW1lOiAnSW50ZXJsaW5ndWEnLFxuICB9LFxuICBpZDoge1xuICAgIG5hbWU6ICdJbmRvbmVzaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAnQmFoYXNhIEluZG9uZXNpYScsXG4gIH0sXG4gIGllOiB7XG4gICAgbmFtZTogJ0ludGVybGluZ3VlJyxcbiAgICBuYXRpdmVOYW1lOiAnSW50ZXJsaW5ndWUnLFxuICB9LFxuICBpZzoge1xuICAgIG5hbWU6ICdJZ2JvJyxcbiAgICBuYXRpdmVOYW1lOiAnQXPhu6Vz4bulIElnYm8nLFxuICB9LFxuICBpaToge1xuICAgIG5hbWU6ICdOdW9zdScsXG4gICAgbmF0aXZlTmFtZTogJ+qGiOqMoOqSvyBOdW9zdWh4b3AnLFxuICB9LFxuICBpazoge1xuICAgIG5hbWU6ICdJbnVwaWFxJyxcbiAgICBuYXRpdmVOYW1lOiAnScOxdXBpYXEnLFxuICB9LFxuICBpbzoge1xuICAgIG5hbWU6ICdJZG8nLFxuICAgIG5hdGl2ZU5hbWU6ICdJZG8nLFxuICB9LFxuICBpczoge1xuICAgIG5hbWU6ICdJY2VsYW5kaWMnLFxuICAgIG5hdGl2ZU5hbWU6ICfDjXNsZW5za2EnLFxuICB9LFxuICBpdDoge1xuICAgIG5hbWU6ICdJdGFsaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAnSXRhbGlhbm8nLFxuICB9LFxuICBpdToge1xuICAgIG5hbWU6ICdJbnVrdGl0dXQnLFxuICAgIG5hdGl2ZU5hbWU6ICfhkIPhk4ThkoPhkY7hkZDhkaYnLFxuICB9LFxuICBqYToge1xuICAgIG5hbWU6ICdKYXBhbmVzZScsXG4gICAgbmF0aXZlTmFtZTogJ+aXpeacrOiqnicsXG4gIH0sXG4gIGp2OiB7XG4gICAgbmFtZTogJ0phdmFuZXNlJyxcbiAgICBuYXRpdmVOYW1lOiAnYmFzYSBKYXdhJyxcbiAgfSxcbiAga2E6IHtcbiAgICBuYW1lOiAnR2VvcmdpYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICfhg6Xhg5Dhg6Dhg5fhg6Phg5rhg5gnLFxuICB9LFxuICBrZzoge1xuICAgIG5hbWU6ICdLb25nbycsXG4gICAgbmF0aXZlTmFtZTogJ0tpa29uZ28nLFxuICB9LFxuICBraToge1xuICAgIG5hbWU6ICdLaWt1eXUnLFxuICAgIG5hdGl2ZU5hbWU6ICdHxKlrxal5xaknLFxuICB9LFxuICBrajoge1xuICAgIG5hbWU6ICdLd2FueWFtYScsXG4gICAgbmF0aXZlTmFtZTogJ0t1YW55YW1hJyxcbiAgfSxcbiAga2s6IHtcbiAgICBuYW1lOiAnS2F6YWtoJyxcbiAgICBuYXRpdmVOYW1lOiAn0pvQsNC30LDSmyDRgtGW0LvRlicsXG4gIH0sXG4gIGtsOiB7XG4gICAgbmFtZTogJ0thbGFhbGxpc3V0JyxcbiAgICBuYXRpdmVOYW1lOiAna2FsYWFsbGlzdXQnLFxuICB9LFxuICBrbToge1xuICAgIG5hbWU6ICdLaG1lcicsXG4gICAgbmF0aXZlTmFtZTogJ+GegeGfgeGemOGemuGel+GetuGen+GeticsXG4gIH0sXG4gIGtuOiB7XG4gICAgbmFtZTogJ0thbm5hZGEnLFxuICAgIG5hdGl2ZU5hbWU6ICfgspXgsqjgs43gsqjgsqEnLFxuICB9LFxuICBrbzoge1xuICAgIG5hbWU6ICdLb3JlYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICftlZzqta3slrQnLFxuICB9LFxuICBrcjoge1xuICAgIG5hbWU6ICdLYW51cmknLFxuICAgIG5hdGl2ZU5hbWU6ICdLYW51cmknLFxuICB9LFxuICBrczoge1xuICAgIG5hbWU6ICdLYXNobWlyaScsXG4gICAgbmF0aXZlTmFtZTogJ+CkleCktuCljeCkruClgOCksOClgCcsXG4gIH0sXG4gIGt1OiB7XG4gICAgbmFtZTogJ0t1cmRpc2gnLFxuICAgIG5hdGl2ZU5hbWU6ICdLdXJkw64nLFxuICB9LFxuICBrdjoge1xuICAgIG5hbWU6ICdLb21pJyxcbiAgICBuYXRpdmVOYW1lOiAn0LrQvtC80Lgg0LrRi9CyJyxcbiAgfSxcbiAga3c6IHtcbiAgICBuYW1lOiAnQ29ybmlzaCcsXG4gICAgbmF0aXZlTmFtZTogJ0tlcm5ld2VrJyxcbiAgfSxcbiAga3k6IHtcbiAgICBuYW1lOiAnS3lyZ3l6JyxcbiAgICBuYXRpdmVOYW1lOiAn0JrRi9GA0LPRi9C30YfQsCcsXG4gIH0sXG4gIGxhOiB7XG4gICAgbmFtZTogJ0xhdGluJyxcbiAgICBuYXRpdmVOYW1lOiAnbGF0aW5lJyxcbiAgfSxcbiAgbGI6IHtcbiAgICBuYW1lOiAnTHV4ZW1ib3VyZ2lzaCcsXG4gICAgbmF0aXZlTmFtZTogJ0zDq3R6ZWJ1ZXJnZXNjaCcsXG4gIH0sXG4gIGxnOiB7XG4gICAgbmFtZTogJ0dhbmRhJyxcbiAgICBuYXRpdmVOYW1lOiAnTHVnYW5kYScsXG4gIH0sXG4gIGxpOiB7XG4gICAgbmFtZTogJ0xpbWJ1cmdpc2gnLFxuICAgIG5hdGl2ZU5hbWU6ICdMaW1idXJncycsXG4gIH0sXG4gIGxuOiB7XG4gICAgbmFtZTogJ0xpbmdhbGEnLFxuICAgIG5hdGl2ZU5hbWU6ICdMaW5nw6FsYScsXG4gIH0sXG4gIGxvOiB7XG4gICAgbmFtZTogJ0xhbycsXG4gICAgbmF0aXZlTmFtZTogJ+C6nuC6suC6quC6suC6peC6suC6pycsXG4gIH0sXG4gIGx0OiB7XG4gICAgbmFtZTogJ0xpdGh1YW5pYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdsaWV0dXZpxbMga2FsYmEnLFxuICB9LFxuICBsdToge1xuICAgIG5hbWU6ICdMdWJhLUthdGFuZ2EnLFxuICAgIG5hdGl2ZU5hbWU6ICdLaWx1YmEnLFxuICB9LFxuICBsdjoge1xuICAgIG5hbWU6ICdMYXR2aWFuJyxcbiAgICBuYXRpdmVOYW1lOiAnbGF0dmllxaF1IHZhbG9kYScsXG4gIH0sXG4gIG1nOiB7XG4gICAgbmFtZTogJ01hbGFnYXN5JyxcbiAgICBuYXRpdmVOYW1lOiAnZml0ZW55IG1hbGFnYXN5JyxcbiAgfSxcbiAgbWg6IHtcbiAgICBuYW1lOiAnTWFyc2hhbGxlc2UnLFxuICAgIG5hdGl2ZU5hbWU6ICdLYWppbiBNzKdhamXEvCcsXG4gIH0sXG4gIG1pOiB7XG4gICAgbmFtZTogJ03EgW9yaScsXG4gICAgbmF0aXZlTmFtZTogJ3RlIHJlbyBNxIFvcmknLFxuICB9LFxuICBtazoge1xuICAgIG5hbWU6ICdNYWNlZG9uaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAn0LzQsNC60LXQtNC+0L3RgdC60Lgg0ZjQsNC30LjQuicsXG4gIH0sXG4gIG1sOiB7XG4gICAgbmFtZTogJ01hbGF5YWxhbScsXG4gICAgbmF0aXZlTmFtZTogJ+C0ruC0suC0r+C0vuC0s+C0gicsXG4gIH0sXG4gIG1uOiB7XG4gICAgbmFtZTogJ01vbmdvbGlhbicsXG4gICAgbmF0aXZlTmFtZTogJ9Cc0L7QvdCz0L7QuyDRhdGN0LsnLFxuICB9LFxuICBtcjoge1xuICAgIG5hbWU6ICdNYXJhdGhpJyxcbiAgICBuYXRpdmVOYW1lOiAn4KSu4KSw4KS+4KSg4KWAJyxcbiAgfSxcbiAgbXM6IHtcbiAgICBuYW1lOiAnTWFsYXknLFxuICAgIG5hdGl2ZU5hbWU6ICdCYWhhc2EgTWVsYXl1JyxcbiAgfSxcbiAgbXQ6IHtcbiAgICBuYW1lOiAnTWFsdGVzZScsXG4gICAgbmF0aXZlTmFtZTogJ01hbHRpJyxcbiAgfSxcbiAgbXk6IHtcbiAgICBuYW1lOiAnQnVybWVzZScsXG4gICAgbmF0aXZlTmFtZTogJ+GAl+GAmeGArOGAheGArCcsXG4gIH0sXG4gIG5hOiB7XG4gICAgbmFtZTogJ05hdXJ1JyxcbiAgICBuYXRpdmVOYW1lOiAnRG9yZXJpbiBOYW9lcm8nLFxuICB9LFxuICBuYjoge1xuICAgIG5hbWU6ICdOb3J3ZWdpYW4gQm9rbcOlbCcsXG4gICAgbmF0aXZlTmFtZTogJ05vcnNrIGJva23DpWwnLFxuICB9LFxuICBuZDoge1xuICAgIG5hbWU6ICdOb3J0aGVybiBOZGViZWxlJyxcbiAgICBuYXRpdmVOYW1lOiAnaXNpTmRlYmVsZScsXG4gIH0sXG4gIG5lOiB7XG4gICAgbmFtZTogJ05lcGFsaScsXG4gICAgbmF0aXZlTmFtZTogJ+CkqOClh+CkquCkvuCksuClgCcsXG4gIH0sXG4gIG5nOiB7XG4gICAgbmFtZTogJ05kb25nYScsXG4gICAgbmF0aXZlTmFtZTogJ093YW1ibycsXG4gIH0sXG4gIG5sOiB7XG4gICAgbmFtZTogJ0R1dGNoJyxcbiAgICBuYXRpdmVOYW1lOiAnTmVkZXJsYW5kcycsXG4gIH0sXG4gIG5uOiB7XG4gICAgbmFtZTogJ05vcndlZ2lhbiBOeW5vcnNrJyxcbiAgICBuYXRpdmVOYW1lOiAnTm9yc2sgbnlub3JzaycsXG4gIH0sXG4gIG5vOiB7XG4gICAgbmFtZTogJ05vcndlZ2lhbicsXG4gICAgbmF0aXZlTmFtZTogJ05vcnNrJyxcbiAgfSxcbiAgbnI6IHtcbiAgICBuYW1lOiAnU291dGhlcm4gTmRlYmVsZScsXG4gICAgbmF0aXZlTmFtZTogJ2lzaU5kZWJlbGUnLFxuICB9LFxuICBudjoge1xuICAgIG5hbWU6ICdOYXZham8nLFxuICAgIG5hdGl2ZU5hbWU6ICdEaW7DqSBiaXphYWQnLFxuICB9LFxuICBueToge1xuICAgIG5hbWU6ICdDaGljaGV3YScsXG4gICAgbmF0aXZlTmFtZTogJ2NoaUNoZcW1YScsXG4gIH0sXG4gIG9jOiB7XG4gICAgbmFtZTogJ09jY2l0YW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdvY2NpdGFuJyxcbiAgfSxcbiAgb2o6IHtcbiAgICBuYW1lOiAnT2ppYndlJyxcbiAgICBuYXRpdmVOYW1lOiAn4ZCK4ZOC4ZSR4ZOI4ZCv4ZKn4ZCO4ZOQJyxcbiAgfSxcbiAgb206IHtcbiAgICBuYW1lOiAnT3JvbW8nLFxuICAgIG5hdGl2ZU5hbWU6ICdBZmFhbiBPcm9tb28nLFxuICB9LFxuICBvcjoge1xuICAgIG5hbWU6ICdPcml5YScsXG4gICAgbmF0aXZlTmFtZTogJ+Csk+CsoeCsvOCsv+CshicsXG4gIH0sXG4gIG9zOiB7XG4gICAgbmFtZTogJ09zc2V0aWFuJyxcbiAgICBuYXRpdmVOYW1lOiAn0LjRgNC+0L0gw6bQstC30LDQsycsXG4gIH0sXG4gIHBhOiB7XG4gICAgbmFtZTogJ1BhbmphYmknLFxuICAgIG5hdGl2ZU5hbWU6ICfgqKrgqbDgqJzgqL7gqKzgqYAnLFxuICB9LFxuICBwaToge1xuICAgIG5hbWU6ICdQxIFsaScsXG4gICAgbmF0aXZlTmFtZTogJ+CkquCkvuCktOCkvycsXG4gIH0sXG4gIHBsOiB7XG4gICAgbmFtZTogJ1BvbGlzaCcsXG4gICAgbmF0aXZlTmFtZTogJ1BvbHNraScsXG4gIH0sXG4gIHBzOiB7XG4gICAgbmFtZTogJ1Bhc2h0bycsXG4gICAgbmF0aXZlTmFtZTogJ9m+2prYqtmIJyxcbiAgfSxcbiAgcHQ6IHtcbiAgICBuYW1lOiAnUG9ydHVndWVzZScsXG4gICAgbmF0aXZlTmFtZTogJ1BvcnR1Z3XDqnMnLFxuICB9LFxuICBxdToge1xuICAgIG5hbWU6ICdRdWVjaHVhJyxcbiAgICBuYXRpdmVOYW1lOiAnUnVuYSBTaW1pJyxcbiAgfSxcbiAgcm06IHtcbiAgICBuYW1lOiAnUm9tYW5zaCcsXG4gICAgbmF0aXZlTmFtZTogJ3J1bWFudHNjaCBncmlzY2h1bicsXG4gIH0sXG4gIHJuOiB7XG4gICAgbmFtZTogJ0tpcnVuZGknLFxuICAgIG5hdGl2ZU5hbWU6ICdJa2lydW5kaScsXG4gIH0sXG4gIHJvOiB7XG4gICAgbmFtZTogJ1JvbWFuaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAnUm9tw6JuxIMnLFxuICB9LFxuICBydToge1xuICAgIG5hbWU6ICdSdXNzaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAn0KDRg9GB0YHQutC40LknLFxuICB9LFxuICBydzoge1xuICAgIG5hbWU6ICdLaW55YXJ3YW5kYScsXG4gICAgbmF0aXZlTmFtZTogJ0lraW55YXJ3YW5kYScsXG4gIH0sXG4gIHNhOiB7XG4gICAgbmFtZTogJ1NhbnNrcml0JyxcbiAgICBuYXRpdmVOYW1lOiAn4KS44KSC4KS44KWN4KSV4KWD4KSk4KSu4KWNJyxcbiAgfSxcbiAgc2M6IHtcbiAgICBuYW1lOiAnU2FyZGluaWFuJyxcbiAgICBuYXRpdmVOYW1lOiAnc2FyZHUnLFxuICB9LFxuICBzZDoge1xuICAgIG5hbWU6ICdTaW5kaGknLFxuICAgIG5hdGl2ZU5hbWU6ICfgpLjgpL/gpKjgpY3gpKfgpYAnLFxuICB9LFxuICBzZToge1xuICAgIG5hbWU6ICdOb3J0aGVybiBTYW1pJyxcbiAgICBuYXRpdmVOYW1lOiAnRGF2dmlzw6FtZWdpZWxsYScsXG4gIH0sXG4gIHNnOiB7XG4gICAgbmFtZTogJ1NhbmdvJyxcbiAgICBuYXRpdmVOYW1lOiAnecOibmfDoiB0w64gc8OkbmfDticsXG4gIH0sXG4gIHNpOiB7XG4gICAgbmFtZTogJ1NpbmhhbGEnLFxuICAgIG5hdGl2ZU5hbWU6ICfgt4Pgt5LgtoLgt4Tgtr0nLFxuICB9LFxuICBzazoge1xuICAgIG5hbWU6ICdTbG92YWsnLFxuICAgIG5hdGl2ZU5hbWU6ICdzbG92ZW7EjWluYScsXG4gIH0sXG4gIHNsOiB7XG4gICAgbmFtZTogJ1Nsb3ZlbmlhbicsXG4gICAgbmF0aXZlTmFtZTogJ3Nsb3ZlbsWhxI1pbmEnLFxuICB9LFxuICBzbToge1xuICAgIG5hbWU6ICdTYW1vYW4nLFxuICAgIG5hdGl2ZU5hbWU6IFwiZ2FnYW5hIGZhJ2EgU2Ftb2FcIixcbiAgfSxcbiAgc246IHtcbiAgICBuYW1lOiAnU2hvbmEnLFxuICAgIG5hdGl2ZU5hbWU6ICdjaGlTaG9uYScsXG4gIH0sXG4gIHNvOiB7XG4gICAgbmFtZTogJ1NvbWFsaScsXG4gICAgbmF0aXZlTmFtZTogJ1Nvb21hYWxpZ2EnLFxuICB9LFxuICBzcToge1xuICAgIG5hbWU6ICdBbGJhbmlhbicsXG4gICAgbmF0aXZlTmFtZTogJ1NocWlwJyxcbiAgfSxcbiAgc3I6IHtcbiAgICBuYW1lOiAnU2VyYmlhbicsXG4gICAgbmF0aXZlTmFtZTogJ9GB0YDQv9GB0LrQuCDRmNC10LfQuNC6JyxcbiAgfSxcbiAgc3M6IHtcbiAgICBuYW1lOiAnU3dhdGknLFxuICAgIG5hdGl2ZU5hbWU6ICdTaVN3YXRpJyxcbiAgfSxcbiAgc3Q6IHtcbiAgICBuYW1lOiAnU291dGhlcm4gU290aG8nLFxuICAgIG5hdGl2ZU5hbWU6ICdTZXNvdGhvJyxcbiAgfSxcbiAgc3U6IHtcbiAgICBuYW1lOiAnU3VuZGFuZXNlJyxcbiAgICBuYXRpdmVOYW1lOiAnQmFzYSBTdW5kYScsXG4gIH0sXG4gIHN2OiB7XG4gICAgbmFtZTogJ1N3ZWRpc2gnLFxuICAgIG5hdGl2ZU5hbWU6ICdTdmVuc2thJyxcbiAgfSxcbiAgc3c6IHtcbiAgICBuYW1lOiAnU3dhaGlsaScsXG4gICAgbmF0aXZlTmFtZTogJ0tpc3dhaGlsaScsXG4gIH0sXG4gIHRhOiB7XG4gICAgbmFtZTogJ1RhbWlsJyxcbiAgICBuYXRpdmVOYW1lOiAn4K6k4K6u4K6/4K604K+NJyxcbiAgfSxcbiAgdGU6IHtcbiAgICBuYW1lOiAnVGVsdWd1JyxcbiAgICBuYXRpdmVOYW1lOiAn4LCk4LGG4LCy4LGB4LCX4LGBJyxcbiAgfSxcbiAgdGc6IHtcbiAgICBuYW1lOiAnVGFqaWsnLFxuICAgIG5hdGl2ZU5hbWU6ICfRgtC+0rfQuNC606MnLFxuICB9LFxuICB0aDoge1xuICAgIG5hbWU6ICdUaGFpJyxcbiAgICBuYXRpdmVOYW1lOiAn4LmE4LiX4LiiJyxcbiAgfSxcbiAgdGk6IHtcbiAgICBuYW1lOiAnVGlncmlueWEnLFxuICAgIG5hdGl2ZU5hbWU6ICfhibXhjI3hiK3hipsnLFxuICB9LFxuICB0azoge1xuICAgIG5hbWU6ICdUdXJrbWVuJyxcbiAgICBuYXRpdmVOYW1lOiAnVMO8cmttZW7Dp2UnLFxuICB9LFxuICB0bDoge1xuICAgIG5hbWU6ICdUYWdhbG9nJyxcbiAgICBuYXRpdmVOYW1lOiAnV2lrYW5nIFRhZ2Fsb2cnLFxuICB9LFxuICB0bjoge1xuICAgIG5hbWU6ICdUc3dhbmEnLFxuICAgIG5hdGl2ZU5hbWU6ICdTZXRzd2FuYScsXG4gIH0sXG4gIHRvOiB7XG4gICAgbmFtZTogJ1RvbmdhJyxcbiAgICBuYXRpdmVOYW1lOiAnZmFrYSBUb25nYScsXG4gIH0sXG4gIHRyOiB7XG4gICAgbmFtZTogJ1R1cmtpc2gnLFxuICAgIG5hdGl2ZU5hbWU6ICdUw7xya8OnZScsXG4gIH0sXG4gIHRzOiB7XG4gICAgbmFtZTogJ1Rzb25nYScsXG4gICAgbmF0aXZlTmFtZTogJ1hpdHNvbmdhJyxcbiAgfSxcbiAgdHQ6IHtcbiAgICBuYW1lOiAnVGF0YXInLFxuICAgIG5hdGl2ZU5hbWU6ICfRgtCw0YLQsNGAINGC0LXQu9C1JyxcbiAgfSxcbiAgdHc6IHtcbiAgICBuYW1lOiAnVHdpJyxcbiAgICBuYXRpdmVOYW1lOiAnVHdpJyxcbiAgfSxcbiAgdHk6IHtcbiAgICBuYW1lOiAnVGFoaXRpYW4nLFxuICAgIG5hdGl2ZU5hbWU6ICdSZW8gVGFoaXRpJyxcbiAgfSxcbiAgdWc6IHtcbiAgICBuYW1lOiAnVXlnaHVyJyxcbiAgICBuYXRpdmVOYW1lOiAn2Kbbh9mK2Lrbh9ix2obbleKAjicsXG4gIH0sXG4gIHVrOiB7XG4gICAgbmFtZTogJ1VrcmFpbmlhbicsXG4gICAgbmF0aXZlTmFtZTogJ9Cj0LrRgNCw0ZfQvdGB0YzQutCwJyxcbiAgfSxcbiAgdXI6IHtcbiAgICBuYW1lOiAnVXJkdScsXG4gICAgbmF0aXZlTmFtZTogJ9in2LHYr9mIJyxcbiAgfSxcbiAgdXo6IHtcbiAgICBuYW1lOiAnVXpiZWsnLFxuICAgIG5hdGl2ZU5hbWU6ICfQjtC30LHQtdC6JyxcbiAgfSxcbiAgdmU6IHtcbiAgICBuYW1lOiAnVmVuZGEnLFxuICAgIG5hdGl2ZU5hbWU6ICdUc2hpdmVu4biTYScsXG4gIH0sXG4gIHZpOiB7XG4gICAgbmFtZTogJ1ZpZXRuYW1lc2UnLFxuICAgIG5hdGl2ZU5hbWU6ICdUaeG6v25nIFZp4buHdCcsXG4gIH0sXG4gIHZvOiB7XG4gICAgbmFtZTogJ1ZvbGFww7xrJyxcbiAgICBuYXRpdmVOYW1lOiAnVm9sYXDDvGsnLFxuICB9LFxuICB3YToge1xuICAgIG5hbWU6ICdXYWxsb29uJyxcbiAgICBuYXRpdmVOYW1lOiAnd2Fsb24nLFxuICB9LFxuICB3bzoge1xuICAgIG5hbWU6ICdXb2xvZicsXG4gICAgbmF0aXZlTmFtZTogJ1dvbGxvZicsXG4gIH0sXG4gIHhoOiB7XG4gICAgbmFtZTogJ1hob3NhJyxcbiAgICBuYXRpdmVOYW1lOiAnaXNpWGhvc2EnLFxuICB9LFxuICB5aToge1xuICAgIG5hbWU6ICdZaWRkaXNoJyxcbiAgICBuYXRpdmVOYW1lOiAn15nXmda015PXmdepJyxcbiAgfSxcbiAgeW86IHtcbiAgICBuYW1lOiAnWW9ydWJhJyxcbiAgICBuYXRpdmVOYW1lOiAnWW9yw7liw6EnLFxuICB9LFxuICB6YToge1xuICAgIG5hbWU6ICdaaHVhbmcnLFxuICAgIG5hdGl2ZU5hbWU6ICdTYcmvIGN1ZcWLxoUnLFxuICB9LFxuICB6aDoge1xuICAgIG5hbWU6ICdDaGluZXNlJyxcbiAgICBuYXRpdmVOYW1lOiAn5Lit5paHJyxcbiAgfSxcbiAgenU6IHtcbiAgICBuYW1lOiAnWnVsdScsXG4gICAgbmF0aXZlTmFtZTogJ2lzaVp1bHUnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTEFOR1VBR0VTX0xJU1Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/iso-639-1/src/data.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/iso-639-1/src/index.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/iso-639-1/src/index.js ***!
|
||
\*********************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ISO6391; });\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./data */ \"./node_modules/iso-639-1/src/data.js\");\n\n\nclass ISO6391 {\n static getLanguages(codes = []) {\n return codes.map(code => ({\n code,\n name: ISO6391.getName(code),\n nativeName: ISO6391.getNativeName(code),\n }));\n }\n\n static getName(code) {\n return ISO6391.validate(code) ? _data__WEBPACK_IMPORTED_MODULE_0__[\"default\"][code].name : '';\n }\n\n static getAllNames() {\n return Object.values(_data__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).map(l => l.name);\n }\n\n static getNativeName(code) {\n return ISO6391.validate(code) ? _data__WEBPACK_IMPORTED_MODULE_0__[\"default\"][code].nativeName : '';\n }\n\n static getAllNativeNames() {\n return Object.values(_data__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).map(l => l.nativeName);\n }\n\n static getCode(name) {\n const code = Object.keys(_data__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).find(code => {\n const language = _data__WEBPACK_IMPORTED_MODULE_0__[\"default\"][code];\n\n return (\n language.name.toLowerCase() === name.toLowerCase() ||\n language.nativeName.toLowerCase() === name.toLowerCase()\n );\n });\n return code || '';\n }\n\n static getAllCodes() {\n return Object.keys(_data__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n }\n\n static validate(code) {\n return _data__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasOwnProperty(code);\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaXNvLTYzOS0xL3NyYy9pbmRleC5qcz8wNTRkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFvQzs7QUFFckI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0Esb0NBQW9DLDZDQUFjO0FBQ2xEOztBQUVBO0FBQ0EseUJBQXlCLDZDQUFjO0FBQ3ZDOztBQUVBO0FBQ0Esb0NBQW9DLDZDQUFjO0FBQ2xEOztBQUVBO0FBQ0EseUJBQXlCLDZDQUFjO0FBQ3ZDOztBQUVBO0FBQ0EsNkJBQTZCLDZDQUFjO0FBQzNDLHVCQUF1Qiw2Q0FBYzs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qiw2Q0FBYztBQUNyQzs7QUFFQTtBQUNBLFdBQVcsNkNBQWM7QUFDekI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pc28tNjM5LTEvc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExBTkdVQUdFU19MSVNUIGZyb20gJy4vZGF0YSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElTTzYzOTEge1xuICBzdGF0aWMgZ2V0TGFuZ3VhZ2VzKGNvZGVzID0gW10pIHtcbiAgICByZXR1cm4gY29kZXMubWFwKGNvZGUgPT4gKHtcbiAgICAgIGNvZGUsXG4gICAgICBuYW1lOiBJU082MzkxLmdldE5hbWUoY29kZSksXG4gICAgICBuYXRpdmVOYW1lOiBJU082MzkxLmdldE5hdGl2ZU5hbWUoY29kZSksXG4gICAgfSkpO1xuICB9XG5cbiAgc3RhdGljIGdldE5hbWUoY29kZSkge1xuICAgIHJldHVybiBJU082MzkxLnZhbGlkYXRlKGNvZGUpID8gTEFOR1VBR0VTX0xJU1RbY29kZV0ubmFtZSA6ICcnO1xuICB9XG5cbiAgc3RhdGljIGdldEFsbE5hbWVzKCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKExBTkdVQUdFU19MSVNUKS5tYXAobCA9PiBsLm5hbWUpO1xuICB9XG5cbiAgc3RhdGljIGdldE5hdGl2ZU5hbWUoY29kZSkge1xuICAgIHJldHVybiBJU082MzkxLnZhbGlkYXRlKGNvZGUpID8gTEFOR1VBR0VTX0xJU1RbY29kZV0ubmF0aXZlTmFtZSA6ICcnO1xuICB9XG5cbiAgc3RhdGljIGdldEFsbE5hdGl2ZU5hbWVzKCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKExBTkdVQUdFU19MSVNUKS5tYXAobCA9PiBsLm5hdGl2ZU5hbWUpO1xuICB9XG5cbiAgc3RhdGljIGdldENvZGUobmFtZSkge1xuICAgIGNvbnN0IGNvZGUgPSBPYmplY3Qua2V5cyhMQU5HVUFHRVNfTElTVCkuZmluZChjb2RlID0+IHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlID0gTEFOR1VBR0VTX0xJU1RbY29kZV07XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIGxhbmd1YWdlLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICAgIGxhbmd1YWdlLm5hdGl2ZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBjb2RlIHx8ICcnO1xuICB9XG5cbiAgc3RhdGljIGdldEFsbENvZGVzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhMQU5HVUFHRVNfTElTVCk7XG4gIH1cblxuICBzdGF0aWMgdmFsaWRhdGUoY29kZSkge1xuICAgIHJldHVybiBMQU5HVUFHRVNfTElTVC5oYXNPd25Qcm9wZXJ0eShjb2RlKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/iso-639-1/src/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/js-cookie/dist/js.cookie.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/js-cookie/dist/js.cookie.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/*! js-cookie v3.0.1 | MIT */\n;\n(function (global, factory) {\n true ? module.exports = factory() :\n undefined;\n}(this, (function () { 'use strict';\n\n /* eslint-disable no-var */\n function assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n }\n /* eslint-enable no-var */\n\n /* eslint-disable no-var */\n var defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n };\n /* eslint-enable no-var */\n\n /* eslint-disable no-var */\n\n function init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n }\n\n var api = init(defaultConverter, { path: '/' });\n /* eslint-enable no-var */\n\n return api;\n\n})));\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvanMtY29va2llL2Rpc3QvanMuY29va2llLmpzPzg1MmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSxLQUE0RDtBQUM5RCxFQUFFLFNBS0s7QUFDUCxDQUFDLHFCQUFxQjs7QUFFdEI7QUFDQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsRUFBRTtBQUN4QyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1RUFBdUU7QUFDdkU7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBLHlFQUF5RTtBQUN6RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBLHFCQUFxQixvQkFBb0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBLCtDQUErQztBQUMvQyxTQUFTO0FBQ1Q7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQSxPQUFPO0FBQ1A7QUFDQSxxQkFBcUIsMENBQTBDO0FBQy9ELG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DLFlBQVk7QUFDaEQ7O0FBRUE7O0FBRUEsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9qcy1jb29raWUvZGlzdC9qcy5jb29raWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiEganMtY29va2llIHYzLjAuMSB8IE1JVCAqL1xuO1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAoZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBnbG9iYWwuQ29va2llcztcbiAgICB2YXIgZXhwb3J0cyA9IGdsb2JhbC5Db29raWVzID0gZmFjdG9yeSgpO1xuICAgIGV4cG9ydHMubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsgZ2xvYmFsLkNvb2tpZXMgPSBjdXJyZW50OyByZXR1cm4gZXhwb3J0czsgfTtcbiAgfSgpKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBuby12YXIgKi9cbiAgZnVuY3Rpb24gYXNzaWduICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldFxuICB9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tdmFyICovXG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdmFyICovXG4gIHZhciBkZWZhdWx0Q29udmVydGVyID0ge1xuICAgIHJlYWQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlWzBdID09PSAnXCInKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyglW1xcZEEtRl17Mn0pKy9naSwgZGVjb2RlVVJJQ29tcG9uZW50KVxuICAgIH0sXG4gICAgd3JpdGU6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkucmVwbGFjZShcbiAgICAgICAgLyUoMlszNDZCRl18M1tBQy1GXXw0MHw1W0JERV18NjB8N1tCQ0RdKS9nLFxuICAgICAgICBkZWNvZGVVUklDb21wb25lbnRcbiAgICAgIClcbiAgICB9XG4gIH07XG4gIC8qIGVzbGludC1lbmFibGUgbm8tdmFyICovXG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdmFyICovXG5cbiAgZnVuY3Rpb24gaW5pdCAoY29udmVydGVyLCBkZWZhdWx0QXR0cmlidXRlcykge1xuICAgIGZ1bmN0aW9uIHNldCAoa2V5LCB2YWx1ZSwgYXR0cmlidXRlcykge1xuICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGF0dHJpYnV0ZXMgPSBhc3NpZ24oe30sIGRlZmF1bHRBdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTtcblxuICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLmV4cGlyZXMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGF0dHJpYnV0ZXMuZXhwaXJlcyA9IG5ldyBEYXRlKERhdGUubm93KCkgKyBhdHRyaWJ1dGVzLmV4cGlyZXMgKiA4NjRlNSk7XG4gICAgICB9XG4gICAgICBpZiAoYXR0cmlidXRlcy5leHBpcmVzKSB7XG4gICAgICAgIGF0dHJpYnV0ZXMuZXhwaXJlcyA9IGF0dHJpYnV0ZXMuZXhwaXJlcy50b1VUQ1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBrZXkgPSBlbmNvZGVVUklDb21wb25lbnQoa2V5KVxuICAgICAgICAucmVwbGFjZSgvJSgyWzM0NkJdfDVFfDYwfDdDKS9nLCBkZWNvZGVVUklDb21wb25lbnQpXG4gICAgICAgIC5yZXBsYWNlKC9bKCldL2csIGVzY2FwZSk7XG5cbiAgICAgIHZhciBzdHJpbmdpZmllZEF0dHJpYnV0ZXMgPSAnJztcbiAgICAgIGZvciAodmFyIGF0dHJpYnV0ZU5hbWUgaW4gYXR0cmlidXRlcykge1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0pIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgc3RyaW5naWZpZWRBdHRyaWJ1dGVzICs9ICc7ICcgKyBhdHRyaWJ1dGVOYW1lO1xuXG4gICAgICAgIGlmIChhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdID09PSB0cnVlKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnNpZGVycyBSRkMgNjI2NSBzZWN0aW9uIDUuMjpcbiAgICAgICAgLy8gLi4uXG4gICAgICAgIC8vIDMuICBJZiB0aGUgcmVtYWluaW5nIHVucGFyc2VkLWF0dHJpYnV0ZXMgY29udGFpbnMgYSAleDNCIChcIjtcIilcbiAgICAgICAgLy8gICAgIGNoYXJhY3RlcjpcbiAgICAgICAgLy8gQ29uc3VtZSB0aGUgY2hhcmFjdGVycyBvZiB0aGUgdW5wYXJzZWQtYXR0cmlidXRlcyB1cCB0byxcbiAgICAgICAgLy8gbm90IGluY2x1ZGluZywgdGhlIGZpcnN0ICV4M0IgKFwiO1wiKSBjaGFyYWN0ZXIuXG4gICAgICAgIC8vIC4uLlxuICAgICAgICBzdHJpbmdpZmllZEF0dHJpYnV0ZXMgKz0gJz0nICsgYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXS5zcGxpdCgnOycpWzBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKGRvY3VtZW50LmNvb2tpZSA9XG4gICAgICAgIGtleSArICc9JyArIGNvbnZlcnRlci53cml0ZSh2YWx1ZSwga2V5KSArIHN0cmluZ2lmaWVkQXR0cmlidXRlcylcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXQgKGtleSkge1xuICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgfHwgKGFyZ3VtZW50cy5sZW5ndGggJiYgIWtleSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFRvIHByZXZlbnQgdGhlIGZvciBsb29wIGluIHRoZSBmaXJzdCBwbGFjZSBhc3NpZ24gYW4gZW1wdHkgYXJyYXlcbiAgICAgIC8vIGluIGNhc2UgdGhlcmUgYXJlIG5vIGNvb2tpZXMgYXQgYWxsLlxuICAgICAgdmFyIGNvb2tpZXMgPSBkb2N1bWVudC5jb29raWUgPyBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsgJykgOiBbXTtcbiAgICAgIHZhciBqYXIgPSB7fTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29va2llcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcGFydHMgPSBjb29raWVzW2ldLnNwbGl0KCc9Jyk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oJz0nKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBmb3VuZEtleSA9IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0c1swXSk7XG4gICAgICAgICAgamFyW2ZvdW5kS2V5XSA9IGNvbnZlcnRlci5yZWFkKHZhbHVlLCBmb3VuZEtleSk7XG5cbiAgICAgICAgICBpZiAoa2V5ID09PSBmb3VuZEtleSkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBrZXkgPyBqYXJba2V5XSA6IGphclxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QuY3JlYXRlKFxuICAgICAge1xuICAgICAgICBzZXQ6IHNldCxcbiAgICAgICAgZ2V0OiBnZXQsXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKGtleSwgYXR0cmlidXRlcykge1xuICAgICAgICAgIHNldChcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgYXNzaWduKHt9LCBhdHRyaWJ1dGVzLCB7XG4gICAgICAgICAgICAgIGV4cGlyZXM6IC0xXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHdpdGhBdHRyaWJ1dGVzOiBmdW5jdGlvbiAoYXR0cmlidXRlcykge1xuICAgICAgICAgIHJldHVybiBpbml0KHRoaXMuY29udmVydGVyLCBhc3NpZ24oe30sIHRoaXMuYXR0cmlidXRlcywgYXR0cmlidXRlcykpXG4gICAgICAgIH0sXG4gICAgICAgIHdpdGhDb252ZXJ0ZXI6IGZ1bmN0aW9uIChjb252ZXJ0ZXIpIHtcbiAgICAgICAgICByZXR1cm4gaW5pdChhc3NpZ24oe30sIHRoaXMuY29udmVydGVyLCBjb252ZXJ0ZXIpLCB0aGlzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgdmFsdWU6IE9iamVjdC5mcmVlemUoZGVmYXVsdEF0dHJpYnV0ZXMpIH0sXG4gICAgICAgIGNvbnZlcnRlcjogeyB2YWx1ZTogT2JqZWN0LmZyZWV6ZShjb252ZXJ0ZXIpIH1cbiAgICAgIH1cbiAgICApXG4gIH1cblxuICB2YXIgYXBpID0gaW5pdChkZWZhdWx0Q29udmVydGVyLCB7IHBhdGg6ICcvJyB9KTtcbiAgLyogZXNsaW50LWVuYWJsZSBuby12YXIgKi9cblxuICByZXR1cm4gYXBpO1xuXG59KSkpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/js-cookie/dist/js.cookie.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/localforage/dist/localforage.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/localforage/dist/localforage.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9jYWxmb3JhZ2UvZGlzdC9sb2NhbGZvcmFnZS5qcz9hMDAyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQTJELG1CQUFtQixnREFBZ0QsYUFBYSxLQUFLLE1BQU0sZ0NBQWdDLFNBQVMscUNBQXFDLFNBQVMsbUNBQW1DLE9BQU8sS0FBSyxPQUFPLHFCQUFxQixhQUFhLDBCQUEwQiwwQkFBMEIsZ0JBQWdCLFVBQVUsVUFBVSwwQ0FBMEMsd0JBQXdCLG9CQUFvQiw4Q0FBOEMscUNBQXFDLFlBQVksWUFBWSxtQ0FBbUMsaUJBQWlCLGdCQUFnQixzQkFBc0Isb0JBQW9CLDBDQUEwQyxZQUFZLFdBQVcsWUFBWSxTQUFTLEdBQUc7QUFDbHpCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDLHFJQUFxSTtBQUN0SSxDQUFDLEdBQUc7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsQ0FBQyxFQUFFLE1BQU07QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUMscUlBQXFJO0FBQ3RJLENBQUMsRUFBRSxNQUFNO0FBQ1Q7O0FBRUEsb0dBQW9HLG1CQUFtQixFQUFFLG1CQUFtQiw4SEFBOEg7O0FBRTFRLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wscUJBQXFCO0FBQ3JCLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyx5QkFBeUI7QUFDN0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9CQUFvQjtBQUMzQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsOEJBQThCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9CQUFvQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9CQUFvQjtBQUMvQztBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCLG9CQUFvQjtBQUNuRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0EsbUNBQW1DLG9CQUFvQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsbUdBQW1HO0FBQ25HO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLCtCQUErQixvQkFBb0I7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSxtQ0FBbUMsb0JBQW9CO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLG1HQUFtRztBQUNuRztBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLGtCQUFrQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsaUJBQWlCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsWUFBWTtBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQSx5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1DQUFtQyx5QkFBeUI7QUFDNUQ7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQix5QkFBeUI7QUFDeEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBLDBFQUEwRSxTQUFTO0FBQ25GO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZDQUE2QyxRQUFRO0FBQ3JEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsWUFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixZQUFZO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVCxpREFBaUQsUUFBUTtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVDQUF1QztBQUN2QyxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtRUFBbUU7QUFDbkU7O0FBRUEsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2RUFBNkU7O0FBRTdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJEQUEyRCxTQUFTO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlFQUF5RSxXQUFXO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDLFNBQVM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxTQUFTO0FBQzdEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7OztBQUdBOztBQUVBOztBQUVBLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRztBQUNkLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9jYWxmb3JhZ2UvZGlzdC9sb2NhbGZvcmFnZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICAgIGxvY2FsRm9yYWdlIC0tIE9mZmxpbmUgU3RvcmFnZSwgSW1wcm92ZWRcbiAgICBWZXJzaW9uIDEuMTAuMFxuICAgIGh0dHBzOi8vbG9jYWxmb3JhZ2UuZ2l0aHViLmlvL2xvY2FsRm9yYWdlXG4gICAgKGMpIDIwMTMtMjAxNyBNb3ppbGxhLCBBcGFjaGUgTGljZW5zZSAyLjBcbiovXG4oZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlIT09XCJ1bmRlZmluZWRcIil7bW9kdWxlLmV4cG9ydHM9ZigpfWVsc2UgaWYodHlwZW9mIGRlZmluZT09PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZCl7ZGVmaW5lKFtdLGYpfWVsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PVwidW5kZWZpbmVkXCIpe2c9Z2xvYmFsfWVsc2UgaWYodHlwZW9mIHNlbGYhPT1cInVuZGVmaW5lZFwiKXtnPXNlbGZ9ZWxzZXtnPXRoaXN9Zy5sb2NhbGZvcmFnZSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyAoZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLCBmKX12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbid1c2Ugc3RyaWN0JztcbnZhciBNdXRhdGlvbiA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuXG52YXIgc2NoZWR1bGVEcmFpbjtcblxue1xuICBpZiAoTXV0YXRpb24pIHtcbiAgICB2YXIgY2FsbGVkID0gMDtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb24obmV4dFRpY2spO1xuICAgIHZhciBlbGVtZW50ID0gZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHtcbiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWVcbiAgICB9KTtcbiAgICBzY2hlZHVsZURyYWluID0gZnVuY3Rpb24gKCkge1xuICAgICAgZWxlbWVudC5kYXRhID0gKGNhbGxlZCA9ICsrY2FsbGVkICUgMik7XG4gICAgfTtcbiAgfSBlbHNlIGlmICghZ2xvYmFsLnNldEltbWVkaWF0ZSAmJiB0eXBlb2YgZ2xvYmFsLk1lc3NhZ2VDaGFubmVsICE9PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBjaGFubmVsID0gbmV3IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbCgpO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbmV4dFRpY2s7XG4gICAgc2NoZWR1bGVEcmFpbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoMCk7XG4gICAgfTtcbiAgfSBlbHNlIGlmICgnZG9jdW1lbnQnIGluIGdsb2JhbCAmJiAnb25yZWFkeXN0YXRlY2hhbmdlJyBpbiBnbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBzY2hlZHVsZURyYWluID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAvLyBDcmVhdGUgYSA8c2NyaXB0PiBlbGVtZW50OyBpdHMgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCB3aWxsIGJlIGZpcmVkIGFzeW5jaHJvbm91c2x5IG9uY2UgaXQgaXMgaW5zZXJ0ZWRcbiAgICAgIC8vIGludG8gdGhlIGRvY3VtZW50LiBEbyBzbywgdGh1cyBxdWV1aW5nIHVwIHRoZSB0YXNrLiBSZW1lbWJlciB0byBjbGVhbiB1cCBvbmNlIGl0J3MgYmVlbiBjYWxsZWQuXG4gICAgICB2YXIgc2NyaXB0RWwgPSBnbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzY3JpcHRFbC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG5leHRUaWNrKCk7XG5cbiAgICAgICAgc2NyaXB0RWwub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgc2NyaXB0RWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHRFbCk7XG4gICAgICAgIHNjcmlwdEVsID0gbnVsbDtcbiAgICAgIH07XG4gICAgICBnbG9iYWwuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdEVsKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHNjaGVkdWxlRHJhaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRUaW1lb3V0KG5leHRUaWNrLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbnZhciBkcmFpbmluZztcbnZhciBxdWV1ZSA9IFtdO1xuLy9uYW1lZCBuZXh0VGljayBmb3IgbGVzcyBjb25mdXNpbmcgc3RhY2sgdHJhY2VzXG5mdW5jdGlvbiBuZXh0VGljaygpIHtcbiAgZHJhaW5pbmcgPSB0cnVlO1xuICB2YXIgaSwgb2xkUXVldWU7XG4gIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gIHdoaWxlIChsZW4pIHtcbiAgICBvbGRRdWV1ZSA9IHF1ZXVlO1xuICAgIHF1ZXVlID0gW107XG4gICAgaSA9IC0xO1xuICAgIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICAgIG9sZFF1ZXVlW2ldKCk7XG4gICAgfVxuICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgfVxuICBkcmFpbmluZyA9IGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGltbWVkaWF0ZTtcbmZ1bmN0aW9uIGltbWVkaWF0ZSh0YXNrKSB7XG4gIGlmIChxdWV1ZS5wdXNoKHRhc2spID09PSAxICYmICFkcmFpbmluZykge1xuICAgIHNjaGVkdWxlRHJhaW4oKTtcbiAgfVxufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xudmFyIGltbWVkaWF0ZSA9IF9kZXJlcV8oMSk7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBJTlRFUk5BTCgpIHt9XG5cbnZhciBoYW5kbGVycyA9IHt9O1xuXG52YXIgUkVKRUNURUQgPSBbJ1JFSkVDVEVEJ107XG52YXIgRlVMRklMTEVEID0gWydGVUxGSUxMRUQnXTtcbnZhciBQRU5ESU5HID0gWydQRU5ESU5HJ107XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcblxuZnVuY3Rpb24gUHJvbWlzZShyZXNvbHZlcikge1xuICBpZiAodHlwZW9mIHJlc29sdmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVzb2x2ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IFBFTkRJTkc7XG4gIHRoaXMucXVldWUgPSBbXTtcbiAgdGhpcy5vdXRjb21lID0gdm9pZCAwO1xuICBpZiAocmVzb2x2ZXIgIT09IElOVEVSTkFMKSB7XG4gICAgc2FmZWx5UmVzb2x2ZVRoZW5hYmxlKHRoaXMsIHJlc29sdmVyKTtcbiAgfVxufVxuXG5Qcm9taXNlLnByb3RvdHlwZVtcImNhdGNoXCJdID0gZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07XG5Qcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24gKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gIGlmICh0eXBlb2Ygb25GdWxmaWxsZWQgIT09ICdmdW5jdGlvbicgJiYgdGhpcy5zdGF0ZSA9PT0gRlVMRklMTEVEIHx8XG4gICAgdHlwZW9mIG9uUmVqZWN0ZWQgIT09ICdmdW5jdGlvbicgJiYgdGhpcy5zdGF0ZSA9PT0gUkVKRUNURUQpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB2YXIgcHJvbWlzZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKElOVEVSTkFMKTtcbiAgaWYgKHRoaXMuc3RhdGUgIT09IFBFTkRJTkcpIHtcbiAgICB2YXIgcmVzb2x2ZXIgPSB0aGlzLnN0YXRlID09PSBGVUxGSUxMRUQgPyBvbkZ1bGZpbGxlZCA6IG9uUmVqZWN0ZWQ7XG4gICAgdW53cmFwKHByb21pc2UsIHJlc29sdmVyLCB0aGlzLm91dGNvbWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMucXVldWUucHVzaChuZXcgUXVldWVJdGVtKHByb21pc2UsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSk7XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG5mdW5jdGlvbiBRdWV1ZUl0ZW0ocHJvbWlzZSwgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgaWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMub25GdWxmaWxsZWQgPSBvbkZ1bGZpbGxlZDtcbiAgICB0aGlzLmNhbGxGdWxmaWxsZWQgPSB0aGlzLm90aGVyQ2FsbEZ1bGZpbGxlZDtcbiAgfVxuICBpZiAodHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSBvblJlamVjdGVkO1xuICAgIHRoaXMuY2FsbFJlamVjdGVkID0gdGhpcy5vdGhlckNhbGxSZWplY3RlZDtcbiAgfVxufVxuUXVldWVJdGVtLnByb3RvdHlwZS5jYWxsRnVsZmlsbGVkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGhhbmRsZXJzLnJlc29sdmUodGhpcy5wcm9taXNlLCB2YWx1ZSk7XG59O1xuUXVldWVJdGVtLnByb3RvdHlwZS5vdGhlckNhbGxGdWxmaWxsZWQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdW53cmFwKHRoaXMucHJvbWlzZSwgdGhpcy5vbkZ1bGZpbGxlZCwgdmFsdWUpO1xufTtcblF1ZXVlSXRlbS5wcm90b3R5cGUuY2FsbFJlamVjdGVkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGhhbmRsZXJzLnJlamVjdCh0aGlzLnByb21pc2UsIHZhbHVlKTtcbn07XG5RdWV1ZUl0ZW0ucHJvdG90eXBlLm90aGVyQ2FsbFJlamVjdGVkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHVud3JhcCh0aGlzLnByb21pc2UsIHRoaXMub25SZWplY3RlZCwgdmFsdWUpO1xufTtcblxuZnVuY3Rpb24gdW53cmFwKHByb21pc2UsIGZ1bmMsIHZhbHVlKSB7XG4gIGltbWVkaWF0ZShmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJldHVyblZhbHVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm5WYWx1ZSA9IGZ1bmModmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBoYW5kbGVycy5yZWplY3QocHJvbWlzZSwgZSk7XG4gICAgfVxuICAgIGlmIChyZXR1cm5WYWx1ZSA9PT0gcHJvbWlzZSkge1xuICAgICAgaGFuZGxlcnMucmVqZWN0KHByb21pc2UsIG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCByZXNvbHZlIHByb21pc2Ugd2l0aCBpdHNlbGYnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXJzLnJlc29sdmUocHJvbWlzZSwgcmV0dXJuVmFsdWUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmhhbmRsZXJzLnJlc29sdmUgPSBmdW5jdGlvbiAoc2VsZiwgdmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IHRyeUNhdGNoKGdldFRoZW4sIHZhbHVlKTtcbiAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICByZXR1cm4gaGFuZGxlcnMucmVqZWN0KHNlbGYsIHJlc3VsdC52YWx1ZSk7XG4gIH1cbiAgdmFyIHRoZW5hYmxlID0gcmVzdWx0LnZhbHVlO1xuXG4gIGlmICh0aGVuYWJsZSkge1xuICAgIHNhZmVseVJlc29sdmVUaGVuYWJsZShzZWxmLCB0aGVuYWJsZSk7XG4gIH0gZWxzZSB7XG4gICAgc2VsZi5zdGF0ZSA9IEZVTEZJTExFRDtcbiAgICBzZWxmLm91dGNvbWUgPSB2YWx1ZTtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHZhciBsZW4gPSBzZWxmLnF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgICBzZWxmLnF1ZXVlW2ldLmNhbGxGdWxmaWxsZWQodmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VsZjtcbn07XG5oYW5kbGVycy5yZWplY3QgPSBmdW5jdGlvbiAoc2VsZiwgZXJyb3IpIHtcbiAgc2VsZi5zdGF0ZSA9IFJFSkVDVEVEO1xuICBzZWxmLm91dGNvbWUgPSBlcnJvcjtcbiAgdmFyIGkgPSAtMTtcbiAgdmFyIGxlbiA9IHNlbGYucXVldWUubGVuZ3RoO1xuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgc2VsZi5xdWV1ZVtpXS5jYWxsUmVqZWN0ZWQoZXJyb3IpO1xuICB9XG4gIHJldHVybiBzZWxmO1xufTtcblxuZnVuY3Rpb24gZ2V0VGhlbihvYmopIHtcbiAgLy8gTWFrZSBzdXJlIHdlIG9ubHkgYWNjZXNzIHRoZSBhY2Nlc3NvciBvbmNlIGFzIHJlcXVpcmVkIGJ5IHRoZSBzcGVjXG4gIHZhciB0aGVuID0gb2JqICYmIG9iai50aGVuO1xuICBpZiAob2JqICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSAmJiB0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmdW5jdGlvbiBhcHB5VGhlbigpIHtcbiAgICAgIHRoZW4uYXBwbHkob2JqLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gc2FmZWx5UmVzb2x2ZVRoZW5hYmxlKHNlbGYsIHRoZW5hYmxlKSB7XG4gIC8vIEVpdGhlciBmdWxmaWxsLCByZWplY3Qgb3IgcmVqZWN0IHdpdGggZXJyb3JcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBvbkVycm9yKHZhbHVlKSB7XG4gICAgaWYgKGNhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIGhhbmRsZXJzLnJlamVjdChzZWxmLCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBvblN1Y2Nlc3ModmFsdWUpIHtcbiAgICBpZiAoY2FsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbGxlZCA9IHRydWU7XG4gICAgaGFuZGxlcnMucmVzb2x2ZShzZWxmLCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cnlUb1Vud3JhcCgpIHtcbiAgICB0aGVuYWJsZShvblN1Y2Nlc3MsIG9uRXJyb3IpO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHRyeUNhdGNoKHRyeVRvVW53cmFwKTtcbiAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICBvbkVycm9yKHJlc3VsdC52YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJ5Q2F0Y2goZnVuYywgdmFsdWUpIHtcbiAgdmFyIG91dCA9IHt9O1xuICB0cnkge1xuICAgIG91dC52YWx1ZSA9IGZ1bmModmFsdWUpO1xuICAgIG91dC5zdGF0dXMgPSAnc3VjY2Vzcyc7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBvdXQuc3RhdHVzID0gJ2Vycm9yJztcbiAgICBvdXQudmFsdWUgPSBlO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cblByb21pc2UucmVzb2x2ZSA9IHJlc29sdmU7XG5mdW5jdGlvbiByZXNvbHZlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHRoaXMpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGhhbmRsZXJzLnJlc29sdmUobmV3IHRoaXMoSU5URVJOQUwpLCB2YWx1ZSk7XG59XG5cblByb21pc2UucmVqZWN0ID0gcmVqZWN0O1xuZnVuY3Rpb24gcmVqZWN0KHJlYXNvbikge1xuICB2YXIgcHJvbWlzZSA9IG5ldyB0aGlzKElOVEVSTkFMKTtcbiAgcmV0dXJuIGhhbmRsZXJzLnJlamVjdChwcm9taXNlLCByZWFzb24pO1xufVxuXG5Qcm9taXNlLmFsbCA9IGFsbDtcbmZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlcmFibGUpICE9PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ211c3QgYmUgYW4gYXJyYXknKSk7XG4gIH1cblxuICB2YXIgbGVuID0gaXRlcmFibGUubGVuZ3RoO1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIGlmICghbGVuKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShbXSk7XG4gIH1cblxuICB2YXIgdmFsdWVzID0gbmV3IEFycmF5KGxlbik7XG4gIHZhciByZXNvbHZlZCA9IDA7XG4gIHZhciBpID0gLTE7XG4gIHZhciBwcm9taXNlID0gbmV3IHRoaXMoSU5URVJOQUwpO1xuXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBhbGxSZXNvbHZlcihpdGVyYWJsZVtpXSwgaSk7XG4gIH1cbiAgcmV0dXJuIHByb21pc2U7XG4gIGZ1bmN0aW9uIGFsbFJlc29sdmVyKHZhbHVlLCBpKSB7XG4gICAgc2VsZi5yZXNvbHZlKHZhbHVlKS50aGVuKHJlc29sdmVGcm9tQWxsLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgIGhhbmRsZXJzLnJlamVjdChwcm9taXNlLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUZyb21BbGwob3V0VmFsdWUpIHtcbiAgICAgIHZhbHVlc1tpXSA9IG91dFZhbHVlO1xuICAgICAgaWYgKCsrcmVzb2x2ZWQgPT09IGxlbiAmJiAhY2FsbGVkKSB7XG4gICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgIGhhbmRsZXJzLnJlc29sdmUocHJvbWlzZSwgdmFsdWVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUHJvbWlzZS5yYWNlID0gcmFjZTtcbmZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXJhYmxlKSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgIHJldHVybiB0aGlzLnJlamVjdChuZXcgVHlwZUVycm9yKCdtdXN0IGJlIGFuIGFycmF5JykpO1xuICB9XG5cbiAgdmFyIGxlbiA9IGl0ZXJhYmxlLmxlbmd0aDtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICBpZiAoIWxlbikge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmUoW10pO1xuICB9XG5cbiAgdmFyIGkgPSAtMTtcbiAgdmFyIHByb21pc2UgPSBuZXcgdGhpcyhJTlRFUk5BTCk7XG5cbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIHJlc29sdmVyKGl0ZXJhYmxlW2ldKTtcbiAgfVxuICByZXR1cm4gcHJvbWlzZTtcbiAgZnVuY3Rpb24gcmVzb2x2ZXIodmFsdWUpIHtcbiAgICBzZWxmLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICBoYW5kbGVycy5yZXNvbHZlKHByb21pc2UsIHJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgIGhhbmRsZXJzLnJlamVjdChwcm9taXNlLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxufSx7XCIxXCI6MX1dLDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xuJ3VzZSBzdHJpY3QnO1xuaWYgKHR5cGVvZiBnbG9iYWwuUHJvbWlzZSAhPT0gJ2Z1bmN0aW9uJykge1xuICBnbG9iYWwuUHJvbWlzZSA9IF9kZXJlcV8oMik7XG59XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCIyXCI6Mn1dLDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIGdldElEQigpIHtcbiAgICAvKiBnbG9iYWwgaW5kZXhlZERCLHdlYmtpdEluZGV4ZWREQixtb3pJbmRleGVkREIsT0luZGV4ZWREQixtc0luZGV4ZWREQiAqL1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5kZXhlZERCICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIGluZGV4ZWREQjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHdlYmtpdEluZGV4ZWREQiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWJraXRJbmRleGVkREI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtb3pJbmRleGVkREIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbW96SW5kZXhlZERCO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgT0luZGV4ZWREQiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBPSW5kZXhlZERCO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbXNJbmRleGVkREIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbXNJbmRleGVkREI7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG59XG5cbnZhciBpZGIgPSBnZXRJREIoKTtcblxuZnVuY3Rpb24gaXNJbmRleGVkREJWYWxpZCgpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBJbml0aWFsaXplIEluZGV4ZWREQjsgZmFsbCBiYWNrIHRvIHZlbmRvci1wcmVmaXhlZCB2ZXJzaW9uc1xuICAgICAgICAvLyBpZiBuZWVkZWQuXG4gICAgICAgIGlmICghaWRiIHx8ICFpZGIub3Blbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlIG1pbWljIFBvdWNoREIgaGVyZTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2UgdGVzdCBmb3Igb3BlbkRhdGFiYXNlIGJlY2F1c2UgSUUgTW9iaWxlIGlkZW50aWZpZXMgaXRzZWxmXG4gICAgICAgIC8vIGFzIFNhZmFyaS4gT2ggdGhlIGx1bHouLi5cbiAgICAgICAgdmFyIGlzU2FmYXJpID0gdHlwZW9mIG9wZW5EYXRhYmFzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgLyhTYWZhcml8aVBob25lfGlQYWR8aVBvZCkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIS9DaHJvbWUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIS9CbGFja0JlcnJ5Ly50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7XG5cbiAgICAgICAgdmFyIGhhc0ZldGNoID0gdHlwZW9mIGZldGNoID09PSAnZnVuY3Rpb24nICYmIGZldGNoLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlJykgIT09IC0xO1xuXG4gICAgICAgIC8vIFNhZmFyaSA8MTAuMSBkb2VzIG5vdCBtZWV0IG91ciByZXF1aXJlbWVudHMgZm9yIElEQiBzdXBwb3J0XG4gICAgICAgIC8vIChzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9wb3VjaGRiL3BvdWNoZGIvaXNzdWVzLzU1NzIpLlxuICAgICAgICAvLyBTYWZhcmkgMTAuMSBzaGlwcGVkIHdpdGggZmV0Y2gsIHdlIGNhbiB1c2UgdGhhdCB0byBkZXRlY3QgaXQuXG4gICAgICAgIC8vIE5vdGU6IHRoaXMgY3JlYXRlcyBpc3N1ZXMgd2l0aCBgd2luZG93LmZldGNoYCBwb2x5ZmlsbHMgYW5kXG4gICAgICAgIC8vIG92ZXJyaWRlczsgc2VlOlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbG9jYWxGb3JhZ2UvbG9jYWxGb3JhZ2UvaXNzdWVzLzg1NlxuICAgICAgICByZXR1cm4gKCFpc1NhZmFyaSB8fCBoYXNGZXRjaCkgJiYgdHlwZW9mIGluZGV4ZWREQiAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgLy8gc29tZSBvdXRkYXRlZCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIHRoYXQgYXBwZWFyIG9uIFNhbXN1bmdcbiAgICAgICAgLy8gYW5kIEhUQyBBbmRyb2lkIGRldmljZXMgPDQuNCBhcmUgbWlzc2luZyBJREJLZXlSYW5nZVxuICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2xvY2FsRm9yYWdlL2lzc3Vlcy8xMjhcbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9sb2NhbEZvcmFnZS9pc3N1ZXMvMjcyXG4gICAgICAgIHR5cGVvZiBJREJLZXlSYW5nZSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG4vLyBBYnN0cmFjdHMgY29uc3RydWN0aW5nIGEgQmxvYiBvYmplY3QsIHNvIGl0IGFsc28gd29ya3MgaW4gb2xkZXJcbi8vIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgbmF0aXZlIEJsb2IgY29uc3RydWN0b3IuIChpLmUuXG4vLyBvbGQgUXRXZWJLaXQgdmVyc2lvbnMsIGF0IGxlYXN0KS5cbi8vIEFic3RyYWN0cyBjb25zdHJ1Y3RpbmcgYSBCbG9iIG9iamVjdCwgc28gaXQgYWxzbyB3b3JrcyBpbiBvbGRlclxuLy8gYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBuYXRpdmUgQmxvYiBjb25zdHJ1Y3Rvci4gKGkuZS5cbi8vIG9sZCBRdFdlYktpdCB2ZXJzaW9ucywgYXQgbGVhc3QpLlxuZnVuY3Rpb24gY3JlYXRlQmxvYihwYXJ0cywgcHJvcGVydGllcykge1xuICAgIC8qIGdsb2JhbCBCbG9iQnVpbGRlcixNU0Jsb2JCdWlsZGVyLE1vekJsb2JCdWlsZGVyLFdlYktpdEJsb2JCdWlsZGVyICovXG4gICAgcGFydHMgPSBwYXJ0cyB8fCBbXTtcbiAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCB7fTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gbmV3IEJsb2IocGFydHMsIHByb3BlcnRpZXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUubmFtZSAhPT0gJ1R5cGVFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIEJ1aWxkZXIgPSB0eXBlb2YgQmxvYkJ1aWxkZXIgIT09ICd1bmRlZmluZWQnID8gQmxvYkJ1aWxkZXIgOiB0eXBlb2YgTVNCbG9iQnVpbGRlciAhPT0gJ3VuZGVmaW5lZCcgPyBNU0Jsb2JCdWlsZGVyIDogdHlwZW9mIE1vekJsb2JCdWlsZGVyICE9PSAndW5kZWZpbmVkJyA/IE1vekJsb2JCdWlsZGVyIDogV2ViS2l0QmxvYkJ1aWxkZXI7XG4gICAgICAgIHZhciBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocGFydHNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidWlsZGVyLmdldEJsb2IocHJvcGVydGllcy50eXBlKTtcbiAgICB9XG59XG5cbi8vIFRoaXMgaXMgQ29tbW9uSlMgYmVjYXVzZSBsaWUgaXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeSwgc28gUm9sbHVwXG4vLyBjYW4ganVzdCBpZ25vcmUgaXQuXG5pZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gSW4gdGhlIFwibm9wcm9taXNlc1wiIGJ1aWxkIHRoaXMgd2lsbCBqdXN0IHRocm93IGlmIHlvdSBkb24ndCBoYXZlXG4gICAgLy8gYSBnbG9iYWwgcHJvbWlzZSBvYmplY3QsIGJ1dCBpdCB3b3VsZCB0aHJvdyBhbnl3YXkgbGF0ZXIuXG4gICAgX2RlcmVxXygzKTtcbn1cbnZhciBQcm9taXNlJDEgPSBQcm9taXNlO1xuXG5mdW5jdGlvbiBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVUd29DYWxsYmFja3MocHJvbWlzZSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHByb21pc2UudGhlbihjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBlcnJvckNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHByb21pc2VbXCJjYXRjaFwiXShlcnJvckNhbGxiYWNrKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUtleShrZXkpIHtcbiAgICAvLyBDYXN0IHRoZSBrZXkgdG8gYSBzdHJpbmcsIGFzIHRoYXQncyBhbGwgd2UgY2FuIHNldCBhcyBhIGtleS5cbiAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGtleSArICcgdXNlZCBhcyBhIGtleSwgYnV0IGl0IGlzIG5vdCBhIHN0cmluZy4nKTtcbiAgICAgICAga2V5ID0gU3RyaW5nKGtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2FsbGJhY2soKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggJiYgdHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgfVxufVxuXG4vLyBTb21lIGNvZGUgb3JpZ2luYWxseSBmcm9tIGFzeW5jX3N0b3JhZ2UuanMgaW5cbi8vIFtHYWlhXShodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS1iMmcvZ2FpYSkuXG5cbnZhciBERVRFQ1RfQkxPQl9TVVBQT1JUX1NUT1JFID0gJ2xvY2FsLWZvcmFnZS1kZXRlY3QtYmxvYi1zdXBwb3J0JztcbnZhciBzdXBwb3J0c0Jsb2JzID0gdm9pZCAwO1xudmFyIGRiQ29udGV4dHMgPSB7fTtcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8vIFRyYW5zYWN0aW9uIE1vZGVzXG52YXIgUkVBRF9PTkxZID0gJ3JlYWRvbmx5JztcbnZhciBSRUFEX1dSSVRFID0gJ3JlYWR3cml0ZSc7XG5cbi8vIFRyYW5zZm9ybSBhIGJpbmFyeSBzdHJpbmcgdG8gYW4gYXJyYXkgYnVmZmVyLCBiZWNhdXNlIG90aGVyd2lzZVxuLy8gd2VpcmQgc3R1ZmYgaGFwcGVucyB3aGVuIHlvdSB0cnkgdG8gd29yayB3aXRoIHRoZSBiaW5hcnkgc3RyaW5nIGRpcmVjdGx5LlxuLy8gSXQgaXMga25vd24uXG4vLyBGcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTQ5Njc2NDcvIChjb250aW51ZXMgb24gbmV4dCBsaW5lKVxuLy8gZW5jb2RlLWRlY29kZS1pbWFnZS13aXRoLWJhc2U2NC1icmVha3MtaW1hZ2UgKDIwMTMtMDQtMjEpXG5mdW5jdGlvbiBfYmluU3RyaW5nVG9BcnJheUJ1ZmZlcihiaW4pIHtcbiAgICB2YXIgbGVuZ3RoID0gYmluLmxlbmd0aDtcbiAgICB2YXIgYnVmID0gbmV3IEFycmF5QnVmZmVyKGxlbmd0aCk7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBhcnJbaV0gPSBiaW4uY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn1cblxuLy9cbi8vIEJsb2JzIGFyZSBub3Qgc3VwcG9ydGVkIGluIGFsbCB2ZXJzaW9ucyBvZiBJbmRleGVkREIsIG5vdGFibHlcbi8vIENocm9tZSA8MzcgYW5kIEFuZHJvaWQgPDUuIEluIHRob3NlIHZlcnNpb25zLCBzdG9yaW5nIGEgYmxvYiB3aWxsIHRocm93LlxuLy9cbi8vIFZhcmlvdXMgb3RoZXIgYmxvYiBidWdzIGV4aXN0IGluIENocm9tZSB2MzctNDIgKGluY2x1c2l2ZSkuXG4vLyBEZXRlY3RpbmcgdGhlbSBpcyBleHBlbnNpdmUgYW5kIGNvbmZ1c2luZyB0byB1c2VycywgYW5kIENocm9tZSAzNy00MlxuLy8gaXMgYXQgdmVyeSBsb3cgdXNhZ2Ugd29ybGR3aWRlLCBzbyB3ZSBkbyBhIGhhY2t5IHVzZXJBZ2VudCBjaGVjayBpbnN0ZWFkLlxuLy9cbi8vIGNvbnRlbnQtdHlwZSBidWc6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00MDgxMjBcbi8vIDQwNCBidWc6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NDc5MTZcbi8vIEZpbGVSZWFkZXIgYnVnOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ3ODM2XG4vL1xuLy8gQ29kZSBib3Jyb3dlZCBmcm9tIFBvdWNoREIuIFNlZTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3VjaGRiL3BvdWNoZGIvYmxvYi9tYXN0ZXIvcGFja2FnZXMvbm9kZV9tb2R1bGVzL3BvdWNoZGItYWRhcHRlci1pZGIvc3JjL2Jsb2JTdXBwb3J0LmpzXG4vL1xuZnVuY3Rpb24gX2NoZWNrQmxvYlN1cHBvcnRXaXRob3V0Q2FjaGluZyhpZGIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICB2YXIgdHhuID0gaWRiLnRyYW5zYWN0aW9uKERFVEVDVF9CTE9CX1NVUFBPUlRfU1RPUkUsIFJFQURfV1JJVEUpO1xuICAgICAgICB2YXIgYmxvYiA9IGNyZWF0ZUJsb2IoWycnXSk7XG4gICAgICAgIHR4bi5vYmplY3RTdG9yZShERVRFQ1RfQkxPQl9TVVBQT1JUX1NUT1JFKS5wdXQoYmxvYiwgJ2tleScpO1xuXG4gICAgICAgIHR4bi5vbmFib3J0ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSB0cmFuc2FjdGlvbiBhYm9ydHMgbm93IGl0cyBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG9cbiAgICAgICAgICAgIC8vIHdyaXRlIHRvIHRoZSBkYXRhYmFzZSwgbGlrZWx5IGR1ZSB0byB0aGUgZGlzayBiZWluZyBmdWxsXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdHhuLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgbWF0Y2hlZENocm9tZSA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgICAgICAgICAgdmFyIG1hdGNoZWRFZGdlID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLy8pO1xuICAgICAgICAgICAgLy8gTVMgRWRnZSBwcmV0ZW5kcyB0byBiZSBDaHJvbWUgNDI6XG4gICAgICAgICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2hoODY5MzAxJTI4dj12cy44NSUyOS5hc3B4XG4gICAgICAgICAgICByZXNvbHZlKG1hdGNoZWRFZGdlIHx8ICFtYXRjaGVkQ2hyb21lIHx8IHBhcnNlSW50KG1hdGNoZWRDaHJvbWVbMV0sIDEwKSA+PSA0Myk7XG4gICAgICAgIH07XG4gICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gZXJyb3IsIHNvIGFzc3VtZSB1bnN1cHBvcnRlZFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBfY2hlY2tCbG9iU3VwcG9ydChpZGIpIHtcbiAgICBpZiAodHlwZW9mIHN1cHBvcnRzQmxvYnMgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoc3VwcG9ydHNCbG9icyk7XG4gICAgfVxuICAgIHJldHVybiBfY2hlY2tCbG9iU3VwcG9ydFdpdGhvdXRDYWNoaW5nKGlkYikudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgc3VwcG9ydHNCbG9icyA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gc3VwcG9ydHNCbG9icztcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gX2RlZmVyUmVhZGluZXNzKGRiSW5mbykge1xuICAgIHZhciBkYkNvbnRleHQgPSBkYkNvbnRleHRzW2RiSW5mby5uYW1lXTtcblxuICAgIC8vIENyZWF0ZSBhIGRlZmVycmVkIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9uLlxuICAgIHZhciBkZWZlcnJlZE9wZXJhdGlvbiA9IHt9O1xuXG4gICAgZGVmZXJyZWRPcGVyYXRpb24ucHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBkZWZlcnJlZE9wZXJhdGlvbi5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgZGVmZXJyZWRPcGVyYXRpb24ucmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuXG4gICAgLy8gRW5xdWV1ZSB0aGUgZGVmZXJyZWQgb3BlcmF0aW9uLlxuICAgIGRiQ29udGV4dC5kZWZlcnJlZE9wZXJhdGlvbnMucHVzaChkZWZlcnJlZE9wZXJhdGlvbik7XG5cbiAgICAvLyBDaGFpbiBpdHMgcHJvbWlzZSB0byB0aGUgZGF0YWJhc2UgcmVhZGluZXNzLlxuICAgIGlmICghZGJDb250ZXh0LmRiUmVhZHkpIHtcbiAgICAgICAgZGJDb250ZXh0LmRiUmVhZHkgPSBkZWZlcnJlZE9wZXJhdGlvbi5wcm9taXNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRiQ29udGV4dC5kYlJlYWR5ID0gZGJDb250ZXh0LmRiUmVhZHkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWRPcGVyYXRpb24ucHJvbWlzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfYWR2YW5jZVJlYWRpbmVzcyhkYkluZm8pIHtcbiAgICB2YXIgZGJDb250ZXh0ID0gZGJDb250ZXh0c1tkYkluZm8ubmFtZV07XG5cbiAgICAvLyBEZXF1ZXVlIGEgZGVmZXJyZWQgb3BlcmF0aW9uLlxuICAgIHZhciBkZWZlcnJlZE9wZXJhdGlvbiA9IGRiQ29udGV4dC5kZWZlcnJlZE9wZXJhdGlvbnMucG9wKCk7XG5cbiAgICAvLyBSZXNvbHZlIGl0cyBwcm9taXNlICh3aGljaCBpcyBwYXJ0IG9mIHRoZSBkYXRhYmFzZSByZWFkaW5lc3NcbiAgICAvLyBjaGFpbiBvZiBwcm9taXNlcykuXG4gICAgaWYgKGRlZmVycmVkT3BlcmF0aW9uKSB7XG4gICAgICAgIGRlZmVycmVkT3BlcmF0aW9uLnJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkT3BlcmF0aW9uLnByb21pc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfcmVqZWN0UmVhZGluZXNzKGRiSW5mbywgZXJyKSB7XG4gICAgdmFyIGRiQ29udGV4dCA9IGRiQ29udGV4dHNbZGJJbmZvLm5hbWVdO1xuXG4gICAgLy8gRGVxdWV1ZSBhIGRlZmVycmVkIG9wZXJhdGlvbi5cbiAgICB2YXIgZGVmZXJyZWRPcGVyYXRpb24gPSBkYkNvbnRleHQuZGVmZXJyZWRPcGVyYXRpb25zLnBvcCgpO1xuXG4gICAgLy8gUmVqZWN0IGl0cyBwcm9taXNlICh3aGljaCBpcyBwYXJ0IG9mIHRoZSBkYXRhYmFzZSByZWFkaW5lc3NcbiAgICAvLyBjaGFpbiBvZiBwcm9taXNlcykuXG4gICAgaWYgKGRlZmVycmVkT3BlcmF0aW9uKSB7XG4gICAgICAgIGRlZmVycmVkT3BlcmF0aW9uLnJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm4gZGVmZXJyZWRPcGVyYXRpb24ucHJvbWlzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIF9nZXRDb25uZWN0aW9uKGRiSW5mbywgdXBncmFkZU5lZWRlZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZGJDb250ZXh0c1tkYkluZm8ubmFtZV0gPSBkYkNvbnRleHRzW2RiSW5mby5uYW1lXSB8fCBjcmVhdGVEYkNvbnRleHQoKTtcblxuICAgICAgICBpZiAoZGJJbmZvLmRiKSB7XG4gICAgICAgICAgICBpZiAodXBncmFkZU5lZWRlZCkge1xuICAgICAgICAgICAgICAgIF9kZWZlclJlYWRpbmVzcyhkYkluZm8pO1xuICAgICAgICAgICAgICAgIGRiSW5mby5kYi5jbG9zZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkYkluZm8uZGIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRiQXJncyA9IFtkYkluZm8ubmFtZV07XG5cbiAgICAgICAgaWYgKHVwZ3JhZGVOZWVkZWQpIHtcbiAgICAgICAgICAgIGRiQXJncy5wdXNoKGRiSW5mby52ZXJzaW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvcGVucmVxID0gaWRiLm9wZW4uYXBwbHkoaWRiLCBkYkFyZ3MpO1xuXG4gICAgICAgIGlmICh1cGdyYWRlTmVlZGVkKSB7XG4gICAgICAgICAgICBvcGVucmVxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRiID0gb3BlbnJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoZGJJbmZvLnN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLm9sZFZlcnNpb24gPD0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkZWQgd2hlbiBzdXBwb3J0IGZvciBibG9iIHNoaW1zIHdhcyBhZGRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoREVURUNUX0JMT0JfU1VQUE9SVF9TVE9SRSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXgubmFtZSA9PT0gJ0NvbnN0cmFpbnRFcnJvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGRhdGFiYXNlIFwiJyArIGRiSW5mby5uYW1lICsgJ1wiJyArICcgaGFzIGJlZW4gdXBncmFkZWQgZnJvbSB2ZXJzaW9uICcgKyBlLm9sZFZlcnNpb24gKyAnIHRvIHZlcnNpb24gJyArIGUubmV3VmVyc2lvbiArICcsIGJ1dCB0aGUgc3RvcmFnZSBcIicgKyBkYkluZm8uc3RvcmVOYW1lICsgJ1wiIGFscmVhZHkgZXhpc3RzLicpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgb3BlbnJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJlamVjdChvcGVucmVxLmVycm9yKTtcbiAgICAgICAgfTtcblxuICAgICAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYiA9IG9wZW5yZXEucmVzdWx0O1xuICAgICAgICAgICAgZGIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgZGF0YWJhc2UgaXMgbW9kaWZpZWQgKGUuZy4gYWRkaW5nIGFuIG9iamVjdFN0b3JlKSBvclxuICAgICAgICAgICAgICAgIC8vIGRlbGV0ZWQgKGV2ZW4gd2hlbiBpbml0aWF0ZWQgYnkgb3RoZXIgc2Vzc2lvbnMgaW4gZGlmZmVyZW50IHRhYnMpLlxuICAgICAgICAgICAgICAgIC8vIENsb3NpbmcgdGhlIGNvbm5lY3Rpb24gaGVyZSBwcmV2ZW50cyB0aG9zZSBvcGVyYXRpb25zIGZyb20gYmVpbmcgYmxvY2tlZC5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaXMgYWNjZXNzZWQgYWdhaW4gbGF0ZXIgYnkgdGhpcyBpbnN0YW5jZSwgdGhlIGNvbm5lY3Rpb25cbiAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHJlb3BlbmVkIG9yIHRoZSBkYXRhYmFzZSByZWNyZWF0ZWQgYXMgbmVlZGVkLlxuICAgICAgICAgICAgICAgIGUudGFyZ2V0LmNsb3NlKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVzb2x2ZShkYik7XG4gICAgICAgICAgICBfYWR2YW5jZVJlYWRpbmVzcyhkYkluZm8pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0T3JpZ2luYWxDb25uZWN0aW9uKGRiSW5mbykge1xuICAgIHJldHVybiBfZ2V0Q29ubmVjdGlvbihkYkluZm8sIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gX2dldFVwZ3JhZGVkQ29ubmVjdGlvbihkYkluZm8pIHtcbiAgICByZXR1cm4gX2dldENvbm5lY3Rpb24oZGJJbmZvLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gX2lzVXBncmFkZU5lZWRlZChkYkluZm8sIGRlZmF1bHRWZXJzaW9uKSB7XG4gICAgaWYgKCFkYkluZm8uZGIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGlzTmV3U3RvcmUgPSAhZGJJbmZvLmRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoZGJJbmZvLnN0b3JlTmFtZSk7XG4gICAgdmFyIGlzRG93bmdyYWRlID0gZGJJbmZvLnZlcnNpb24gPCBkYkluZm8uZGIudmVyc2lvbjtcbiAgICB2YXIgaXNVcGdyYWRlID0gZGJJbmZvLnZlcnNpb24gPiBkYkluZm8uZGIudmVyc2lvbjtcblxuICAgIGlmIChpc0Rvd25ncmFkZSkge1xuICAgICAgICAvLyBJZiB0aGUgdmVyc2lvbiBpcyBub3QgdGhlIGRlZmF1bHQgb25lXG4gICAgICAgIC8vIHRoZW4gd2FybiBmb3IgaW1wb3NzaWJsZSBkb3duZ3JhZGUuXG4gICAgICAgIGlmIChkYkluZm8udmVyc2lvbiAhPT0gZGVmYXVsdFZlcnNpb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGRhdGFiYXNlIFwiJyArIGRiSW5mby5uYW1lICsgJ1wiJyArIFwiIGNhbid0IGJlIGRvd25ncmFkZWQgZnJvbSB2ZXJzaW9uIFwiICsgZGJJbmZvLmRiLnZlcnNpb24gKyAnIHRvIHZlcnNpb24gJyArIGRiSW5mby52ZXJzaW9uICsgJy4nKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBbGlnbiB0aGUgdmVyc2lvbnMgdG8gcHJldmVudCBlcnJvcnMuXG4gICAgICAgIGRiSW5mby52ZXJzaW9uID0gZGJJbmZvLmRiLnZlcnNpb247XG4gICAgfVxuXG4gICAgaWYgKGlzVXBncmFkZSB8fCBpc05ld1N0b3JlKSB7XG4gICAgICAgIC8vIElmIHRoZSBzdG9yZSBpcyBuZXcgdGhlbiBpbmNyZW1lbnQgdGhlIHZlcnNpb24gKGlmIG5lZWRlZCkuXG4gICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIGFuIFwidXBncmFkZW5lZWRlZFwiIGV2ZW50IHdoaWNoIGlzIHJlcXVpcmVkXG4gICAgICAgIC8vIGZvciBjcmVhdGluZyBhIHN0b3JlLlxuICAgICAgICBpZiAoaXNOZXdTdG9yZSkge1xuICAgICAgICAgICAgdmFyIGluY1ZlcnNpb24gPSBkYkluZm8uZGIudmVyc2lvbiArIDE7XG4gICAgICAgICAgICBpZiAoaW5jVmVyc2lvbiA+IGRiSW5mby52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgZGJJbmZvLnZlcnNpb24gPSBpbmNWZXJzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBlbmNvZGUgYSBibG9iIGZvciBpbmRleGVkZGIgZW5naW5lcyB0aGF0IGRvbid0IHN1cHBvcnQgYmxvYnNcbmZ1bmN0aW9uIF9lbmNvZGVCbG9iKGJsb2IpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgYmFzZTY0ID0gYnRvYShlLnRhcmdldC5yZXN1bHQgfHwgJycpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgX19sb2NhbF9mb3JhZ2VfZW5jb2RlZF9ibG9iOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGE6IGJhc2U2NCxcbiAgICAgICAgICAgICAgICB0eXBlOiBibG9iLnR5cGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGJsb2IpO1xuICAgIH0pO1xufVxuXG4vLyBkZWNvZGUgYW4gZW5jb2RlZCBibG9iXG5mdW5jdGlvbiBfZGVjb2RlQmxvYihlbmNvZGVkQmxvYikge1xuICAgIHZhciBhcnJheUJ1ZmYgPSBfYmluU3RyaW5nVG9BcnJheUJ1ZmZlcihhdG9iKGVuY29kZWRCbG9iLmRhdGEpKTtcbiAgICByZXR1cm4gY3JlYXRlQmxvYihbYXJyYXlCdWZmXSwgeyB0eXBlOiBlbmNvZGVkQmxvYi50eXBlIH0pO1xufVxuXG4vLyBpcyB0aGlzIG9uZSBvZiBvdXIgZmFuY3kgZW5jb2RlZCBibG9icz9cbmZ1bmN0aW9uIF9pc0VuY29kZWRCbG9iKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLl9fbG9jYWxfZm9yYWdlX2VuY29kZWRfYmxvYjtcbn1cblxuLy8gU3BlY2lhbGl6ZSB0aGUgZGVmYXVsdCBgcmVhZHkoKWAgZnVuY3Rpb24gYnkgbWFraW5nIGl0IGRlcGVuZGVudFxuLy8gb24gdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9ucy4gVGh1cywgdGhlIGRyaXZlciB3aWxsIGJlIGFjdHVhbGx5XG4vLyByZWFkeSB3aGVuIGl0J3MgYmVlbiBpbml0aWFsaXplZCAoZGVmYXVsdCkgKmFuZCogdGhlcmUgYXJlIG5vIHBlbmRpbmdcbi8vIG9wZXJhdGlvbnMgb24gdGhlIGRhdGFiYXNlIChpbml0aWF0ZWQgYnkgc29tZSBvdGhlciBpbnN0YW5jZXMpLlxuZnVuY3Rpb24gX2Z1bGx5UmVhZHkoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYuX2luaXRSZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGJDb250ZXh0ID0gZGJDb250ZXh0c1tzZWxmLl9kYkluZm8ubmFtZV07XG5cbiAgICAgICAgaWYgKGRiQ29udGV4dCAmJiBkYkNvbnRleHQuZGJSZWFkeSkge1xuICAgICAgICAgICAgcmV0dXJuIGRiQ29udGV4dC5kYlJlYWR5O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBleGVjdXRlVHdvQ2FsbGJhY2tzKHByb21pc2UsIGNhbGxiYWNrLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIFRyeSB0byBlc3RhYmxpc2ggYSBuZXcgZGIgY29ubmVjdGlvbiB0byByZXBsYWNlIHRoZVxuLy8gY3VycmVudCBvbmUgd2hpY2ggaXMgYnJva2VuIChpLmUuIGV4cGVyaWVuY2luZ1xuLy8gSW52YWxpZFN0YXRlRXJyb3Igd2hpbGUgY3JlYXRpbmcgYSB0cmFuc2FjdGlvbikuXG5mdW5jdGlvbiBfdHJ5UmVjb25uZWN0KGRiSW5mbykge1xuICAgIF9kZWZlclJlYWRpbmVzcyhkYkluZm8pO1xuXG4gICAgdmFyIGRiQ29udGV4dCA9IGRiQ29udGV4dHNbZGJJbmZvLm5hbWVdO1xuICAgIHZhciBmb3JhZ2VzID0gZGJDb250ZXh0LmZvcmFnZXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcmFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGZvcmFnZSA9IGZvcmFnZXNbaV07XG4gICAgICAgIGlmIChmb3JhZ2UuX2RiSW5mby5kYikge1xuICAgICAgICAgICAgZm9yYWdlLl9kYkluZm8uZGIuY2xvc2UoKTtcbiAgICAgICAgICAgIGZvcmFnZS5fZGJJbmZvLmRiID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkYkluZm8uZGIgPSBudWxsO1xuXG4gICAgcmV0dXJuIF9nZXRPcmlnaW5hbENvbm5lY3Rpb24oZGJJbmZvKS50aGVuKGZ1bmN0aW9uIChkYikge1xuICAgICAgICBkYkluZm8uZGIgPSBkYjtcbiAgICAgICAgaWYgKF9pc1VwZ3JhZGVOZWVkZWQoZGJJbmZvKSkge1xuICAgICAgICAgICAgLy8gUmVvcGVuIHRoZSBkYXRhYmFzZSBmb3IgdXBncmFkaW5nLlxuICAgICAgICAgICAgcmV0dXJuIF9nZXRVcGdyYWRlZENvbm5lY3Rpb24oZGJJbmZvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGI7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGIpIHtcbiAgICAgICAgLy8gc3RvcmUgdGhlIGxhdGVzdCBkYiByZWZlcmVuY2VcbiAgICAgICAgLy8gaW4gY2FzZSB0aGUgZGIgd2FzIHVwZ3JhZGVkXG4gICAgICAgIGRiSW5mby5kYiA9IGRiQ29udGV4dC5kYiA9IGRiO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcmFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZvcmFnZXNbaV0uX2RiSW5mby5kYiA9IGRiO1xuICAgICAgICB9XG4gICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIF9yZWplY3RSZWFkaW5lc3MoZGJJbmZvLCBlcnIpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfSk7XG59XG5cbi8vIEZGIGRvZXNuJ3QgbGlrZSBQcm9taXNlcyAobWljcm8tdGFza3MpIGFuZCBJRERCIHN0b3JlIG9wZXJhdGlvbnMsXG4vLyBzbyB3ZSBoYXZlIHRvIGRvIGl0IHdpdGggY2FsbGJhY2tzXG5mdW5jdGlvbiBjcmVhdGVUcmFuc2FjdGlvbihkYkluZm8sIG1vZGUsIGNhbGxiYWNrLCByZXRyaWVzKSB7XG4gICAgaWYgKHJldHJpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXRyaWVzID0gMTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICB2YXIgdHggPSBkYkluZm8uZGIudHJhbnNhY3Rpb24oZGJJbmZvLnN0b3JlTmFtZSwgbW9kZSk7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHR4KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKHJldHJpZXMgPiAwICYmICghZGJJbmZvLmRiIHx8IGVyci5uYW1lID09PSAnSW52YWxpZFN0YXRlRXJyb3InIHx8IGVyci5uYW1lID09PSAnTm90Rm91bmRFcnJvcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRiSW5mby5kYiB8fCBlcnIubmFtZSA9PT0gJ05vdEZvdW5kRXJyb3InICYmICFkYkluZm8uZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhkYkluZm8uc3RvcmVOYW1lKSAmJiBkYkluZm8udmVyc2lvbiA8PSBkYkluZm8uZGIudmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbmNyZWFzZSB0aGUgZGIgdmVyc2lvbiwgdG8gY3JlYXRlIHRoZSBuZXcgT2JqZWN0U3RvcmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRiSW5mby5kYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGJJbmZvLnZlcnNpb24gPSBkYkluZm8uZGIudmVyc2lvbiArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVvcGVuIHRoZSBkYXRhYmFzZSBmb3IgdXBncmFkaW5nLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2dldFVwZ3JhZGVkQ29ubmVjdGlvbihkYkluZm8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdHJ5UmVjb25uZWN0KGRiSW5mbykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKGRiSW5mbywgbW9kZSwgY2FsbGJhY2ssIHJldHJpZXMgLSAxKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pW1wiY2F0Y2hcIl0oY2FsbGJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURiQ29udGV4dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBSdW5uaW5nIGxvY2FsRm9yYWdlcyBzaGFyaW5nIGEgZGF0YWJhc2UuXG4gICAgICAgIGZvcmFnZXM6IFtdLFxuICAgICAgICAvLyBTaGFyZWQgZGF0YWJhc2UuXG4gICAgICAgIGRiOiBudWxsLFxuICAgICAgICAvLyBEYXRhYmFzZSByZWFkaW5lc3MgKHByb21pc2UpLlxuICAgICAgICBkYlJlYWR5OiBudWxsLFxuICAgICAgICAvLyBEZWZlcnJlZCBvcGVyYXRpb25zIG9uIHRoZSBkYXRhYmFzZS5cbiAgICAgICAgZGVmZXJyZWRPcGVyYXRpb25zOiBbXVxuICAgIH07XG59XG5cbi8vIE9wZW4gdGhlIEluZGV4ZWREQiBkYXRhYmFzZSAoYXV0b21hdGljYWxseSBjcmVhdGVzIG9uZSBpZiBvbmUgZGlkbid0XG4vLyBwcmV2aW91c2x5IGV4aXN0KSwgdXNpbmcgYW55IG9wdGlvbnMgc2V0IGluIHRoZSBjb25maWcuXG5mdW5jdGlvbiBfaW5pdFN0b3JhZ2Uob3B0aW9ucykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGJJbmZvID0ge1xuICAgICAgICBkYjogbnVsbFxuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBmb3IgKHZhciBpIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRiSW5mb1tpXSA9IG9wdGlvbnNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgY29udGV4dCBvZiB0aGUgZGF0YWJhc2U7XG4gICAgdmFyIGRiQ29udGV4dCA9IGRiQ29udGV4dHNbZGJJbmZvLm5hbWVdO1xuXG4gICAgLy8gLi4ub3IgY3JlYXRlIGEgbmV3IGNvbnRleHQuXG4gICAgaWYgKCFkYkNvbnRleHQpIHtcbiAgICAgICAgZGJDb250ZXh0ID0gY3JlYXRlRGJDb250ZXh0KCk7XG4gICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBuZXcgY29udGV4dCBpbiB0aGUgZ2xvYmFsIGNvbnRhaW5lci5cbiAgICAgICAgZGJDb250ZXh0c1tkYkluZm8ubmFtZV0gPSBkYkNvbnRleHQ7XG4gICAgfVxuXG4gICAgLy8gUmVnaXN0ZXIgaXRzZWxmIGFzIGEgcnVubmluZyBsb2NhbEZvcmFnZSBpbiB0aGUgY3VycmVudCBjb250ZXh0LlxuICAgIGRiQ29udGV4dC5mb3JhZ2VzLnB1c2goc2VsZik7XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBkZWZhdWx0IGByZWFkeSgpYCBmdW5jdGlvbiB3aXRoIHRoZSBzcGVjaWFsaXplZCBvbmUuXG4gICAgaWYgKCFzZWxmLl9pbml0UmVhZHkpIHtcbiAgICAgICAgc2VsZi5faW5pdFJlYWR5ID0gc2VsZi5yZWFkeTtcbiAgICAgICAgc2VsZi5yZWFkeSA9IF9mdWxseVJlYWR5O1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhbiBhcnJheSBvZiBpbml0aWFsaXphdGlvbiBzdGF0ZXMgb2YgdGhlIHJlbGF0ZWQgbG9jYWxGb3JhZ2VzLlxuICAgIHZhciBpbml0UHJvbWlzZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGlnbm9yZUVycm9ycygpIHtcbiAgICAgICAgLy8gRG9uJ3QgaGFuZGxlIGVycm9ycyBoZXJlLFxuICAgICAgICAvLyBqdXN0IG1ha2VzIHN1cmUgcmVsYXRlZCBsb2NhbEZvcmFnZXMgYXJlbid0IHBlbmRpbmcuXG4gICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZGJDb250ZXh0LmZvcmFnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGZvcmFnZSA9IGRiQ29udGV4dC5mb3JhZ2VzW2pdO1xuICAgICAgICBpZiAoZm9yYWdlICE9PSBzZWxmKSB7XG4gICAgICAgICAgICAvLyBEb24ndCB3YWl0IGZvciBpdHNlbGYuLi5cbiAgICAgICAgICAgIGluaXRQcm9taXNlcy5wdXNoKGZvcmFnZS5faW5pdFJlYWR5KClbXCJjYXRjaFwiXShpZ25vcmVFcnJvcnMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRha2UgYSBzbmFwc2hvdCBvZiB0aGUgcmVsYXRlZCBsb2NhbEZvcmFnZXMuXG4gICAgdmFyIGZvcmFnZXMgPSBkYkNvbnRleHQuZm9yYWdlcy5zbGljZSgwKTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gcHJvY2VzcyBvbmx5IHdoZW5cbiAgICAvLyBhbGwgdGhlIHJlbGF0ZWQgbG9jYWxGb3JhZ2VzIGFyZW4ndCBwZW5kaW5nLlxuICAgIHJldHVybiBQcm9taXNlJDEuYWxsKGluaXRQcm9taXNlcykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRiSW5mby5kYiA9IGRiQ29udGV4dC5kYjtcbiAgICAgICAgLy8gR2V0IHRoZSBjb25uZWN0aW9uIG9yIG9wZW4gYSBuZXcgb25lIHdpdGhvdXQgdXBncmFkZS5cbiAgICAgICAgcmV0dXJuIF9nZXRPcmlnaW5hbENvbm5lY3Rpb24oZGJJbmZvKTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChkYikge1xuICAgICAgICBkYkluZm8uZGIgPSBkYjtcbiAgICAgICAgaWYgKF9pc1VwZ3JhZGVOZWVkZWQoZGJJbmZvLCBzZWxmLl9kZWZhdWx0Q29uZmlnLnZlcnNpb24pKSB7XG4gICAgICAgICAgICAvLyBSZW9wZW4gdGhlIGRhdGFiYXNlIGZvciB1cGdyYWRpbmcuXG4gICAgICAgICAgICByZXR1cm4gX2dldFVwZ3JhZGVkQ29ubmVjdGlvbihkYkluZm8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYjtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChkYikge1xuICAgICAgICBkYkluZm8uZGIgPSBkYkNvbnRleHQuZGIgPSBkYjtcbiAgICAgICAgc2VsZi5fZGJJbmZvID0gZGJJbmZvO1xuICAgICAgICAvLyBTaGFyZSB0aGUgZmluYWwgY29ubmVjdGlvbiBhbW9uZ3N0IHJlbGF0ZWQgbG9jYWxGb3JhZ2VzLlxuICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGZvcmFnZXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgIHZhciBmb3JhZ2UgPSBmb3JhZ2VzW2tdO1xuICAgICAgICAgICAgaWYgKGZvcmFnZSAhPT0gc2VsZikge1xuICAgICAgICAgICAgICAgIC8vIFNlbGYgaXMgYWxyZWFkeSB1cC10by1kYXRlLlxuICAgICAgICAgICAgICAgIGZvcmFnZS5fZGJJbmZvLmRiID0gZGJJbmZvLmRiO1xuICAgICAgICAgICAgICAgIGZvcmFnZS5fZGJJbmZvLnZlcnNpb24gPSBkYkluZm8udmVyc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRJdGVtKGtleSwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBrZXkgPSBub3JtYWxpemVLZXkoa2V5KTtcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9PTkxZLCBmdW5jdGlvbiAoZXJyLCB0cmFuc2FjdGlvbikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHNlbGYuX2RiSW5mby5zdG9yZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUuZ2V0KGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNFbmNvZGVkQmxvYih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9kZWNvZGVCbG9iKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlcS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIEl0ZXJhdGUgb3ZlciBhbGwgaXRlbXMgc3RvcmVkIGluIGRhdGFiYXNlLlxuZnVuY3Rpb24gaXRlcmF0ZShpdGVyYXRvciwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjcmVhdGVUcmFuc2FjdGlvbihzZWxmLl9kYkluZm8sIFJFQURfT05MWSwgZnVuY3Rpb24gKGVyciwgdHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShzZWxmLl9kYkluZm8uc3RvcmVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZXJhdGlvbk51bWJlciA9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJzb3IgPSByZXEucmVzdWx0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY3Vyc29yLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNFbmNvZGVkQmxvYih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBfZGVjb2RlQmxvYih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBpdGVyYXRvcih2YWx1ZSwgY3Vyc29yLmtleSwgaXRlcmF0aW9uTnVtYmVyKyspO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGUgaXRlcmF0b3IgY2FsbGJhY2sgcmV0dXJucyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAobm9uLWB1bmRlZmluZWRgKSB2YWx1ZSwgdGhlbiB3ZSBzdG9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGl0ZXJhdGlvbiBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yW1wiY29udGludWVcIl0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXEuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIHNldEl0ZW0oa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBrZXkgPSBub3JtYWxpemVLZXkoa2V5KTtcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBkYkluZm87XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgICAgIGlmICh0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQmxvYl0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jaGVja0Jsb2JTdXBwb3J0KGRiSW5mby5kYikudGhlbihmdW5jdGlvbiAoYmxvYlN1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2JTdXBwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lbmNvZGVCbG9iKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9XUklURSwgZnVuY3Rpb24gKGVyciwgdHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShzZWxmLl9kYkluZm8uc3RvcmVOYW1lKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcmVhc29uIHdlIGRvbid0IF9zYXZlXyBudWxsIGlzIGJlY2F1c2UgSUUgMTAgZG9lc1xuICAgICAgICAgICAgICAgICAgICAvLyBub3Qgc3VwcG9ydCBzYXZpbmcgdGhlIGBudWxsYCB0eXBlIGluIEluZGV4ZWREQi4gSG93XG4gICAgICAgICAgICAgICAgICAgIC8vIGlyb25pYywgZ2l2ZW4gdGhlIGJ1ZyBiZWxvdyFcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9sb2NhbEZvcmFnZS9pc3N1ZXMvMTYxXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KHZhbHVlLCBrZXkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXN0IHRvIHVuZGVmaW5lZCBzbyB0aGUgdmFsdWUgcGFzc2VkIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsYmFjay9wcm9taXNlIGlzIHRoZSBzYW1lIGFzIHdoYXQgb25lIHdvdWxkIGdldCBvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIGBnZXRJdGVtKClgIGxhdGVyLiBUaGlzIGxlYWRzIHRvIHNvbWUgd2VpcmRuZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAoc2V0SXRlbSgnZm9vJywgdW5kZWZpbmVkKSB3aWxsIHJldHVybiBgbnVsbGApLCBidXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90IG15IGZhdWx0IGxvY2FsU3RvcmFnZSBpcyBvdXIgYmFzZWxpbmUgYW5kIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgd2VpcmQuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9IHJlcS5lcnJvciA/IHJlcS5lcnJvciA6IHJlcS50cmFuc2FjdGlvbi5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVJdGVtKGtleSwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBrZXkgPSBub3JtYWxpemVLZXkoa2V5KTtcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9XUklURSwgZnVuY3Rpb24gKGVyciwgdHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShzZWxmLl9kYkluZm8uc3RvcmVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgdXNlIGEgR3J1bnQgdGFzayB0byBtYWtlIHRoaXMgc2FmZSBmb3IgSUUgYW5kIHNvbWVcbiAgICAgICAgICAgICAgICAgICAgLy8gdmVyc2lvbnMgb2YgQW5kcm9pZCAoaW5jbHVkaW5nIHRob3NlIHVzZWQgYnkgQ29yZG92YSkuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5vcm1hbGx5IElFIHdvbid0IGxpa2UgYC5kZWxldGUoKWAgYW5kIHdpbGwgaW5zaXN0IG9uXG4gICAgICAgICAgICAgICAgICAgIC8vIHVzaW5nIGBbJ2RlbGV0ZSddKClgLCBidXQgd2UgaGF2ZSBhIGJ1aWxkIHN0ZXAgdGhhdFxuICAgICAgICAgICAgICAgICAgICAvLyBmaXhlcyB0aGlzIGZvciB1cyBub3cuXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZVtcImRlbGV0ZVwiXShrZXkpO1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVxLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcmVxdWVzdCB3aWxsIGJlIGFsc28gYmUgYWJvcnRlZCBpZiB3ZSd2ZSBleGNlZWRlZCBvdXIgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAvLyBzcGFjZS5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSByZXEuZXJyb3IgPyByZXEuZXJyb3IgOiByZXEudHJhbnNhY3Rpb24uZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlbXCJjYXRjaFwiXShyZWplY3QpO1xuICAgIH0pO1xuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxuZnVuY3Rpb24gY2xlYXIoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjcmVhdGVUcmFuc2FjdGlvbihzZWxmLl9kYkluZm8sIFJFQURfV1JJVEUsIGZ1bmN0aW9uIChlcnIsIHRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoc2VsZi5fZGJJbmZvLnN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5jbGVhcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0gcmVxLmVycm9yID8gcmVxLmVycm9yIDogcmVxLnRyYW5zYWN0aW9uLmVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aChjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9PTkxZLCBmdW5jdGlvbiAoZXJyLCB0cmFuc2FjdGlvbikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHNlbGYuX2RiSW5mby5zdG9yZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUuY291bnQoKTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXEucmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXEuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBrZXkobiwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9PTkxZLCBmdW5jdGlvbiAoZXJyLCB0cmFuc2FjdGlvbikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHNlbGYuX2RiSW5mby5zdG9yZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWR2YW5jZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0b3JlLm9wZW5LZXlDdXJzb3IoKTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnNvciA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnNvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgbWVhbnMgdGhlcmUgd2VyZW4ndCBlbm91Z2gga2V5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0aGUgZmlyc3Qga2V5LCByZXR1cm4gaXQgaWYgdGhhdCdzIHdoYXQgdGhleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhbnRlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGN1cnNvci5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkdmFuY2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgYXNrIHRoZSBjdXJzb3IgdG8gc2tpcCBhaGVhZCBuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY29yZHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2Uobik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBnZXQgaGVyZSwgd2UndmUgZ290IHRoZSBudGgga2V5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGN1cnNvci5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXEuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBrZXlzKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY3JlYXRlVHJhbnNhY3Rpb24oc2VsZi5fZGJJbmZvLCBSRUFEX09OTFksIGZ1bmN0aW9uIChlcnIsIHRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoc2VsZi5fZGJJbmZvLnN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5vcGVuS2V5Q3Vyc29yKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXlzID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJzb3IgPSByZXEucmVzdWx0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnNvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoa2V5cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goY3Vyc29yLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JbXCJjb250aW51ZVwiXSgpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlcS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIGRyb3BJbnN0YW5jZShvcHRpb25zLCBjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0gZ2V0Q2FsbGJhY2suYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBjdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgIT09ICdmdW5jdGlvbicgJiYgb3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICBvcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgY3VycmVudENvbmZpZy5uYW1lO1xuICAgICAgICBvcHRpb25zLnN0b3JlTmFtZSA9IG9wdGlvbnMuc3RvcmVOYW1lIHx8IGN1cnJlbnRDb25maWcuc3RvcmVOYW1lO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZTtcbiAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICBwcm9taXNlID0gUHJvbWlzZSQxLnJlamVjdCgnSW52YWxpZCBhcmd1bWVudHMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaXNDdXJyZW50RGIgPSBvcHRpb25zLm5hbWUgPT09IGN1cnJlbnRDb25maWcubmFtZSAmJiBzZWxmLl9kYkluZm8uZGI7XG5cbiAgICAgICAgdmFyIGRiUHJvbWlzZSA9IGlzQ3VycmVudERiID8gUHJvbWlzZSQxLnJlc29sdmUoc2VsZi5fZGJJbmZvLmRiKSA6IF9nZXRPcmlnaW5hbENvbm5lY3Rpb24ob3B0aW9ucykudGhlbihmdW5jdGlvbiAoZGIpIHtcbiAgICAgICAgICAgIHZhciBkYkNvbnRleHQgPSBkYkNvbnRleHRzW29wdGlvbnMubmFtZV07XG4gICAgICAgICAgICB2YXIgZm9yYWdlcyA9IGRiQ29udGV4dC5mb3JhZ2VzO1xuICAgICAgICAgICAgZGJDb250ZXh0LmRiID0gZGI7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcmFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3JhZ2VzW2ldLl9kYkluZm8uZGIgPSBkYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnN0b3JlTmFtZSkge1xuICAgICAgICAgICAgcHJvbWlzZSA9IGRiUHJvbWlzZS50aGVuKGZ1bmN0aW9uIChkYikge1xuICAgICAgICAgICAgICAgIF9kZWZlclJlYWRpbmVzcyhvcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHZhciBkYkNvbnRleHQgPSBkYkNvbnRleHRzW29wdGlvbnMubmFtZV07XG4gICAgICAgICAgICAgICAgdmFyIGZvcmFnZXMgPSBkYkNvbnRleHQuZm9yYWdlcztcblxuICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JhZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3JhZ2UgPSBmb3JhZ2VzW2ldO1xuICAgICAgICAgICAgICAgICAgICBmb3JhZ2UuX2RiSW5mby5kYiA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRyb3BEQlByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcSA9IGlkYi5kZWxldGVEYXRhYmFzZShvcHRpb25zLm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRiID0gcmVxLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVxLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvc2luZyBhbGwgb3BlbiBjb25uZWN0aW9ucyBpbiBvbnZlcnNpb25jaGFuZ2UgaGFuZGxlciBzaG91bGQgcHJldmVudCB0aGlzIHNpdHVhdGlvbiwgYnV0IGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkbyBnZXQgaGVyZSwgaXQganVzdCBtZWFucyB0aGUgcmVxdWVzdCByZW1haW5zIHBlbmRpbmcgLSBldmVudHVhbGx5IGl0IHdpbGwgc3VjY2VlZCBvciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdkcm9wSW5zdGFuY2UgYmxvY2tlZCBmb3IgZGF0YWJhc2UgXCInICsgb3B0aW9ucy5uYW1lICsgJ1wiIHVudGlsIGFsbCBvcGVuIGNvbm5lY3Rpb25zIGFyZSBjbG9zZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRiID0gcmVxLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRiKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBkcm9wREJQcm9taXNlLnRoZW4oZnVuY3Rpb24gKGRiKSB7XG4gICAgICAgICAgICAgICAgICAgIGRiQ29udGV4dC5kYiA9IGRiO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcmFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfZm9yYWdlID0gZm9yYWdlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hZHZhbmNlUmVhZGluZXNzKF9mb3JhZ2UuX2RiSW5mbyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVtcImNhdGNoXCJdKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgKF9yZWplY3RSZWFkaW5lc3Mob3B0aW9ucywgZXJyKSB8fCBQcm9taXNlJDEucmVzb2x2ZSgpKVtcImNhdGNoXCJdKGZ1bmN0aW9uICgpIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9taXNlID0gZGJQcm9taXNlLnRoZW4oZnVuY3Rpb24gKGRiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKG9wdGlvbnMuc3RvcmVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIG5ld1ZlcnNpb24gPSBkYi52ZXJzaW9uICsgMTtcblxuICAgICAgICAgICAgICAgIF9kZWZlclJlYWRpbmVzcyhvcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHZhciBkYkNvbnRleHQgPSBkYkNvbnRleHRzW29wdGlvbnMubmFtZV07XG4gICAgICAgICAgICAgICAgdmFyIGZvcmFnZXMgPSBkYkNvbnRleHQuZm9yYWdlcztcblxuICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JhZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3JhZ2UgPSBmb3JhZ2VzW2ldO1xuICAgICAgICAgICAgICAgICAgICBmb3JhZ2UuX2RiSW5mby5kYiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGZvcmFnZS5fZGJJbmZvLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBkcm9wT2JqZWN0UHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVxID0gaWRiLm9wZW4ob3B0aW9ucy5uYW1lLCBuZXdWZXJzaW9uKTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYiA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYiA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZShvcHRpb25zLnN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYiA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZHJvcE9iamVjdFByb21pc2UudGhlbihmdW5jdGlvbiAoZGIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGJDb250ZXh0LmRiID0gZGI7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZm9yYWdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9mb3JhZ2UyID0gZm9yYWdlc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9mb3JhZ2UyLl9kYkluZm8uZGIgPSBkYjtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hZHZhbmNlUmVhZGluZXNzKF9mb3JhZ2UyLl9kYkluZm8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIChfcmVqZWN0UmVhZGluZXNzKG9wdGlvbnMsIGVycikgfHwgUHJvbWlzZSQxLnJlc29sdmUoKSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoKSB7fSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxudmFyIGFzeW5jU3RvcmFnZSA9IHtcbiAgICBfZHJpdmVyOiAnYXN5bmNTdG9yYWdlJyxcbiAgICBfaW5pdFN0b3JhZ2U6IF9pbml0U3RvcmFnZSxcbiAgICBfc3VwcG9ydDogaXNJbmRleGVkREJWYWxpZCgpLFxuICAgIGl0ZXJhdGU6IGl0ZXJhdGUsXG4gICAgZ2V0SXRlbTogZ2V0SXRlbSxcbiAgICBzZXRJdGVtOiBzZXRJdGVtLFxuICAgIHJlbW92ZUl0ZW06IHJlbW92ZUl0ZW0sXG4gICAgY2xlYXI6IGNsZWFyLFxuICAgIGxlbmd0aDogbGVuZ3RoLFxuICAgIGtleToga2V5LFxuICAgIGtleXM6IGtleXMsXG4gICAgZHJvcEluc3RhbmNlOiBkcm9wSW5zdGFuY2Vcbn07XG5cbmZ1bmN0aW9uIGlzV2ViU1FMVmFsaWQoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvcGVuRGF0YWJhc2UgPT09ICdmdW5jdGlvbic7XG59XG5cbi8vIFNhZGx5LCB0aGUgYmVzdCB3YXkgdG8gc2F2ZSBiaW5hcnkgZGF0YSBpbiBXZWJTUUwvbG9jYWxTdG9yYWdlIGlzIHNlcmlhbGl6aW5nXG4vLyBpdCB0byBCYXNlNjQsIHNvIHRoaXMgaXMgaG93IHdlIHN0b3JlIGl0IHRvIHByZXZlbnQgdmVyeSBzdHJhbmdlIGVycm9ycyB3aXRoIGxlc3Ncbi8vIHZlcmJvc2Ugd2F5cyBvZiBiaW5hcnkgPC0+IHN0cmluZyBkYXRhIHN0b3JhZ2UuXG52YXIgQkFTRV9DSEFSUyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJztcblxudmFyIEJMT0JfVFlQRV9QUkVGSVggPSAnfn5sb2NhbF9mb3JhZ2VfdHlwZX4nO1xudmFyIEJMT0JfVFlQRV9QUkVGSVhfUkVHRVggPSAvXn5+bG9jYWxfZm9yYWdlX3R5cGV+KFtefl0rKX4vO1xuXG52YXIgU0VSSUFMSVpFRF9NQVJLRVIgPSAnX19sZnNjX186JztcbnZhciBTRVJJQUxJWkVEX01BUktFUl9MRU5HVEggPSBTRVJJQUxJWkVEX01BUktFUi5sZW5ndGg7XG5cbi8vIE9NRyB0aGUgc2VyaWFsaXphdGlvbnMhXG52YXIgVFlQRV9BUlJBWUJVRkZFUiA9ICdhcmJmJztcbnZhciBUWVBFX0JMT0IgPSAnYmxvYic7XG52YXIgVFlQRV9JTlQ4QVJSQVkgPSAnc2kwOCc7XG52YXIgVFlQRV9VSU5UOEFSUkFZID0gJ3VpMDgnO1xudmFyIFRZUEVfVUlOVDhDTEFNUEVEQVJSQVkgPSAndWljOCc7XG52YXIgVFlQRV9JTlQxNkFSUkFZID0gJ3NpMTYnO1xudmFyIFRZUEVfSU5UMzJBUlJBWSA9ICdzaTMyJztcbnZhciBUWVBFX1VJTlQxNkFSUkFZID0gJ3VyMTYnO1xudmFyIFRZUEVfVUlOVDMyQVJSQVkgPSAndWkzMic7XG52YXIgVFlQRV9GTE9BVDMyQVJSQVkgPSAnZmwzMic7XG52YXIgVFlQRV9GTE9BVDY0QVJSQVkgPSAnZmw2NCc7XG52YXIgVFlQRV9TRVJJQUxJWkVEX01BUktFUl9MRU5HVEggPSBTRVJJQUxJWkVEX01BUktFUl9MRU5HVEggKyBUWVBFX0FSUkFZQlVGRkVSLmxlbmd0aDtcblxudmFyIHRvU3RyaW5nJDEgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiBzdHJpbmdUb0J1ZmZlcihzZXJpYWxpemVkU3RyaW5nKSB7XG4gICAgLy8gRmlsbCB0aGUgc3RyaW5nIGludG8gYSBBcnJheUJ1ZmZlci5cbiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gc2VyaWFsaXplZFN0cmluZy5sZW5ndGggKiAwLjc1O1xuICAgIHZhciBsZW4gPSBzZXJpYWxpemVkU3RyaW5nLmxlbmd0aDtcbiAgICB2YXIgaTtcbiAgICB2YXIgcCA9IDA7XG4gICAgdmFyIGVuY29kZWQxLCBlbmNvZGVkMiwgZW5jb2RlZDMsIGVuY29kZWQ0O1xuXG4gICAgaWYgKHNlcmlhbGl6ZWRTdHJpbmdbc2VyaWFsaXplZFN0cmluZy5sZW5ndGggLSAxXSA9PT0gJz0nKSB7XG4gICAgICAgIGJ1ZmZlckxlbmd0aC0tO1xuICAgICAgICBpZiAoc2VyaWFsaXplZFN0cmluZ1tzZXJpYWxpemVkU3RyaW5nLmxlbmd0aCAtIDJdID09PSAnPScpIHtcbiAgICAgICAgICAgIGJ1ZmZlckxlbmd0aC0tO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihidWZmZXJMZW5ndGgpO1xuICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICAgICAgZW5jb2RlZDEgPSBCQVNFX0NIQVJTLmluZGV4T2Yoc2VyaWFsaXplZFN0cmluZ1tpXSk7XG4gICAgICAgIGVuY29kZWQyID0gQkFTRV9DSEFSUy5pbmRleE9mKHNlcmlhbGl6ZWRTdHJpbmdbaSArIDFdKTtcbiAgICAgICAgZW5jb2RlZDMgPSBCQVNFX0NIQVJTLmluZGV4T2Yoc2VyaWFsaXplZFN0cmluZ1tpICsgMl0pO1xuICAgICAgICBlbmNvZGVkNCA9IEJBU0VfQ0hBUlMuaW5kZXhPZihzZXJpYWxpemVkU3RyaW5nW2kgKyAzXSk7XG5cbiAgICAgICAgLypqc2xpbnQgYml0d2lzZTogdHJ1ZSAqL1xuICAgICAgICBieXRlc1twKytdID0gZW5jb2RlZDEgPDwgMiB8IGVuY29kZWQyID4+IDQ7XG4gICAgICAgIGJ5dGVzW3ArK10gPSAoZW5jb2RlZDIgJiAxNSkgPDwgNCB8IGVuY29kZWQzID4+IDI7XG4gICAgICAgIGJ5dGVzW3ArK10gPSAoZW5jb2RlZDMgJiAzKSA8PCA2IHwgZW5jb2RlZDQgJiA2MztcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbn1cblxuLy8gQ29udmVydHMgYSBidWZmZXIgdG8gYSBzdHJpbmcgdG8gc3RvcmUsIHNlcmlhbGl6ZWQsIGluIHRoZSBiYWNrZW5kXG4vLyBzdG9yYWdlIGxpYnJhcnkuXG5mdW5jdGlvbiBidWZmZXJUb1N0cmluZyhidWZmZXIpIHtcbiAgICAvLyBiYXNlNjQtYXJyYXlidWZmZXJcbiAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICAgIHZhciBiYXNlNjRTdHJpbmcgPSAnJztcbiAgICB2YXIgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICAvKmpzbGludCBiaXR3aXNlOiB0cnVlICovXG4gICAgICAgIGJhc2U2NFN0cmluZyArPSBCQVNFX0NIQVJTW2J5dGVzW2ldID4+IDJdO1xuICAgICAgICBiYXNlNjRTdHJpbmcgKz0gQkFTRV9DSEFSU1soYnl0ZXNbaV0gJiAzKSA8PCA0IHwgYnl0ZXNbaSArIDFdID4+IDRdO1xuICAgICAgICBiYXNlNjRTdHJpbmcgKz0gQkFTRV9DSEFSU1soYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpICsgMl0gPj4gNl07XG4gICAgICAgIGJhc2U2NFN0cmluZyArPSBCQVNFX0NIQVJTW2J5dGVzW2kgKyAyXSAmIDYzXTtcbiAgICB9XG5cbiAgICBpZiAoYnl0ZXMubGVuZ3RoICUgMyA9PT0gMikge1xuICAgICAgICBiYXNlNjRTdHJpbmcgPSBiYXNlNjRTdHJpbmcuc3Vic3RyaW5nKDAsIGJhc2U2NFN0cmluZy5sZW5ndGggLSAxKSArICc9JztcbiAgICB9IGVsc2UgaWYgKGJ5dGVzLmxlbmd0aCAlIDMgPT09IDEpIHtcbiAgICAgICAgYmFzZTY0U3RyaW5nID0gYmFzZTY0U3RyaW5nLnN1YnN0cmluZygwLCBiYXNlNjRTdHJpbmcubGVuZ3RoIC0gMikgKyAnPT0nO1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlNjRTdHJpbmc7XG59XG5cbi8vIFNlcmlhbGl6ZSBhIHZhbHVlLCBhZnRlcndhcmRzIGV4ZWN1dGluZyBhIGNhbGxiYWNrICh3aGljaCB1c3VhbGx5XG4vLyBpbnN0cnVjdHMgdGhlIGBzZXRJdGVtKClgIGNhbGxiYWNrL3Byb21pc2UgdG8gYmUgZXhlY3V0ZWQpLiBUaGlzIGlzIGhvd1xuLy8gd2Ugc3RvcmUgYmluYXJ5IGRhdGEgd2l0aCBsb2NhbFN0b3JhZ2UuXG5mdW5jdGlvbiBzZXJpYWxpemUodmFsdWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHZhbHVlVHlwZSA9ICcnO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YWx1ZVR5cGUgPSB0b1N0cmluZyQxLmNhbGwodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIENhbm5vdCB1c2UgYHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJgIG9yIHN1Y2ggaGVyZSwgYXMgdGhlc2VcbiAgICAvLyBjaGVja3MgZmFpbCB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIHVzaW5nIGNhc3Blci5qcy4uLlxuICAgIC8vXG4gICAgLy8gVE9ETzogU2VlIHdoeSB0aG9zZSB0ZXN0cyBmYWlsIGFuZCB1c2UgYSBiZXR0ZXIgc29sdXRpb24uXG4gICAgaWYgKHZhbHVlICYmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXScgfHwgdmFsdWUuYnVmZmVyICYmIHRvU3RyaW5nJDEuY2FsbCh2YWx1ZS5idWZmZXIpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nKSkge1xuICAgICAgICAvLyBDb252ZXJ0IGJpbmFyeSBhcnJheXMgdG8gYSBzdHJpbmcgYW5kIHByZWZpeCB0aGUgc3RyaW5nIHdpdGhcbiAgICAgICAgLy8gYSBzcGVjaWFsIG1hcmtlci5cbiAgICAgICAgdmFyIGJ1ZmZlcjtcbiAgICAgICAgdmFyIG1hcmtlciA9IFNFUklBTElaRURfTUFSS0VSO1xuXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgICBidWZmZXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIG1hcmtlciArPSBUWVBFX0FSUkFZQlVGRkVSO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZmVyID0gdmFsdWUuYnVmZmVyO1xuXG4gICAgICAgICAgICBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBJbnQ4QXJyYXldJykge1xuICAgICAgICAgICAgICAgIG1hcmtlciArPSBUWVBFX0lOVDhBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBVaW50OEFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9VSU5UOEFSUkFZO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9VSU5UOENMQU1QRURBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBJbnQxNkFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9JTlQxNkFSUkFZO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IFVpbnQxNkFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9VSU5UMTZBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBJbnQzMkFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9JTlQzMkFSUkFZO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IFVpbnQzMkFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9VSU5UMzJBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBGbG9hdDMyQXJyYXldJykge1xuICAgICAgICAgICAgICAgIG1hcmtlciArPSBUWVBFX0ZMT0FUMzJBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBGbG9hdDY0QXJyYXldJykge1xuICAgICAgICAgICAgICAgIG1hcmtlciArPSBUWVBFX0ZMT0FUNjRBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IHR5cGUgZm9yIEJpbmFyeUFycmF5JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2sobWFya2VyICsgYnVmZmVyVG9TdHJpbmcoYnVmZmVyKSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IEJsb2JdJykge1xuICAgICAgICAvLyBDb252ZXIgdGhlIGJsb2IgdG8gYSBiaW5hcnlBcnJheSBhbmQgdGhlbiB0byBhIHN0cmluZy5cbiAgICAgICAgdmFyIGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gQmFja3dhcmRzLWNvbXBhdGlibGUgcHJlZml4IGZvciB0aGUgYmxvYiB0eXBlLlxuICAgICAgICAgICAgdmFyIHN0ciA9IEJMT0JfVFlQRV9QUkVGSVggKyB2YWx1ZS50eXBlICsgJ34nICsgYnVmZmVyVG9TdHJpbmcodGhpcy5yZXN1bHQpO1xuXG4gICAgICAgICAgICBjYWxsYmFjayhTRVJJQUxJWkVEX01BUktFUiArIFRZUEVfQkxPQiArIHN0cik7XG4gICAgICAgIH07XG5cbiAgICAgICAgZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDb3VsZG4ndCBjb252ZXJ0IHZhbHVlIGludG8gYSBKU09OIHN0cmluZzogXCIsIHZhbHVlKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIERlc2VyaWFsaXplIGRhdGEgd2UndmUgaW5zZXJ0ZWQgaW50byBhIHZhbHVlIGNvbHVtbi9maWVsZC4gV2UgcGxhY2Vcbi8vIHNwZWNpYWwgbWFya2VycyBpbnRvIG91ciBzdHJpbmdzIHRvIG1hcmsgdGhlbSBhcyBlbmNvZGVkOyB0aGlzIGlzbid0XG4vLyBhcyBuaWNlIGFzIGEgbWV0YSBmaWVsZCwgYnV0IGl0J3MgdGhlIG9ubHkgc2FuZSB0aGluZyB3ZSBjYW4gZG8gd2hpbHN0XG4vLyBrZWVwaW5nIGxvY2FsU3RvcmFnZSBzdXBwb3J0IGludGFjdC5cbi8vXG4vLyBPZnRlbnRpbWVzIHRoaXMgd2lsbCBqdXN0IGRlc2VyaWFsaXplIEpTT04gY29udGVudCwgYnV0IGlmIHdlIGhhdmUgYVxuLy8gc3BlY2lhbCBtYXJrZXIgKFNFUklBTElaRURfTUFSS0VSLCBkZWZpbmVkIGFib3ZlKSwgd2Ugd2lsbCBleHRyYWN0XG4vLyBzb21lIGtpbmQgb2YgYXJyYXlidWZmZXIvYmluYXJ5IGRhdGEvdHlwZWQgYXJyYXkgb3V0IG9mIHRoZSBzdHJpbmcuXG5mdW5jdGlvbiBkZXNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgIC8vIElmIHdlIGhhdmVuJ3QgbWFya2VkIHRoaXMgc3RyaW5nIGFzIGJlaW5nIHNwZWNpYWxseSBzZXJpYWxpemVkIChpLmUuXG4gICAgLy8gc29tZXRoaW5nIG90aGVyIHRoYW4gc2VyaWFsaXplZCBKU09OKSwgd2UgY2FuIGp1c3QgcmV0dXJuIGl0IGFuZCBiZVxuICAgIC8vIGRvbmUgd2l0aCBpdC5cbiAgICBpZiAodmFsdWUuc3Vic3RyaW5nKDAsIFNFUklBTElaRURfTUFSS0VSX0xFTkdUSCkgIT09IFNFUklBTElaRURfTUFSS0VSKSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgZGVhbHMgd2l0aCBkZXNlcmlhbGl6aW5nIHNvbWUga2luZCBvZiBCbG9iIG9yXG4gICAgLy8gVHlwZWRBcnJheS4gRmlyc3Qgd2Ugc2VwYXJhdGUgb3V0IHRoZSB0eXBlIG9mIGRhdGEgd2UncmUgZGVhbGluZ1xuICAgIC8vIHdpdGggZnJvbSB0aGUgZGF0YSBpdHNlbGYuXG4gICAgdmFyIHNlcmlhbGl6ZWRTdHJpbmcgPSB2YWx1ZS5zdWJzdHJpbmcoVFlQRV9TRVJJQUxJWkVEX01BUktFUl9MRU5HVEgpO1xuICAgIHZhciB0eXBlID0gdmFsdWUuc3Vic3RyaW5nKFNFUklBTElaRURfTUFSS0VSX0xFTkdUSCwgVFlQRV9TRVJJQUxJWkVEX01BUktFUl9MRU5HVEgpO1xuXG4gICAgdmFyIGJsb2JUeXBlO1xuICAgIC8vIEJhY2t3YXJkcy1jb21wYXRpYmxlIGJsb2IgdHlwZSBzZXJpYWxpemF0aW9uIHN0cmF0ZWd5LlxuICAgIC8vIERCcyBjcmVhdGVkIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgbG9jYWxGb3JhZ2Ugd2lsbCBzaW1wbHkgbm90IGhhdmUgdGhlIGJsb2IgdHlwZS5cbiAgICBpZiAodHlwZSA9PT0gVFlQRV9CTE9CICYmIEJMT0JfVFlQRV9QUkVGSVhfUkVHRVgudGVzdChzZXJpYWxpemVkU3RyaW5nKSkge1xuICAgICAgICB2YXIgbWF0Y2hlciA9IHNlcmlhbGl6ZWRTdHJpbmcubWF0Y2goQkxPQl9UWVBFX1BSRUZJWF9SRUdFWCk7XG4gICAgICAgIGJsb2JUeXBlID0gbWF0Y2hlclsxXTtcbiAgICAgICAgc2VyaWFsaXplZFN0cmluZyA9IHNlcmlhbGl6ZWRTdHJpbmcuc3Vic3RyaW5nKG1hdGNoZXJbMF0ubGVuZ3RoKTtcbiAgICB9XG4gICAgdmFyIGJ1ZmZlciA9IHN0cmluZ1RvQnVmZmVyKHNlcmlhbGl6ZWRTdHJpbmcpO1xuXG4gICAgLy8gUmV0dXJuIHRoZSByaWdodCB0eXBlIGJhc2VkIG9uIHRoZSBjb2RlL3R5cGUgc2V0IGR1cmluZ1xuICAgIC8vIHNlcmlhbGl6YXRpb24uXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgVFlQRV9BUlJBWUJVRkZFUjpcbiAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIGNhc2UgVFlQRV9CTE9COlxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogYmxvYlR5cGUgfSk7XG4gICAgICAgIGNhc2UgVFlQRV9JTlQ4QVJSQVk6XG4gICAgICAgICAgICByZXR1cm4gbmV3IEludDhBcnJheShidWZmZXIpO1xuICAgICAgICBjYXNlIFRZUEVfVUlOVDhBUlJBWTpcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICAgICAgICBjYXNlIFRZUEVfVUlOVDhDTEFNUEVEQVJSQVk6XG4gICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGJ1ZmZlcik7XG4gICAgICAgIGNhc2UgVFlQRV9JTlQxNkFSUkFZOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnQxNkFycmF5KGJ1ZmZlcik7XG4gICAgICAgIGNhc2UgVFlQRV9VSU5UMTZBUlJBWTpcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDE2QXJyYXkoYnVmZmVyKTtcbiAgICAgICAgY2FzZSBUWVBFX0lOVDMyQVJSQVk6XG4gICAgICAgICAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoYnVmZmVyKTtcbiAgICAgICAgY2FzZSBUWVBFX1VJTlQzMkFSUkFZOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICAgICAgICBjYXNlIFRZUEVfRkxPQVQzMkFSUkFZOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtcbiAgICAgICAgY2FzZSBUWVBFX0ZMT0FUNjRBUlJBWTpcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KGJ1ZmZlcik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua293biB0eXBlOiAnICsgdHlwZSk7XG4gICAgfVxufVxuXG52YXIgbG9jYWxmb3JhZ2VTZXJpYWxpemVyID0ge1xuICAgIHNlcmlhbGl6ZTogc2VyaWFsaXplLFxuICAgIGRlc2VyaWFsaXplOiBkZXNlcmlhbGl6ZSxcbiAgICBzdHJpbmdUb0J1ZmZlcjogc3RyaW5nVG9CdWZmZXIsXG4gICAgYnVmZmVyVG9TdHJpbmc6IGJ1ZmZlclRvU3RyaW5nXG59O1xuXG4vKlxuICogSW5jbHVkZXMgY29kZSBmcm9tOlxuICpcbiAqIGJhc2U2NC1hcnJheWJ1ZmZlclxuICogaHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlclxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBOaWtsYXMgdm9uIEhlcnR6ZW5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVEYlRhYmxlKHQsIGRiSW5mbywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHtcbiAgICB0LmV4ZWN1dGVTcWwoJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICcgKyBkYkluZm8uc3RvcmVOYW1lICsgJyAnICsgJyhpZCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBrZXkgdW5pcXVlLCB2YWx1ZSknLCBbXSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spO1xufVxuXG4vLyBPcGVuIHRoZSBXZWJTUUwgZGF0YWJhc2UgKGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBvbmUgaWYgb25lIGRpZG4ndFxuLy8gcHJldmlvdXNseSBleGlzdCksIHVzaW5nIGFueSBvcHRpb25zIHNldCBpbiB0aGUgY29uZmlnLlxuZnVuY3Rpb24gX2luaXRTdG9yYWdlJDEob3B0aW9ucykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGJJbmZvID0ge1xuICAgICAgICBkYjogbnVsbFxuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBmb3IgKHZhciBpIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRiSW5mb1tpXSA9IHR5cGVvZiBvcHRpb25zW2ldICE9PSAnc3RyaW5nJyA/IG9wdGlvbnNbaV0udG9TdHJpbmcoKSA6IG9wdGlvbnNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGJJbmZvUHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAvLyBPcGVuIHRoZSBkYXRhYmFzZTsgdGhlIG9wZW5EYXRhYmFzZSBBUEkgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAgICAgIC8vIGNyZWF0ZSBpdCBmb3IgdXMgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRiSW5mby5kYiA9IG9wZW5EYXRhYmFzZShkYkluZm8ubmFtZSwgU3RyaW5nKGRiSW5mby52ZXJzaW9uKSwgZGJJbmZvLmRlc2NyaXB0aW9uLCBkYkluZm8uc2l6ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgb3VyIGtleS92YWx1ZSB0YWJsZSBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgICBkYkluZm8uZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIGNyZWF0ZURiVGFibGUodCwgZGJJbmZvLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5fZGJJbmZvID0gZGJJbmZvO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0LCBlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGRiSW5mby5zZXJpYWxpemVyID0gbG9jYWxmb3JhZ2VTZXJpYWxpemVyO1xuICAgIHJldHVybiBkYkluZm9Qcm9taXNlO1xufVxuXG5mdW5jdGlvbiB0cnlFeGVjdXRlU3FsKHQsIGRiSW5mbywgc3FsU3RhdGVtZW50LCBhcmdzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaykge1xuICAgIHQuZXhlY3V0ZVNxbChzcWxTdGF0ZW1lbnQsIGFyZ3MsIGNhbGxiYWNrLCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09IGVycm9yLlNZTlRBWF9FUlIpIHtcbiAgICAgICAgICAgIHQuZXhlY3V0ZVNxbCgnU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyICcgKyBcIldIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZSA9ID9cIiwgW2RiSW5mby5zdG9yZU5hbWVdLCBmdW5jdGlvbiAodCwgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0cy5yb3dzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdGFibGUgaXMgbWlzc2luZyAod2FzIGRlbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlLWNyZWF0ZSBpdCB0YWJsZSBhbmQgcmV0cnlcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRGJUYWJsZSh0LCBkYkluZm8sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuZXhlY3V0ZVNxbChzcWxTdGF0ZW1lbnQsIGFyZ3MsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjayh0LCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvckNhbGxiYWNrKHQsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH0sIGVycm9yQ2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBnZXRJdGVtJDEoa2V5LCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGtleSA9IG5vcm1hbGl6ZUtleShrZXkpO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgICAgIGRiSW5mby5kYi50cmFuc2FjdGlvbihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHRyeUV4ZWN1dGVTcWwodCwgZGJJbmZvLCAnU0VMRUNUICogRlJPTSAnICsgZGJJbmZvLnN0b3JlTmFtZSArICcgV0hFUkUga2V5ID0gPyBMSU1JVCAxJywgW2tleV0sIGZ1bmN0aW9uICh0LCByZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSByZXN1bHRzLnJvd3MubGVuZ3RoID8gcmVzdWx0cy5yb3dzLml0ZW0oMCkudmFsdWUgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGlzIHNlcmlhbGl6ZWQgY29udGVudCB3ZSBuZWVkIHRvXG4gICAgICAgICAgICAgICAgICAgIC8vIHVucGFjay5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGJJbmZvLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBpdGVyYXRlJDEoaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcblxuICAgICAgICAgICAgZGJJbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdHJ5RXhlY3V0ZVNxbCh0LCBkYkluZm8sICdTRUxFQ1QgKiBGUk9NICcgKyBkYkluZm8uc3RvcmVOYW1lLCBbXSwgZnVuY3Rpb24gKHQsIHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZXN1bHRzLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByb3dzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHJvd3MuaXRlbShpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhpcyBpcyBzZXJpYWxpemVkIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gdW5wYWNrLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRiSW5mby5zZXJpYWxpemVyLmRlc2VyaWFsaXplKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZXJhdG9yKHJlc3VsdCwgaXRlbS5rZXksIGkgKyAxKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdm9pZCgwKSBwcmV2ZW50cyBwcm9ibGVtcyB3aXRoIHJlZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYHVuZGVmaW5lZGAuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0LCBlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIF9zZXRJdGVtKGtleSwgdmFsdWUsIGNhbGxiYWNrLCByZXRyaWVzTGVmdCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGtleSA9IG5vcm1hbGl6ZUtleShrZXkpO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gVGhlIGxvY2FsU3RvcmFnZSBBUEkgZG9lc24ndCByZXR1cm4gdW5kZWZpbmVkIHZhbHVlcyBpbiBhblxuICAgICAgICAgICAgLy8gXCJleHBlY3RlZFwiIHdheSwgc28gdW5kZWZpbmVkIGlzIGFsd2F5cyBjYXN0IHRvIG51bGwgaW4gYWxsXG4gICAgICAgICAgICAvLyBkcml2ZXJzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2xvY2FsRm9yYWdlL3B1bGwvNDJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTYXZlIHRoZSBvcmlnaW5hbCB2YWx1ZSB0byBwYXNzIHRvIHRoZSBjYWxsYmFjay5cbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHZhciBkYkluZm8gPSBzZWxmLl9kYkluZm87XG4gICAgICAgICAgICBkYkluZm8uc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUsIGZ1bmN0aW9uICh2YWx1ZSwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYkluZm8uZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeUV4ZWN1dGVTcWwodCwgZGJJbmZvLCAnSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyAnICsgZGJJbmZvLnN0b3JlTmFtZSArICcgJyArICcoa2V5LCB2YWx1ZSkgVkFMVUVTICg/LCA/KScsIFtrZXksIHZhbHVlXSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChzcWxFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIGZhaWxlZDsgY2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHNlZSBpZiBpdCdzIGEgcXVvdGEgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3FsRXJyb3IuY29kZSA9PT0gc3FsRXJyb3IuUVVPVEFfRVJSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgcmVqZWN0IHRoZSBjYWxsYmFjayBvdXRyaWdodCBmb3Igbm93LCBidXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCdzIHdvcnRoIHRyeWluZyB0byByZS1ydW4gdGhlIHRyYW5zYWN0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIHVzZXIgYWNjZXB0cyB0aGUgcHJvbXB0IHRvIHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vcmUgc3RvcmFnZSBvbiBTYWZhcmksIHRoaXMgZXJyb3Igd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIGNhbGxlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyeSB0byByZS1ydW4gdGhlIHRyYW5zYWN0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXRyaWVzTGVmdCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShfc2V0SXRlbS5hcHBseShzZWxmLCBba2V5LCBvcmlnaW5hbFZhbHVlLCBjYWxsYmFjaywgcmV0cmllc0xlZnQgLSAxXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChzcWxFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBzZXRJdGVtJDEoa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX3NldEl0ZW0uYXBwbHkodGhpcywgW2tleSwgdmFsdWUsIGNhbGxiYWNrLCAxXSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUl0ZW0kMShrZXksIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAga2V5ID0gbm9ybWFsaXplS2V5KGtleSk7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGJJbmZvID0gc2VsZi5fZGJJbmZvO1xuICAgICAgICAgICAgZGJJbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdHJ5RXhlY3V0ZVNxbCh0LCBkYkluZm8sICdERUxFVEUgRlJPTSAnICsgZGJJbmZvLnN0b3JlTmFtZSArICcgV0hFUkUga2V5ID0gPycsIFtrZXldLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBEZWxldGVzIGV2ZXJ5IGl0ZW0gaW4gdGhlIHRhYmxlLlxuLy8gVE9ETzogRmluZCBvdXQgaWYgdGhpcyByZXNldHMgdGhlIEFVVE9fSU5DUkVNRU5UIG51bWJlci5cbmZ1bmN0aW9uIGNsZWFyJDEoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGJJbmZvID0gc2VsZi5fZGJJbmZvO1xuICAgICAgICAgICAgZGJJbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdHJ5RXhlY3V0ZVNxbCh0LCBkYkluZm8sICdERUxFVEUgRlJPTSAnICsgZGJJbmZvLnN0b3JlTmFtZSwgW10sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0LCBlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIERvZXMgYSBzaW1wbGUgYENPVU5UKGtleSlgIHRvIGdldCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHN0b3JlZCBpblxuLy8gbG9jYWxGb3JhZ2UuXG5mdW5jdGlvbiBsZW5ndGgkMShjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYkluZm8gPSBzZWxmLl9kYkluZm87XG4gICAgICAgICAgICBkYkluZm8uZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAvLyBBaGhoLCBTUUwgbWFrZXMgdGhpcyBvbmUgc29vb29vbyBlYXN5LlxuICAgICAgICAgICAgICAgIHRyeUV4ZWN1dGVTcWwodCwgZGJJbmZvLCAnU0VMRUNUIENPVU5UKGtleSkgYXMgYyBGUk9NICcgKyBkYkluZm8uc3RvcmVOYW1lLCBbXSwgZnVuY3Rpb24gKHQsIHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHJlc3VsdHMucm93cy5pdGVtKDApLmM7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBSZXR1cm4gdGhlIGtleSBsb2NhdGVkIGF0IGtleSBpbmRleCBYOyBlc3NlbnRpYWxseSBnZXRzIHRoZSBrZXkgZnJvbSBhXG4vLyBgV0hFUkUgaWQgPSA/YC4gVGhpcyBpcyB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IEkgY2FuIHRoaW5rIHRvIGltcGxlbWVudFxuLy8gdGhpcyByYXJlbHktdXNlZCAoaW4gbXkgZXhwZXJpZW5jZSkgcGFydCBvZiB0aGUgQVBJLCBidXQgaXQgY2FuIHNlZW1cbi8vIGluY29uc2lzdGVudCwgYmVjYXVzZSB3ZSBkbyBgSU5TRVJUIE9SIFJFUExBQ0UgSU5UT2Agb24gYHNldEl0ZW0oKWAsIHNvXG4vLyB0aGUgSUQgb2YgZWFjaCBrZXkgd2lsbCBjaGFuZ2UgZXZlcnkgdGltZSBpdCdzIHVwZGF0ZWQuIFBlcmhhcHMgYSBzdG9yZWRcbi8vIHByb2NlZHVyZSBmb3IgdGhlIGBzZXRJdGVtKClgIFNRTCB3b3VsZCBzb2x2ZSB0aGlzIHByb2JsZW0/XG4vLyBUT0RPOiBEb24ndCBjaGFuZ2UgSUQgb24gYHNldEl0ZW0oKWAuXG5mdW5jdGlvbiBrZXkkMShuLCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYkluZm8gPSBzZWxmLl9kYkluZm87XG4gICAgICAgICAgICBkYkluZm8uZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB0cnlFeGVjdXRlU3FsKHQsIGRiSW5mbywgJ1NFTEVDVCBrZXkgRlJPTSAnICsgZGJJbmZvLnN0b3JlTmFtZSArICcgV0hFUkUgaWQgPSA/IExJTUlUIDEnLCBbbiArIDFdLCBmdW5jdGlvbiAodCwgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVzdWx0cy5yb3dzLmxlbmd0aCA/IHJlc3VsdHMucm93cy5pdGVtKDApLmtleSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBrZXlzJDEoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGJJbmZvID0gc2VsZi5fZGJJbmZvO1xuICAgICAgICAgICAgZGJJbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdHJ5RXhlY3V0ZVNxbCh0LCBkYkluZm8sICdTRUxFQ1Qga2V5IEZST00gJyArIGRiSW5mby5zdG9yZU5hbWUsIFtdLCBmdW5jdGlvbiAodCwgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5yb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2gocmVzdWx0cy5yb3dzLml0ZW0oaSkua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoa2V5cyk7XG4gICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHQsIGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlbXCJjYXRjaFwiXShyZWplY3QpO1xuICAgIH0pO1xuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRhdGFiYXNlLyNkYXRhYmFzZXNcbi8vID4gVGhlcmUgaXMgbm8gd2F5IHRvIGVudW1lcmF0ZSBvciBkZWxldGUgdGhlIGRhdGFiYXNlcyBhdmFpbGFibGUgZm9yIGFuIG9yaWdpbiBmcm9tIHRoaXMgQVBJLlxuZnVuY3Rpb24gZ2V0QWxsU3RvcmVOYW1lcyhkYikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIHQuZXhlY3V0ZVNxbCgnU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyICcgKyBcIldIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZSA8PiAnX19XZWJLaXREYXRhYmFzZUluZm9UYWJsZV9fJ1wiLCBbXSwgZnVuY3Rpb24gKHQsIHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RvcmVOYW1lcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVOYW1lcy5wdXNoKHJlc3VsdHMucm93cy5pdGVtKGkpLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICBkYjogZGIsXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlTmFtZXM6IHN0b3JlTmFtZXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0LCBlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKHNxbEVycm9yKSB7XG4gICAgICAgICAgICByZWplY3Qoc3FsRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZHJvcEluc3RhbmNlJDEob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IGdldENhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICB2YXIgY3VycmVudENvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zICE9PSAnZnVuY3Rpb24nICYmIG9wdGlvbnMgfHwge307XG4gICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8IGN1cnJlbnRDb25maWcubmFtZTtcbiAgICAgICAgb3B0aW9ucy5zdG9yZU5hbWUgPSBvcHRpb25zLnN0b3JlTmFtZSB8fCBjdXJyZW50Q29uZmlnLnN0b3JlTmFtZTtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHByb21pc2U7XG4gICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgcHJvbWlzZSA9IFByb21pc2UkMS5yZWplY3QoJ0ludmFsaWQgYXJndW1lbnRzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgIHZhciBkYjtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm5hbWUgPT09IGN1cnJlbnRDb25maWcubmFtZSkge1xuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgZGIgcmVmZXJlbmNlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgZGIgPSBzZWxmLl9kYkluZm8uZGI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRiID0gb3BlbkRhdGFiYXNlKG9wdGlvbnMubmFtZSwgJycsICcnLCAwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnN0b3JlTmFtZSkge1xuICAgICAgICAgICAgICAgIC8vIGRyb3AgYWxsIGRhdGFiYXNlIHRhYmxlc1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZ2V0QWxsU3RvcmVOYW1lcyhkYikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgZGI6IGRiLFxuICAgICAgICAgICAgICAgICAgICBzdG9yZU5hbWVzOiBbb3B0aW9ucy5zdG9yZU5hbWVdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKG9wZXJhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICBvcGVyYXRpb25JbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGRyb3BUYWJsZShzdG9yZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmV4ZWN1dGVTcWwoJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgKyBzdG9yZU5hbWUsIFtdLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG9wZXJhdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG9wZXJhdGlvbkluZm8uc3RvcmVOYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5wdXNoKGRyb3BUYWJsZShvcGVyYXRpb25JbmZvLnN0b3JlTmFtZXNbaV0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIFByb21pc2UkMS5hbGwob3BlcmF0aW9ucykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHNxbEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChzcWxFcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxudmFyIHdlYlNRTFN0b3JhZ2UgPSB7XG4gICAgX2RyaXZlcjogJ3dlYlNRTFN0b3JhZ2UnLFxuICAgIF9pbml0U3RvcmFnZTogX2luaXRTdG9yYWdlJDEsXG4gICAgX3N1cHBvcnQ6IGlzV2ViU1FMVmFsaWQoKSxcbiAgICBpdGVyYXRlOiBpdGVyYXRlJDEsXG4gICAgZ2V0SXRlbTogZ2V0SXRlbSQxLFxuICAgIHNldEl0ZW06IHNldEl0ZW0kMSxcbiAgICByZW1vdmVJdGVtOiByZW1vdmVJdGVtJDEsXG4gICAgY2xlYXI6IGNsZWFyJDEsXG4gICAgbGVuZ3RoOiBsZW5ndGgkMSxcbiAgICBrZXk6IGtleSQxLFxuICAgIGtleXM6IGtleXMkMSxcbiAgICBkcm9wSW5zdGFuY2U6IGRyb3BJbnN0YW5jZSQxXG59O1xuXG5mdW5jdGlvbiBpc0xvY2FsU3RvcmFnZVZhbGlkKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbG9jYWxTdG9yYWdlICE9PSAndW5kZWZpbmVkJyAmJiAnc2V0SXRlbScgaW4gbG9jYWxTdG9yYWdlICYmXG4gICAgICAgIC8vIGluIElFOCB0eXBlb2YgbG9jYWxTdG9yYWdlLnNldEl0ZW0gPT09ICdvYmplY3QnXG4gICAgICAgICEhbG9jYWxTdG9yYWdlLnNldEl0ZW07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfZ2V0S2V5UHJlZml4KG9wdGlvbnMsIGRlZmF1bHRDb25maWcpIHtcbiAgICB2YXIga2V5UHJlZml4ID0gb3B0aW9ucy5uYW1lICsgJy8nO1xuXG4gICAgaWYgKG9wdGlvbnMuc3RvcmVOYW1lICE9PSBkZWZhdWx0Q29uZmlnLnN0b3JlTmFtZSkge1xuICAgICAgICBrZXlQcmVmaXggKz0gb3B0aW9ucy5zdG9yZU5hbWUgKyAnLyc7XG4gICAgfVxuICAgIHJldHVybiBrZXlQcmVmaXg7XG59XG5cbi8vIENoZWNrIGlmIGxvY2FsU3RvcmFnZSB0aHJvd3Mgd2hlbiBzYXZpbmcgYW4gaXRlbVxuZnVuY3Rpb24gY2hlY2tJZkxvY2FsU3RvcmFnZVRocm93cygpIHtcbiAgICB2YXIgbG9jYWxTdG9yYWdlVGVzdEtleSA9ICdfbG9jYWxmb3JhZ2Vfc3VwcG9ydF90ZXN0JztcblxuICAgIHRyeSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZVRlc3RLZXksIHRydWUpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShsb2NhbFN0b3JhZ2VUZXN0S2V5KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbi8vIENoZWNrIGlmIGxvY2FsU3RvcmFnZSBpcyB1c2FibGUgYW5kIGFsbG93cyB0byBzYXZlIGFuIGl0ZW1cbi8vIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiBsb2NhbFN0b3JhZ2UgaXMgdXNhYmxlIGluIFNhZmFyaSBQcml2YXRlIEJyb3dzaW5nXG4vLyBtb2RlLCBvciBpbiBhbnkgb3RoZXIgY2FzZSB3aGVyZSB0aGUgYXZhaWxhYmxlIHF1b3RhIGZvciBsb2NhbFN0b3JhZ2Vcbi8vIGlzIDAgYW5kIHRoZXJlIHdhc24ndCBhbnkgc2F2ZWQgaXRlbXMgeWV0LlxuZnVuY3Rpb24gX2lzTG9jYWxTdG9yYWdlVXNhYmxlKCkge1xuICAgIHJldHVybiAhY2hlY2tJZkxvY2FsU3RvcmFnZVRocm93cygpIHx8IGxvY2FsU3RvcmFnZS5sZW5ndGggPiAwO1xufVxuXG4vLyBDb25maWcgdGhlIGxvY2FsU3RvcmFnZSBiYWNrZW5kLCB1c2luZyBvcHRpb25zIHNldCBpbiB0aGUgY29uZmlnLlxuZnVuY3Rpb24gX2luaXRTdG9yYWdlJDIob3B0aW9ucykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGJJbmZvID0ge307XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICBkYkluZm9baV0gPSBvcHRpb25zW2ldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGJJbmZvLmtleVByZWZpeCA9IF9nZXRLZXlQcmVmaXgob3B0aW9ucywgc2VsZi5fZGVmYXVsdENvbmZpZyk7XG5cbiAgICBpZiAoIV9pc0xvY2FsU3RvcmFnZVVzYWJsZSgpKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCk7XG4gICAgfVxuXG4gICAgc2VsZi5fZGJJbmZvID0gZGJJbmZvO1xuICAgIGRiSW5mby5zZXJpYWxpemVyID0gbG9jYWxmb3JhZ2VTZXJpYWxpemVyO1xuXG4gICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG59XG5cbi8vIFJlbW92ZSBhbGwga2V5cyBmcm9tIHRoZSBkYXRhc3RvcmUsIGVmZmVjdGl2ZWx5IGRlc3Ryb3lpbmcgYWxsIGRhdGEgaW5cbi8vIHRoZSBhcHAncyBrZXkvdmFsdWUgc3RvcmUhXG5mdW5jdGlvbiBjbGVhciQyKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBwcm9taXNlID0gc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIga2V5UHJlZml4ID0gc2VsZi5fZGJJbmZvLmtleVByZWZpeDtcblxuICAgICAgICBmb3IgKHZhciBpID0gbG9jYWxTdG9yYWdlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gbG9jYWxTdG9yYWdlLmtleShpKTtcblxuICAgICAgICAgICAgaWYgKGtleS5pbmRleE9mKGtleVByZWZpeCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBSZXRyaWV2ZSBhbiBpdGVtIGZyb20gdGhlIHN0b3JlLiBVbmxpa2UgdGhlIG9yaWdpbmFsIGFzeW5jX3N0b3JhZ2Vcbi8vIGxpYnJhcnkgaW4gR2FpYSwgd2UgZG9uJ3QgbW9kaWZ5IHJldHVybiB2YWx1ZXMgYXQgYWxsLiBJZiBhIGtleSdzIHZhbHVlXG4vLyBpcyBgdW5kZWZpbmVkYCwgd2UgcGFzcyB0aGF0IHZhbHVlIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEl0ZW0kMihrZXksIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAga2V5ID0gbm9ybWFsaXplS2V5KGtleSk7XG5cbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgdmFyIHJlc3VsdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGRiSW5mby5rZXlQcmVmaXggKyBrZXkpO1xuXG4gICAgICAgIC8vIElmIGEgcmVzdWx0IHdhcyBmb3VuZCwgcGFyc2UgaXQgZnJvbSB0aGUgc2VyaWFsaXplZFxuICAgICAgICAvLyBzdHJpbmcgaW50byBhIEpTIG9iamVjdC4gSWYgcmVzdWx0IGlzbid0IHRydXRoeSwgdGhlIGtleVxuICAgICAgICAvLyBpcyBsaWtlbHkgdW5kZWZpbmVkIGFuZCB3ZSdsbCBwYXNzIGl0IHN0cmFpZ2h0IHRvIHRoZVxuICAgICAgICAvLyBjYWxsYmFjay5cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZGJJbmZvLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBJdGVyYXRlIG92ZXIgYWxsIGl0ZW1zIGluIHRoZSBzdG9yZS5cbmZ1bmN0aW9uIGl0ZXJhdGUkMihpdGVyYXRvciwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgdmFyIGtleVByZWZpeCA9IGRiSW5mby5rZXlQcmVmaXg7XG4gICAgICAgIHZhciBrZXlQcmVmaXhMZW5ndGggPSBrZXlQcmVmaXgubGVuZ3RoO1xuICAgICAgICB2YXIgbGVuZ3RoID0gbG9jYWxTdG9yYWdlLmxlbmd0aDtcblxuICAgICAgICAvLyBXZSB1c2UgYSBkZWRpY2F0ZWQgaXRlcmF0b3IgaW5zdGVhZCBvZiB0aGUgYGlgIHZhcmlhYmxlIGJlbG93XG4gICAgICAgIC8vIHNvIG90aGVyIGtleXMgd2UgZmV0Y2ggaW4gbG9jYWxTdG9yYWdlIGFyZW4ndCBjb3VudGVkIGluXG4gICAgICAgIC8vIHRoZSBgaXRlcmF0aW9uTnVtYmVyYCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGBpdGVyYXRlKClgXG4gICAgICAgIC8vIGNhbGxiYWNrLlxuICAgICAgICAvL1xuICAgICAgICAvLyBTZWU6IGdpdGh1Yi5jb20vbW96aWxsYS9sb2NhbEZvcmFnZS9wdWxsLzQzNSNkaXNjdXNzaW9uX3IzODA2MTUzMFxuICAgICAgICB2YXIgaXRlcmF0aW9uTnVtYmVyID0gMTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gbG9jYWxTdG9yYWdlLmtleShpKTtcbiAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZihrZXlQcmVmaXgpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgICAgICAvLyBJZiBhIHJlc3VsdCB3YXMgZm91bmQsIHBhcnNlIGl0IGZyb20gdGhlIHNlcmlhbGl6ZWRcbiAgICAgICAgICAgIC8vIHN0cmluZyBpbnRvIGEgSlMgb2JqZWN0LiBJZiByZXN1bHQgaXNuJ3QgdHJ1dGh5LCB0aGVcbiAgICAgICAgICAgIC8vIGtleSBpcyBsaWtlbHkgdW5kZWZpbmVkIGFuZCB3ZSdsbCBwYXNzIGl0IHN0cmFpZ2h0XG4gICAgICAgICAgICAvLyB0byB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGRiSW5mby5zZXJpYWxpemVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFsdWUgPSBpdGVyYXRvcih2YWx1ZSwga2V5LnN1YnN0cmluZyhrZXlQcmVmaXhMZW5ndGgpLCBpdGVyYXRpb25OdW1iZXIrKyk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBTYW1lIGFzIGxvY2FsU3RvcmFnZSdzIGtleSgpIG1ldGhvZCwgZXhjZXB0IHRha2VzIGEgY2FsbGJhY2suXG5mdW5jdGlvbiBrZXkkMihuLCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGxvY2FsU3RvcmFnZS5rZXkobik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBwcmVmaXggZnJvbSB0aGUga2V5LCBpZiBhIGtleSBpcyBmb3VuZC5cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZyhkYkluZm8ua2V5UHJlZml4Lmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxuZnVuY3Rpb24ga2V5cyQyKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBwcm9taXNlID0gc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGJJbmZvID0gc2VsZi5fZGJJbmZvO1xuICAgICAgICB2YXIgbGVuZ3RoID0gbG9jYWxTdG9yYWdlLmxlbmd0aDtcbiAgICAgICAgdmFyIGtleXMgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaXRlbUtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG4gICAgICAgICAgICBpZiAoaXRlbUtleS5pbmRleE9mKGRiSW5mby5rZXlQcmVmaXgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKGl0ZW1LZXkuc3Vic3RyaW5nKGRiSW5mby5rZXlQcmVmaXgubGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ga2V5cztcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIFN1cHBseSB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIGRhdGFzdG9yZSB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG5mdW5jdGlvbiBsZW5ndGgkMihjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYua2V5cygpLnRoZW4oZnVuY3Rpb24gKGtleXMpIHtcbiAgICAgICAgcmV0dXJuIGtleXMubGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxuLy8gUmVtb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgc3RvcmUsIG5pY2UgYW5kIHNpbXBsZS5cbmZ1bmN0aW9uIHJlbW92ZUl0ZW0kMihrZXksIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAga2V5ID0gbm9ybWFsaXplS2V5KGtleSk7XG5cbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZGJJbmZvLmtleVByZWZpeCArIGtleSk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBTZXQgYSBrZXkncyB2YWx1ZSBhbmQgcnVuIGFuIG9wdGlvbmFsIGNhbGxiYWNrIG9uY2UgdGhlIHZhbHVlIGlzIHNldC5cbi8vIFVubGlrZSBHYWlhJ3MgaW1wbGVtZW50YXRpb24sIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBwYXNzZWQgdGhlIHZhbHVlLFxuLy8gaW4gY2FzZSB5b3Ugd2FudCB0byBvcGVyYXRlIG9uIHRoYXQgdmFsdWUgb25seSBhZnRlciB5b3UncmUgc3VyZSBpdFxuLy8gc2F2ZWQsIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuXG5mdW5jdGlvbiBzZXRJdGVtJDIoa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBrZXkgPSBub3JtYWxpemVLZXkoa2V5KTtcblxuICAgIHZhciBwcm9taXNlID0gc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBDb252ZXJ0IHVuZGVmaW5lZCB2YWx1ZXMgdG8gbnVsbC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvbG9jYWxGb3JhZ2UvcHVsbC80MlxuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2F2ZSB0aGUgb3JpZ2luYWwgdmFsdWUgdG8gcGFzcyB0byB0aGUgY2FsbGJhY2suXG4gICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgICAgIGRiSW5mby5zZXJpYWxpemVyLnNlcmlhbGl6ZSh2YWx1ZSwgZnVuY3Rpb24gKHZhbHVlLCBlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShkYkluZm8ua2V5UHJlZml4ICsga2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9yaWdpbmFsVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UgY2FwYWNpdHkgZXhjZWVkZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzcGVjaWZpYyBlcnJvci9ldmVudC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdRdW90YUV4Y2VlZGVkRXJyb3InIHx8IGUubmFtZSA9PT0gJ05TX0VSUk9SX0RPTV9RVU9UQV9SRUFDSEVEJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIGRyb3BJbnN0YW5jZSQyKG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBnZXRDYWxsYmFjay5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zICE9PSAnZnVuY3Rpb24nICYmIG9wdGlvbnMgfHwge307XG4gICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRDb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgICAgICBvcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgY3VycmVudENvbmZpZy5uYW1lO1xuICAgICAgICBvcHRpb25zLnN0b3JlTmFtZSA9IG9wdGlvbnMuc3RvcmVOYW1lIHx8IGN1cnJlbnRDb25maWcuc3RvcmVOYW1lO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZTtcbiAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICBwcm9taXNlID0gUHJvbWlzZSQxLnJlamVjdCgnSW52YWxpZCBhcmd1bWVudHMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnN0b3JlTmFtZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUob3B0aW9ucy5uYW1lICsgJy8nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShfZ2V0S2V5UHJlZml4KG9wdGlvbnMsIHNlbGYuX2RlZmF1bHRDb25maWcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoa2V5UHJlZml4KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gbG9jYWxTdG9yYWdlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoa2V5LmluZGV4T2Yoa2V5UHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxudmFyIGxvY2FsU3RvcmFnZVdyYXBwZXIgPSB7XG4gICAgX2RyaXZlcjogJ2xvY2FsU3RvcmFnZVdyYXBwZXInLFxuICAgIF9pbml0U3RvcmFnZTogX2luaXRTdG9yYWdlJDIsXG4gICAgX3N1cHBvcnQ6IGlzTG9jYWxTdG9yYWdlVmFsaWQoKSxcbiAgICBpdGVyYXRlOiBpdGVyYXRlJDIsXG4gICAgZ2V0SXRlbTogZ2V0SXRlbSQyLFxuICAgIHNldEl0ZW06IHNldEl0ZW0kMixcbiAgICByZW1vdmVJdGVtOiByZW1vdmVJdGVtJDIsXG4gICAgY2xlYXI6IGNsZWFyJDIsXG4gICAgbGVuZ3RoOiBsZW5ndGgkMixcbiAgICBrZXk6IGtleSQyLFxuICAgIGtleXM6IGtleXMkMixcbiAgICBkcm9wSW5zdGFuY2U6IGRyb3BJbnN0YW5jZSQyXG59O1xuXG52YXIgc2FtZVZhbHVlID0gZnVuY3Rpb24gc2FtZVZhbHVlKHgsIHkpIHtcbiAgICByZXR1cm4geCA9PT0geSB8fCB0eXBlb2YgeCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHkgPT09ICdudW1iZXInICYmIGlzTmFOKHgpICYmIGlzTmFOKHkpO1xufTtcblxudmFyIGluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMoYXJyYXksIHNlYXJjaEVsZW1lbnQpIHtcbiAgICB2YXIgbGVuID0gYXJyYXkubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgICBpZiAoc2FtZVZhbHVlKGFycmF5W2ldLCBzZWFyY2hFbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcblxuLy8gRHJpdmVycyBhcmUgc3RvcmVkIGhlcmUgd2hlbiBgZGVmaW5lRHJpdmVyKClgIGlzIGNhbGxlZC5cbi8vIFRoZXkgYXJlIHNoYXJlZCBhY3Jvc3MgYWxsIGluc3RhbmNlcyBvZiBsb2NhbEZvcmFnZS5cbnZhciBEZWZpbmVkRHJpdmVycyA9IHt9O1xuXG52YXIgRHJpdmVyU3VwcG9ydCA9IHt9O1xuXG52YXIgRGVmYXVsdERyaXZlcnMgPSB7XG4gICAgSU5ERVhFRERCOiBhc3luY1N0b3JhZ2UsXG4gICAgV0VCU1FMOiB3ZWJTUUxTdG9yYWdlLFxuICAgIExPQ0FMU1RPUkFHRTogbG9jYWxTdG9yYWdlV3JhcHBlclxufTtcblxudmFyIERlZmF1bHREcml2ZXJPcmRlciA9IFtEZWZhdWx0RHJpdmVycy5JTkRFWEVEREIuX2RyaXZlciwgRGVmYXVsdERyaXZlcnMuV0VCU1FMLl9kcml2ZXIsIERlZmF1bHREcml2ZXJzLkxPQ0FMU1RPUkFHRS5fZHJpdmVyXTtcblxudmFyIE9wdGlvbmFsRHJpdmVyTWV0aG9kcyA9IFsnZHJvcEluc3RhbmNlJ107XG5cbnZhciBMaWJyYXJ5TWV0aG9kcyA9IFsnY2xlYXInLCAnZ2V0SXRlbScsICdpdGVyYXRlJywgJ2tleScsICdrZXlzJywgJ2xlbmd0aCcsICdyZW1vdmVJdGVtJywgJ3NldEl0ZW0nXS5jb25jYXQoT3B0aW9uYWxEcml2ZXJNZXRob2RzKTtcblxudmFyIERlZmF1bHRDb25maWcgPSB7XG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGRyaXZlcjogRGVmYXVsdERyaXZlck9yZGVyLnNsaWNlKCksXG4gICAgbmFtZTogJ2xvY2FsZm9yYWdlJyxcbiAgICAvLyBEZWZhdWx0IERCIHNpemUgaXMgX0pVU1QgVU5ERVJfIDVNQiwgYXMgaXQncyB0aGUgaGlnaGVzdCBzaXplXG4gICAgLy8gd2UgY2FuIHVzZSB3aXRob3V0IGEgcHJvbXB0LlxuICAgIHNpemU6IDQ5ODA3MzYsXG4gICAgc3RvcmVOYW1lOiAna2V5dmFsdWVwYWlycycsXG4gICAgdmVyc2lvbjogMS4wXG59O1xuXG5mdW5jdGlvbiBjYWxsV2hlblJlYWR5KGxvY2FsRm9yYWdlSW5zdGFuY2UsIGxpYnJhcnlNZXRob2QpIHtcbiAgICBsb2NhbEZvcmFnZUluc3RhbmNlW2xpYnJhcnlNZXRob2RdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2FyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBsb2NhbEZvcmFnZUluc3RhbmNlLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxGb3JhZ2VJbnN0YW5jZVtsaWJyYXJ5TWV0aG9kXS5hcHBseShsb2NhbEZvcmFnZUluc3RhbmNlLCBfYXJncyk7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGV4dGVuZCgpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICAgIGlmIChhcmcpIHtcbiAgICAgICAgICAgIGZvciAodmFyIF9rZXkgaW4gYXJnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFyZy5oYXNPd25Qcm9wZXJ0eShfa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShhcmdbX2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbMF1bX2tleV0gPSBhcmdbX2tleV0uc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1swXVtfa2V5XSA9IGFyZ1tfa2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhcmd1bWVudHNbMF07XG59XG5cbnZhciBMb2NhbEZvcmFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBMb2NhbEZvcmFnZShvcHRpb25zKSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbEZvcmFnZSk7XG5cbiAgICAgICAgZm9yICh2YXIgZHJpdmVyVHlwZUtleSBpbiBEZWZhdWx0RHJpdmVycykge1xuICAgICAgICAgICAgaWYgKERlZmF1bHREcml2ZXJzLmhhc093blByb3BlcnR5KGRyaXZlclR5cGVLZXkpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyaXZlciA9IERlZmF1bHREcml2ZXJzW2RyaXZlclR5cGVLZXldO1xuICAgICAgICAgICAgICAgIHZhciBkcml2ZXJOYW1lID0gZHJpdmVyLl9kcml2ZXI7XG4gICAgICAgICAgICAgICAgdGhpc1tkcml2ZXJUeXBlS2V5XSA9IGRyaXZlck5hbWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIURlZmluZWREcml2ZXJzW2RyaXZlck5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHByb21pc2UsXG4gICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBkZWZhdWx0IGRyaXZlcnMgY2FuIGJlIGRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gYSBibG9ja2luZyBtYW5uZXJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVEcml2ZXIoZHJpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kZWZhdWx0Q29uZmlnID0gZXh0ZW5kKHt9LCBEZWZhdWx0Q29uZmlnKTtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gZXh0ZW5kKHt9LCB0aGlzLl9kZWZhdWx0Q29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5fZHJpdmVyU2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5faW5pdERyaXZlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlYWR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2RiSW5mbyA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fd3JhcExpYnJhcnlNZXRob2RzV2l0aFJlYWR5KCk7XG4gICAgICAgIHRoaXMuc2V0RHJpdmVyKHRoaXMuX2NvbmZpZy5kcml2ZXIpW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKCkge30pO1xuICAgIH1cblxuICAgIC8vIFNldCBhbnkgY29uZmlnIHZhbHVlcyBmb3IgbG9jYWxGb3JhZ2U7IGNhbiBiZSBjYWxsZWQgYW55dGltZSBiZWZvcmVcbiAgICAvLyB0aGUgZmlyc3QgQVBJIGNhbGwgKGUuZy4gYGdldEl0ZW1gLCBgc2V0SXRlbWApLlxuICAgIC8vIFdlIGxvb3AgdGhyb3VnaCBvcHRpb25zIHNvIHdlIGRvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBjb25maWdcbiAgICAvLyB2YWx1ZXMuXG5cblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5jb25maWcgPSBmdW5jdGlvbiBjb25maWcob3B0aW9ucykge1xuICAgICAgICAvLyBJZiB0aGUgb3B0aW9ucyBhcmd1bWVudCBpcyBhbiBvYmplY3QsIHdlIHVzZSBpdCB0byBzZXQgdmFsdWVzLlxuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIHJldHVybiBlaXRoZXIgYSBzcGVjaWZpZWQgY29uZmlnIHZhbHVlIG9yIGFsbFxuICAgICAgICAvLyBjb25maWcgdmFsdWVzLlxuICAgICAgICBpZiAoKHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvcHRpb25zKSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAvLyBJZiBsb2NhbGZvcmFnZSBpcyByZWFkeSBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQsIHdlIGNhbid0IHNldFxuICAgICAgICAgICAgLy8gYW55IG5ldyBjb25maWd1cmF0aW9uIHZhbHVlcy4gSW5zdGVhZCwgd2UgcmV0dXJuIGFuIGVycm9yLlxuICAgICAgICAgICAgaWYgKHRoaXMuX3JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIkNhbid0IGNhbGwgY29uZmlnKCkgYWZ0ZXIgbG9jYWxmb3JhZ2UgXCIgKyAnaGFzIGJlZW4gdXNlZC4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09ICdzdG9yZU5hbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNbaV0gPSBvcHRpb25zW2ldLnJlcGxhY2UoL1xcVy9nLCAnXycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpID09PSAndmVyc2lvbicgJiYgdHlwZW9mIG9wdGlvbnNbaV0gIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0RhdGFiYXNlIHZlcnNpb24gbXVzdCBiZSBhIG51bWJlci4nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jb25maWdbaV0gPSBvcHRpb25zW2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhZnRlciBhbGwgY29uZmlnIG9wdGlvbnMgYXJlIHNldCBhbmRcbiAgICAgICAgICAgIC8vIHRoZSBkcml2ZXIgb3B0aW9uIGlzIHVzZWQsIHRyeSBzZXR0aW5nIGl0XG4gICAgICAgICAgICBpZiAoJ2RyaXZlcicgaW4gb3B0aW9ucyAmJiBvcHRpb25zLmRyaXZlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldERyaXZlcih0aGlzLl9jb25maWcuZHJpdmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnW29wdGlvbnNdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBVc2VkIHRvIGRlZmluZSBhIGN1c3RvbSBkcml2ZXIsIHNoYXJlZCBhY3Jvc3MgYWxsIGluc3RhbmNlcyBvZlxuICAgIC8vIGxvY2FsRm9yYWdlLlxuXG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuZGVmaW5lRHJpdmVyID0gZnVuY3Rpb24gZGVmaW5lRHJpdmVyKGRyaXZlck9iamVjdCwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyaXZlck5hbWUgPSBkcml2ZXJPYmplY3QuX2RyaXZlcjtcbiAgICAgICAgICAgICAgICB2YXIgY29tcGxpYW5jZUVycm9yID0gbmV3IEVycm9yKCdDdXN0b20gZHJpdmVyIG5vdCBjb21wbGlhbnQ7IHNlZSAnICsgJ2h0dHBzOi8vbW96aWxsYS5naXRodWIuaW8vbG9jYWxGb3JhZ2UvI2RlZmluZWRyaXZlcicpO1xuXG4gICAgICAgICAgICAgICAgLy8gQSBkcml2ZXIgbmFtZSBzaG91bGQgYmUgZGVmaW5lZCBhbmQgbm90IG92ZXJsYXAgd2l0aCB0aGVcbiAgICAgICAgICAgICAgICAvLyBsaWJyYXJ5LWRlZmluZWQsIGRlZmF1bHQgZHJpdmVycy5cbiAgICAgICAgICAgICAgICBpZiAoIWRyaXZlck9iamVjdC5fZHJpdmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChjb21wbGlhbmNlRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRyaXZlck1ldGhvZHMgPSBMaWJyYXJ5TWV0aG9kcy5jb25jYXQoJ19pbml0U3RvcmFnZScpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkcml2ZXJNZXRob2RzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkcml2ZXJNZXRob2ROYW1lID0gZHJpdmVyTWV0aG9kc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGVyZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQgc2hvdWxkIGJlIGEgbWV0aG9kIGV2ZW4gd2hlbiBvcHRpb25hbFxuICAgICAgICAgICAgICAgICAgICB2YXIgaXNSZXF1aXJlZCA9ICFpbmNsdWRlcyhPcHRpb25hbERyaXZlck1ldGhvZHMsIGRyaXZlck1ldGhvZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGlzUmVxdWlyZWQgfHwgZHJpdmVyT2JqZWN0W2RyaXZlck1ldGhvZE5hbWVdKSAmJiB0eXBlb2YgZHJpdmVyT2JqZWN0W2RyaXZlck1ldGhvZE5hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoY29tcGxpYW5jZUVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjb25maWd1cmVNaXNzaW5nTWV0aG9kcyA9IGZ1bmN0aW9uIGNvbmZpZ3VyZU1pc3NpbmdNZXRob2RzKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWV0aG9kTm90SW1wbGVtZW50ZWRGYWN0b3J5ID0gZnVuY3Rpb24gbWV0aG9kTm90SW1wbGVtZW50ZWRGYWN0b3J5KG1ldGhvZE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdNZXRob2QgJyArIG1ldGhvZE5hbWUgKyAnIGlzIG5vdCBpbXBsZW1lbnRlZCBieSB0aGUgY3VycmVudCBkcml2ZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UkMS5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfbGVuID0gT3B0aW9uYWxEcml2ZXJNZXRob2RzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3B0aW9uYWxEcml2ZXJNZXRob2QgPSBPcHRpb25hbERyaXZlck1ldGhvZHNbX2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkcml2ZXJPYmplY3Rbb3B0aW9uYWxEcml2ZXJNZXRob2RdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyT2JqZWN0W29wdGlvbmFsRHJpdmVyTWV0aG9kXSA9IG1ldGhvZE5vdEltcGxlbWVudGVkRmFjdG9yeShvcHRpb25hbERyaXZlck1ldGhvZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uZmlndXJlTWlzc2luZ01ldGhvZHMoKTtcblxuICAgICAgICAgICAgICAgIHZhciBzZXREcml2ZXJTdXBwb3J0ID0gZnVuY3Rpb24gc2V0RHJpdmVyU3VwcG9ydChzdXBwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChEZWZpbmVkRHJpdmVyc1tkcml2ZXJOYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCdSZWRlZmluaW5nIExvY2FsRm9yYWdlIGRyaXZlcjogJyArIGRyaXZlck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIERlZmluZWREcml2ZXJzW2RyaXZlck5hbWVdID0gZHJpdmVyT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBEcml2ZXJTdXBwb3J0W2RyaXZlck5hbWVdID0gc3VwcG9ydDtcbiAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgdXNlIGEgdGhlbiwgc28gdGhhdCB3ZSBjYW4gZGVmaW5lXG4gICAgICAgICAgICAgICAgICAgIC8vIGRyaXZlcnMgdGhhdCBoYXZlIHNpbXBsZSBfc3VwcG9ydCBtZXRob2RzXG4gICAgICAgICAgICAgICAgICAgIC8vIGluIGEgYmxvY2tpbmcgbWFubmVyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKCdfc3VwcG9ydCcgaW4gZHJpdmVyT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkcml2ZXJPYmplY3QuX3N1cHBvcnQgJiYgdHlwZW9mIGRyaXZlck9iamVjdC5fc3VwcG9ydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyT2JqZWN0Ll9zdXBwb3J0KCkudGhlbihzZXREcml2ZXJTdXBwb3J0LCByZWplY3QpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RHJpdmVyU3VwcG9ydCghIWRyaXZlck9iamVjdC5fc3VwcG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXREcml2ZXJTdXBwb3J0KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4ZWN1dGVUd29DYWxsYmFja3MocHJvbWlzZSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9O1xuXG4gICAgTG9jYWxGb3JhZ2UucHJvdG90eXBlLmRyaXZlciA9IGZ1bmN0aW9uIGRyaXZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RyaXZlciB8fCBudWxsO1xuICAgIH07XG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuZ2V0RHJpdmVyID0gZnVuY3Rpb24gZ2V0RHJpdmVyKGRyaXZlck5hbWUsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBnZXREcml2ZXJQcm9taXNlID0gRGVmaW5lZERyaXZlcnNbZHJpdmVyTmFtZV0gPyBQcm9taXNlJDEucmVzb2x2ZShEZWZpbmVkRHJpdmVyc1tkcml2ZXJOYW1lXSkgOiBQcm9taXNlJDEucmVqZWN0KG5ldyBFcnJvcignRHJpdmVyIG5vdCBmb3VuZC4nKSk7XG5cbiAgICAgICAgZXhlY3V0ZVR3b0NhbGxiYWNrcyhnZXREcml2ZXJQcm9taXNlLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7XG4gICAgICAgIHJldHVybiBnZXREcml2ZXJQcm9taXNlO1xuICAgIH07XG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuZ2V0U2VyaWFsaXplciA9IGZ1bmN0aW9uIGdldFNlcmlhbGl6ZXIoY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIHNlcmlhbGl6ZXJQcm9taXNlID0gUHJvbWlzZSQxLnJlc29sdmUobG9jYWxmb3JhZ2VTZXJpYWxpemVyKTtcbiAgICAgICAgZXhlY3V0ZVR3b0NhbGxiYWNrcyhzZXJpYWxpemVyUHJvbWlzZSwgY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplclByb21pc2U7XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5yZWFkeSA9IGZ1bmN0aW9uIHJlYWR5KGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgICB2YXIgcHJvbWlzZSA9IHNlbGYuX2RyaXZlclNldC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLl9yZWFkeSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gc2VsZi5faW5pdERyaXZlcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZHk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4ZWN1dGVUd29DYWxsYmFja3MocHJvbWlzZSwgY2FsbGJhY2ssIGNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5zZXREcml2ZXIgPSBmdW5jdGlvbiBzZXREcml2ZXIoZHJpdmVycywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGlmICghaXNBcnJheShkcml2ZXJzKSkge1xuICAgICAgICAgICAgZHJpdmVycyA9IFtkcml2ZXJzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdXBwb3J0ZWREcml2ZXJzID0gdGhpcy5fZ2V0U3VwcG9ydGVkRHJpdmVycyhkcml2ZXJzKTtcblxuICAgICAgICBmdW5jdGlvbiBzZXREcml2ZXJUb0NvbmZpZygpIHtcbiAgICAgICAgICAgIHNlbGYuX2NvbmZpZy5kcml2ZXIgPSBzZWxmLmRyaXZlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZXh0ZW5kU2VsZldpdGhEcml2ZXIoZHJpdmVyKSB7XG4gICAgICAgICAgICBzZWxmLl9leHRlbmQoZHJpdmVyKTtcbiAgICAgICAgICAgIHNldERyaXZlclRvQ29uZmlnKCk7XG5cbiAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gc2VsZi5faW5pdFN0b3JhZ2Uoc2VsZi5fY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluaXREcml2ZXIoc3VwcG9ydGVkRHJpdmVycykge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudERyaXZlckluZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGRyaXZlclByb21pc2VMb29wKCkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudERyaXZlckluZGV4IDwgc3VwcG9ydGVkRHJpdmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcml2ZXJOYW1lID0gc3VwcG9ydGVkRHJpdmVyc1tjdXJyZW50RHJpdmVySW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERyaXZlckluZGV4Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RiSW5mbyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkeSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldERyaXZlcihkcml2ZXJOYW1lKS50aGVuKGV4dGVuZFNlbGZXaXRoRHJpdmVyKVtcImNhdGNoXCJdKGRyaXZlclByb21pc2VMb29wKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldERyaXZlclRvQ29uZmlnKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignTm8gYXZhaWxhYmxlIHN0b3JhZ2UgbWV0aG9kIGZvdW5kLicpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9kcml2ZXJTZXQgPSBQcm9taXNlJDEucmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RyaXZlclNldDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZHJpdmVyUHJvbWlzZUxvb3AoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBtaWdodCBiZSBhIGRyaXZlciBpbml0aWFsaXphdGlvbiBpbiBwcm9ncmVzc1xuICAgICAgICAvLyBzbyB3YWl0IGZvciBpdCB0byBmaW5pc2ggaW4gb3JkZXIgdG8gYXZvaWQgYSBwb3NzaWJsZVxuICAgICAgICAvLyByYWNlIGNvbmRpdGlvbiB0byBzZXQgX2RiSW5mb1xuICAgICAgICB2YXIgb2xkRHJpdmVyU2V0RG9uZSA9IHRoaXMuX2RyaXZlclNldCAhPT0gbnVsbCA/IHRoaXMuX2RyaXZlclNldFtcImNhdGNoXCJdKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICB9KSA6IFByb21pc2UkMS5yZXNvbHZlKCk7XG5cbiAgICAgICAgdGhpcy5fZHJpdmVyU2V0ID0gb2xkRHJpdmVyU2V0RG9uZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkcml2ZXJOYW1lID0gc3VwcG9ydGVkRHJpdmVyc1swXTtcbiAgICAgICAgICAgIHNlbGYuX2RiSW5mbyA9IG51bGw7XG4gICAgICAgICAgICBzZWxmLl9yZWFkeSA9IG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxmLmdldERyaXZlcihkcml2ZXJOYW1lKS50aGVuKGZ1bmN0aW9uIChkcml2ZXIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLl9kcml2ZXIgPSBkcml2ZXIuX2RyaXZlcjtcbiAgICAgICAgICAgICAgICBzZXREcml2ZXJUb0NvbmZpZygpO1xuICAgICAgICAgICAgICAgIHNlbGYuX3dyYXBMaWJyYXJ5TWV0aG9kc1dpdGhSZWFkeSgpO1xuICAgICAgICAgICAgICAgIHNlbGYuX2luaXREcml2ZXIgPSBpbml0RHJpdmVyKHN1cHBvcnRlZERyaXZlcnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0RHJpdmVyVG9Db25maWcoKTtcbiAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignTm8gYXZhaWxhYmxlIHN0b3JhZ2UgbWV0aG9kIGZvdW5kLicpO1xuICAgICAgICAgICAgc2VsZi5fZHJpdmVyU2V0ID0gUHJvbWlzZSQxLnJlamVjdChlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5fZHJpdmVyU2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICBleGVjdXRlVHdvQ2FsbGJhY2tzKHRoaXMuX2RyaXZlclNldCwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJpdmVyU2V0O1xuICAgIH07XG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuc3VwcG9ydHMgPSBmdW5jdGlvbiBzdXBwb3J0cyhkcml2ZXJOYW1lKSB7XG4gICAgICAgIHJldHVybiAhIURyaXZlclN1cHBvcnRbZHJpdmVyTmFtZV07XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5fZXh0ZW5kID0gZnVuY3Rpb24gX2V4dGVuZChsaWJyYXJ5TWV0aG9kc0FuZFByb3BlcnRpZXMpIHtcbiAgICAgICAgZXh0ZW5kKHRoaXMsIGxpYnJhcnlNZXRob2RzQW5kUHJvcGVydGllcyk7XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5fZ2V0U3VwcG9ydGVkRHJpdmVycyA9IGZ1bmN0aW9uIF9nZXRTdXBwb3J0ZWREcml2ZXJzKGRyaXZlcnMpIHtcbiAgICAgICAgdmFyIHN1cHBvcnRlZERyaXZlcnMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGRyaXZlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBkcml2ZXJOYW1lID0gZHJpdmVyc1tpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1cHBvcnRzKGRyaXZlck5hbWUpKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydGVkRHJpdmVycy5wdXNoKGRyaXZlck5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWREcml2ZXJzO1xuICAgIH07XG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuX3dyYXBMaWJyYXJ5TWV0aG9kc1dpdGhSZWFkeSA9IGZ1bmN0aW9uIF93cmFwTGlicmFyeU1ldGhvZHNXaXRoUmVhZHkoKSB7XG4gICAgICAgIC8vIEFkZCBhIHN0dWIgZm9yIGVhY2ggZHJpdmVyIEFQSSBtZXRob2QgdGhhdCBkZWxheXMgdGhlIGNhbGwgdG8gdGhlXG4gICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgZHJpdmVyIG1ldGhvZCB1bnRpbCBsb2NhbEZvcmFnZSBpcyByZWFkeS4gVGhlc2Ugc3R1YnNcbiAgICAgICAgLy8gd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgZHJpdmVyIG1ldGhvZHMgYXMgc29vbiBhcyB0aGUgZHJpdmVyIGlzXG4gICAgICAgIC8vIGxvYWRlZCwgc28gdGhlcmUgaXMgbm8gcGVyZm9ybWFuY2UgaW1wYWN0LlxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gTGlicmFyeU1ldGhvZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGNhbGxXaGVuUmVhZHkodGhpcywgTGlicmFyeU1ldGhvZHNbaV0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5jcmVhdGVJbnN0YW5jZSA9IGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2NhbEZvcmFnZShvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIExvY2FsRm9yYWdlO1xufSgpO1xuXG4vLyBUaGUgYWN0dWFsIGxvY2FsRm9yYWdlIG9iamVjdCB0aGF0IHdlIGV4cG9zZSBhcyBhIG1vZHVsZSBvciB2aWEgYVxuLy8gZ2xvYmFsLiBJdCdzIGV4dGVuZGVkIGJ5IHB1bGxpbmcgaW4gb25lIG9mIG91ciBvdGhlciBsaWJyYXJpZXMuXG5cblxudmFyIGxvY2FsZm9yYWdlX2pzID0gbmV3IExvY2FsRm9yYWdlKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYWxmb3JhZ2VfanM7XG5cbn0se1wiM1wiOjN9XX0se30sWzRdKSg0KVxufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/localforage/dist/localforage.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash._arraycopy/index.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash._arraycopy/index.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.0.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9hcnJheWNvcHkvaW5kZXguanM/NDk4YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC5fYXJyYXljb3B5L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBsb2Rhc2ggMy4wLjAgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2Rlcm4gbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjcuMCA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTUgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cblxuLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheUNvcHkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlDb3B5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash._arraycopy/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash._arrayeach/index.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash._arrayeach/index.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.0.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands or `this` binding.\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 `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9hcnJheWVhY2gvaW5kZXguanM/M2JkYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2guX2FycmF5ZWFjaC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIDMuMC4wIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS43LjAgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBjYWxsYmFja1xuICogc2hvcnRoYW5kcyBvciBgdGhpc2AgYmluZGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RWFjaDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash._arrayeach/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash._basecopy/index.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash._basecopy/index.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9iYXNlY29weS9pbmRleC5qcz9iY2VhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTyxXQUFXO0FBQzdCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2guX2Jhc2Vjb3B5L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBsb2Rhc2ggMy4wLjEgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2Rlcm4gbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTUgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQ29weShzb3VyY2UsIHByb3BzLCBvYmplY3QpIHtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ29weTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash._basecopy/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash._basefor/index.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash._basefor/index.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * Creates a base function for methods like `_.forIn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = baseFor;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9iYXNlZm9yL2luZGV4LmpzP2MzMGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9iYXNlZm9yL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBsb2Rhc2ggMy4wLjMgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTYgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNiBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9ySW5gIGFuZCBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXNcbiAqIG92ZXIgYG9iamVjdGAgcHJvcGVydGllcyByZXR1cm5lZCBieSBga2V5c0Z1bmNgIGludm9raW5nIGBpdGVyYXRlZWAgZm9yXG4gKiBlYWNoIHByb3BlcnR5LiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHlcbiAqIHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash._basefor/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash._bindcallback/index.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/lodash._bindcallback/index.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\n/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = bindCallback;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9iaW5kY2FsbGJhY2svaW5kZXguanM/NmNmYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9iaW5kY2FsbGJhY2svaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAzLjAuMSAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTUgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUNhbGxiYWNrYCB3aGljaCBvbmx5IHN1cHBvcnRzIGB0aGlzYCBiaW5kaW5nXG4gKiBhbmQgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtudW1iZXJ9IFthcmdDb3VudF0gVGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBiaW5kQ2FsbGJhY2soZnVuYywgdGhpc0FyZywgYXJnQ291bnQpIHtcbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gaWRlbnRpdHk7XG4gIH1cbiAgaWYgKHRoaXNBcmcgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmdW5jO1xuICB9XG4gIHN3aXRjaCAoYXJnQ291bnQpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICB9O1xuICAgIGNhc2UgNDogcmV0dXJuIGZ1bmN0aW9uKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfTtcbiAgICBjYXNlIDU6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3RoZXIsIGtleSwgb2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgdmFsdWUsIG90aGVyLCBrZXksIG9iamVjdCwgc291cmNlKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IHByb3ZpZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbGl0eVxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICpcbiAqIF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0O1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmluZENhbGxiYWNrO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash._bindcallback/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash._createassigner/index.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/lodash._createassigner/index.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * lodash 3.1.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar bindCallback = __webpack_require__(/*! lodash._bindcallback */ \"./node_modules/lodash._bindcallback/index.js\"),\n isIterateeCall = __webpack_require__(/*! lodash._isiterateecall */ \"./node_modules/lodash._isiterateecall/index.js\"),\n restParam = __webpack_require__(/*! lodash.restparam */ \"./node_modules/lodash.restparam/index.js\");\n\n/**\n * Creates a function that assigns properties of source object(s) to a given\n * destination object.\n *\n * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9jcmVhdGVhc3NpZ25lci9pbmRleC5qcz81ZDY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQywwRUFBc0I7QUFDakQscUJBQXFCLG1CQUFPLENBQUMsOEVBQXdCO0FBQ3JELGdCQUFnQixtQkFBTyxDQUFDLGtFQUFrQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9jcmVhdGVhc3NpZ25lci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIDMuMS4xIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgYmluZENhbGxiYWNrID0gcmVxdWlyZSgnbG9kYXNoLl9iaW5kY2FsbGJhY2snKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJ2xvZGFzaC5faXNpdGVyYXRlZWNhbGwnKSxcbiAgICByZXN0UGFyYW0gPSByZXF1aXJlKCdsb2Rhc2gucmVzdHBhcmFtJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYXNzaWducyBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3QocykgdG8gYSBnaXZlblxuICogZGVzdGluYXRpb24gb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGBfLmFzc2lnbmAsIGBfLmRlZmF1bHRzYCwgYW5kIGBfLm1lcmdlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIHJlc3RQYXJhbShmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAyID8gc291cmNlc1tsZW5ndGggLSAyXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdGhpc0FyZyA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBiaW5kQ2FsbGJhY2soY3VzdG9taXplciwgdGhpc0FyZywgNSk7XG4gICAgICBsZW5ndGggLT0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiB0aGlzQXJnID09ICdmdW5jdGlvbicgPyB0aGlzQXJnIDogdW5kZWZpbmVkO1xuICAgICAgbGVuZ3RoIC09IChjdXN0b21pemVyID8gMSA6IDApO1xuICAgIH1cbiAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH1cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash._createassigner/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash._getnative/index.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash._getnative/index.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.9.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is classified as a `Function` 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 * _.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 older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\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(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = getNative;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9nZXRuYXRpdmUvaW5kZXguanM/ZGE0NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9nZXRuYXRpdmUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAzLjkuMSAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTUgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpID4gNSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZuVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZSBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9ialRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmblRvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXFxcXiQuKis/KClbXFxde318XS9nLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgcmV0dXJuIGlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaSB3aGljaCByZXR1cm4gJ2Z1bmN0aW9uJyBmb3IgcmVnZXhlc1xuICAvLyBhbmQgU2FmYXJpIDggZXF1aXZhbGVudHMgd2hpY2ggcmV0dXJuICdvYmplY3QnIGZvciB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvcnMuXG4gIHJldHVybiBpc09iamVjdCh2YWx1ZSkgJiYgb2JqVG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gZnVuY1RhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICogKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdCgxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIC8vIEF2b2lkIGEgVjggSklUIGJ1ZyBpbiBDaHJvbWUgMTktMjAuXG4gIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05hdGl2ZShBcnJheS5wcm90b3R5cGUucHVzaCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05hdGl2ZShfKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3QoZm5Ub1N0cmluZy5jYWxsKHZhbHVlKSk7XG4gIH1cbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgcmVJc0hvc3RDdG9yLnRlc3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash._getnative/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash._isiterateecall/index.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/lodash._isiterateecall/index.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.0.9 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\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 value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\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(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isIterateeCall;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLl9pc2l0ZXJhdGVlY2FsbC9pbmRleC5qcz8zZTQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2guX2lzaXRlcmF0ZWVjYWxsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBsb2Rhc2ggMy4wLjkgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2Rlcm4gbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTUgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL15cXGQrJC87XG5cbi8qKlxuICogVXNlZCBhcyB0aGUgW21heGltdW0gbGVuZ3RoXShodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtbnVtYmVyLm1heF9zYWZlX2ludGVnZXIpXG4gKiBvZiBhbiBhcnJheS1saWtlIHZhbHVlLlxuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSB2YWx1ZSBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGF2b2lkIGEgW0pJVCBidWddKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OTIpXG4gKiB0aGF0IGFmZmVjdHMgU2FmYXJpIG9uIGF0IGxlYXN0IGlPUyA4LjEtOC4zIEFSTTY0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgXCJsZW5ndGhcIiB2YWx1ZS5cbiAqL1xudmFyIGdldExlbmd0aCA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKGdldExlbmd0aCh2YWx1ZSkpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YWx1ZSA9ICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHwgcmVJc1VpbnQudGVzdCh2YWx1ZSkpID8gK3ZhbHVlIDogLTE7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcbiAgcmV0dXJuIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGg7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpKSB7XG4gICAgdmFyIG90aGVyID0gb2JqZWN0W2luZGV4XTtcbiAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gKHZhbHVlID09PSBvdGhlcikgOiAob3RoZXIgIT09IG90aGVyKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBbYFRvTGVuZ3RoYF0oaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICogKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdCgxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIC8vIEF2b2lkIGEgVjggSklUIGJ1ZyBpbiBDaHJvbWUgMTktMjAuXG4gIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash._isiterateecall/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.isarguments/index.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash.isarguments/index.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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 MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\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/**\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 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\nmodule.exports = isArguments;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzYXJndW1lbnRzL2luZGV4LmpzPzAxMmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0JBQWtCLEVBQUU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC5pc2FyZ3VtZW50cy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9qcXVlcnkub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcbiAgLy8gU2FmYXJpIDguMSBtYWtlcyBgYXJndW1lbnRzLmNhbGxlZWAgZW51bWVyYWJsZSBpbiBzdHJpY3QgbW9kZS5cbiAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAoIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKSB8fCBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBhcmdzVGFnKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA4LTkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXkgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGlzT2JqZWN0KHZhbHVlKSA/IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash.isarguments/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.isarray/index.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash.isarray/index.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.0.4 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is classified as an `Array` 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 * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\n/**\n * Checks if `value` is classified as a `Function` 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 * _.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 older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\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(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = isArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzYXJyYXkvaW5kZXguanM/NTg1MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0JBQWtCLEVBQUU7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzYXJyYXkvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAzLjAuNCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTUgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSA+IDUpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqIFVzZWQgZm9yIG5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmblRvU3RyaW5nID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmpUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZm5Ub1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZywgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0FycmF5ID0gZ2V0TmF0aXZlKEFycmF5LCAnaXNBcnJheScpO1xuXG4vKipcbiAqIFVzZWQgYXMgdGhlIFttYXhpbXVtIGxlbmd0aF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLm1heF9zYWZlX2ludGVnZXIpXG4gKiBvZiBhbiBhcnJheS1saWtlIHZhbHVlLlxuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICByZXR1cm4gaXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gbmF0aXZlSXNBcnJheSB8fCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmIG9ialRvU3RyaW5nLmNhbGwodmFsdWUpID09IGFycmF5VGFnO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmkgd2hpY2ggcmV0dXJuICdmdW5jdGlvbicgZm9yIHJlZ2V4ZXNcbiAgLy8gYW5kIFNhZmFyaSA4IGVxdWl2YWxlbnRzIHdoaWNoIHJldHVybiAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXkgY29uc3RydWN0b3JzLlxuICByZXR1cm4gaXNPYmplY3QodmFsdWUpICYmIG9ialRvU3RyaW5nLmNhbGwodmFsdWUpID09IGZ1bmNUYWc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlIFtsYW5ndWFnZSB0eXBlXShodHRwczovL2VzNS5naXRodWIuaW8vI3g4KSBvZiBgT2JqZWN0YC5cbiAqIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAvLyBBdm9pZCBhIFY4IEpJVCBidWcgaW4gQ2hyb21lIDE5LTIwLlxuICAvLyBTZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTIyOTEgZm9yIG1vcmUgZGV0YWlscy5cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOYXRpdmUoXyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICByZXR1cm4gcmVJc05hdGl2ZS50ZXN0KGZuVG9TdHJpbmcuY2FsbCh2YWx1ZSkpO1xuICB9XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIHJlSXNIb3N0Q3Rvci50ZXN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash.isarray/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.isplainobject/index.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/lodash.isplainobject/index.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * lodash 3.2.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar baseFor = __webpack_require__(/*! lodash._basefor */ \"./node_modules/lodash._basefor/index.js\"),\n isArguments = __webpack_require__(/*! lodash.isarguments */ \"./node_modules/lodash.isarguments/index.js\"),\n keysIn = __webpack_require__(/*! lodash.keysin */ \"./node_modules/lodash.keysin/index.js\");\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/** Used for native 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 [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\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 * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\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 var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzcGxhaW5vYmplY3QvaW5kZXguanM/Y2Q5MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLGdFQUFpQjtBQUN2QyxrQkFBa0IsbUJBQU8sQ0FBQyxzRUFBb0I7QUFDOUMsYUFBYSxtQkFBTyxDQUFDLDREQUFlOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2guaXNwbGFpbm9iamVjdC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIDMuMi4wIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgYmFzZUZvciA9IHJlcXVpcmUoJ2xvZGFzaC5fYmFzZWZvcicpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnbG9kYXNoLmlzYXJndW1lbnRzJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnbG9kYXNoLmtleXNpbicpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqIFVzZWQgZm9yIG5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZSBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9ialRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9ySW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgY2FsbGJhY2tcbiAqIHNob3J0aGFuZHMgYW5kIGB0aGlzYCBiaW5kaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXNJbik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBhc3N1bWVzIG9iamVjdHMgY3JlYXRlZCBieSB0aGUgYE9iamVjdGAgY29uc3RydWN0b3JcbiAqIGhhdmUgbm8gaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICB2YXIgQ3RvcjtcblxuICAvLyBFeGl0IGVhcmx5IGZvciBub24gYE9iamVjdGAgb2JqZWN0cy5cbiAgaWYgKCEoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBvYmpUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBvYmplY3RUYWcgJiYgIWlzQXJndW1lbnRzKHZhbHVlKSkgfHxcbiAgICAgICghaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NvbnN0cnVjdG9yJykgJiYgKEN0b3IgPSB2YWx1ZS5jb25zdHJ1Y3RvciwgdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhKEN0b3IgaW5zdGFuY2VvZiBDdG9yKSkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIElFIDwgOSBpdGVyYXRlcyBpbmhlcml0ZWQgcHJvcGVydGllcyBiZWZvcmUgb3duIHByb3BlcnRpZXMuIElmIHRoZSBmaXJzdFxuICAvLyBpdGVyYXRlZCBwcm9wZXJ0eSBpcyBhbiBvYmplY3QncyBvd24gcHJvcGVydHkgdGhlbiB0aGVyZSBhcmUgbm8gaW5oZXJpdGVkXG4gIC8vIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAgdmFyIHJlc3VsdDtcbiAgLy8gSW4gbW9zdCBlbnZpcm9ubWVudHMgYW4gb2JqZWN0J3Mgb3duIHByb3BlcnRpZXMgYXJlIGl0ZXJhdGVkIGJlZm9yZVxuICAvLyBpdHMgaW5oZXJpdGVkIHByb3BlcnRpZXMuIElmIHRoZSBsYXN0IGl0ZXJhdGVkIHByb3BlcnR5IGlzIGFuIG9iamVjdCdzXG4gIC8vIG93biBwcm9wZXJ0eSB0aGVuIHRoZXJlIGFyZSBubyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICBiYXNlRm9ySW4odmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHQgPSBrZXk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgcmVzdWx0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash.isplainobject/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.istypedarray/index.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/lodash.istypedarray/index.js ***!
|
||
\***************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.0.6 (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 MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\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 a valid array-like length.\n *\n * **Note:** This function is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/6.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,\n * 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 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 typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzdHlwZWRhcnJheS9pbmRleC5qcz81NmUwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2guaXN0eXBlZGFycmF5L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBsb2Rhc2ggMy4wLjYgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW29iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash.istypedarray/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.keys/index.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash.keys/index.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * lodash 3.1.2 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar getNative = __webpack_require__(/*! lodash._getnative */ \"./node_modules/lodash._getnative/index.js\"),\n isArguments = __webpack_require__(/*! lodash.isarguments */ \"./node_modules/lodash.isarguments/index.js\"),\n isArray = __webpack_require__(/*! lodash.isarray */ \"./node_modules/lodash.isarray/index.js\");\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\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 value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\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(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\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/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\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 */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object != 'function' && isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n isProto = typeof Ctor == 'function' && Ctor.prototype === object,\n result = Array(length),\n skipIndexes = length > 0;\n\n while (++index < length) {\n result[index] = (index + '');\n }\n for (var key in object) {\n if (!(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLmtleXMvaW5kZXguanM/YmMxNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsb0VBQW1CO0FBQzNDLGtCQUFrQixtQkFBTyxDQUFDLHNFQUFvQjtBQUM5QyxjQUFjLG1CQUFPLENBQUMsOERBQWdCOztBQUV0QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gua2V5cy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIDMuMS4yIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnbG9kYXNoLl9nZXRuYXRpdmUnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJ2xvZGFzaC5pc2FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCdsb2Rhc2guaXNhcnJheScpO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXlxcZCskLztcblxuLyoqIFVzZWQgZm9yIG5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IGdldE5hdGl2ZShPYmplY3QsICdrZXlzJyk7XG5cbi8qKlxuICogVXNlZCBhcyB0aGUgW21heGltdW0gbGVuZ3RoXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIubWF4X3NhZmVfaW50ZWdlcilcbiAqIG9mIGFuIGFycmF5LWxpa2UgdmFsdWUuXG4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IHZhbHVlIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYXZvaWQgYSBbSklUIGJ1Z10oaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5MilcbiAqIHRoYXQgYWZmZWN0cyBTYWZhcmkgb24gYXQgbGVhc3QgaU9TIDguMS04LjMgQVJNNjQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBcImxlbmd0aFwiIHZhbHVlLlxuICovXG52YXIgZ2V0TGVuZ3RoID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgoZ2V0TGVuZ3RoKHZhbHVlKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhbHVlID0gKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fCByZUlzVWludC50ZXN0KHZhbHVlKSkgPyArdmFsdWUgOiAtMTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuICByZXR1cm4gdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBgT2JqZWN0LmtleXNgIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlXG4gKiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gc2hpbUtleXMob2JqZWN0KSB7XG4gIHZhciBwcm9wcyA9IGtleXNJbihvYmplY3QpLFxuICAgICAgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGgsXG4gICAgICBsZW5ndGggPSBwcm9wc0xlbmd0aCAmJiBvYmplY3QubGVuZ3RoO1xuXG4gIHZhciBhbGxvd0luZGV4ZXMgPSAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmXG4gICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgcHJvcHNMZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuICAgIGlmICgoYWxsb3dJbmRleGVzICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpKSB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICogKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdCgxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIC8vIEF2b2lkIGEgVjggSklUIGJ1ZyBpbiBDaHJvbWUgMTktMjAuXG4gIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xudmFyIGtleXMgPSAhbmF0aXZlS2V5cyA/IHNoaW1LZXlzIDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIHZhciBDdG9yID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3QuY29uc3RydWN0b3I7XG4gIGlmICgodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSA9PT0gb2JqZWN0KSB8fFxuICAgICAgKHR5cGVvZiBvYmplY3QgIT0gJ2Z1bmN0aW9uJyAmJiBpc0FycmF5TGlrZShvYmplY3QpKSkge1xuICAgIHJldHVybiBzaGltS2V5cyhvYmplY3QpO1xuICB9XG4gIHJldHVybiBpc09iamVjdChvYmplY3QpID8gbmF0aXZlS2V5cyhvYmplY3QpIDogW107XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICB9XG4gIHZhciBsZW5ndGggPSBvYmplY3QubGVuZ3RoO1xuICBsZW5ndGggPSAobGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpICYmIGxlbmd0aCkgfHwgMDtcblxuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgIGluZGV4ID0gLTEsXG4gICAgICBpc1Byb3RvID0gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSA9PT0gb2JqZWN0LFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgIHNraXBJbmRleGVzID0gbGVuZ3RoID4gMDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSAoaW5kZXggKyAnJyk7XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKHNraXBJbmRleGVzICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpKSAmJlxuICAgICAgICAhKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash.keys/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.keysin/index.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash.keysin/index.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * lodash 3.0.8 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar isArguments = __webpack_require__(/*! lodash.isarguments */ \"./node_modules/lodash.isarguments/index.js\"),\n isArray = __webpack_require__(/*! lodash.isarray */ \"./node_modules/lodash.isarray/index.js\");\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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 value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\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(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n isProto = typeof Ctor == 'function' && Ctor.prototype === object,\n result = Array(length),\n skipIndexes = length > 0;\n\n while (++index < length) {\n result[index] = (index + '');\n }\n for (var key in object) {\n if (!(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLmtleXNpbi9pbmRleC5qcz9mY2FlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQyxzRUFBb0I7QUFDOUMsY0FBYyxtQkFBTyxDQUFDLDhEQUFnQjs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC5rZXlzaW4vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAzLjAuOCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTUgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xudmFyIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnbG9kYXNoLmlzYXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJ2xvZGFzaC5pc2FycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eXFxkKyQvO1xuXG4vKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIGFzIHRoZSBbbWF4aW11bSBsZW5ndGhdKGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1udW1iZXIubWF4X3NhZmVfaW50ZWdlcilcbiAqIG9mIGFuIGFycmF5LWxpa2UgdmFsdWUuXG4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgdmFsdWUgPSAodHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8IHJlSXNVaW50LnRlc3QodmFsdWUpKSA/ICt2YWx1ZSA6IC0xO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG4gIHJldHVybiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gaXMgYmFzZWQgb24gW2BUb0xlbmd0aGBdKGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlIFtsYW5ndWFnZSB0eXBlXShodHRwczovL2VzNS5naXRodWIuaW8vI3g4KSBvZiBgT2JqZWN0YC5cbiAqIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAvLyBBdm9pZCBhIFY4IEpJVCBidWcgaW4gQ2hyb21lIDE5LTIwLlxuICAvLyBTZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTIyOTEgZm9yIG1vcmUgZGV0YWlscy5cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIH1cbiAgdmFyIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7XG4gIGxlbmd0aCA9IChsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJlxuICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSkgJiYgbGVuZ3RoKSB8fCAwO1xuXG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yLFxuICAgICAgaW5kZXggPSAtMSxcbiAgICAgIGlzUHJvdG8gPSB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlID09PSBvYmplY3QsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBsZW5ndGggPiAwO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IChpbmRleCArICcnKTtcbiAgfVxuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoc2tpcEluZGV4ZXMgJiYgaXNJbmRleChrZXksIGxlbmd0aCkpICYmXG4gICAgICAgICEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash.keysin/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.merge/index.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash.merge/index.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * lodash 3.3.2 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar arrayCopy = __webpack_require__(/*! lodash._arraycopy */ \"./node_modules/lodash._arraycopy/index.js\"),\n arrayEach = __webpack_require__(/*! lodash._arrayeach */ \"./node_modules/lodash._arrayeach/index.js\"),\n createAssigner = __webpack_require__(/*! lodash._createassigner */ \"./node_modules/lodash._createassigner/index.js\"),\n isArguments = __webpack_require__(/*! lodash.isarguments */ \"./node_modules/lodash.isarguments/index.js\"),\n isArray = __webpack_require__(/*! lodash.isarray */ \"./node_modules/lodash.isarray/index.js\"),\n isPlainObject = __webpack_require__(/*! lodash.isplainobject */ \"./node_modules/lodash.isplainobject/index.js\"),\n isTypedArray = __webpack_require__(/*! lodash.istypedarray */ \"./node_modules/lodash.istypedarray/index.js\"),\n keys = __webpack_require__(/*! lodash.keys */ \"./node_modules/lodash.keys/index.js\"),\n toPlainObject = __webpack_require__(/*! lodash.toplainobject */ \"./node_modules/lodash.toplainobject/index.js\");\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\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(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it is invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLm1lcmdlL2luZGV4LmpzP2RhODEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLG9FQUFtQjtBQUMzQyxnQkFBZ0IsbUJBQU8sQ0FBQyxvRUFBbUI7QUFDM0MscUJBQXFCLG1CQUFPLENBQUMsOEVBQXdCO0FBQ3JELGtCQUFrQixtQkFBTyxDQUFDLHNFQUFvQjtBQUM5QyxjQUFjLG1CQUFPLENBQUMsOERBQWdCO0FBQ3RDLG9CQUFvQixtQkFBTyxDQUFDLDBFQUFzQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQyx3RUFBcUI7QUFDaEQsV0FBVyxtQkFBTyxDQUFDLHdEQUFhO0FBQ2hDLG9CQUFvQixtQkFBTyxDQUFDLDBFQUFzQjs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUJBQW1CLEdBQUcsaUJBQWlCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLGVBQWUsWUFBWSxHQUFHLFlBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsVUFBVSxXQUFXLDhCQUE4QixHQUFHLDRCQUE0QjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixVQUFVO0FBQ1Y7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gubWVyZ2UvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAzLjMuMiAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTUgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xudmFyIGFycmF5Q29weSA9IHJlcXVpcmUoJ2xvZGFzaC5fYXJyYXljb3B5JyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnbG9kYXNoLl9hcnJheWVhY2gnKSxcbiAgICBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJ2xvZGFzaC5fY3JlYXRlYXNzaWduZXInKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJ2xvZGFzaC5pc2FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCdsb2Rhc2guaXNhcnJheScpLFxuICAgIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCdsb2Rhc2guaXNwbGFpbm9iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJ2xvZGFzaC5pc3R5cGVkYXJyYXknKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnbG9kYXNoLmtleXMnKSxcbiAgICB0b1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoLnRvcGxhaW5vYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIFVzZWQgYXMgdGhlIFttYXhpbXVtIGxlbmd0aF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLm1heF9zYWZlX2ludGVnZXIpXG4gKiBvZiBhbiBhcnJheS1saWtlIHZhbHVlLlxuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXJndW1lbnQganVnZ2xpbmcsXG4gKiBtdWx0aXBsZSBzb3VyY2VzLCBhbmQgYHRoaXNgIGJpbmRpbmcgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge0FycmF5fSBbc3RhY2tBPVtdXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSBvYmplY3RzLlxuICogQHBhcmFtIHtBcnJheX0gW3N0YWNrQj1bXV0gQXNzb2NpYXRlcyB2YWx1ZXMgd2l0aCBzb3VyY2UgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyLCBzdGFja0EsIHN0YWNrQikge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG4gIHZhciBpc1NyY0FyciA9IGlzQXJyYXlMaWtlKHNvdXJjZSkgJiYgKGlzQXJyYXkoc291cmNlKSB8fCBpc1R5cGVkQXJyYXkoc291cmNlKSksXG4gICAgICBwcm9wcyA9IGlzU3JjQXJyID8gdW5kZWZpbmVkIDoga2V5cyhzb3VyY2UpO1xuXG4gIGFycmF5RWFjaChwcm9wcyB8fCBzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHNyY1ZhbHVlO1xuICAgICAgc3JjVmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0TGlrZShzcmNWYWx1ZSkpIHtcbiAgICAgIHN0YWNrQSB8fCAoc3RhY2tBID0gW10pO1xuICAgICAgc3RhY2tCIHx8IChzdGFja0IgPSBbXSk7XG4gICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2tBLCBzdGFja0IpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICAgIHJlc3VsdCA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKHZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgaXNDb21tb24gPSByZXN1bHQgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIHJlc3VsdCA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKChyZXN1bHQgIT09IHVuZGVmaW5lZCB8fCAoaXNTcmNBcnIgJiYgIShrZXkgaW4gb2JqZWN0KSkpICYmXG4gICAgICAgICAgKGlzQ29tbW9uIHx8IChyZXN1bHQgPT09IHJlc3VsdCA/IChyZXN1bHQgIT09IHZhbHVlKSA6ICh2YWx1ZSA9PT0gdmFsdWUpKSkpIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtzdGFja0E9W11dIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIG9iamVjdHMuXG4gKiBAcGFyYW0ge0FycmF5fSBbc3RhY2tCPVtdXSBBc3NvY2lhdGVzIHZhbHVlcyB3aXRoIHNvdXJjZSBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrQSwgc3RhY2tCKSB7XG4gIHZhciBsZW5ndGggPSBzdGFja0EubGVuZ3RoLFxuICAgICAgc3JjVmFsdWUgPSBzb3VyY2Vba2V5XTtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoc3RhY2tBW2xlbmd0aF0gPT0gc3JjVmFsdWUpIHtcbiAgICAgIG9iamVjdFtrZXldID0gc3RhY2tCW2xlbmd0aF07XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKSA6IHVuZGVmaW5lZCxcbiAgICAgIGlzQ29tbW9uID0gcmVzdWx0ID09PSB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgcmVzdWx0ID0gc3JjVmFsdWU7XG4gICAgaWYgKGlzQXJyYXlMaWtlKHNyY1ZhbHVlKSAmJiAoaXNBcnJheShzcmNWYWx1ZSkgfHwgaXNUeXBlZEFycmF5KHNyY1ZhbHVlKSkpIHtcbiAgICAgIHJlc3VsdCA9IGlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWVcbiAgICAgICAgOiAoaXNBcnJheUxpa2UodmFsdWUpID8gYXJyYXlDb3B5KHZhbHVlKSA6IFtdKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSBpc0FyZ3VtZW50cyh2YWx1ZSlcbiAgICAgICAgPyB0b1BsYWluT2JqZWN0KHZhbHVlKVxuICAgICAgICA6IChpc1BsYWluT2JqZWN0KHZhbHVlKSA/IHZhbHVlIDoge30pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8vIEFkZCB0aGUgc291cmNlIHZhbHVlIHRvIHRoZSBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgYXNzb2NpYXRlXG4gIC8vIGl0IHdpdGggaXRzIG1lcmdlZCB2YWx1ZS5cbiAgc3RhY2tBLnB1c2goc3JjVmFsdWUpO1xuICBzdGFja0IucHVzaChyZXN1bHQpO1xuXG4gIGlmIChpc0NvbW1vbikge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIG9iamVjdFtrZXldID0gbWVyZ2VGdW5jKHJlc3VsdCwgc3JjVmFsdWUsIGN1c3RvbWl6ZXIsIHN0YWNrQSwgc3RhY2tCKTtcbiAgfSBlbHNlIGlmIChyZXN1bHQgPT09IHJlc3VsdCA/IChyZXN1bHQgIT09IHZhbHVlKSA6ICh2YWx1ZSA9PT0gdmFsdWUpKSB7XG4gICAgb2JqZWN0W2tleV0gPSByZXN1bHQ7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IHZhbHVlIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYXZvaWQgYSBbSklUIGJ1Z10oaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5MilcbiAqIHRoYXQgYWZmZWN0cyBTYWZhcmkgb24gYXQgbGVhc3QgaU9TIDguMS04LjMgQVJNNjQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBcImxlbmd0aFwiIHZhbHVlLlxuICovXG52YXIgZ2V0TGVuZ3RoID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgoZ2V0TGVuZ3RoKHZhbHVlKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZSBbbGFuZ3VhZ2UgdHlwZV0oaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4OCkgb2YgYE9iamVjdGAuXG4gKiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgLy8gQXZvaWQgYSBWOCBKSVQgYnVnIGluIENocm9tZSAxOS0yMC5cbiAgLy8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMjkxIGZvciBtb3JlIGRldGFpbHMuXG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBzb3VyY2Ugb2JqZWN0KHMpLCB0aGF0XG4gKiBkb24ndCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGludG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdC4gU3Vic2VxdWVudCBzb3VyY2VzXG4gKiBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy4gSWYgYGN1c3RvbWl6ZXJgIGlzXG4gKiBwcm92aWRlZCBpdCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG1lcmdlZCB2YWx1ZXMgb2YgdGhlIGRlc3RpbmF0aW9uIGFuZFxuICogc291cmNlIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgIG1lcmdpbmcgaXMgaGFuZGxlZFxuICogYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGJvdW5kIHRvIGB0aGlzQXJnYCBhbmQgaW52b2tlZFxuICogd2l0aCBmaXZlIGFyZ3VtZW50czogKG9iamVjdFZhbHVlLCBzb3VyY2VWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBjdXN0b21pemVyYC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IHtcbiAqICAgJ2RhdGEnOiBbeyAndXNlcic6ICdiYXJuZXknIH0sIHsgJ3VzZXInOiAnZnJlZCcgfV1cbiAqIH07XG4gKlxuICogdmFyIGFnZXMgPSB7XG4gKiAgICdkYXRhJzogW3sgJ2FnZSc6IDM2IH0sIHsgJ2FnZSc6IDQwIH1dXG4gKiB9O1xuICpcbiAqIF8ubWVyZ2UodXNlcnMsIGFnZXMpO1xuICogLy8gPT4geyAnZGF0YSc6IFt7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV0gfVxuICpcbiAqIC8vIHVzaW5nIGEgY3VzdG9taXplciBjYWxsYmFja1xuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2ZydWl0cyc6IFsnYXBwbGUnXSxcbiAqICAgJ3ZlZ2V0YWJsZXMnOiBbJ2JlZXQnXVxuICogfTtcbiAqXG4gKiB2YXIgb3RoZXIgPSB7XG4gKiAgICdmcnVpdHMnOiBbJ2JhbmFuYSddLFxuICogICAndmVnZXRhYmxlcyc6IFsnY2Fycm90J11cbiAqIH07XG4gKlxuICogXy5tZXJnZShvYmplY3QsIG90aGVyLCBmdW5jdGlvbihhLCBiKSB7XG4gKiAgIGlmIChfLmlzQXJyYXkoYSkpIHtcbiAqICAgICByZXR1cm4gYS5jb25jYXQoYik7XG4gKiAgIH1cbiAqIH0pO1xuICogLy8gPT4geyAnZnJ1aXRzJzogWydhcHBsZScsICdiYW5hbmEnXSwgJ3ZlZ2V0YWJsZXMnOiBbJ2JlZXQnLCAnY2Fycm90J10gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihiYXNlTWVyZ2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash.merge/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.restparam/index.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash.restparam/index.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * lodash 3.6.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLnJlc3RwYXJhbS9pbmRleC5qcz8xZTJiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC5yZXN0cGFyYW0vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAzLjYuMSAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTUgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xuXG4vKiogVXNlZCBhcyB0aGUgYFR5cGVFcnJvcmAgbWVzc2FnZSBmb3IgXCJGdW5jdGlvbnNcIiBtZXRob2RzLiAqL1xudmFyIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAqIGNyZWF0ZWQgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBmcm9tIGBzdGFydGAgYW5kIGJleW9uZCBwcm92aWRlZCBhcyBhbiBhcnJheS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlIFtyZXN0IHBhcmFtZXRlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvRnVuY3Rpb25zL3Jlc3RfcGFyYW1ldGVycykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgc2F5ID0gXy5yZXN0UGFyYW0oZnVuY3Rpb24od2hhdCwgbmFtZXMpIHtcbiAqICAgcmV0dXJuIHdoYXQgKyAnICcgKyBfLmluaXRpYWwobmFtZXMpLmpvaW4oJywgJykgK1xuICogICAgIChfLnNpemUobmFtZXMpID4gMSA/ICcsICYgJyA6ICcnKSArIF8ubGFzdChuYW1lcyk7XG4gKiB9KTtcbiAqXG4gKiBzYXkoJ2hlbGxvJywgJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnKTtcbiAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAqL1xuZnVuY3Rpb24gcmVzdFBhcmFtKGZ1bmMsIHN0YXJ0KSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6ICgrc3RhcnQgfHwgMCksIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgcmVzdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdFtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBzd2l0Y2ggKHN0YXJ0KSB7XG4gICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpcywgcmVzdCk7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJnc1swXSwgcmVzdCk7XG4gICAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSwgcmVzdCk7XG4gICAgfVxuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIGluZGV4ID0gLTE7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gcmVzdDtcbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBvdGhlckFyZ3MpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlc3RQYXJhbTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash.restparam/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash.toplainobject/index.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/lodash.toplainobject/index.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * lodash 3.0.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar baseCopy = __webpack_require__(/*! lodash._basecopy */ \"./node_modules/lodash._basecopy/index.js\"),\n keysIn = __webpack_require__(/*! lodash.keysin */ \"./node_modules/lodash.keysin/index.js\");\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoLnRvcGxhaW5vYmplY3QvaW5kZXguanM/YmEyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLGtFQUFrQjtBQUN6QyxhQUFhLG1CQUFPLENBQUMsNERBQWU7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEIsVUFBVTtBQUNWO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gudG9wbGFpbm9iamVjdC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIDMuMC4wIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS43LjAgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgYmFzZUNvcHkgPSByZXF1aXJlKCdsb2Rhc2guX2Jhc2Vjb3B5JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnbG9kYXNoLmtleXNpbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZVxuICogcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNvcHkodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash.toplainobject/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_DataView.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_DataView.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcz9iNWE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShyb290LCAnRGF0YVZpZXcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYXRhVmlldztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_DataView.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_Hash.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/_Hash.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var hashClear = __webpack_require__(/*! ./_hashClear */ \"./node_modules/lodash/_hashClear.js\"),\n hashDelete = __webpack_require__(/*! ./_hashDelete */ \"./node_modules/lodash/_hashDelete.js\"),\n hashGet = __webpack_require__(/*! ./_hashGet */ \"./node_modules/lodash/_hashGet.js\"),\n hashHas = __webpack_require__(/*! ./_hashHas */ \"./node_modules/lodash/_hashHas.js\"),\n hashSet = __webpack_require__(/*! ./_hashSet */ \"./node_modules/lodash/_hashSet.js\");\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19IYXNoLmpzP2UyNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0hhc2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzaENsZWFyID0gcmVxdWlyZSgnLi9faGFzaENsZWFyJyksXG4gICAgaGFzaERlbGV0ZSA9IHJlcXVpcmUoJy4vX2hhc2hEZWxldGUnKSxcbiAgICBoYXNoR2V0ID0gcmVxdWlyZSgnLi9faGFzaEdldCcpLFxuICAgIGhhc2hIYXMgPSByZXF1aXJlKCcuL19oYXNoSGFzJyksXG4gICAgaGFzaFNldCA9IHJlcXVpcmUoJy4vX2hhc2hTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG5IYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbkhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG5IYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbkhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Hash.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_ListCache.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_ListCache.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ \"./node_modules/lodash/_listCacheClear.js\"),\n listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ \"./node_modules/lodash/_listCacheDelete.js\"),\n listCacheGet = __webpack_require__(/*! ./_listCacheGet */ \"./node_modules/lodash/_listCacheGet.js\"),\n listCacheHas = __webpack_require__(/*! ./_listCacheHas */ \"./node_modules/lodash/_listCacheHas.js\"),\n listCacheSet = __webpack_require__(/*! ./_listCacheSet */ \"./node_modules/lodash/_listCacheSet.js\");\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19MaXN0Q2FjaGUuanM/NWUyZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDaEQsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19MaXN0Q2FjaGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_ListCache.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_Map.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/_Map.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanM/NzliYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIE1hcCA9IGdldE5hdGl2ZShyb290LCAnTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Map.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_MapCache.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_MapCache.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ \"./node_modules/lodash/_mapCacheClear.js\"),\n mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ \"./node_modules/lodash/_mapCacheDelete.js\"),\n mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ \"./node_modules/lodash/_mapCacheGet.js\"),\n mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ \"./node_modules/lodash/_mapCacheHas.js\"),\n mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ \"./node_modules/lodash/_mapCacheSet.js\");\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcz83YjgzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjtBQUM5QyxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDaEQsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG1hcENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19tYXBDYWNoZUNsZWFyJyksXG4gICAgbWFwQ2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19tYXBDYWNoZURlbGV0ZScpLFxuICAgIG1hcENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVHZXQnKSxcbiAgICBtYXBDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX21hcENhY2hlSGFzJyksXG4gICAgbWFwQ2FjaGVTZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXBDYWNoZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_MapCache.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_Promise.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_Promise.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzPzFjZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgUHJvbWlzZSA9IGdldE5hdGl2ZShyb290LCAnUHJvbWlzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21pc2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Promise.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_Set.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/_Set.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanM/Yzg2OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Set.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_SetCache.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_SetCache.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var MapCache = __webpack_require__(/*! ./_MapCache */ \"./node_modules/lodash/_MapCache.js\"),\n setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ \"./node_modules/lodash/_setCacheAdd.js\"),\n setCacheHas = __webpack_require__(/*! ./_setCacheHas */ \"./node_modules/lodash/_setCacheHas.js\");\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXRDYWNoZS5qcz9kNjEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXRDYWNoZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_SetCache.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_Stack.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/_Stack.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/lodash/_ListCache.js\"),\n stackClear = __webpack_require__(/*! ./_stackClear */ \"./node_modules/lodash/_stackClear.js\"),\n stackDelete = __webpack_require__(/*! ./_stackDelete */ \"./node_modules/lodash/_stackDelete.js\"),\n stackGet = __webpack_require__(/*! ./_stackGet */ \"./node_modules/lodash/_stackGet.js\"),\n stackHas = __webpack_require__(/*! ./_stackHas */ \"./node_modules/lodash/_stackHas.js\"),\n stackSet = __webpack_require__(/*! ./_stackSet */ \"./node_modules/lodash/_stackSet.js\");\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TdGFjay5qcz83ZTY0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N0YWNrLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Stack.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_Symbol.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/_Symbol.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanM/OWU2OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Symbol.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_Uint8Array.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_Uint8Array.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19VaW50OEFycmF5LmpzPzI0NzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Uint8Array.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_WeakMap.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_WeakMap.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19XZWFrTWFwLmpzPzM5ZmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_WeakMap.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_apply.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/_apply.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcHBseS5qcz84NWUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxFQUFFO0FBQ2IsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXBwbHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_apply.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayAggregator.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_arrayAggregator.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUFnZ3JlZ2F0b3IuanM/YTBjNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlBZ2dyZWdhdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICovXG5mdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5QWdncmVnYXRvcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayAggregator.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayEach.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_arrayEach.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUVhY2guanM/ODA1NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUVhY2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayEach.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayFilter.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_arrayFilter.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUZpbHRlci5qcz8yZDdjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayFilter.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayIncludes.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_arrayIncludes.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ \"./node_modules/lodash/_baseIndexOf.js\");\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzPzhkYjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Jhc2VJbmRleE9mJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlJbmNsdWRlcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayIncludes.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayIncludesWith.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/lodash/_arrayIncludesWith.js ***!
|
||
\***************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzV2l0aC5qcz81ZWRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzV2l0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXNXaXRoKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayIncludesWith.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayLikeKeys.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_arrayLikeKeys.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseTimes = __webpack_require__(/*! ./_baseTimes */ \"./node_modules/lodash/_baseTimes.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/lodash/_isIndex.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/lodash/isTypedArray.js\");\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 * 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 var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzPzZmY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayLikeKeys.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayMap.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_arrayMap.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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 == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcz83OTQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlNYXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayMap.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayPush.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_arrayPush.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanM/MDg3ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5UHVzaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtvZmZzZXQgKyBpbmRleF0gPSB2YWx1ZXNbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVB1c2g7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayPush.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayReduce.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_arrayReduce.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVJlZHVjZS5qcz82YWMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVJlZHVjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGFycmF5WysraW5kZXhdO1xuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVJlZHVjZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayReduce.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arrayShuffle.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_arrayShuffle.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var copyArray = __webpack_require__(/*! ./_copyArray */ \"./node_modules/lodash/_copyArray.js\"),\n shuffleSelf = __webpack_require__(/*! ./_shuffleSelf */ \"./node_modules/lodash/_shuffleSelf.js\");\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n}\n\nmodule.exports = arrayShuffle;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNodWZmbGUuanM/MjI1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5U2h1ZmZsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBzaHVmZmxlU2VsZiA9IHJlcXVpcmUoJy4vX3NodWZmbGVTZWxmJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSkge1xuICByZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlTaHVmZmxlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayShuffle.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_arraySome.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_arraySome.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanM/NDI4NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5U29tZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlTb21lO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arraySome.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_asciiToArray.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_asciiToArray.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc2NpaVRvQXJyYXkuanM/NmRhOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc2NpaVRvQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnRzIGFuIEFTQ0lJIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhc2NpaVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzY2lpVG9BcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_asciiToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_asciiWords.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_asciiWords.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc2NpaVdvcmRzLmpzPzc1NTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc2NpaVdvcmRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gbWF0Y2ggd29yZHMgY29tcG9zZWQgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuICovXG52YXIgcmVBc2NpaVdvcmQgPSAvW15cXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHg3Zl0rL2c7XG5cbi8qKlxuICogU3BsaXRzIGFuIEFTQ0lJIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAqL1xuZnVuY3Rpb24gYXNjaWlXb3JkcyhzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5tYXRjaChyZUFzY2lpV29yZCkgfHwgW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNjaWlXb3JkcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_asciiWords.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_assignMergeValue.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_assignMergeValue.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/lodash/_baseAssignValue.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/lodash/eq.js\");\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzP2I3NjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbk1lcmdlVmFsdWU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assignMergeValue.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_assignValue.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_assignValue.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/lodash/_baseAssignValue.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/lodash/eq.js\");\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 * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcz8zMmIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxTQUFTLG1CQUFPLENBQUMseUNBQU07O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25WYWx1ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assignValue.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_assocIndexOf.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_assocIndexOf.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var eq = __webpack_require__(/*! ./eq */ \"./node_modules/lodash/eq.js\");\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanM/Y2I1YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMseUNBQU07O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assocIndexOf.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseAggregator.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_baseAggregator.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/lodash/_baseEach.js\");\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQWdncmVnYXRvci5qcz8yNDNmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBZ2dyZWdhdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKTtcblxuLyoqXG4gKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICogYnkgYGl0ZXJhdGVlYCBhbmQgdmFsdWVzIHNldCBieSBgc2V0dGVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgYWdncmVnYXRlZCBvYmplY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFnZ3JlZ2F0b3IoY29sbGVjdGlvbiwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFnZ3JlZ2F0b3I7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseAggregator.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseAssign.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseAssign.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/lodash/_copyObject.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/lodash/keys.js\");\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduLmpzPzViMDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsV0FBVyxtQkFBTyxDQUFDLDZDQUFROztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseAssign.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseAssignIn.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseAssignIn.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/lodash/_copyObject.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/lodash/keysIn.js\");\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanM/MGYwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25Jbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduSW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseAssignIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseAssignValue.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_baseAssignValue.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/lodash/_defineProperty.js\");\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanM/ODcyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnblZhbHVlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseAssignValue.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseClone.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseClone.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/lodash/_Stack.js\"),\n arrayEach = __webpack_require__(/*! ./_arrayEach */ \"./node_modules/lodash/_arrayEach.js\"),\n assignValue = __webpack_require__(/*! ./_assignValue */ \"./node_modules/lodash/_assignValue.js\"),\n baseAssign = __webpack_require__(/*! ./_baseAssign */ \"./node_modules/lodash/_baseAssign.js\"),\n baseAssignIn = __webpack_require__(/*! ./_baseAssignIn */ \"./node_modules/lodash/_baseAssignIn.js\"),\n cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ \"./node_modules/lodash/_cloneBuffer.js\"),\n copyArray = __webpack_require__(/*! ./_copyArray */ \"./node_modules/lodash/_copyArray.js\"),\n copySymbols = __webpack_require__(/*! ./_copySymbols */ \"./node_modules/lodash/_copySymbols.js\"),\n copySymbolsIn = __webpack_require__(/*! ./_copySymbolsIn */ \"./node_modules/lodash/_copySymbolsIn.js\"),\n getAllKeys = __webpack_require__(/*! ./_getAllKeys */ \"./node_modules/lodash/_getAllKeys.js\"),\n getAllKeysIn = __webpack_require__(/*! ./_getAllKeysIn */ \"./node_modules/lodash/_getAllKeysIn.js\"),\n getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/lodash/_getTag.js\"),\n initCloneArray = __webpack_require__(/*! ./_initCloneArray */ \"./node_modules/lodash/_initCloneArray.js\"),\n initCloneByTag = __webpack_require__(/*! ./_initCloneByTag */ \"./node_modules/lodash/_initCloneByTag.js\"),\n initCloneObject = __webpack_require__(/*! ./_initCloneObject */ \"./node_modules/lodash/_initCloneObject.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n isMap = __webpack_require__(/*! ./isMap */ \"./node_modules/lodash/isMap.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n isSet = __webpack_require__(/*! ./isSet */ \"./node_modules/lodash/isSet.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/lodash/keys.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/lodash/keysIn.js\");\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanM/MzgxOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjtBQUM5QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDaEQsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsWUFBWSxtQkFBTyxDQUFDLCtDQUFTO0FBQzdCLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsK0NBQVM7QUFDN0IsV0FBVyxtQkFBTyxDQUFDLDZDQUFRO0FBQzNCLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbicpLFxuICAgIGJhc2VBc3NpZ25JbiA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25JbicpLFxuICAgIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBjb3B5U3ltYm9scyA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzJyksXG4gICAgY29weVN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzSW4nKSxcbiAgICBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpLFxuICAgIGdldEFsbEtleXNJbiA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXNJbicpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGluaXRDbG9uZUFycmF5ID0gcmVxdWlyZSgnLi9faW5pdENsb25lQXJyYXknKSxcbiAgICBpbml0Q2xvbmVCeVRhZyA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUJ5VGFnJyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzTWFwID0gcmVxdWlyZSgnLi9pc01hcCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU2V0ID0gcmVxdWlyZSgnLi9pc1NldCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG52YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbmNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0ZVRhZ10gPVxuY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0gY2xvbmVhYmxlVGFnc1ttYXBUYWddID1cbmNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID0gY2xvbmVhYmxlVGFnc1tzeW1ib2xUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG5jbG9uZWFibGVUYWdzW2Vycm9yVGFnXSA9IGNsb25lYWJsZVRhZ3NbZnVuY1RhZ10gPVxuY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gRGVlcCBjbG9uZVxuICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gKiAgNCAtIENsb25lIHN5bWJvbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gIHZhciByZXN1bHQsXG4gICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzQXJyKSB7XG4gICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgIGlmICghaXNEZWVwKSB7XG4gICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICB9XG4gICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgaWYgKHN0YWNrZWQpIHtcbiAgICByZXR1cm4gc3RhY2tlZDtcbiAgfVxuICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ2xvbmU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseClone.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseCreate.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseCreate.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\");\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzPzc1MzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG52YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgfVxuICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDcmVhdGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseCreate.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseEach.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_baseEach.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseForOwn = __webpack_require__(/*! ./_baseForOwn */ \"./node_modules/lodash/_baseForOwn.js\"),\n createBaseEach = __webpack_require__(/*! ./_createBaseEach */ \"./node_modules/lodash/_createBaseEach.js\");\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRWFjaC5qcz80OGEwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsYUFBYTtBQUMxQjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUVhY2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBjcmVhdGVCYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VFYWNoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKi9cbnZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VFYWNoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseEach.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseExtremum.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseExtremum.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRXh0cmVtdW0uanM/NzZlOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRXh0cmVtdW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLm1heGAgYW5kIGBfLm1pbmAgd2hpY2ggYWNjZXB0cyBhXG4gKiBgY29tcGFyYXRvcmAgdG8gZGV0ZXJtaW5lIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIHVzZWQgdG8gY29tcGFyZSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VFeHRyZW11bShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICBpZiAoY3VycmVudCAhPSBudWxsICYmIChjb21wdXRlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyAoY3VycmVudCA9PT0gY3VycmVudCAmJiAhaXNTeW1ib2woY3VycmVudCkpXG4gICAgICAgICAgOiBjb21wYXJhdG9yKGN1cnJlbnQsIGNvbXB1dGVkKVxuICAgICAgICApKSB7XG4gICAgICB2YXIgY29tcHV0ZWQgPSBjdXJyZW50LFxuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VFeHRyZW11bTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseExtremum.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseFilter.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseFilter.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/lodash/_baseEach.js\");\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmlsdGVyLmpzPzlmNzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmlsdGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGaWx0ZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseFilter.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseFindIndex.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_baseFindIndex.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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\nmodule.exports = baseFindIndex;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmluZEluZGV4LmpzPzJiMDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmluZEluZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4LCBmcm9tUmlnaHQpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZpbmRJbmRleDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseFindIndex.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseFlatten.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseFlatten.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayPush = __webpack_require__(/*! ./_arrayPush */ \"./node_modules/lodash/_arrayPush.js\"),\n isFlattenable = __webpack_require__(/*! ./_isFlattenable */ \"./node_modules/lodash/_isFlattenable.js\");\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmxhdHRlbi5qcz81YzY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmxhdHRlbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0ZsYXR0ZW5hYmxlID0gcmVxdWlyZSgnLi9faXNGbGF0dGVuYWJsZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcGFyYW0ge251bWJlcn0gZGVwdGggVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0PVtdXSBUaGUgaW5pdGlhbCByZXN1bHQgdmFsdWUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHByZWRpY2F0ZSB8fCAocHJlZGljYXRlID0gaXNGbGF0dGVuYWJsZSk7XG4gIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChkZXB0aCA+IDAgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgZGVwdGggLSAxLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmxhdHRlbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseFlatten.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseFor.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_baseFor.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var createBaseFor = __webpack_require__(/*! ./_createBaseFor */ \"./node_modules/lodash/_createBaseFor.js\");\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRm9yLmpzPzcyYWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3JlYXRlQmFzZUZvciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VGb3InKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgb2JqZWN0YFxuICogcHJvcGVydGllcyByZXR1cm5lZCBieSBga2V5c0Z1bmNgIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbnZhciBiYXNlRm9yID0gY3JlYXRlQmFzZUZvcigpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3I7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseFor.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseForOwn.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseForOwn.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseFor = __webpack_require__(/*! ./_baseFor */ \"./node_modules/lodash/_baseFor.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/lodash/keys.js\");\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRm9yT3duLmpzPzI0MmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vX2Jhc2VGb3InKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yT3duO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseForOwn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseGet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_baseGet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/lodash/_castPath.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/lodash/_toKey.js\");\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzPzY1NmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAwLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2JqZWN0ID0gb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTtcbiAgfVxuICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseGetAllKeys.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_baseGetAllKeys.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayPush = __webpack_require__(/*! ./_arrayPush */ \"./node_modules/lodash/_arrayPush.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcz83ZDFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGetAllKeys.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseGetTag.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseGetTag.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n getRawTag = __webpack_require__(/*! ./_getRawTag */ \"./node_modules/lodash/_getRawTag.js\"),\n objectToString = __webpack_require__(/*! ./_objectToString */ \"./node_modules/lodash/_objectToString.js\");\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzPzM3MjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldFRhZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBvYmplY3RUb1N0cmluZyA9IHJlcXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGetTag.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseGt.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/_baseGt.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR3QuanM/NTdkYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUd0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGt.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseHasIn.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseHasIn.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzSW4uanM/MjZlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUhhc0luLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhc0luKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhc0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseHasIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIndexOf.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIndexOf.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ \"./node_modules/lodash/_baseFindIndex.js\"),\n baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ \"./node_modules/lodash/_baseIsNaN.js\"),\n strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ \"./node_modules/lodash/_strictIndexOf.js\");\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 return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSW5kZXhPZi5qcz80N2Y1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjtBQUM5QyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUluZGV4T2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSxcbiAgICBiYXNlSXNOYU4gPSByZXF1aXJlKCcuL19iYXNlSXNOYU4nKSxcbiAgICBzdHJpY3RJbmRleE9mID0gcmVxdWlyZSgnLi9fc3RyaWN0SW5kZXhPZicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJbmRleE9mO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIndexOf.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsArguments.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsArguments.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanM/MjUzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsArguments.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsEqual.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsEqual.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ \"./node_modules/lodash/_baseIsEqualDeep.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbC5qcz9jMDVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsEqual.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsEqualDeep.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsEqualDeep.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/lodash/_Stack.js\"),\n equalArrays = __webpack_require__(/*! ./_equalArrays */ \"./node_modules/lodash/_equalArrays.js\"),\n equalByTag = __webpack_require__(/*! ./_equalByTag */ \"./node_modules/lodash/_equalByTag.js\"),\n equalObjects = __webpack_require__(/*! ./_equalObjects */ \"./node_modules/lodash/_equalObjects.js\"),\n getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/lodash/_getTag.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/lodash/isTypedArray.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\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 * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanM/N2I5NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWxEZWVwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgZXF1YWxCeVRhZyA9IHJlcXVpcmUoJy4vX2VxdWFsQnlUYWcnKSxcbiAgICBlcXVhbE9iamVjdHMgPSByZXF1aXJlKCcuL19lcXVhbE9iamVjdHMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICBvYmpJc09iaiA9IGZhbHNlO1xuICB9XG4gIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gIH1cbiAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICB9XG4gIGlmICghaXNTYW1lVGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWxEZWVwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsEqualDeep.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsMap.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsMap.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/lodash/_getTag.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXAuanM/MWEyZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hcDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsMap.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsMatch.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsMatch.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/lodash/_Stack.js\"),\n baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ \"./node_modules/lodash/_baseIsEqual.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcz85NjZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hdGNoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICFsZW5ndGg7XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hdGNoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsMatch.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsNaN.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsNaN.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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\nmodule.exports = baseIsNaN;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanM/ZDlhOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hTi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmFOO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsNaN.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsNative.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsNative.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n isMasked = __webpack_require__(/*! ./_isMasked */ \"./node_modules/lodash/_isMasked.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/lodash/_toSource.js\");\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\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 detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYXRpdmUuanM/MzRhYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyx5REFBYztBQUN2QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hdGl2ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsNative.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsSet.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsSet.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/lodash/_getTag.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNTZXQuanM/YzNmYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzU2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1NldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsSet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIsTypedArray.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsTypedArray.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzPzc0M2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsTypedArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseIteratee.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIteratee.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseMatches = __webpack_require__(/*! ./_baseMatches */ \"./node_modules/lodash/_baseMatches.js\"),\n baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ \"./node_modules/lodash/_baseMatchesProperty.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/lodash/identity.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n property = __webpack_require__(/*! ./property */ \"./node_modules/lodash/property.js\");\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanM/YmFkZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsMEJBQTBCLG1CQUFPLENBQUMsNkVBQXdCO0FBQzFELGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUl0ZXJhdGVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VNYXRjaGVzID0gcmVxdWlyZSgnLi9fYmFzZU1hdGNoZXMnKSxcbiAgICBiYXNlTWF0Y2hlc1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZU1hdGNoZXNQcm9wZXJ0eScpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBwcm9wZXJ0eSA9IHJlcXVpcmUoJy4vcHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBpZGVudGl0eTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICA/IGJhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sIHZhbHVlWzFdKVxuICAgICAgOiBiYXNlTWF0Y2hlcyh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXRlcmF0ZWU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIteratee.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseKeys.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_baseKeys.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isPrototype = __webpack_require__(/*! ./_isPrototype */ \"./node_modules/lodash/_isPrototype.js\"),\n nativeKeys = __webpack_require__(/*! ./_nativeKeys */ \"./node_modules/lodash/_nativeKeys.js\");\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 * 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\nmodule.exports = baseKeys;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcz8wM2RkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseKeys.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseKeysIn.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseKeysIn.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ \"./node_modules/lodash/_isPrototype.js\"),\n nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ \"./node_modules/lodash/_nativeKeysIn.js\");\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 * The base implementation of `_.keysIn` 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 baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzPzQxYzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseKeysIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseLt.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/_baseLt.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanM/OGQyMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUx0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTHQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseLt.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseMap.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_baseMap.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/lodash/_baseEach.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWFwLmpzPzk3ZDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMap.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseMatches.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseMatches.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ \"./node_modules/lodash/_baseIsMatch.js\"),\n getMatchData = __webpack_require__(/*! ./_getMatchData */ \"./node_modules/lodash/_getMatchData.js\"),\n matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ \"./node_modules/lodash/_matchesStrictComparable.js\");\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlcy5qcz82NDJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsOEJBQThCLG1CQUFPLENBQUMscUZBQTRCOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXNNYXRjaCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hdGNoJyksXG4gICAgZ2V0TWF0Y2hEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWF0Y2hEYXRhJyksXG4gICAgbWF0Y2hlc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlTWF0Y2hlcyhzb3VyY2UpIHtcbiAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICBpZiAobWF0Y2hEYXRhLmxlbmd0aCA9PSAxICYmIG1hdGNoRGF0YVswXVsyXSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShtYXRjaERhdGFbMF1bMF0sIG1hdGNoRGF0YVswXVsxXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMatches.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseMatchesProperty.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/lodash/_baseMatchesProperty.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ \"./node_modules/lodash/_baseIsEqual.js\"),\n get = __webpack_require__(/*! ./get */ \"./node_modules/lodash/get.js\"),\n hasIn = __webpack_require__(/*! ./hasIn */ \"./node_modules/lodash/hasIn.js\"),\n isKey = __webpack_require__(/*! ./_isKey */ \"./node_modules/lodash/_isKey.js\"),\n isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ \"./node_modules/lodash/_isStrictComparable.js\"),\n matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ \"./node_modules/lodash/_matchesStrictComparable.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/lodash/_toKey.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzPzE4MzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLFVBQVUsbUJBQU8sQ0FBQywyQ0FBTztBQUN6QixZQUFZLG1CQUFPLENBQUMsK0NBQVM7QUFDN0IsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLHlCQUF5QixtQkFBTyxDQUFDLDJFQUF1QjtBQUN4RCw4QkFBOEIsbUJBQU8sQ0FBQyxxRkFBNEI7QUFDbEUsWUFBWSxtQkFBTyxDQUFDLGlEQUFVOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXRjaGVzUHJvcGVydHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpLFxuICAgIGdldCA9IHJlcXVpcmUoJy4vZ2V0JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlc1Byb3BlcnR5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMatchesProperty.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseMerge.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseMerge.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/lodash/_Stack.js\"),\n assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ \"./node_modules/lodash/_assignMergeValue.js\"),\n baseFor = __webpack_require__(/*! ./_baseFor */ \"./node_modules/lodash/_baseFor.js\"),\n baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ \"./node_modules/lodash/_baseMergeDeep.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/lodash/keysIn.js\"),\n safeGet = __webpack_require__(/*! ./_safeGet */ \"./node_modules/lodash/_safeGet.js\");\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanM/ZjkwOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCO0FBQ3BELGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTtBQUMvQixjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMerge.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseMergeDeep.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_baseMergeDeep.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ \"./node_modules/lodash/_assignMergeValue.js\"),\n cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ \"./node_modules/lodash/_cloneBuffer.js\"),\n cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ \"./node_modules/lodash/_cloneTypedArray.js\"),\n copyArray = __webpack_require__(/*! ./_copyArray */ \"./node_modules/lodash/_copyArray.js\"),\n initCloneObject = __webpack_require__(/*! ./_initCloneObject */ \"./node_modules/lodash/_initCloneObject.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ \"./node_modules/lodash/isArrayLikeObject.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n isPlainObject = __webpack_require__(/*! ./isPlainObject */ \"./node_modules/lodash/isPlainObject.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/lodash/isTypedArray.js\"),\n safeGet = __webpack_require__(/*! ./_safeGet */ \"./node_modules/lodash/_safeGet.js\"),\n toPlainObject = __webpack_require__(/*! ./toPlainObject */ \"./node_modules/lodash/toPlainObject.js\");\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2VEZWVwLmpzPzRmNTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCO0FBQ3BELGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyx3QkFBd0IsbUJBQU8sQ0FBQyx1RUFBcUI7QUFDckQsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGlCQUFpQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3ZDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxvQkFBb0IsbUJBQU8sQ0FBQywrREFBaUI7QUFDN0MsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCO0FBQzNDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxvQkFBb0IsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZURlZXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpLFxuICAgIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2VEZWVwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMergeDeep.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseOrderBy.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseOrderBy.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/lodash/_arrayMap.js\"),\n baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/lodash/_baseGet.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n baseMap = __webpack_require__(/*! ./_baseMap */ \"./node_modules/lodash/_baseMap.js\"),\n baseSortBy = __webpack_require__(/*! ./_baseSortBy */ \"./node_modules/lodash/_baseSortBy.js\"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ \"./node_modules/lodash/_baseUnary.js\"),\n compareMultiple = __webpack_require__(/*! ./_compareMultiple */ \"./node_modules/lodash/_compareMultiple.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/lodash/identity.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlT3JkZXJCeS5qcz82YTVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyw2QkFBNkI7QUFDeEMsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxZQUFZO0FBQ1osR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU9yZGVyQnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0JyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZU1hcCA9IHJlcXVpcmUoJy4vX2Jhc2VNYXAnKSxcbiAgICBiYXNlU29ydEJ5ID0gcmVxdWlyZSgnLi9fYmFzZVNvcnRCeScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIGNvbXBhcmVNdWx0aXBsZSA9IHJlcXVpcmUoJy4vX2NvbXBhcmVNdWx0aXBsZScpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBpdGVyYXRlZXMgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gb3JkZXJzIFRoZSBzb3J0IG9yZGVycyBvZiBgaXRlcmF0ZWVzYC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMpIHtcbiAgaWYgKGl0ZXJhdGVlcy5sZW5ndGgpIHtcbiAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICBpZiAoaXNBcnJheShpdGVyYXRlZSkpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2VHZXQodmFsdWUsIGl0ZXJhdGVlLmxlbmd0aCA9PT0gMSA/IGl0ZXJhdGVlWzBdIDogaXRlcmF0ZWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlcmF0ZWU7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaXRlcmF0ZWVzID0gW2lkZW50aXR5XTtcbiAgfVxuXG4gIHZhciBpbmRleCA9IC0xO1xuICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShiYXNlSXRlcmF0ZWUpKTtcblxuICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgdmFyIGNyaXRlcmlhID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGl0ZXJhdGVlKHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4geyAnY3JpdGVyaWEnOiBjcml0ZXJpYSwgJ2luZGV4JzogKytpbmRleCwgJ3ZhbHVlJzogdmFsdWUgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgcmV0dXJuIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlT3JkZXJCeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseOrderBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_basePickBy.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_basePickBy.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/lodash/_baseGet.js\"),\n baseSet = __webpack_require__(/*! ./_baseSet */ \"./node_modules/lodash/_baseSet.js\"),\n castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/lodash/_castPath.js\");\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzPzg5ZDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQaWNrQnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHBhdGggPSBwYXRoc1tpbmRleF0sXG4gICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgIGJhc2VTZXQocmVzdWx0LCBjYXN0UGF0aChwYXRoLCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2tCeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_basePickBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseProperty.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseProperty.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHkuanM/ZWY1ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseProperty.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_basePropertyDeep.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_basePropertyDeep.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/lodash/_baseGet.js\");\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHlEZWVwLmpzP2UzZjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5RGVlcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHlEZWVwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_basePropertyDeep.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_basePropertyOf.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_basePropertyOf.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHlPZi5qcz9kZGM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHlPZi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gIHJldHVybiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHlPZjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_basePropertyOf.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_basePullAt.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_basePullAt.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseUnset = __webpack_require__(/*! ./_baseUnset */ \"./node_modules/lodash/_baseUnset.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/lodash/_isIndex.js\");\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nmodule.exports = basePullAt;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHVsbEF0LmpzPzdmOWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHVsbEF0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VVbnNldCA9IHJlcXVpcmUoJy4vX2Jhc2VVbnNldCcpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICogaW5kZXhlcyBvciBjYXB0dXJpbmcgdGhlIHJlbW92ZWQgZWxlbWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge251bWJlcltdfSBpbmRleGVzIFRoZSBpbmRleGVzIG9mIGVsZW1lbnRzIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBiYXNlUHVsbEF0KGFycmF5LCBpbmRleGVzKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA/IGluZGV4ZXMubGVuZ3RoIDogMCxcbiAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgIGlmIChsZW5ndGggPT0gbGFzdEluZGV4IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgdmFyIHByZXZpb3VzID0gaW5kZXg7XG4gICAgICBpZiAoaXNJbmRleChpbmRleCkpIHtcbiAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VVbnNldChhcnJheSwgaW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVB1bGxBdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_basePullAt.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseRandom.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseRandom.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmFuZG9tLmpzP2JlNTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSYW5kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlRmxvb3IgPSBNYXRoLmZsb29yLFxuICAgIG5hdGl2ZVJhbmRvbSA9IE1hdGgucmFuZG9tO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmRvbWAgd2l0aG91dCBzdXBwb3J0IGZvciByZXR1cm5pbmdcbiAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAqL1xuZnVuY3Rpb24gYmFzZVJhbmRvbShsb3dlciwgdXBwZXIpIHtcbiAgcmV0dXJuIGxvd2VyICsgbmF0aXZlRmxvb3IobmF0aXZlUmFuZG9tKCkgKiAodXBwZXIgLSBsb3dlciArIDEpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmFuZG9tO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseRandom.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseReduce.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseReduce.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVkdWNlLmpzPzU4ZjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxFQUFFO0FBQ2IsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVJlZHVjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVkdWNlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseReduce.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseRest.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_baseRest.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var identity = __webpack_require__(/*! ./identity */ \"./node_modules/lodash/identity.js\"),\n overRest = __webpack_require__(/*! ./_overRest */ \"./node_modules/lodash/_overRest.js\"),\n setToString = __webpack_require__(/*! ./_setToString */ \"./node_modules/lodash/_setToString.js\");\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcz8xMDBlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVJlc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseRest.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseSet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_baseSet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var assignValue = __webpack_require__(/*! ./_assignValue */ \"./node_modules/lodash/_assignValue.js\"),\n castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/lodash/_castPath.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/lodash/_isIndex.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/lodash/_toKey.js\");\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0LmpzPzE1OWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxLFxuICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKSxcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IG5lc3RlZFtrZXldO1xuICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpc09iamVjdChvYmpWYWx1ZSlcbiAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICB9XG4gICAgfVxuICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgbmVzdGVkID0gbmVzdGVkW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseSetToString.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_baseSetToString.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var constant = __webpack_require__(/*! ./constant */ \"./node_modules/lodash/constant.js\"),\n defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/lodash/_defineProperty.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/lodash/identity.js\");\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanM/YTQ1NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXRUb1N0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQnKSxcbiAgICBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICd3cml0YWJsZSc6IHRydWVcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXRUb1N0cmluZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSetToString.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseShuffle.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseShuffle.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var shuffleSelf = __webpack_require__(/*! ./_shuffleSelf */ \"./node_modules/lodash/_shuffleSelf.js\"),\n values = __webpack_require__(/*! ./values */ \"./node_modules/lodash/values.js\");\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n return shuffleSelf(values(collection));\n}\n\nmodule.exports = baseShuffle;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2h1ZmZsZS5qcz8zOTU2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTaHVmZmxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHNodWZmbGVTZWxmID0gcmVxdWlyZSgnLi9fc2h1ZmZsZVNlbGYnKSxcbiAgICB2YWx1ZXMgPSByZXF1aXJlKCcuL3ZhbHVlcycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNodWZmbGVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgcmV0dXJuIHNodWZmbGVTZWxmKHZhbHVlcyhjb2xsZWN0aW9uKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNodWZmbGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseShuffle.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseSlice.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseSlice.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2xpY2UuanM/MmIxMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNsaWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICB9XG4gIGVuZCA9IGVuZCA+IGxlbmd0aCA/IGxlbmd0aCA6IGVuZDtcbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuZ3RoO1xuICB9XG4gIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgc3RhcnQgPj4+PSAwO1xuXG4gIHZhciByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTbGljZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSlice.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseSortBy.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseSortBy.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU29ydEJ5LmpzP2Q0YjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTb3J0QnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAqIHNvcnQgb3JkZXIgb2YgYGFycmF5YCBhbmQgcmVwbGFjZXMgY3JpdGVyaWEgb2JqZWN0cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmdcbiAqIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBhcnJheS5zb3J0KGNvbXBhcmVyKTtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgYXJyYXlbbGVuZ3RoXSA9IGFycmF5W2xlbmd0aF0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTb3J0Qnk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSortBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseSum.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_baseSum.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU3VtLmpzP2VjZjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTdW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnN1bWAgYW5kIGBfLnN1bUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAqL1xuZnVuY3Rpb24gYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgY3VycmVudCA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSk7XG4gICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBjdXJyZW50IDogKHJlc3VsdCArIGN1cnJlbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTdW07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSum.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseTimes.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseTimes.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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\nmodule.exports = baseTimes;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVGltZXMuanM/NTBkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRpbWVzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseTimes.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseToString.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseToString.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/lodash/_arrayMap.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanM/Y2U4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseToString.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseTrim.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_baseTrim.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var trimmedEndIndex = __webpack_require__(/*! ./_trimmedEndIndex */ \"./node_modules/lodash/_trimmedEndIndex.js\");\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVHJpbS5qcz84ZDc0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjs7QUFFbEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRyaW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseTrim.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseUnary.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseUnary.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanM/YjA0NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuYXJ5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbmFyeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUnary.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseUniq.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_baseUniq.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var SetCache = __webpack_require__(/*! ./_SetCache */ \"./node_modules/lodash/_SetCache.js\"),\n arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ \"./node_modules/lodash/_arrayIncludes.js\"),\n arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ \"./node_modules/lodash/_arrayIncludesWith.js\"),\n cacheHas = __webpack_require__(/*! ./_cacheHas */ \"./node_modules/lodash/_cacheHas.js\"),\n createSet = __webpack_require__(/*! ./_createSet */ \"./node_modules/lodash/_createSet.js\"),\n setToArray = __webpack_require__(/*! ./_setToArray */ \"./node_modules/lodash/_setToArray.js\");\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcz8yYzY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsd0JBQXdCLG1CQUFPLENBQUMseUVBQXNCO0FBQ3RELGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXMnKSxcbiAgICBhcnJheUluY2x1ZGVzV2l0aCA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXNXaXRoJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpLFxuICAgIGNyZWF0ZVNldCA9IHJlcXVpcmUoJy4vX2NyZWF0ZVNldCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICBpZiAoY29tcGFyYXRvcikge1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgfVxuICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgIGlmIChzZXQpIHtcbiAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgfVxuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICB9XG4gIGVsc2Uge1xuICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICB9XG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuaXE7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUniq.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseUnset.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseUnset.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/lodash/_castPath.js\"),\n last = __webpack_require__(/*! ./last */ \"./node_modules/lodash/last.js\"),\n parent = __webpack_require__(/*! ./_parent */ \"./node_modules/lodash/_parent.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/lodash/_toKey.js\");\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5zZXQuanM/NGJiNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsV0FBVyxtQkFBTyxDQUFDLDZDQUFRO0FBQzNCLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuc2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBsYXN0ID0gcmVxdWlyZSgnLi9sYXN0JyksXG4gICAgcGFyZW50ID0gcmVxdWlyZSgnLi9fcGFyZW50JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuc2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUnset.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_baseValues.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseValues.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/lodash/_arrayMap.js\");\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\nmodule.exports = baseValues;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVmFsdWVzLmpzPzI2NmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VWYWx1ZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIG9mIGBwcm9wc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVmFsdWVzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseValues.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_cacheHas.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_cacheHas.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcz9jNTg0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cacheHas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_castFunction.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_castFunction.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var identity = __webpack_require__(/*! ./identity */ \"./node_modules/lodash/identity.js\");\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0RnVuY3Rpb24uanM/MTMwNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdEZ1bmN0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RGdW5jdGlvbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_castFunction.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_castPath.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_castPath.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isKey = __webpack_require__(/*! ./_isKey */ \"./node_modules/lodash/_isKey.js\"),\n stringToPath = __webpack_require__(/*! ./_stringToPath */ \"./node_modules/lodash/_stringToPath.js\"),\n toString = __webpack_require__(/*! ./toString */ \"./node_modules/lodash/toString.js\");\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0UGF0aC5qcz9lMmU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_castPath.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_castSlice.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_castSlice.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseSlice = __webpack_require__(/*! ./_baseSlice */ \"./node_modules/lodash/_baseSlice.js\");\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0U2xpY2UuanM/YzMyZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFNsaWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VTbGljZSA9IHJlcXVpcmUoJy4vX2Jhc2VTbGljZScpO1xuXG4vKipcbiAqIENhc3RzIGBhcnJheWAgdG8gYSBzbGljZSBpZiBpdCdzIG5lZWRlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHNsaWNlLlxuICovXG5mdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBlbmQ7XG4gIHJldHVybiAoIXN0YXJ0ICYmIGVuZCA+PSBsZW5ndGgpID8gYXJyYXkgOiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RTbGljZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_castSlice.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_cloneArrayBuffer.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_cloneArrayBuffer.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Uint8Array = __webpack_require__(/*! ./_Uint8Array */ \"./node_modules/lodash/_Uint8Array.js\");\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzP2Y4YWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCLGFBQWEsWUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneArrayBuffer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_cloneBuffer.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_cloneBuffer.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcz9lNTM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0Esa0JBQWtCLEtBQTBCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVCdWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgYWxsb2NVbnNhZmUgPSBCdWZmZXIgPyBCdWZmZXIuYWxsb2NVbnNhZmUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gIGlmIChpc0RlZXApIHtcbiAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gIH1cbiAgdmFyIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUJ1ZmZlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneBuffer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_cloneDataView.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_cloneDataView.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ \"./node_modules/lodash/_cloneArrayBuffer.js\");\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzPzVkODkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEYXRhVmlldztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneDataView.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_cloneRegExp.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_cloneRegExp.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVJlZ0V4cC5qcz82ZjZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lUmVnRXhwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneRegExp.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_cloneSymbol.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_cloneSymbol.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\");\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcz9hMmRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxtREFBVzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lU3ltYm9sLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVTeW1ib2w7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneSymbol.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_cloneTypedArray.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_cloneTypedArray.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ \"./node_modules/lodash/_cloneArrayBuffer.js\");\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanM/YzhmZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lVHlwZWRBcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneTypedArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_compareAscending.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_compareAscending.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlQXNjZW5kaW5nLmpzP2NhZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZUFzY2VuZGluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqXG4gKiBDb21wYXJlcyB2YWx1ZXMgdG8gc29ydCB0aGVtIGluIGFzY2VuZGluZyBvcmRlci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUFzY2VuZGluZyh2YWx1ZSwgb3RoZXIpIHtcbiAgaWYgKHZhbHVlICE9PSBvdGhlcikge1xuICAgIHZhciB2YWxJc0RlZmluZWQgPSB2YWx1ZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgdmFsSXNSZWZsZXhpdmUgPSB2YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgIHZhbElzU3ltYm9sID0gaXNTeW1ib2wodmFsdWUpO1xuXG4gICAgdmFyIG90aElzRGVmaW5lZCA9IG90aGVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgIG90aElzTnVsbCA9IG90aGVyID09PSBudWxsLFxuICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IG90aGVyID09PSBvdGhlcixcbiAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChvdGhlcik7XG5cbiAgICBpZiAoKCFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sICYmICF2YWxJc1N5bWJvbCAmJiB2YWx1ZSA+IG90aGVyKSB8fFxuICAgICAgICAodmFsSXNTeW1ib2wgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlICYmICFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sKSB8fFxuICAgICAgICAodmFsSXNOdWxsICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgKCF2YWxJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICF2YWxJc1JlZmxleGl2ZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlmICgoIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wgJiYgIW90aElzU3ltYm9sICYmIHZhbHVlIDwgb3RoZXIpIHx8XG4gICAgICAgIChvdGhJc1N5bWJvbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUgJiYgIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wpIHx8XG4gICAgICAgIChvdGhJc051bGwgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIW90aElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIW90aElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVBc2NlbmRpbmc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_compareAscending.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_compareMultiple.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_compareMultiple.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var compareAscending = __webpack_require__(/*! ./_compareAscending */ \"./node_modules/lodash/_compareAscending.js\");\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlTXVsdGlwbGUuanM/MjE2NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxtQkFBbUI7QUFDOUIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZU11bHRpcGxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvbXBhcmVBc2NlbmRpbmcgPSByZXF1aXJlKCcuL19jb21wYXJlQXNjZW5kaW5nJyk7XG5cbi8qKlxuICogVXNlZCBieSBgXy5vcmRlckJ5YCB0byBjb21wYXJlIG11bHRpcGxlIHByb3BlcnRpZXMgb2YgYSB2YWx1ZSB0byBhbm90aGVyXG4gKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAqXG4gKiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLFxuICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBvYmpDcml0ZXJpYSA9IG9iamVjdC5jcml0ZXJpYSxcbiAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICBvcmRlcnNMZW5ndGggPSBvcmRlcnMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgfVxuICB9XG4gIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgLy8gdGhhdCBjYXVzZXMgaXQsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdG8gcHJvdmlkZSB0aGUgc2FtZSB2YWx1ZSBmb3JcbiAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gIC8vXG4gIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICByZXR1cm4gb2JqZWN0LmluZGV4IC0gb3RoZXIuaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZU11bHRpcGxlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_compareMultiple.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_copyArray.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_copyArray.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanM/NDM1OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlBcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlBcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_copyArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_copyObject.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_copyObject.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var assignValue = __webpack_require__(/*! ./_assignValue */ \"./node_modules/lodash/_assignValue.js\"),\n baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/lodash/_baseAssignValue.js\");\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzPzhlZWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTyxXQUFXO0FBQzdCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlPYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5T2JqZWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_copyObject.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_copySymbols.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_copySymbols.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/lodash/_copyObject.js\"),\n getSymbols = __webpack_require__(/*! ./_getSymbols */ \"./node_modules/lodash/_getSymbols.js\");\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9scy5qcz81NGViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU8sV0FBVztBQUM3QixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyk7XG5cbi8qKlxuICogQ29waWVzIG93biBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5U3ltYm9scztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_copySymbols.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_copySymbolsIn.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_copySymbolsIn.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/lodash/_copyObject.js\"),\n getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ \"./node_modules/lodash/_getSymbolsIn.js\");\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzPzEwNDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU8sV0FBVztBQUM3QixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyk7XG5cbi8qKlxuICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5U3ltYm9sc0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_copySymbolsIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_coreJsData.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_coreJsData.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzP2RhMDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_coreJsData.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_createAggregator.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_createAggregator.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayAggregator = __webpack_require__(/*! ./_arrayAggregator */ \"./node_modules/lodash/_arrayAggregator.js\"),\n baseAggregator = __webpack_require__(/*! ./_baseAggregator */ \"./node_modules/lodash/_baseAggregator.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBZ2dyZWdhdG9yLmpzPzUwYzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQWdncmVnYXRvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheUFnZ3JlZ2F0b3IgPSByZXF1aXJlKCcuL19hcnJheUFnZ3JlZ2F0b3InKSxcbiAgICBiYXNlQWdncmVnYXRvciA9IHJlcXVpcmUoJy4vX2Jhc2VBZ2dyZWdhdG9yJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmdyb3VwQnlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaW5pdGlhbGl6ZXJdIFRoZSBhY2N1bXVsYXRvciBvYmplY3QgaW5pdGlhbGl6ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhZ2dyZWdhdG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdG9yKHNldHRlciwgaW5pdGlhbGl6ZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlBZ2dyZWdhdG9yIDogYmFzZUFnZ3JlZ2F0b3IsXG4gICAgICAgIGFjY3VtdWxhdG9yID0gaW5pdGlhbGl6ZXIgPyBpbml0aWFsaXplcigpIDoge307XG5cbiAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBzZXR0ZXIsIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMiksIGFjY3VtdWxhdG9yKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVBZ2dyZWdhdG9yO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createAggregator.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_createAssigner.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_createAssigner.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseRest = __webpack_require__(/*! ./_baseRest */ \"./node_modules/lodash/_baseRest.js\"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ \"./node_modules/lodash/_isIterateeCall.js\");\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcz8yZWMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQXNzaWduZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5hc3NpZ25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25lciBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihhc3NpZ25lcikge1xuICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLFxuICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICBjdXN0b21pemVyID0gKGFzc2lnbmVyLmxlbmd0aCA+IDMgJiYgdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH1cbiAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVBc3NpZ25lcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createAssigner.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_createBaseEach.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_createBaseEach.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRWFjaC5qcz85NTBhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQmFzZUVhY2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createBaseEach.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_createBaseFor.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_createBaseFor.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzPzk5Y2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUJhc2VGb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createBaseFor.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_createCaseFirst.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_createCaseFirst.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var castSlice = __webpack_require__(/*! ./_castSlice */ \"./node_modules/lodash/_castSlice.js\"),\n hasUnicode = __webpack_require__(/*! ./_hasUnicode */ \"./node_modules/lodash/_hasUnicode.js\"),\n stringToArray = __webpack_require__(/*! ./_stringToArray */ \"./node_modules/lodash/_stringToArray.js\"),\n toString = __webpack_require__(/*! ./toString */ \"./node_modules/lodash/toString.js\");\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVDYXNlRmlyc3QuanM/ZDE5NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQ2FzZUZpcnN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNhc3RTbGljZSA9IHJlcXVpcmUoJy4vX2Nhc3RTbGljZScpLFxuICAgIGhhc1VuaWNvZGUgPSByZXF1aXJlKCcuL19oYXNVbmljb2RlJyksXG4gICAgc3RyaW5nVG9BcnJheSA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvQXJyYXknKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5sb3dlckZpcnN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgVGhlIG5hbWUgb2YgdGhlIGBTdHJpbmdgIGNhc2UgbWV0aG9kIHRvIHVzZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNhc2VGaXJzdChtZXRob2ROYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgdmFyIHN0clN5bWJvbHMgPSBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gc3RyaW5nVG9BcnJheShzdHJpbmcpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBjaHIgPSBzdHJTeW1ib2xzXG4gICAgICA/IHN0clN5bWJvbHNbMF1cbiAgICAgIDogc3RyaW5nLmNoYXJBdCgwKTtcblxuICAgIHZhciB0cmFpbGluZyA9IHN0clN5bWJvbHNcbiAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDEpLmpvaW4oJycpXG4gICAgICA6IHN0cmluZy5zbGljZSgxKTtcblxuICAgIHJldHVybiBjaHJbbWV0aG9kTmFtZV0oKSArIHRyYWlsaW5nO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUNhc2VGaXJzdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createCaseFirst.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_createCompounder.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_createCompounder.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayReduce = __webpack_require__(/*! ./_arrayReduce */ \"./node_modules/lodash/_arrayReduce.js\"),\n deburr = __webpack_require__(/*! ./deburr */ \"./node_modules/lodash/deburr.js\"),\n words = __webpack_require__(/*! ./words */ \"./node_modules/lodash/words.js\");\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVDb21wb3VuZGVyLmpzP2IyMGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTtBQUMvQixZQUFZLG1CQUFPLENBQUMsK0NBQVM7O0FBRTdCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQ29tcG91bmRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheVJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5UmVkdWNlJyksXG4gICAgZGVidXJyID0gcmVxdWlyZSgnLi9kZWJ1cnInKSxcbiAgICB3b3JkcyA9IHJlcXVpcmUoJy4vd29yZHMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiO1xuXG4vKiogVXNlZCB0byBtYXRjaCBhcG9zdHJvcGhlcy4gKi9cbnZhciByZUFwb3MgPSBSZWdFeHAocnNBcG9zLCAnZycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmNhbWVsQ2FzZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lIGVhY2ggd29yZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvdW5kZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kZXIoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiBhcnJheVJlZHVjZSh3b3JkcyhkZWJ1cnIoc3RyaW5nKS5yZXBsYWNlKHJlQXBvcywgJycpKSwgY2FsbGJhY2ssICcnKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVDb21wb3VuZGVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createCompounder.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_createFind.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_createFind.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/lodash/keys.js\");\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVGaW5kLmpzPzVjYTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLCtDQUErQztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBfLmZpbmRgIG9yIGBfLmZpbmRMYXN0YCBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZmluZEluZGV4RnVuYyBUaGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29sbGVjdGlvbiBpbmRleC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZpbmQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUZpbmQoZmluZEluZGV4RnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgICBjb2xsZWN0aW9uID0ga2V5cyhjb2xsZWN0aW9uKTtcbiAgICAgIHByZWRpY2F0ZSA9IGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSk7IH07XG4gICAgfVxuICAgIHZhciBpbmRleCA9IGZpbmRJbmRleEZ1bmMoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpO1xuICAgIHJldHVybiBpbmRleCA+IC0xID8gaXRlcmFibGVbaXRlcmF0ZWUgPyBjb2xsZWN0aW9uW2luZGV4XSA6IGluZGV4XSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVGaW5kO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createFind.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_createSet.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_createSet.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Set = __webpack_require__(/*! ./_Set */ \"./node_modules/lodash/_Set.js\"),\n noop = __webpack_require__(/*! ./noop */ \"./node_modules/lodash/noop.js\"),\n setToArray = __webpack_require__(/*! ./_setToArray */ \"./node_modules/lodash/_setToArray.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanM/NzUwYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVLG1CQUFPLENBQUMsNkNBQVE7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLDZDQUFRO0FBQzNCLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVNldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBub29wID0gcmVxdWlyZSgnLi9ub29wJyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICovXG52YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVTZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createSet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_deburrLetter.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_deburrLetter.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var basePropertyOf = __webpack_require__(/*! ./_basePropertyOf */ \"./node_modules/lodash/_basePropertyOf.js\");\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWJ1cnJMZXR0ZXIuanM/YTkxOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZGVidXJyTGV0dGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VQcm9wZXJ0eU9mID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5T2YnKTtcblxuLyoqIFVzZWQgdG8gbWFwIExhdGluIFVuaWNvZGUgbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzLiAqL1xudmFyIGRlYnVycmVkTGV0dGVycyA9IHtcbiAgLy8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuICAnXFx4YzAnOiAnQScsICAnXFx4YzEnOiAnQScsICdcXHhjMic6ICdBJywgJ1xceGMzJzogJ0EnLCAnXFx4YzQnOiAnQScsICdcXHhjNSc6ICdBJyxcbiAgJ1xceGUwJzogJ2EnLCAgJ1xceGUxJzogJ2EnLCAnXFx4ZTInOiAnYScsICdcXHhlMyc6ICdhJywgJ1xceGU0JzogJ2EnLCAnXFx4ZTUnOiAnYScsXG4gICdcXHhjNyc6ICdDJywgICdcXHhlNyc6ICdjJyxcbiAgJ1xceGQwJzogJ0QnLCAgJ1xceGYwJzogJ2QnLFxuICAnXFx4YzgnOiAnRScsICAnXFx4YzknOiAnRScsICdcXHhjYSc6ICdFJywgJ1xceGNiJzogJ0UnLFxuICAnXFx4ZTgnOiAnZScsICAnXFx4ZTknOiAnZScsICdcXHhlYSc6ICdlJywgJ1xceGViJzogJ2UnLFxuICAnXFx4Y2MnOiAnSScsICAnXFx4Y2QnOiAnSScsICdcXHhjZSc6ICdJJywgJ1xceGNmJzogJ0knLFxuICAnXFx4ZWMnOiAnaScsICAnXFx4ZWQnOiAnaScsICdcXHhlZSc6ICdpJywgJ1xceGVmJzogJ2knLFxuICAnXFx4ZDEnOiAnTicsICAnXFx4ZjEnOiAnbicsXG4gICdcXHhkMic6ICdPJywgICdcXHhkMyc6ICdPJywgJ1xceGQ0JzogJ08nLCAnXFx4ZDUnOiAnTycsICdcXHhkNic6ICdPJywgJ1xceGQ4JzogJ08nLFxuICAnXFx4ZjInOiAnbycsICAnXFx4ZjMnOiAnbycsICdcXHhmNCc6ICdvJywgJ1xceGY1JzogJ28nLCAnXFx4ZjYnOiAnbycsICdcXHhmOCc6ICdvJyxcbiAgJ1xceGQ5JzogJ1UnLCAgJ1xceGRhJzogJ1UnLCAnXFx4ZGInOiAnVScsICdcXHhkYyc6ICdVJyxcbiAgJ1xceGY5JzogJ3UnLCAgJ1xceGZhJzogJ3UnLCAnXFx4ZmInOiAndScsICdcXHhmYyc6ICd1JyxcbiAgJ1xceGRkJzogJ1knLCAgJ1xceGZkJzogJ3knLCAnXFx4ZmYnOiAneScsXG4gICdcXHhjNic6ICdBZScsICdcXHhlNic6ICdhZScsXG4gICdcXHhkZSc6ICdUaCcsICdcXHhmZSc6ICd0aCcsXG4gICdcXHhkZic6ICdzcycsXG4gIC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG4gICdcXHUwMTAwJzogJ0EnLCAgJ1xcdTAxMDInOiAnQScsICdcXHUwMTA0JzogJ0EnLFxuICAnXFx1MDEwMSc6ICdhJywgICdcXHUwMTAzJzogJ2EnLCAnXFx1MDEwNSc6ICdhJyxcbiAgJ1xcdTAxMDYnOiAnQycsICAnXFx1MDEwOCc6ICdDJywgJ1xcdTAxMGEnOiAnQycsICdcXHUwMTBjJzogJ0MnLFxuICAnXFx1MDEwNyc6ICdjJywgICdcXHUwMTA5JzogJ2MnLCAnXFx1MDEwYic6ICdjJywgJ1xcdTAxMGQnOiAnYycsXG4gICdcXHUwMTBlJzogJ0QnLCAgJ1xcdTAxMTAnOiAnRCcsICdcXHUwMTBmJzogJ2QnLCAnXFx1MDExMSc6ICdkJyxcbiAgJ1xcdTAxMTInOiAnRScsICAnXFx1MDExNCc6ICdFJywgJ1xcdTAxMTYnOiAnRScsICdcXHUwMTE4JzogJ0UnLCAnXFx1MDExYSc6ICdFJyxcbiAgJ1xcdTAxMTMnOiAnZScsICAnXFx1MDExNSc6ICdlJywgJ1xcdTAxMTcnOiAnZScsICdcXHUwMTE5JzogJ2UnLCAnXFx1MDExYic6ICdlJyxcbiAgJ1xcdTAxMWMnOiAnRycsICAnXFx1MDExZSc6ICdHJywgJ1xcdTAxMjAnOiAnRycsICdcXHUwMTIyJzogJ0cnLFxuICAnXFx1MDExZCc6ICdnJywgICdcXHUwMTFmJzogJ2cnLCAnXFx1MDEyMSc6ICdnJywgJ1xcdTAxMjMnOiAnZycsXG4gICdcXHUwMTI0JzogJ0gnLCAgJ1xcdTAxMjYnOiAnSCcsICdcXHUwMTI1JzogJ2gnLCAnXFx1MDEyNyc6ICdoJyxcbiAgJ1xcdTAxMjgnOiAnSScsICAnXFx1MDEyYSc6ICdJJywgJ1xcdTAxMmMnOiAnSScsICdcXHUwMTJlJzogJ0knLCAnXFx1MDEzMCc6ICdJJyxcbiAgJ1xcdTAxMjknOiAnaScsICAnXFx1MDEyYic6ICdpJywgJ1xcdTAxMmQnOiAnaScsICdcXHUwMTJmJzogJ2knLCAnXFx1MDEzMSc6ICdpJyxcbiAgJ1xcdTAxMzQnOiAnSicsICAnXFx1MDEzNSc6ICdqJyxcbiAgJ1xcdTAxMzYnOiAnSycsICAnXFx1MDEzNyc6ICdrJywgJ1xcdTAxMzgnOiAnaycsXG4gICdcXHUwMTM5JzogJ0wnLCAgJ1xcdTAxM2InOiAnTCcsICdcXHUwMTNkJzogJ0wnLCAnXFx1MDEzZic6ICdMJywgJ1xcdTAxNDEnOiAnTCcsXG4gICdcXHUwMTNhJzogJ2wnLCAgJ1xcdTAxM2MnOiAnbCcsICdcXHUwMTNlJzogJ2wnLCAnXFx1MDE0MCc6ICdsJywgJ1xcdTAxNDInOiAnbCcsXG4gICdcXHUwMTQzJzogJ04nLCAgJ1xcdTAxNDUnOiAnTicsICdcXHUwMTQ3JzogJ04nLCAnXFx1MDE0YSc6ICdOJyxcbiAgJ1xcdTAxNDQnOiAnbicsICAnXFx1MDE0Nic6ICduJywgJ1xcdTAxNDgnOiAnbicsICdcXHUwMTRiJzogJ24nLFxuICAnXFx1MDE0Yyc6ICdPJywgICdcXHUwMTRlJzogJ08nLCAnXFx1MDE1MCc6ICdPJyxcbiAgJ1xcdTAxNGQnOiAnbycsICAnXFx1MDE0Zic6ICdvJywgJ1xcdTAxNTEnOiAnbycsXG4gICdcXHUwMTU0JzogJ1InLCAgJ1xcdTAxNTYnOiAnUicsICdcXHUwMTU4JzogJ1InLFxuICAnXFx1MDE1NSc6ICdyJywgICdcXHUwMTU3JzogJ3InLCAnXFx1MDE1OSc6ICdyJyxcbiAgJ1xcdTAxNWEnOiAnUycsICAnXFx1MDE1Yyc6ICdTJywgJ1xcdTAxNWUnOiAnUycsICdcXHUwMTYwJzogJ1MnLFxuICAnXFx1MDE1Yic6ICdzJywgICdcXHUwMTVkJzogJ3MnLCAnXFx1MDE1Zic6ICdzJywgJ1xcdTAxNjEnOiAncycsXG4gICdcXHUwMTYyJzogJ1QnLCAgJ1xcdTAxNjQnOiAnVCcsICdcXHUwMTY2JzogJ1QnLFxuICAnXFx1MDE2Myc6ICd0JywgICdcXHUwMTY1JzogJ3QnLCAnXFx1MDE2Nyc6ICd0JyxcbiAgJ1xcdTAxNjgnOiAnVScsICAnXFx1MDE2YSc6ICdVJywgJ1xcdTAxNmMnOiAnVScsICdcXHUwMTZlJzogJ1UnLCAnXFx1MDE3MCc6ICdVJywgJ1xcdTAxNzInOiAnVScsXG4gICdcXHUwMTY5JzogJ3UnLCAgJ1xcdTAxNmInOiAndScsICdcXHUwMTZkJzogJ3UnLCAnXFx1MDE2Zic6ICd1JywgJ1xcdTAxNzEnOiAndScsICdcXHUwMTczJzogJ3UnLFxuICAnXFx1MDE3NCc6ICdXJywgICdcXHUwMTc1JzogJ3cnLFxuICAnXFx1MDE3Nic6ICdZJywgICdcXHUwMTc3JzogJ3knLCAnXFx1MDE3OCc6ICdZJyxcbiAgJ1xcdTAxNzknOiAnWicsICAnXFx1MDE3Yic6ICdaJywgJ1xcdTAxN2QnOiAnWicsXG4gICdcXHUwMTdhJzogJ3onLCAgJ1xcdTAxN2MnOiAneicsICdcXHUwMTdlJzogJ3onLFxuICAnXFx1MDEzMic6ICdJSicsICdcXHUwMTMzJzogJ2lqJyxcbiAgJ1xcdTAxNTInOiAnT2UnLCAnXFx1MDE1Myc6ICdvZScsXG4gICdcXHUwMTQ5JzogXCInblwiLCAnXFx1MDE3Zic6ICdzJ1xufTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmRlYnVycmAgdG8gY29udmVydCBMYXRpbi0xIFN1cHBsZW1lbnQgYW5kIExhdGluIEV4dGVuZGVkLUFcbiAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGxldHRlciBUaGUgbWF0Y2hlZCBsZXR0ZXIgdG8gZGVidXJyLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICovXG52YXIgZGVidXJyTGV0dGVyID0gYmFzZVByb3BlcnR5T2YoZGVidXJyZWRMZXR0ZXJzKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWJ1cnJMZXR0ZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_deburrLetter.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_defineProperty.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_defineProperty.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\");\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcz8zYjRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjOztBQUV0QztBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxHQUFHO0FBQ0gsQ0FBQzs7QUFFRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2RlZmluZVByb3BlcnR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_defineProperty.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_equalArrays.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_equalArrays.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var SetCache = __webpack_require__(/*! ./_SetCache */ \"./node_modules/lodash/_SetCache.js\"),\n arraySome = __webpack_require__(/*! ./_arraySome */ \"./node_modules/lodash/_arraySome.js\"),\n cacheHas = __webpack_require__(/*! ./_cacheHas */ \"./node_modules/lodash/_cacheHas.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcz9hMmJlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9fYXJyYXlTb21lJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalArrays.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_equalByTag.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_equalByTag.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n Uint8Array = __webpack_require__(/*! ./_Uint8Array */ \"./node_modules/lodash/_Uint8Array.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/lodash/eq.js\"),\n equalArrays = __webpack_require__(/*! ./_equalArrays */ \"./node_modules/lodash/_equalArrays.js\"),\n mapToArray = __webpack_require__(/*! ./_mapToArray */ \"./node_modules/lodash/_mapToArray.js\"),\n setToArray = __webpack_require__(/*! ./_setToArray */ \"./node_modules/lodash/_setToArray.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEJ5VGFnLmpzPzFjM2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgY2FzZSBlcnJvclRhZzpcbiAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalByTag.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_equalObjects.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_equalObjects.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ \"./node_modules/lodash/_getAllKeys.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\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 * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanM/YjFlNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalObjects.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_freeGlobal.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_freeGlobal.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzPzU4NWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_freeGlobal.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getAllKeys.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_getAllKeys.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ \"./node_modules/lodash/_baseGetAllKeys.js\"),\n getSymbols = __webpack_require__(/*! ./_getSymbols */ \"./node_modules/lodash/_getSymbols.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/lodash/keys.js\");\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzP2E5OTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getAllKeys.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getAllKeysIn.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_getAllKeysIn.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ \"./node_modules/lodash/_baseGetAllKeys.js\"),\n getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ \"./node_modules/lodash/_getSymbolsIn.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/lodash/keysIn.js\");\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzSW4uanM/MWJhYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDaEQsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzSW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getAllKeysIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getMapData.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_getMapData.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isKeyable = __webpack_require__(/*! ./_isKeyable */ \"./node_modules/lodash/_isKeyable.js\");\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzPzQyNDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hcERhdGEuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNLZXlhYmxlID0gcmVxdWlyZSgnLi9faXNLZXlhYmxlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgOiBkYXRhLm1hcDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXBEYXRhO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getMapData.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getMatchData.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_getMatchData.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ \"./node_modules/lodash/_isStrictComparable.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/lodash/keys.js\");\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXRjaERhdGEuanM/M2JiNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5QkFBeUIsbUJBQU8sQ0FBQywyRUFBdUI7QUFDeEQsV0FBVyxtQkFBTyxDQUFDLDZDQUFROztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWF0Y2hEYXRhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBrZXlzKG9iamVjdCksXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHZhciBrZXkgPSByZXN1bHRbbGVuZ3RoXSxcbiAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWF0Y2hEYXRhO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getMatchData.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getNative.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_getNative.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ \"./node_modules/lodash/_baseIsNative.js\"),\n getValue = __webpack_require__(/*! ./_getValue */ \"./node_modules/lodash/_getValue.js\");\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanM/MGIwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE5hdGl2ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getNative.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getPrototype.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_getPrototype.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var overArg = __webpack_require__(/*! ./_overArg */ \"./node_modules/lodash/_overArg.js\");\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanM/MmRjYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UHJvdG90eXBlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getPrototype.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getRawTag.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_getRawTag.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\");\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 nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanM/MDBmZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7O0FBRWhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getRawTag.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getSymbols.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_getSymbols.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ \"./node_modules/lodash/_arrayFilter.js\"),\n stubArray = __webpack_require__(/*! ./stubArray */ \"./node_modules/lodash/stubArray.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzPzMyZjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlGaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheUZpbHRlcicpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getSymbols.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getSymbolsIn.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_getSymbolsIn.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayPush = __webpack_require__(/*! ./_arrayPush */ \"./node_modules/lodash/_arrayPush.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/lodash/_getPrototype.js\"),\n getSymbols = __webpack_require__(/*! ./_getSymbols */ \"./node_modules/lodash/_getSymbols.js\"),\n stubArray = __webpack_require__(/*! ./stubArray */ \"./node_modules/lodash/stubArray.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanM/YTAyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZ0JBQWdCLG1CQUFPLENBQUMsdURBQWE7O0FBRXJDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHNJbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHNJbiA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKG9iamVjdCkge1xuICAgIGFycmF5UHVzaChyZXN1bHQsIGdldFN5bWJvbHMob2JqZWN0KSk7XG4gICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlKG9iamVjdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9sc0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getSymbolsIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getTag.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/_getTag.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var DataView = __webpack_require__(/*! ./_DataView */ \"./node_modules/lodash/_DataView.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\"),\n Promise = __webpack_require__(/*! ./_Promise */ \"./node_modules/lodash/_Promise.js\"),\n Set = __webpack_require__(/*! ./_Set */ \"./node_modules/lodash/_Set.js\"),\n WeakMap = __webpack_require__(/*! ./_WeakMap */ \"./node_modules/lodash/_WeakMap.js\"),\n baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/lodash/_toSource.js\");\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanM/NDJhMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsVUFBVSxtQkFBTyxDQUFDLDZDQUFRO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxVQUFVLG1CQUFPLENBQUMsNkNBQVE7QUFDMUIsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getTag.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_getValue.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_getValue.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcz8zNjk4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VmFsdWU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getValue.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_hasPath.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_hasPath.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/lodash/_castPath.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/lodash/_isIndex.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/lodash/_toKey.js\");\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNQYXRoLmpzP2UyYzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzUGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgaGFzRnVuYykge1xuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICB9XG4gIGlmIChyZXN1bHQgfHwgKytpbmRleCAhPSBsZW5ndGgpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNQYXRoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hasPath.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_hasUnicode.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_hasUnicode.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNVbmljb2RlLmpzP2FhZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1VuaWNvZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG52YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNVbmljb2RlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hasUnicode.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_hasUnicodeWord.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_hasUnicodeWord.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNVbmljb2RlV29yZC5qcz83ZThlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EseUNBQXlDLEVBQUU7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1VuaWNvZGVXb3JkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xudmFyIHJlSGFzVW5pY29kZVdvcmQgPSAvW2Etel1bQS1aXXxbQS1aXXsyfVthLXpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgYSB3b3JkIGNvbXBvc2VkIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSB3b3JkIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGVXb3JkKHN0cmluZykge1xuICByZXR1cm4gcmVIYXNVbmljb2RlV29yZC50ZXN0KHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzVW5pY29kZVdvcmQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hasUnicodeWord.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_hashClear.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_hashClear.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanM/NDlmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hDbGVhcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashClear.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_hashDelete.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_hashDelete.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzPzFlZmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashDelete.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_hashGet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_hashGet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzP2JiYzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashGet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_hashHas.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_hashHas.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\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 * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzPzdhNDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEhhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hIYXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashHas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_hashSet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_hashSet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzPzI1MjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashSet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_initCloneArray.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_initCloneArray.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** 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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qcz9jODdjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQXJyYXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_initCloneArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_initCloneByTag.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_initCloneByTag.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ \"./node_modules/lodash/_cloneArrayBuffer.js\"),\n cloneDataView = __webpack_require__(/*! ./_cloneDataView */ \"./node_modules/lodash/_cloneDataView.js\"),\n cloneRegExp = __webpack_require__(/*! ./_cloneRegExp */ \"./node_modules/lodash/_cloneRegExp.js\"),\n cloneSymbol = __webpack_require__(/*! ./_cloneSymbol */ \"./node_modules/lodash/_cloneSymbol.js\"),\n cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ \"./node_modules/lodash/_cloneTypedArray.js\");\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVCeVRhZy5qcz9jMmI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVCeVRhZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpLFxuICAgIGNsb25lRGF0YVZpZXcgPSByZXF1aXJlKCcuL19jbG9uZURhdGFWaWV3JyksXG4gICAgY2xvbmVSZWdFeHAgPSByZXF1aXJlKCcuL19jbG9uZVJlZ0V4cCcpLFxuICAgIGNsb25lU3ltYm9sID0gcmVxdWlyZSgnLi9fY2xvbmVTeW1ib2wnKSxcbiAgICBjbG9uZVR5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19jbG9uZVR5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQnlUYWc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_initCloneByTag.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_initCloneObject.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_initCloneObject.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseCreate = __webpack_require__(/*! ./_baseCreate */ \"./node_modules/lodash/_baseCreate.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/lodash/_getPrototype.js\"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ \"./node_modules/lodash/_isPrototype.js\");\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanM/ZmEyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lT2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_initCloneObject.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_isFlattenable.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_isFlattenable.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0ZsYXR0ZW5hYmxlLmpzPzA2MjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNGbGF0dGVuYWJsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwcmVhZGFibGVTeW1ib2wgPSBTeW1ib2wgPyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZsYXR0ZW5hYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSB8fFxuICAgICEhKHNwcmVhZGFibGVTeW1ib2wgJiYgdmFsdWUgJiYgdmFsdWVbc3ByZWFkYWJsZVN5bWJvbF0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRmxhdHRlbmFibGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isFlattenable.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_isIndex.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_isIndex.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0luZGV4LmpzP2MwOTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isIndex.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_isIterateeCall.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_isIterateeCall.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var eq = __webpack_require__(/*! ./eq */ \"./node_modules/lodash/eq.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/lodash/_isIndex.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\");\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qcz85YWZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgKSB7XG4gICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJdGVyYXRlZUNhbGw7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isIterateeCall.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_isKey.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/_isKey.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleS5qcz9mNjA4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isKey.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_isKeyable.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_isKeyable.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanM/MTI5MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5YWJsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleWFibGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isKeyable.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_isMasked.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_isMasked.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var coreJsData = __webpack_require__(/*! ./_coreJsData */ \"./node_modules/lodash/_coreJsData.js\");\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcz8xMzY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNNYXNrZWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isMasked.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_isPrototype.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_isPrototype.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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\nmodule.exports = isPrototype;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1Byb3RvdHlwZS5qcz9lYWM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUHJvdG90eXBlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isPrototype.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_isStrictComparable.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/lodash/_isStrictComparable.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\");\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1N0cmljdENvbXBhcmFibGUuanM/MDhjYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1N0cmljdENvbXBhcmFibGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isStrictComparable.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_listCacheClear.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheClear.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVDbGVhci5qcz8yOGM5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVDbGVhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheClear.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_listCacheDelete.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheDelete.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ \"./node_modules/lodash/_assocIndexOf.js\");\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanM/NjlkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlRGVsZXRlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheDelete.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_listCacheGet.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheGet.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ \"./node_modules/lodash/_assocIndexOf.js\");\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanM/YjRjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUdldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheGet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_listCacheHas.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheHas.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ \"./node_modules/lodash/_assocIndexOf.js\");\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanM/ZmJhNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheHas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_listCacheSet.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheSet.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ \"./node_modules/lodash/_assocIndexOf.js\");\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanM/NjdjYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheSet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_mapCacheClear.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheClear.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var Hash = __webpack_require__(/*! ./_Hash */ \"./node_modules/lodash/_Hash.js\"),\n ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/lodash/_ListCache.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\");\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzPzdjNjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTO0FBQzVCLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVDbGVhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheClear.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_mapCacheDelete.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheDelete.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/lodash/_getMapData.js\");\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcz85M2VkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlRGVsZXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlRGVsZXRlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheDelete.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_mapCacheGet.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheGet.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/lodash/_getMapData.js\");\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcz8yNDc4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheGet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_mapCacheHas.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheHas.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/lodash/_getMapData.js\");\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUhhcy5qcz9hNTI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVIYXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheHas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_mapCacheSet.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheSet.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/lodash/_getMapData.js\");\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZVNldC5qcz8xZmM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlU2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheSet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_mapToArray.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_mapToArray.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzP2VkZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcFRvQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_matchesStrictComparable.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/lodash/_matchesStrictComparable.js ***!
|
||
\*********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZS5qcz8yMGVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_matchesStrictComparable.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_memoizeCapped.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_memoizeCapped.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var memoize = __webpack_require__(/*! ./memoize */ \"./node_modules/lodash/memoize.js\");\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzPzIzNGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG1lbW9pemUgPSByZXF1aXJlKCcuL21lbW9pemUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xudmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfSk7XG5cbiAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVDYXBwZWQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_memoizeCapped.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_nativeCreate.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_nativeCreate.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\");\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanM/NjA0NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeCreate.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_nativeKeys.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_nativeKeys.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var overArg = __webpack_require__(/*! ./_overArg */ \"./node_modules/lodash/_overArg.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzLmpzPzU3YTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeKeys.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_nativeKeysIn.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_nativeKeysIn.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanM/ZWM4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5c0luLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeKeysIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_nodeUtil.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_nodeUtil.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ \"./node_modules/lodash/_freeGlobal.js\");\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19ub2RlVXRpbC5qcz85OWQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtEQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBLGtCQUFrQixLQUEwQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbm9kZVV0aWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nodeUtil.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_objectToString.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_objectToString.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** 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 nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcz8yOWYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_objectToString.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_overArg.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_overArg.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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\nmodule.exports = overArg;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzPzkxZTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_overArg.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_overRest.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_overRest.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var apply = __webpack_require__(/*! ./_apply */ \"./node_modules/lodash/_apply.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcz8yMjg2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJSZXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFwcGx5ID0gcmVxdWlyZSgnLi9fYXBwbHknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyUmVzdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_overRest.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_parent.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/_parent.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/lodash/_baseGet.js\"),\n baseSlice = __webpack_require__(/*! ./_baseSlice */ \"./node_modules/lodash/_baseSlice.js\");\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19wYXJlbnQuanM/ODI5NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3BhcmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VTbGljZSA9IHJlcXVpcmUoJy4vX2Jhc2VTbGljZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggdG8gZ2V0IHRoZSBwYXJlbnQgdmFsdWUgb2YuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGFyZW50IHZhbHVlLlxuICovXG5mdW5jdGlvbiBwYXJlbnQob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBwYXRoLmxlbmd0aCA8IDIgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgYmFzZVNsaWNlKHBhdGgsIDAsIC0xKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_parent.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_root.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/_root.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ \"./node_modules/lodash/_freeGlobal.js\");\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzPzJiM2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_root.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_safeGet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_safeGet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zYWZlR2V0LmpzPzhhZGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zYWZlR2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_safeGet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_setCacheAdd.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_setCacheAdd.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcz83ZWQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlQWRkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVBZGQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setCacheAdd.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_setCacheHas.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_setCacheHas.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUhhcy5qcz9kYzBmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlSGFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlSGFzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setCacheHas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_setToArray.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_setToArray.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzP2FjNDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_setToString.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_setToString.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseSetToString = __webpack_require__(/*! ./_baseSetToString */ \"./node_modules/lodash/_baseSetToString.js\"),\n shortOut = __webpack_require__(/*! ./_shortOut */ \"./node_modules/lodash/_shortOut.js\");\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb1N0cmluZy5qcz9jMWM5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvU3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VTZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VTZXRUb1N0cmluZycpLFxuICAgIHNob3J0T3V0ID0gcmVxdWlyZSgnLi9fc2hvcnRPdXQnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUb1N0cmluZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setToString.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_shortOut.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_shortOut.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcz9mM2MxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Nob3J0T3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3J0T3V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_shortOut.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_shuffleSelf.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_shuffleSelf.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseRandom = __webpack_require__(/*! ./_baseRandom */ \"./node_modules/lodash/_baseRandom.js\");\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n}\n\nmodule.exports = shuffleSelf;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zaHVmZmxlU2VsZi5qcz9kNDYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2h1ZmZsZVNlbGYuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVJhbmRvbSA9IHJlcXVpcmUoJy4vX2Jhc2VSYW5kb20nKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2h1ZmZsZWAgd2hpY2ggbXV0YXRlcyBhbmQgc2V0cyB0aGUgc2l6ZSBvZiBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2h1ZmZsZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT1hcnJheS5sZW5ndGhdIFRoZSBzaXplIG9mIGBhcnJheWAuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gc2h1ZmZsZVNlbGYoYXJyYXksIHNpemUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gIHNpemUgPSBzaXplID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBzaXplO1xuICB3aGlsZSAoKytpbmRleCA8IHNpemUpIHtcbiAgICB2YXIgcmFuZCA9IGJhc2VSYW5kb20oaW5kZXgsIGxhc3RJbmRleCksXG4gICAgICAgIHZhbHVlID0gYXJyYXlbcmFuZF07XG5cbiAgICBhcnJheVtyYW5kXSA9IGFycmF5W2luZGV4XTtcbiAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTtcbiAgfVxuICBhcnJheS5sZW5ndGggPSBzaXplO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2h1ZmZsZVNlbGY7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_shuffleSelf.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_stackClear.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_stackClear.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/lodash/_ListCache.js\");\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0NsZWFyLmpzP2VmYjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0NsZWFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackClear.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_stackDelete.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_stackDelete.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcz8yZmNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tEZWxldGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackDelete.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_stackGet.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_stackGet.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0dldC5qcz84MDJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrR2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackGet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_stackHas.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_stackHas.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcz81NWEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tIYXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackHas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_stackSet.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_stackSet.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/lodash/_ListCache.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\"),\n MapCache = __webpack_require__(/*! ./_MapCache */ \"./node_modules/lodash/_MapCache.js\");\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja1NldC5qcz9kMDJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMxQixlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackSet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_strictIndexOf.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_strictIndexOf.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\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 strictIndexOf(array, value, fromIndex) {\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\nmodule.exports = strictIndexOf;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzPzA5OWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaWN0SW5kZXhPZi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpY3RJbmRleE9mO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_strictIndexOf.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_stringToArray.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_stringToArray.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var asciiToArray = __webpack_require__(/*! ./_asciiToArray */ \"./node_modules/lodash/_asciiToArray.js\"),\n hasUnicode = __webpack_require__(/*! ./_hasUnicode */ \"./node_modules/lodash/_hasUnicode.js\"),\n unicodeToArray = __webpack_require__(/*! ./_unicodeToArray */ \"./node_modules/lodash/_unicodeToArray.js\");\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb0FycmF5LmpzPzEyNmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0cmluZ1RvQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNjaWlUb0FycmF5ID0gcmVxdWlyZSgnLi9fYXNjaWlUb0FycmF5JyksXG4gICAgaGFzVW5pY29kZSA9IHJlcXVpcmUoJy4vX2hhc1VuaWNvZGUnKSxcbiAgICB1bmljb2RlVG9BcnJheSA9IHJlcXVpcmUoJy4vX3VuaWNvZGVUb0FycmF5Jyk7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICA/IHVuaWNvZGVUb0FycmF5KHN0cmluZylcbiAgICA6IGFzY2lpVG9BcnJheShzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1RvQXJyYXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stringToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_stringToPath.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_stringToPath.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ \"./node_modules/lodash/_memoizeCapped.js\");\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb1BhdGguanM/MThkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7O0FBRTlDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb1BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWVtb2l6ZUNhcHBlZCA9IHJlcXVpcmUoJy4vX21lbW9pemVDYXBwZWQnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlRXNjYXBlQ2hhciA9IC9cXFxcKFxcXFwpPy9nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbnZhciBzdHJpbmdUb1BhdGggPSBtZW1vaXplQ2FwcGVkKGZ1bmN0aW9uKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgfVxuICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgcmVzdWx0LnB1c2gocXVvdGUgPyBzdWJTdHJpbmcucmVwbGFjZShyZUVzY2FwZUNoYXIsICckMScpIDogKG51bWJlciB8fCBtYXRjaCkpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1RvUGF0aDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stringToPath.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_toKey.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/_toKey.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b0tleS5qcz9mNGQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsY0FBYztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyBrZXkgaWYgaXQncyBub3QgYSBzdHJpbmcgb3Igc3ltYm9sLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge3N0cmluZ3xzeW1ib2x9IFJldHVybnMgdGhlIGtleS5cbiAqL1xuZnVuY3Rpb24gdG9LZXkodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvS2V5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_toKey.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_toSource.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_toSource.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcz9kYzU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU291cmNlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_toSource.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_trimmedEndIndex.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_trimmedEndIndex.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL190cmltbWVkRW5kSW5kZXguanM/NGNlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL190cmltbWVkRW5kSW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbnZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gKiBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSB7XG4gIHZhciBpbmRleCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICByZXR1cm4gaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbW1lZEVuZEluZGV4O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_trimmedEndIndex.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_unescapeHtmlChar.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_unescapeHtmlChar.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var basePropertyOf = __webpack_require__(/*! ./_basePropertyOf */ \"./node_modules/lodash/_basePropertyOf.js\");\n\n/** Used to map HTML entities to characters. */\nvar htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n};\n\n/**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\nvar unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\nmodule.exports = unescapeHtmlChar;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL191bmVzY2FwZUh0bWxDaGFyLmpzP2NlMTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0EsUUFBUTtBQUNSLE9BQU87QUFDUCxPQUFPO0FBQ1AsU0FBUztBQUNULFFBQVE7QUFDUjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuZXNjYXBlSHRtbENoYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVByb3BlcnR5T2YgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHlPZicpO1xuXG4vKiogVXNlZCB0byBtYXAgSFRNTCBlbnRpdGllcyB0byBjaGFyYWN0ZXJzLiAqL1xudmFyIGh0bWxVbmVzY2FwZXMgPSB7XG4gICcmYW1wOyc6ICcmJyxcbiAgJyZsdDsnOiAnPCcsXG4gICcmZ3Q7JzogJz4nLFxuICAnJnF1b3Q7JzogJ1wiJyxcbiAgJyYjMzk7JzogXCInXCJcbn07XG5cbi8qKlxuICogVXNlZCBieSBgXy51bmVzY2FwZWAgdG8gY29udmVydCBIVE1MIGVudGl0aWVzIHRvIGNoYXJhY3RlcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5lc2NhcGVkIGNoYXJhY3Rlci5cbiAqL1xudmFyIHVuZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sVW5lc2NhcGVzKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmVzY2FwZUh0bWxDaGFyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_unescapeHtmlChar.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_unicodeToArray.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_unicodeToArray.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL191bmljb2RlVG9BcnJheS5qcz9kMDk0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxFQUFFO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdW5pY29kZVRvQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSByZWdleGVzLiAqL1xudmFyIHJlT3B0TW9kID0gcnNNb2RpZmllciArICc/JyxcbiAgICByc09wdFZhciA9ICdbJyArIHJzVmFyUmFuZ2UgKyAnXT8nLFxuICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4vKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xudmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gdW5pY29kZVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmljb2RlVG9BcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_unicodeToArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/_unicodeWords.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_unicodeWords.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL191bmljb2RlV29yZHMuanM/ZjRkOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxFQUFFO0FBQ2pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL191bmljb2RlV29yZHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgcnNMb3dlclJhbmdlID0gJ2EtelxcXFx4ZGYtXFxcXHhmNlxcXFx4ZjgtXFxcXHhmZicsXG4gICAgcnNNYXRoT3BSYW5nZSA9ICdcXFxceGFjXFxcXHhiMVxcXFx4ZDdcXFxceGY3JyxcbiAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgIHJzUHVuY3R1YXRpb25SYW5nZSA9ICdcXFxcdTIwMDAtXFxcXHUyMDZmJyxcbiAgICByc1NwYWNlUmFuZ2UgPSAnIFxcXFx0XFxcXHgwYlxcXFxmXFxcXHhhMFxcXFx1ZmVmZlxcXFxuXFxcXHJcXFxcdTIwMjhcXFxcdTIwMjlcXFxcdTE2ODBcXFxcdTE4MGVcXFxcdTIwMDBcXFxcdTIwMDFcXFxcdTIwMDJcXFxcdTIwMDNcXFxcdTIwMDRcXFxcdTIwMDVcXFxcdTIwMDZcXFxcdTIwMDdcXFxcdTIwMDhcXFxcdTIwMDlcXFxcdTIwMGFcXFxcdTIwMmZcXFxcdTIwNWZcXFxcdTMwMDAnLFxuICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJyxcbiAgICByc0JyZWFrUmFuZ2UgPSByc01hdGhPcFJhbmdlICsgcnNOb25DaGFyUmFuZ2UgKyByc1B1bmN0dWF0aW9uUmFuZ2UgKyByc1NwYWNlUmFuZ2U7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0Fwb3MgPSBcIlsnXFx1MjAxOV1cIixcbiAgICByc0JyZWFrID0gJ1snICsgcnNCcmVha1JhbmdlICsgJ10nLFxuICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgcnNEaWdpdHMgPSAnXFxcXGQrJyxcbiAgICByc0RpbmdiYXQgPSAnWycgKyByc0RpbmdiYXRSYW5nZSArICddJyxcbiAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgIHJzTWlzYyA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgcnNCcmVha1JhbmdlICsgcnNEaWdpdHMgKyByc0RpbmdiYXRSYW5nZSArIHJzTG93ZXJSYW5nZSArIHJzVXBwZXJSYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNVcHBlciA9ICdbJyArIHJzVXBwZXJSYW5nZSArICddJyxcbiAgICByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbnZhciByc01pc2NMb3dlciA9ICcoPzonICsgcnNMb3dlciArICd8JyArIHJzTWlzYyArICcpJyxcbiAgICByc01pc2NVcHBlciA9ICcoPzonICsgcnNVcHBlciArICd8JyArIHJzTWlzYyArICcpJyxcbiAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICByc09wdENvbnRyVXBwZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpEfExMfE18UkV8U3xUfFZFKSk/JyxcbiAgICByZU9wdE1vZCA9IHJzTW9kaWZpZXIgKyAnPycsXG4gICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICByc09wdEpvaW4gPSAnKD86JyArIHJzWldKICsgJyg/OicgKyBbcnNOb25Bc3RyYWwsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzT3B0VmFyICsgcmVPcHRNb2QgKyAnKSonLFxuICAgIHJzT3JkTG93ZXIgPSAnXFxcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxcXGR0aCkoPz1cXFxcYnxbQS1aX10pJyxcbiAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgIHJzRW1vamkgPSAnKD86JyArIFtyc0RpbmdiYXQsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzU2VxO1xuXG4vKiogVXNlZCB0byBtYXRjaCBjb21wbGV4IG9yIGNvbXBvdW5kIHdvcmRzLiAqL1xudmFyIHJlVW5pY29kZVdvcmQgPSBSZWdFeHAoW1xuICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICByc01pc2NVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIgKyByc01pc2NMb3dlciwgJyQnXS5qb2luKCd8JykgKyAnKScsXG4gIHJzVXBwZXIgKyAnPycgKyByc01pc2NMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlcixcbiAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgcnNPcmRVcHBlcixcbiAgcnNPcmRMb3dlcixcbiAgcnNEaWdpdHMsXG4gIHJzRW1vamlcbl0uam9pbignfCcpLCAnZycpO1xuXG4vKipcbiAqIFNwbGl0cyBhIFVuaWNvZGUgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICovXG5mdW5jdGlvbiB1bmljb2RlV29yZHMoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlV29yZCkgfHwgW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pY29kZVdvcmRzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_unicodeWords.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/camelCase.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/camelCase.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var capitalize = __webpack_require__(/*! ./capitalize */ \"./node_modules/lodash/capitalize.js\"),\n createCompounder = __webpack_require__(/*! ./_createCompounder */ \"./node_modules/lodash/_createCompounder.js\");\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NhbWVsQ2FzZS5qcz9iYmE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3ZDLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jYW1lbENhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2FwaXRhbGl6ZSA9IHJlcXVpcmUoJy4vY2FwaXRhbGl6ZScpLFxuICAgIGNyZWF0ZUNvbXBvdW5kZXIgPSByZXF1aXJlKCcuL19jcmVhdGVDb21wb3VuZGVyJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gW2NhbWVsIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhbWVsQ2FzZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IFN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhbWVsIGNhc2VkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5jYW1lbENhc2UoJ0ZvbyBCYXInKTtcbiAqIC8vID0+ICdmb29CYXInXG4gKlxuICogXy5jYW1lbENhc2UoJy0tZm9vLWJhci0tJyk7XG4gKiAvLyA9PiAnZm9vQmFyJ1xuICpcbiAqIF8uY2FtZWxDYXNlKCdfX0ZPT19CQVJfXycpO1xuICogLy8gPT4gJ2Zvb0JhcidcbiAqL1xudmFyIGNhbWVsQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICB3b3JkID0gd29yZC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gY2FwaXRhbGl6ZSh3b3JkKSA6IHdvcmQpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2FtZWxDYXNlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/camelCase.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/capitalize.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/capitalize.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var toString = __webpack_require__(/*! ./toString */ \"./node_modules/lodash/toString.js\"),\n upperFirst = __webpack_require__(/*! ./upperFirst */ \"./node_modules/lodash/upperFirst.js\");\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NhcGl0YWxpemUuanM/ZTlhNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NhcGl0YWxpemUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuL3RvU3RyaW5nJyksXG4gICAgdXBwZXJGaXJzdCA9IHJlcXVpcmUoJy4vdXBwZXJGaXJzdCcpO1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZSBhbmQgdGhlIHJlbWFpbmluZ1xuICogdG8gbG93ZXIgY2FzZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjYXBpdGFsaXplLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FwaXRhbGl6ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmNhcGl0YWxpemUoJ0ZSRUQnKTtcbiAqIC8vID0+ICdGcmVkJ1xuICovXG5mdW5jdGlvbiBjYXBpdGFsaXplKHN0cmluZykge1xuICByZXR1cm4gdXBwZXJGaXJzdCh0b1N0cmluZyhzdHJpbmcpLnRvTG93ZXJDYXNlKCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhcGl0YWxpemU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/capitalize.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/clone.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/clone.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseClone = __webpack_require__(/*! ./_baseClone */ \"./node_modules/lodash/_baseClone.js\");\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lLmpzP2I4Y2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGVcbiAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gKiBhbmQgc3VwcG9ydHMgY2xvbmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLCBkYXRlIG9iamVjdHMsIG1hcHMsXG4gKiBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLCBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWRcbiAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gKiBhcyBwbGFpbiBvYmplY3RzLiBBbiBlbXB0eSBvYmplY3QgaXMgcmV0dXJuZWQgZm9yIHVuY2xvbmVhYmxlIHZhbHVlcyBzdWNoXG4gKiBhcyBlcnJvciBvYmplY3RzLCBmdW5jdGlvbnMsIERPTSBub2RlcywgYW5kIFdlYWtNYXBzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVEZWVwXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAqIGNvbnNvbGUubG9nKHNoYWxsb3dbMF0gPT09IG9iamVjdHNbMF0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjbG9uZSh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/clone.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/cloneDeep.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/cloneDeep.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseClone = __webpack_require__(/*! ./_baseClone */ \"./node_modules/lodash/_baseClone.js\");\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lRGVlcC5qcz8wNjQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjOztBQUV0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUyxHQUFHLFNBQVM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gKlxuICogdmFyIGRlZXAgPSBfLmNsb25lRGVlcChvYmplY3RzKTtcbiAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEZWVwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/cloneDeep.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/compact.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/compact.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbXBhY3QuanM/YzIyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb21wYWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggYWxsIGZhbHNleSB2YWx1ZXMgcmVtb3ZlZC4gVGhlIHZhbHVlcyBgZmFsc2VgLCBgbnVsbGAsXG4gKiBgMGAsIGBcIlwiYCwgYHVuZGVmaW5lZGAsIGFuZCBgTmFOYCBhcmUgZmFsc2V5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uY29tcGFjdChbMCwgMSwgZmFsc2UsIDIsICcnLCAzXSk7XG4gKiAvLyA9PiBbMSwgMiwgM11cbiAqL1xuZnVuY3Rpb24gY29tcGFjdChhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wYWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/compact.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/concat.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/concat.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayPush = __webpack_require__(/*! ./_arrayPush */ \"./node_modules/lodash/_arrayPush.js\"),\n baseFlatten = __webpack_require__(/*! ./_baseFlatten */ \"./node_modules/lodash/_baseFlatten.js\"),\n copyArray = __webpack_require__(/*! ./_copyArray */ \"./node_modules/lodash/_copyArray.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nmodule.exports = concat;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbmNhdC5qcz8zNDgyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25jYXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGFycmF5IGNvbmNhdGVuYXRpbmcgYGFycmF5YCB3aXRoIGFueSBhZGRpdGlvbmFsIGFycmF5c1xuICogYW5kL29yIHZhbHVlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb25jYXRlbmF0ZS5cbiAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjb25jYXRlbmF0ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGNvbmNhdGVuYXRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5ID0gWzFdO1xuICogdmFyIG90aGVyID0gXy5jb25jYXQoYXJyYXksIDIsIFszXSwgW1s0XV0pO1xuICpcbiAqIGNvbnNvbGUubG9nKG90aGVyKTtcbiAqIC8vID0+IFsxLCAyLCAzLCBbNF1dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXkpO1xuICogLy8gPT4gWzFdXG4gKi9cbmZ1bmN0aW9uIGNvbmNhdCgpIHtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBhcmdzID0gQXJyYXkobGVuZ3RoIC0gMSksXG4gICAgICBhcnJheSA9IGFyZ3VtZW50c1swXSxcbiAgICAgIGluZGV4ID0gbGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgYXJnc1tpbmRleCAtIDFdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXlQdXNoKGlzQXJyYXkoYXJyYXkpID8gY29weUFycmF5KGFycmF5KSA6IFthcnJheV0sIGJhc2VGbGF0dGVuKGFyZ3MsIDEpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb25jYXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/concat.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/constant.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/constant.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbnN0YW50LmpzPzcyZjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLHdDQUF3QyxTQUFTO0FBQ2pEO0FBQ0E7QUFDQSxXQUFXLFNBQVMsR0FBRyxTQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvY29uc3RhbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGZyb20gdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzWzBdID09PSBvYmplY3RzWzFdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb25zdGFudDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/constant.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/debounce.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/debounce.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n now = __webpack_require__(/*! ./now */ \"./node_modules/lodash/now.js\"),\n toNumber = __webpack_require__(/*! ./toNumber */ \"./node_modules/lodash/toNumber.js\");\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2RlYm91bmNlLmpzP2IwNDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFVBQVUsbUJBQU8sQ0FBQywyQ0FBTztBQUN6QixlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU8sWUFBWTtBQUM5QixXQUFXLFFBQVE7QUFDbkI7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSw4Q0FBOEMsa0JBQWtCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2RlYm91bmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIG5vdyA9IHJlcXVpcmUoJy4vbm93JyksXG4gICAgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmdcbiAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgIDogdGltZVdhaXRpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/debounce.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/deburr.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/deburr.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var deburrLetter = __webpack_require__(/*! ./_deburrLetter */ \"./node_modules/lodash/_deburrLetter.js\"),\n toString = __webpack_require__(/*! ./toString */ \"./node_modules/lodash/toString.js\");\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2RlYnVyci5qcz80Y2FhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9kZWJ1cnIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVidXJyTGV0dGVyID0gcmVxdWlyZSgnLi9fZGVidXJyTGV0dGVyJyksXG4gICAgdG9TdHJpbmcgPSByZXF1aXJlKCcuL3RvU3RyaW5nJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xudmFyIHJlTGF0aW4gPSAvW1xceGMwLVxceGQ2XFx4ZDgtXFx4ZjZcXHhmOC1cXHhmZlxcdTAxMDAtXFx1MDE3Zl0vZztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXSc7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICogW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBmb3Igc3ltYm9sc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzX2Zvcl9TeW1ib2xzKS5cbiAqL1xudmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbi8qKlxuICogRGVidXJycyBgc3RyaW5nYCBieSBjb252ZXJ0aW5nXG4gKiBbTGF0aW4tMSBTdXBwbGVtZW50XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbi0xX1N1cHBsZW1lbnRfKFVuaWNvZGVfYmxvY2spI0NoYXJhY3Rlcl90YWJsZSlcbiAqIGFuZCBbTGF0aW4gRXh0ZW5kZWQtQV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fRXh0ZW5kZWQtQSlcbiAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycyBhbmQgcmVtb3ZpbmdcbiAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IFN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZGVidXJyLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlYnVycignZMOpasOgIHZ1Jyk7XG4gKiAvLyA9PiAnZGVqYSB2dSdcbiAqL1xuZnVuY3Rpb24gZGVidXJyKHN0cmluZykge1xuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICByZXR1cm4gc3RyaW5nICYmIHN0cmluZy5yZXBsYWNlKHJlTGF0aW4sIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYnVycjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/deburr.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/each.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/each.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! ./forEach */ \"./node_modules/lodash/forEach.js\");\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VhY2guanM/YzY0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxtREFBVyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvZWFjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mb3JFYWNoJyk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/each.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/eq.js":
|
||
/*!***********************************!*\
|
||
!*** ./node_modules/lodash/eq.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzPzk2MzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9lcS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/eq.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/filter.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/filter.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ \"./node_modules/lodash/_arrayFilter.js\"),\n baseFilter = __webpack_require__(/*! ./_baseFilter */ \"./node_modules/lodash/_baseFilter.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbHRlci5qcz85MzgwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUE4QztBQUNwRCxNQUFNO0FBQ047QUFDQTtBQUNBLGdDQUFnQyxrQkFBa0IsRUFBRTtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQTRCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsWUFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbHRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgYmFzZUZpbHRlciA9IHJlcXVpcmUoJy4vX2Jhc2VGaWx0ZXInKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyBhbiBhcnJheSBvZiBhbGwgZWxlbWVudHNcbiAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqICoqTm90ZToqKiBVbmxpa2UgYF8ucmVtb3ZlYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKiBAc2VlIF8ucmVqZWN0XG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICogXTtcbiAqXG4gKiBfLmZpbHRlcih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICpcbiAqIC8vIENvbWJpbmluZyBzZXZlcmFsIHByZWRpY2F0ZXMgdXNpbmcgYF8ub3ZlckV2ZXJ5YCBvciBgXy5vdmVyU29tZWAuXG4gKiBfLmZpbHRlcih1c2VycywgXy5vdmVyU29tZShbeyAnYWdlJzogMzYgfSwgWydhZ2UnLCA0MF1dKSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAnYmFybmV5J11cbiAqL1xuZnVuY3Rpb24gZmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaWx0ZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/filter.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/find.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/find.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var createFind = __webpack_require__(/*! ./_createFind */ \"./node_modules/lodash/_createFind.js\"),\n findIndex = __webpack_require__(/*! ./findIndex */ \"./node_modules/lodash/findIndex.js\");\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmQuanM/Mjc2OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsTUFBTSwrQ0FBK0M7QUFDckQsTUFBTSxnREFBZ0Q7QUFDdEQsTUFBTTtBQUNOO0FBQ0E7QUFDQSw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJCQUEyQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9maW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNyZWF0ZUZpbmQgPSByZXF1aXJlKCcuL19jcmVhdGVGaW5kJyksXG4gICAgZmluZEluZGV4ID0gcmVxdWlyZSgnLi9maW5kSW5kZXgnKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIHRoZSBmaXJzdCBlbGVtZW50XG4gKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdmcmVkJ1xuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKi9cbnZhciBmaW5kID0gY3JlYXRlRmluZChmaW5kSW5kZXgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/find.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/findIndex.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/findIndex.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ \"./node_modules/lodash/_baseFindIndex.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n toInteger = __webpack_require__(/*! ./toInteger */ \"./node_modules/lodash/toInteger.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmRJbmRleC5qcz81MWY1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjtBQUM5QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsZ0JBQWdCLG1CQUFPLENBQUMsdURBQWE7O0FBRXJDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxNQUFNLHFDQUFxQztBQUMzQyxNQUFNLHFDQUFxQztBQUMzQyxNQUFNO0FBQ047QUFDQTtBQUNBLG1DQUFtQywyQkFBMkIsRUFBRTtBQUNoRTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsa0NBQWtDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmluZEluZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VGaW5kSW5kZXggPSByZXF1aXJlKCcuL19iYXNlRmluZEluZGV4JyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gKiAvLyA9PiAwXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gKiAvLyA9PiAxXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiAyXG4gKi9cbmZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICBpZiAoIWxlbmd0aCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgfVxuICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kSW5kZXg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/findIndex.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/first.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/first.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("module.exports = __webpack_require__(/*! ./head */ \"./node_modules/lodash/head.js\");\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpcnN0LmpzPzY5ZjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsNkNBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpcnN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2hlYWQnKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/first.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/flattenDeep.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/flattenDeep.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ \"./node_modules/lodash/_baseFlatten.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZsYXR0ZW5EZWVwLmpzPzk5MWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZsYXR0ZW5EZWVwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSBmbGF0dGVucyBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZmxhdHRlbkRlZXAoWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAqIC8vID0+IFsxLCAyLCAzLCA0LCA1XVxuICovXG5mdW5jdGlvbiBmbGF0dGVuRGVlcChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgSU5GSU5JVFkpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbkRlZXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/flattenDeep.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/forEach.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/forEach.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayEach = __webpack_require__(/*! ./_arrayEach */ \"./node_modules/lodash/_arrayEach.js\"),\n baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/lodash/_baseEach.js\"),\n castFunction = __webpack_require__(/*! ./_castFunction */ \"./node_modules/lodash/_castFunction.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZvckVhY2guanM/NmNkNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGNBQWMsaUJBQWlCO0FBQy9CO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvZm9yRWFjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgY2FzdEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fY2FzdEZ1bmN0aW9uJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggZWxlbWVudC5cbiAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogKipOb3RlOioqIEFzIHdpdGggb3RoZXIgXCJDb2xsZWN0aW9uc1wiIG1ldGhvZHMsIG9iamVjdHMgd2l0aCBhIFwibGVuZ3RoXCJcbiAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gKiBvciBgXy5mb3JPd25gIGZvciBvYmplY3QgaXRlcmF0aW9uLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhbGlhcyBlYWNoXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAqIEBzZWUgXy5mb3JFYWNoUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5mb3JFYWNoKFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzIGAxYCB0aGVuIGAyYC5cbiAqXG4gKiBfLmZvckVhY2goeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICovXG5mdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaCA6IGJhc2VFYWNoO1xuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBjYXN0RnVuY3Rpb24oaXRlcmF0ZWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/forEach.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/get.js":
|
||
/*!************************************!*\
|
||
!*** ./node_modules/lodash/get.js ***!
|
||
\************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/lodash/_baseGet.js\");\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcz85YjAyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBLGlCQUFpQixRQUFRLE9BQU8sU0FBUyxFQUFFO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gKiBgdW5kZWZpbmVkYCwgdGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGluIGl0cyBwbGFjZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuNy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAqXG4gKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICogLy8gPT4gM1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICogLy8gPT4gM1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAqIC8vID0+ICdkZWZhdWx0J1xuICovXG5mdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/get.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/groupBy.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/groupBy.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/lodash/_baseAssignValue.js\"),\n createAggregator = __webpack_require__(/*! ./_createAggregator */ \"./node_modules/lodash/_createAggregator.js\");\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 * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dyb3VwQnkuanM/NmVkZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCOztBQUVwRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dyb3VwQnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgY3JlYXRlQWdncmVnYXRvciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFnZ3JlZ2F0b3InKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgb3JkZXIgb2YgZ3JvdXBlZCB2YWx1ZXNcbiAqIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gYGNvbGxlY3Rpb25gLiBUaGUgY29ycmVzcG9uZGluZ1xuICogdmFsdWUgb2YgZWFjaCBrZXkgaXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlXG4gKiBrZXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5ncm91cEJ5KFs2LjEsIDQuMiwgNi4zXSwgTWF0aC5mbG9vcik7XG4gKiAvLyA9PiB7ICc0JzogWzQuMl0sICc2JzogWzYuMSwgNi4zXSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmdyb3VwQnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAqIC8vID0+IHsgJzMnOiBbJ29uZScsICd0d28nXSwgJzUnOiBbJ3RocmVlJ10gfVxuICovXG52YXIgZ3JvdXBCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgW3ZhbHVlXSk7XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdyb3VwQnk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/groupBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/hasIn.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/hasIn.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ \"./node_modules/lodash/_baseHasIn.js\"),\n hasPath = __webpack_require__(/*! ./_hasPath */ \"./node_modules/lodash/_hasPath.js\");\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2hhc0luLmpzPzg2MDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSwwQkFBMEIsZ0JBQWdCLFNBQVMsR0FBRztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvaGFzSW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUhhc0luID0gcmVxdWlyZSgnLi9fYmFzZUhhc0luJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IG9yIGluaGVyaXRlZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/hasIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/head.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/head.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2hlYWQuanM/YTU5YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2hlYWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdldHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAYWxpYXMgZmlyc3RcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5oZWFkKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAxXG4gKlxuICogXy5oZWFkKFtdKTtcbiAqIC8vID0+IHVuZGVmaW5lZFxuICovXG5mdW5jdGlvbiBoZWFkKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGFycmF5WzBdIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhlYWQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/head.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/identity.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/identity.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lkZW50aXR5LmpzP2NkOWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaWRlbnRpdHk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/identity.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/includes.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/includes.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ \"./node_modules/lodash/_baseIndexOf.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\"),\n isString = __webpack_require__(/*! ./isString */ \"./node_modules/lodash/isString.js\"),\n toInteger = __webpack_require__(/*! ./toInteger */ \"./node_modules/lodash/toInteger.js\"),\n values = __webpack_require__(/*! ./values */ \"./node_modules/lodash/values.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\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\nmodule.exports = includes;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2luY2x1ZGVzLmpzPzhhMzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTtBQUNyQyxhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0JBQW9CO0FBQy9CLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlCQUFpQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2luY2x1ZGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpLFxuICAgIHZhbHVlcyA9IHJlcXVpcmUoJy4vdmFsdWVzJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiBgY29sbGVjdGlvbmAuIElmIGBjb2xsZWN0aW9uYCBpcyBhIHN0cmluZywgaXQnc1xuICogY2hlY2tlZCBmb3IgYSBzdWJzdHJpbmcgb2YgYHZhbHVlYCwgb3RoZXJ3aXNlXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogaXMgdXNlZCBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXNcbiAqIHRoZSBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIGBjb2xsZWN0aW9uYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSwgMik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaW5jbHVkZXMoeyAnYSc6IDEsICdiJzogMiB9LCAxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmluY2x1ZGVzKCdhYmNkJywgJ2JjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgsIGd1YXJkKSB7XG4gIGNvbGxlY3Rpb24gPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb24gOiB2YWx1ZXMoY29sbGVjdGlvbik7XG4gIGZyb21JbmRleCA9IChmcm9tSW5kZXggJiYgIWd1YXJkKSA/IHRvSW50ZWdlcihmcm9tSW5kZXgpIDogMDtcblxuICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG4gIGlmIChmcm9tSW5kZXggPCAwKSB7XG4gICAgZnJvbUluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGZyb21JbmRleCwgMCk7XG4gIH1cbiAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pXG4gICAgPyAoZnJvbUluZGV4IDw9IGxlbmd0aCAmJiBjb2xsZWN0aW9uLmluZGV4T2YodmFsdWUsIGZyb21JbmRleCkgPiAtMSlcbiAgICA6ICghIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbmNsdWRlcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/includes.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isArguments.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/isArguments.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ \"./node_modules/lodash/_baseIsArguments.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\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/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\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 */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzP2QzNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtCQUFrQixFQUFFO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsa0JBQWtCLEVBQUU7QUFDbEU7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL19iYXNlSXNBcmd1bWVudHMnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArguments.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isArray.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/isArray.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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\nmodule.exports = isArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanM/Njc0NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isArrayLike.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/isArrayLike.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\");\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\nmodule.exports = isArrayLike;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzPzMwYzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArrayLike.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isArrayLikeObject.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/isArrayLikeObject.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\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\nmodule.exports = isArrayLikeObject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlT2JqZWN0LmpzP2RjYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArrayLikeObject.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isBuffer.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isBuffer.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\"),\n stubFalse = __webpack_require__(/*! ./stubFalse */ \"./node_modules/lodash/stubFalse.js\");\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzPzBkMjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQVcsbUJBQU8sQ0FBQywrQ0FBUztBQUM1QixnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQSxrQkFBa0IsS0FBMEI7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isBuffer.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isEmpty.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/isEmpty.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseKeys = __webpack_require__(/*! ./_baseKeys */ \"./node_modules/lodash/_baseKeys.js\"),\n getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/lodash/_getTag.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ \"./node_modules/lodash/_isPrototype.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/lodash/isTypedArray.js\");\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\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 * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRW1wdHkuanM/MTNlYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRW1wdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gKlxuICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gKiBwcm9wZXJ0aWVzLlxuICpcbiAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICogU2ltaWxhcmx5LCBtYXBzIGFuZCBzZXRzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBzaXplYCBvZiBgMGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0VtcHR5KG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSh0cnVlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAoaXNBcnJheSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gIH1cbiAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgIHJldHVybiAhYmFzZUtleXModmFsdWUpLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VtcHR5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isEmpty.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isFunction.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/isFunction.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\");\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\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 if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanM/OTUyMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isFunction.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isLength.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isLength.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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\nmodule.exports = isLength;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzP2IyMTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isLength.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isMap.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/isMap.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIsMap = __webpack_require__(/*! ./_baseIsMap */ \"./node_modules/lodash/_baseIsMap.js\"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ \"./node_modules/lodash/_baseUnary.js\"),\n nodeUtil = __webpack_require__(/*! ./_nodeUtil */ \"./node_modules/lodash/_nodeUtil.js\");\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWFwLmpzP2NjNDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUlzTWFwID0gcmVxdWlyZSgnLi9fYmFzZUlzTWFwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc01hcChuZXcgTWFwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isMap.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isObject.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isObject.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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 != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzPzFhOGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isObject.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isObjectLike.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/isObjectLike.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\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 != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcz8xMzEwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isObjectLike.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isPlainObject.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/isPlainObject.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/lodash/_getPrototype.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\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 * 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) || baseGetTag(value) != objectTag) {\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' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanM/NjBlZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNQbGFpbk9iamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isPlainObject.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isSet.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/isSet.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIsSet = __webpack_require__(/*! ./_baseIsSet */ \"./node_modules/lodash/_baseIsSet.js\"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ \"./node_modules/lodash/_baseUnary.js\"),\n nodeUtil = __webpack_require__(/*! ./_nodeUtil */ \"./node_modules/lodash/_nodeUtil.js\");\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzP2Q3ZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isSet.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isString.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isString.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\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) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzP2UyYTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isString.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isSymbol.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isSymbol.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzP2ZmZDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isSymbol.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/isTypedArray.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/isTypedArray.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ \"./node_modules/lodash/_baseIsTypedArray.js\"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ \"./node_modules/lodash/_baseUnary.js\"),\n nodeUtil = __webpack_require__(/*! ./_nodeUtil */ \"./node_modules/lodash/_nodeUtil.js\");\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcz83M2FjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Jhc2VJc1R5cGVkQXJyYXknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVHlwZWRBcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isTypedArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/keyBy.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/keyBy.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/lodash/_baseAssignValue.js\"),\n createAggregator = __webpack_require__(/*! ./_createAggregator */ \"./node_modules/lodash/_createAggregator.js\");\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleUJ5LmpzPzQxNTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxNQUFNLDRCQUE0QjtBQUNsQyxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osVUFBVSxPQUFPLDRCQUE0QixRQUFRLDhCQUE4QjtBQUNuRjtBQUNBO0FBQ0EsVUFBVSxVQUFVLDRCQUE0QixZQUFZLDhCQUE4QjtBQUMxRjtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlCeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKSxcbiAgICBjcmVhdGVBZ2dyZWdhdG9yID0gcmVxdWlyZSgnLi9fY3JlYXRlQWdncmVnYXRvcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gKiBlYWNoIGtleSBpcyB0aGUgbGFzdCBlbGVtZW50IHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBrZXkuIFRoZVxuICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheSA9IFtcbiAqICAgeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sXG4gKiAgIHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH1cbiAqIF07XG4gKlxuICogXy5rZXlCeShhcnJheSwgZnVuY3Rpb24obykge1xuICogICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShvLmNvZGUpO1xuICogfSk7XG4gKiAvLyA9PiB7ICdhJzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdkJzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gKlxuICogXy5rZXlCeShhcnJheSwgJ2RpcicpO1xuICogLy8gPT4geyAnbGVmdCc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAncmlnaHQnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAqL1xudmFyIGtleUJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCB2YWx1ZSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBrZXlCeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/keyBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/keys.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/keys.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/lodash/_arrayLikeKeys.js\"),\n baseKeys = __webpack_require__(/*! ./_baseKeys */ \"./node_modules/lodash/_baseKeys.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\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\nmodule.exports = keys;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanM/ZWM2OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/keys.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/keysIn.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/keysIn.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/lodash/_arrayLikeKeys.js\"),\n baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ \"./node_modules/lodash/_baseKeysIn.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcz85OTM0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjtBQUM5QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLFxuICAgIGJhc2VLZXlzSW4gPSByZXF1aXJlKCcuL19iYXNlS2V5c0luJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXNJbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/keysIn.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/last.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/last.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xhc3QuanM/NDQxNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xhc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsYXN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/last.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/map.js":
|
||
/*!************************************!*\
|
||
!*** ./node_modules/lodash/map.js ***!
|
||
\************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/lodash/_arrayMap.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n baseMap = __webpack_require__(/*! ./_baseMap */ \"./node_modules/lodash/_baseMap.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL21hcC5qcz9kZDYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpQkFBaUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsTUFBTSxtQkFBbUI7QUFDekIsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VNYXAgPSByZXF1aXJlKCcuL19iYXNlTWFwJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1XG4gKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICpcbiAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAqIGBmaWxsYCwgYGludmVydGAsIGBwYXJzZUludGAsIGByYW5kb21gLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZXBlYXRgLFxuICogYHNhbXBsZVNpemVgLCBgc2xpY2VgLCBgc29tZWAsIGBzb3J0QnlgLCBgc3BsaXRgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAqICAgcmV0dXJuIG4gKiBuO1xuICogfVxuICpcbiAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAqIC8vID0+IFsxNiwgNjRdXG4gKlxuICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICogLy8gPT4gWzE2LCA2NF0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JyB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnIH1cbiAqIF07XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICovXG5mdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlNYXAgOiBiYXNlTWFwO1xuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/map.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/maxBy.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/maxBy.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ \"./node_modules/lodash/_baseExtremum.js\"),\n baseGt = __webpack_require__(/*! ./_baseGt */ \"./node_modules/lodash/_baseGt.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\");\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL21heEJ5LmpzPzE3MjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBLG1CQUFtQixTQUFTLEdBQUcsU0FBUztBQUN4QztBQUNBLGlDQUFpQyxZQUFZLEVBQUU7QUFDL0MsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21heEJ5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VFeHRyZW11bSA9IHJlcXVpcmUoJy4vX2Jhc2VFeHRyZW11bScpLFxuICAgIGJhc2VHdCA9IHJlcXVpcmUoJy4vX2Jhc2VHdCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWF4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAqIHRoZSB2YWx1ZSBpcyByYW5rZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICpcbiAqIF8ubWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAqIC8vID0+IHsgJ24nOiAyIH1cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8ubWF4Qnkob2JqZWN0cywgJ24nKTtcbiAqIC8vID0+IHsgJ24nOiAyIH1cbiAqL1xuZnVuY3Rpb24gbWF4QnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCBiYXNlR3QpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF4Qnk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/maxBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/memoize.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/memoize.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var MapCache = __webpack_require__(/*! ./_MapCache */ \"./node_modules/lodash/_MapCache.js\");\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanM/ZTM4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/memoize.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/merge.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/merge.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/lodash/_baseMerge.js\"),\n createAssigner = __webpack_require__(/*! ./_createAssigner */ \"./node_modules/lodash/_createAssigner.js\");\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlLmpzPzQyNDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVMsR0FBRyxTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUyxHQUFHLFNBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsVUFBVSxRQUFRLGlCQUFpQixHQUFHLGlCQUFpQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tZXJnZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlTWVyZ2UgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2UnKSxcbiAgICBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFzc2lnbmVyJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2UgcHJvcGVydGllcyB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAgYXJlXG4gKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gKiBhc3NpZ25tZW50LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnRcbiAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjUuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0ge1xuICogICAnYSc6IFt7ICdiJzogMiB9LCB7ICdkJzogNCB9XVxuICogfTtcbiAqXG4gKiB2YXIgb3RoZXIgPSB7XG4gKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gKiB9O1xuICpcbiAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gKi9cbnZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/merge.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/mergeWith.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/mergeWith.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/lodash/_baseMerge.js\"),\n createAssigner = __webpack_require__(/*! ./_createAssigner */ \"./node_modules/lodash/_createAssigner.js\");\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlV2l0aC5qcz8yNDExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tZXJnZVdpdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVyZ2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG1lcmdlZCB2YWx1ZXMgb2YgdGhlIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2VcbiAqIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBtZXJnaW5nIGlzIGhhbmRsZWQgYnkgdGhlXG4gKiBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggc2l4IGFyZ3VtZW50czpcbiAqIChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAqICAgaWYgKF8uaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gb2JqVmFsdWUuY29uY2F0KHNyY1ZhbHVlKTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogWzFdLCAnYic6IFsyXSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IFszXSwgJ2InOiBbNF0gfTtcbiAqXG4gKiBfLm1lcmdlV2l0aChvYmplY3QsIG90aGVyLCBjdXN0b21pemVyKTtcbiAqIC8vID0+IHsgJ2EnOiBbMSwgM10sICdiJzogWzIsIDRdIH1cbiAqL1xudmFyIG1lcmdlV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlV2l0aDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/mergeWith.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/minBy.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/minBy.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ \"./node_modules/lodash/_baseExtremum.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n baseLt = __webpack_require__(/*! ./_baseLt */ \"./node_modules/lodash/_baseLt.js\");\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL21pbkJ5LmpzPzgwZjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBLG1CQUFtQixTQUFTLEdBQUcsU0FBUztBQUN4QztBQUNBLGlDQUFpQyxZQUFZLEVBQUU7QUFDL0MsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21pbkJ5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VFeHRyZW11bSA9IHJlcXVpcmUoJy4vX2Jhc2VFeHRyZW11bScpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VMdCA9IHJlcXVpcmUoJy4vX2Jhc2VMdCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAqIHRoZSB2YWx1ZSBpcyByYW5rZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICpcbiAqIF8ubWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAqIC8vID0+IHsgJ24nOiAxIH1cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8ubWluQnkob2JqZWN0cywgJ24nKTtcbiAqIC8vID0+IHsgJ24nOiAxIH1cbiAqL1xuZnVuY3Rpb24gbWluQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCBiYXNlTHQpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWluQnk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/minBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/negate.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/negate.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL25lZ2F0ZS5qcz9hMGFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL25lZ2F0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcmVkaWNhdGUgYGZ1bmNgLiBUaGVcbiAqIGBmdW5jYCBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZVxuICogY3JlYXRlZCBmdW5jdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgcHJlZGljYXRlIHRvIG5lZ2F0ZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG5lZ2F0ZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGlzRXZlbihuKSB7XG4gKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICogfVxuICpcbiAqIF8uZmlsdGVyKFsxLCAyLCAzLCA0LCA1LCA2XSwgXy5uZWdhdGUoaXNFdmVuKSk7XG4gKiAvLyA9PiBbMSwgMywgNV1cbiAqL1xuZnVuY3Rpb24gbmVnYXRlKHByZWRpY2F0ZSkge1xuICBpZiAodHlwZW9mIHByZWRpY2F0ZSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcyk7XG4gICAgICBjYXNlIDE6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSk7XG4gICAgICBjYXNlIDI6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICBjYXNlIDM6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuICAgIHJldHVybiAhcHJlZGljYXRlLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5lZ2F0ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/negate.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/noop.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/noop.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanM/YmNkZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLm5vb3ApO1xuICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICovXG5mdW5jdGlvbiBub29wKCkge1xuICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5vb3A7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/noop.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/now.js":
|
||
/*!************************************!*\
|
||
!*** ./node_modules/lodash/now.js ***!
|
||
\************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcz80MDhjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9ub3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBEYXRlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAqIH0sIF8ubm93KCkpO1xuICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAqL1xudmFyIG5vdyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBub3c7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/now.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/omitBy.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/omitBy.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n negate = __webpack_require__(/*! ./negate */ \"./node_modules/lodash/negate.js\"),\n pickBy = __webpack_require__(/*! ./pickBy */ \"./node_modules/lodash/pickBy.js\");\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL29taXRCeS5qcz9kZDY1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsaURBQVU7QUFDL0IsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9vbWl0QnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgbmVnYXRlID0gcmVxdWlyZSgnLi9uZWdhdGUnKSxcbiAgICBwaWNrQnkgPSByZXF1aXJlKCcuL3BpY2tCeScpO1xuXG4vKipcbiAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrQnlgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZlxuICogdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYG9iamVjdGAgdGhhdFxuICogYHByZWRpY2F0ZWAgZG9lc24ndCByZXR1cm4gdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvXG4gKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAqXG4gKiBfLm9taXRCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICogLy8gPT4geyAnYic6ICcyJyB9XG4gKi9cbmZ1bmN0aW9uIG9taXRCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICByZXR1cm4gcGlja0J5KG9iamVjdCwgbmVnYXRlKGJhc2VJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb21pdEJ5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/omitBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/orderBy.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/orderBy.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseOrderBy = __webpack_require__(/*! ./_baseOrderBy */ \"./node_modules/lodash/_baseOrderBy.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL29yZGVyQnkuanM/OTNjNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLHFDQUFxQztBQUNoRDtBQUNBLFdBQVcsU0FBUztBQUNwQixZQUFZLE9BQU87QUFDbkIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvb3JkZXJCeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlT3JkZXJCeSA9IHJlcXVpcmUoJy4vX2Jhc2VPcmRlckJ5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydEJ5YCBleGNlcHQgdGhhdCBpdCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgc29ydFxuICogb3JkZXJzIG9mIHRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS4gSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXNcbiAqIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yXG4gKiBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FycmF5W118RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gW29yZGVyc10gVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gKiBdO1xuICpcbiAqIC8vIFNvcnQgYnkgYHVzZXJgIGluIGFzY2VuZGluZyBvcmRlciBhbmQgYnkgYGFnZWAgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAqIF8ub3JkZXJCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddLCBbJ2FzYycsICdkZXNjJ10pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCA0MF1dXG4gKi9cbmZ1bmN0aW9uIG9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMsIGd1YXJkKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKCFpc0FycmF5KGl0ZXJhdGVlcykpIHtcbiAgICBpdGVyYXRlZXMgPSBpdGVyYXRlZXMgPT0gbnVsbCA/IFtdIDogW2l0ZXJhdGVlc107XG4gIH1cbiAgb3JkZXJzID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBvcmRlcnM7XG4gIGlmICghaXNBcnJheShvcmRlcnMpKSB7XG4gICAgb3JkZXJzID0gb3JkZXJzID09IG51bGwgPyBbXSA6IFtvcmRlcnNdO1xuICB9XG4gIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3JkZXJCeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/orderBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/pickBy.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/pickBy.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/lodash/_arrayMap.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n basePickBy = __webpack_require__(/*! ./_basePickBy */ \"./node_modules/lodash/_basePickBy.js\"),\n getAllKeysIn = __webpack_require__(/*! ./_getAllKeysIn */ \"./node_modules/lodash/_getAllKeysIn.js\");\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3BpY2tCeS5qcz83N2MxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvcGlja0J5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlUGlja0J5ID0gcmVxdWlyZSgnLi9fYmFzZVBpY2tCeScpLFxuICAgIGdldEFsbEtleXNJbiA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXNJbicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBgb2JqZWN0YCBwcm9wZXJ0aWVzIGBwcmVkaWNhdGVgIHJldHVybnNcbiAqIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAqXG4gKiBfLnBpY2tCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHBpY2tCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgdmFyIHByb3BzID0gYXJyYXlNYXAoZ2V0QWxsS2V5c0luKG9iamVjdCksIGZ1bmN0aW9uKHByb3ApIHtcbiAgICByZXR1cm4gW3Byb3BdO1xuICB9KTtcbiAgcHJlZGljYXRlID0gYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSk7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcHJvcHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSwgcGF0aFswXSk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBpY2tCeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/pickBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/property.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/property.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseProperty = __webpack_require__(/*! ./_baseProperty */ \"./node_modules/lodash/_baseProperty.js\"),\n basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ \"./node_modules/lodash/_basePropertyDeep.js\"),\n isKey = __webpack_require__(/*! ./_isKey */ \"./node_modules/lodash/_isKey.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/lodash/_toKey.js\");\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3Byb3BlcnR5LmpzP2Y5Y2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsWUFBWSxtQkFBTyxDQUFDLGlEQUFVOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsTUFBTSxPQUFPLFNBQVMsRUFBRTtBQUN4QixNQUFNLE9BQU8sU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9wcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHknKSxcbiAgICBiYXNlUHJvcGVydHlEZWVwID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5RGVlcCcpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW1xuICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gKiBdO1xuICpcbiAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAqIC8vID0+IFsyLCAxXVxuICpcbiAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqL1xuZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICByZXR1cm4gaXNLZXkocGF0aCkgPyBiYXNlUHJvcGVydHkodG9LZXkocGF0aCkpIDogYmFzZVByb3BlcnR5RGVlcChwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwcm9wZXJ0eTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/property.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/reduce.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/reduce.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayReduce = __webpack_require__(/*! ./_arrayReduce */ \"./node_modules/lodash/_arrayReduce.js\"),\n baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/lodash/_baseEach.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n baseReduce = __webpack_require__(/*! ./_baseReduce */ \"./node_modules/lodash/_baseReduce.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JlZHVjZS5qcz9jNWEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGFBQWEseUJBQXlCO0FBQ3RDO0FBQ0E7QUFDQSxJQUFJLElBQUk7QUFDUixVQUFVLDhCQUE4QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9yZWR1Y2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlSZWR1Y2UgPSByZXF1aXJlKCcuL19hcnJheVJlZHVjZScpLFxuICAgIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlUmVkdWNlID0gcmVxdWlyZSgnLi9fYmFzZVJlZHVjZScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBSZWR1Y2VzIGBjb2xsZWN0aW9uYCB0byBhIHZhbHVlIHdoaWNoIGlzIHRoZSBhY2N1bXVsYXRlZCByZXN1bHQgb2YgcnVubmluZ1xuICogZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAsIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy4gSWYgYGFjY3VtdWxhdG9yYFxuICogaXMgbm90IGdpdmVuLCB0aGUgZmlyc3QgZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgaXMgdXNlZCBhcyB0aGUgaW5pdGlhbFxuICogdmFsdWUuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6XG4gKiAoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICogYF8ucmVkdWNlYCwgYF8ucmVkdWNlUmlnaHRgLCBhbmQgYF8udHJhbnNmb3JtYC5cbiAqXG4gKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAqIGBhc3NpZ25gLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGluY2x1ZGVzYCwgYG1lcmdlYCwgYG9yZGVyQnlgLFxuICogYW5kIGBzb3J0QnlgXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICogQHNlZSBfLnJlZHVjZVJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ucmVkdWNlKFsxLCAyXSwgZnVuY3Rpb24oc3VtLCBuKSB7XG4gKiAgIHJldHVybiBzdW0gKyBuO1xuICogfSwgMCk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5yZWR1Y2UoeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICogICByZXR1cm4gcmVzdWx0O1xuICogfSwge30pO1xuICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiByZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlIDogYmFzZVJlZHVjZSxcbiAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWR1Y2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/reduce.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/reject.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/reject.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ \"./node_modules/lodash/_arrayFilter.js\"),\n baseFilter = __webpack_require__(/*! ./_baseFilter */ \"./node_modules/lodash/_baseFilter.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n negate = __webpack_require__(/*! ./negate */ \"./node_modules/lodash/negate.js\");\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nmodule.exports = reject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JlamVjdC5qcz8xZDMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTs7QUFFL0I7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLCtDQUErQztBQUNyRCxNQUFNO0FBQ047QUFDQTtBQUNBLGdDQUFnQyxrQkFBa0IsRUFBRTtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQTRCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JlamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgYmFzZUZpbHRlciA9IHJlcXVpcmUoJy4vX2Jhc2VGaWx0ZXInKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgbmVnYXRlID0gcmVxdWlyZSgnLi9uZWdhdGUnKTtcblxuLyoqXG4gKiBUaGUgb3Bwb3NpdGUgb2YgYF8uZmlsdGVyYDsgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gXG4gKiB0aGF0IGBwcmVkaWNhdGVgIGRvZXMgKipub3QqKiByZXR1cm4gdHJ1dGh5IGZvci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKiBAc2VlIF8uZmlsdGVyXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfVxuICogXTtcbiAqXG4gKiBfLnJlamVjdCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8ucmVqZWN0KHVzZXJzLCB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5yZWplY3QodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLnJlamVjdCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICovXG5mdW5jdGlvbiByZWplY3QoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgbmVnYXRlKGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVqZWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/reject.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/remove.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/remove.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n basePullAt = __webpack_require__(/*! ./_basePullAt */ \"./node_modules/lodash/_basePullAt.js\");\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JlbW92ZS5qcz9jMDRjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvcmVtb3ZlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VQdWxsQXQgPSByZXF1aXJlKCcuL19iYXNlUHVsbEF0Jyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSBgYXJyYXlgIHRoYXQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yXG4gKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgcmVtb3ZlZCBlbGVtZW50cy4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkXG4gKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICpcbiAqICoqTm90ZToqKiBVbmxpa2UgYF8uZmlsdGVyYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucHVsbGBcbiAqIHRvIHB1bGwgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSB2YWx1ZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07XG4gKiB2YXIgZXZlbnMgPSBfLnJlbW92ZShhcnJheSwgZnVuY3Rpb24obikge1xuICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAqIH0pO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAqIC8vID0+IFsxLCAzXVxuICpcbiAqIGNvbnNvbGUubG9nKGV2ZW5zKTtcbiAqIC8vID0+IFsyLCA0XVxuICovXG5mdW5jdGlvbiByZW1vdmUoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5kZXhlcyA9IFtdLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHByZWRpY2F0ZSA9IGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgIH1cbiAgfVxuICBiYXNlUHVsbEF0KGFycmF5LCBpbmRleGVzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZW1vdmU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/remove.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/set.js":
|
||
/*!************************************!*\
|
||
!*** ./node_modules/lodash/set.js ***!
|
||
\************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseSet = __webpack_require__(/*! ./_baseSet */ \"./node_modules/lodash/_baseSet.js\");\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NldC5qcz8wZjVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLGlCQUFpQixRQUFRLE9BQU8sU0FBUyxFQUFFO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvc2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VTZXQgPSByZXF1aXJlKCcuL19iYXNlU2V0Jyk7XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiBhIHBvcnRpb24gb2YgYHBhdGhgIGRvZXNuJ3QgZXhpc3QsXG4gKiBpdCdzIGNyZWF0ZWQuIEFycmF5cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBpbmRleCBwcm9wZXJ0aWVzIHdoaWxlIG9iamVjdHNcbiAqIGFyZSBjcmVhdGVkIGZvciBhbGwgb3RoZXIgbWlzc2luZyBwcm9wZXJ0aWVzLiBVc2UgYF8uc2V0V2l0aGAgdG8gY3VzdG9taXplXG4gKiBgcGF0aGAgY3JlYXRpb24uXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uc2V0KG9iamVjdCwgJ2FbMF0uYi5jJywgNCk7XG4gKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICogLy8gPT4gNFxuICpcbiAqIF8uc2V0KG9iamVjdCwgWyd4JywgJzAnLCAneScsICd6J10sIDUpO1xuICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAqIC8vID0+IDVcbiAqL1xuZnVuY3Rpb24gc2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/set.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/shuffle.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/shuffle.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var arrayShuffle = __webpack_require__(/*! ./_arrayShuffle */ \"./node_modules/lodash/_arrayShuffle.js\"),\n baseShuffle = __webpack_require__(/*! ./_baseShuffle */ \"./node_modules/lodash/_baseShuffle.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\");\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n}\n\nmodule.exports = shuffle;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NodWZmbGUuanM/ZjU2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zaHVmZmxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5U2h1ZmZsZSA9IHJlcXVpcmUoJy4vX2FycmF5U2h1ZmZsZScpLFxuICAgIGJhc2VTaHVmZmxlID0gcmVxdWlyZSgnLi9fYmFzZVNodWZmbGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzaHVmZmxlZCB2YWx1ZXMsIHVzaW5nIGEgdmVyc2lvbiBvZiB0aGVcbiAqIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uc2h1ZmZsZShbMSwgMiwgMywgNF0pO1xuICogLy8gPT4gWzQsIDEsIDMsIDJdXG4gKi9cbmZ1bmN0aW9uIHNodWZmbGUoY29sbGVjdGlvbikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNodWZmbGUgOiBiYXNlU2h1ZmZsZTtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2h1ZmZsZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/shuffle.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/slice.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/slice.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseSlice = __webpack_require__(/*! ./_baseSlice */ \"./node_modules/lodash/_baseSlice.js\"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ \"./node_modules/lodash/_isIterateeCall.js\"),\n toInteger = __webpack_require__(/*! ./toInteger */ \"./node_modules/lodash/toInteger.js\");\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n}\n\nmodule.exports = slice;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NsaWNlLmpzPzJhY2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zbGljZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlU2xpY2UgPSByZXF1aXJlKCcuL19iYXNlU2xpY2UnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgdXNlZCBpbnN0ZWFkIG9mXG4gKiBbYEFycmF5I3NsaWNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvc2xpY2UpIHRvIGVuc3VyZSBkZW5zZSBhcnJheXMgYXJlXG4gKiByZXR1cm5lZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBzbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmIChlbmQgJiYgdHlwZW9mIGVuZCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgc3RhcnQsIGVuZCkpIHtcbiAgICBzdGFydCA9IDA7XG4gICAgZW5kID0gbGVuZ3RoO1xuICB9XG4gIGVsc2Uge1xuICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9JbnRlZ2VyKGVuZCk7XG4gIH1cbiAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2xpY2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/slice.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/sortBy.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/sortBy.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ \"./node_modules/lodash/_baseFlatten.js\"),\n baseOrderBy = __webpack_require__(/*! ./_baseOrderBy */ \"./node_modules/lodash/_baseOrderBy.js\"),\n baseRest = __webpack_require__(/*! ./_baseRest */ \"./node_modules/lodash/_baseRest.js\"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ \"./node_modules/lodash/_isIterateeCall.js\");\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NvcnRCeS5qcz9jNzA3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQSxhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0EsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTTtBQUNOO0FBQ0E7QUFDQSxpQ0FBaUMsZUFBZSxFQUFFO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zb3J0QnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VPcmRlckJ5ID0gcmVxdWlyZSgnLi9fYmFzZU9yZGVyQnknKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIHJlc3VsdHMgb2ZcbiAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAqIGVxdWFsIGVsZW1lbnRzLiBUaGUgaXRlcmF0ZWVzIGFyZSBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDMwIH0sXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAqIF07XG4gKlxuICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gKi9cbnZhciBzb3J0QnkgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZXMpIHtcbiAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgaWYgKGxlbmd0aCA+IDEgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0pKSB7XG4gICAgaXRlcmF0ZWVzID0gW107XG4gIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtpdGVyYXRlZXNbMF1dO1xuICB9XG4gIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzb3J0Qnk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/sortBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/stubArray.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/stubArray.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJBcnJheS5qcz9kMzI3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJBcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/stubArray.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/stubFalse.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/stubFalse.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcz8wN2M3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/stubFalse.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/sumBy.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/sumBy.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n baseSum = __webpack_require__(/*! ./_baseSum */ \"./node_modules/lodash/_baseSum.js\");\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nmodule.exports = sumBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N1bUJ5LmpzPzZiZDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLG1CQUFtQixTQUFTLEdBQUcsU0FBUyxHQUFHLFNBQVMsR0FBRyxTQUFTO0FBQ2hFO0FBQ0EsaUNBQWlDLFlBQVksRUFBRTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdW1CeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlU3VtID0gcmVxdWlyZSgnLi9fYmFzZVN1bScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc3VtYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBzdW1tZWQuXG4gKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gKlxuICogXy5zdW1CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICogLy8gPT4gMjBcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uc3VtQnkob2JqZWN0cywgJ24nKTtcbiAqIC8vID0+IDIwXG4gKi9cbmZ1bmN0aW9uIHN1bUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VTdW0oYXJyYXksIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN1bUJ5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/sumBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/take.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/take.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseSlice = __webpack_require__(/*! ./_baseSlice */ \"./node_modules/lodash/_baseSlice.js\"),\n toInteger = __webpack_require__(/*! ./toInteger */ \"./node_modules/lodash/toInteger.js\");\n\n/**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\nfunction take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nmodule.exports = take;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3Rha2UuanM/NWU5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksT0FBTztBQUNuQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC90YWtlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VTbGljZSA9IHJlcXVpcmUoJy4vX2Jhc2VTbGljZScpLFxuICAgIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGFrZShbMSwgMiwgM10pO1xuICogLy8gPT4gWzFdXG4gKlxuICogXy50YWtlKFsxLCAyLCAzXSwgMik7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiBfLnRha2UoWzEsIDIsIDNdLCA1KTtcbiAqIC8vID0+IFsxLCAyLCAzXVxuICpcbiAqIF8udGFrZShbMSwgMiwgM10sIDApO1xuICogLy8gPT4gW11cbiAqL1xuZnVuY3Rpb24gdGFrZShhcnJheSwgbiwgZ3VhcmQpIHtcbiAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCAwLCBuIDwgMCA/IDAgOiBuKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0YWtlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/take.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/throttle.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/throttle.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var debounce = __webpack_require__(/*! ./debounce */ \"./node_modules/lodash/debounce.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\");\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3Rocm90dGxlLmpzPzBmMzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxZQUFZO0FBQzlCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsb0JBQW9CO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvdGhyb3R0bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVib3VuY2UgPSByZXF1aXJlKCcuL2RlYm91bmNlJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICogZXZlcnkgYHdhaXRgIG1pbGxpc2Vjb25kcy4gVGhlIHRocm90dGxlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGBcbiAqIG1ldGhvZCB0byBjYW5jZWwgZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG9cbiAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICogc2hvdWxkIGJlIGludm9rZWQgb24gdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YFxuICogdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZVxuICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICogcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLnRocm90dGxlYCBhbmQgYF8uZGVib3VuY2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gdGhyb3R0bGUuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Njcm9sbCcsIF8udGhyb3R0bGUodXBkYXRlUG9zaXRpb24sIDEwMCkpO1xuICpcbiAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICogdmFyIHRocm90dGxlZCA9IF8udGhyb3R0bGUocmVuZXdUb2tlbiwgMzAwMDAwLCB7ICd0cmFpbGluZyc6IGZhbHNlIH0pO1xuICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHRocm90dGxlZCk7XG4gKlxuICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyB0aHJvdHRsZWQgaW52b2NhdGlvbi5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIHRocm90dGxlZC5jYW5jZWwpO1xuICovXG5mdW5jdGlvbiB0aHJvdHRsZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gIHZhciBsZWFkaW5nID0gdHJ1ZSxcbiAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gJ2xlYWRpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMubGVhZGluZyA6IGxlYWRpbmc7XG4gICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgfVxuICByZXR1cm4gZGVib3VuY2UoZnVuYywgd2FpdCwge1xuICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAnbWF4V2FpdCc6IHdhaXQsXG4gICAgJ3RyYWlsaW5nJzogdHJhaWxpbmdcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdGhyb3R0bGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/throttle.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/toFinite.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/toFinite.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var toNumber = __webpack_require__(/*! ./toNumber */ \"./node_modules/lodash/toNumber.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\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\nmodule.exports = toFinite;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzPzY0MjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0Zpbml0ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/toFinite.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/toInteger.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/toInteger.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var toFinite = __webpack_require__(/*! ./toFinite */ \"./node_modules/lodash/toFinite.js\");\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\nmodule.exports = toInteger;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvSW50ZWdlci5qcz80YjE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0ludGVnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/toInteger.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/toNumber.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/toNumber.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseTrim = __webpack_require__(/*! ./_baseTrim */ \"./node_modules/lodash/_baseTrim.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\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/**\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 = baseTrim(value);\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 = toNumber;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzP2I0YjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVRyaW0gPSByZXF1aXJlKCcuL19iYXNlVHJpbScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gYmFzZVRyaW0odmFsdWUpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/toNumber.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/toPlainObject.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/toPlainObject.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/lodash/_copyObject.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/lodash/keysIn.js\");\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanM/OGRlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUztBQUN0QixVQUFVO0FBQ1Y7QUFDQSxhQUFhLFNBQVM7QUFDdEIsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1BsYWluT2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/toPlainObject.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/toString.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/toString.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseToString = __webpack_require__(/*! ./_baseToString */ \"./node_modules/lodash/_baseToString.js\");\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzPzc2ZGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/toString.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/unescape.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/unescape.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var toString = __webpack_require__(/*! ./toString */ \"./node_modules/lodash/toString.js\"),\n unescapeHtmlChar = __webpack_require__(/*! ./_unescapeHtmlChar */ \"./node_modules/lodash/_unescapeHtmlChar.js\");\n\n/** Used to match HTML entities and HTML characters. */\nvar reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n}\n\nmodule.exports = unescape;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuZXNjYXBlLmpzP2ZmMGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjs7QUFFcEQ7QUFDQSw2Q0FBNkM7QUFDN0M7O0FBRUE7QUFDQSw2QkFBNkI7QUFDN0IsU0FBUyxRQUFRLFFBQVEsVUFBVSxhQUFhO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC91bmVzY2FwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKSxcbiAgICB1bmVzY2FwZUh0bWxDaGFyID0gcmVxdWlyZSgnLi9fdW5lc2NhcGVIdG1sQ2hhcicpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuICovXG52YXIgcmVFc2NhcGVkSHRtbCA9IC8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyxcbiAgICByZUhhc0VzY2FwZWRIdG1sID0gUmVnRXhwKHJlRXNjYXBlZEh0bWwuc291cmNlKTtcblxuLyoqXG4gKiBUaGUgaW52ZXJzZSBvZiBgXy5lc2NhcGVgOyB0aGlzIG1ldGhvZCBjb252ZXJ0cyB0aGUgSFRNTCBlbnRpdGllc1xuICogYCZhbXA7YCwgYCZsdDtgLCBgJmd0O2AsIGAmcXVvdDtgLCBhbmQgYCYjMzk7YCBpbiBgc3RyaW5nYCB0b1xuICogdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqICoqTm90ZToqKiBObyBvdGhlciBIVE1MIGVudGl0aWVzIGFyZSB1bmVzY2FwZWQuIFRvIHVuZXNjYXBlIGFkZGl0aW9uYWxcbiAqIEhUTUwgZW50aXRpZXMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC42LjBcbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5lc2NhcGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzJyk7XG4gKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gKi9cbmZ1bmN0aW9uIHVuZXNjYXBlKHN0cmluZykge1xuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICByZXR1cm4gKHN0cmluZyAmJiByZUhhc0VzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICA/IHN0cmluZy5yZXBsYWNlKHJlRXNjYXBlZEh0bWwsIHVuZXNjYXBlSHRtbENoYXIpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5lc2NhcGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/unescape.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/uniq.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/uniq.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseUniq = __webpack_require__(/*! ./_baseUniq */ \"./node_modules/lodash/_baseUniq.js\");\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXEuanM/ZWVkNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXEuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBkdXBsaWNhdGUtZnJlZSB2ZXJzaW9uIG9mIGFuIGFycmF5LCB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAqIGlzIGtlcHQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXJcbiAqIGluIHRoZSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udW5pcShbMiwgMSwgMl0pO1xuICogLy8gPT4gWzIsIDFdXG4gKi9cbmZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXkpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/uniq.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/uniqBy.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/uniqBy.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n baseUniq = __webpack_require__(/*! ./_baseUniq */ \"./node_modules/lodash/_baseUniq.js\");\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXFCeS5qcz9hOGZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVMsR0FBRyxTQUFTLEdBQUcsU0FBUztBQUMvQyxXQUFXLFNBQVMsR0FBRyxTQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlxQnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gKiB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZVxuICogb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udW5pcUJ5KFsyLjEsIDEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gKiAvLyA9PiBbMi4xLCAxLjJdXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLnVuaXFCeShbeyAneCc6IDEgfSwgeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAqL1xuZnVuY3Rpb24gdW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmlxQnk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/uniqBy.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/uniqueId.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/uniqueId.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var toString = __webpack_require__(/*! ./toString */ \"./node_modules/lodash/toString.js\");\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXF1ZUlkLmpzPzk4ZGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXF1ZUlkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xudmFyIGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAqXG4gKiBfLnVuaXF1ZUlkKCk7XG4gKiAvLyA9PiAnMTA1J1xuICovXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gIHJldHVybiB0b1N0cmluZyhwcmVmaXgpICsgaWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcXVlSWQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/uniqueId.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/upperFirst.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/upperFirst.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var createCaseFirst = __webpack_require__(/*! ./_createCaseFirst */ \"./node_modules/lodash/_createCaseFirst.js\");\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VwcGVyRmlyc3QuanM/ODEwMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VwcGVyRmlyc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3JlYXRlQ2FzZUZpcnN0ID0gcmVxdWlyZSgnLi9fY3JlYXRlQ2FzZUZpcnN0Jyk7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVwcGVyRmlyc3QoJ2ZyZWQnKTtcbiAqIC8vID0+ICdGcmVkJ1xuICpcbiAqIF8udXBwZXJGaXJzdCgnRlJFRCcpO1xuICogLy8gPT4gJ0ZSRUQnXG4gKi9cbnZhciB1cHBlckZpcnN0ID0gY3JlYXRlQ2FzZUZpcnN0KCd0b1VwcGVyQ2FzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVwcGVyRmlyc3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/upperFirst.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/values.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/values.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var baseValues = __webpack_require__(/*! ./_baseValues */ \"./node_modules/lodash/_baseValues.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/lodash/keys.js\");\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 == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3ZhbHVlcy5qcz8zZmYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3ZhbHVlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlVmFsdWVzID0gcmVxdWlyZSgnLi9fYmFzZVZhbHVlcycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8udmFsdWVzKCdoaScpO1xuICogLy8gPT4gWydoJywgJ2knXVxuICovXG5mdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsdWVzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/values.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/lodash/words.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/words.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("var asciiWords = __webpack_require__(/*! ./_asciiWords */ \"./node_modules/lodash/_asciiWords.js\"),\n hasUnicodeWord = __webpack_require__(/*! ./_hasUnicodeWord */ \"./node_modules/lodash/_hasUnicodeWord.js\"),\n toString = __webpack_require__(/*! ./toString */ \"./node_modules/lodash/toString.js\"),\n unicodeWords = __webpack_require__(/*! ./_unicodeWords */ \"./node_modules/lodash/_unicodeWords.js\");\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3dvcmRzLmpzP2VhNzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsY0FBYztBQUN6QixZQUFZLE9BQU87QUFDbkIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9sb2Rhc2gvd29yZHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNjaWlXb3JkcyA9IHJlcXVpcmUoJy4vX2FzY2lpV29yZHMnKSxcbiAgICBoYXNVbmljb2RlV29yZCA9IHJlcXVpcmUoJy4vX2hhc1VuaWNvZGVXb3JkJyksXG4gICAgdG9TdHJpbmcgPSByZXF1aXJlKCcuL3RvU3RyaW5nJyksXG4gICAgdW5pY29kZVdvcmRzID0gcmVxdWlyZSgnLi9fdW5pY29kZVdvcmRzJyk7XG5cbi8qKlxuICogU3BsaXRzIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLndvcmRzKCdmcmVkLCBiYXJuZXksICYgcGViYmxlcycpO1xuICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJ11cbiAqXG4gKiBfLndvcmRzKCdmcmVkLCBiYXJuZXksICYgcGViYmxlcycsIC9bXiwgXSsvZyk7XG4gKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJyYnLCAncGViYmxlcyddXG4gKi9cbmZ1bmN0aW9uIHdvcmRzKHN0cmluZywgcGF0dGVybiwgZ3VhcmQpIHtcbiAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgcGF0dGVybiA9IGd1YXJkID8gdW5kZWZpbmVkIDogcGF0dGVybjtcblxuICBpZiAocGF0dGVybiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGVXb3JkKHN0cmluZykgPyB1bmljb2RlV29yZHMoc3RyaW5nKSA6IGFzY2lpV29yZHMoc3RyaW5nKTtcbiAgfVxuICByZXR1cm4gc3RyaW5nLm1hdGNoKHBhdHRlcm4pIHx8IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdvcmRzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/words.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/parse-link-header/index.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/parse-link-header/index.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nvar qs = __webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\")\n , url = __webpack_require__(/*! url */ \"./node_modules/url/url.js\")\n , xtend = __webpack_require__(/*! xtend */ \"./node_modules/xtend/immutable.js\");\n\nfunction hasRel(x) {\n return x && x.rel;\n}\n\nfunction intoRels (acc, x) {\n function splitRel (rel) {\n acc[rel] = xtend(x, { rel: rel });\n }\n\n x.rel.split(/\\s+/).forEach(splitRel);\n\n return acc;\n}\n\nfunction createObjects (acc, p) {\n // rel=\"next\" => 1: rel 2: next\n var m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/)\n if (m) acc[m[1]] = m[2];\n return acc;\n}\n\nfunction parseLink(link) {\n try {\n var m = link.match(/<?([^>]*)>(.*)/)\n , linkUrl = m[1]\n , parts = m[2].split(';')\n , parsedUrl = url.parse(linkUrl)\n , qry = qs.parse(parsedUrl.query);\n\n parts.shift();\n\n var info = parts\n .reduce(createObjects, {});\n \n info = xtend(qry, info);\n info.url = linkUrl;\n return info;\n } catch (e) {\n return null;\n }\n}\n\nmodule.exports = function (linkHeader) {\n if (!linkHeader) return null;\n\n return linkHeader.split(/,\\s*</)\n .map(parseLink)\n .filter(hasRel)\n .reduce(intoRels, {});\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcGFyc2UtbGluay1oZWFkZXIvaW5kZXguanM/ZDNjOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixTQUFTLG1CQUFPLENBQUMsNERBQWE7QUFDOUIsVUFBVSxtQkFBTyxDQUFDLHNDQUFLO0FBQ3ZCLFlBQVksbUJBQU8sQ0FBQyxnREFBTzs7QUFFM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIsV0FBVztBQUNwQzs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBOztBQUVBOztBQUVBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3BhcnNlLWxpbmstaGVhZGVyL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcXMgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpXG4gICwgdXJsID0gcmVxdWlyZSgndXJsJylcbiAgLCB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJyk7XG5cbmZ1bmN0aW9uIGhhc1JlbCh4KSB7XG4gIHJldHVybiB4ICYmIHgucmVsO1xufVxuXG5mdW5jdGlvbiBpbnRvUmVscyAoYWNjLCB4KSB7XG4gIGZ1bmN0aW9uIHNwbGl0UmVsIChyZWwpIHtcbiAgICBhY2NbcmVsXSA9IHh0ZW5kKHgsIHsgcmVsOiByZWwgfSk7XG4gIH1cblxuICB4LnJlbC5zcGxpdCgvXFxzKy8pLmZvckVhY2goc3BsaXRSZWwpO1xuXG4gIHJldHVybiBhY2M7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU9iamVjdHMgKGFjYywgcCkge1xuICAvLyByZWw9XCJuZXh0XCIgPT4gMTogcmVsIDI6IG5leHRcbiAgdmFyIG0gPSBwLm1hdGNoKC9cXHMqKC4rKVxccyo9XFxzKlwiPyhbXlwiXSspXCI/LylcbiAgaWYgKG0pIGFjY1ttWzFdXSA9IG1bMl07XG4gIHJldHVybiBhY2M7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTGluayhsaW5rKSB7XG4gIHRyeSB7XG4gICAgdmFyIG0gICAgICAgICA9ICBsaW5rLm1hdGNoKC88PyhbXj5dKik+KC4qKS8pXG4gICAgICAsIGxpbmtVcmwgICA9ICBtWzFdXG4gICAgICAsIHBhcnRzICAgICA9ICBtWzJdLnNwbGl0KCc7JylcbiAgICAgICwgcGFyc2VkVXJsID0gIHVybC5wYXJzZShsaW5rVXJsKVxuICAgICAgLCBxcnkgICAgICAgPSAgcXMucGFyc2UocGFyc2VkVXJsLnF1ZXJ5KTtcblxuICAgIHBhcnRzLnNoaWZ0KCk7XG5cbiAgICB2YXIgaW5mbyA9IHBhcnRzXG4gICAgICAucmVkdWNlKGNyZWF0ZU9iamVjdHMsIHt9KTtcbiAgICBcbiAgICBpbmZvID0geHRlbmQocXJ5LCBpbmZvKTtcbiAgICBpbmZvLnVybCA9IGxpbmtVcmw7XG4gICAgcmV0dXJuIGluZm87XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaW5rSGVhZGVyKSB7XG4gIGlmICghbGlua0hlYWRlcikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGxpbmtIZWFkZXIuc3BsaXQoLyxcXHMqPC8pXG4gICAubWFwKHBhcnNlTGluaylcbiAgIC5maWx0ZXIoaGFzUmVsKVxuICAgLnJlZHVjZShpbnRvUmVscywge30pO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/parse-link-header/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/phoenix/priv/static/phoenix.esm.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/phoenix/priv/static/phoenix.esm.js ***!
|
||
\*********************************************************/
|
||
/*! exports provided: Channel, LongPoll, Presence, Serializer, Socket */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Channel\", function() { return Channel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LongPoll\", function() { return LongPoll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Presence\", function() { return Presence; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Serializer\", function() { return serializer_default; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Socket\", function() { return Socket; });\n// js/phoenix/utils.js\nvar closure = (value) => {\n if (typeof value === \"function\") {\n return value;\n } else {\n let closure2 = function() {\n return value;\n };\n return closure2;\n }\n};\n\n// js/phoenix/constants.js\nvar globalSelf = typeof self !== \"undefined\" ? self : null;\nvar phxWindow = typeof window !== \"undefined\" ? window : null;\nvar global = globalSelf || phxWindow || void 0;\nvar DEFAULT_VSN = \"2.0.0\";\nvar SOCKET_STATES = { connecting: 0, open: 1, closing: 2, closed: 3 };\nvar DEFAULT_TIMEOUT = 1e4;\nvar WS_CLOSE_NORMAL = 1e3;\nvar CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\"\n};\nvar CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n};\nvar TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n};\nvar XHR_STATES = {\n complete: 4\n};\n\n// js/phoenix/push.js\nvar Push = class {\n constructor(channel, event, payload, timeout) {\n this.channel = channel;\n this.event = event;\n this.payload = payload || function() {\n return {};\n };\n this.receivedResp = null;\n this.timeout = timeout;\n this.timeoutTimer = null;\n this.recHooks = [];\n this.sent = false;\n }\n resend(timeout) {\n this.timeout = timeout;\n this.reset();\n this.send();\n }\n send() {\n if (this.hasReceived(\"timeout\")) {\n return;\n }\n this.startTimeout();\n this.sent = true;\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n });\n }\n receive(status, callback) {\n if (this.hasReceived(status)) {\n callback(this.receivedResp.response);\n }\n this.recHooks.push({ status, callback });\n return this;\n }\n reset() {\n this.cancelRefEvent();\n this.ref = null;\n this.refEvent = null;\n this.receivedResp = null;\n this.sent = false;\n }\n matchReceive({ status, response, _ref }) {\n this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));\n }\n cancelRefEvent() {\n if (!this.refEvent) {\n return;\n }\n this.channel.off(this.refEvent);\n }\n cancelTimeout() {\n clearTimeout(this.timeoutTimer);\n this.timeoutTimer = null;\n }\n startTimeout() {\n if (this.timeoutTimer) {\n this.cancelTimeout();\n }\n this.ref = this.channel.socket.makeRef();\n this.refEvent = this.channel.replyEventName(this.ref);\n this.channel.on(this.refEvent, (payload) => {\n this.cancelRefEvent();\n this.cancelTimeout();\n this.receivedResp = payload;\n this.matchReceive(payload);\n });\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {});\n }, this.timeout);\n }\n hasReceived(status) {\n return this.receivedResp && this.receivedResp.status === status;\n }\n trigger(status, response) {\n this.channel.trigger(this.refEvent, { status, response });\n }\n};\n\n// js/phoenix/timer.js\nvar Timer = class {\n constructor(callback, timerCalc) {\n this.callback = callback;\n this.timerCalc = timerCalc;\n this.timer = null;\n this.tries = 0;\n }\n reset() {\n this.tries = 0;\n clearTimeout(this.timer);\n }\n scheduleTimeout() {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1;\n this.callback();\n }, this.timerCalc(this.tries + 1));\n }\n};\n\n// js/phoenix/channel.js\nvar Channel = class {\n constructor(topic, params, socket) {\n this.state = CHANNEL_STATES.closed;\n this.topic = topic;\n this.params = closure(params || {});\n this.socket = socket;\n this.bindings = [];\n this.bindingRef = 0;\n this.timeout = this.socket.timeout;\n this.joinedOnce = false;\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n this.pushBuffer = [];\n this.stateChangeRefs = [];\n this.rejoinTimer = new Timer(() => {\n if (this.socket.isConnected()) {\n this.rejoin();\n }\n }, this.socket.rejoinAfterMs);\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()));\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset();\n if (this.isErrored()) {\n this.rejoin();\n }\n }));\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined;\n this.rejoinTimer.reset();\n this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n this.pushBuffer = [];\n });\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored;\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.onClose(() => {\n this.rejoinTimer.reset();\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`);\n this.state = CHANNEL_STATES.closed;\n this.socket.remove(this);\n });\n this.onError((reason) => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `error ${this.topic}`, reason);\n if (this.isJoining()) {\n this.joinPush.reset();\n }\n this.state = CHANNEL_STATES.errored;\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.joinPush.receive(\"timeout\", () => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout);\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout);\n leavePush.send();\n this.state = CHANNEL_STATES.errored;\n this.joinPush.reset();\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload);\n });\n }\n join(timeout = this.timeout) {\n if (this.joinedOnce) {\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\");\n } else {\n this.timeout = timeout;\n this.joinedOnce = true;\n this.rejoin();\n return this.joinPush;\n }\n }\n onClose(callback) {\n this.on(CHANNEL_EVENTS.close, callback);\n }\n onError(callback) {\n return this.on(CHANNEL_EVENTS.error, (reason) => callback(reason));\n }\n on(event, callback) {\n let ref = this.bindingRef++;\n this.bindings.push({ event, ref, callback });\n return ref;\n }\n off(event, ref) {\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref));\n });\n }\n canPush() {\n return this.socket.isConnected() && this.isJoined();\n }\n push(event, payload, timeout = this.timeout) {\n payload = payload || {};\n if (!this.joinedOnce) {\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`);\n }\n let pushEvent = new Push(this, event, function() {\n return payload;\n }, timeout);\n if (this.canPush()) {\n pushEvent.send();\n } else {\n pushEvent.startTimeout();\n this.pushBuffer.push(pushEvent);\n }\n return pushEvent;\n }\n leave(timeout = this.timeout) {\n this.rejoinTimer.reset();\n this.joinPush.cancelTimeout();\n this.state = CHANNEL_STATES.leaving;\n let onClose = () => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `leave ${this.topic}`);\n this.trigger(CHANNEL_EVENTS.close, \"leave\");\n };\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout);\n leavePush.receive(\"ok\", () => onClose()).receive(\"timeout\", () => onClose());\n leavePush.send();\n if (!this.canPush()) {\n leavePush.trigger(\"ok\", {});\n }\n return leavePush;\n }\n onMessage(_event, payload, _ref) {\n return payload;\n }\n isMember(topic, event, payload, joinRef) {\n if (this.topic !== topic) {\n return false;\n }\n if (joinRef && joinRef !== this.joinRef()) {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", \"dropping outdated message\", { topic, event, payload, joinRef });\n return false;\n } else {\n return true;\n }\n }\n joinRef() {\n return this.joinPush.ref;\n }\n rejoin(timeout = this.timeout) {\n if (this.isLeaving()) {\n return;\n }\n this.socket.leaveOpenTopic(this.topic);\n this.state = CHANNEL_STATES.joining;\n this.joinPush.resend(timeout);\n }\n trigger(event, payload, ref, joinRef) {\n let handledPayload = this.onMessage(event, payload, ref, joinRef);\n if (payload && !handledPayload) {\n throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\");\n }\n let eventBindings = this.bindings.filter((bind) => bind.event === event);\n for (let i = 0; i < eventBindings.length; i++) {\n let bind = eventBindings[i];\n bind.callback(handledPayload, ref, joinRef || this.joinRef());\n }\n }\n replyEventName(ref) {\n return `chan_reply_${ref}`;\n }\n isClosed() {\n return this.state === CHANNEL_STATES.closed;\n }\n isErrored() {\n return this.state === CHANNEL_STATES.errored;\n }\n isJoined() {\n return this.state === CHANNEL_STATES.joined;\n }\n isJoining() {\n return this.state === CHANNEL_STATES.joining;\n }\n isLeaving() {\n return this.state === CHANNEL_STATES.leaving;\n }\n};\n\n// js/phoenix/ajax.js\nvar Ajax = class {\n static request(method, endPoint, accept, body, timeout, ontimeout, callback) {\n if (global.XDomainRequest) {\n let req = new global.XDomainRequest();\n this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback);\n } else {\n let req = new global.XMLHttpRequest();\n this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback);\n }\n }\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback) {\n req.timeout = timeout;\n req.open(method, endPoint);\n req.onload = () => {\n let response = this.parseJSON(req.responseText);\n callback && callback(response);\n };\n if (ontimeout) {\n req.ontimeout = ontimeout;\n }\n req.onprogress = () => {\n };\n req.send(body);\n }\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback) {\n req.open(method, endPoint, true);\n req.timeout = timeout;\n req.setRequestHeader(\"Content-Type\", accept);\n req.onerror = () => {\n callback && callback(null);\n };\n req.onreadystatechange = () => {\n if (req.readyState === XHR_STATES.complete && callback) {\n let response = this.parseJSON(req.responseText);\n callback(response);\n }\n };\n if (ontimeout) {\n req.ontimeout = ontimeout;\n }\n req.send(body);\n }\n static parseJSON(resp) {\n if (!resp || resp === \"\") {\n return null;\n }\n try {\n return JSON.parse(resp);\n } catch (e) {\n console && console.log(\"failed to parse JSON response\", resp);\n return null;\n }\n }\n static serialize(obj, parentKey) {\n let queryStr = [];\n for (var key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n continue;\n }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key;\n let paramVal = obj[key];\n if (typeof paramVal === \"object\") {\n queryStr.push(this.serialize(paramVal, paramKey));\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal));\n }\n }\n return queryStr.join(\"&\");\n }\n static appendParams(url, params) {\n if (Object.keys(params).length === 0) {\n return url;\n }\n let prefix = url.match(/\\?/) ? \"&\" : \"?\";\n return `${url}${prefix}${this.serialize(params)}`;\n }\n};\n\n// js/phoenix/longpoll.js\nvar LongPoll = class {\n constructor(endPoint) {\n this.endPoint = null;\n this.token = null;\n this.skipHeartbeat = true;\n this.onopen = function() {\n };\n this.onerror = function() {\n };\n this.onmessage = function() {\n };\n this.onclose = function() {\n };\n this.pollEndpoint = this.normalizeEndpoint(endPoint);\n this.readyState = SOCKET_STATES.connecting;\n this.poll();\n }\n normalizeEndpoint(endPoint) {\n return endPoint.replace(\"ws://\", \"http://\").replace(\"wss://\", \"https://\").replace(new RegExp(\"(.*)/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll);\n }\n endpointURL() {\n return Ajax.appendParams(this.pollEndpoint, { token: this.token });\n }\n closeAndRetry() {\n this.close();\n this.readyState = SOCKET_STATES.connecting;\n }\n ontimeout() {\n this.onerror(\"timeout\");\n this.closeAndRetry();\n }\n poll() {\n if (!(this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting)) {\n return;\n }\n Ajax.request(\"GET\", this.endpointURL(), \"application/json\", null, this.timeout, this.ontimeout.bind(this), (resp) => {\n if (resp) {\n var { status, token, messages } = resp;\n this.token = token;\n } else {\n status = 0;\n }\n switch (status) {\n case 200:\n messages.forEach((msg) => {\n setTimeout(() => {\n this.onmessage({ data: msg });\n }, 0);\n });\n this.poll();\n break;\n case 204:\n this.poll();\n break;\n case 410:\n this.readyState = SOCKET_STATES.open;\n this.onopen();\n this.poll();\n break;\n case 403:\n this.onerror();\n this.close();\n break;\n case 0:\n case 500:\n this.onerror();\n this.closeAndRetry();\n break;\n default:\n throw new Error(`unhandled poll status ${status}`);\n }\n });\n }\n send(body) {\n Ajax.request(\"POST\", this.endpointURL(), \"application/json\", body, this.timeout, this.onerror.bind(this, \"timeout\"), (resp) => {\n if (!resp || resp.status !== 200) {\n this.onerror(resp && resp.status);\n this.closeAndRetry();\n }\n });\n }\n close(_code, _reason) {\n this.readyState = SOCKET_STATES.closed;\n this.onclose();\n }\n};\n\n// js/phoenix/presence.js\nvar Presence = class {\n constructor(channel, opts = {}) {\n let events = opts.events || { state: \"presence_state\", diff: \"presence_diff\" };\n this.state = {};\n this.pendingDiffs = [];\n this.channel = channel;\n this.joinRef = null;\n this.caller = {\n onJoin: function() {\n },\n onLeave: function() {\n },\n onSync: function() {\n }\n };\n this.channel.on(events.state, (newState) => {\n let { onJoin, onLeave, onSync } = this.caller;\n this.joinRef = this.channel.joinRef();\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave);\n this.pendingDiffs.forEach((diff) => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave);\n });\n this.pendingDiffs = [];\n onSync();\n });\n this.channel.on(events.diff, (diff) => {\n let { onJoin, onLeave, onSync } = this.caller;\n if (this.inPendingSyncState()) {\n this.pendingDiffs.push(diff);\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave);\n onSync();\n }\n });\n }\n onJoin(callback) {\n this.caller.onJoin = callback;\n }\n onLeave(callback) {\n this.caller.onLeave = callback;\n }\n onSync(callback) {\n this.caller.onSync = callback;\n }\n list(by) {\n return Presence.list(this.state, by);\n }\n inPendingSyncState() {\n return !this.joinRef || this.joinRef !== this.channel.joinRef();\n }\n static syncState(currentState, newState, onJoin, onLeave) {\n let state = this.clone(currentState);\n let joins = {};\n let leaves = {};\n this.map(state, (key, presence) => {\n if (!newState[key]) {\n leaves[key] = presence;\n }\n });\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key];\n if (currentPresence) {\n let newRefs = newPresence.metas.map((m) => m.phx_ref);\n let curRefs = currentPresence.metas.map((m) => m.phx_ref);\n let joinedMetas = newPresence.metas.filter((m) => curRefs.indexOf(m.phx_ref) < 0);\n let leftMetas = currentPresence.metas.filter((m) => newRefs.indexOf(m.phx_ref) < 0);\n if (joinedMetas.length > 0) {\n joins[key] = newPresence;\n joins[key].metas = joinedMetas;\n }\n if (leftMetas.length > 0) {\n leaves[key] = this.clone(currentPresence);\n leaves[key].metas = leftMetas;\n }\n } else {\n joins[key] = newPresence;\n }\n });\n return this.syncDiff(state, { joins, leaves }, onJoin, onLeave);\n }\n static syncDiff(state, diff, onJoin, onLeave) {\n let { joins, leaves } = this.clone(diff);\n if (!onJoin) {\n onJoin = function() {\n };\n }\n if (!onLeave) {\n onLeave = function() {\n };\n }\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key];\n state[key] = this.clone(newPresence);\n if (currentPresence) {\n let joinedRefs = state[key].metas.map((m) => m.phx_ref);\n let curMetas = currentPresence.metas.filter((m) => joinedRefs.indexOf(m.phx_ref) < 0);\n state[key].metas.unshift(...curMetas);\n }\n onJoin(key, currentPresence, newPresence);\n });\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key];\n if (!currentPresence) {\n return;\n }\n let refsToRemove = leftPresence.metas.map((m) => m.phx_ref);\n currentPresence.metas = currentPresence.metas.filter((p) => {\n return refsToRemove.indexOf(p.phx_ref) < 0;\n });\n onLeave(key, currentPresence, leftPresence);\n if (currentPresence.metas.length === 0) {\n delete state[key];\n }\n });\n return state;\n }\n static list(presences, chooser) {\n if (!chooser) {\n chooser = function(key, pres) {\n return pres;\n };\n }\n return this.map(presences, (key, presence) => {\n return chooser(key, presence);\n });\n }\n static map(obj, func) {\n return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n }\n static clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n};\n\n// js/phoenix/serializer.js\nvar serializer_default = {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: { push: 0, reply: 1, broadcast: 2 },\n encode(msg, callback) {\n if (msg.payload.constructor === ArrayBuffer) {\n return callback(this.binaryEncode(msg));\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload];\n return callback(JSON.stringify(payload));\n }\n },\n decode(rawPayload, callback) {\n if (rawPayload.constructor === ArrayBuffer) {\n return callback(this.binaryDecode(rawPayload));\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload);\n return callback({ join_ref, ref, topic, event, payload });\n }\n },\n binaryEncode(message) {\n let { join_ref, ref, event, topic, payload } = message;\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length;\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength);\n let view = new DataView(header);\n let offset = 0;\n view.setUint8(offset++, this.KINDS.push);\n view.setUint8(offset++, join_ref.length);\n view.setUint8(offset++, ref.length);\n view.setUint8(offset++, topic.length);\n view.setUint8(offset++, event.length);\n Array.from(join_ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(topic, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(event, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n var combined = new Uint8Array(header.byteLength + payload.byteLength);\n combined.set(new Uint8Array(header), 0);\n combined.set(new Uint8Array(payload), header.byteLength);\n return combined.buffer;\n },\n binaryDecode(buffer) {\n let view = new DataView(buffer);\n let kind = view.getUint8(0);\n let decoder = new TextDecoder();\n switch (kind) {\n case this.KINDS.push:\n return this.decodePush(buffer, view, decoder);\n case this.KINDS.reply:\n return this.decodeReply(buffer, view, decoder);\n case this.KINDS.broadcast:\n return this.decodeBroadcast(buffer, view, decoder);\n }\n },\n decodePush(buffer, view, decoder) {\n let joinRefSize = view.getUint8(1);\n let topicSize = view.getUint8(2);\n let eventSize = view.getUint8(3);\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1;\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));\n offset = offset + joinRefSize;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n return { join_ref: joinRef, ref: null, topic, event, payload: data };\n },\n decodeReply(buffer, view, decoder) {\n let joinRefSize = view.getUint8(1);\n let refSize = view.getUint8(2);\n let topicSize = view.getUint8(3);\n let eventSize = view.getUint8(4);\n let offset = this.HEADER_LENGTH + this.META_LENGTH;\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));\n offset = offset + joinRefSize;\n let ref = decoder.decode(buffer.slice(offset, offset + refSize));\n offset = offset + refSize;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n let payload = { status: event, response: data };\n return { join_ref: joinRef, ref, topic, event: CHANNEL_EVENTS.reply, payload };\n },\n decodeBroadcast(buffer, view, decoder) {\n let topicSize = view.getUint8(1);\n let eventSize = view.getUint8(2);\n let offset = this.HEADER_LENGTH + 2;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n return { join_ref: null, ref: null, topic, event, payload: data };\n }\n};\n\n// js/phoenix/socket.js\nvar Socket = class {\n constructor(endPoint, opts = {}) {\n this.stateChangeCallbacks = { open: [], close: [], error: [], message: [] };\n this.channels = [];\n this.sendBuffer = [];\n this.ref = 0;\n this.timeout = opts.timeout || DEFAULT_TIMEOUT;\n this.transport = opts.transport || global.WebSocket || LongPoll;\n this.establishedConnections = 0;\n this.defaultEncoder = serializer_default.encode.bind(serializer_default);\n this.defaultDecoder = serializer_default.decode.bind(serializer_default);\n this.closeWasClean = false;\n this.binaryType = opts.binaryType || \"arraybuffer\";\n this.connectClock = 1;\n if (this.transport !== LongPoll) {\n this.encode = opts.encode || this.defaultEncoder;\n this.decode = opts.decode || this.defaultDecoder;\n } else {\n this.encode = this.defaultEncoder;\n this.decode = this.defaultDecoder;\n }\n let awaitingConnectionOnPageShow = null;\n if (phxWindow && phxWindow.addEventListener) {\n phxWindow.addEventListener(\"pagehide\", (_e) => {\n if (this.conn) {\n this.disconnect();\n awaitingConnectionOnPageShow = this.connectClock;\n }\n });\n phxWindow.addEventListener(\"pageshow\", (_e) => {\n if (awaitingConnectionOnPageShow === this.connectClock) {\n awaitingConnectionOnPageShow = null;\n this.connect();\n }\n });\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 3e4;\n this.rejoinAfterMs = (tries) => {\n if (opts.rejoinAfterMs) {\n return opts.rejoinAfterMs(tries);\n } else {\n return [1e3, 2e3, 5e3][tries - 1] || 1e4;\n }\n };\n this.reconnectAfterMs = (tries) => {\n if (opts.reconnectAfterMs) {\n return opts.reconnectAfterMs(tries);\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1e3, 2e3][tries - 1] || 5e3;\n }\n };\n this.logger = opts.logger || null;\n this.longpollerTimeout = opts.longpollerTimeout || 2e4;\n this.params = closure(opts.params || {});\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n this.vsn = opts.vsn || DEFAULT_VSN;\n this.heartbeatTimer = null;\n this.pendingHeartbeatRef = null;\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect());\n }, this.reconnectAfterMs);\n }\n replaceTransport(newTransport) {\n this.disconnect();\n this.transport = newTransport;\n }\n protocol() {\n return location.protocol.match(/^https/) ? \"wss\" : \"ws\";\n }\n endPointURL() {\n let uri = Ajax.appendParams(Ajax.appendParams(this.endPoint, this.params()), { vsn: this.vsn });\n if (uri.charAt(0) !== \"/\") {\n return uri;\n }\n if (uri.charAt(1) === \"/\") {\n return `${this.protocol()}:${uri}`;\n }\n return `${this.protocol()}://${location.host}${uri}`;\n }\n disconnect(callback, code, reason) {\n this.connectClock++;\n this.closeWasClean = true;\n this.reconnectTimer.reset();\n this.teardown(callback, code, reason);\n }\n connect(params) {\n this.connectClock++;\n if (params) {\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\");\n this.params = closure(params);\n }\n if (this.conn) {\n return;\n }\n this.closeWasClean = false;\n this.conn = new this.transport(this.endPointURL());\n this.conn.binaryType = this.binaryType;\n this.conn.timeout = this.longpollerTimeout;\n this.conn.onopen = () => this.onConnOpen();\n this.conn.onerror = (error) => this.onConnError(error);\n this.conn.onmessage = (event) => this.onConnMessage(event);\n this.conn.onclose = (event) => this.onConnClose(event);\n }\n log(kind, msg, data) {\n this.logger(kind, msg, data);\n }\n hasLogger() {\n return this.logger !== null;\n }\n onOpen(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.open.push([ref, callback]);\n return ref;\n }\n onClose(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.close.push([ref, callback]);\n return ref;\n }\n onError(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.error.push([ref, callback]);\n return ref;\n }\n onMessage(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.message.push([ref, callback]);\n return ref;\n }\n onConnOpen() {\n if (this.hasLogger())\n this.log(\"transport\", `connected to ${this.endPointURL()}`);\n this.closeWasClean = false;\n this.establishedConnections++;\n this.flushSendBuffer();\n this.reconnectTimer.reset();\n this.resetHeartbeat();\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback());\n }\n heartbeatTimeout() {\n if (this.pendingHeartbeatRef) {\n this.pendingHeartbeatRef = null;\n if (this.hasLogger()) {\n this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\");\n }\n this.abnormalClose(\"heartbeat timeout\");\n }\n }\n resetHeartbeat() {\n if (this.conn && this.conn.skipHeartbeat) {\n return;\n }\n this.pendingHeartbeatRef = null;\n clearTimeout(this.heartbeatTimer);\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n }\n teardown(callback, code, reason) {\n if (!this.conn) {\n return callback && callback();\n }\n this.waitForBufferDone(() => {\n if (this.conn) {\n if (code) {\n this.conn.close(code, reason || \"\");\n } else {\n this.conn.close();\n }\n }\n this.waitForSocketClosed(() => {\n if (this.conn) {\n this.conn.onclose = function() {\n };\n this.conn = null;\n }\n callback && callback();\n });\n });\n }\n waitForBufferDone(callback, tries = 1) {\n if (tries === 5 || !this.conn || !this.conn.bufferedAmount) {\n callback();\n return;\n }\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1);\n }, 150 * tries);\n }\n waitForSocketClosed(callback, tries = 1) {\n if (tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed) {\n callback();\n return;\n }\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1);\n }, 150 * tries);\n }\n onConnClose(event) {\n if (this.hasLogger())\n this.log(\"transport\", \"close\", event);\n this.triggerChanError();\n clearTimeout(this.heartbeatTimer);\n if (!this.closeWasClean) {\n this.reconnectTimer.scheduleTimeout();\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event));\n }\n onConnError(error) {\n if (this.hasLogger())\n this.log(\"transport\", error);\n let transportBefore = this.transport;\n let establishedBefore = this.establishedConnections;\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore);\n });\n if (transportBefore === this.transport || establishedBefore > 0) {\n this.triggerChanError();\n }\n }\n triggerChanError() {\n this.channels.forEach((channel) => {\n if (!(channel.isErrored() || channel.isLeaving() || channel.isClosed())) {\n channel.trigger(CHANNEL_EVENTS.error);\n }\n });\n }\n connectionState() {\n switch (this.conn && this.conn.readyState) {\n case SOCKET_STATES.connecting:\n return \"connecting\";\n case SOCKET_STATES.open:\n return \"open\";\n case SOCKET_STATES.closing:\n return \"closing\";\n default:\n return \"closed\";\n }\n }\n isConnected() {\n return this.connectionState() === \"open\";\n }\n remove(channel) {\n this.off(channel.stateChangeRefs);\n this.channels = this.channels.filter((c) => c.joinRef() !== channel.joinRef());\n }\n off(refs) {\n for (let key in this.stateChangeCallbacks) {\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1;\n });\n }\n }\n channel(topic, chanParams = {}) {\n let chan = new Channel(topic, chanParams, this);\n this.channels.push(chan);\n return chan;\n }\n push(data) {\n if (this.hasLogger()) {\n let { topic, event, payload, ref, join_ref } = data;\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload);\n }\n if (this.isConnected()) {\n this.encode(data, (result) => this.conn.send(result));\n } else {\n this.sendBuffer.push(() => this.encode(data, (result) => this.conn.send(result)));\n }\n }\n makeRef() {\n let newRef = this.ref + 1;\n if (newRef === this.ref) {\n this.ref = 0;\n } else {\n this.ref = newRef;\n }\n return this.ref.toString();\n }\n sendHeartbeat() {\n if (this.pendingHeartbeatRef && !this.isConnected()) {\n return;\n }\n this.pendingHeartbeatRef = this.makeRef();\n this.push({ topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef });\n this.heartbeatTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs);\n }\n abnormalClose(reason) {\n this.closeWasClean = false;\n if (this.isConnected()) {\n this.conn.close(WS_CLOSE_NORMAL, reason);\n }\n }\n flushSendBuffer() {\n if (this.isConnected() && this.sendBuffer.length > 0) {\n this.sendBuffer.forEach((callback) => callback());\n this.sendBuffer = [];\n }\n }\n onConnMessage(rawMessage) {\n this.decode(rawMessage.data, (msg) => {\n let { topic, event, payload, ref, join_ref } = msg;\n if (ref && ref === this.pendingHeartbeatRef) {\n clearTimeout(this.heartbeatTimer);\n this.pendingHeartbeatRef = null;\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n }\n if (this.hasLogger())\n this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload);\n for (let i = 0; i < this.channels.length; i++) {\n const channel = this.channels[i];\n if (!channel.isMember(topic, event, payload, join_ref)) {\n continue;\n }\n channel.trigger(event, payload, ref, join_ref);\n }\n for (let i = 0; i < this.stateChangeCallbacks.message.length; i++) {\n let [, callback] = this.stateChangeCallbacks.message[i];\n callback(msg);\n }\n });\n }\n leaveOpenTopic(topic) {\n let dupChannel = this.channels.find((c) => c.topic === topic && (c.isJoined() || c.isJoining()));\n if (dupChannel) {\n if (this.hasLogger())\n this.log(\"transport\", `leaving duplicate topic \"${topic}\"`);\n dupChannel.leave();\n }\n }\n};\n\n//# sourceMappingURL=phoenix.esm.js.map\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcGhvZW5peC9wcml2L3N0YXRpYy9waG9lbml4LmVzbS5qcz9lZDE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixtQkFBbUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHlCQUF5QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZ0NBQWdDO0FBQ2hDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLG1CQUFtQjtBQUM1RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxXQUFXLEdBQUcsZUFBZTtBQUN6RTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw0Q0FBNEMsV0FBVztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsOENBQThDLFdBQVcsSUFBSSxlQUFlO0FBQzVFLHFFQUFxRTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLE1BQU0sUUFBUSxXQUFXO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsV0FBVztBQUN2RDtBQUNBO0FBQ0EsbUVBQW1FO0FBQ25FO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsaUNBQWlDO0FBQ2xHO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMEJBQTBCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsSUFBSTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsVUFBVSxHQUFHLElBQUk7QUFDckQ7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFJLEVBQUUsT0FBTyxFQUFFLHVCQUF1QjtBQUNwRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELG9CQUFvQjtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDBCQUEwQjtBQUN2QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsWUFBWTtBQUMxQyxhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsT0FBTztBQUMxRDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdDQUFnQztBQUNoQyxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVywwQkFBMEI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVcsMEJBQTBCO0FBQ3JDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxpQ0FBaUMsZ0JBQWdCO0FBQ2pEO0FBQ0E7QUFDQSxTQUFTLGdCQUFnQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsa0NBQWtDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsdUJBQXVCLHVDQUF1QztBQUM5RDtBQUNBLEdBQUc7QUFDSDtBQUNBLFNBQVMsdUNBQXVDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLFlBQVk7QUFDWixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0MsdUJBQXVCLFNBQVMsR0FBRyxxQkFBcUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRkFBa0YsZ0JBQWdCO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdCQUFnQixHQUFHLElBQUk7QUFDdkM7QUFDQSxjQUFjLGdCQUFnQixLQUFLLGNBQWMsRUFBRSxJQUFJO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsbUJBQW1CO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdUNBQXVDO0FBQ2xELDBCQUEwQixNQUFNLEdBQUcsTUFBTSxJQUFJLFNBQVMsSUFBSSxJQUFJO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGtEQUFrRCxpQ0FBaUM7QUFDbEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHVDQUF1QztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IscUJBQXFCLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyw2QkFBNkI7QUFDdEcscUJBQXFCLDBCQUEwQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsOENBQThDO0FBQ25FO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELE1BQU07QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFPRTtBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Bob2VuaXgvcHJpdi9zdGF0aWMvcGhvZW5peC5lc20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBqcy9waG9lbml4L3V0aWxzLmpzXG52YXIgY2xvc3VyZSA9ICh2YWx1ZSkgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNsb3N1cmUyID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gY2xvc3VyZTI7XG4gIH1cbn07XG5cbi8vIGpzL3Bob2VuaXgvY29uc3RhbnRzLmpzXG52YXIgZ2xvYmFsU2VsZiA9IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IG51bGw7XG52YXIgcGh4V2luZG93ID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IG51bGw7XG52YXIgZ2xvYmFsID0gZ2xvYmFsU2VsZiB8fCBwaHhXaW5kb3cgfHwgdm9pZCAwO1xudmFyIERFRkFVTFRfVlNOID0gXCIyLjAuMFwiO1xudmFyIFNPQ0tFVF9TVEFURVMgPSB7IGNvbm5lY3Rpbmc6IDAsIG9wZW46IDEsIGNsb3Npbmc6IDIsIGNsb3NlZDogMyB9O1xudmFyIERFRkFVTFRfVElNRU9VVCA9IDFlNDtcbnZhciBXU19DTE9TRV9OT1JNQUwgPSAxZTM7XG52YXIgQ0hBTk5FTF9TVEFURVMgPSB7XG4gIGNsb3NlZDogXCJjbG9zZWRcIixcbiAgZXJyb3JlZDogXCJlcnJvcmVkXCIsXG4gIGpvaW5lZDogXCJqb2luZWRcIixcbiAgam9pbmluZzogXCJqb2luaW5nXCIsXG4gIGxlYXZpbmc6IFwibGVhdmluZ1wiXG59O1xudmFyIENIQU5ORUxfRVZFTlRTID0ge1xuICBjbG9zZTogXCJwaHhfY2xvc2VcIixcbiAgZXJyb3I6IFwicGh4X2Vycm9yXCIsXG4gIGpvaW46IFwicGh4X2pvaW5cIixcbiAgcmVwbHk6IFwicGh4X3JlcGx5XCIsXG4gIGxlYXZlOiBcInBoeF9sZWF2ZVwiXG59O1xudmFyIFRSQU5TUE9SVFMgPSB7XG4gIGxvbmdwb2xsOiBcImxvbmdwb2xsXCIsXG4gIHdlYnNvY2tldDogXCJ3ZWJzb2NrZXRcIlxufTtcbnZhciBYSFJfU1RBVEVTID0ge1xuICBjb21wbGV0ZTogNFxufTtcblxuLy8ganMvcGhvZW5peC9wdXNoLmpzXG52YXIgUHVzaCA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoY2hhbm5lbCwgZXZlbnQsIHBheWxvYWQsIHRpbWVvdXQpIHtcbiAgICB0aGlzLmNoYW5uZWwgPSBjaGFubmVsO1xuICAgIHRoaXMuZXZlbnQgPSBldmVudDtcbiAgICB0aGlzLnBheWxvYWQgPSBwYXlsb2FkIHx8IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH07XG4gICAgdGhpcy5yZWNlaXZlZFJlc3AgPSBudWxsO1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgdGhpcy50aW1lb3V0VGltZXIgPSBudWxsO1xuICAgIHRoaXMucmVjSG9va3MgPSBbXTtcbiAgICB0aGlzLnNlbnQgPSBmYWxzZTtcbiAgfVxuICByZXNlbmQodGltZW91dCkge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIHRoaXMuc2VuZCgpO1xuICB9XG4gIHNlbmQoKSB7XG4gICAgaWYgKHRoaXMuaGFzUmVjZWl2ZWQoXCJ0aW1lb3V0XCIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhcnRUaW1lb3V0KCk7XG4gICAgdGhpcy5zZW50ID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5uZWwuc29ja2V0LnB1c2goe1xuICAgICAgdG9waWM6IHRoaXMuY2hhbm5lbC50b3BpYyxcbiAgICAgIGV2ZW50OiB0aGlzLmV2ZW50LFxuICAgICAgcGF5bG9hZDogdGhpcy5wYXlsb2FkKCksXG4gICAgICByZWY6IHRoaXMucmVmLFxuICAgICAgam9pbl9yZWY6IHRoaXMuY2hhbm5lbC5qb2luUmVmKClcbiAgICB9KTtcbiAgfVxuICByZWNlaXZlKHN0YXR1cywgY2FsbGJhY2spIHtcbiAgICBpZiAodGhpcy5oYXNSZWNlaXZlZChzdGF0dXMpKSB7XG4gICAgICBjYWxsYmFjayh0aGlzLnJlY2VpdmVkUmVzcC5yZXNwb25zZSk7XG4gICAgfVxuICAgIHRoaXMucmVjSG9va3MucHVzaCh7IHN0YXR1cywgY2FsbGJhY2sgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5jYW5jZWxSZWZFdmVudCgpO1xuICAgIHRoaXMucmVmID0gbnVsbDtcbiAgICB0aGlzLnJlZkV2ZW50ID0gbnVsbDtcbiAgICB0aGlzLnJlY2VpdmVkUmVzcCA9IG51bGw7XG4gICAgdGhpcy5zZW50ID0gZmFsc2U7XG4gIH1cbiAgbWF0Y2hSZWNlaXZlKHsgc3RhdHVzLCByZXNwb25zZSwgX3JlZiB9KSB7XG4gICAgdGhpcy5yZWNIb29rcy5maWx0ZXIoKGgpID0+IGguc3RhdHVzID09PSBzdGF0dXMpLmZvckVhY2goKGgpID0+IGguY2FsbGJhY2socmVzcG9uc2UpKTtcbiAgfVxuICBjYW5jZWxSZWZFdmVudCgpIHtcbiAgICBpZiAoIXRoaXMucmVmRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGFubmVsLm9mZih0aGlzLnJlZkV2ZW50KTtcbiAgfVxuICBjYW5jZWxUaW1lb3V0KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRUaW1lcik7XG4gICAgdGhpcy50aW1lb3V0VGltZXIgPSBudWxsO1xuICB9XG4gIHN0YXJ0VGltZW91dCgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0VGltZXIpIHtcbiAgICAgIHRoaXMuY2FuY2VsVGltZW91dCgpO1xuICAgIH1cbiAgICB0aGlzLnJlZiA9IHRoaXMuY2hhbm5lbC5zb2NrZXQubWFrZVJlZigpO1xuICAgIHRoaXMucmVmRXZlbnQgPSB0aGlzLmNoYW5uZWwucmVwbHlFdmVudE5hbWUodGhpcy5yZWYpO1xuICAgIHRoaXMuY2hhbm5lbC5vbih0aGlzLnJlZkV2ZW50LCAocGF5bG9hZCkgPT4ge1xuICAgICAgdGhpcy5jYW5jZWxSZWZFdmVudCgpO1xuICAgICAgdGhpcy5jYW5jZWxUaW1lb3V0KCk7XG4gICAgICB0aGlzLnJlY2VpdmVkUmVzcCA9IHBheWxvYWQ7XG4gICAgICB0aGlzLm1hdGNoUmVjZWl2ZShwYXlsb2FkKTtcbiAgICB9KTtcbiAgICB0aGlzLnRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50cmlnZ2VyKFwidGltZW91dFwiLCB7fSk7XG4gICAgfSwgdGhpcy50aW1lb3V0KTtcbiAgfVxuICBoYXNSZWNlaXZlZChzdGF0dXMpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNlaXZlZFJlc3AgJiYgdGhpcy5yZWNlaXZlZFJlc3Auc3RhdHVzID09PSBzdGF0dXM7XG4gIH1cbiAgdHJpZ2dlcihzdGF0dXMsIHJlc3BvbnNlKSB7XG4gICAgdGhpcy5jaGFubmVsLnRyaWdnZXIodGhpcy5yZWZFdmVudCwgeyBzdGF0dXMsIHJlc3BvbnNlIH0pO1xuICB9XG59O1xuXG4vLyBqcy9waG9lbml4L3RpbWVyLmpzXG52YXIgVGltZXIgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrLCB0aW1lckNhbGMpIHtcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy50aW1lckNhbGMgPSB0aW1lckNhbGM7XG4gICAgdGhpcy50aW1lciA9IG51bGw7XG4gICAgdGhpcy50cmllcyA9IDA7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy50cmllcyA9IDA7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICB9XG4gIHNjaGVkdWxlVGltZW91dCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50cmllcyA9IHRoaXMudHJpZXMgKyAxO1xuICAgICAgdGhpcy5jYWxsYmFjaygpO1xuICAgIH0sIHRoaXMudGltZXJDYWxjKHRoaXMudHJpZXMgKyAxKSk7XG4gIH1cbn07XG5cbi8vIGpzL3Bob2VuaXgvY2hhbm5lbC5qc1xudmFyIENoYW5uZWwgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKHRvcGljLCBwYXJhbXMsIHNvY2tldCkge1xuICAgIHRoaXMuc3RhdGUgPSBDSEFOTkVMX1NUQVRFUy5jbG9zZWQ7XG4gICAgdGhpcy50b3BpYyA9IHRvcGljO1xuICAgIHRoaXMucGFyYW1zID0gY2xvc3VyZShwYXJhbXMgfHwge30pO1xuICAgIHRoaXMuc29ja2V0ID0gc29ja2V0O1xuICAgIHRoaXMuYmluZGluZ3MgPSBbXTtcbiAgICB0aGlzLmJpbmRpbmdSZWYgPSAwO1xuICAgIHRoaXMudGltZW91dCA9IHRoaXMuc29ja2V0LnRpbWVvdXQ7XG4gICAgdGhpcy5qb2luZWRPbmNlID0gZmFsc2U7XG4gICAgdGhpcy5qb2luUHVzaCA9IG5ldyBQdXNoKHRoaXMsIENIQU5ORUxfRVZFTlRTLmpvaW4sIHRoaXMucGFyYW1zLCB0aGlzLnRpbWVvdXQpO1xuICAgIHRoaXMucHVzaEJ1ZmZlciA9IFtdO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VSZWZzID0gW107XG4gICAgdGhpcy5yZWpvaW5UaW1lciA9IG5ldyBUaW1lcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zb2NrZXQuaXNDb25uZWN0ZWQoKSkge1xuICAgICAgICB0aGlzLnJlam9pbigpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuc29ja2V0LnJlam9pbkFmdGVyTXMpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VSZWZzLnB1c2godGhpcy5zb2NrZXQub25FcnJvcigoKSA9PiB0aGlzLnJlam9pblRpbWVyLnJlc2V0KCkpKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlUmVmcy5wdXNoKHRoaXMuc29ja2V0Lm9uT3BlbigoKSA9PiB7XG4gICAgICB0aGlzLnJlam9pblRpbWVyLnJlc2V0KCk7XG4gICAgICBpZiAodGhpcy5pc0Vycm9yZWQoKSkge1xuICAgICAgICB0aGlzLnJlam9pbigpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgICB0aGlzLmpvaW5QdXNoLnJlY2VpdmUoXCJva1wiLCAoKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlID0gQ0hBTk5FTF9TVEFURVMuam9pbmVkO1xuICAgICAgdGhpcy5yZWpvaW5UaW1lci5yZXNldCgpO1xuICAgICAgdGhpcy5wdXNoQnVmZmVyLmZvckVhY2goKHB1c2hFdmVudCkgPT4gcHVzaEV2ZW50LnNlbmQoKSk7XG4gICAgICB0aGlzLnB1c2hCdWZmZXIgPSBbXTtcbiAgICB9KTtcbiAgICB0aGlzLmpvaW5QdXNoLnJlY2VpdmUoXCJlcnJvclwiLCAoKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlID0gQ0hBTk5FTF9TVEFURVMuZXJyb3JlZDtcbiAgICAgIGlmICh0aGlzLnNvY2tldC5pc0Nvbm5lY3RlZCgpKSB7XG4gICAgICAgIHRoaXMucmVqb2luVGltZXIuc2NoZWR1bGVUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vbkNsb3NlKCgpID0+IHtcbiAgICAgIHRoaXMucmVqb2luVGltZXIucmVzZXQoKTtcbiAgICAgIGlmICh0aGlzLnNvY2tldC5oYXNMb2dnZXIoKSlcbiAgICAgICAgdGhpcy5zb2NrZXQubG9nKFwiY2hhbm5lbFwiLCBgY2xvc2UgJHt0aGlzLnRvcGljfSAke3RoaXMuam9pblJlZigpfWApO1xuICAgICAgdGhpcy5zdGF0ZSA9IENIQU5ORUxfU1RBVEVTLmNsb3NlZDtcbiAgICAgIHRoaXMuc29ja2V0LnJlbW92ZSh0aGlzKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uRXJyb3IoKHJlYXNvbikgPT4ge1xuICAgICAgaWYgKHRoaXMuc29ja2V0Lmhhc0xvZ2dlcigpKVxuICAgICAgICB0aGlzLnNvY2tldC5sb2coXCJjaGFubmVsXCIsIGBlcnJvciAke3RoaXMudG9waWN9YCwgcmVhc29uKTtcbiAgICAgIGlmICh0aGlzLmlzSm9pbmluZygpKSB7XG4gICAgICAgIHRoaXMuam9pblB1c2gucmVzZXQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RhdGUgPSBDSEFOTkVMX1NUQVRFUy5lcnJvcmVkO1xuICAgICAgaWYgKHRoaXMuc29ja2V0LmlzQ29ubmVjdGVkKCkpIHtcbiAgICAgICAgdGhpcy5yZWpvaW5UaW1lci5zY2hlZHVsZVRpbWVvdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmpvaW5QdXNoLnJlY2VpdmUoXCJ0aW1lb3V0XCIsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNvY2tldC5oYXNMb2dnZXIoKSlcbiAgICAgICAgdGhpcy5zb2NrZXQubG9nKFwiY2hhbm5lbFwiLCBgdGltZW91dCAke3RoaXMudG9waWN9ICgke3RoaXMuam9pblJlZigpfSlgLCB0aGlzLmpvaW5QdXNoLnRpbWVvdXQpO1xuICAgICAgbGV0IGxlYXZlUHVzaCA9IG5ldyBQdXNoKHRoaXMsIENIQU5ORUxfRVZFTlRTLmxlYXZlLCBjbG9zdXJlKHt9KSwgdGhpcy50aW1lb3V0KTtcbiAgICAgIGxlYXZlUHVzaC5zZW5kKCk7XG4gICAgICB0aGlzLnN0YXRlID0gQ0hBTk5FTF9TVEFURVMuZXJyb3JlZDtcbiAgICAgIHRoaXMuam9pblB1c2gucmVzZXQoKTtcbiAgICAgIGlmICh0aGlzLnNvY2tldC5pc0Nvbm5lY3RlZCgpKSB7XG4gICAgICAgIHRoaXMucmVqb2luVGltZXIuc2NoZWR1bGVUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vbihDSEFOTkVMX0VWRU5UUy5yZXBseSwgKHBheWxvYWQsIHJlZikgPT4ge1xuICAgICAgdGhpcy50cmlnZ2VyKHRoaXMucmVwbHlFdmVudE5hbWUocmVmKSwgcGF5bG9hZCk7XG4gICAgfSk7XG4gIH1cbiAgam9pbih0aW1lb3V0ID0gdGhpcy50aW1lb3V0KSB7XG4gICAgaWYgKHRoaXMuam9pbmVkT25jZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJpZWQgdG8gam9pbiBtdWx0aXBsZSB0aW1lcy4gJ2pvaW4nIGNhbiBvbmx5IGJlIGNhbGxlZCBhIHNpbmdsZSB0aW1lIHBlciBjaGFubmVsIGluc3RhbmNlXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0O1xuICAgICAgdGhpcy5qb2luZWRPbmNlID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVqb2luKCk7XG4gICAgICByZXR1cm4gdGhpcy5qb2luUHVzaDtcbiAgICB9XG4gIH1cbiAgb25DbG9zZShjYWxsYmFjaykge1xuICAgIHRoaXMub24oQ0hBTk5FTF9FVkVOVFMuY2xvc2UsIGNhbGxiYWNrKTtcbiAgfVxuICBvbkVycm9yKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMub24oQ0hBTk5FTF9FVkVOVFMuZXJyb3IsIChyZWFzb24pID0+IGNhbGxiYWNrKHJlYXNvbikpO1xuICB9XG4gIG9uKGV2ZW50LCBjYWxsYmFjaykge1xuICAgIGxldCByZWYgPSB0aGlzLmJpbmRpbmdSZWYrKztcbiAgICB0aGlzLmJpbmRpbmdzLnB1c2goeyBldmVudCwgcmVmLCBjYWxsYmFjayB9KTtcbiAgICByZXR1cm4gcmVmO1xuICB9XG4gIG9mZihldmVudCwgcmVmKSB7XG4gICAgdGhpcy5iaW5kaW5ncyA9IHRoaXMuYmluZGluZ3MuZmlsdGVyKChiaW5kKSA9PiB7XG4gICAgICByZXR1cm4gIShiaW5kLmV2ZW50ID09PSBldmVudCAmJiAodHlwZW9mIHJlZiA9PT0gXCJ1bmRlZmluZWRcIiB8fCByZWYgPT09IGJpbmQucmVmKSk7XG4gICAgfSk7XG4gIH1cbiAgY2FuUHVzaCgpIHtcbiAgICByZXR1cm4gdGhpcy5zb2NrZXQuaXNDb25uZWN0ZWQoKSAmJiB0aGlzLmlzSm9pbmVkKCk7XG4gIH1cbiAgcHVzaChldmVudCwgcGF5bG9hZCwgdGltZW91dCA9IHRoaXMudGltZW91dCkge1xuICAgIHBheWxvYWQgPSBwYXlsb2FkIHx8IHt9O1xuICAgIGlmICghdGhpcy5qb2luZWRPbmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHRyaWVkIHRvIHB1c2ggJyR7ZXZlbnR9JyB0byAnJHt0aGlzLnRvcGljfScgYmVmb3JlIGpvaW5pbmcuIFVzZSBjaGFubmVsLmpvaW4oKSBiZWZvcmUgcHVzaGluZyBldmVudHNgKTtcbiAgICB9XG4gICAgbGV0IHB1c2hFdmVudCA9IG5ldyBQdXNoKHRoaXMsIGV2ZW50LCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH0sIHRpbWVvdXQpO1xuICAgIGlmICh0aGlzLmNhblB1c2goKSkge1xuICAgICAgcHVzaEV2ZW50LnNlbmQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHVzaEV2ZW50LnN0YXJ0VGltZW91dCgpO1xuICAgICAgdGhpcy5wdXNoQnVmZmVyLnB1c2gocHVzaEV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHB1c2hFdmVudDtcbiAgfVxuICBsZWF2ZSh0aW1lb3V0ID0gdGhpcy50aW1lb3V0KSB7XG4gICAgdGhpcy5yZWpvaW5UaW1lci5yZXNldCgpO1xuICAgIHRoaXMuam9pblB1c2guY2FuY2VsVGltZW91dCgpO1xuICAgIHRoaXMuc3RhdGUgPSBDSEFOTkVMX1NUQVRFUy5sZWF2aW5nO1xuICAgIGxldCBvbkNsb3NlID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc29ja2V0Lmhhc0xvZ2dlcigpKVxuICAgICAgICB0aGlzLnNvY2tldC5sb2coXCJjaGFubmVsXCIsIGBsZWF2ZSAke3RoaXMudG9waWN9YCk7XG4gICAgICB0aGlzLnRyaWdnZXIoQ0hBTk5FTF9FVkVOVFMuY2xvc2UsIFwibGVhdmVcIik7XG4gICAgfTtcbiAgICBsZXQgbGVhdmVQdXNoID0gbmV3IFB1c2godGhpcywgQ0hBTk5FTF9FVkVOVFMubGVhdmUsIGNsb3N1cmUoe30pLCB0aW1lb3V0KTtcbiAgICBsZWF2ZVB1c2gucmVjZWl2ZShcIm9rXCIsICgpID0+IG9uQ2xvc2UoKSkucmVjZWl2ZShcInRpbWVvdXRcIiwgKCkgPT4gb25DbG9zZSgpKTtcbiAgICBsZWF2ZVB1c2guc2VuZCgpO1xuICAgIGlmICghdGhpcy5jYW5QdXNoKCkpIHtcbiAgICAgIGxlYXZlUHVzaC50cmlnZ2VyKFwib2tcIiwge30pO1xuICAgIH1cbiAgICByZXR1cm4gbGVhdmVQdXNoO1xuICB9XG4gIG9uTWVzc2FnZShfZXZlbnQsIHBheWxvYWQsIF9yZWYpIHtcbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxuICBpc01lbWJlcih0b3BpYywgZXZlbnQsIHBheWxvYWQsIGpvaW5SZWYpIHtcbiAgICBpZiAodGhpcy50b3BpYyAhPT0gdG9waWMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGpvaW5SZWYgJiYgam9pblJlZiAhPT0gdGhpcy5qb2luUmVmKCkpIHtcbiAgICAgIGlmICh0aGlzLnNvY2tldC5oYXNMb2dnZXIoKSlcbiAgICAgICAgdGhpcy5zb2NrZXQubG9nKFwiY2hhbm5lbFwiLCBcImRyb3BwaW5nIG91dGRhdGVkIG1lc3NhZ2VcIiwgeyB0b3BpYywgZXZlbnQsIHBheWxvYWQsIGpvaW5SZWYgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBqb2luUmVmKCkge1xuICAgIHJldHVybiB0aGlzLmpvaW5QdXNoLnJlZjtcbiAgfVxuICByZWpvaW4odGltZW91dCA9IHRoaXMudGltZW91dCkge1xuICAgIGlmICh0aGlzLmlzTGVhdmluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc29ja2V0LmxlYXZlT3BlblRvcGljKHRoaXMudG9waWMpO1xuICAgIHRoaXMuc3RhdGUgPSBDSEFOTkVMX1NUQVRFUy5qb2luaW5nO1xuICAgIHRoaXMuam9pblB1c2gucmVzZW5kKHRpbWVvdXQpO1xuICB9XG4gIHRyaWdnZXIoZXZlbnQsIHBheWxvYWQsIHJlZiwgam9pblJlZikge1xuICAgIGxldCBoYW5kbGVkUGF5bG9hZCA9IHRoaXMub25NZXNzYWdlKGV2ZW50LCBwYXlsb2FkLCByZWYsIGpvaW5SZWYpO1xuICAgIGlmIChwYXlsb2FkICYmICFoYW5kbGVkUGF5bG9hZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2hhbm5lbCBvbk1lc3NhZ2UgY2FsbGJhY2tzIG11c3QgcmV0dXJuIHRoZSBwYXlsb2FkLCBtb2RpZmllZCBvciB1bm1vZGlmaWVkXCIpO1xuICAgIH1cbiAgICBsZXQgZXZlbnRCaW5kaW5ncyA9IHRoaXMuYmluZGluZ3MuZmlsdGVyKChiaW5kKSA9PiBiaW5kLmV2ZW50ID09PSBldmVudCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmVudEJpbmRpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYmluZCA9IGV2ZW50QmluZGluZ3NbaV07XG4gICAgICBiaW5kLmNhbGxiYWNrKGhhbmRsZWRQYXlsb2FkLCByZWYsIGpvaW5SZWYgfHwgdGhpcy5qb2luUmVmKCkpO1xuICAgIH1cbiAgfVxuICByZXBseUV2ZW50TmFtZShyZWYpIHtcbiAgICByZXR1cm4gYGNoYW5fcmVwbHlfJHtyZWZ9YDtcbiAgfVxuICBpc0Nsb3NlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSA9PT0gQ0hBTk5FTF9TVEFURVMuY2xvc2VkO1xuICB9XG4gIGlzRXJyb3JlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSA9PT0gQ0hBTk5FTF9TVEFURVMuZXJyb3JlZDtcbiAgfVxuICBpc0pvaW5lZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSA9PT0gQ0hBTk5FTF9TVEFURVMuam9pbmVkO1xuICB9XG4gIGlzSm9pbmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSA9PT0gQ0hBTk5FTF9TVEFURVMuam9pbmluZztcbiAgfVxuICBpc0xlYXZpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUgPT09IENIQU5ORUxfU1RBVEVTLmxlYXZpbmc7XG4gIH1cbn07XG5cbi8vIGpzL3Bob2VuaXgvYWpheC5qc1xudmFyIEFqYXggPSBjbGFzcyB7XG4gIHN0YXRpYyByZXF1ZXN0KG1ldGhvZCwgZW5kUG9pbnQsIGFjY2VwdCwgYm9keSwgdGltZW91dCwgb250aW1lb3V0LCBjYWxsYmFjaykge1xuICAgIGlmIChnbG9iYWwuWERvbWFpblJlcXVlc3QpIHtcbiAgICAgIGxldCByZXEgPSBuZXcgZ2xvYmFsLlhEb21haW5SZXF1ZXN0KCk7XG4gICAgICB0aGlzLnhkb21haW5SZXF1ZXN0KHJlcSwgbWV0aG9kLCBlbmRQb2ludCwgYm9keSwgdGltZW91dCwgb250aW1lb3V0LCBjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZXEgPSBuZXcgZ2xvYmFsLlhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICB0aGlzLnhoclJlcXVlc3QocmVxLCBtZXRob2QsIGVuZFBvaW50LCBhY2NlcHQsIGJvZHksIHRpbWVvdXQsIG9udGltZW91dCwgY2FsbGJhY2spO1xuICAgIH1cbiAgfVxuICBzdGF0aWMgeGRvbWFpblJlcXVlc3QocmVxLCBtZXRob2QsIGVuZFBvaW50LCBib2R5LCB0aW1lb3V0LCBvbnRpbWVvdXQsIGNhbGxiYWNrKSB7XG4gICAgcmVxLnRpbWVvdXQgPSB0aW1lb3V0O1xuICAgIHJlcS5vcGVuKG1ldGhvZCwgZW5kUG9pbnQpO1xuICAgIHJlcS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBsZXQgcmVzcG9uc2UgPSB0aGlzLnBhcnNlSlNPTihyZXEucmVzcG9uc2VUZXh0KTtcbiAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlc3BvbnNlKTtcbiAgICB9O1xuICAgIGlmIChvbnRpbWVvdXQpIHtcbiAgICAgIHJlcS5vbnRpbWVvdXQgPSBvbnRpbWVvdXQ7XG4gICAgfVxuICAgIHJlcS5vbnByb2dyZXNzID0gKCkgPT4ge1xuICAgIH07XG4gICAgcmVxLnNlbmQoYm9keSk7XG4gIH1cbiAgc3RhdGljIHhoclJlcXVlc3QocmVxLCBtZXRob2QsIGVuZFBvaW50LCBhY2NlcHQsIGJvZHksIHRpbWVvdXQsIG9udGltZW91dCwgY2FsbGJhY2spIHtcbiAgICByZXEub3BlbihtZXRob2QsIGVuZFBvaW50LCB0cnVlKTtcbiAgICByZXEudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgYWNjZXB0KTtcbiAgICByZXEub25lcnJvciA9ICgpID0+IHtcbiAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKG51bGwpO1xuICAgIH07XG4gICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PT0gWEhSX1NUQVRFUy5jb21wbGV0ZSAmJiBjYWxsYmFjaykge1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSB0aGlzLnBhcnNlSlNPTihyZXEucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgY2FsbGJhY2socmVzcG9uc2UpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKG9udGltZW91dCkge1xuICAgICAgcmVxLm9udGltZW91dCA9IG9udGltZW91dDtcbiAgICB9XG4gICAgcmVxLnNlbmQoYm9keSk7XG4gIH1cbiAgc3RhdGljIHBhcnNlSlNPTihyZXNwKSB7XG4gICAgaWYgKCFyZXNwIHx8IHJlc3AgPT09IFwiXCIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzcCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZSAmJiBjb25zb2xlLmxvZyhcImZhaWxlZCB0byBwYXJzZSBKU09OIHJlc3BvbnNlXCIsIHJlc3ApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIHN0YXRpYyBzZXJpYWxpemUob2JqLCBwYXJlbnRLZXkpIHtcbiAgICBsZXQgcXVlcnlTdHIgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBsZXQgcGFyYW1LZXkgPSBwYXJlbnRLZXkgPyBgJHtwYXJlbnRLZXl9WyR7a2V5fV1gIDoga2V5O1xuICAgICAgbGV0IHBhcmFtVmFsID0gb2JqW2tleV07XG4gICAgICBpZiAodHlwZW9mIHBhcmFtVmFsID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHF1ZXJ5U3RyLnB1c2godGhpcy5zZXJpYWxpemUocGFyYW1WYWwsIHBhcmFtS2V5KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWVyeVN0ci5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChwYXJhbUtleSkgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcXVlcnlTdHIuam9pbihcIiZcIik7XG4gIH1cbiAgc3RhdGljIGFwcGVuZFBhcmFtcyh1cmwsIHBhcmFtcykge1xuICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gICAgbGV0IHByZWZpeCA9IHVybC5tYXRjaCgvXFw/LykgPyBcIiZcIiA6IFwiP1wiO1xuICAgIHJldHVybiBgJHt1cmx9JHtwcmVmaXh9JHt0aGlzLnNlcmlhbGl6ZShwYXJhbXMpfWA7XG4gIH1cbn07XG5cbi8vIGpzL3Bob2VuaXgvbG9uZ3BvbGwuanNcbnZhciBMb25nUG9sbCA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoZW5kUG9pbnQpIHtcbiAgICB0aGlzLmVuZFBvaW50ID0gbnVsbDtcbiAgICB0aGlzLnRva2VuID0gbnVsbDtcbiAgICB0aGlzLnNraXBIZWFydGJlYXQgPSB0cnVlO1xuICAgIHRoaXMub25vcGVuID0gZnVuY3Rpb24oKSB7XG4gICAgfTtcbiAgICB0aGlzLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICB9O1xuICAgIHRoaXMub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgfTtcbiAgICB0aGlzLm9uY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICB9O1xuICAgIHRoaXMucG9sbEVuZHBvaW50ID0gdGhpcy5ub3JtYWxpemVFbmRwb2ludChlbmRQb2ludCk7XG4gICAgdGhpcy5yZWFkeVN0YXRlID0gU09DS0VUX1NUQVRFUy5jb25uZWN0aW5nO1xuICAgIHRoaXMucG9sbCgpO1xuICB9XG4gIG5vcm1hbGl6ZUVuZHBvaW50KGVuZFBvaW50KSB7XG4gICAgcmV0dXJuIGVuZFBvaW50LnJlcGxhY2UoXCJ3czovL1wiLCBcImh0dHA6Ly9cIikucmVwbGFjZShcIndzczovL1wiLCBcImh0dHBzOi8vXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChcIiguKikvXCIgKyBUUkFOU1BPUlRTLndlYnNvY2tldCksIFwiJDEvXCIgKyBUUkFOU1BPUlRTLmxvbmdwb2xsKTtcbiAgfVxuICBlbmRwb2ludFVSTCgpIHtcbiAgICByZXR1cm4gQWpheC5hcHBlbmRQYXJhbXModGhpcy5wb2xsRW5kcG9pbnQsIHsgdG9rZW46IHRoaXMudG9rZW4gfSk7XG4gIH1cbiAgY2xvc2VBbmRSZXRyeSgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5yZWFkeVN0YXRlID0gU09DS0VUX1NUQVRFUy5jb25uZWN0aW5nO1xuICB9XG4gIG9udGltZW91dCgpIHtcbiAgICB0aGlzLm9uZXJyb3IoXCJ0aW1lb3V0XCIpO1xuICAgIHRoaXMuY2xvc2VBbmRSZXRyeSgpO1xuICB9XG4gIHBvbGwoKSB7XG4gICAgaWYgKCEodGhpcy5yZWFkeVN0YXRlID09PSBTT0NLRVRfU1RBVEVTLm9wZW4gfHwgdGhpcy5yZWFkeVN0YXRlID09PSBTT0NLRVRfU1RBVEVTLmNvbm5lY3RpbmcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIEFqYXgucmVxdWVzdChcIkdFVFwiLCB0aGlzLmVuZHBvaW50VVJMKCksIFwiYXBwbGljYXRpb24vanNvblwiLCBudWxsLCB0aGlzLnRpbWVvdXQsIHRoaXMub250aW1lb3V0LmJpbmQodGhpcyksIChyZXNwKSA9PiB7XG4gICAgICBpZiAocmVzcCkge1xuICAgICAgICB2YXIgeyBzdGF0dXMsIHRva2VuLCBtZXNzYWdlcyB9ID0gcmVzcDtcbiAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdHVzID0gMDtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgMjAwOlxuICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2goKG1zZykgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub25tZXNzYWdlKHsgZGF0YTogbXNnIH0pO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5wb2xsKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjA0OlxuICAgICAgICAgIHRoaXMucG9sbCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQxMDpcbiAgICAgICAgICB0aGlzLnJlYWR5U3RhdGUgPSBTT0NLRVRfU1RBVEVTLm9wZW47XG4gICAgICAgICAgdGhpcy5vbm9wZW4oKTtcbiAgICAgICAgICB0aGlzLnBvbGwoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MDM6XG4gICAgICAgICAgdGhpcy5vbmVycm9yKCk7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgNTAwOlxuICAgICAgICAgIHRoaXMub25lcnJvcigpO1xuICAgICAgICAgIHRoaXMuY2xvc2VBbmRSZXRyeSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5oYW5kbGVkIHBvbGwgc3RhdHVzICR7c3RhdHVzfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHNlbmQoYm9keSkge1xuICAgIEFqYXgucmVxdWVzdChcIlBPU1RcIiwgdGhpcy5lbmRwb2ludFVSTCgpLCBcImFwcGxpY2F0aW9uL2pzb25cIiwgYm9keSwgdGhpcy50aW1lb3V0LCB0aGlzLm9uZXJyb3IuYmluZCh0aGlzLCBcInRpbWVvdXRcIiksIChyZXNwKSA9PiB7XG4gICAgICBpZiAoIXJlc3AgfHwgcmVzcC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICB0aGlzLm9uZXJyb3IocmVzcCAmJiByZXNwLnN0YXR1cyk7XG4gICAgICAgIHRoaXMuY2xvc2VBbmRSZXRyeSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGNsb3NlKF9jb2RlLCBfcmVhc29uKSB7XG4gICAgdGhpcy5yZWFkeVN0YXRlID0gU09DS0VUX1NUQVRFUy5jbG9zZWQ7XG4gICAgdGhpcy5vbmNsb3NlKCk7XG4gIH1cbn07XG5cbi8vIGpzL3Bob2VuaXgvcHJlc2VuY2UuanNcbnZhciBQcmVzZW5jZSA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoY2hhbm5lbCwgb3B0cyA9IHt9KSB7XG4gICAgbGV0IGV2ZW50cyA9IG9wdHMuZXZlbnRzIHx8IHsgc3RhdGU6IFwicHJlc2VuY2Vfc3RhdGVcIiwgZGlmZjogXCJwcmVzZW5jZV9kaWZmXCIgfTtcbiAgICB0aGlzLnN0YXRlID0ge307XG4gICAgdGhpcy5wZW5kaW5nRGlmZnMgPSBbXTtcbiAgICB0aGlzLmNoYW5uZWwgPSBjaGFubmVsO1xuICAgIHRoaXMuam9pblJlZiA9IG51bGw7XG4gICAgdGhpcy5jYWxsZXIgPSB7XG4gICAgICBvbkpvaW46IGZ1bmN0aW9uKCkge1xuICAgICAgfSxcbiAgICAgIG9uTGVhdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgfSxcbiAgICAgIG9uU3luYzogZnVuY3Rpb24oKSB7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmNoYW5uZWwub24oZXZlbnRzLnN0YXRlLCAobmV3U3RhdGUpID0+IHtcbiAgICAgIGxldCB7IG9uSm9pbiwgb25MZWF2ZSwgb25TeW5jIH0gPSB0aGlzLmNhbGxlcjtcbiAgICAgIHRoaXMuam9pblJlZiA9IHRoaXMuY2hhbm5lbC5qb2luUmVmKCk7XG4gICAgICB0aGlzLnN0YXRlID0gUHJlc2VuY2Uuc3luY1N0YXRlKHRoaXMuc3RhdGUsIG5ld1N0YXRlLCBvbkpvaW4sIG9uTGVhdmUpO1xuICAgICAgdGhpcy5wZW5kaW5nRGlmZnMuZm9yRWFjaCgoZGlmZikgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlID0gUHJlc2VuY2Uuc3luY0RpZmYodGhpcy5zdGF0ZSwgZGlmZiwgb25Kb2luLCBvbkxlYXZlKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wZW5kaW5nRGlmZnMgPSBbXTtcbiAgICAgIG9uU3luYygpO1xuICAgIH0pO1xuICAgIHRoaXMuY2hhbm5lbC5vbihldmVudHMuZGlmZiwgKGRpZmYpID0+IHtcbiAgICAgIGxldCB7IG9uSm9pbiwgb25MZWF2ZSwgb25TeW5jIH0gPSB0aGlzLmNhbGxlcjtcbiAgICAgIGlmICh0aGlzLmluUGVuZGluZ1N5bmNTdGF0ZSgpKSB7XG4gICAgICAgIHRoaXMucGVuZGluZ0RpZmZzLnB1c2goZGlmZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gUHJlc2VuY2Uuc3luY0RpZmYodGhpcy5zdGF0ZSwgZGlmZiwgb25Kb2luLCBvbkxlYXZlKTtcbiAgICAgICAgb25TeW5jKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgb25Kb2luKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5jYWxsZXIub25Kb2luID0gY2FsbGJhY2s7XG4gIH1cbiAgb25MZWF2ZShjYWxsYmFjaykge1xuICAgIHRoaXMuY2FsbGVyLm9uTGVhdmUgPSBjYWxsYmFjaztcbiAgfVxuICBvblN5bmMoY2FsbGJhY2spIHtcbiAgICB0aGlzLmNhbGxlci5vblN5bmMgPSBjYWxsYmFjaztcbiAgfVxuICBsaXN0KGJ5KSB7XG4gICAgcmV0dXJuIFByZXNlbmNlLmxpc3QodGhpcy5zdGF0ZSwgYnkpO1xuICB9XG4gIGluUGVuZGluZ1N5bmNTdGF0ZSgpIHtcbiAgICByZXR1cm4gIXRoaXMuam9pblJlZiB8fCB0aGlzLmpvaW5SZWYgIT09IHRoaXMuY2hhbm5lbC5qb2luUmVmKCk7XG4gIH1cbiAgc3RhdGljIHN5bmNTdGF0ZShjdXJyZW50U3RhdGUsIG5ld1N0YXRlLCBvbkpvaW4sIG9uTGVhdmUpIHtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNsb25lKGN1cnJlbnRTdGF0ZSk7XG4gICAgbGV0IGpvaW5zID0ge307XG4gICAgbGV0IGxlYXZlcyA9IHt9O1xuICAgIHRoaXMubWFwKHN0YXRlLCAoa2V5LCBwcmVzZW5jZSkgPT4ge1xuICAgICAgaWYgKCFuZXdTdGF0ZVtrZXldKSB7XG4gICAgICAgIGxlYXZlc1trZXldID0gcHJlc2VuY2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5tYXAobmV3U3RhdGUsIChrZXksIG5ld1ByZXNlbmNlKSA9PiB7XG4gICAgICBsZXQgY3VycmVudFByZXNlbmNlID0gc3RhdGVba2V5XTtcbiAgICAgIGlmIChjdXJyZW50UHJlc2VuY2UpIHtcbiAgICAgICAgbGV0IG5ld1JlZnMgPSBuZXdQcmVzZW5jZS5tZXRhcy5tYXAoKG0pID0+IG0ucGh4X3JlZik7XG4gICAgICAgIGxldCBjdXJSZWZzID0gY3VycmVudFByZXNlbmNlLm1ldGFzLm1hcCgobSkgPT4gbS5waHhfcmVmKTtcbiAgICAgICAgbGV0IGpvaW5lZE1ldGFzID0gbmV3UHJlc2VuY2UubWV0YXMuZmlsdGVyKChtKSA9PiBjdXJSZWZzLmluZGV4T2YobS5waHhfcmVmKSA8IDApO1xuICAgICAgICBsZXQgbGVmdE1ldGFzID0gY3VycmVudFByZXNlbmNlLm1ldGFzLmZpbHRlcigobSkgPT4gbmV3UmVmcy5pbmRleE9mKG0ucGh4X3JlZikgPCAwKTtcbiAgICAgICAgaWYgKGpvaW5lZE1ldGFzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBqb2luc1trZXldID0gbmV3UHJlc2VuY2U7XG4gICAgICAgICAgam9pbnNba2V5XS5tZXRhcyA9IGpvaW5lZE1ldGFzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZWZ0TWV0YXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxlYXZlc1trZXldID0gdGhpcy5jbG9uZShjdXJyZW50UHJlc2VuY2UpO1xuICAgICAgICAgIGxlYXZlc1trZXldLm1ldGFzID0gbGVmdE1ldGFzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqb2luc1trZXldID0gbmV3UHJlc2VuY2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuc3luY0RpZmYoc3RhdGUsIHsgam9pbnMsIGxlYXZlcyB9LCBvbkpvaW4sIG9uTGVhdmUpO1xuICB9XG4gIHN0YXRpYyBzeW5jRGlmZihzdGF0ZSwgZGlmZiwgb25Kb2luLCBvbkxlYXZlKSB7XG4gICAgbGV0IHsgam9pbnMsIGxlYXZlcyB9ID0gdGhpcy5jbG9uZShkaWZmKTtcbiAgICBpZiAoIW9uSm9pbikge1xuICAgICAgb25Kb2luID0gZnVuY3Rpb24oKSB7XG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIW9uTGVhdmUpIHtcbiAgICAgIG9uTGVhdmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMubWFwKGpvaW5zLCAoa2V5LCBuZXdQcmVzZW5jZSkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRQcmVzZW5jZSA9IHN0YXRlW2tleV07XG4gICAgICBzdGF0ZVtrZXldID0gdGhpcy5jbG9uZShuZXdQcmVzZW5jZSk7XG4gICAgICBpZiAoY3VycmVudFByZXNlbmNlKSB7XG4gICAgICAgIGxldCBqb2luZWRSZWZzID0gc3RhdGVba2V5XS5tZXRhcy5tYXAoKG0pID0+IG0ucGh4X3JlZik7XG4gICAgICAgIGxldCBjdXJNZXRhcyA9IGN1cnJlbnRQcmVzZW5jZS5tZXRhcy5maWx0ZXIoKG0pID0+IGpvaW5lZFJlZnMuaW5kZXhPZihtLnBoeF9yZWYpIDwgMCk7XG4gICAgICAgIHN0YXRlW2tleV0ubWV0YXMudW5zaGlmdCguLi5jdXJNZXRhcyk7XG4gICAgICB9XG4gICAgICBvbkpvaW4oa2V5LCBjdXJyZW50UHJlc2VuY2UsIG5ld1ByZXNlbmNlKTtcbiAgICB9KTtcbiAgICB0aGlzLm1hcChsZWF2ZXMsIChrZXksIGxlZnRQcmVzZW5jZSkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRQcmVzZW5jZSA9IHN0YXRlW2tleV07XG4gICAgICBpZiAoIWN1cnJlbnRQcmVzZW5jZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgcmVmc1RvUmVtb3ZlID0gbGVmdFByZXNlbmNlLm1ldGFzLm1hcCgobSkgPT4gbS5waHhfcmVmKTtcbiAgICAgIGN1cnJlbnRQcmVzZW5jZS5tZXRhcyA9IGN1cnJlbnRQcmVzZW5jZS5tZXRhcy5maWx0ZXIoKHApID0+IHtcbiAgICAgICAgcmV0dXJuIHJlZnNUb1JlbW92ZS5pbmRleE9mKHAucGh4X3JlZikgPCAwO1xuICAgICAgfSk7XG4gICAgICBvbkxlYXZlKGtleSwgY3VycmVudFByZXNlbmNlLCBsZWZ0UHJlc2VuY2UpO1xuICAgICAgaWYgKGN1cnJlbnRQcmVzZW5jZS5tZXRhcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVsZXRlIHN0YXRlW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIHN0YXRpYyBsaXN0KHByZXNlbmNlcywgY2hvb3Nlcikge1xuICAgIGlmICghY2hvb3Nlcikge1xuICAgICAgY2hvb3NlciA9IGZ1bmN0aW9uKGtleSwgcHJlcykge1xuICAgICAgICByZXR1cm4gcHJlcztcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1hcChwcmVzZW5jZXMsIChrZXksIHByZXNlbmNlKSA9PiB7XG4gICAgICByZXR1cm4gY2hvb3NlcihrZXksIHByZXNlbmNlKTtcbiAgICB9KTtcbiAgfVxuICBzdGF0aWMgbWFwKG9iaiwgZnVuYykge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLm1hcCgoa2V5KSA9PiBmdW5jKGtleSwgb2JqW2tleV0pKTtcbiAgfVxuICBzdGF0aWMgY2xvbmUob2JqKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XG4gIH1cbn07XG5cbi8vIGpzL3Bob2VuaXgvc2VyaWFsaXplci5qc1xudmFyIHNlcmlhbGl6ZXJfZGVmYXVsdCA9IHtcbiAgSEVBREVSX0xFTkdUSDogMSxcbiAgTUVUQV9MRU5HVEg6IDQsXG4gIEtJTkRTOiB7IHB1c2g6IDAsIHJlcGx5OiAxLCBicm9hZGNhc3Q6IDIgfSxcbiAgZW5jb2RlKG1zZywgY2FsbGJhY2spIHtcbiAgICBpZiAobXNnLnBheWxvYWQuY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sodGhpcy5iaW5hcnlFbmNvZGUobXNnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwYXlsb2FkID0gW21zZy5qb2luX3JlZiwgbXNnLnJlZiwgbXNnLnRvcGljLCBtc2cuZXZlbnQsIG1zZy5wYXlsb2FkXTtcbiAgICAgIHJldHVybiBjYWxsYmFjayhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgfVxuICB9LFxuICBkZWNvZGUocmF3UGF5bG9hZCwgY2FsbGJhY2spIHtcbiAgICBpZiAocmF3UGF5bG9hZC5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayh0aGlzLmJpbmFyeURlY29kZShyYXdQYXlsb2FkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBbam9pbl9yZWYsIHJlZiwgdG9waWMsIGV2ZW50LCBwYXlsb2FkXSA9IEpTT04ucGFyc2UocmF3UGF5bG9hZCk7XG4gICAgICByZXR1cm4gY2FsbGJhY2soeyBqb2luX3JlZiwgcmVmLCB0b3BpYywgZXZlbnQsIHBheWxvYWQgfSk7XG4gICAgfVxuICB9LFxuICBiaW5hcnlFbmNvZGUobWVzc2FnZSkge1xuICAgIGxldCB7IGpvaW5fcmVmLCByZWYsIGV2ZW50LCB0b3BpYywgcGF5bG9hZCB9ID0gbWVzc2FnZTtcbiAgICBsZXQgbWV0YUxlbmd0aCA9IHRoaXMuTUVUQV9MRU5HVEggKyBqb2luX3JlZi5sZW5ndGggKyByZWYubGVuZ3RoICsgdG9waWMubGVuZ3RoICsgZXZlbnQubGVuZ3RoO1xuICAgIGxldCBoZWFkZXIgPSBuZXcgQXJyYXlCdWZmZXIodGhpcy5IRUFERVJfTEVOR1RIICsgbWV0YUxlbmd0aCk7XG4gICAgbGV0IHZpZXcgPSBuZXcgRGF0YVZpZXcoaGVhZGVyKTtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICB2aWV3LnNldFVpbnQ4KG9mZnNldCsrLCB0aGlzLktJTkRTLnB1c2gpO1xuICAgIHZpZXcuc2V0VWludDgob2Zmc2V0KyssIGpvaW5fcmVmLmxlbmd0aCk7XG4gICAgdmlldy5zZXRVaW50OChvZmZzZXQrKywgcmVmLmxlbmd0aCk7XG4gICAgdmlldy5zZXRVaW50OChvZmZzZXQrKywgdG9waWMubGVuZ3RoKTtcbiAgICB2aWV3LnNldFVpbnQ4KG9mZnNldCsrLCBldmVudC5sZW5ndGgpO1xuICAgIEFycmF5LmZyb20oam9pbl9yZWYsIChjaGFyKSA9PiB2aWV3LnNldFVpbnQ4KG9mZnNldCsrLCBjaGFyLmNoYXJDb2RlQXQoMCkpKTtcbiAgICBBcnJheS5mcm9tKHJlZiwgKGNoYXIpID0+IHZpZXcuc2V0VWludDgob2Zmc2V0KyssIGNoYXIuY2hhckNvZGVBdCgwKSkpO1xuICAgIEFycmF5LmZyb20odG9waWMsIChjaGFyKSA9PiB2aWV3LnNldFVpbnQ4KG9mZnNldCsrLCBjaGFyLmNoYXJDb2RlQXQoMCkpKTtcbiAgICBBcnJheS5mcm9tKGV2ZW50LCAoY2hhcikgPT4gdmlldy5zZXRVaW50OChvZmZzZXQrKywgY2hhci5jaGFyQ29kZUF0KDApKSk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IFVpbnQ4QXJyYXkoaGVhZGVyLmJ5dGVMZW5ndGggKyBwYXlsb2FkLmJ5dGVMZW5ndGgpO1xuICAgIGNvbWJpbmVkLnNldChuZXcgVWludDhBcnJheShoZWFkZXIpLCAwKTtcbiAgICBjb21iaW5lZC5zZXQobmV3IFVpbnQ4QXJyYXkocGF5bG9hZCksIGhlYWRlci5ieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gY29tYmluZWQuYnVmZmVyO1xuICB9LFxuICBiaW5hcnlEZWNvZGUoYnVmZmVyKSB7XG4gICAgbGV0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTtcbiAgICBsZXQga2luZCA9IHZpZXcuZ2V0VWludDgoMCk7XG4gICAgbGV0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgdGhpcy5LSU5EUy5wdXNoOlxuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVQdXNoKGJ1ZmZlciwgdmlldywgZGVjb2Rlcik7XG4gICAgICBjYXNlIHRoaXMuS0lORFMucmVwbHk6XG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZVJlcGx5KGJ1ZmZlciwgdmlldywgZGVjb2Rlcik7XG4gICAgICBjYXNlIHRoaXMuS0lORFMuYnJvYWRjYXN0OlxuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVCcm9hZGNhc3QoYnVmZmVyLCB2aWV3LCBkZWNvZGVyKTtcbiAgICB9XG4gIH0sXG4gIGRlY29kZVB1c2goYnVmZmVyLCB2aWV3LCBkZWNvZGVyKSB7XG4gICAgbGV0IGpvaW5SZWZTaXplID0gdmlldy5nZXRVaW50OCgxKTtcbiAgICBsZXQgdG9waWNTaXplID0gdmlldy5nZXRVaW50OCgyKTtcbiAgICBsZXQgZXZlbnRTaXplID0gdmlldy5nZXRVaW50OCgzKTtcbiAgICBsZXQgb2Zmc2V0ID0gdGhpcy5IRUFERVJfTEVOR1RIICsgdGhpcy5NRVRBX0xFTkdUSCAtIDE7XG4gICAgbGV0IGpvaW5SZWYgPSBkZWNvZGVyLmRlY29kZShidWZmZXIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBqb2luUmVmU2l6ZSkpO1xuICAgIG9mZnNldCA9IG9mZnNldCArIGpvaW5SZWZTaXplO1xuICAgIGxldCB0b3BpYyA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRvcGljU2l6ZSkpO1xuICAgIG9mZnNldCA9IG9mZnNldCArIHRvcGljU2l6ZTtcbiAgICBsZXQgZXZlbnQgPSBkZWNvZGVyLmRlY29kZShidWZmZXIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBldmVudFNpemUpKTtcbiAgICBvZmZzZXQgPSBvZmZzZXQgKyBldmVudFNpemU7XG4gICAgbGV0IGRhdGEgPSBidWZmZXIuc2xpY2Uob2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgcmV0dXJuIHsgam9pbl9yZWY6IGpvaW5SZWYsIHJlZjogbnVsbCwgdG9waWMsIGV2ZW50LCBwYXlsb2FkOiBkYXRhIH07XG4gIH0sXG4gIGRlY29kZVJlcGx5KGJ1ZmZlciwgdmlldywgZGVjb2Rlcikge1xuICAgIGxldCBqb2luUmVmU2l6ZSA9IHZpZXcuZ2V0VWludDgoMSk7XG4gICAgbGV0IHJlZlNpemUgPSB2aWV3LmdldFVpbnQ4KDIpO1xuICAgIGxldCB0b3BpY1NpemUgPSB2aWV3LmdldFVpbnQ4KDMpO1xuICAgIGxldCBldmVudFNpemUgPSB2aWV3LmdldFVpbnQ4KDQpO1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLkhFQURFUl9MRU5HVEggKyB0aGlzLk1FVEFfTEVOR1RIO1xuICAgIGxldCBqb2luUmVmID0gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgam9pblJlZlNpemUpKTtcbiAgICBvZmZzZXQgPSBvZmZzZXQgKyBqb2luUmVmU2l6ZTtcbiAgICBsZXQgcmVmID0gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgcmVmU2l6ZSkpO1xuICAgIG9mZnNldCA9IG9mZnNldCArIHJlZlNpemU7XG4gICAgbGV0IHRvcGljID0gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgdG9waWNTaXplKSk7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0ICsgdG9waWNTaXplO1xuICAgIGxldCBldmVudCA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlci5zbGljZShvZmZzZXQsIG9mZnNldCArIGV2ZW50U2l6ZSkpO1xuICAgIG9mZnNldCA9IG9mZnNldCArIGV2ZW50U2l6ZTtcbiAgICBsZXQgZGF0YSA9IGJ1ZmZlci5zbGljZShvZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICBsZXQgcGF5bG9hZCA9IHsgc3RhdHVzOiBldmVudCwgcmVzcG9uc2U6IGRhdGEgfTtcbiAgICByZXR1cm4geyBqb2luX3JlZjogam9pblJlZiwgcmVmLCB0b3BpYywgZXZlbnQ6IENIQU5ORUxfRVZFTlRTLnJlcGx5LCBwYXlsb2FkIH07XG4gIH0sXG4gIGRlY29kZUJyb2FkY2FzdChidWZmZXIsIHZpZXcsIGRlY29kZXIpIHtcbiAgICBsZXQgdG9waWNTaXplID0gdmlldy5nZXRVaW50OCgxKTtcbiAgICBsZXQgZXZlbnRTaXplID0gdmlldy5nZXRVaW50OCgyKTtcbiAgICBsZXQgb2Zmc2V0ID0gdGhpcy5IRUFERVJfTEVOR1RIICsgMjtcbiAgICBsZXQgdG9waWMgPSBkZWNvZGVyLmRlY29kZShidWZmZXIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyB0b3BpY1NpemUpKTtcbiAgICBvZmZzZXQgPSBvZmZzZXQgKyB0b3BpY1NpemU7XG4gICAgbGV0IGV2ZW50ID0gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgZXZlbnRTaXplKSk7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0ICsgZXZlbnRTaXplO1xuICAgIGxldCBkYXRhID0gYnVmZmVyLnNsaWNlKG9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgIHJldHVybiB7IGpvaW5fcmVmOiBudWxsLCByZWY6IG51bGwsIHRvcGljLCBldmVudCwgcGF5bG9hZDogZGF0YSB9O1xuICB9XG59O1xuXG4vLyBqcy9waG9lbml4L3NvY2tldC5qc1xudmFyIFNvY2tldCA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoZW5kUG9pbnQsIG9wdHMgPSB7fSkge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VDYWxsYmFja3MgPSB7IG9wZW46IFtdLCBjbG9zZTogW10sIGVycm9yOiBbXSwgbWVzc2FnZTogW10gfTtcbiAgICB0aGlzLmNoYW5uZWxzID0gW107XG4gICAgdGhpcy5zZW5kQnVmZmVyID0gW107XG4gICAgdGhpcy5yZWYgPSAwO1xuICAgIHRoaXMudGltZW91dCA9IG9wdHMudGltZW91dCB8fCBERUZBVUxUX1RJTUVPVVQ7XG4gICAgdGhpcy50cmFuc3BvcnQgPSBvcHRzLnRyYW5zcG9ydCB8fCBnbG9iYWwuV2ViU29ja2V0IHx8IExvbmdQb2xsO1xuICAgIHRoaXMuZXN0YWJsaXNoZWRDb25uZWN0aW9ucyA9IDA7XG4gICAgdGhpcy5kZWZhdWx0RW5jb2RlciA9IHNlcmlhbGl6ZXJfZGVmYXVsdC5lbmNvZGUuYmluZChzZXJpYWxpemVyX2RlZmF1bHQpO1xuICAgIHRoaXMuZGVmYXVsdERlY29kZXIgPSBzZXJpYWxpemVyX2RlZmF1bHQuZGVjb2RlLmJpbmQoc2VyaWFsaXplcl9kZWZhdWx0KTtcbiAgICB0aGlzLmNsb3NlV2FzQ2xlYW4gPSBmYWxzZTtcbiAgICB0aGlzLmJpbmFyeVR5cGUgPSBvcHRzLmJpbmFyeVR5cGUgfHwgXCJhcnJheWJ1ZmZlclwiO1xuICAgIHRoaXMuY29ubmVjdENsb2NrID0gMTtcbiAgICBpZiAodGhpcy50cmFuc3BvcnQgIT09IExvbmdQb2xsKSB7XG4gICAgICB0aGlzLmVuY29kZSA9IG9wdHMuZW5jb2RlIHx8IHRoaXMuZGVmYXVsdEVuY29kZXI7XG4gICAgICB0aGlzLmRlY29kZSA9IG9wdHMuZGVjb2RlIHx8IHRoaXMuZGVmYXVsdERlY29kZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5jb2RlID0gdGhpcy5kZWZhdWx0RW5jb2RlcjtcbiAgICAgIHRoaXMuZGVjb2RlID0gdGhpcy5kZWZhdWx0RGVjb2RlcjtcbiAgICB9XG4gICAgbGV0IGF3YWl0aW5nQ29ubmVjdGlvbk9uUGFnZVNob3cgPSBudWxsO1xuICAgIGlmIChwaHhXaW5kb3cgJiYgcGh4V2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHBoeFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgKF9lKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbm4pIHtcbiAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBhd2FpdGluZ0Nvbm5lY3Rpb25PblBhZ2VTaG93ID0gdGhpcy5jb25uZWN0Q2xvY2s7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcGh4V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJwYWdlc2hvd1wiLCAoX2UpID0+IHtcbiAgICAgICAgaWYgKGF3YWl0aW5nQ29ubmVjdGlvbk9uUGFnZVNob3cgPT09IHRoaXMuY29ubmVjdENsb2NrKSB7XG4gICAgICAgICAgYXdhaXRpbmdDb25uZWN0aW9uT25QYWdlU2hvdyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5jb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmhlYXJ0YmVhdEludGVydmFsTXMgPSBvcHRzLmhlYXJ0YmVhdEludGVydmFsTXMgfHwgM2U0O1xuICAgIHRoaXMucmVqb2luQWZ0ZXJNcyA9ICh0cmllcykgPT4ge1xuICAgICAgaWYgKG9wdHMucmVqb2luQWZ0ZXJNcykge1xuICAgICAgICByZXR1cm4gb3B0cy5yZWpvaW5BZnRlck1zKHRyaWVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbMWUzLCAyZTMsIDVlM11bdHJpZXMgLSAxXSB8fCAxZTQ7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnJlY29ubmVjdEFmdGVyTXMgPSAodHJpZXMpID0+IHtcbiAgICAgIGlmIChvcHRzLnJlY29ubmVjdEFmdGVyTXMpIHtcbiAgICAgICAgcmV0dXJuIG9wdHMucmVjb25uZWN0QWZ0ZXJNcyh0cmllcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gWzEwLCA1MCwgMTAwLCAxNTAsIDIwMCwgMjUwLCA1MDAsIDFlMywgMmUzXVt0cmllcyAtIDFdIHx8IDVlMztcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMubG9nZ2VyID0gb3B0cy5sb2dnZXIgfHwgbnVsbDtcbiAgICB0aGlzLmxvbmdwb2xsZXJUaW1lb3V0ID0gb3B0cy5sb25ncG9sbGVyVGltZW91dCB8fCAyZTQ7XG4gICAgdGhpcy5wYXJhbXMgPSBjbG9zdXJlKG9wdHMucGFyYW1zIHx8IHt9KTtcbiAgICB0aGlzLmVuZFBvaW50ID0gYCR7ZW5kUG9pbnR9LyR7VFJBTlNQT1JUUy53ZWJzb2NrZXR9YDtcbiAgICB0aGlzLnZzbiA9IG9wdHMudnNuIHx8IERFRkFVTFRfVlNOO1xuICAgIHRoaXMuaGVhcnRiZWF0VGltZXIgPSBudWxsO1xuICAgIHRoaXMucGVuZGluZ0hlYXJ0YmVhdFJlZiA9IG51bGw7XG4gICAgdGhpcy5yZWNvbm5lY3RUaW1lciA9IG5ldyBUaW1lcigoKSA9PiB7XG4gICAgICB0aGlzLnRlYXJkb3duKCgpID0+IHRoaXMuY29ubmVjdCgpKTtcbiAgICB9LCB0aGlzLnJlY29ubmVjdEFmdGVyTXMpO1xuICB9XG4gIHJlcGxhY2VUcmFuc3BvcnQobmV3VHJhbnNwb3J0KSB7XG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy50cmFuc3BvcnQgPSBuZXdUcmFuc3BvcnQ7XG4gIH1cbiAgcHJvdG9jb2woKSB7XG4gICAgcmV0dXJuIGxvY2F0aW9uLnByb3RvY29sLm1hdGNoKC9eaHR0cHMvKSA/IFwid3NzXCIgOiBcIndzXCI7XG4gIH1cbiAgZW5kUG9pbnRVUkwoKSB7XG4gICAgbGV0IHVyaSA9IEFqYXguYXBwZW5kUGFyYW1zKEFqYXguYXBwZW5kUGFyYW1zKHRoaXMuZW5kUG9pbnQsIHRoaXMucGFyYW1zKCkpLCB7IHZzbjogdGhpcy52c24gfSk7XG4gICAgaWYgKHVyaS5jaGFyQXQoMCkgIT09IFwiL1wiKSB7XG4gICAgICByZXR1cm4gdXJpO1xuICAgIH1cbiAgICBpZiAodXJpLmNoYXJBdCgxKSA9PT0gXCIvXCIpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLnByb3RvY29sKCl9OiR7dXJpfWA7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLnByb3RvY29sKCl9Oi8vJHtsb2NhdGlvbi5ob3N0fSR7dXJpfWA7XG4gIH1cbiAgZGlzY29ubmVjdChjYWxsYmFjaywgY29kZSwgcmVhc29uKSB7XG4gICAgdGhpcy5jb25uZWN0Q2xvY2srKztcbiAgICB0aGlzLmNsb3NlV2FzQ2xlYW4gPSB0cnVlO1xuICAgIHRoaXMucmVjb25uZWN0VGltZXIucmVzZXQoKTtcbiAgICB0aGlzLnRlYXJkb3duKGNhbGxiYWNrLCBjb2RlLCByZWFzb24pO1xuICB9XG4gIGNvbm5lY3QocGFyYW1zKSB7XG4gICAgdGhpcy5jb25uZWN0Q2xvY2srKztcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBjb25zb2xlICYmIGNvbnNvbGUubG9nKFwicGFzc2luZyBwYXJhbXMgdG8gY29ubmVjdCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkIHBhc3MgOnBhcmFtcyB0byB0aGUgU29ja2V0IGNvbnN0cnVjdG9yXCIpO1xuICAgICAgdGhpcy5wYXJhbXMgPSBjbG9zdXJlKHBhcmFtcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbG9zZVdhc0NsZWFuID0gZmFsc2U7XG4gICAgdGhpcy5jb25uID0gbmV3IHRoaXMudHJhbnNwb3J0KHRoaXMuZW5kUG9pbnRVUkwoKSk7XG4gICAgdGhpcy5jb25uLmJpbmFyeVR5cGUgPSB0aGlzLmJpbmFyeVR5cGU7XG4gICAgdGhpcy5jb25uLnRpbWVvdXQgPSB0aGlzLmxvbmdwb2xsZXJUaW1lb3V0O1xuICAgIHRoaXMuY29ubi5vbm9wZW4gPSAoKSA9PiB0aGlzLm9uQ29ubk9wZW4oKTtcbiAgICB0aGlzLmNvbm4ub25lcnJvciA9IChlcnJvcikgPT4gdGhpcy5vbkNvbm5FcnJvcihlcnJvcik7XG4gICAgdGhpcy5jb25uLm9ubWVzc2FnZSA9IChldmVudCkgPT4gdGhpcy5vbkNvbm5NZXNzYWdlKGV2ZW50KTtcbiAgICB0aGlzLmNvbm4ub25jbG9zZSA9IChldmVudCkgPT4gdGhpcy5vbkNvbm5DbG9zZShldmVudCk7XG4gIH1cbiAgbG9nKGtpbmQsIG1zZywgZGF0YSkge1xuICAgIHRoaXMubG9nZ2VyKGtpbmQsIG1zZywgZGF0YSk7XG4gIH1cbiAgaGFzTG9nZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLmxvZ2dlciAhPT0gbnVsbDtcbiAgfVxuICBvbk9wZW4oY2FsbGJhY2spIHtcbiAgICBsZXQgcmVmID0gdGhpcy5tYWtlUmVmKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZUNhbGxiYWNrcy5vcGVuLnB1c2goW3JlZiwgY2FsbGJhY2tdKTtcbiAgICByZXR1cm4gcmVmO1xuICB9XG4gIG9uQ2xvc2UoY2FsbGJhY2spIHtcbiAgICBsZXQgcmVmID0gdGhpcy5tYWtlUmVmKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZUNhbGxiYWNrcy5jbG9zZS5wdXNoKFtyZWYsIGNhbGxiYWNrXSk7XG4gICAgcmV0dXJuIHJlZjtcbiAgfVxuICBvbkVycm9yKGNhbGxiYWNrKSB7XG4gICAgbGV0IHJlZiA9IHRoaXMubWFrZVJlZigpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VDYWxsYmFja3MuZXJyb3IucHVzaChbcmVmLCBjYWxsYmFja10pO1xuICAgIHJldHVybiByZWY7XG4gIH1cbiAgb25NZXNzYWdlKGNhbGxiYWNrKSB7XG4gICAgbGV0IHJlZiA9IHRoaXMubWFrZVJlZigpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VDYWxsYmFja3MubWVzc2FnZS5wdXNoKFtyZWYsIGNhbGxiYWNrXSk7XG4gICAgcmV0dXJuIHJlZjtcbiAgfVxuICBvbkNvbm5PcGVuKCkge1xuICAgIGlmICh0aGlzLmhhc0xvZ2dlcigpKVxuICAgICAgdGhpcy5sb2coXCJ0cmFuc3BvcnRcIiwgYGNvbm5lY3RlZCB0byAke3RoaXMuZW5kUG9pbnRVUkwoKX1gKTtcbiAgICB0aGlzLmNsb3NlV2FzQ2xlYW4gPSBmYWxzZTtcbiAgICB0aGlzLmVzdGFibGlzaGVkQ29ubmVjdGlvbnMrKztcbiAgICB0aGlzLmZsdXNoU2VuZEJ1ZmZlcigpO1xuICAgIHRoaXMucmVjb25uZWN0VGltZXIucmVzZXQoKTtcbiAgICB0aGlzLnJlc2V0SGVhcnRiZWF0KCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZUNhbGxiYWNrcy5vcGVuLmZvckVhY2goKFssIGNhbGxiYWNrXSkgPT4gY2FsbGJhY2soKSk7XG4gIH1cbiAgaGVhcnRiZWF0VGltZW91dCgpIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nSGVhcnRiZWF0UmVmKSB7XG4gICAgICB0aGlzLnBlbmRpbmdIZWFydGJlYXRSZWYgPSBudWxsO1xuICAgICAgaWYgKHRoaXMuaGFzTG9nZ2VyKCkpIHtcbiAgICAgICAgdGhpcy5sb2coXCJ0cmFuc3BvcnRcIiwgXCJoZWFydGJlYXQgdGltZW91dC4gQXR0ZW1wdGluZyB0byByZS1lc3RhYmxpc2ggY29ubmVjdGlvblwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWJub3JtYWxDbG9zZShcImhlYXJ0YmVhdCB0aW1lb3V0XCIpO1xuICAgIH1cbiAgfVxuICByZXNldEhlYXJ0YmVhdCgpIHtcbiAgICBpZiAodGhpcy5jb25uICYmIHRoaXMuY29ubi5za2lwSGVhcnRiZWF0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGVuZGluZ0hlYXJ0YmVhdFJlZiA9IG51bGw7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVhcnRiZWF0VGltZXIpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZW5kSGVhcnRiZWF0KCksIHRoaXMuaGVhcnRiZWF0SW50ZXJ2YWxNcyk7XG4gIH1cbiAgdGVhcmRvd24oY2FsbGJhY2ssIGNvZGUsIHJlYXNvbikge1xuICAgIGlmICghdGhpcy5jb25uKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICB9XG4gICAgdGhpcy53YWl0Rm9yQnVmZmVyRG9uZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25uKSB7XG4gICAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgICAgdGhpcy5jb25uLmNsb3NlKGNvZGUsIHJlYXNvbiB8fCBcIlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbm4uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy53YWl0Rm9yU29ja2V0Q2xvc2VkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29ubikge1xuICAgICAgICAgIHRoaXMuY29ubi5vbmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmNvbm4gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICB3YWl0Rm9yQnVmZmVyRG9uZShjYWxsYmFjaywgdHJpZXMgPSAxKSB7XG4gICAgaWYgKHRyaWVzID09PSA1IHx8ICF0aGlzLmNvbm4gfHwgIXRoaXMuY29ubi5idWZmZXJlZEFtb3VudCkge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLndhaXRGb3JCdWZmZXJEb25lKGNhbGxiYWNrLCB0cmllcyArIDEpO1xuICAgIH0sIDE1MCAqIHRyaWVzKTtcbiAgfVxuICB3YWl0Rm9yU29ja2V0Q2xvc2VkKGNhbGxiYWNrLCB0cmllcyA9IDEpIHtcbiAgICBpZiAodHJpZXMgPT09IDUgfHwgIXRoaXMuY29ubiB8fCB0aGlzLmNvbm4ucmVhZHlTdGF0ZSA9PT0gU09DS0VUX1NUQVRFUy5jbG9zZWQpIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy53YWl0Rm9yU29ja2V0Q2xvc2VkKGNhbGxiYWNrLCB0cmllcyArIDEpO1xuICAgIH0sIDE1MCAqIHRyaWVzKTtcbiAgfVxuICBvbkNvbm5DbG9zZShldmVudCkge1xuICAgIGlmICh0aGlzLmhhc0xvZ2dlcigpKVxuICAgICAgdGhpcy5sb2coXCJ0cmFuc3BvcnRcIiwgXCJjbG9zZVwiLCBldmVudCk7XG4gICAgdGhpcy50cmlnZ2VyQ2hhbkVycm9yKCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVhcnRiZWF0VGltZXIpO1xuICAgIGlmICghdGhpcy5jbG9zZVdhc0NsZWFuKSB7XG4gICAgICB0aGlzLnJlY29ubmVjdFRpbWVyLnNjaGVkdWxlVGltZW91dCgpO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmNsb3NlLmZvckVhY2goKFssIGNhbGxiYWNrXSkgPT4gY2FsbGJhY2soZXZlbnQpKTtcbiAgfVxuICBvbkNvbm5FcnJvcihlcnJvcikge1xuICAgIGlmICh0aGlzLmhhc0xvZ2dlcigpKVxuICAgICAgdGhpcy5sb2coXCJ0cmFuc3BvcnRcIiwgZXJyb3IpO1xuICAgIGxldCB0cmFuc3BvcnRCZWZvcmUgPSB0aGlzLnRyYW5zcG9ydDtcbiAgICBsZXQgZXN0YWJsaXNoZWRCZWZvcmUgPSB0aGlzLmVzdGFibGlzaGVkQ29ubmVjdGlvbnM7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZUNhbGxiYWNrcy5lcnJvci5mb3JFYWNoKChbLCBjYWxsYmFja10pID0+IHtcbiAgICAgIGNhbGxiYWNrKGVycm9yLCB0cmFuc3BvcnRCZWZvcmUsIGVzdGFibGlzaGVkQmVmb3JlKTtcbiAgICB9KTtcbiAgICBpZiAodHJhbnNwb3J0QmVmb3JlID09PSB0aGlzLnRyYW5zcG9ydCB8fCBlc3RhYmxpc2hlZEJlZm9yZSA+IDApIHtcbiAgICAgIHRoaXMudHJpZ2dlckNoYW5FcnJvcigpO1xuICAgIH1cbiAgfVxuICB0cmlnZ2VyQ2hhbkVycm9yKCkge1xuICAgIHRoaXMuY2hhbm5lbHMuZm9yRWFjaCgoY2hhbm5lbCkgPT4ge1xuICAgICAgaWYgKCEoY2hhbm5lbC5pc0Vycm9yZWQoKSB8fCBjaGFubmVsLmlzTGVhdmluZygpIHx8IGNoYW5uZWwuaXNDbG9zZWQoKSkpIHtcbiAgICAgICAgY2hhbm5lbC50cmlnZ2VyKENIQU5ORUxfRVZFTlRTLmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBjb25uZWN0aW9uU3RhdGUoKSB7XG4gICAgc3dpdGNoICh0aGlzLmNvbm4gJiYgdGhpcy5jb25uLnJlYWR5U3RhdGUpIHtcbiAgICAgIGNhc2UgU09DS0VUX1NUQVRFUy5jb25uZWN0aW5nOlxuICAgICAgICByZXR1cm4gXCJjb25uZWN0aW5nXCI7XG4gICAgICBjYXNlIFNPQ0tFVF9TVEFURVMub3BlbjpcbiAgICAgICAgcmV0dXJuIFwib3BlblwiO1xuICAgICAgY2FzZSBTT0NLRVRfU1RBVEVTLmNsb3Npbmc6XG4gICAgICAgIHJldHVybiBcImNsb3NpbmdcIjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBcImNsb3NlZFwiO1xuICAgIH1cbiAgfVxuICBpc0Nvbm5lY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uU3RhdGUoKSA9PT0gXCJvcGVuXCI7XG4gIH1cbiAgcmVtb3ZlKGNoYW5uZWwpIHtcbiAgICB0aGlzLm9mZihjaGFubmVsLnN0YXRlQ2hhbmdlUmVmcyk7XG4gICAgdGhpcy5jaGFubmVscyA9IHRoaXMuY2hhbm5lbHMuZmlsdGVyKChjKSA9PiBjLmpvaW5SZWYoKSAhPT0gY2hhbm5lbC5qb2luUmVmKCkpO1xuICB9XG4gIG9mZihyZWZzKSB7XG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuc3RhdGVDaGFuZ2VDYWxsYmFja3MpIHtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VDYWxsYmFja3Nba2V5XSA9IHRoaXMuc3RhdGVDaGFuZ2VDYWxsYmFja3Nba2V5XS5maWx0ZXIoKFtyZWZdKSA9PiB7XG4gICAgICAgIHJldHVybiByZWZzLmluZGV4T2YocmVmKSA9PT0gLTE7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY2hhbm5lbCh0b3BpYywgY2hhblBhcmFtcyA9IHt9KSB7XG4gICAgbGV0IGNoYW4gPSBuZXcgQ2hhbm5lbCh0b3BpYywgY2hhblBhcmFtcywgdGhpcyk7XG4gICAgdGhpcy5jaGFubmVscy5wdXNoKGNoYW4pO1xuICAgIHJldHVybiBjaGFuO1xuICB9XG4gIHB1c2goZGF0YSkge1xuICAgIGlmICh0aGlzLmhhc0xvZ2dlcigpKSB7XG4gICAgICBsZXQgeyB0b3BpYywgZXZlbnQsIHBheWxvYWQsIHJlZiwgam9pbl9yZWYgfSA9IGRhdGE7XG4gICAgICB0aGlzLmxvZyhcInB1c2hcIiwgYCR7dG9waWN9ICR7ZXZlbnR9ICgke2pvaW5fcmVmfSwgJHtyZWZ9KWAsIHBheWxvYWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCgpKSB7XG4gICAgICB0aGlzLmVuY29kZShkYXRhLCAocmVzdWx0KSA9PiB0aGlzLmNvbm4uc2VuZChyZXN1bHQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZW5kQnVmZmVyLnB1c2goKCkgPT4gdGhpcy5lbmNvZGUoZGF0YSwgKHJlc3VsdCkgPT4gdGhpcy5jb25uLnNlbmQocmVzdWx0KSkpO1xuICAgIH1cbiAgfVxuICBtYWtlUmVmKCkge1xuICAgIGxldCBuZXdSZWYgPSB0aGlzLnJlZiArIDE7XG4gICAgaWYgKG5ld1JlZiA9PT0gdGhpcy5yZWYpIHtcbiAgICAgIHRoaXMucmVmID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWYgPSBuZXdSZWY7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlZi50b1N0cmluZygpO1xuICB9XG4gIHNlbmRIZWFydGJlYXQoKSB7XG4gICAgaWYgKHRoaXMucGVuZGluZ0hlYXJ0YmVhdFJlZiAmJiAhdGhpcy5pc0Nvbm5lY3RlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGVuZGluZ0hlYXJ0YmVhdFJlZiA9IHRoaXMubWFrZVJlZigpO1xuICAgIHRoaXMucHVzaCh7IHRvcGljOiBcInBob2VuaXhcIiwgZXZlbnQ6IFwiaGVhcnRiZWF0XCIsIHBheWxvYWQ6IHt9LCByZWY6IHRoaXMucGVuZGluZ0hlYXJ0YmVhdFJlZiB9KTtcbiAgICB0aGlzLmhlYXJ0YmVhdFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmhlYXJ0YmVhdFRpbWVvdXQoKSwgdGhpcy5oZWFydGJlYXRJbnRlcnZhbE1zKTtcbiAgfVxuICBhYm5vcm1hbENsb3NlKHJlYXNvbikge1xuICAgIHRoaXMuY2xvc2VXYXNDbGVhbiA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmlzQ29ubmVjdGVkKCkpIHtcbiAgICAgIHRoaXMuY29ubi5jbG9zZShXU19DTE9TRV9OT1JNQUwsIHJlYXNvbik7XG4gICAgfVxuICB9XG4gIGZsdXNoU2VuZEJ1ZmZlcigpIHtcbiAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCgpICYmIHRoaXMuc2VuZEJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbmRCdWZmZXIuZm9yRWFjaCgoY2FsbGJhY2spID0+IGNhbGxiYWNrKCkpO1xuICAgICAgdGhpcy5zZW5kQnVmZmVyID0gW107XG4gICAgfVxuICB9XG4gIG9uQ29ubk1lc3NhZ2UocmF3TWVzc2FnZSkge1xuICAgIHRoaXMuZGVjb2RlKHJhd01lc3NhZ2UuZGF0YSwgKG1zZykgPT4ge1xuICAgICAgbGV0IHsgdG9waWMsIGV2ZW50LCBwYXlsb2FkLCByZWYsIGpvaW5fcmVmIH0gPSBtc2c7XG4gICAgICBpZiAocmVmICYmIHJlZiA9PT0gdGhpcy5wZW5kaW5nSGVhcnRiZWF0UmVmKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhlYXJ0YmVhdFRpbWVyKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nSGVhcnRiZWF0UmVmID0gbnVsbDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbmRIZWFydGJlYXQoKSwgdGhpcy5oZWFydGJlYXRJbnRlcnZhbE1zKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhhc0xvZ2dlcigpKVxuICAgICAgICB0aGlzLmxvZyhcInJlY2VpdmVcIiwgYCR7cGF5bG9hZC5zdGF0dXMgfHwgXCJcIn0gJHt0b3BpY30gJHtldmVudH0gJHtyZWYgJiYgXCIoXCIgKyByZWYgKyBcIilcIiB8fCBcIlwifWAsIHBheWxvYWQpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNoYW5uZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmNoYW5uZWxzW2ldO1xuICAgICAgICBpZiAoIWNoYW5uZWwuaXNNZW1iZXIodG9waWMsIGV2ZW50LCBwYXlsb2FkLCBqb2luX3JlZikpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjaGFubmVsLnRyaWdnZXIoZXZlbnQsIHBheWxvYWQsIHJlZiwgam9pbl9yZWYpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YXRlQ2hhbmdlQ2FsbGJhY2tzLm1lc3NhZ2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IFssIGNhbGxiYWNrXSA9IHRoaXMuc3RhdGVDaGFuZ2VDYWxsYmFja3MubWVzc2FnZVtpXTtcbiAgICAgICAgY2FsbGJhY2sobXNnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBsZWF2ZU9wZW5Ub3BpYyh0b3BpYykge1xuICAgIGxldCBkdXBDaGFubmVsID0gdGhpcy5jaGFubmVscy5maW5kKChjKSA9PiBjLnRvcGljID09PSB0b3BpYyAmJiAoYy5pc0pvaW5lZCgpIHx8IGMuaXNKb2luaW5nKCkpKTtcbiAgICBpZiAoZHVwQ2hhbm5lbCkge1xuICAgICAgaWYgKHRoaXMuaGFzTG9nZ2VyKCkpXG4gICAgICAgIHRoaXMubG9nKFwidHJhbnNwb3J0XCIsIGBsZWF2aW5nIGR1cGxpY2F0ZSB0b3BpYyBcIiR7dG9waWN9XCJgKTtcbiAgICAgIGR1cENoYW5uZWwubGVhdmUoKTtcbiAgICB9XG4gIH1cbn07XG5leHBvcnQge1xuICBDaGFubmVsLFxuICBMb25nUG9sbCxcbiAgUHJlc2VuY2UsXG4gIHNlcmlhbGl6ZXJfZGVmYXVsdCBhcyBTZXJpYWxpemVyLFxuICBTb2NrZXRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1waG9lbml4LmVzbS5qcy5tYXBcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/phoenix/priv/static/phoenix.esm.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/pointer-tracker/dist/PointerTracker.mjs":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/pointer-tracker/dist/PointerTracker.mjs ***!
|
||
\**************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\nclass Pointer {\r\n constructor(nativePointer) {\r\n /** Unique ID for this pointer */\r\n this.id = -1;\r\n this.nativePointer = nativePointer;\r\n this.pageX = nativePointer.pageX;\r\n this.pageY = nativePointer.pageY;\r\n this.clientX = nativePointer.clientX;\r\n this.clientY = nativePointer.clientY;\r\n if (self.Touch && nativePointer instanceof Touch) {\r\n this.id = nativePointer.identifier;\r\n }\r\n else if (isPointerEvent(nativePointer)) {\r\n // is PointerEvent\r\n this.id = nativePointer.pointerId;\r\n }\r\n }\r\n /**\r\n * Returns an expanded set of Pointers for high-resolution inputs.\r\n */\r\n getCoalesced() {\r\n if ('getCoalescedEvents' in this.nativePointer) {\r\n return this.nativePointer.getCoalescedEvents().map((p) => new Pointer(p));\r\n }\r\n return [this];\r\n }\r\n}\r\nconst isPointerEvent = (event) => self.PointerEvent && event instanceof PointerEvent;\r\nconst noop = () => { };\r\n/**\r\n * Track pointers across a particular element\r\n */\r\nclass PointerTracker {\r\n /**\r\n * Track pointers across a particular element\r\n *\r\n * @param element Element to monitor.\r\n * @param options\r\n */\r\n constructor(_element, { start = () => true, move = noop, end = noop, rawUpdates = false, } = {}) {\r\n this._element = _element;\r\n /**\r\n * State of the tracked pointers when they were pressed/touched.\r\n */\r\n this.startPointers = [];\r\n /**\r\n * Latest state of the tracked pointers. Contains the same number of pointers, and in the same\r\n * order as this.startPointers.\r\n */\r\n this.currentPointers = [];\r\n /**\r\n * Listener for mouse/pointer starts.\r\n *\r\n * @param event This will only be a MouseEvent if the browser doesn't support pointer events.\r\n */\r\n this._pointerStart = (event) => {\r\n if (event.button !== 0 /* Left */)\r\n return;\r\n if (!this._triggerPointerStart(new Pointer(event), event))\r\n return;\r\n // Add listeners for additional events.\r\n // The listeners may already exist, but no harm in adding them again.\r\n if (isPointerEvent(event)) {\r\n const capturingElement = event.target && 'setPointerCapture' in event.target\r\n ? event.target\r\n : this._element;\r\n capturingElement.setPointerCapture(event.pointerId);\r\n this._element.addEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.addEventListener('pointerup', this._pointerEnd);\r\n this._element.addEventListener('pointercancel', this._pointerEnd);\r\n }\r\n else {\r\n // MouseEvent\r\n window.addEventListener('mousemove', this._move);\r\n window.addEventListener('mouseup', this._pointerEnd);\r\n }\r\n };\r\n /**\r\n * Listener for touchstart.\r\n * Only used if the browser doesn't support pointer events.\r\n */\r\n this._touchStart = (event) => {\r\n for (const touch of Array.from(event.changedTouches)) {\r\n this._triggerPointerStart(new Pointer(touch), event);\r\n }\r\n };\r\n /**\r\n * Listener for pointer/mouse/touch move events.\r\n */\r\n this._move = (event) => {\r\n const previousPointers = this.currentPointers.slice();\r\n const changedPointers = 'changedTouches' in event // Shortcut for 'is touch event'.\r\n ? Array.from(event.changedTouches).map((t) => new Pointer(t))\r\n : [new Pointer(event)];\r\n const trackedChangedPointers = [];\r\n for (const pointer of changedPointers) {\r\n const index = this.currentPointers.findIndex((p) => p.id === pointer.id);\r\n if (index === -1)\r\n continue; // Not a pointer we're tracking\r\n trackedChangedPointers.push(pointer);\r\n this.currentPointers[index] = pointer;\r\n }\r\n if (trackedChangedPointers.length === 0)\r\n return;\r\n this._moveCallback(previousPointers, trackedChangedPointers, event);\r\n };\r\n /**\r\n * Call the end callback for this pointer.\r\n *\r\n * @param pointer Pointer\r\n * @param event Related event\r\n */\r\n this._triggerPointerEnd = (pointer, event) => {\r\n const index = this.currentPointers.findIndex((p) => p.id === pointer.id);\r\n // Not a pointer we're interested in?\r\n if (index === -1)\r\n return false;\r\n this.currentPointers.splice(index, 1);\r\n this.startPointers.splice(index, 1);\r\n const cancelled = event.type === 'touchcancel' || event.type === 'pointercancel';\r\n this._endCallback(pointer, event, cancelled);\r\n return true;\r\n };\r\n /**\r\n * Listener for mouse/pointer ends.\r\n *\r\n * @param event This will only be a MouseEvent if the browser doesn't support pointer events.\r\n */\r\n this._pointerEnd = (event) => {\r\n if (!this._triggerPointerEnd(new Pointer(event), event))\r\n return;\r\n if (isPointerEvent(event)) {\r\n if (this.currentPointers.length)\r\n return;\r\n this._element.removeEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.removeEventListener('pointerup', this._pointerEnd);\r\n this._element.removeEventListener('pointercancel', this._pointerEnd);\r\n }\r\n else {\r\n // MouseEvent\r\n window.removeEventListener('mousemove', this._move);\r\n window.removeEventListener('mouseup', this._pointerEnd);\r\n }\r\n };\r\n /**\r\n * Listener for touchend.\r\n * Only used if the browser doesn't support pointer events.\r\n */\r\n this._touchEnd = (event) => {\r\n for (const touch of Array.from(event.changedTouches)) {\r\n this._triggerPointerEnd(new Pointer(touch), event);\r\n }\r\n };\r\n this._startCallback = start;\r\n this._moveCallback = move;\r\n this._endCallback = end;\r\n this._rawUpdates = rawUpdates && 'onpointerrawupdate' in window;\r\n // Add listeners\r\n if (self.PointerEvent) {\r\n this._element.addEventListener('pointerdown', this._pointerStart);\r\n }\r\n else {\r\n this._element.addEventListener('mousedown', this._pointerStart);\r\n this._element.addEventListener('touchstart', this._touchStart);\r\n this._element.addEventListener('touchmove', this._move);\r\n this._element.addEventListener('touchend', this._touchEnd);\r\n this._element.addEventListener('touchcancel', this._touchEnd);\r\n }\r\n }\r\n /**\r\n * Remove all listeners.\r\n */\r\n stop() {\r\n this._element.removeEventListener('pointerdown', this._pointerStart);\r\n this._element.removeEventListener('mousedown', this._pointerStart);\r\n this._element.removeEventListener('touchstart', this._touchStart);\r\n this._element.removeEventListener('touchmove', this._move);\r\n this._element.removeEventListener('touchend', this._touchEnd);\r\n this._element.removeEventListener('touchcancel', this._touchEnd);\r\n this._element.removeEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.removeEventListener('pointerup', this._pointerEnd);\r\n this._element.removeEventListener('pointercancel', this._pointerEnd);\r\n window.removeEventListener('mousemove', this._move);\r\n window.removeEventListener('mouseup', this._pointerEnd);\r\n }\r\n /**\r\n * Call the start callback for this pointer, and track it if the user wants.\r\n *\r\n * @param pointer Pointer\r\n * @param event Related event\r\n * @returns Whether the pointer is being tracked.\r\n */\r\n _triggerPointerStart(pointer, event) {\r\n if (!this._startCallback(pointer, event))\r\n return false;\r\n this.currentPointers.push(pointer);\r\n this.startPointers.push(pointer);\r\n return true;\r\n }\r\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (PointerTracker);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcG9pbnRlci10cmFja2VyL2Rpc3QvUG9pbnRlclRyYWNrZXIubWpzP2FiNTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixtRUFBbUUsS0FBSztBQUNuRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLDZFQUFjLEVBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcG9pbnRlci10cmFja2VyL2Rpc3QvUG9pbnRlclRyYWNrZXIubWpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgUG9pbnRlciB7XHJcbiAgICBjb25zdHJ1Y3RvcihuYXRpdmVQb2ludGVyKSB7XHJcbiAgICAgICAgLyoqIFVuaXF1ZSBJRCBmb3IgdGhpcyBwb2ludGVyICovXHJcbiAgICAgICAgdGhpcy5pZCA9IC0xO1xyXG4gICAgICAgIHRoaXMubmF0aXZlUG9pbnRlciA9IG5hdGl2ZVBvaW50ZXI7XHJcbiAgICAgICAgdGhpcy5wYWdlWCA9IG5hdGl2ZVBvaW50ZXIucGFnZVg7XHJcbiAgICAgICAgdGhpcy5wYWdlWSA9IG5hdGl2ZVBvaW50ZXIucGFnZVk7XHJcbiAgICAgICAgdGhpcy5jbGllbnRYID0gbmF0aXZlUG9pbnRlci5jbGllbnRYO1xyXG4gICAgICAgIHRoaXMuY2xpZW50WSA9IG5hdGl2ZVBvaW50ZXIuY2xpZW50WTtcclxuICAgICAgICBpZiAoc2VsZi5Ub3VjaCAmJiBuYXRpdmVQb2ludGVyIGluc3RhbmNlb2YgVG91Y2gpIHtcclxuICAgICAgICAgICAgdGhpcy5pZCA9IG5hdGl2ZVBvaW50ZXIuaWRlbnRpZmllcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNQb2ludGVyRXZlbnQobmF0aXZlUG9pbnRlcikpIHtcclxuICAgICAgICAgICAgLy8gaXMgUG9pbnRlckV2ZW50XHJcbiAgICAgICAgICAgIHRoaXMuaWQgPSBuYXRpdmVQb2ludGVyLnBvaW50ZXJJZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYW4gZXhwYW5kZWQgc2V0IG9mIFBvaW50ZXJzIGZvciBoaWdoLXJlc29sdXRpb24gaW5wdXRzLlxyXG4gICAgICovXHJcbiAgICBnZXRDb2FsZXNjZWQoKSB7XHJcbiAgICAgICAgaWYgKCdnZXRDb2FsZXNjZWRFdmVudHMnIGluIHRoaXMubmF0aXZlUG9pbnRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVQb2ludGVyLmdldENvYWxlc2NlZEV2ZW50cygpLm1hcCgocCkgPT4gbmV3IFBvaW50ZXIocCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW3RoaXNdO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGlzUG9pbnRlckV2ZW50ID0gKGV2ZW50KSA9PiBzZWxmLlBvaW50ZXJFdmVudCAmJiBldmVudCBpbnN0YW5jZW9mIFBvaW50ZXJFdmVudDtcclxuY29uc3Qgbm9vcCA9ICgpID0+IHsgfTtcclxuLyoqXHJcbiAqIFRyYWNrIHBvaW50ZXJzIGFjcm9zcyBhIHBhcnRpY3VsYXIgZWxlbWVudFxyXG4gKi9cclxuY2xhc3MgUG9pbnRlclRyYWNrZXIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFjayBwb2ludGVycyBhY3Jvc3MgYSBwYXJ0aWN1bGFyIGVsZW1lbnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIG1vbml0b3IuXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihfZWxlbWVudCwgeyBzdGFydCA9ICgpID0+IHRydWUsIG1vdmUgPSBub29wLCBlbmQgPSBub29wLCByYXdVcGRhdGVzID0gZmFsc2UsIH0gPSB7fSkge1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBfZWxlbWVudDtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBTdGF0ZSBvZiB0aGUgdHJhY2tlZCBwb2ludGVycyB3aGVuIHRoZXkgd2VyZSBwcmVzc2VkL3RvdWNoZWQuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5zdGFydFBvaW50ZXJzID0gW107XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogTGF0ZXN0IHN0YXRlIG9mIHRoZSB0cmFja2VkIHBvaW50ZXJzLiBDb250YWlucyB0aGUgc2FtZSBudW1iZXIgb2YgcG9pbnRlcnMsIGFuZCBpbiB0aGUgc2FtZVxyXG4gICAgICAgICAqIG9yZGVyIGFzIHRoaXMuc3RhcnRQb2ludGVycy5cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmN1cnJlbnRQb2ludGVycyA9IFtdO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIExpc3RlbmVyIGZvciBtb3VzZS9wb2ludGVyIHN0YXJ0cy5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwYXJhbSBldmVudCBUaGlzIHdpbGwgb25seSBiZSBhIE1vdXNlRXZlbnQgaWYgdGhlIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHBvaW50ZXIgZXZlbnRzLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuX3BvaW50ZXJTdGFydCA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIC8qIExlZnQgKi8pXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fdHJpZ2dlclBvaW50ZXJTdGFydChuZXcgUG9pbnRlcihldmVudCksIGV2ZW50KSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgLy8gQWRkIGxpc3RlbmVycyBmb3IgYWRkaXRpb25hbCBldmVudHMuXHJcbiAgICAgICAgICAgIC8vIFRoZSBsaXN0ZW5lcnMgbWF5IGFscmVhZHkgZXhpc3QsIGJ1dCBubyBoYXJtIGluIGFkZGluZyB0aGVtIGFnYWluLlxyXG4gICAgICAgICAgICBpZiAoaXNQb2ludGVyRXZlbnQoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYXB0dXJpbmdFbGVtZW50ID0gZXZlbnQudGFyZ2V0ICYmICdzZXRQb2ludGVyQ2FwdHVyZScgaW4gZXZlbnQudGFyZ2V0XHJcbiAgICAgICAgICAgICAgICAgICAgPyBldmVudC50YXJnZXRcclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2VsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBjYXB0dXJpbmdFbGVtZW50LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fcmF3VXBkYXRlcyA/ICdwb2ludGVycmF3dXBkYXRlJyA6ICdwb2ludGVybW92ZScsIHRoaXMuX21vdmUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCB0aGlzLl9wb2ludGVyRW5kKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmNhbmNlbCcsIHRoaXMuX3BvaW50ZXJFbmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gTW91c2VFdmVudFxyXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuX21vdmUpO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9wb2ludGVyRW5kKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogTGlzdGVuZXIgZm9yIHRvdWNoc3RhcnQuXHJcbiAgICAgICAgICogT25seSB1c2VkIGlmIHRoZSBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBwb2ludGVyIGV2ZW50cy5cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLl90b3VjaFN0YXJ0ID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdG91Y2ggb2YgQXJyYXkuZnJvbShldmVudC5jaGFuZ2VkVG91Y2hlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJQb2ludGVyU3RhcnQobmV3IFBvaW50ZXIodG91Y2gpLCBldmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIExpc3RlbmVyIGZvciBwb2ludGVyL21vdXNlL3RvdWNoIG1vdmUgZXZlbnRzLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuX21vdmUgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQb2ludGVycyA9IHRoaXMuY3VycmVudFBvaW50ZXJzLnNsaWNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRQb2ludGVycyA9ICdjaGFuZ2VkVG91Y2hlcycgaW4gZXZlbnQgLy8gU2hvcnRjdXQgZm9yICdpcyB0b3VjaCBldmVudCcuXHJcbiAgICAgICAgICAgICAgICA/IEFycmF5LmZyb20oZXZlbnQuY2hhbmdlZFRvdWNoZXMpLm1hcCgodCkgPT4gbmV3IFBvaW50ZXIodCkpXHJcbiAgICAgICAgICAgICAgICA6IFtuZXcgUG9pbnRlcihldmVudCldO1xyXG4gICAgICAgICAgICBjb25zdCB0cmFja2VkQ2hhbmdlZFBvaW50ZXJzID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRlciBvZiBjaGFuZ2VkUG9pbnRlcnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50UG9pbnRlcnMuZmluZEluZGV4KChwKSA9PiBwLmlkID09PSBwb2ludGVyLmlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIE5vdCBhIHBvaW50ZXIgd2UncmUgdHJhY2tpbmdcclxuICAgICAgICAgICAgICAgIHRyYWNrZWRDaGFuZ2VkUG9pbnRlcnMucHVzaChwb2ludGVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBvaW50ZXJzW2luZGV4XSA9IHBvaW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRyYWNrZWRDaGFuZ2VkUG9pbnRlcnMubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLl9tb3ZlQ2FsbGJhY2socHJldmlvdXNQb2ludGVycywgdHJhY2tlZENoYW5nZWRQb2ludGVycywgZXZlbnQpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQ2FsbCB0aGUgZW5kIGNhbGxiYWNrIGZvciB0aGlzIHBvaW50ZXIuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcGFyYW0gcG9pbnRlciBQb2ludGVyXHJcbiAgICAgICAgICogQHBhcmFtIGV2ZW50IFJlbGF0ZWQgZXZlbnRcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLl90cmlnZ2VyUG9pbnRlckVuZCA9IChwb2ludGVyLCBldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudFBvaW50ZXJzLmZpbmRJbmRleCgocCkgPT4gcC5pZCA9PT0gcG9pbnRlci5pZCk7XHJcbiAgICAgICAgICAgIC8vIE5vdCBhIHBvaW50ZXIgd2UncmUgaW50ZXJlc3RlZCBpbj9cclxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50UG9pbnRlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFBvaW50ZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbmNlbGxlZCA9IGV2ZW50LnR5cGUgPT09ICd0b3VjaGNhbmNlbCcgfHwgZXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJjYW5jZWwnO1xyXG4gICAgICAgICAgICB0aGlzLl9lbmRDYWxsYmFjayhwb2ludGVyLCBldmVudCwgY2FuY2VsbGVkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBMaXN0ZW5lciBmb3IgbW91c2UvcG9pbnRlciBlbmRzLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHBhcmFtIGV2ZW50IFRoaXMgd2lsbCBvbmx5IGJlIGEgTW91c2VFdmVudCBpZiB0aGUgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgcG9pbnRlciBldmVudHMuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5fcG9pbnRlckVuZCA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RyaWdnZXJQb2ludGVyRW5kKG5ldyBQb2ludGVyKGV2ZW50KSwgZXZlbnQpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAoaXNQb2ludGVyRXZlbnQoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UG9pbnRlcnMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl9yYXdVcGRhdGVzID8gJ3BvaW50ZXJyYXd1cGRhdGUnIDogJ3BvaW50ZXJtb3ZlJywgdGhpcy5fbW92ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX3BvaW50ZXJFbmQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyY2FuY2VsJywgdGhpcy5fcG9pbnRlckVuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBNb3VzZUV2ZW50XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fbW92ZSk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX3BvaW50ZXJFbmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBMaXN0ZW5lciBmb3IgdG91Y2hlbmQuXHJcbiAgICAgICAgICogT25seSB1c2VkIGlmIHRoZSBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBwb2ludGVyIGV2ZW50cy5cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLl90b3VjaEVuZCA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRvdWNoIG9mIEFycmF5LmZyb20oZXZlbnQuY2hhbmdlZFRvdWNoZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyUG9pbnRlckVuZChuZXcgUG9pbnRlcih0b3VjaCksIGV2ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fc3RhcnRDYWxsYmFjayA9IHN0YXJ0O1xyXG4gICAgICAgIHRoaXMuX21vdmVDYWxsYmFjayA9IG1vdmU7XHJcbiAgICAgICAgdGhpcy5fZW5kQ2FsbGJhY2sgPSBlbmQ7XHJcbiAgICAgICAgdGhpcy5fcmF3VXBkYXRlcyA9IHJhd1VwZGF0ZXMgJiYgJ29ucG9pbnRlcnJhd3VwZGF0ZScgaW4gd2luZG93O1xyXG4gICAgICAgIC8vIEFkZCBsaXN0ZW5lcnNcclxuICAgICAgICBpZiAoc2VsZi5Qb2ludGVyRXZlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMuX3BvaW50ZXJTdGFydCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuX3BvaW50ZXJTdGFydCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuX3RvdWNoU3RhcnQpO1xyXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuX21vdmUpO1xyXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5fdG91Y2hFbmQpO1xyXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgdGhpcy5fdG91Y2hFbmQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIGFsbCBsaXN0ZW5lcnMuXHJcbiAgICAgKi9cclxuICAgIHN0b3AoKSB7XHJcbiAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMuX3BvaW50ZXJTdGFydCk7XHJcbiAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLl9wb2ludGVyU3RhcnQpO1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuX3RvdWNoU3RhcnQpO1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5fbW92ZSk7XHJcbiAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuX3RvdWNoRW5kKTtcclxuICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgdGhpcy5fdG91Y2hFbmQpO1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl9yYXdVcGRhdGVzID8gJ3BvaW50ZXJyYXd1cGRhdGUnIDogJ3BvaW50ZXJtb3ZlJywgdGhpcy5fbW92ZSk7XHJcbiAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCB0aGlzLl9wb2ludGVyRW5kKTtcclxuICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJjYW5jZWwnLCB0aGlzLl9wb2ludGVyRW5kKTtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fbW92ZSk7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9wb2ludGVyRW5kKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbCB0aGUgc3RhcnQgY2FsbGJhY2sgZm9yIHRoaXMgcG9pbnRlciwgYW5kIHRyYWNrIGl0IGlmIHRoZSB1c2VyIHdhbnRzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwb2ludGVyIFBvaW50ZXJcclxuICAgICAqIEBwYXJhbSBldmVudCBSZWxhdGVkIGV2ZW50XHJcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwb2ludGVyIGlzIGJlaW5nIHRyYWNrZWQuXHJcbiAgICAgKi9cclxuICAgIF90cmlnZ2VyUG9pbnRlclN0YXJ0KHBvaW50ZXIsIGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9zdGFydENhbGxiYWNrKHBvaW50ZXIsIGV2ZW50KSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBvaW50ZXJzLnB1c2gocG9pbnRlcik7XHJcbiAgICAgICAgdGhpcy5zdGFydFBvaW50ZXJzLnB1c2gocG9pbnRlcik7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn1cblxuZXhwb3J0IGRlZmF1bHQgUG9pbnRlclRyYWNrZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/pointer-tracker/dist/PointerTracker.mjs\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/punycode.js/punycode.es6.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/punycode.js/punycode.es6.js ***!
|
||
\**************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (punycode);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHVueWNvZGUuanMvcHVueWNvZGUuZXM2LmpzP2RmMGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBYTs7QUFFYjtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLG9EQUFvRDs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQjtBQUNBLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0EsSUFBSTtBQUNKLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsbUNBQW1DO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsV0FBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUI7O0FBRXZCLDRDQUE0QyxxQkFBcUI7O0FBRWpFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixvQkFBb0I7O0FBRS9DO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG9CQUFvQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHVFQUFRLEVBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHVueWNvZGUuanMvcHVueWNvZGUuZXM2LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG5jb25zdCBtYXhJbnQgPSAyMTQ3NDgzNjQ3OyAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG5cbi8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cbmNvbnN0IGJhc2UgPSAzNjtcbmNvbnN0IHRNaW4gPSAxO1xuY29uc3QgdE1heCA9IDI2O1xuY29uc3Qgc2tldyA9IDM4O1xuY29uc3QgZGFtcCA9IDcwMDtcbmNvbnN0IGluaXRpYWxCaWFzID0gNzI7XG5jb25zdCBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxuY29uc3QgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG5jb25zdCByZWdleFB1bnljb2RlID0gL154bi0tLztcbmNvbnN0IHJlZ2V4Tm9uQVNDSUkgPSAvW15cXDAtXFx4N0VdLzsgLy8gbm9uLUFTQ0lJIGNoYXJzXG5jb25zdCByZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cbi8qKiBFcnJvciBtZXNzYWdlcyAqL1xuY29uc3QgZXJyb3JzID0ge1xuXHQnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuXHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHQnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xufTtcblxuLyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xuY29uc3QgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3Qgc3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGVycm9yKHR5cGUpIHtcblx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRsZXQgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHR3aGlsZSAobGVuZ3RoLS0pIHtcblx0XHRyZXN1bHRbbGVuZ3RoXSA9IGZuKGFycmF5W2xlbmd0aF0pO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG4gKiBhZGRyZXNzZXMuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuICogY2hhcmFjdGVyLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcbiAqIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXBEb21haW4oc3RyaW5nLCBmbikge1xuXHRjb25zdCBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHRsZXQgcmVzdWx0ID0gJyc7XG5cdGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0Ly8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuXHRcdC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG5cdFx0cmVzdWx0ID0gcGFydHNbMF0gKyAnQCc7XG5cdFx0c3RyaW5nID0gcGFydHNbMV07XG5cdH1cblx0Ly8gQXZvaWQgYHNwbGl0KHJlZ2V4KWAgZm9yIElFOCBjb21wYXRpYmlsaXR5LiBTZWUgIzE3LlxuXHRzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuXHRjb25zdCBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0Y29uc3QgZW5jb2RlZCA9IG1hcChsYWJlbHMsIGZuKS5qb2luKCcuJyk7XG5cdHJldHVybiByZXN1bHQgKyBlbmNvZGVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcbiAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG4gKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcbiAqIG1hdGNoaW5nIFVURi0xNi5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuICogQG5hbWUgZGVjb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuICogQHJldHVybnMge0FycmF5fSBUaGUgbmV3IGFycmF5IG9mIGNvZGUgcG9pbnRzLlxuICovXG5mdW5jdGlvbiB1Y3MyZGVjb2RlKHN0cmluZykge1xuXHRjb25zdCBvdXRwdXQgPSBbXTtcblx0bGV0IGNvdW50ZXIgPSAwO1xuXHRjb25zdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuXHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdGNvbnN0IHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHQvLyBJdCdzIGEgaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyLlxuXHRcdFx0Y29uc3QgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0aWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIExvdyBzdXJyb2dhdGUuXG5cdFx0XHRcdG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJdCdzIGFuIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZVxuXHRcdFx0XHQvLyBuZXh0IGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpci5cblx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0XHRjb3VudGVyLS07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBlbmNvZGVcbiAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV3IFVuaWNvZGUgc3RyaW5nIChVQ1MtMikuXG4gKi9cbmNvbnN0IHVjczJlbmNvZGUgPSBhcnJheSA9PiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5hcnJheSk7XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG4gKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cbiAqL1xuY29uc3QgYmFzaWNUb0RpZ2l0ID0gZnVuY3Rpb24oY29kZVBvaW50KSB7XG5cdGlmIChjb2RlUG9pbnQgLSAweDMwIDwgMHgwQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDE2O1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDQxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDQxO1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDYxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDYxO1xuXHR9XG5cdHJldHVybiBiYXNlO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG5jb25zdCBkaWdpdFRvQmFzaWMgPSBmdW5jdGlvbihkaWdpdCwgZmxhZykge1xuXHQvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuXHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcbn07XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBhZGFwdCA9IGZ1bmN0aW9uKGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuXHRsZXQgayA9IDA7XG5cdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcblx0Zm9yICgvKiBubyBpbml0aWFsaXphdGlvbiAqLzsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdH1cblx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG4gKiBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKi9cbmNvbnN0IGRlY29kZSA9IGZ1bmN0aW9uKGlucHV0KSB7XG5cdC8vIERvbid0IHVzZSBVQ1MtMi5cblx0Y29uc3Qgb3V0cHV0ID0gW107XG5cdGNvbnN0IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXHRsZXQgaSA9IDA7XG5cdGxldCBuID0gaW5pdGlhbE47XG5cdGxldCBiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG5cdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdC8vIHRoZSBmaXJzdCBiYXNpYyBjb2RlIHBvaW50cyB0byB0aGUgb3V0cHV0LlxuXG5cdGxldCBiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdGlmIChiYXNpYyA8IDApIHtcblx0XHRiYXNpYyA9IDA7XG5cdH1cblxuXHRmb3IgKGxldCBqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcblx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRpZiAoaW5wdXQuY2hhckNvZGVBdChqKSA+PSAweDgwKSB7XG5cdFx0XHRlcnJvcignbm90LWJhc2ljJyk7XG5cdFx0fVxuXHRcdG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuXHR9XG5cblx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHQvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG5cdGZvciAobGV0IGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLykge1xuXG5cdFx0Ly8gYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGNvbnN1bWVkLlxuXHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdC8vIGlmIHdlIGluY3JlYXNlIGBpYCBhcyB3ZSBnbywgdGhlbiBzdWJ0cmFjdCBvZmYgaXRzIHN0YXJ0aW5nXG5cdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHRsZXQgb2xkaSA9IGk7XG5cdFx0Zm9yIChsZXQgdyA9IDEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXG5cdFx0XHRpZiAoaW5kZXggPj0gaW5wdXRMZW5ndGgpIHtcblx0XHRcdFx0ZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGlnaXQgPSBiYXNpY1RvRGlnaXQoaW5wdXQuY2hhckNvZGVBdChpbmRleCsrKSk7XG5cblx0XHRcdGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0Y29uc3QgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG5cblx0XHRcdGlmIChkaWdpdCA8IHQpIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblxuXHRcdH1cblxuXHRcdGNvbnN0IG91dCA9IG91dHB1dC5sZW5ndGggKyAxO1xuXHRcdGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG5cdFx0Ly8gYGlgIHdhcyBzdXBwb3NlZCB0byB3cmFwIGFyb3VuZCBmcm9tIGBvdXRgIHRvIGAwYCxcblx0XHQvLyBpbmNyZW1lbnRpbmcgYG5gIGVhY2ggdGltZSwgc28gd2UnbGwgZml4IHRoYXQgbm93OlxuXHRcdGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcblx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0aSAlPSBvdXQ7XG5cblx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0LlxuXHRcdG91dHB1dC5zcGxpY2UoaSsrLCAwLCBuKTtcblxuXHR9XG5cblx0cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KC4uLm91dHB1dCk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG4gKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbmNvbnN0IGVuY29kZSA9IGZ1bmN0aW9uKGlucHV0KSB7XG5cdGNvbnN0IG91dHB1dCA9IFtdO1xuXG5cdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG5cdGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cblx0Ly8gQ2FjaGUgdGhlIGxlbmd0aC5cblx0bGV0IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuXHRsZXQgbiA9IGluaXRpYWxOO1xuXHRsZXQgZGVsdGEgPSAwO1xuXHRsZXQgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG5cdGZvciAoY29uc3QgY3VycmVudFZhbHVlIG9mIGlucHV0KSB7XG5cdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcblx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShjdXJyZW50VmFsdWUpKTtcblx0XHR9XG5cdH1cblxuXHRsZXQgYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXHRsZXQgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aDtcblxuXHQvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG5cdGlmIChiYXNpY0xlbmd0aCkge1xuXHRcdG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG5cdH1cblxuXHQvLyBNYWluIGVuY29kaW5nIGxvb3A6XG5cdHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cblx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0Ly8gbGFyZ2VyIG9uZTpcblx0XHRsZXQgbSA9IG1heEludDtcblx0XHRmb3IgKGNvbnN0IGN1cnJlbnRWYWx1ZSBvZiBpbnB1dCkge1xuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0Ly8gYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuXG5cdFx0Y29uc3QgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG5cdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHR9XG5cblx0XHRkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuXHRcdG4gPSBtO1xuXG5cdFx0Zm9yIChjb25zdCBjdXJyZW50VmFsdWUgb2YgaW5wdXQpIHtcblx0XHRcdGlmIChjdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlID09IG4pIHtcblx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG5cdFx0XHRcdGxldCBxID0gZGVsdGE7XG5cdFx0XHRcdGZvciAobGV0IGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXHRcdFx0XHRcdGNvbnN0IHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRjb25zdCBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goXG5cdFx0XHRcdFx0XHRzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxLCAwKSkpO1xuXHRcdFx0XHRiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuXHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdCsraGFuZGxlZENQQ291bnQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0KytkZWx0YTtcblx0XHQrK247XG5cblx0fVxuXHRyZXR1cm4gb3V0cHV0LmpvaW4oJycpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG4gKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG4gKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cbiAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG4gKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcbiAqIHN0cmluZy5cbiAqL1xuY29uc3QgdG9Vbmljb2RlID0gZnVuY3Rpb24oaW5wdXQpIHtcblx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpXG5cdFx0XHQ/IGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSlcblx0XHRcdDogc3RyaW5nO1xuXHR9KTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzIHRvXG4gKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcbiAqIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0J3MgYWxyZWFkeSBpblxuICogQVNDSUkuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0byBjb252ZXJ0LCBhcyBhXG4gKiBVbmljb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3JcbiAqIGVtYWlsIGFkZHJlc3MuXG4gKi9cbmNvbnN0IHRvQVNDSUkgPSBmdW5jdGlvbihpbnB1dCkge1xuXHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRyZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZylcblx0XHRcdD8gJ3huLS0nICsgZW5jb2RlKHN0cmluZylcblx0XHRcdDogc3RyaW5nO1xuXHR9KTtcbn07XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG5jb25zdCBwdW55Y29kZSA9IHtcblx0LyoqXG5cdCAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEB0eXBlIFN0cmluZ1xuXHQgKi9cblx0J3ZlcnNpb24nOiAnMi4xLjAnLFxuXHQvKipcblx0ICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcblx0ICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cblx0ICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAdHlwZSBPYmplY3Rcblx0ICovXG5cdCd1Y3MyJzoge1xuXHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdCdlbmNvZGUnOiB1Y3MyZW5jb2RlXG5cdH0sXG5cdCdkZWNvZGUnOiBkZWNvZGUsXG5cdCdlbmNvZGUnOiBlbmNvZGUsXG5cdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxufTtcblxuZXhwb3J0IGRlZmF1bHQgcHVueWNvZGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/punycode.js/punycode.es6.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/punycode/punycode.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/punycode/punycode.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = true && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = true && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttrue\n\t) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n\t\t\treturn punycode;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n\n}(this));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module), __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHVueWNvZGUvcHVueWNvZGUuanM/OWQ4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxtQkFBbUIsS0FBMEI7QUFDN0M7QUFDQSxrQkFBa0IsS0FBeUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxNQUFNO0FBQ2xCLFlBQVksU0FBUztBQUNyQjtBQUNBLGNBQWMsTUFBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxTQUFTO0FBQ3JCO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBLEtBQUs7QUFDTCw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxNQUFNO0FBQ2xCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLG1DQUFtQztBQUNsRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsV0FBVztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0I7O0FBRXhCLHlDQUF5QyxxQkFBcUI7O0FBRTlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msb0JBQW9COztBQUV0RDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLGlCQUFpQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLGlCQUFpQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGNBQWMsaUJBQWlCO0FBQy9COztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCLG9CQUFvQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkI7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUVVO0FBQ1o7QUFDQSxFQUFFLG1DQUFtQjtBQUNyQjtBQUNBLEdBQUc7QUFBQSxvR0FBQztBQUNKLEVBQUUsTUFBTSxFQWFOOztBQUVGLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHVueWNvZGUvcHVueWNvZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgaHR0cHM6Ly9tdGhzLmJlL3B1bnljb2RlIHYxLjQuMSBieSBAbWF0aGlhcyAqL1xuOyhmdW5jdGlvbihyb290KSB7XG5cblx0LyoqIERldGVjdCBmcmVlIHZhcmlhYmxlcyAqL1xuXHR2YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmXG5cdFx0IWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblx0dmFyIGZyZWVNb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJlxuXHRcdCFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXHR2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsO1xuXHRpZiAoXG5cdFx0ZnJlZUdsb2JhbC5nbG9iYWwgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLndpbmRvdyA9PT0gZnJlZUdsb2JhbCB8fFxuXHRcdGZyZWVHbG9iYWwuc2VsZiA9PT0gZnJlZUdsb2JhbFxuXHQpIHtcblx0XHRyb290ID0gZnJlZUdsb2JhbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgYHB1bnljb2RlYCBvYmplY3QuXG5cdCAqIEBuYW1lIHB1bnljb2RlXG5cdCAqIEB0eXBlIE9iamVjdFxuXHQgKi9cblx0dmFyIHB1bnljb2RlLFxuXG5cdC8qKiBIaWdoZXN0IHBvc2l0aXZlIHNpZ25lZCAzMi1iaXQgZmxvYXQgdmFsdWUgKi9cblx0bWF4SW50ID0gMjE0NzQ4MzY0NywgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG5cdC8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cblx0YmFzZSA9IDM2LFxuXHR0TWluID0gMSxcblx0dE1heCA9IDI2LFxuXHRza2V3ID0gMzgsXG5cdGRhbXAgPSA3MDAsXG5cdGluaXRpYWxCaWFzID0gNzIsXG5cdGluaXRpYWxOID0gMTI4LCAvLyAweDgwXG5cdGRlbGltaXRlciA9ICctJywgLy8gJ1xceDJEJ1xuXG5cdC8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG5cdHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vLFxuXHRyZWdleE5vbkFTQ0lJID0gL1teXFx4MjAtXFx4N0VdLywgLy8gdW5wcmludGFibGUgQVNDSUkgY2hhcnMgKyBub24tQVNDSUkgY2hhcnNcblx0cmVnZXhTZXBhcmF0b3JzID0gL1tcXHgyRVxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZywgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xuXG5cdC8qKiBFcnJvciBtZXNzYWdlcyAqL1xuXHRlcnJvcnMgPSB7XG5cdFx0J292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0XHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHRcdCdpbnZhbGlkLWlucHV0JzogJ0ludmFsaWQgaW5wdXQnXG5cdH0sXG5cblx0LyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xuXHRiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW4sXG5cdGZsb29yID0gTWF0aC5mbG9vcixcblx0c3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZSxcblxuXHQvKiogVGVtcG9yYXJ5IHZhcmlhYmxlICovXG5cdGtleTtcblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuXHQgKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBlcnJvcih0eXBlKSB7XG5cdFx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG5cdCAqIGl0ZW0uXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgYXJyYXkgb2YgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcChhcnJheSwgZm4pIHtcblx0XHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHRcdHZhciByZXN1bHQgPSBbXTtcblx0XHR3aGlsZSAobGVuZ3RoLS0pIHtcblx0XHRcdHJlc3VsdFtsZW5ndGhdID0gZm4oYXJyYXlbbGVuZ3RoXSk7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG5cdCAqIGFkZHJlc3Nlcy5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5XG5cdCAqIGNoYXJhY3Rlci5cblx0ICogQHJldHVybnMge0FycmF5fSBBIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcblx0ICogZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBtYXBEb21haW4oc3RyaW5nLCBmbikge1xuXHRcdHZhciBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHRcdHZhciByZXN1bHQgPSAnJztcblx0XHRpZiAocGFydHMubGVuZ3RoID4gMSkge1xuXHRcdFx0Ly8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuXHRcdFx0Ly8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cblx0XHRcdHJlc3VsdCA9IHBhcnRzWzBdICsgJ0AnO1xuXHRcdFx0c3RyaW5nID0gcGFydHNbMV07XG5cdFx0fVxuXHRcdC8vIEF2b2lkIGBzcGxpdChyZWdleClgIGZvciBJRTggY29tcGF0aWJpbGl0eS4gU2VlICMxNy5cblx0XHRzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuXHRcdHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0XHR2YXIgZW5jb2RlZCA9IG1hcChsYWJlbHMsIGZuKS5qb2luKCcuJyk7XG5cdFx0cmV0dXJuIHJlc3VsdCArIGVuY29kZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuXHQgKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG5cdCAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG5cdCAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuXHQgKiBtYXRjaGluZyBVVEYtMTYuXG5cdCAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuXHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcblx0ICogQG5hbWUgZGVjb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgVGhlIFVuaWNvZGUgaW5wdXQgc3RyaW5nIChVQ1MtMikuXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cblx0ICovXG5cdGZ1bmN0aW9uIHVjczJkZWNvZGUoc3RyaW5nKSB7XG5cdFx0dmFyIG91dHB1dCA9IFtdLFxuXHRcdCAgICBjb3VudGVyID0gMCxcblx0XHQgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCxcblx0XHQgICAgdmFsdWUsXG5cdFx0ICAgIGV4dHJhO1xuXHRcdHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHR2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHRcdC8vIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3RlclxuXHRcdFx0XHRleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRcdGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkgeyAvLyBsb3cgc3Vycm9nYXRlXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGUgbmV4dFxuXHRcdFx0XHRcdC8vIGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpclxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdFx0XHRjb3VudGVyLS07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG5cdCAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuXHQgKiBAbmFtZSBlbmNvZGVcblx0ICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIG5ldyBVbmljb2RlIHN0cmluZyAoVUNTLTIpLlxuXHQgKi9cblx0ZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuXHRcdHJldHVybiBtYXAoYXJyYXksIGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHR2YXIgb3V0cHV0ID0gJyc7XG5cdFx0XHRpZiAodmFsdWUgPiAweEZGRkYpIHtcblx0XHRcdFx0dmFsdWUgLT0gMHgxMDAwMDtcblx0XHRcdFx0b3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMCk7XG5cdFx0XHRcdHZhbHVlID0gMHhEQzAwIHwgdmFsdWUgJiAweDNGRjtcblx0XHRcdH1cblx0XHRcdG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUpO1xuXHRcdFx0cmV0dXJuIG91dHB1dDtcblx0XHR9KS5qb2luKCcnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIGJhc2ljIGNvZGUgcG9pbnQgaW50byBhIGRpZ2l0L2ludGVnZXIuXG5cdCAqIEBzZWUgYGRpZ2l0VG9CYXNpYygpYFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge051bWJlcn0gY29kZVBvaW50IFRoZSBiYXNpYyBudW1lcmljIGNvZGUgcG9pbnQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludCAoZm9yIHVzZSBpblxuXHQgKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG5cdCAqIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbHVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuXHRcdGlmIChjb2RlUG9pbnQgLSA0OCA8IDEwKSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gMjI7XG5cdFx0fVxuXHRcdGlmIChjb2RlUG9pbnQgLSA2NSA8IDI2KSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gNjU7XG5cdFx0fVxuXHRcdGlmIChjb2RlUG9pbnQgLSA5NyA8IDI2KSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gOTc7XG5cdFx0fVxuXHRcdHJldHVybiBiYXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgZGlnaXQvaW50ZWdlciBpbnRvIGEgYmFzaWMgY29kZSBwb2ludC5cblx0ICogQHNlZSBgYmFzaWNUb0RpZ2l0KClgXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBkaWdpdCBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQuXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBiYXNpYyBjb2RlIHBvaW50IHdob3NlIHZhbHVlICh3aGVuIHVzZWQgZm9yXG5cdCAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG5cdCAqIGAwYCB0byBgYmFzZSAtIDFgLiBJZiBgZmxhZ2AgaXMgbm9uLXplcm8sIHRoZSB1cHBlcmNhc2UgZm9ybSBpc1xuXHQgKiB1c2VkOyBlbHNlLCB0aGUgbG93ZXJjYXNlIGZvcm0gaXMgdXNlZC4gVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZFxuXHQgKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuXHQgKi9cblx0ZnVuY3Rpb24gZGlnaXRUb0Jhc2ljKGRpZ2l0LCBmbGFnKSB7XG5cdFx0Ly8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcblx0XHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0XHRyZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpIC0gKChmbGFnICE9IDApIDw8IDUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG5cdCAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcblx0XHR2YXIgayA9IDA7XG5cdFx0ZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcblx0XHRkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG5cdFx0Zm9yICgvKiBubyBpbml0aWFsaXphdGlvbiAqLzsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRcdGRlbHRhID0gZmxvb3IoZGVsdGEgLyBiYXNlTWludXNUTWluKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzIHRvIGEgc3RyaW5nIG9mIFVuaWNvZGVcblx0ICogc3ltYm9scy5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG5cdFx0Ly8gRG9uJ3QgdXNlIFVDUy0yXG5cdFx0dmFyIG91dHB1dCA9IFtdLFxuXHRcdCAgICBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCxcblx0XHQgICAgb3V0LFxuXHRcdCAgICBpID0gMCxcblx0XHQgICAgbiA9IGluaXRpYWxOLFxuXHRcdCAgICBiaWFzID0gaW5pdGlhbEJpYXMsXG5cdFx0ICAgIGJhc2ljLFxuXHRcdCAgICBqLFxuXHRcdCAgICBpbmRleCxcblx0XHQgICAgb2xkaSxcblx0XHQgICAgdyxcblx0XHQgICAgayxcblx0XHQgICAgZGlnaXQsXG5cdFx0ICAgIHQsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBiYXNlTWludXNUO1xuXG5cdFx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG5cdFx0Ly8gcG9pbnRzIGJlZm9yZSB0aGUgbGFzdCBkZWxpbWl0ZXIsIG9yIGAwYCBpZiB0aGVyZSBpcyBub25lLCB0aGVuIGNvcHlcblx0XHQvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuXHRcdGJhc2ljID0gaW5wdXQubGFzdEluZGV4T2YoZGVsaW1pdGVyKTtcblx0XHRpZiAoYmFzaWMgPCAwKSB7XG5cdFx0XHRiYXNpYyA9IDA7XG5cdFx0fVxuXG5cdFx0Zm9yIChqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcblx0XHRcdC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuXHRcdFx0aWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMHg4MCkge1xuXHRcdFx0XHRlcnJvcignbm90LWJhc2ljJyk7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQucHVzaChpbnB1dC5jaGFyQ29kZUF0KGopKTtcblx0XHR9XG5cblx0XHQvLyBNYWluIGRlY29kaW5nIGxvb3A6IHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIGxhc3QgZGVsaW1pdGVyIGlmIGFueSBiYXNpYyBjb2RlXG5cdFx0Ly8gcG9pbnRzIHdlcmUgY29waWVkOyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG90aGVyd2lzZS5cblxuXHRcdGZvciAoaW5kZXggPSBiYXNpYyA+IDAgPyBiYXNpYyArIDEgOiAwOyBpbmRleCA8IGlucHV0TGVuZ3RoOyAvKiBubyBmaW5hbCBleHByZXNzaW9uICovKSB7XG5cblx0XHRcdC8vIGBpbmRleGAgaXMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBjb25zdW1lZC5cblx0XHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHRcdC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG5cdFx0XHQvLyBpZiB3ZSBpbmNyZWFzZSBgaWAgYXMgd2UgZ28sIHRoZW4gc3VidHJhY3Qgb2ZmIGl0cyBzdGFydGluZ1xuXHRcdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHRcdGZvciAob2xkaSA9IGksIHcgPSAxLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcblxuXHRcdFx0XHRpZiAoaW5kZXggPj0gaW5wdXRMZW5ndGgpIHtcblx0XHRcdFx0XHRlcnJvcignaW52YWxpZC1pbnB1dCcpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGlnaXQgPSBiYXNpY1RvRGlnaXQoaW5wdXQuY2hhckNvZGVBdChpbmRleCsrKSk7XG5cblx0XHRcdFx0aWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aSArPSBkaWdpdCAqIHc7XG5cdFx0XHRcdHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA8IHQpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0aWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dyAqPSBiYXNlTWludXNUO1xuXG5cdFx0XHR9XG5cblx0XHRcdG91dCA9IG91dHB1dC5sZW5ndGggKyAxO1xuXHRcdFx0YmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cblx0XHRcdC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG5cdFx0XHQvLyBpbmNyZW1lbnRpbmcgYG5gIGVhY2ggdGltZSwgc28gd2UnbGwgZml4IHRoYXQgbm93OlxuXHRcdFx0aWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0biArPSBmbG9vcihpIC8gb3V0KTtcblx0XHRcdGkgJT0gb3V0O1xuXG5cdFx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0XG5cdFx0XHRvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cblx0XHR9XG5cblx0XHRyZXR1cm4gdWNzMmVuY29kZShvdXRwdXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG5cdCAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuXHRcdHZhciBuLFxuXHRcdCAgICBkZWx0YSxcblx0XHQgICAgaGFuZGxlZENQQ291bnQsXG5cdFx0ICAgIGJhc2ljTGVuZ3RoLFxuXHRcdCAgICBiaWFzLFxuXHRcdCAgICBqLFxuXHRcdCAgICBtLFxuXHRcdCAgICBxLFxuXHRcdCAgICBrLFxuXHRcdCAgICB0LFxuXHRcdCAgICBjdXJyZW50VmFsdWUsXG5cdFx0ICAgIG91dHB1dCA9IFtdLFxuXHRcdCAgICAvKiogYGlucHV0TGVuZ3RoYCB3aWxsIGhvbGQgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyBpbiBgaW5wdXRgLiAqL1xuXHRcdCAgICBpbnB1dExlbmd0aCxcblx0XHQgICAgLyoqIENhY2hlZCBjYWxjdWxhdGlvbiByZXN1bHRzICovXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50UGx1c09uZSxcblx0XHQgICAgYmFzZU1pbnVzVCxcblx0XHQgICAgcU1pbnVzVDtcblxuXHRcdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIFVuaWNvZGVcblx0XHRpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG5cdFx0Ly8gQ2FjaGUgdGhlIGxlbmd0aFxuXHRcdGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSB0aGUgc3RhdGVcblx0XHRuID0gaW5pdGlhbE47XG5cdFx0ZGVsdGEgPSAwO1xuXHRcdGJpYXMgPSBpbml0aWFsQmlhcztcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHNcblx0XHRmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlIDwgMHg4MCkge1xuXHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cblx0XHQvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblx0XHQvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cblx0XHQvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyAtIGlmIGl0IGlzIG5vdCBlbXB0eSAtIHdpdGggYSBkZWxpbWl0ZXJcblx0XHRpZiAoYmFzaWNMZW5ndGgpIHtcblx0XHRcdG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBlbmNvZGluZyBsb29wOlxuXHRcdHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cblx0XHRcdC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcblx0XHRcdC8vIGxhcmdlciBvbmU6XG5cdFx0XHRmb3IgKG0gPSBtYXhJbnQsIGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0XHRtID0gY3VycmVudFZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcblx0XHRcdC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93XG5cdFx0XHRoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG5cdFx0XHRpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcblx0XHRcdG4gPSBtO1xuXG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlID09IG4pIHtcblx0XHRcdFx0XHQvLyBSZXByZXNlbnQgZGVsdGEgYXMgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlclxuXHRcdFx0XHRcdGZvciAocSA9IGRlbHRhLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcblx0XHRcdFx0XHRcdHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXHRcdFx0XHRcdFx0aWYgKHEgPCB0KSB7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cU1pbnVzVCA9IHEgLSB0O1xuXHRcdFx0XHRcdFx0YmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goXG5cdFx0XHRcdFx0XHRcdHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNULCAwKSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSwgMCkpKTtcblx0XHRcdFx0XHRiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuXHRcdFx0XHRcdGRlbHRhID0gMDtcblx0XHRcdFx0XHQrK2hhbmRsZWRDUENvdW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCsrZGVsdGE7XG5cdFx0XHQrK247XG5cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dC5qb2luKCcnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG5cdCAqIHRvIFVuaWNvZGUuIE9ubHkgdGhlIFB1bnljb2RlZCBwYXJ0cyBvZiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQsIGkuZS5cblx0ICogaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgb24gYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuXG5cdCAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZWQgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBQdW55Y29kZVxuXHQgKiBzdHJpbmcuXG5cdCAqL1xuXHRmdW5jdGlvbiB0b1VuaWNvZGUoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleFB1bnljb2RlLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/IGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSlcblx0XHRcdFx0OiBzdHJpbmc7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBVbmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzIHRvXG5cdCAqIFB1bnljb2RlLiBPbmx5IHRoZSBub24tQVNDSUkgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHdpbGwgYmUgY29udmVydGVkLFxuXHQgKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cblx0ICogQVNDSUkuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuXHQgKiBVbmljb2RlIHN0cmluZy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIFB1bnljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBkb21haW4gbmFtZSBvclxuXHQgKiBlbWFpbCBhZGRyZXNzLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9BU0NJSShpbnB1dCkge1xuXHRcdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdFx0cmV0dXJuIHJlZ2V4Tm9uQVNDSUkudGVzdChzdHJpbmcpXG5cdFx0XHRcdD8gJ3huLS0nICsgZW5jb2RlKHN0cmluZylcblx0XHRcdFx0OiBzdHJpbmc7XG5cdFx0fSk7XG5cdH1cblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG5cdHB1bnljb2RlID0ge1xuXHRcdC8qKlxuXHRcdCAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBTdHJpbmdcblx0XHQgKi9cblx0XHQndmVyc2lvbic6ICcxLjQuMScsXG5cdFx0LyoqXG5cdFx0ICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcblx0XHQgKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuXHRcdCAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuXHRcdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHRcdCAqIEB0eXBlIE9iamVjdFxuXHRcdCAqL1xuXHRcdCd1Y3MyJzoge1xuXHRcdFx0J2RlY29kZSc6IHVjczJkZWNvZGUsXG5cdFx0XHQnZW5jb2RlJzogdWNzMmVuY29kZVxuXHRcdH0sXG5cdFx0J2RlY29kZSc6IGRlY29kZSxcblx0XHQnZW5jb2RlJzogZW5jb2RlLFxuXHRcdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0XHQndG9Vbmljb2RlJzogdG9Vbmljb2RlXG5cdH07XG5cblx0LyoqIEV4cG9zZSBgcHVueWNvZGVgICovXG5cdC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIHNwZWNpZmljIGNvbmRpdGlvbiBwYXR0ZXJuc1xuXHQvLyBsaWtlIHRoZSBmb2xsb3dpbmc6XG5cdGlmIChcblx0XHR0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiZcblx0XHR0eXBlb2YgZGVmaW5lLmFtZCA9PSAnb2JqZWN0JyAmJlxuXHRcdGRlZmluZS5hbWRcblx0KSB7XG5cdFx0ZGVmaW5lKCdwdW55Y29kZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHB1bnljb2RlO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKGZyZWVFeHBvcnRzICYmIGZyZWVNb2R1bGUpIHtcblx0XHRpZiAobW9kdWxlLmV4cG9ydHMgPT0gZnJlZUV4cG9ydHMpIHtcblx0XHRcdC8vIGluIE5vZGUuanMsIGlvLmpzLCBvciBSaW5nb0pTIHYwLjguMCtcblx0XHRcdGZyZWVNb2R1bGUuZXhwb3J0cyA9IHB1bnljb2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpbiBOYXJ3aGFsIG9yIFJpbmdvSlMgdjAuNy4wLVxuXHRcdFx0Zm9yIChrZXkgaW4gcHVueWNvZGUpIHtcblx0XHRcdFx0cHVueWNvZGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAoZnJlZUV4cG9ydHNba2V5XSA9IHB1bnljb2RlW2tleV0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBpbiBSaGlubyBvciBhIHdlYiBicm93c2VyXG5cdFx0cm9vdC5wdW55Y29kZSA9IHB1bnljb2RlO1xuXHR9XG5cbn0odGhpcykpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/punycode/punycode.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/querystring-es3/decode.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/querystring-es3/decode.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2RlY29kZS5qcz85MWRkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy1lczMvZGVjb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gSWYgb2JqLmhhc093blByb3BlcnR5IGhhcyBiZWVuIG92ZXJyaWRkZW4sIHRoZW4gY2FsbGluZ1xuLy8gb2JqLmhhc093blByb3BlcnR5KHByb3ApIHdpbGwgYnJlYWsuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb3llbnQvbm9kZS9pc3N1ZXMvMTcwN1xuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihxcywgc2VwLCBlcSwgb3B0aW9ucykge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgdmFyIG9iaiA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcXMgIT09ICdzdHJpbmcnIHx8IHFzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgcmVnZXhwID0gL1xcKy9nO1xuICBxcyA9IHFzLnNwbGl0KHNlcCk7XG5cbiAgdmFyIG1heEtleXMgPSAxMDAwO1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5tYXhLZXlzID09PSAnbnVtYmVyJykge1xuICAgIG1heEtleXMgPSBvcHRpb25zLm1heEtleXM7XG4gIH1cblxuICB2YXIgbGVuID0gcXMubGVuZ3RoO1xuICAvLyBtYXhLZXlzIDw9IDAgbWVhbnMgdGhhdCB3ZSBzaG91bGQgbm90IGxpbWl0IGtleXMgY291bnRcbiAgaWYgKG1heEtleXMgPiAwICYmIGxlbiA+IG1heEtleXMpIHtcbiAgICBsZW4gPSBtYXhLZXlzO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciB4ID0gcXNbaV0ucmVwbGFjZShyZWdleHAsICclMjAnKSxcbiAgICAgICAgaWR4ID0geC5pbmRleE9mKGVxKSxcbiAgICAgICAga3N0ciwgdnN0ciwgaywgdjtcblxuICAgIGlmIChpZHggPj0gMCkge1xuICAgICAga3N0ciA9IHguc3Vic3RyKDAsIGlkeCk7XG4gICAgICB2c3RyID0geC5zdWJzdHIoaWR4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtzdHIgPSB4O1xuICAgICAgdnN0ciA9ICcnO1xuICAgIH1cblxuICAgIGsgPSBkZWNvZGVVUklDb21wb25lbnQoa3N0cik7XG4gICAgdiA9IGRlY29kZVVSSUNvbXBvbmVudCh2c3RyKTtcblxuICAgIGlmICghaGFzT3duUHJvcGVydHkob2JqLCBrKSkge1xuICAgICAgb2JqW2tdID0gdjtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgb2JqW2tdLnB1c2godik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrXSA9IFtvYmpba10sIHZdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHhzKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeHMpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/querystring-es3/decode.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/querystring-es3/encode.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/querystring-es3/encode.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2VuY29kZS5qcz9lMDk5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZUFBZTtBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy1lczMvZW5jb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHN0cmluZ2lmeVByaW1pdGl2ZSA9IGZ1bmN0aW9uKHYpIHtcbiAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICByZXR1cm4gdjtcblxuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgcmV0dXJuIHYgPyAndHJ1ZScgOiAnZmFsc2UnO1xuXG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiBpc0Zpbml0ZSh2KSA/IHYgOiAnJztcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJyc7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqLCBzZXAsIGVxLCBuYW1lKSB7XG4gIHNlcCA9IHNlcCB8fCAnJic7XG4gIGVxID0gZXEgfHwgJz0nO1xuICBpZiAob2JqID09PSBudWxsKSB7XG4gICAgb2JqID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG1hcChvYmplY3RLZXlzKG9iaiksIGZ1bmN0aW9uKGspIHtcbiAgICAgIHZhciBrcyA9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUoaykpICsgZXE7XG4gICAgICBpZiAoaXNBcnJheShvYmpba10pKSB7XG4gICAgICAgIHJldHVybiBtYXAob2JqW2tdLCBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIGtzICsgZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZSh2KSk7XG4gICAgICAgIH0pLmpvaW4oc2VwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBrcyArIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUob2JqW2tdKSk7XG4gICAgICB9XG4gICAgfSkuam9pbihzZXApO1xuXG4gIH1cblxuICBpZiAoIW5hbWUpIHJldHVybiAnJztcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUobmFtZSkpICsgZXEgK1xuICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShvYmopKTtcbn07XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoeHMpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4cykgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG5mdW5jdGlvbiBtYXAgKHhzLCBmKSB7XG4gIGlmICh4cy5tYXApIHJldHVybiB4cy5tYXAoZik7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgIHJlcy5wdXNoKGYoeHNbaV0sIGkpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHJlcy5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/querystring-es3/encode.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/querystring-es3/index.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/querystring-es3/index.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nexports.decode = exports.parse = __webpack_require__(/*! ./decode */ \"./node_modules/querystring-es3/decode.js\");\nexports.encode = exports.stringify = __webpack_require__(/*! ./encode */ \"./node_modules/querystring-es3/encode.js\");\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2luZGV4LmpzP2IzODMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsaUNBQWlDLG1CQUFPLENBQUMsMERBQVU7QUFDbkQscUNBQXFDLG1CQUFPLENBQUMsMERBQVUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLmRlY29kZSA9IGV4cG9ydHMucGFyc2UgPSByZXF1aXJlKCcuL2RlY29kZScpO1xuZXhwb3J0cy5lbmNvZGUgPSBleHBvcnRzLnN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vZW5jb2RlJyk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/querystring-es3/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/regenerator-runtime/runtime.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/regenerator-runtime/runtime.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n true ? module.exports : undefined\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzPzk2Y2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsS0FBSztBQUNMLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLFdBQVc7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxjQUFjO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQyxrQkFBa0I7QUFDbkQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUEsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLEtBQTBCLG9CQUFvQixTQUFFO0FBQ2xEOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbnZhciBydW50aW1lID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBkZWZpbmUoSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pO1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gIGRlZmluZShHcCwgXCJjb25zdHJ1Y3RvclwiLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gIGRlZmluZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgXCJjb25zdHJ1Y3RvclwiLCBHZW5lcmF0b3JGdW5jdGlvbik7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gZGVmaW5lKFxuICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLFxuICAgIHRvU3RyaW5nVGFnU3ltYm9sLFxuICAgIFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICApO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIGRlZmluZShwcm90b3R5cGUsIG1ldGhvZCwgZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBleHBvcnRzLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGRlZmluZShnZW5GdW4sIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIpO1xuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBleHBvcnRzLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IsIFByb21pc2VJbXBsKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIC8vIElmIGEgcmVqZWN0ZWQgUHJvbWlzZSB3YXMgeWllbGRlZCwgdGhyb3cgdGhlIHJlamVjdGlvbiBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSBoYW5kbGVkIHRoZXJlLlxuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VJbXBsKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICB9XG5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKTtcbiAgZGVmaW5lKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlLCBhc3luY0l0ZXJhdG9yU3ltYm9sLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pO1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgaWYgKFByb21pc2VJbXBsID09PSB2b2lkIDApIFByb21pc2VJbXBsID0gUHJvbWlzZTtcblxuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSxcbiAgICAgIFByb21pc2VJbXBsXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIGRlZmluZShHcCwgaXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcblxuICBkZWZpbmUoR3AsIFwidG9TdHJpbmdcIiwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIGV4cG9ydHMudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZVxuICAvLyBvciBub3QsIHJldHVybiB0aGUgcnVudGltZSBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZGVjbGFyZSB0aGUgdmFyaWFibGVcbiAgLy8gcmVnZW5lcmF0b3JSdW50aW1lIGluIHRoZSBvdXRlciBzY29wZSwgd2hpY2ggYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlXG4gIC8vIGluamVjdGVkIGVhc2lseSBieSBgYmluL3JlZ2VuZXJhdG9yIC0taW5jbHVkZS1ydW50aW1lIHNjcmlwdC5qc2AuXG4gIHJldHVybiBleHBvcnRzO1xuXG59KFxuICAvLyBJZiB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGUsIHVzZSBtb2R1bGUuZXhwb3J0c1xuICAvLyBhcyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIG5hbWVzcGFjZS4gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBlbXB0eVxuICAvLyBvYmplY3QuIEVpdGhlciB3YXksIHRoZSByZXN1bHRpbmcgb2JqZWN0IHdpbGwgYmUgdXNlZCB0byBpbml0aWFsaXplXG4gIC8vIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgdmFyaWFibGUgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuXG4gIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgPyBtb2R1bGUuZXhwb3J0cyA6IHt9XG4pKTtcblxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIC8vIFRoaXMgbW9kdWxlIHNob3VsZCBub3QgYmUgcnVubmluZyBpbiBzdHJpY3QgbW9kZSwgc28gdGhlIGFib3ZlXG4gIC8vIGFzc2lnbm1lbnQgc2hvdWxkIGFsd2F5cyB3b3JrIHVubGVzcyBzb21ldGhpbmcgaXMgbWlzY29uZmlndXJlZC4gSnVzdFxuICAvLyBpbiBjYXNlIHJ1bnRpbWUuanMgYWNjaWRlbnRhbGx5IHJ1bnMgaW4gc3RyaWN0IG1vZGUsIGluIG1vZGVybiBlbmdpbmVzXG4gIC8vIHdlIGNhbiBleHBsaWNpdGx5IGFjY2VzcyBnbG9iYWxUaGlzLiBJbiBvbGRlciBlbmdpbmVzIHdlIGNhbiBlc2NhcGVcbiAgLy8gc3RyaWN0IG1vZGUgdXNpbmcgYSBnbG9iYWwgRnVuY3Rpb24gY2FsbC4gVGhpcyBjb3VsZCBjb25jZWl2YWJseSBmYWlsXG4gIC8vIGlmIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZm9yYmlkcyB1c2luZyBGdW5jdGlvbiwgYnV0IGluIHRoYXQgY2FzZVxuICAvLyB0aGUgcHJvcGVyIHNvbHV0aW9uIGlzIHRvIGZpeCB0aGUgYWNjaWRlbnRhbCBzdHJpY3QgbW9kZSBwcm9ibGVtLiBJZlxuICAvLyB5b3UndmUgbWlzY29uZmlndXJlZCB5b3VyIGJ1bmRsZXIgdG8gZm9yY2Ugc3RyaWN0IG1vZGUgYW5kIGFwcGxpZWQgYVxuICAvLyBDU1AgdG8gZm9yYmlkIEZ1bmN0aW9uLCBhbmQgeW91J3JlIG5vdCB3aWxsaW5nIHRvIGZpeCBlaXRoZXIgb2YgdGhvc2VcbiAgLy8gcHJvYmxlbXMsIHBsZWFzZSBkZXRhaWwgeW91ciB1bmlxdWUgcHJlZGljYW1lbnQgaW4gYSBHaXRIdWIgaXNzdWUuXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gXCJvYmplY3RcIikge1xuICAgIGdsb2JhbFRoaXMucmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbiAgfSBlbHNlIHtcbiAgICBGdW5jdGlvbihcInJcIiwgXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHJ1bnRpbWUpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/regenerator-runtime/runtime.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/serviceworker-webpack-plugin/lib/runtime.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/serviceworker-webpack-plugin/lib/runtime.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var serviceWorkerOption = {\"scriptURL\":\"/sw-pleroma.js\"};\n \"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable flowtype/require-valid-file-annotation */\n/* global serviceWorkerOption */\n\nexports.default = {\n register: function register() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (navigator.serviceWorker) {\n return navigator.serviceWorker.register(serviceWorkerOption.scriptURL, options);\n }\n\n return false;\n }\n};\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2VydmljZXdvcmtlci13ZWJwYWNrLXBsdWdpbi9saWIvcnVudGltZS5qcz85Zjk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9zZXJ2aWNld29ya2VyLXdlYnBhY2stcGx1Z2luL2xpYi9ydW50aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHNlcnZpY2VXb3JrZXJPcHRpb24gPSB7XCJzY3JpcHRVUkxcIjpcIi9zdy1wbGVyb21hLmpzXCJ9O1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG4vKiBlc2xpbnQtZGlzYWJsZSBmbG93dHlwZS9yZXF1aXJlLXZhbGlkLWZpbGUtYW5ub3RhdGlvbiAqL1xuLyogZ2xvYmFsIHNlcnZpY2VXb3JrZXJPcHRpb24gKi9cblxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICByZWdpc3RlcjogZnVuY3Rpb24gcmVnaXN0ZXIoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gICAgaWYgKG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyKSB7XG4gICAgICByZXR1cm4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoc2VydmljZVdvcmtlck9wdGlvbi5zY3JpcHRVUkwsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/serviceworker-webpack-plugin/lib/runtime.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/strip-ansi/index.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/strip-ansi/index.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\nconst ansiRegex = __webpack_require__(/*! ansi-regex */ \"./node_modules/ansi-regex/index.js\");\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3RyaXAtYW5zaS9pbmRleC5qcz83NjcxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2Isa0JBQWtCLG1CQUFPLENBQUMsc0RBQVk7O0FBRXRDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3N0cmlwLWFuc2kvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5jb25zdCBhbnNpUmVnZXggPSByZXF1aXJlKCdhbnNpLXJlZ2V4Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nID0+IHR5cGVvZiBzdHJpbmcgPT09ICdzdHJpbmcnID8gc3RyaW5nLnJlcGxhY2UoYW5zaVJlZ2V4KCksICcnKSA6IHN0cmluZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/strip-ansi/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/url/url.js":
|
||
/*!*********************************!*\
|
||
!*** ./node_modules/url/url.js ***!
|
||
\*********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar punycode = __webpack_require__(/*! punycode */ \"./node_modules/punycode/punycode.js\");\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/url/util.js\");\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = __webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\");\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdXJsL3VybC5qcz8wYjE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsZUFBZSxtQkFBTyxDQUFDLHFEQUFVO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQywwQ0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixLQUFLOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBLDJDQUEyQyxLQUFLO0FBQ2hELDBDQUEwQyxLQUFLO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxrQkFBa0IsbUJBQU8sQ0FBQyw0REFBYTs7QUFFdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQiw0QkFBNEI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIseUJBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsT0FBTztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxPQUFPO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLG1CQUFtQjtBQUNyQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsbUJBQW1CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsaUJBQWlCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLFFBQVE7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsTUFBTTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3VybC91cmwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgcHVueWNvZGUgPSByZXF1aXJlKCdwdW55Y29kZScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuZXhwb3J0cy5wYXJzZSA9IHVybFBhcnNlO1xuZXhwb3J0cy5yZXNvbHZlID0gdXJsUmVzb2x2ZTtcbmV4cG9ydHMucmVzb2x2ZU9iamVjdCA9IHVybFJlc29sdmVPYmplY3Q7XG5leHBvcnRzLmZvcm1hdCA9IHVybEZvcm1hdDtcblxuZXhwb3J0cy5VcmwgPSBVcmw7XG5cbmZ1bmN0aW9uIFVybCgpIHtcbiAgdGhpcy5wcm90b2NvbCA9IG51bGw7XG4gIHRoaXMuc2xhc2hlcyA9IG51bGw7XG4gIHRoaXMuYXV0aCA9IG51bGw7XG4gIHRoaXMuaG9zdCA9IG51bGw7XG4gIHRoaXMucG9ydCA9IG51bGw7XG4gIHRoaXMuaG9zdG5hbWUgPSBudWxsO1xuICB0aGlzLmhhc2ggPSBudWxsO1xuICB0aGlzLnNlYXJjaCA9IG51bGw7XG4gIHRoaXMucXVlcnkgPSBudWxsO1xuICB0aGlzLnBhdGhuYW1lID0gbnVsbDtcbiAgdGhpcy5wYXRoID0gbnVsbDtcbiAgdGhpcy5ocmVmID0gbnVsbDtcbn1cblxuLy8gUmVmZXJlbmNlOiBSRkMgMzk4NiwgUkZDIDE4MDgsIFJGQyAyMzk2XG5cbi8vIGRlZmluZSB0aGVzZSBoZXJlIHNvIGF0IGxlYXN0IHRoZXkgb25seSBoYXZlIHRvIGJlXG4vLyBjb21waWxlZCBvbmNlIG9uIHRoZSBmaXJzdCBtb2R1bGUgbG9hZC5cbnZhciBwcm90b2NvbFBhdHRlcm4gPSAvXihbYS16MC05ListXSs6KS9pLFxuICAgIHBvcnRQYXR0ZXJuID0gLzpbMC05XSokLyxcblxuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgYSBzaW1wbGUgcGF0aCBVUkxcbiAgICBzaW1wbGVQYXRoUGF0dGVybiA9IC9eKFxcL1xcLz8oPyFcXC8pW15cXD9cXHNdKikoXFw/W15cXHNdKik/JC8sXG5cbiAgICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyByZXNlcnZlZCBmb3IgZGVsaW1pdGluZyBVUkxzLlxuICAgIC8vIFdlIGFjdHVhbGx5IGp1c3QgYXV0by1lc2NhcGUgdGhlc2UuXG4gICAgZGVsaW1zID0gWyc8JywgJz4nLCAnXCInLCAnYCcsICcgJywgJ1xccicsICdcXG4nLCAnXFx0J10sXG5cbiAgICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyBub3QgYWxsb3dlZCBmb3IgdmFyaW91cyByZWFzb25zLlxuICAgIHVud2lzZSA9IFsneycsICd9JywgJ3wnLCAnXFxcXCcsICdeJywgJ2AnXS5jb25jYXQoZGVsaW1zKSxcblxuICAgIC8vIEFsbG93ZWQgYnkgUkZDcywgYnV0IGNhdXNlIG9mIFhTUyBhdHRhY2tzLiAgQWx3YXlzIGVzY2FwZSB0aGVzZS5cbiAgICBhdXRvRXNjYXBlID0gWydcXCcnXS5jb25jYXQodW53aXNlKSxcbiAgICAvLyBDaGFyYWN0ZXJzIHRoYXQgYXJlIG5ldmVyIGV2ZXIgYWxsb3dlZCBpbiBhIGhvc3RuYW1lLlxuICAgIC8vIE5vdGUgdGhhdCBhbnkgaW52YWxpZCBjaGFycyBhcmUgYWxzbyBoYW5kbGVkLCBidXQgdGhlc2VcbiAgICAvLyBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgKmV4cGVjdGVkKiB0byBiZSBzZWVuLCBzbyB3ZSBmYXN0LXBhdGhcbiAgICAvLyB0aGVtLlxuICAgIG5vbkhvc3RDaGFycyA9IFsnJScsICcvJywgJz8nLCAnOycsICcjJ10uY29uY2F0KGF1dG9Fc2NhcGUpLFxuICAgIGhvc3RFbmRpbmdDaGFycyA9IFsnLycsICc/JywgJyMnXSxcbiAgICBob3N0bmFtZU1heExlbiA9IDI1NSxcbiAgICBob3N0bmFtZVBhcnRQYXR0ZXJuID0gL15bK2EtejAtOUEtWl8tXXswLDYzfSQvLFxuICAgIGhvc3RuYW1lUGFydFN0YXJ0ID0gL14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLFxuICAgIC8vIHByb3RvY29scyB0aGF0IGNhbiBhbGxvdyBcInVuc2FmZVwiIGFuZCBcInVud2lzZVwiIGNoYXJzLlxuICAgIHVuc2FmZVByb3RvY29sID0ge1xuICAgICAgJ2phdmFzY3JpcHQnOiB0cnVlLFxuICAgICAgJ2phdmFzY3JpcHQ6JzogdHJ1ZVxuICAgIH0sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgbmV2ZXIgaGF2ZSBhIGhvc3RuYW1lLlxuICAgIGhvc3RsZXNzUHJvdG9jb2wgPSB7XG4gICAgICAnamF2YXNjcmlwdCc6IHRydWUsXG4gICAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gICAgfSxcbiAgICAvLyBwcm90b2NvbHMgdGhhdCBhbHdheXMgY29udGFpbiBhIC8vIGJpdC5cbiAgICBzbGFzaGVkUHJvdG9jb2wgPSB7XG4gICAgICAnaHR0cCc6IHRydWUsXG4gICAgICAnaHR0cHMnOiB0cnVlLFxuICAgICAgJ2Z0cCc6IHRydWUsXG4gICAgICAnZ29waGVyJzogdHJ1ZSxcbiAgICAgICdmaWxlJzogdHJ1ZSxcbiAgICAgICdodHRwOic6IHRydWUsXG4gICAgICAnaHR0cHM6JzogdHJ1ZSxcbiAgICAgICdmdHA6JzogdHJ1ZSxcbiAgICAgICdnb3BoZXI6JzogdHJ1ZSxcbiAgICAgICdmaWxlOic6IHRydWVcbiAgICB9LFxuICAgIHF1ZXJ5c3RyaW5nID0gcmVxdWlyZSgncXVlcnlzdHJpbmcnKTtcblxuZnVuY3Rpb24gdXJsUGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICBpZiAodXJsICYmIHV0aWwuaXNPYmplY3QodXJsKSAmJiB1cmwgaW5zdGFuY2VvZiBVcmwpIHJldHVybiB1cmw7XG5cbiAgdmFyIHUgPSBuZXcgVXJsO1xuICB1LnBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpO1xuICByZXR1cm4gdTtcbn1cblxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKCF1dGlsLmlzU3RyaW5nKHVybCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUGFyYW1ldGVyICd1cmwnIG11c3QgYmUgYSBzdHJpbmcsIG5vdCBcIiArIHR5cGVvZiB1cmwpO1xuICB9XG5cbiAgLy8gQ29weSBjaHJvbWUsIElFLCBvcGVyYSBiYWNrc2xhc2gtaGFuZGxpbmcgYmVoYXZpb3IuXG4gIC8vIEJhY2sgc2xhc2hlcyBiZWZvcmUgdGhlIHF1ZXJ5IHN0cmluZyBnZXQgY29udmVydGVkIHRvIGZvcndhcmQgc2xhc2hlc1xuICAvLyBTZWU6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0yNTkxNlxuICB2YXIgcXVlcnlJbmRleCA9IHVybC5pbmRleE9mKCc/JyksXG4gICAgICBzcGxpdHRlciA9XG4gICAgICAgICAgKHF1ZXJ5SW5kZXggIT09IC0xICYmIHF1ZXJ5SW5kZXggPCB1cmwuaW5kZXhPZignIycpKSA/ICc/JyA6ICcjJyxcbiAgICAgIHVTcGxpdCA9IHVybC5zcGxpdChzcGxpdHRlciksXG4gICAgICBzbGFzaFJlZ2V4ID0gL1xcXFwvZztcbiAgdVNwbGl0WzBdID0gdVNwbGl0WzBdLnJlcGxhY2Uoc2xhc2hSZWdleCwgJy8nKTtcbiAgdXJsID0gdVNwbGl0LmpvaW4oc3BsaXR0ZXIpO1xuXG4gIHZhciByZXN0ID0gdXJsO1xuXG4gIC8vIHRyaW0gYmVmb3JlIHByb2NlZWRpbmcuXG4gIC8vIFRoaXMgaXMgdG8gc3VwcG9ydCBwYXJzZSBzdHVmZiBsaWtlIFwiICBodHRwOi8vZm9vLmNvbSAgXFxuXCJcbiAgcmVzdCA9IHJlc3QudHJpbSgpO1xuXG4gIGlmICghc2xhc2hlc0Rlbm90ZUhvc3QgJiYgdXJsLnNwbGl0KCcjJykubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gVHJ5IGZhc3QgcGF0aCByZWdleHBcbiAgICB2YXIgc2ltcGxlUGF0aCA9IHNpbXBsZVBhdGhQYXR0ZXJuLmV4ZWMocmVzdCk7XG4gICAgaWYgKHNpbXBsZVBhdGgpIHtcbiAgICAgIHRoaXMucGF0aCA9IHJlc3Q7XG4gICAgICB0aGlzLmhyZWYgPSByZXN0O1xuICAgICAgdGhpcy5wYXRobmFtZSA9IHNpbXBsZVBhdGhbMV07XG4gICAgICBpZiAoc2ltcGxlUGF0aFsyXSkge1xuICAgICAgICB0aGlzLnNlYXJjaCA9IHNpbXBsZVBhdGhbMl07XG4gICAgICAgIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeSA9IHF1ZXJ5c3RyaW5nLnBhcnNlKHRoaXMuc2VhcmNoLnN1YnN0cigxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuc2VhcmNoLnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gJyc7XG4gICAgICAgIHRoaXMucXVlcnkgPSB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcm90byA9IHByb3RvY29sUGF0dGVybi5leGVjKHJlc3QpO1xuICBpZiAocHJvdG8pIHtcbiAgICBwcm90byA9IHByb3RvWzBdO1xuICAgIHZhciBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnByb3RvY29sID0gbG93ZXJQcm90bztcbiAgICByZXN0ID0gcmVzdC5zdWJzdHIocHJvdG8ubGVuZ3RoKTtcbiAgfVxuXG4gIC8vIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYSBob3N0XG4gIC8vIHVzZXJAc2VydmVyIGlzICphbHdheXMqIGludGVycHJldGVkIGFzIGEgaG9zdG5hbWUsIGFuZCB1cmxcbiAgLy8gcmVzb2x1dGlvbiB3aWxsIHRyZWF0IC8vZm9vL2JhciBhcyBob3N0PWZvbyxwYXRoPWJhciBiZWNhdXNlIHRoYXQnc1xuICAvLyBob3cgdGhlIGJyb3dzZXIgcmVzb2x2ZXMgcmVsYXRpdmUgVVJMcy5cbiAgaWYgKHNsYXNoZXNEZW5vdGVIb3N0IHx8IHByb3RvIHx8IHJlc3QubWF0Y2goL15cXC9cXC9bXkBcXC9dK0BbXkBcXC9dKy8pKSB7XG4gICAgdmFyIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gJy8vJztcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgdGhpcy5zbGFzaGVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dICYmXG4gICAgICAoc2xhc2hlcyB8fCAocHJvdG8gJiYgIXNsYXNoZWRQcm90b2NvbFtwcm90b10pKSkge1xuXG4gICAgLy8gdGhlcmUncyBhIGhvc3RuYW1lLlxuICAgIC8vIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiAvLCA/LCA7LCBvciAjIGVuZHMgdGhlIGhvc3QuXG4gICAgLy9cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBAIGluIHRoZSBob3N0bmFtZSwgdGhlbiBub24taG9zdCBjaGFycyAqYXJlKiBhbGxvd2VkXG4gICAgLy8gdG8gdGhlIGxlZnQgb2YgdGhlIGxhc3QgQCBzaWduLCB1bmxlc3Mgc29tZSBob3N0LWVuZGluZyBjaGFyYWN0ZXJcbiAgICAvLyBjb21lcyAqYmVmb3JlKiB0aGUgQC1zaWduLlxuICAgIC8vIFVSTHMgYXJlIG9ibm94aW91cy5cbiAgICAvL1xuICAgIC8vIGV4OlxuICAgIC8vIGh0dHA6Ly9hQGJAYy8gPT4gdXNlcjphQGIgaG9zdDpjXG4gICAgLy8gaHR0cDovL2FAYj9AYyA9PiB1c2VyOmEgaG9zdDpjIHBhdGg6Lz9AY1xuXG4gICAgLy8gdjAuMTIgVE9ETyhpc2FhY3MpOiBUaGlzIGlzIG5vdCBxdWl0ZSBob3cgQ2hyb21lIGRvZXMgdGhpbmdzLlxuICAgIC8vIFJldmlldyBvdXIgdGVzdCBjYXNlIGFnYWluc3QgYnJvd3NlcnMgbW9yZSBjb21wcmVoZW5zaXZlbHkuXG5cbiAgICAvLyBmaW5kIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBhbnkgaG9zdEVuZGluZ0NoYXJzXG4gICAgdmFyIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhvc3RFbmRpbmdDaGFycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhlYyA9IHJlc3QuaW5kZXhPZihob3N0RW5kaW5nQ2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cblxuICAgIC8vIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgIC8vIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgIHZhciBhdXRoLCBhdFNpZ247XG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICAvLyBhdFNpZ24gY2FuIGJlIGFueXdoZXJlLlxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhdFNpZ24gbXVzdCBiZSBpbiBhdXRoIHBvcnRpb24uXG4gICAgICAvLyBodHRwOi8vYUBiL2NAZCA9PiBob3N0OmIgYXV0aDphIHBhdGg6L2NAZFxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcsIGhvc3RFbmQpO1xuICAgIH1cblxuICAgIC8vIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgIC8vIFB1bGwgdGhhdCBvZmYuXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHRoaXMuYXV0aCA9IGRlY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICB9XG5cbiAgICAvLyB0aGUgaG9zdCBpcyB0aGUgcmVtYWluaW5nIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBub24taG9zdCBjaGFyXG4gICAgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9uSG9zdENoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGVjID0gcmVzdC5pbmRleE9mKG5vbkhvc3RDaGFyc1tpXSk7XG4gICAgICBpZiAoaGVjICE9PSAtMSAmJiAoaG9zdEVuZCA9PT0gLTEgfHwgaGVjIDwgaG9zdEVuZCkpXG4gICAgICAgIGhvc3RFbmQgPSBoZWM7XG4gICAgfVxuICAgIC8vIGlmIHdlIHN0aWxsIGhhdmUgbm90IGhpdCBpdCwgdGhlbiB0aGUgZW50aXJlIHRoaW5nIGlzIGEgaG9zdC5cbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpXG4gICAgICBob3N0RW5kID0gcmVzdC5sZW5ndGg7XG5cbiAgICB0aGlzLmhvc3QgPSByZXN0LnNsaWNlKDAsIGhvc3RFbmQpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKGhvc3RFbmQpO1xuXG4gICAgLy8gcHVsbCBvdXQgcG9ydC5cbiAgICB0aGlzLnBhcnNlSG9zdCgpO1xuXG4gICAgLy8gd2UndmUgaW5kaWNhdGVkIHRoYXQgdGhlcmUgaXMgYSBob3N0bmFtZSxcbiAgICAvLyBzbyBldmVuIGlmIGl0J3MgZW1wdHksIGl0IGhhcyB0byBiZSBwcmVzZW50LlxuICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lIHx8ICcnO1xuXG4gICAgLy8gaWYgaG9zdG5hbWUgYmVnaW5zIHdpdGggWyBhbmQgZW5kcyB3aXRoIF1cbiAgICAvLyBhc3N1bWUgdGhhdCBpdCdzIGFuIElQdjYgYWRkcmVzcy5cbiAgICB2YXIgaXB2Nkhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZVswXSA9PT0gJ1snICYmXG4gICAgICAgIHRoaXMuaG9zdG5hbWVbdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAxXSA9PT0gJ10nO1xuXG4gICAgLy8gdmFsaWRhdGUgYSBsaXR0bGUuXG4gICAgaWYgKCFpcHY2SG9zdG5hbWUpIHtcbiAgICAgIHZhciBob3N0cGFydHMgPSB0aGlzLmhvc3RuYW1lLnNwbGl0KC9cXC4vKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gaG9zdHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB2YXIgcGFydCA9IGhvc3RwYXJ0c1tpXTtcbiAgICAgICAgaWYgKCFwYXJ0KSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgdmFyIG5ld3BhcnQgPSAnJztcbiAgICAgICAgICBmb3IgKHZhciBqID0gMCwgayA9IHBhcnQubGVuZ3RoOyBqIDwgazsgaisrKSB7XG4gICAgICAgICAgICBpZiAocGFydC5jaGFyQ29kZUF0KGopID4gMTI3KSB7XG4gICAgICAgICAgICAgIC8vIHdlIHJlcGxhY2Ugbm9uLUFTQ0lJIGNoYXIgd2l0aCBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gbWFrZSBzdXJlIHNpemUgb2YgaG9zdG5hbWUgaXMgbm90XG4gICAgICAgICAgICAgIC8vIGJyb2tlbiBieSByZXBsYWNpbmcgbm9uLUFTQ0lJIGJ5IG5vdGhpbmdcbiAgICAgICAgICAgICAgbmV3cGFydCArPSAneCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9IHBhcnRbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHdlIHRlc3QgYWdhaW4gd2l0aCBBU0NJSSBjaGFyIG9ubHlcbiAgICAgICAgICBpZiAoIW5ld3BhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZFBhcnRzID0gaG9zdHBhcnRzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgdmFyIG5vdEhvc3QgPSBob3N0cGFydHMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgdmFyIGJpdCA9IHBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0U3RhcnQpO1xuICAgICAgICAgICAgaWYgKGJpdCkge1xuICAgICAgICAgICAgICB2YWxpZFBhcnRzLnB1c2goYml0WzFdKTtcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm90SG9zdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzdCA9ICcvJyArIG5vdEhvc3Quam9pbignLicpICsgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaG9zdG5hbWUgPSB2YWxpZFBhcnRzLmpvaW4oJy4nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhvc3RuYW1lLmxlbmd0aCA+IGhvc3RuYW1lTWF4TGVuKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvc3RuYW1lcyBhcmUgYWx3YXlzIGxvd2VyIGNhc2UuXG4gICAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICAvLyBJRE5BIFN1cHBvcnQ6IFJldHVybnMgYSBwdW55Y29kZWQgcmVwcmVzZW50YXRpb24gb2YgXCJkb21haW5cIi5cbiAgICAgIC8vIEl0IG9ubHkgY29udmVydHMgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHRoYXRcbiAgICAgIC8vIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWZcbiAgICAgIC8vIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCBhbHJlYWR5IGlzIEFTQ0lJLW9ubHkuXG4gICAgICB0aGlzLmhvc3RuYW1lID0gcHVueWNvZGUudG9BU0NJSSh0aGlzLmhvc3RuYW1lKTtcbiAgICB9XG5cbiAgICB2YXIgcCA9IHRoaXMucG9ydCA/ICc6JyArIHRoaXMucG9ydCA6ICcnO1xuICAgIHZhciBoID0gdGhpcy5ob3N0bmFtZSB8fCAnJztcbiAgICB0aGlzLmhvc3QgPSBoICsgcDtcbiAgICB0aGlzLmhyZWYgKz0gdGhpcy5ob3N0O1xuXG4gICAgLy8gc3RyaXAgWyBhbmQgXSBmcm9tIHRoZSBob3N0bmFtZVxuICAgIC8vIHRoZSBob3N0IGZpZWxkIHN0aWxsIHJldGFpbnMgdGhlbSwgdGhvdWdoXG4gICAgaWYgKGlwdjZIb3N0bmFtZSkge1xuICAgICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUuc3Vic3RyKDEsIHRoaXMuaG9zdG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBpZiAocmVzdFswXSAhPT0gJy8nKSB7XG4gICAgICAgIHJlc3QgPSAnLycgKyByZXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIG5vdyByZXN0IGlzIHNldCB0byB0aGUgcG9zdC1ob3N0IHN0dWZmLlxuICAvLyBjaG9wIG9mZiBhbnkgZGVsaW0gY2hhcnMuXG4gIGlmICghdW5zYWZlUHJvdG9jb2xbbG93ZXJQcm90b10pIHtcblxuICAgIC8vIEZpcnN0LCBtYWtlIDEwMCUgc3VyZSB0aGF0IGFueSBcImF1dG9Fc2NhcGVcIiBjaGFycyBnZXRcbiAgICAvLyBlc2NhcGVkLCBldmVuIGlmIGVuY29kZVVSSUNvbXBvbmVudCBkb2Vzbid0IHRoaW5rIHRoZXlcbiAgICAvLyBuZWVkIHRvIGJlLlxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXV0b0VzY2FwZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBhZSA9IGF1dG9Fc2NhcGVbaV07XG4gICAgICBpZiAocmVzdC5pbmRleE9mKGFlKSA9PT0gLTEpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgdmFyIGVzYyA9IGVuY29kZVVSSUNvbXBvbmVudChhZSk7XG4gICAgICBpZiAoZXNjID09PSBhZSkge1xuICAgICAgICBlc2MgPSBlc2NhcGUoYWUpO1xuICAgICAgfVxuICAgICAgcmVzdCA9IHJlc3Quc3BsaXQoYWUpLmpvaW4oZXNjKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vIGNob3Agb2ZmIGZyb20gdGhlIHRhaWwgZmlyc3QuXG4gIHZhciBoYXNoID0gcmVzdC5pbmRleE9mKCcjJyk7XG4gIGlmIChoYXNoICE9PSAtMSkge1xuICAgIC8vIGdvdCBhIGZyYWdtZW50IHN0cmluZy5cbiAgICB0aGlzLmhhc2ggPSByZXN0LnN1YnN0cihoYXNoKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBoYXNoKTtcbiAgfVxuICB2YXIgcW0gPSByZXN0LmluZGV4T2YoJz8nKTtcbiAgaWYgKHFtICE9PSAtMSkge1xuICAgIHRoaXMuc2VhcmNoID0gcmVzdC5zdWJzdHIocW0pO1xuICAgIHRoaXMucXVlcnkgPSByZXN0LnN1YnN0cihxbSArIDEpO1xuICAgIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnlzdHJpbmcucGFyc2UodGhpcy5xdWVyeSk7XG4gICAgfVxuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIHFtKTtcbiAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgLy8gbm8gcXVlcnkgc3RyaW5nLCBidXQgcGFyc2VRdWVyeVN0cmluZyBzdGlsbCByZXF1ZXN0ZWRcbiAgICB0aGlzLnNlYXJjaCA9ICcnO1xuICAgIHRoaXMucXVlcnkgPSB7fTtcbiAgfVxuICBpZiAocmVzdCkgdGhpcy5wYXRobmFtZSA9IHJlc3Q7XG4gIGlmIChzbGFzaGVkUHJvdG9jb2xbbG93ZXJQcm90b10gJiZcbiAgICAgIHRoaXMuaG9zdG5hbWUgJiYgIXRoaXMucGF0aG5hbWUpIHtcbiAgICB0aGlzLnBhdGhuYW1lID0gJy8nO1xuICB9XG5cbiAgLy90byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICBpZiAodGhpcy5wYXRobmFtZSB8fCB0aGlzLnNlYXJjaCkge1xuICAgIHZhciBwID0gdGhpcy5wYXRobmFtZSB8fCAnJztcbiAgICB2YXIgcyA9IHRoaXMuc2VhcmNoIHx8ICcnO1xuICAgIHRoaXMucGF0aCA9IHAgKyBzO1xuICB9XG5cbiAgLy8gZmluYWxseSwgcmVjb25zdHJ1Y3QgdGhlIGhyZWYgYmFzZWQgb24gd2hhdCBoYXMgYmVlbiB2YWxpZGF0ZWQuXG4gIHRoaXMuaHJlZiA9IHRoaXMuZm9ybWF0KCk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gZm9ybWF0IGEgcGFyc2VkIG9iamVjdCBpbnRvIGEgdXJsIHN0cmluZ1xuZnVuY3Rpb24gdXJsRm9ybWF0KG9iaikge1xuICAvLyBlbnN1cmUgaXQncyBhbiBvYmplY3QsIGFuZCBub3QgYSBzdHJpbmcgdXJsLlxuICAvLyBJZiBpdCdzIGFuIG9iaiwgdGhpcyBpcyBhIG5vLW9wLlxuICAvLyB0aGlzIHdheSwgeW91IGNhbiBjYWxsIHVybF9mb3JtYXQoKSBvbiBzdHJpbmdzXG4gIC8vIHRvIGNsZWFuIHVwIHBvdGVudGlhbGx5IHdvbmt5IHVybHMuXG4gIGlmICh1dGlsLmlzU3RyaW5nKG9iaikpIG9iaiA9IHVybFBhcnNlKG9iaik7XG4gIGlmICghKG9iaiBpbnN0YW5jZW9mIFVybCkpIHJldHVybiBVcmwucHJvdG90eXBlLmZvcm1hdC5jYWxsKG9iaik7XG4gIHJldHVybiBvYmouZm9ybWF0KCk7XG59XG5cblVybC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBhdXRoID0gdGhpcy5hdXRoIHx8ICcnO1xuICBpZiAoYXV0aCkge1xuICAgIGF1dGggPSBlbmNvZGVVUklDb21wb25lbnQoYXV0aCk7XG4gICAgYXV0aCA9IGF1dGgucmVwbGFjZSgvJTNBL2ksICc6Jyk7XG4gICAgYXV0aCArPSAnQCc7XG4gIH1cblxuICB2YXIgcHJvdG9jb2wgPSB0aGlzLnByb3RvY29sIHx8ICcnLFxuICAgICAgcGF0aG5hbWUgPSB0aGlzLnBhdGhuYW1lIHx8ICcnLFxuICAgICAgaGFzaCA9IHRoaXMuaGFzaCB8fCAnJyxcbiAgICAgIGhvc3QgPSBmYWxzZSxcbiAgICAgIHF1ZXJ5ID0gJyc7XG5cbiAgaWYgKHRoaXMuaG9zdCkge1xuICAgIGhvc3QgPSBhdXRoICsgdGhpcy5ob3N0O1xuICB9IGVsc2UgaWYgKHRoaXMuaG9zdG5hbWUpIHtcbiAgICBob3N0ID0gYXV0aCArICh0aGlzLmhvc3RuYW1lLmluZGV4T2YoJzonKSA9PT0gLTEgP1xuICAgICAgICB0aGlzLmhvc3RuYW1lIDpcbiAgICAgICAgJ1snICsgdGhpcy5ob3N0bmFtZSArICddJyk7XG4gICAgaWYgKHRoaXMucG9ydCkge1xuICAgICAgaG9zdCArPSAnOicgKyB0aGlzLnBvcnQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMucXVlcnkgJiZcbiAgICAgIHV0aWwuaXNPYmplY3QodGhpcy5xdWVyeSkgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMucXVlcnkpLmxlbmd0aCkge1xuICAgIHF1ZXJ5ID0gcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHRoaXMucXVlcnkpO1xuICB9XG5cbiAgdmFyIHNlYXJjaCA9IHRoaXMuc2VhcmNoIHx8IChxdWVyeSAmJiAoJz8nICsgcXVlcnkpKSB8fCAnJztcblxuICBpZiAocHJvdG9jb2wgJiYgcHJvdG9jb2wuc3Vic3RyKC0xKSAhPT0gJzonKSBwcm90b2NvbCArPSAnOic7XG5cbiAgLy8gb25seSB0aGUgc2xhc2hlZFByb3RvY29scyBnZXQgdGhlIC8vLiAgTm90IG1haWx0bzosIHhtcHA6LCBldGMuXG4gIC8vIHVubGVzcyB0aGV5IGhhZCB0aGVtIHRvIGJlZ2luIHdpdGguXG4gIGlmICh0aGlzLnNsYXNoZXMgfHxcbiAgICAgICghcHJvdG9jb2wgfHwgc2xhc2hlZFByb3RvY29sW3Byb3RvY29sXSkgJiYgaG9zdCAhPT0gZmFsc2UpIHtcbiAgICBob3N0ID0gJy8vJyArIChob3N0IHx8ICcnKTtcbiAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWUuY2hhckF0KDApICE9PSAnLycpIHBhdGhuYW1lID0gJy8nICsgcGF0aG5hbWU7XG4gIH0gZWxzZSBpZiAoIWhvc3QpIHtcbiAgICBob3N0ID0gJyc7XG4gIH1cblxuICBpZiAoaGFzaCAmJiBoYXNoLmNoYXJBdCgwKSAhPT0gJyMnKSBoYXNoID0gJyMnICsgaGFzaDtcbiAgaWYgKHNlYXJjaCAmJiBzZWFyY2guY2hhckF0KDApICE9PSAnPycpIHNlYXJjaCA9ICc/JyArIHNlYXJjaDtcblxuICBwYXRobmFtZSA9IHBhdGhuYW1lLnJlcGxhY2UoL1s/I10vZywgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KG1hdGNoKTtcbiAgfSk7XG4gIHNlYXJjaCA9IHNlYXJjaC5yZXBsYWNlKCcjJywgJyUyMycpO1xuXG4gIHJldHVybiBwcm90b2NvbCArIGhvc3QgKyBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG59O1xuXG5mdW5jdGlvbiB1cmxSZXNvbHZlKHNvdXJjZSwgcmVsYXRpdmUpIHtcbiAgcmV0dXJuIHVybFBhcnNlKHNvdXJjZSwgZmFsc2UsIHRydWUpLnJlc29sdmUocmVsYXRpdmUpO1xufVxuXG5VcmwucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbihyZWxhdGl2ZSkge1xuICByZXR1cm4gdGhpcy5yZXNvbHZlT2JqZWN0KHVybFBhcnNlKHJlbGF0aXZlLCBmYWxzZSwgdHJ1ZSkpLmZvcm1hdCgpO1xufTtcblxuZnVuY3Rpb24gdXJsUmVzb2x2ZU9iamVjdChzb3VyY2UsIHJlbGF0aXZlKSB7XG4gIGlmICghc291cmNlKSByZXR1cm4gcmVsYXRpdmU7XG4gIHJldHVybiB1cmxQYXJzZShzb3VyY2UsIGZhbHNlLCB0cnVlKS5yZXNvbHZlT2JqZWN0KHJlbGF0aXZlKTtcbn1cblxuVXJsLnByb3RvdHlwZS5yZXNvbHZlT2JqZWN0ID0gZnVuY3Rpb24ocmVsYXRpdmUpIHtcbiAgaWYgKHV0aWwuaXNTdHJpbmcocmVsYXRpdmUpKSB7XG4gICAgdmFyIHJlbCA9IG5ldyBVcmwoKTtcbiAgICByZWwucGFyc2UocmVsYXRpdmUsIGZhbHNlLCB0cnVlKTtcbiAgICByZWxhdGl2ZSA9IHJlbDtcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBuZXcgVXJsKCk7XG4gIHZhciB0a2V5cyA9IE9iamVjdC5rZXlzKHRoaXMpO1xuICBmb3IgKHZhciB0ayA9IDA7IHRrIDwgdGtleXMubGVuZ3RoOyB0aysrKSB7XG4gICAgdmFyIHRrZXkgPSB0a2V5c1t0a107XG4gICAgcmVzdWx0W3RrZXldID0gdGhpc1t0a2V5XTtcbiAgfVxuXG4gIC8vIGhhc2ggaXMgYWx3YXlzIG92ZXJyaWRkZW4sIG5vIG1hdHRlciB3aGF0LlxuICAvLyBldmVuIGhyZWY9XCJcIiB3aWxsIHJlbW92ZSBpdC5cbiAgcmVzdWx0Lmhhc2ggPSByZWxhdGl2ZS5oYXNoO1xuXG4gIC8vIGlmIHRoZSByZWxhdGl2ZSB1cmwgaXMgZW1wdHksIHRoZW4gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gZG8gaGVyZS5cbiAgaWYgKHJlbGF0aXZlLmhyZWYgPT09ICcnKSB7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGhyZWZzIGxpa2UgLy9mb28vYmFyIGFsd2F5cyBjdXQgdG8gdGhlIHByb3RvY29sLlxuICBpZiAocmVsYXRpdmUuc2xhc2hlcyAmJiAhcmVsYXRpdmUucHJvdG9jb2wpIHtcbiAgICAvLyB0YWtlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBwcm90b2NvbCBmcm9tIHJlbGF0aXZlXG4gICAgdmFyIHJrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgIGZvciAodmFyIHJrID0gMDsgcmsgPCBya2V5cy5sZW5ndGg7IHJrKyspIHtcbiAgICAgIHZhciBya2V5ID0gcmtleXNbcmtdO1xuICAgICAgaWYgKHJrZXkgIT09ICdwcm90b2NvbCcpXG4gICAgICAgIHJlc3VsdFtya2V5XSA9IHJlbGF0aXZlW3JrZXldO1xuICAgIH1cblxuICAgIC8vdXJsUGFyc2UgYXBwZW5kcyB0cmFpbGluZyAvIHRvIHVybHMgbGlrZSBodHRwOi8vd3d3LmV4YW1wbGUuY29tXG4gICAgaWYgKHNsYXNoZWRQcm90b2NvbFtyZXN1bHQucHJvdG9jb2xdICYmXG4gICAgICAgIHJlc3VsdC5ob3N0bmFtZSAmJiAhcmVzdWx0LnBhdGhuYW1lKSB7XG4gICAgICByZXN1bHQucGF0aCA9IHJlc3VsdC5wYXRobmFtZSA9ICcvJztcbiAgICB9XG5cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKHJlbGF0aXZlLnByb3RvY29sICYmIHJlbGF0aXZlLnByb3RvY29sICE9PSByZXN1bHQucHJvdG9jb2wpIHtcbiAgICAvLyBpZiBpdCdzIGEga25vd24gdXJsIHByb3RvY29sLCB0aGVuIGNoYW5naW5nXG4gICAgLy8gdGhlIHByb3RvY29sIGRvZXMgd2VpcmQgdGhpbmdzXG4gICAgLy8gZmlyc3QsIGlmIGl0J3Mgbm90IGZpbGU6LCB0aGVuIHdlIE1VU1QgaGF2ZSBhIGhvc3QsXG4gICAgLy8gYW5kIGlmIHRoZXJlIHdhcyBhIHBhdGhcbiAgICAvLyB0byBiZWdpbiB3aXRoLCB0aGVuIHdlIE1VU1QgaGF2ZSBhIHBhdGguXG4gICAgLy8gaWYgaXQgaXMgZmlsZTosIHRoZW4gdGhlIGhvc3QgaXMgZHJvcHBlZCxcbiAgICAvLyBiZWNhdXNlIHRoYXQncyBrbm93biB0byBiZSBob3N0bGVzcy5cbiAgICAvLyBhbnl0aGluZyBlbHNlIGlzIGFzc3VtZWQgdG8gYmUgYWJzb2x1dGUuXG4gICAgaWYgKCFzbGFzaGVkUHJvdG9jb2xbcmVsYXRpdmUucHJvdG9jb2xdKSB7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHJlbGF0aXZlKTtcbiAgICAgIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgICAgICB2YXIgayA9IGtleXNbdl07XG4gICAgICAgIHJlc3VsdFtrXSA9IHJlbGF0aXZlW2tdO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHJlc3VsdC5wcm90b2NvbCA9IHJlbGF0aXZlLnByb3RvY29sO1xuICAgIGlmICghcmVsYXRpdmUuaG9zdCAmJiAhaG9zdGxlc3NQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciByZWxQYXRoID0gKHJlbGF0aXZlLnBhdGhuYW1lIHx8ICcnKS5zcGxpdCgnLycpO1xuICAgICAgd2hpbGUgKHJlbFBhdGgubGVuZ3RoICYmICEocmVsYXRpdmUuaG9zdCA9IHJlbFBhdGguc2hpZnQoKSkpO1xuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0KSByZWxhdGl2ZS5ob3N0ID0gJyc7XG4gICAgICBpZiAoIXJlbGF0aXZlLmhvc3RuYW1lKSByZWxhdGl2ZS5ob3N0bmFtZSA9ICcnO1xuICAgICAgaWYgKHJlbFBhdGhbMF0gIT09ICcnKSByZWxQYXRoLnVuc2hpZnQoJycpO1xuICAgICAgaWYgKHJlbFBhdGgubGVuZ3RoIDwgMikgcmVsUGF0aC51bnNoaWZ0KCcnKTtcbiAgICAgIHJlc3VsdC5wYXRobmFtZSA9IHJlbFBhdGguam9pbignLycpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucGF0aG5hbWUgPSByZWxhdGl2ZS5wYXRobmFtZTtcbiAgICB9XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICByZXN1bHQuaG9zdCA9IHJlbGF0aXZlLmhvc3QgfHwgJyc7XG4gICAgcmVzdWx0LmF1dGggPSByZWxhdGl2ZS5hdXRoO1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlbGF0aXZlLmhvc3RuYW1lIHx8IHJlbGF0aXZlLmhvc3Q7XG4gICAgcmVzdWx0LnBvcnQgPSByZWxhdGl2ZS5wb3J0O1xuICAgIC8vIHRvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKHJlc3VsdC5wYXRobmFtZSB8fCByZXN1bHQuc2VhcmNoKSB7XG4gICAgICB2YXIgcCA9IHJlc3VsdC5wYXRobmFtZSB8fCAnJztcbiAgICAgIHZhciBzID0gcmVzdWx0LnNlYXJjaCB8fCAnJztcbiAgICAgIHJlc3VsdC5wYXRoID0gcCArIHM7XG4gICAgfVxuICAgIHJlc3VsdC5zbGFzaGVzID0gcmVzdWx0LnNsYXNoZXMgfHwgcmVsYXRpdmUuc2xhc2hlcztcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgdmFyIGlzU291cmNlQWJzID0gKHJlc3VsdC5wYXRobmFtZSAmJiByZXN1bHQucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpLFxuICAgICAgaXNSZWxBYnMgPSAoXG4gICAgICAgICAgcmVsYXRpdmUuaG9zdCB8fFxuICAgICAgICAgIHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nXG4gICAgICApLFxuICAgICAgbXVzdEVuZEFicyA9IChpc1JlbEFicyB8fCBpc1NvdXJjZUFicyB8fFxuICAgICAgICAgICAgICAgICAgICAocmVzdWx0Lmhvc3QgJiYgcmVsYXRpdmUucGF0aG5hbWUpKSxcbiAgICAgIHJlbW92ZUFsbERvdHMgPSBtdXN0RW5kQWJzLFxuICAgICAgc3JjUGF0aCA9IHJlc3VsdC5wYXRobmFtZSAmJiByZXN1bHQucGF0aG5hbWUuc3BsaXQoJy8nKSB8fCBbXSxcbiAgICAgIHJlbFBhdGggPSByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgICAgcHN5Y2hvdGljID0gcmVzdWx0LnByb3RvY29sICYmICFzbGFzaGVkUHJvdG9jb2xbcmVzdWx0LnByb3RvY29sXTtcblxuICAvLyBpZiB0aGUgdXJsIGlzIGEgbm9uLXNsYXNoZWQgdXJsLCB0aGVuIHJlbGF0aXZlXG4gIC8vIGxpbmtzIGxpa2UgLi4vLi4gc2hvdWxkIGJlIGFibGVcbiAgLy8gdG8gY3Jhd2wgdXAgdG8gdGhlIGhvc3RuYW1lLCBhcyB3ZWxsLiAgVGhpcyBpcyBzdHJhbmdlLlxuICAvLyByZXN1bHQucHJvdG9jb2wgaGFzIGFscmVhZHkgYmVlbiBzZXQgYnkgbm93LlxuICAvLyBMYXRlciBvbiwgcHV0IHRoZSBmaXJzdCBwYXRoIHBhcnQgaW50byB0aGUgaG9zdCBmaWVsZC5cbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9ICcnO1xuICAgIHJlc3VsdC5wb3J0ID0gbnVsbDtcbiAgICBpZiAocmVzdWx0Lmhvc3QpIHtcbiAgICAgIGlmIChzcmNQYXRoWzBdID09PSAnJykgc3JjUGF0aFswXSA9IHJlc3VsdC5ob3N0O1xuICAgICAgZWxzZSBzcmNQYXRoLnVuc2hpZnQocmVzdWx0Lmhvc3QpO1xuICAgIH1cbiAgICByZXN1bHQuaG9zdCA9ICcnO1xuICAgIGlmIChyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgPSBudWxsO1xuICAgICAgcmVsYXRpdmUucG9ydCA9IG51bGw7XG4gICAgICBpZiAocmVsYXRpdmUuaG9zdCkge1xuICAgICAgICBpZiAocmVsUGF0aFswXSA9PT0gJycpIHJlbFBhdGhbMF0gPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICBlbHNlIHJlbFBhdGgudW5zaGlmdChyZWxhdGl2ZS5ob3N0KTtcbiAgICAgIH1cbiAgICAgIHJlbGF0aXZlLmhvc3QgPSBudWxsO1xuICAgIH1cbiAgICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyAmJiAocmVsUGF0aFswXSA9PT0gJycgfHwgc3JjUGF0aFswXSA9PT0gJycpO1xuICB9XG5cbiAgaWYgKGlzUmVsQWJzKSB7XG4gICAgLy8gaXQncyBhYnNvbHV0ZS5cbiAgICByZXN1bHQuaG9zdCA9IChyZWxhdGl2ZS5ob3N0IHx8IHJlbGF0aXZlLmhvc3QgPT09ICcnKSA/XG4gICAgICAgICAgICAgICAgICByZWxhdGl2ZS5ob3N0IDogcmVzdWx0Lmhvc3Q7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gKHJlbGF0aXZlLmhvc3RuYW1lIHx8IHJlbGF0aXZlLmhvc3RuYW1lID09PSAnJykgP1xuICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlLmhvc3RuYW1lIDogcmVzdWx0Lmhvc3RuYW1lO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgc3JjUGF0aCA9IHJlbFBhdGg7XG4gICAgLy8gZmFsbCB0aHJvdWdoIHRvIHRoZSBkb3QtaGFuZGxpbmcgYmVsb3cuXG4gIH0gZWxzZSBpZiAocmVsUGF0aC5sZW5ndGgpIHtcbiAgICAvLyBpdCdzIHJlbGF0aXZlXG4gICAgLy8gdGhyb3cgYXdheSB0aGUgZXhpc3RpbmcgZmlsZSwgYW5kIHRha2UgdGhlIG5ldyBwYXRoIGluc3RlYWQuXG4gICAgaWYgKCFzcmNQYXRoKSBzcmNQYXRoID0gW107XG4gICAgc3JjUGF0aC5wb3AoKTtcbiAgICBzcmNQYXRoID0gc3JjUGF0aC5jb25jYXQocmVsUGF0aCk7XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgfSBlbHNlIGlmICghdXRpbC5pc051bGxPclVuZGVmaW5lZChyZWxhdGl2ZS5zZWFyY2gpKSB7XG4gICAgLy8ganVzdCBwdWxsIG91dCB0aGUgc2VhcmNoLlxuICAgIC8vIGxpa2UgaHJlZj0nP2ZvbycuXG4gICAgLy8gUHV0IHRoaXMgYWZ0ZXIgdGhlIG90aGVyIHR3byBjYXNlcyBiZWNhdXNlIGl0IHNpbXBsaWZpZXMgdGhlIGJvb2xlYW5zXG4gICAgaWYgKHBzeWNob3RpYykge1xuICAgICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVzdWx0Lmhvc3QgPSBzcmNQYXRoLnNoaWZ0KCk7XG4gICAgICAvL29jY2F0aW9uYWx5IHRoZSBhdXRoIGNhbiBnZXQgc3R1Y2sgb25seSBpbiBob3N0XG4gICAgICAvL3RoaXMgZXNwZWNpYWxseSBoYXBwZW5zIGluIGNhc2VzIGxpa2VcbiAgICAgIC8vdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgICB2YXIgYXV0aEluSG9zdCA9IHJlc3VsdC5ob3N0ICYmIHJlc3VsdC5ob3N0LmluZGV4T2YoJ0AnKSA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaG9zdC5zcGxpdCgnQCcpIDogZmFsc2U7XG4gICAgICBpZiAoYXV0aEluSG9zdCkge1xuICAgICAgICByZXN1bHQuYXV0aCA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgICAgcmVzdWx0Lmhvc3QgPSByZXN1bHQuaG9zdG5hbWUgPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgLy90byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmICghdXRpbC5pc051bGwocmVzdWx0LnBhdGhuYW1lKSB8fCAhdXRpbC5pc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gKHJlc3VsdC5wYXRobmFtZSA/IHJlc3VsdC5wYXRobmFtZSA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQuc2VhcmNoID8gcmVzdWx0LnNlYXJjaCA6ICcnKTtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmICghc3JjUGF0aC5sZW5ndGgpIHtcbiAgICAvLyBubyBwYXRoIGF0IGFsbC4gIGVhc3kuXG4gICAgLy8gd2UndmUgYWxyZWFkeSBoYW5kbGVkIHRoZSBvdGhlciBzdHVmZiBhYm92ZS5cbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnNlYXJjaCkge1xuICAgICAgcmVzdWx0LnBhdGggPSAnLycgKyByZXN1bHQuc2VhcmNoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBpZiBhIHVybCBFTkRzIGluIC4gb3IgLi4sIHRoZW4gaXQgbXVzdCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgLy8gaG93ZXZlciwgaWYgaXQgZW5kcyBpbiBhbnl0aGluZyBlbHNlIG5vbi1zbGFzaHksXG4gIC8vIHRoZW4gaXQgbXVzdCBOT1QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gIHZhciBsYXN0ID0gc3JjUGF0aC5zbGljZSgtMSlbMF07XG4gIHZhciBoYXNUcmFpbGluZ1NsYXNoID0gKFxuICAgICAgKHJlc3VsdC5ob3N0IHx8IHJlbGF0aXZlLmhvc3QgfHwgc3JjUGF0aC5sZW5ndGggPiAxKSAmJlxuICAgICAgKGxhc3QgPT09ICcuJyB8fCBsYXN0ID09PSAnLi4nKSB8fCBsYXN0ID09PSAnJyk7XG5cbiAgLy8gc3RyaXAgc2luZ2xlIGRvdHMsIHJlc29sdmUgZG91YmxlIGRvdHMgdG8gcGFyZW50IGRpclxuICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gc3JjUGF0aC5sZW5ndGg7IGkgPj0gMDsgaS0tKSB7XG4gICAgbGFzdCA9IHNyY1BhdGhbaV07XG4gICAgaWYgKGxhc3QgPT09ICcuJykge1xuICAgICAgc3JjUGF0aC5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgc3JjUGF0aC5zcGxpY2UoaSwgMSk7XG4gICAgICB1cC0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBwYXRoIGlzIGFsbG93ZWQgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIHJlc3RvcmUgbGVhZGluZyAuLnNcbiAgaWYgKCFtdXN0RW5kQWJzICYmICFyZW1vdmVBbGxEb3RzKSB7XG4gICAgZm9yICg7IHVwLS07IHVwKSB7XG4gICAgICBzcmNQYXRoLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG11c3RFbmRBYnMgJiYgc3JjUGF0aFswXSAhPT0gJycgJiZcbiAgICAgICghc3JjUGF0aFswXSB8fCBzcmNQYXRoWzBdLmNoYXJBdCgwKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoaGFzVHJhaWxpbmdTbGFzaCAmJiAoc3JjUGF0aC5qb2luKCcvJykuc3Vic3RyKC0xKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgucHVzaCgnJyk7XG4gIH1cblxuICB2YXIgaXNBYnNvbHV0ZSA9IHNyY1BhdGhbMF0gPT09ICcnIHx8XG4gICAgICAoc3JjUGF0aFswXSAmJiBzcmNQYXRoWzBdLmNoYXJBdCgwKSA9PT0gJy8nKTtcblxuICAvLyBwdXQgdGhlIGhvc3QgYmFja1xuICBpZiAocHN5Y2hvdGljKSB7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVzdWx0Lmhvc3QgPSBpc0Fic29sdXRlID8gJycgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUGF0aC5sZW5ndGggPyBzcmNQYXRoLnNoaWZ0KCkgOiAnJztcbiAgICAvL29jY2F0aW9uYWx5IHRoZSBhdXRoIGNhbiBnZXQgc3R1Y2sgb25seSBpbiBob3N0XG4gICAgLy90aGlzIGVzcGVjaWFsbHkgaGFwcGVucyBpbiBjYXNlcyBsaWtlXG4gICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICB2YXIgYXV0aEluSG9zdCA9IHJlc3VsdC5ob3N0ICYmIHJlc3VsdC5ob3N0LmluZGV4T2YoJ0AnKSA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICByZXN1bHQuYXV0aCA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgIH1cbiAgfVxuXG4gIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzIHx8IChyZXN1bHQuaG9zdCAmJiBzcmNQYXRoLmxlbmd0aCk7XG5cbiAgaWYgKG11c3RFbmRBYnMgJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IHNyY1BhdGguam9pbignLycpO1xuICB9XG5cbiAgLy90byBzdXBwb3J0IHJlcXVlc3QuaHR0cFxuICBpZiAoIXV0aWwuaXNOdWxsKHJlc3VsdC5wYXRobmFtZSkgfHwgIXV0aWwuaXNOdWxsKHJlc3VsdC5zZWFyY2gpKSB7XG4gICAgcmVzdWx0LnBhdGggPSAocmVzdWx0LnBhdGhuYW1lID8gcmVzdWx0LnBhdGhuYW1lIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChyZXN1bHQuc2VhcmNoID8gcmVzdWx0LnNlYXJjaCA6ICcnKTtcbiAgfVxuICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGggfHwgcmVzdWx0LmF1dGg7XG4gIHJlc3VsdC5zbGFzaGVzID0gcmVzdWx0LnNsYXNoZXMgfHwgcmVsYXRpdmUuc2xhc2hlcztcbiAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5VcmwucHJvdG90eXBlLnBhcnNlSG9zdCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaG9zdCA9IHRoaXMuaG9zdDtcbiAgdmFyIHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpO1xuICBpZiAocG9ydCkge1xuICAgIHBvcnQgPSBwb3J0WzBdO1xuICAgIGlmIChwb3J0ICE9PSAnOicpIHtcbiAgICAgIHRoaXMucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHRoaXMuaG9zdG5hbWUgPSBob3N0O1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/url/url.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/url/util.js":
|
||
/*!**********************************!*\
|
||
!*** ./node_modules/url/util.js ***!
|
||
\**********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdXJsL3V0aWwuanM/MzVlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3VybC91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNTdHJpbmc6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YoYXJnKSA9PT0gJ3N0cmluZyc7XG4gIH0sXG4gIGlzT2JqZWN0OiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gdHlwZW9mKGFyZykgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbiAgfSxcbiAgaXNOdWxsOiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnID09PSBudWxsO1xuICB9LFxuICBpc051bGxPclVuZGVmaW5lZDogZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGFyZyA9PSBudWxsO1xuICB9XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/url/util.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue-demi/lib/index.mjs":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/vue-demi/lib/index.mjs ***!
|
||
\*********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"del\", function() { return del; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Vue2\", function() { return Vue2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVue2\", function() { return isVue2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVue3\", function() { return isVue3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"install\", function() { return install; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/index.js\");\n/* harmony reexport (fake namespace object from non-harmony) */ __webpack_require__.d(__webpack_exports__, \"Vue\", function() { return __webpack_require__.t(vue__WEBPACK_IMPORTED_MODULE_0__); });\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in vue__WEBPACK_IMPORTED_MODULE_0__) if([\"default\",\"set\",\"del\",\"Vue\",\"Vue2\",\"isVue2\",\"isVue3\",\"install\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return vue__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nfunction set(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nfunction del(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWRlbWkvbGliL2luZGV4Lm1qcz84YWZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBCOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVtQjtBQU9sQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy92dWUtZGVtaS9saWIvaW5kZXgubWpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVnVlIGZyb20gJ3Z1ZSdcblxudmFyIGlzVnVlMiA9IGZhbHNlXG52YXIgaXNWdWUzID0gdHJ1ZVxudmFyIFZ1ZTIgPSB1bmRlZmluZWRcblxuZnVuY3Rpb24gaW5zdGFsbCgpIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXQodGFyZ2V0LCBrZXksIHZhbCkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgdGFyZ2V0Lmxlbmd0aCA9IE1hdGgubWF4KHRhcmdldC5sZW5ndGgsIGtleSlcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSwgdmFsKVxuICAgIHJldHVybiB2YWxcbiAgfVxuICB0YXJnZXRba2V5XSA9IHZhbFxuICByZXR1cm4gdmFsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWwodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxKVxuICAgIHJldHVyblxuICB9XG4gIGRlbGV0ZSB0YXJnZXRba2V5XVxufVxuXG5leHBvcnQgKiBmcm9tICd2dWUnXG5leHBvcnQge1xuICBWdWUsXG4gIFZ1ZTIsXG4gIGlzVnVlMixcbiAgaXNWdWUzLFxuICBpbnN0YWxsLFxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-demi/lib/index.mjs\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js ***!
|
||
\********************************************************************/
|
||
/*! exports provided: DatetimeFormat, I18nInjectionKey, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DatetimeFormat\", function() { return DatetimeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"I18nInjectionKey\", function() { return I18nInjectionKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NumberFormat\", function() { return NumberFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Translation\", function() { return Translation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"castToVueI18n\", function() { return castToVueI18n; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createI18n\", function() { return createI18n; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useI18n\", function() { return useI18n; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vTDirective\", function() { return vTDirective; });\n/* harmony import */ var _intlify_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @intlify/shared */ \"./node_modules/@intlify/shared/dist/shared.esm-bundler.js\");\n/* harmony import */ var _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @intlify/core-base */ \"./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _vue_devtools_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vue/devtools-api */ \"./node_modules/@vue/devtools-api/lib/esm/index.js\");\n/* harmony import */ var _intlify_vue_devtools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @intlify/vue-devtools */ \"./node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js\");\n/*!\n * vue-i18n v9.2.0-beta.34\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n\n\n\n\n\n\n/**\r\n * Vue I18n Version\r\n *\r\n * @remarks\r\n * Semver format. Same format as the package.json `version` field.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst VERSION = '9.2.0-beta.34';\r\n/**\r\n * This is only called in esm-bundler builds.\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n let needWarn = false;\r\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\r\n needWarn = true;\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"getGlobalThis\"])().__VUE_I18N_FULL_INSTALL__ = true;\r\n }\r\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\r\n needWarn = true;\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"getGlobalThis\"])().__VUE_I18N_LEGACY_API__ = true;\r\n }\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"getGlobalThis\"])().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n if (( true) && needWarn) {\r\n console.warn(`You are running the esm-bundler build of vue-i18n. It is recommended to ` +\r\n `configure your bundler to explicitly replace feature flag globals ` +\r\n `with boolean literals to get proper tree-shaking in the final bundle.`);\r\n }\r\n}\n\nlet code$1 = _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"CoreWarnCodes\"].__EXTEND_POINT__;\r\nconst inc$1 = () => ++code$1;\r\nconst I18nWarnCodes = {\r\n FALLBACK_TO_ROOT: code$1,\r\n NOT_SUPPORTED_PRESERVE: inc$1(),\r\n NOT_SUPPORTED_FORMATTER: inc$1(),\r\n NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),\r\n NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),\r\n COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),\r\n NOT_FOUND_PARENT_SCOPE: inc$1(),\r\n NOT_SUPPORT_MULTI_I18N_INSTANCE: inc$1() // 14\r\n};\r\nconst warnMessages = {\r\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\r\n [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\r\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,\r\n [I18nWarnCodes.NOT_SUPPORT_MULTI_I18N_INSTANCE]: `Not support multi i18n instance.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"format\"])(warnMessages[code], ...args);\r\n}\n\nlet code = _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"CompileErrorCodes\"].__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst I18nErrorCodes = {\r\n // composer module errors\r\n UNEXPECTED_RETURN_TYPE: code,\r\n // legacy module errors\r\n INVALID_ARGUMENT: inc(),\r\n // i18n module errors\r\n MUST_BE_CALL_SETUP_TOP: inc(),\r\n NOT_INSLALLED: inc(),\r\n NOT_AVAILABLE_IN_LEGACY_MODE: inc(),\r\n // directive module errors\r\n REQUIRED_VALUE: inc(),\r\n INVALID_VALUE: inc(),\r\n // vue-devtools errors\r\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),\r\n NOT_INSLALLED_WITH_PROVIDE: inc(),\r\n // unexpected error\r\n UNEXPECTED_ERROR: inc(),\r\n // not compatible legacy vue-i18n constructor\r\n NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),\r\n // bridge support vue 2.x only\r\n BRIDGE_SUPPORT_VUE_2_ONLY: inc(),\r\n // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\r\n MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(),\r\n // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\r\n NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(),\r\n // for enhancement\r\n __EXTEND_POINT__: inc() // 29\r\n};\r\nfunction createI18nError(code, ...args) {\r\n return Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"createCompileError\"])(code, null, ( true) ? { messages: errorMessages, args } : undefined);\r\n}\r\nconst errorMessages = {\r\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\r\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\r\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\r\n [I18nErrorCodes.NOT_INSLALLED]: 'Need to install with `app.use` function',\r\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\r\n [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\r\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\r\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\r\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\r\n [I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\r\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\r\n [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\r\n [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option in Composition API with using local scope in Legacy API mode',\r\n [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\r\n};\n\nconst TransrateVNodeSymbol = \r\n/* #__PURE__*/ Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('__transrateVNode');\r\nconst DatetimePartsSymbol = /* #__PURE__*/ Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('__datetimeParts');\r\nconst NumberPartsSymbol = /* #__PURE__*/ Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('__numberParts');\r\nconst EnableEmitter = /* #__PURE__*/ Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('__enableEmitter');\r\nconst DisableEmitter = /* #__PURE__*/ Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('__disableEmitter');\r\nconst SetPluralRulesSymbol = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('__setPluralRules');\r\nObject(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('__intlifyMeta');\r\nconst InejctWithOption = /* #__PURE__*/ Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('__injectWithOption');\r\nconst __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Transform flat json in obj to normal json in obj\r\n */\r\nfunction handleFlatJson(obj) {\r\n // check obj\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(obj)) {\r\n return obj;\r\n }\r\n for (const key in obj) {\r\n // check key\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasOwn\"])(obj, key)) {\r\n continue;\r\n }\r\n // handle for normal json\r\n if (!key.includes('.')) {\r\n // recursive process value if value is also a object\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(obj[key])) {\r\n handleFlatJson(obj[key]);\r\n }\r\n }\r\n // handle for flat json, transform to normal json\r\n else {\r\n // go to the last object\r\n const subKeys = key.split('.');\r\n const lastIndex = subKeys.length - 1;\r\n let currentObj = obj;\r\n for (let i = 0; i < lastIndex; i++) {\r\n if (!(subKeys[i] in currentObj)) {\r\n currentObj[subKeys[i]] = {};\r\n }\r\n currentObj = currentObj[subKeys[i]];\r\n }\r\n // update last object value, delete old property\r\n currentObj[subKeys[lastIndex]] = obj[key];\r\n delete obj[key];\r\n // recursive process value if value is also a object\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(currentObj[subKeys[lastIndex]])) {\r\n handleFlatJson(currentObj[subKeys[lastIndex]]);\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nfunction getLocaleMessages(locale, options) {\r\n const { messages, __i18n, messageResolver, flatJson } = options;\r\n // prettier-ignore\r\n const ret = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(messages)\r\n ? messages\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(__i18n)\r\n ? {}\r\n : { [locale]: {} };\r\n // merge locale messages of i18n custom block\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(__i18n)) {\r\n __i18n.forEach(custom => {\r\n if ('locale' in custom && 'resource' in custom) {\r\n const { locale, resource } = custom;\r\n if (locale) {\r\n ret[locale] = ret[locale] || {};\r\n deepCopy(resource, ret[locale]);\r\n }\r\n else {\r\n deepCopy(resource, ret);\r\n }\r\n }\r\n else {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(custom) && deepCopy(JSON.parse(custom), ret);\r\n }\r\n });\r\n }\r\n // handle messages for flat json\r\n if (messageResolver == null && flatJson) {\r\n for (const key in ret) {\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasOwn\"])(ret, key)) {\r\n handleFlatJson(ret[key]);\r\n }\r\n }\r\n }\r\n return ret;\r\n}\r\nconst isNotObjectOrIsArray = (val) => !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(val) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(val);\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction deepCopy(src, des) {\r\n // src and des should both be objects, and non of then can be a array\r\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n for (const key in src) {\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"hasOwn\"])(src, key)) {\r\n if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\r\n // replace with src[key] when:\r\n // src[key] or des[key] is not a object, or\r\n // src[key] or des[key] is a array\r\n des[key] = src[key];\r\n }\r\n else {\r\n // src[key] and des[key] are both object, merge them\r\n deepCopy(src[key], des[key]);\r\n }\r\n }\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getComponentOptions(instance) {\r\n return instance.type ;\r\n}\r\nfunction adjustI18nResources(global, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n let messages = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(options.messages) ? options.messages : {};\r\n if ('__i18nGlobal' in componentOptions) {\r\n messages = getLocaleMessages(global.locale.value, {\r\n messages,\r\n __i18n: componentOptions.__i18nGlobal\r\n });\r\n }\r\n // merge locale messages\r\n const locales = Object.keys(messages);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeLocaleMessage(locale, messages[locale]);\r\n });\r\n }\r\n {\r\n // merge datetime formats\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(options.datetimeFormats)) {\r\n const locales = Object.keys(options.datetimeFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\r\n });\r\n }\r\n }\r\n // merge number formats\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(options.numberFormats)) {\r\n const locales = Object.keys(options.numberFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeNumberFormat(locale, options.numberFormats[locale]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\nfunction createTextNode(key) {\r\n return Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"createVNode\"])(vue__WEBPACK_IMPORTED_MODULE_2__[\"Text\"], null, key, 0)\r\n ;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n// extend VNode interface\r\nconst DEVTOOLS_META = '__INTLIFY_META__';\r\nlet composerID = 0;\r\nfunction defineCoreMissingHandler(missing) {\r\n return ((ctx, locale, key, type) => {\r\n return missing(locale, key, Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"getCurrentInstance\"])() || undefined, type);\r\n });\r\n}\r\n// for Intlify DevTools\r\nconst getMetaInfo = () => {\r\n const instance = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"getCurrentInstance\"])();\r\n let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\r\n ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : null;\r\n};\r\n/**\r\n * Create composer interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createComposer(options = {}, VueI18nLegacy) {\r\n const { __root } = options;\r\n const _isGlobal = __root === undefined;\r\n let _inheritLocale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.locale.value\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.locale)\r\n ? options.locale\r\n : _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"DEFAULT_LOCALE\"]);\r\n const _fallbackLocale = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.fallbackLocale.value\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.fallbackLocale) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(options.fallbackLocale) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // prettier-ignore\r\n const _numberFormats = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // warning suppress options\r\n // prettier-ignore\r\n let _missingWarn = __root\r\n ? __root.missingWarn\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.missingWarn) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"])(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackWarn = __root\r\n ? __root.fallbackWarn\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackWarn) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"])(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackRoot = __root\r\n ? __root.fallbackRoot\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n let _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n let _missing = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.missing) ? options.missing : null;\r\n let _runtimeMissing = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.missing)\r\n ? defineCoreMissingHandler(options.missing)\r\n : null;\r\n // postTranslation handler\r\n let _postTranslation = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n let _warnHtmlMessage = __root\r\n ? __root.warnHtmlMessage\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n let _escapeParameter = !!options.escapeParameter;\r\n // custom linked modifiers\r\n // prettier-ignore\r\n const _modifiers = __root\r\n ? __root.modifiers\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\r\n // runtime context\r\n // eslint-disable-next-line prefer-const\r\n let _context;\r\n function getCoreContext() {\r\n _isGlobal && Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"setFallbackContext\"])(null);\r\n const ctxOptions = {\r\n version: VERSION,\r\n locale: _locale.value,\r\n fallbackLocale: _fallbackLocale.value,\r\n messages: _messages.value,\r\n modifiers: _modifiers,\r\n pluralRules: _pluralRules,\r\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\r\n missingWarn: _missingWarn,\r\n fallbackWarn: _fallbackWarn,\r\n fallbackFormat: _fallbackFormat,\r\n unresolving: true,\r\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\r\n warnHtmlMessage: _warnHtmlMessage,\r\n escapeParameter: _escapeParameter,\r\n messageResolver: options.messageResolver,\r\n __meta: { framework: 'vue' }\r\n };\r\n {\r\n ctxOptions.datetimeFormats = _datetimeFormats.value;\r\n ctxOptions.numberFormats = _numberFormats.value;\r\n ctxOptions.__datetimeFormatters = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(_context)\r\n ? _context.__datetimeFormatters\r\n : undefined;\r\n ctxOptions.__numberFormatters = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(_context)\r\n ? _context.__numberFormatters\r\n : undefined;\r\n }\r\n if ((true)) {\r\n ctxOptions.__v_emitter = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(_context)\r\n ? _context.__v_emitter\r\n : undefined;\r\n }\r\n const ctx = Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"createCoreContext\"])(ctxOptions);\r\n _isGlobal && Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"setFallbackContext\"])(ctx);\r\n return ctx;\r\n }\r\n _context = getCoreContext();\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"updateFallbackLocale\"])(_context, _locale.value, _fallbackLocale.value);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ]\r\n ;\r\n }\r\n // locale\r\n const locale = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])({\r\n get: () => _locale.value,\r\n set: val => {\r\n _locale.value = val;\r\n _context.locale = _locale.value;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])({\r\n get: () => _fallbackLocale.value,\r\n set: val => {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = _fallbackLocale.value;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"updateFallbackLocale\"])(_context, _locale.value, val);\r\n }\r\n });\r\n // messages\r\n const messages = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])(() => _messages.value);\r\n // datetimeFormats\r\n const datetimeFormats = /* #__PURE__*/ Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])(() => _datetimeFormats.value);\r\n // numberFormats\r\n const numberFormats = /* #__PURE__*/ Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])(() => _numberFormats.value);\r\n // getPostTranslationHandler\r\n function getPostTranslationHandler() {\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(_postTranslation) ? _postTranslation : null;\r\n }\r\n // setPostTranslationHandler\r\n function setPostTranslationHandler(handler) {\r\n _postTranslation = handler;\r\n _context.postTranslation = handler;\r\n }\r\n // getMissingHandler\r\n function getMissingHandler() {\r\n return _missing;\r\n }\r\n // setMissingHandler\r\n function setMissingHandler(handler) {\r\n if (handler !== null) {\r\n _runtimeMissing = defineCoreMissingHandler(handler);\r\n }\r\n _missing = handler;\r\n _context.missing = _runtimeMissing;\r\n }\r\n function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return type !== 'translate' || !arg.resolvedMessage;\r\n }\r\n function wrapWithDeps(fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) {\r\n trackReactivityValues(); // track reactive dependency\r\n // NOTE: experimental !!\r\n let ret;\r\n if (true) {\r\n try {\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"setAdditionalMeta\"])(getMetaInfo());\r\n if (!_isGlobal) {\r\n _context.fallbackContext = __root\r\n ? Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"getFallbackContext\"])()\r\n : undefined;\r\n }\r\n ret = fn(_context);\r\n }\r\n finally {\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"setAdditionalMeta\"])(null);\r\n if (!_isGlobal) {\r\n _context.fallbackContext = undefined;\r\n }\r\n }\r\n }\r\n else {}\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(ret) && ret === _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"NOT_REOSLVED\"]) {\r\n const [key, arg2] = argumentParser();\r\n if (( true) &&\r\n __root &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(key) &&\r\n isResolvedTranslateMessage(warnType, arg2)) {\r\n if (_fallbackRoot &&\r\n (Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"isTranslateFallbackWarn\"])(_fallbackWarn, key) ||\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"isTranslateMissingWarn\"])(_missingWarn, key))) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\r\n key,\r\n type: warnType\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((true)) {\r\n const { __v_emitter: emitter } = _context;\r\n if (emitter && _fallbackRoot) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type: warnType,\r\n key,\r\n to: 'global',\r\n groupId: `${warnType}:${key}`\r\n });\r\n }\r\n }\r\n }\r\n return __root && _fallbackRoot\r\n ? fallbackSuccess(__root)\r\n : fallbackFail(key);\r\n }\r\n else if (successCondition(ret)) {\r\n return ret;\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\r\n }\r\n }\r\n // t\r\n function t(...args) {\r\n return wrapWithDeps(context => Reflect.apply(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"translate\"], null, [context, ...args]), () => Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"parseTranslateArgs\"])(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val));\r\n }\r\n // rt\r\n function rt(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n if (arg3 && !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(arg3)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n return t(...[arg1, arg2, Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({ resolvedMessage: true }, arg3 || {})]);\r\n }\r\n // d\r\n function d(...args) {\r\n return wrapWithDeps(context => Reflect.apply(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"datetime\"], null, [context, ...args]), () => Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"parseDateTimeArgs\"])(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"MISSING_RESOLVE_VALUE\"], val => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val));\r\n }\r\n // n\r\n function n(...args) {\r\n return wrapWithDeps(context => Reflect.apply(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"number\"], null, [context, ...args]), () => Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"parseNumberArgs\"])(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"MISSING_RESOLVE_VALUE\"], val => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val));\r\n }\r\n // for custom processor\r\n function normalize(values) {\r\n return values.map(val => (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val) ? createTextNode(val) : val));\r\n }\r\n const interpolate = (val) => val;\r\n const processor = {\r\n normalize,\r\n interpolate,\r\n type: 'vnode'\r\n };\r\n // transrateVNode, using for `i18n-t` component\r\n function transrateVNode(...args) {\r\n return wrapWithDeps(context => {\r\n let ret;\r\n const _context = context;\r\n try {\r\n _context.processor = processor;\r\n ret = Reflect.apply(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"translate\"], null, [_context, ...args]);\r\n }\r\n finally {\r\n _context.processor = null;\r\n }\r\n return ret;\r\n }, () => Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"parseTranslateArgs\"])(...args), 'translate', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[TransrateVNodeSymbol](...args), key => [createTextNode(key)], val => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(val));\r\n }\r\n // numberParts, using for `i18n-n` component\r\n function numberParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"number\"], null, [context, ...args]), () => Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"parseNumberArgs\"])(...args), 'number format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[NumberPartsSymbol](...args), () => [], val => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(val));\r\n }\r\n // datetimeParts, using for `i18n-d` component\r\n function datetimeParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"datetime\"], null, [context, ...args]), () => Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"parseDateTimeArgs\"])(...args), 'datetime format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[DatetimePartsSymbol](...args), () => [], val => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(val));\r\n }\r\n function setPluralRules(rules) {\r\n _pluralRules = rules;\r\n _context.pluralRules = _pluralRules;\r\n }\r\n // te\r\n function te(key, locale) {\r\n const targetLocale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(locale) ? locale : _locale.value;\r\n const message = getLocaleMessage(targetLocale);\r\n return _context.messageResolver(message, key) !== null;\r\n }\r\n function resolveMessages(key) {\r\n let messages = null;\r\n const locales = Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"fallbackWithLocaleChain\"])(_context, _fallbackLocale.value, _locale.value);\r\n for (let i = 0; i < locales.length; i++) {\r\n const targetLocaleMessages = _messages.value[locales[i]] || {};\r\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\r\n if (messageValue != null) {\r\n messages = messageValue;\r\n break;\r\n }\r\n }\r\n return messages;\r\n }\r\n // tm\r\n function tm(key) {\r\n const messages = resolveMessages(key);\r\n // prettier-ignore\r\n return messages != null\r\n ? messages\r\n : __root\r\n ? __root.tm(key) || {}\r\n : {};\r\n }\r\n // getLocaleMessage\r\n function getLocaleMessage(locale) {\r\n return (_messages.value[locale] || {});\r\n }\r\n // setLocaleMessage\r\n function setLocaleMessage(locale, message) {\r\n _messages.value[locale] = message;\r\n _context.messages = _messages.value;\r\n }\r\n // mergeLocaleMessage\r\n function mergeLocaleMessage(locale, message) {\r\n _messages.value[locale] = _messages.value[locale] || {};\r\n deepCopy(message, _messages.value[locale]);\r\n _context.messages = _messages.value;\r\n }\r\n // getDateTimeFormat\r\n function getDateTimeFormat(locale) {\r\n return _datetimeFormats.value[locale] || {};\r\n }\r\n // setDateTimeFormat\r\n function setDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = format;\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"clearDateTimeFormat\"])(_context, locale, format);\r\n }\r\n // mergeDateTimeFormat\r\n function mergeDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(_datetimeFormats.value[locale] || {}, format);\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"clearDateTimeFormat\"])(_context, locale, format);\r\n }\r\n // getNumberFormat\r\n function getNumberFormat(locale) {\r\n return _numberFormats.value[locale] || {};\r\n }\r\n // setNumberFormat\r\n function setNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = format;\r\n _context.numberFormats = _numberFormats.value;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"clearNumberFormat\"])(_context, locale, format);\r\n }\r\n // mergeNumberFormat\r\n function mergeNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(_numberFormats.value[locale] || {}, format);\r\n _context.numberFormats = _numberFormats.value;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"clearNumberFormat\"])(_context, locale, format);\r\n }\r\n // for debug\r\n composerID++;\r\n // watch root locale & fallbackLocale\r\n if (__root && _intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"inBrowser\"]) {\r\n Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"watch\"])(__root.locale, (val) => {\r\n if (_inheritLocale) {\r\n _locale.value = val;\r\n _context.locale = val;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"updateFallbackLocale\"])(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"watch\"])(__root.fallbackLocale, (val) => {\r\n if (_inheritLocale) {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = val;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"updateFallbackLocale\"])(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n }\r\n // define basic composition API!\r\n const composer = {\r\n id: composerID,\r\n locale,\r\n fallbackLocale,\r\n get inheritLocale() {\r\n return _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n _inheritLocale = val;\r\n if (val && __root) {\r\n _locale.value = __root.locale.value;\r\n _fallbackLocale.value = __root.fallbackLocale.value;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"updateFallbackLocale\"])(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n },\r\n get availableLocales() {\r\n return Object.keys(_messages.value).sort();\r\n },\r\n messages,\r\n get modifiers() {\r\n return _modifiers;\r\n },\r\n get pluralRules() {\r\n return _pluralRules || {};\r\n },\r\n get isGlobal() {\r\n return _isGlobal;\r\n },\r\n get missingWarn() {\r\n return _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n _missingWarn = val;\r\n _context.missingWarn = _missingWarn;\r\n },\r\n get fallbackWarn() {\r\n return _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n _fallbackWarn = val;\r\n _context.fallbackWarn = _fallbackWarn;\r\n },\r\n get fallbackRoot() {\r\n return _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n _fallbackRoot = val;\r\n },\r\n get fallbackFormat() {\r\n return _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n _fallbackFormat = val;\r\n _context.fallbackFormat = _fallbackFormat;\r\n },\r\n get warnHtmlMessage() {\r\n return _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n _warnHtmlMessage = val;\r\n _context.warnHtmlMessage = val;\r\n },\r\n get escapeParameter() {\r\n return _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n _escapeParameter = val;\r\n _context.escapeParameter = val;\r\n },\r\n t,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n [SetPluralRulesSymbol]: setPluralRules\r\n };\r\n {\r\n composer.datetimeFormats = datetimeFormats;\r\n composer.numberFormats = numberFormats;\r\n composer.rt = rt;\r\n composer.te = te;\r\n composer.tm = tm;\r\n composer.d = d;\r\n composer.n = n;\r\n composer.getDateTimeFormat = getDateTimeFormat;\r\n composer.setDateTimeFormat = setDateTimeFormat;\r\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\r\n composer.getNumberFormat = getNumberFormat;\r\n composer.setNumberFormat = setNumberFormat;\r\n composer.mergeNumberFormat = mergeNumberFormat;\r\n composer[InejctWithOption] = options.__injectWithOption;\r\n composer[TransrateVNodeSymbol] = transrateVNode;\r\n composer[DatetimePartsSymbol] = datetimeParts;\r\n composer[NumberPartsSymbol] = numberParts;\r\n }\r\n // for vue-devtools timeline event\r\n if ((true)) {\r\n composer[EnableEmitter] = (emitter) => {\r\n _context.__v_emitter = emitter;\r\n };\r\n composer[DisableEmitter] = () => {\r\n _context.__v_emitter = undefined;\r\n };\r\n }\r\n return composer;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Convert to I18n Composer Options from VueI18n Options\r\n *\r\n * @internal\r\n */\r\nfunction convertComposerOptions(options) {\r\n const locale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.locale) ? options.locale : _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"DEFAULT_LOCALE\"];\r\n const fallbackLocale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.fallbackLocale) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(options.fallbackLocale) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const missing = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.missing) ? options.missing : undefined;\r\n const missingWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.silentTranslationWarn) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"])(options.silentTranslationWarn)\r\n ? !options.silentTranslationWarn\r\n : true;\r\n const fallbackWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.silentFallbackWarn) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"])(options.silentFallbackWarn)\r\n ? !options.silentFallbackWarn\r\n : true;\r\n const fallbackRoot = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n const fallbackFormat = !!options.formatFallbackMessages;\r\n const modifiers = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.modifiers) ? options.modifiers : {};\r\n const pluralizationRules = options.pluralizationRules;\r\n const postTranslation = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.postTranslation)\r\n ? options.postTranslation\r\n : undefined;\r\n const warnHtmlMessage = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.warnHtmlInMessage)\r\n ? options.warnHtmlInMessage !== 'off'\r\n : true;\r\n const escapeParameter = !!options.escapeParameterHtml;\r\n const inheritLocale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.sync) ? options.sync : true;\r\n if (( true) && options.formatter) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n }\r\n if (( true) && options.preserveDirectiveContent) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n }\r\n let messages = options.messages;\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.sharedMessages)) {\r\n const sharedMessages = options.sharedMessages;\r\n const locales = Object.keys(sharedMessages);\r\n messages = locales.reduce((messages, locale) => {\r\n const message = messages[locale] || (messages[locale] = {});\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(message, sharedMessages[locale]);\r\n return messages;\r\n }, (messages || {}));\r\n }\r\n const { __i18n, __root, __injectWithOption } = options;\r\n const datetimeFormats = options.datetimeFormats;\r\n const numberFormats = options.numberFormats;\r\n const flatJson = options.flatJson;\r\n return {\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n flatJson,\r\n datetimeFormats,\r\n numberFormats,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackRoot,\r\n fallbackFormat,\r\n modifiers,\r\n pluralRules: pluralizationRules,\r\n postTranslation,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageResolver: options.messageResolver,\r\n inheritLocale,\r\n __i18n,\r\n __root,\r\n __injectWithOption\r\n };\r\n}\r\n/**\r\n * create VueI18n interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createVueI18n(options = {}, VueI18nLegacy) {\r\n {\r\n const composer = createComposer(convertComposerOptions(options));\r\n // defines VueI18n\r\n const vueI18n = {\r\n // id\r\n id: composer.id,\r\n // locale\r\n get locale() {\r\n return composer.locale.value;\r\n },\r\n set locale(val) {\r\n composer.locale.value = val;\r\n },\r\n // fallbackLocale\r\n get fallbackLocale() {\r\n return composer.fallbackLocale.value;\r\n },\r\n set fallbackLocale(val) {\r\n composer.fallbackLocale.value = val;\r\n },\r\n // messages\r\n get messages() {\r\n return composer.messages.value;\r\n },\r\n // datetimeFormats\r\n get datetimeFormats() {\r\n return composer.datetimeFormats.value;\r\n },\r\n // numberFormats\r\n get numberFormats() {\r\n return composer.numberFormats.value;\r\n },\r\n // availableLocales\r\n get availableLocales() {\r\n return composer.availableLocales;\r\n },\r\n // formatter\r\n get formatter() {\r\n ( true) && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n // dummy\r\n return {\r\n interpolate() {\r\n return [];\r\n }\r\n };\r\n },\r\n set formatter(val) {\r\n ( true) && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n },\r\n // missing\r\n get missing() {\r\n return composer.getMissingHandler();\r\n },\r\n set missing(handler) {\r\n composer.setMissingHandler(handler);\r\n },\r\n // silentTranslationWarn\r\n get silentTranslationWarn() {\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(composer.missingWarn)\r\n ? !composer.missingWarn\r\n : composer.missingWarn;\r\n },\r\n set silentTranslationWarn(val) {\r\n composer.missingWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(val) ? !val : val;\r\n },\r\n // silentFallbackWarn\r\n get silentFallbackWarn() {\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(composer.fallbackWarn)\r\n ? !composer.fallbackWarn\r\n : composer.fallbackWarn;\r\n },\r\n set silentFallbackWarn(val) {\r\n composer.fallbackWarn = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(val) ? !val : val;\r\n },\r\n // modifiers\r\n get modifiers() {\r\n return composer.modifiers;\r\n },\r\n // formatFallbackMessages\r\n get formatFallbackMessages() {\r\n return composer.fallbackFormat;\r\n },\r\n set formatFallbackMessages(val) {\r\n composer.fallbackFormat = val;\r\n },\r\n // postTranslation\r\n get postTranslation() {\r\n return composer.getPostTranslationHandler();\r\n },\r\n set postTranslation(handler) {\r\n composer.setPostTranslationHandler(handler);\r\n },\r\n // sync\r\n get sync() {\r\n return composer.inheritLocale;\r\n },\r\n set sync(val) {\r\n composer.inheritLocale = val;\r\n },\r\n // warnInHtmlMessage\r\n get warnHtmlInMessage() {\r\n return composer.warnHtmlMessage ? 'warn' : 'off';\r\n },\r\n set warnHtmlInMessage(val) {\r\n composer.warnHtmlMessage = val !== 'off';\r\n },\r\n // escapeParameterHtml\r\n get escapeParameterHtml() {\r\n return composer.escapeParameter;\r\n },\r\n set escapeParameterHtml(val) {\r\n composer.escapeParameter = val;\r\n },\r\n // preserveDirectiveContent\r\n get preserveDirectiveContent() {\r\n ( true) &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n return true;\r\n },\r\n set preserveDirectiveContent(val) {\r\n ( true) &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n },\r\n // pluralizationRules\r\n get pluralizationRules() {\r\n return composer.pluralRules || {};\r\n },\r\n // for internal\r\n __composer: composer,\r\n // t\r\n t(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n let list = null;\r\n let named = null;\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(arg2)) {\r\n list = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg2)) {\r\n named = arg2;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(arg3)) {\r\n list = arg3;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n rt(...args) {\r\n return Reflect.apply(composer.rt, composer, [...args]);\r\n },\r\n // tc\r\n tc(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = { plural: 1 };\r\n let list = null;\r\n let named = null;\r\n if (!Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(arg2)) {\r\n list = arg2;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg2)) {\r\n named = arg2;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(arg3)) {\r\n list = arg3;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n // te\r\n te(key, locale) {\r\n return composer.te(key, locale);\r\n },\r\n // tm\r\n tm(key) {\r\n return composer.tm(key);\r\n },\r\n // getLocaleMessage\r\n getLocaleMessage(locale) {\r\n return composer.getLocaleMessage(locale);\r\n },\r\n // setLocaleMessage\r\n setLocaleMessage(locale, message) {\r\n composer.setLocaleMessage(locale, message);\r\n },\r\n // mergeLocaleMessage\r\n mergeLocaleMessage(locale, message) {\r\n composer.mergeLocaleMessage(locale, message);\r\n },\r\n // d\r\n d(...args) {\r\n return Reflect.apply(composer.d, composer, [...args]);\r\n },\r\n // getDateTimeFormat\r\n getDateTimeFormat(locale) {\r\n return composer.getDateTimeFormat(locale);\r\n },\r\n // setDateTimeFormat\r\n setDateTimeFormat(locale, format) {\r\n composer.setDateTimeFormat(locale, format);\r\n },\r\n // mergeDateTimeFormat\r\n mergeDateTimeFormat(locale, format) {\r\n composer.mergeDateTimeFormat(locale, format);\r\n },\r\n // n\r\n n(...args) {\r\n return Reflect.apply(composer.n, composer, [...args]);\r\n },\r\n // getNumberFormat\r\n getNumberFormat(locale) {\r\n return composer.getNumberFormat(locale);\r\n },\r\n // setNumberFormat\r\n setNumberFormat(locale, format) {\r\n composer.setNumberFormat(locale, format);\r\n },\r\n // mergeNumberFormat\r\n mergeNumberFormat(locale, format) {\r\n composer.mergeNumberFormat(locale, format);\r\n },\r\n // getChoiceIndex\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n getChoiceIndex(choice, choicesLength) {\r\n ( true) &&\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\r\n return -1;\r\n },\r\n // for internal\r\n __onComponentInstanceCreated(target) {\r\n const { componentInstanceCreatedListener } = options;\r\n if (componentInstanceCreatedListener) {\r\n componentInstanceCreatedListener(target, vueI18n);\r\n }\r\n }\r\n };\r\n // for vue-devtools timeline event\r\n if ((true)) {\r\n vueI18n.__enableEmitter = (emitter) => {\r\n const __composer = composer;\r\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\r\n };\r\n vueI18n.__disableEmitter = () => {\r\n const __composer = composer;\r\n __composer[DisableEmitter] && __composer[DisableEmitter]();\r\n };\r\n }\r\n return vueI18n;\r\n }\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\r\n tag: {\r\n type: [String, Object]\r\n },\r\n locale: {\r\n type: String\r\n },\r\n scope: {\r\n type: String,\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n validator: (val /* ComponetI18nScope */) => val === 'parent' || val === 'global',\r\n default: 'parent' /* ComponetI18nScope */\r\n },\r\n i18n: {\r\n type: Object\r\n }\r\n};\n\nfunction getInterpolateArg(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n{ slots }, // SetupContext,\r\nkeys) {\r\n if (keys.length === 1 && keys[0] === 'default') {\r\n // default slot with list\r\n const ret = slots.default ? slots.default() : [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return ret.reduce((slot, current) => {\r\n return (slot = [\r\n ...slot,\r\n ...(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(current.children) ? current.children : [current])\r\n ]);\r\n }, []);\r\n }\r\n else {\r\n // named slots\r\n return keys.reduce((arg, key) => {\r\n const slot = slots[key];\r\n if (slot) {\r\n arg[key] = slot();\r\n }\r\n return arg;\r\n }, {});\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getFragmentableTag(tag) {\r\n return vue__WEBPACK_IMPORTED_MODULE_2__[\"Fragment\"] ;\r\n}\n\n/**\r\n * Translation Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [TranslationProps](component#translationprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\r\n *\r\n * @example\r\n * ```html\r\n * <div id=\"app\">\r\n * <!-- ... -->\r\n * <i18n path=\"term\" tag=\"label\" for=\"tos\">\r\n * <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\r\n * </i18n>\r\n * <!-- ... -->\r\n * </div>\r\n * ```\r\n * ```js\r\n * import { createApp } from 'vue'\r\n * import { createI18n } from 'vue-i18n'\r\n *\r\n * const messages = {\r\n * en: {\r\n * tos: 'Term of Service',\r\n * term: 'I accept xxx {0}.'\r\n * },\r\n * ja: {\r\n * tos: '利用規約',\r\n * term: '私は xxx の{0}に同意します。'\r\n * }\r\n * }\r\n *\r\n * const i18n = createI18n({\r\n * locale: 'en',\r\n * messages\r\n * })\r\n *\r\n * const app = createApp({\r\n * data: {\r\n * url: '/term'\r\n * }\r\n * }).use(i18n).mount('#app')\r\n * ```\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst Translation = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-t',\r\n props: Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({\r\n keypath: {\r\n type: String,\r\n required: true\r\n },\r\n plural: {\r\n type: [Number, String],\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n validator: (val) => Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(val) || !isNaN(val)\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const { slots, attrs } = context;\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n const i18n = props.i18n ||\r\n useI18n({\r\n useScope: props.scope,\r\n __useComponent: true\r\n });\r\n const keys = Object.keys(slots).filter(key => key !== '_');\r\n return () => {\r\n const options = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (props.plural !== undefined) {\r\n options.plural = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(props.plural) ? +props.plural : props.plural;\r\n }\r\n const arg = getInterpolateArg(context, keys);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options);\r\n const assignedAttrs = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, attrs);\r\n const tag = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(props.tag) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"h\"])(tag, assignedAttrs, children);\r\n };\r\n }\r\n};\n\nfunction isVNode(target) {\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(target) && !Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(target[0]);\r\n}\r\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\r\n const { slots, attrs } = context;\r\n return () => {\r\n const options = { part: true };\r\n let overrides = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(props.format)) {\r\n options.key = props.format;\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(props.format)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(props.format.key)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options.key = props.format.key;\r\n }\r\n // Filter out number format options only\r\n overrides = Object.keys(props.format).reduce((options, prop) => {\r\n return slotKeys.includes(prop)\r\n ? Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : options;\r\n }, {});\r\n }\r\n const parts = partFormatter(...[props.value, options, overrides]);\r\n let children = [options.key];\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(parts)) {\r\n children = parts.map((part, index) => {\r\n const slot = slots[part.type];\r\n const node = slot\r\n ? slot({ [part.type]: part.value, index, parts })\r\n : [part.value];\r\n if (isVNode(node)) {\r\n node[0].key = `${part.type}-${index}`;\r\n }\r\n return node;\r\n });\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(parts)) {\r\n children = [parts];\r\n }\r\n const assignedAttrs = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, attrs);\r\n const tag = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(props.tag) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"h\"])(tag, assignedAttrs, children);\r\n };\r\n}\n\nconst NUMBER_FORMAT_KEYS = [\r\n 'localeMatcher',\r\n 'style',\r\n 'unit',\r\n 'unitDisplay',\r\n 'currency',\r\n 'currencyDisplay',\r\n 'useGrouping',\r\n 'numberingSystem',\r\n 'minimumIntegerDigits',\r\n 'minimumFractionDigits',\r\n 'maximumFractionDigits',\r\n 'minimumSignificantDigits',\r\n 'maximumSignificantDigits',\r\n 'notation',\r\n 'formatMatcher'\r\n];\r\n/**\r\n * Number Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst NumberFormat = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-n',\r\n props: Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({\r\n value: {\r\n type: Number,\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, NUMBER_FORMAT_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[NumberPartsSymbol](...args));\r\n }\r\n};\n\nconst DATETIME_FORMAT_KEYS = [\r\n 'dateStyle',\r\n 'timeStyle',\r\n 'fractionalSecondDigits',\r\n 'calendar',\r\n 'dayPeriod',\r\n 'numberingSystem',\r\n 'localeMatcher',\r\n 'timeZone',\r\n 'hour12',\r\n 'hourCycle',\r\n 'formatMatcher',\r\n 'weekday',\r\n 'era',\r\n 'year',\r\n 'month',\r\n 'day',\r\n 'hour',\r\n 'minute',\r\n 'second',\r\n 'timeZoneName'\r\n];\r\n/**\r\n * Datetime Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst DatetimeFormat = /*defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-d',\r\n props: Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({\r\n value: {\r\n type: [Number, Date],\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, DATETIME_FORMAT_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[DatetimePartsSymbol](...args));\r\n }\r\n};\n\nfunction getComposer$2(i18n, instance) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n return (i18nInternal.__getInstance(instance) || i18n.global);\r\n }\r\n else {\r\n const vueI18n = i18nInternal.__getInstance(instance);\r\n return vueI18n != null\r\n ? vueI18n.__composer\r\n : i18n.global.__composer;\r\n }\r\n}\r\nfunction vTDirective(i18n) {\r\n const bind = (el, { instance, value, modifiers }) => {\r\n /* istanbul ignore if */\r\n if (!instance || !instance.$) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const composer = getComposer$2(i18n, instance.$);\r\n if (( true) && modifiers.preserve) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\r\n }\r\n const parsedValue = parseValue(value);\r\n // el.textContent = composer.t(...makeParams(parsedValue))\r\n el.textContent = Reflect.apply(composer.t, composer, [\r\n ...makeParams(parsedValue)\r\n ]);\r\n };\r\n return {\r\n beforeMount: bind,\r\n beforeUpdate: bind\r\n };\r\n}\r\nfunction parseValue(value) {\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(value)) {\r\n return { path: value };\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(value)) {\r\n if (!('path' in value)) {\r\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\r\n }\r\n return value;\r\n }\r\n else {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n}\r\nfunction makeParams(value) {\r\n const { path, locale, args, choice, plural } = value;\r\n const options = {};\r\n const named = args || {};\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(locale)) {\r\n options.locale = locale;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(choice)) {\r\n options.plural = choice;\r\n }\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(plural)) {\r\n options.plural = plural;\r\n }\r\n return [path, named, options];\r\n}\n\nfunction apply(app, i18n, ...options) {\r\n const pluginOptions = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options[0])\r\n ? options[0]\r\n : {};\r\n const useI18nComponentName = !!pluginOptions.useI18nComponentName;\r\n const globalInstall = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(pluginOptions.globalInstall)\r\n ? pluginOptions.globalInstall\r\n : true;\r\n if (( true) && globalInstall && useI18nComponentName) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\r\n name: Translation.name\r\n }));\r\n }\r\n if (globalInstall) {\r\n // install components\r\n app.component(!useI18nComponentName ? Translation.name : 'i18n', Translation);\r\n app.component(NumberFormat.name, NumberFormat);\r\n app.component(DatetimeFormat.name, DatetimeFormat);\r\n }\r\n // install directive\r\n {\r\n app.directive('t', vTDirective(i18n));\r\n }\r\n}\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\r\nlet devtoolsApi;\r\nasync function enableDevTools(app, i18n) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n Object(_vue_devtools_api__WEBPACK_IMPORTED_MODULE_3__[\"setupDevtoolsPlugin\"])({\r\n id: \"vue-devtools-plugin-vue-i18n\" /* PLUGIN */,\r\n label: _intlify_vue_devtools__WEBPACK_IMPORTED_MODULE_4__[\"VueDevToolsLabels\"][\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */],\r\n packageName: 'vue-i18n',\r\n homepage: 'https://vue-i18n.intlify.dev',\r\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\r\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\r\n app\r\n }, api => {\r\n devtoolsApi = api;\r\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\r\n updateComponentTreeTags(componentInstance, treeNode, i18n);\r\n });\r\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\r\n if (componentInstance.vnode.el &&\r\n componentInstance.vnode.el.__VUE_I18N__ &&\r\n instanceData) {\r\n if (i18n.mode === 'legacy') {\r\n // ignore global scope on legacy mode\r\n if (componentInstance.vnode.el.__VUE_I18N__ !==\r\n i18n.global.__composer) {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n else {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n });\r\n api.addInspector({\r\n id: \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */,\r\n label: _intlify_vue_devtools__WEBPACK_IMPORTED_MODULE_4__[\"VueDevToolsLabels\"][\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */],\r\n icon: 'language',\r\n treeFilterPlaceholder: _intlify_vue_devtools__WEBPACK_IMPORTED_MODULE_4__[\"VueDevToolsPlaceholders\"][\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n registerScope(payload, i18n);\r\n }\r\n });\r\n const roots = new Map();\r\n api.on.getInspectorState(async (payload) => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n api.unhighlightElement();\r\n inspectScope(payload, i18n);\r\n if (payload.nodeId === 'global') {\r\n if (!roots.has(payload.app)) {\r\n const [root] = await api.getComponentInstances(payload.app);\r\n roots.set(payload.app, root);\r\n }\r\n api.highlightElement(roots.get(payload.app));\r\n }\r\n else {\r\n const instance = getComponentInstance(payload.nodeId, i18n);\r\n instance && api.highlightElement(instance);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n editScope(payload, i18n);\r\n }\r\n });\r\n api.addTimelineLayer({\r\n id: \"vue-i18n-timeline\" /* TIMELINE */,\r\n label: _intlify_vue_devtools__WEBPACK_IMPORTED_MODULE_4__[\"VueDevToolsLabels\"][\"vue-i18n-timeline\" /* TIMELINE */],\r\n color: _intlify_vue_devtools__WEBPACK_IMPORTED_MODULE_4__[\"VueDevToolsTimelineColors\"][\"vue-i18n-timeline\" /* TIMELINE */]\r\n });\r\n resolve(true);\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n reject(false);\r\n }\r\n });\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getI18nScopeLable(instance) {\r\n return (instance.type.name ||\r\n instance.type.displayName ||\r\n instance.type.__file ||\r\n 'Anonymous');\r\n}\r\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\r\ntreeNode, i18n) {\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\r\n // add custom tags local scope only\r\n if (instance.vnode.el.__VUE_I18N__ !== global) {\r\n const tag = {\r\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\r\n textColor: 0x000000,\r\n backgroundColor: 0xffcd19\r\n };\r\n treeNode.tags.push(tag);\r\n }\r\n }\r\n}\r\nfunction inspectComposer(instanceData, composer) {\r\n const type = VUE_I18N_COMPONENT_TYPES;\r\n instanceData.state.push({\r\n type,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n });\r\n {\r\n instanceData.state.push({\r\n type,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n });\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getLocaleMessageValue(messages) {\r\n const value = {};\r\n Object.keys(messages).forEach((key) => {\r\n const v = messages[key];\r\n if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(v) && 'source' in v) {\r\n value[key] = getMessageFunctionDetails(v);\r\n }\r\n else if (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(v)) {\r\n value[key] = getLocaleMessageValue(v);\r\n }\r\n else {\r\n value[key] = v;\r\n }\r\n });\r\n return value;\r\n}\r\nconst ESC = {\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n '&': '&'\r\n};\r\nfunction escape(s) {\r\n return s.replace(/[<>\"&]/g, escapeChar);\r\n}\r\nfunction escapeChar(a) {\r\n return ESC[a] || a;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getMessageFunctionDetails(func) {\r\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\r\n return {\r\n _custom: {\r\n type: 'function',\r\n display: `<span>ƒ</span> ${argString}`\r\n }\r\n };\r\n}\r\nfunction registerScope(payload, i18n) {\r\n payload.rootNodes.push({\r\n id: 'global',\r\n label: 'Global Scope'\r\n });\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n for (const [keyInstance, instance] of i18n.__instances) {\r\n // prettier-ignore\r\n const composer = i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n if (global === composer) {\r\n continue;\r\n }\r\n payload.rootNodes.push({\r\n id: composer.id.toString(),\r\n label: `${getI18nScopeLable(keyInstance)} Scope`\r\n });\r\n }\r\n}\r\nfunction getComponentInstance(nodeId, i18n) {\r\n let instance = null;\r\n if (nodeId !== 'global') {\r\n for (const [component, composer] of i18n.__instances.entries()) {\r\n if (composer.id.toString() === nodeId) {\r\n instance = component;\r\n break;\r\n }\r\n }\r\n }\r\n return instance;\r\n}\r\nfunction getComposer$1(nodeId, i18n) {\r\n if (nodeId === 'global') {\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n }\r\n else {\r\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\r\n if (instance) {\r\n return i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\nfunction inspectScope(payload, i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n // TODO:\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n payload.state = makeScopeInspectState(composer);\r\n }\r\n return null;\r\n}\r\nfunction makeScopeInspectState(composer) {\r\n const state = {};\r\n const localeType = 'Locale related info';\r\n const localeStates = [\r\n {\r\n type: localeType,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n },\r\n {\r\n type: localeType,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n }\r\n ];\r\n state[localeType] = localeStates;\r\n const localeMessagesType = 'Locale messages info';\r\n const localeMessagesStates = [\r\n {\r\n type: localeMessagesType,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n }\r\n ];\r\n state[localeMessagesType] = localeMessagesStates;\r\n {\r\n const datetimeFormatsType = 'Datetime formats info';\r\n const datetimeFormatsStates = [\r\n {\r\n type: datetimeFormatsType,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n }\r\n ];\r\n state[datetimeFormatsType] = datetimeFormatsStates;\r\n const numberFormatsType = 'Datetime formats info';\r\n const numberFormatsStates = [\r\n {\r\n type: numberFormatsType,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n }\r\n ];\r\n state[numberFormatsType] = numberFormatsStates;\r\n }\r\n return state;\r\n}\r\nfunction addTimelineEvent(event, payload) {\r\n if (devtoolsApi) {\r\n let groupId;\r\n if (payload && 'groupId' in payload) {\r\n groupId = payload.groupId;\r\n delete payload.groupId;\r\n }\r\n devtoolsApi.addTimelineEvent({\r\n layerId: \"vue-i18n-timeline\" /* TIMELINE */,\r\n event: {\r\n title: event,\r\n groupId,\r\n time: Date.now(),\r\n meta: {},\r\n data: payload || {},\r\n logType: event === \"compile-error\" /* COMPILE_ERROR */\r\n ? 'error'\r\n : event === \"fallback\" /* FALBACK */ ||\r\n event === \"missing\" /* MISSING */\r\n ? 'warning'\r\n : 'default'\r\n }\r\n });\r\n }\r\n}\r\nfunction editScope(payload, i18n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n const [field] = payload.path;\r\n if (field === 'locale' && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(payload.state.value)) {\r\n composer.locale.value = payload.state.value;\r\n }\r\n else if (field === 'fallbackLocale' &&\r\n (Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(payload.state.value) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(payload.state.value) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(payload.state.value))) {\r\n composer.fallbackLocale.value = payload.state.value;\r\n }\r\n else if (field === 'inheritLocale' && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(payload.state.value)) {\r\n composer.inheritLocale = payload.state.value;\r\n }\r\n }\r\n}\n\n/**\r\n * Supports compatibility for legacy vue-i18n APIs\r\n * This mixin is used when we use vue-i18n@v9.x or later\r\n */\r\nfunction defineMixin(vuei18n, composer, i18n) {\r\n return {\r\n beforeCreate() {\r\n const instance = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"getCurrentInstance\"])();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const options = this.$options;\r\n if (options.i18n) {\r\n const optionsI18n = options.i18n;\r\n if (options.__i18n) {\r\n optionsI18n.__i18n = options.__i18n;\r\n }\r\n optionsI18n.__root = composer;\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, optionsI18n);\r\n }\r\n else {\r\n optionsI18n.__injectWithOption = true;\r\n this.$i18n = createVueI18n(optionsI18n);\r\n }\r\n }\r\n else if (options.__i18n) {\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, options);\r\n }\r\n else {\r\n this.$i18n = createVueI18n({\r\n __i18n: options.__i18n,\r\n __injectWithOption: true,\r\n __root: composer\r\n });\r\n }\r\n }\r\n else {\r\n // set global\r\n this.$i18n = vuei18n;\r\n }\r\n if (options.__i18nGlobal) {\r\n adjustI18nResources(composer, options, options);\r\n }\r\n vuei18n.__onComponentInstanceCreated(this.$i18n);\r\n i18n.__setInstance(instance, this.$i18n);\r\n // defines vue-i18n legacy APIs\r\n this.$t = (...args) => this.$i18n.t(...args);\r\n this.$rt = (...args) => this.$i18n.rt(...args);\r\n this.$tc = (...args) => this.$i18n.tc(...args);\r\n this.$te = (key, locale) => this.$i18n.te(key, locale);\r\n this.$d = (...args) => this.$i18n.d(...args);\r\n this.$n = (...args) => this.$i18n.n(...args);\r\n this.$tm = (key) => this.$i18n.tm(key);\r\n },\r\n mounted() {\r\n /* istanbul ignore if */\r\n if ( true &&\r\n this.$el &&\r\n this.$i18n) {\r\n this.$el.__VUE_I18N__ = this.$i18n.__composer;\r\n const emitter = (this.__v_emitter =\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"createEmitter\"])());\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n unmounted() {\r\n const instance = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"getCurrentInstance\"])();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n /* istanbul ignore if */\r\n if ( true &&\r\n this.$el &&\r\n this.$el.__VUE_I18N__) {\r\n if (this.__v_emitter) {\r\n this.__v_emitter.off('*', addTimelineEvent);\r\n delete this.__v_emitter;\r\n }\r\n if (this.$i18n) {\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\r\n delete this.$el.__VUE_I18N__;\r\n }\r\n }\r\n delete this.$t;\r\n delete this.$rt;\r\n delete this.$tc;\r\n delete this.$te;\r\n delete this.$d;\r\n delete this.$n;\r\n delete this.$tm;\r\n i18n.__deleteInstance(instance);\r\n delete this.$i18n;\r\n }\r\n };\r\n}\r\nfunction mergeToRoot(root, options) {\r\n root.locale = options.locale || root.locale;\r\n root.fallbackLocale = options.fallbackLocale || root.fallbackLocale;\r\n root.missing = options.missing || root.missing;\r\n root.silentTranslationWarn =\r\n options.silentTranslationWarn || root.silentFallbackWarn;\r\n root.silentFallbackWarn =\r\n options.silentFallbackWarn || root.silentFallbackWarn;\r\n root.formatFallbackMessages =\r\n options.formatFallbackMessages || root.formatFallbackMessages;\r\n root.postTranslation = options.postTranslation || root.postTranslation;\r\n root.warnHtmlInMessage = options.warnHtmlInMessage || root.warnHtmlInMessage;\r\n root.escapeParameterHtml =\r\n options.escapeParameterHtml || root.escapeParameterHtml;\r\n root.sync = options.sync || root.sync;\r\n root.__composer[SetPluralRulesSymbol](options.pluralizationRules || root.pluralizationRules);\r\n const messages = getLocaleMessages(root.locale, {\r\n messages: options.messages,\r\n __i18n: options.__i18n\r\n });\r\n Object.keys(messages).forEach(locale => root.mergeLocaleMessage(locale, messages[locale]));\r\n if (options.datetimeFormats) {\r\n Object.keys(options.datetimeFormats).forEach(locale => root.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\r\n }\r\n if (options.numberFormats) {\r\n Object.keys(options.numberFormats).forEach(locale => root.mergeNumberFormat(locale, options.numberFormats[locale]));\r\n }\r\n return root;\r\n}\n\n/**\r\n * Injection key for {@link useI18n}\r\n *\r\n * @remarks\r\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\r\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst I18nInjectionKey = \r\n/* #__PURE__*/ Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])('global-vue-i18n');\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction createI18n(options = {}, VueI18nLegacy) {\r\n // prettier-ignore\r\n const __legacyMode = __VUE_I18N_LEGACY_API__ && Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.legacy)\r\n ? options.legacy\r\n : __VUE_I18N_LEGACY_API__;\r\n // prettier-ignore\r\n const __globalInjection = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.globalInjection)\r\n ? options.globalInjection\r\n : true;\r\n // prettier-ignore\r\n const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? !!options.allowComposition\r\n : true;\r\n const __instances = new Map();\r\n const __global = createGlobal(options, __legacyMode);\r\n const symbol = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"makeSymbol\"])(( true) ? 'vue-i18n' : undefined);\r\n function __getInstance(component) {\r\n return __instances.get(component) || null;\r\n }\r\n function __setInstance(component, instance) {\r\n __instances.set(component, instance);\r\n }\r\n function __deleteInstance(component) {\r\n __instances.delete(component);\r\n }\r\n {\r\n const i18n = {\r\n // mode\r\n get mode() {\r\n return __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? 'legacy'\r\n : 'composition';\r\n },\r\n // allowComposition\r\n get allowComposition() {\r\n return __allowComposition;\r\n },\r\n // install plugin\r\n async install(app, ...options) {\r\n if (true) {\r\n app.__VUE_I18N__ = i18n;\r\n }\r\n // setup global provider\r\n app.__VUE_I18N_SYMBOL__ = symbol;\r\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\r\n // global method and properties injection for Composition API\r\n if (!__legacyMode && __globalInjection) {\r\n injectGlobalFields(app, i18n.global);\r\n }\r\n // install built-in components and directive\r\n if (__VUE_I18N_FULL_INSTALL__) {\r\n apply(app, i18n, ...options);\r\n }\r\n // setup mixin for Legacy API\r\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\r\n app.mixin(defineMixin(__global, __global.__composer, i18n));\r\n }\r\n // setup vue-devtools plugin\r\n if (true) {\r\n const ret = await enableDevTools(app, i18n);\r\n if (!ret) {\r\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\r\n }\r\n const emitter = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"createEmitter\"])();\r\n if (__legacyMode) {\r\n const _vueI18n = __global;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = __global;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n }\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n // global accessor\r\n get global() {\r\n return __global;\r\n },\r\n // @internal\r\n __instances,\r\n // @internal\r\n __getInstance,\r\n // @internal\r\n __setInstance,\r\n // @internal\r\n __deleteInstance\r\n };\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction useI18n(options = {}) {\r\n const instance = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"getCurrentInstance\"])();\r\n if (instance == null) {\r\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\r\n }\r\n if (!instance.isCE &&\r\n instance.appContext.app != null &&\r\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\r\n throw createI18nError(I18nErrorCodes.NOT_INSLALLED);\r\n }\r\n const i18n = getI18nInstance(instance);\r\n const global = getGlobalComposer(i18n);\r\n const componentOptions = getComponentOptions(instance);\r\n const scope = getScope(options, componentOptions);\r\n if (__VUE_I18N_LEGACY_API__) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (i18n.mode === 'legacy' && !options.__useComponent) {\r\n if (!i18n.allowComposition) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\r\n }\r\n return useI18nForLegacy(instance, scope, global, options);\r\n }\r\n }\r\n if (scope === 'global') {\r\n adjustI18nResources(global, options, componentOptions);\r\n return global;\r\n }\r\n if (scope === 'parent') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let composer = getComposer(i18n, instance, options.__useComponent);\r\n if (composer == null) {\r\n if ((true)) {\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\r\n }\r\n composer = global;\r\n }\r\n return composer;\r\n }\r\n const i18nInternal = i18n;\r\n let composer = i18nInternal.__getInstance(instance);\r\n if (composer == null) {\r\n const composerOptions = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({}, options);\r\n if ('__i18n' in componentOptions) {\r\n composerOptions.__i18n = componentOptions.__i18n;\r\n }\r\n if (global) {\r\n composerOptions.__root = global;\r\n }\r\n composer = createComposer(composerOptions);\r\n setupLifeCycle(i18nInternal, instance, composer);\r\n i18nInternal.__setInstance(instance, composer);\r\n }\r\n return composer;\r\n}\r\n/**\r\n * Cast to VueI18n legacy compatible type\r\n *\r\n * @remarks\r\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\r\n *\r\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\r\n *\r\n * @param i18n - An instance of {@link I18n}\r\n * @returns A i18n instance which is casted to {@link VueI18n} type\r\n *\r\n * @VueI18nTip\r\n * :new: provided by **vue-i18n-bridge only**\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst castToVueI18n = (i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) => {\r\n if (!(__VUE_I18N_BRIDGE__ in i18n)) {\r\n throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\r\n }\r\n return i18n;\r\n};\r\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n {\r\n return __VUE_I18N_LEGACY_API__ && legacyMode\r\n ? createVueI18n(options)\r\n : createComposer(options);\r\n }\r\n}\r\nfunction getI18nInstance(instance) {\r\n {\r\n const i18n = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"inject\"])(!instance.isCE\r\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\r\n : I18nInjectionKey);\r\n /* istanbul ignore if */\r\n if (!i18n) {\r\n throw createI18nError(!instance.isCE\r\n ? I18nErrorCodes.UNEXPECTED_ERROR\r\n : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);\r\n }\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getScope(options, componentOptions) {\r\n // prettier-ignore\r\n return Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isEmptyObject\"])(options)\r\n ? ('__i18n' in componentOptions)\r\n ? 'local'\r\n : 'global'\r\n : !options.useScope\r\n ? 'local'\r\n : options.useScope;\r\n}\r\nfunction getGlobalComposer(i18n) {\r\n // prettier-ignore\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer\r\n ;\r\n}\r\nfunction getComposer(i18n, target, useComponent = false) {\r\n let composer = null;\r\n const root = target.root;\r\n let current = target.parent;\r\n while (current != null) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n composer = i18nInternal.__getInstance(current);\r\n }\r\n else {\r\n if (__VUE_I18N_LEGACY_API__) {\r\n const vueI18n = i18nInternal.__getInstance(current);\r\n if (vueI18n != null) {\r\n composer = vueI18n\r\n .__composer;\r\n if (useComponent &&\r\n composer &&\r\n !composer[InejctWithOption] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n composer = null;\r\n }\r\n }\r\n }\r\n }\r\n if (composer != null) {\r\n break;\r\n }\r\n if (root === current) {\r\n break;\r\n }\r\n current = current.parent;\r\n }\r\n return composer;\r\n}\r\nfunction setupLifeCycle(i18n, target, composer) {\r\n let emitter = null;\r\n {\r\n Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"onMounted\"])(() => {\r\n // inject composer instance to DOM for intlify-devtools\r\n if ( true &&\r\n target.vnode.el) {\r\n target.vnode.el.__VUE_I18N__ = composer;\r\n emitter = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"createEmitter\"])();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n }, target);\r\n Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"onUnmounted\"])(() => {\r\n // remove composer instance from DOM for intlify-devtools\r\n if ( true &&\r\n target.vnode.el &&\r\n target.vnode.el.__VUE_I18N__) {\r\n emitter && emitter.off('*', addTimelineEvent);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[DisableEmitter] && _composer[DisableEmitter]();\r\n delete target.vnode.el.__VUE_I18N__;\r\n }\r\n i18n.__deleteInstance(target);\r\n }, target);\r\n }\r\n}\r\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const isLocale = scope === 'local';\r\n const _composer = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"shallowRef\"])(null);\r\n if (isLocale && instance.proxy && !instance.proxy.$options.i18n) {\r\n throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\r\n }\r\n const _inheritLocale = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.locale.value\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.locale)\r\n ? options.locale\r\n : _intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"DEFAULT_LOCALE\"]);\r\n const _fallbackLocale = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.fallbackLocale.value\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(options.fallbackLocale) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(options.fallbackLocale) ||\r\n Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _numberFormats = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"ref\"])(Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _missingWarn = isLocale\r\n ? root.missingWarn\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.missingWarn) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"])(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackWarn = isLocale\r\n ? root.fallbackWarn\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackWarn) || Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"])(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackRoot = isLocale\r\n ? root.fallbackRoot\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n const _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n const _missing = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.missing) ? options.missing : null;\r\n // postTranslation handler\r\n const _postTranslation = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n const _warnHtmlMessage = isLocale\r\n ? root.warnHtmlMessage\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const _escapeParameter = !!options.escapeParameter;\r\n // prettier-ignore\r\n const _modifiers = isLocale\r\n ? root.modifiers\r\n : Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"isPlainObject\"])(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n const _pluralRules = options.pluralRules || (isLocale && root.pluralRules);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ];\r\n }\r\n // locale\r\n const locale = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])({\r\n get: () => {\r\n return _composer.value ? _composer.value.locale.value : _locale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.locale.value = val;\r\n }\r\n _locale.value = val;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])({\r\n get: () => {\r\n return _composer.value\r\n ? _composer.value.fallbackLocale.value\r\n : _fallbackLocale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.fallbackLocale.value = val;\r\n }\r\n _fallbackLocale.value = val;\r\n }\r\n });\r\n // messages\r\n const messages = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])(() => {\r\n if (_composer.value) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _composer.value.messages.value;\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _messages.value;\r\n }\r\n });\r\n const datetimeFormats = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])(() => _datetimeFormats.value);\r\n const numberFormats = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"computed\"])(() => _numberFormats.value);\r\n function getPostTranslationHandler() {\r\n return _composer.value\r\n ? _composer.value.getPostTranslationHandler()\r\n : _postTranslation;\r\n }\r\n function setPostTranslationHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setPostTranslationHandler(handler);\r\n }\r\n }\r\n function getMissingHandler() {\r\n return _composer.value ? _composer.value.getMissingHandler() : _missing;\r\n }\r\n function setMissingHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setMissingHandler(handler);\r\n }\r\n }\r\n function warpWithDeps(fn) {\r\n trackReactivityValues();\r\n return fn();\r\n }\r\n function t(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function rt(...args) {\r\n return _composer.value\r\n ? Reflect.apply(_composer.value.rt, null, [...args])\r\n : '';\r\n }\r\n function d(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function n(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function tm(key) {\r\n return _composer.value ? _composer.value.tm(key) : {};\r\n }\r\n function te(key, locale) {\r\n return _composer.value ? _composer.value.te(key, locale) : false;\r\n }\r\n function getLocaleMessage(locale) {\r\n return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\r\n }\r\n function setLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.setLocaleMessage(locale, message);\r\n _messages.value[locale] = message;\r\n }\r\n }\r\n function mergeLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.mergeLocaleMessage(locale, message);\r\n }\r\n }\r\n function getDateTimeFormat(locale) {\r\n return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\r\n }\r\n function setDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setDateTimeFormat(locale, format);\r\n _datetimeFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeDateTimeFormat(locale, format);\r\n }\r\n }\r\n function getNumberFormat(locale) {\r\n return _composer.value ? _composer.value.getNumberFormat(locale) : {};\r\n }\r\n function setNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setNumberFormat(locale, format);\r\n _numberFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeNumberFormat(locale, format);\r\n }\r\n }\r\n const wrapper = {\r\n get id() {\r\n return _composer.value ? _composer.value.id : -1;\r\n },\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n datetimeFormats,\r\n numberFormats,\r\n get inheritLocale() {\r\n return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n if (_composer.value) {\r\n _composer.value.inheritLocale = val;\r\n }\r\n },\r\n get availableLocales() {\r\n return _composer.value\r\n ? _composer.value.availableLocales\r\n : Object.keys(_messages.value);\r\n },\r\n get modifiers() {\r\n return (_composer.value ? _composer.value.modifiers : _modifiers);\r\n },\r\n get pluralRules() {\r\n return (_composer.value ? _composer.value.pluralRules : _pluralRules);\r\n },\r\n get isGlobal() {\r\n return _composer.value ? _composer.value.isGlobal : false;\r\n },\r\n get missingWarn() {\r\n return _composer.value ? _composer.value.missingWarn : _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackWarn() {\r\n return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackRoot() {\r\n return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackRoot = val;\r\n }\r\n },\r\n get fallbackFormat() {\r\n return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackFormat = val;\r\n }\r\n },\r\n get warnHtmlMessage() {\r\n return _composer.value\r\n ? _composer.value.warnHtmlMessage\r\n : _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n if (_composer.value) {\r\n _composer.value.warnHtmlMessage = val;\r\n }\r\n },\r\n get escapeParameter() {\r\n return _composer.value\r\n ? _composer.value.escapeParameter\r\n : _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n if (_composer.value) {\r\n _composer.value.escapeParameter = val;\r\n }\r\n },\r\n t,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n rt,\r\n d,\r\n n,\r\n tm,\r\n te,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getDateTimeFormat,\r\n setDateTimeFormat,\r\n mergeDateTimeFormat,\r\n getNumberFormat,\r\n setNumberFormat,\r\n mergeNumberFormat\r\n };\r\n function sync(composer) {\r\n composer.locale.value = _locale.value;\r\n composer.fallbackLocale.value = _fallbackLocale.value;\r\n Object.keys(_messages.value).forEach(locale => {\r\n composer.mergeLocaleMessage(locale, _messages.value[locale]);\r\n });\r\n Object.keys(_datetimeFormats.value).forEach(locale => {\r\n composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\r\n });\r\n Object.keys(_numberFormats.value).forEach(locale => {\r\n composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\r\n });\r\n composer.escapeParameter = _escapeParameter;\r\n composer.fallbackFormat = _fallbackFormat;\r\n composer.fallbackRoot = _fallbackRoot;\r\n composer.fallbackWarn = _fallbackWarn;\r\n composer.missingWarn = _missingWarn;\r\n composer.warnHtmlMessage = _warnHtmlMessage;\r\n }\r\n Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"onBeforeMount\"])(() => {\r\n if (instance.proxy == null || instance.proxy.$i18n == null) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const composer = (_composer.value = instance.proxy.$i18n\r\n .__composer);\r\n if (scope === 'global') {\r\n _locale.value = composer.locale.value;\r\n _fallbackLocale.value = composer.fallbackLocale.value;\r\n _messages.value = composer.messages.value;\r\n _datetimeFormats.value = composer.datetimeFormats.value;\r\n _numberFormats.value = composer.numberFormats.value;\r\n }\r\n else if (isLocale) {\r\n sync(composer);\r\n }\r\n });\r\n return wrapper;\r\n}\r\nconst globalExportProps = [\r\n 'locale',\r\n 'fallbackLocale',\r\n 'availableLocales'\r\n];\r\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm'] ;\r\nfunction injectGlobalFields(app, composer) {\r\n const i18n = Object.create(null);\r\n globalExportProps.forEach(prop => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\r\n if (!desc) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const wrap = Object(vue__WEBPACK_IMPORTED_MODULE_2__[\"isRef\"])(desc.value) // check computed props\r\n ? {\r\n get() {\r\n return desc.value.value;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set(val) {\r\n desc.value.value = val;\r\n }\r\n }\r\n : {\r\n get() {\r\n return desc.get && desc.get();\r\n }\r\n };\r\n Object.defineProperty(i18n, prop, wrap);\r\n });\r\n app.config.globalProperties.$i18n = i18n;\r\n globalExportMethods.forEach(method => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, method);\r\n if (!desc || !desc.value) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\r\n });\r\n}\n\n// register message resolver at vue-i18n\r\nObject(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"registerMessageResolver\"])(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"resolveValue\"]);\r\n// register fallback locale at vue-i18n\r\nObject(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"registerLocaleFallbacker\"])(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"fallbackWithLocaleChain\"]);\r\n{\r\n initFeatureFlags();\r\n}\r\n// NOTE: experimental !!\r\nif (true) {\r\n const target = Object(_intlify_shared__WEBPACK_IMPORTED_MODULE_0__[\"getGlobalThis\"])();\r\n target.__INTLIFY__ = true;\r\n Object(_intlify_core_base__WEBPACK_IMPORTED_MODULE_1__[\"setDevToolsHook\"])(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\r\n}\r\nif ((true)) ;\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWkxOG4vZGlzdC92dWUtaTE4bi5ydW50aW1lLmVzbS1idW5kbGVyLmpzPzE3YzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMwTjtBQUNrVDtBQUMzVztBQUN6RztBQUNzRDs7QUFFOUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEscUVBQWE7QUFDckI7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBYTtBQUNyQjtBQUNBO0FBQ0EsUUFBUSxxRUFBYTtBQUNyQjtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGdFQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxLQUFLLEdBQUcsSUFBSTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJGQUEyRixLQUFLO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4REFBTTtBQUNqQjs7QUFFQSxXQUFXLG9FQUFpQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDZFQUFrQixjQUFjLEtBQXFDLEtBQUssZ0NBQWdDLEdBQUcsU0FBUztBQUNqSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELEVBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsa0VBQVU7QUFDekIsMkNBQTJDLGtFQUFVO0FBQ3JELHlDQUF5QyxrRUFBVTtBQUNuRCxxQ0FBcUMsa0VBQVU7QUFDL0Msc0NBQXNDLGtFQUFVO0FBQ2hELDZCQUE2QixrRUFBVTtBQUN2QyxrRUFBVTtBQUNWLHdDQUF3QyxrRUFBVTtBQUNsRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGdFQUFRO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw4REFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdFQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixlQUFlO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnRUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsOENBQThDO0FBQ3pEO0FBQ0EsZ0JBQWdCLHFFQUFhO0FBQzdCO0FBQ0EsVUFBVSwrREFBTztBQUNqQjtBQUNBLGVBQWUsYUFBYTtBQUM1QjtBQUNBLFFBQVEsK0RBQU87QUFDZjtBQUNBO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0VBQVE7QUFDeEI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOERBQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGdFQUFRLFNBQVMsK0RBQU87QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhEQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdFQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdFQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0VBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQVcsQ0FBQyx3Q0FBSTtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDhEQUFrQjtBQUN0RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDhEQUFrQjtBQUN2QyxvQkFBb0I7QUFDcEI7QUFDQSxXQUFXLHdCQUF3QjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDLFdBQVcsU0FBUztBQUNwQjtBQUNBLHlCQUF5QixpRUFBUztBQUNsQztBQUNBO0FBQ0Esb0JBQW9CLCtDQUFHO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFVBQVUsZ0VBQVE7QUFDbEI7QUFDQSxjQUFjLGlFQUFjO0FBQzVCLDRCQUE0QiwrQ0FBRztBQUMvQjtBQUNBO0FBQ0E7QUFDQSxVQUFVLGdFQUFRO0FBQ2xCLFlBQVksK0RBQU87QUFDbkIsWUFBWSxxRUFBYTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQUc7QUFDekI7QUFDQSw2QkFBNkIsK0NBQUcsQ0FBQyxxRUFBYTtBQUM5QztBQUNBLGVBQWUsb0JBQW9CLEVBQUU7QUFDckM7QUFDQTtBQUNBLDJCQUEyQiwrQ0FBRyxDQUFDLHFFQUFhO0FBQzVDO0FBQ0EsZUFBZSxvQkFBb0IsRUFBRTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpRUFBUyx5QkFBeUIsZ0VBQVE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUVBQVMsMEJBQTBCLGdFQUFRO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLGlFQUFTO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0VBQVU7QUFDN0IsMEJBQTBCLGtFQUFVO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixrRUFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpRUFBUztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUscUVBQWE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2RUFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMscUVBQWE7QUFDM0Q7QUFDQTtBQUNBLDRDQUE0QyxxRUFBYTtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xELHFDQUFxQyxxRUFBYTtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEVBQWlCO0FBQ3JDLHFCQUFxQiw2RUFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsSUFBSSwrRUFBb0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9EQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSwyQkFBMkIsb0RBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtFQUFvQjtBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBLHFCQUFxQixvREFBUTtBQUM3QjtBQUNBLDJDQUEyQyxvREFBUTtBQUNuRDtBQUNBLHlDQUF5QyxvREFBUTtBQUNqRDtBQUNBO0FBQ0EsZUFBZSxrRUFBVTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQSxZQUFZLElBQW9FO0FBQ2hGO0FBQ0EsZ0JBQWdCLDRFQUFpQjtBQUNqQztBQUNBO0FBQ0EsMEJBQTBCLDZFQUFrQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDRFQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxFQUVKO0FBQ1QsWUFBWSxnRUFBUSxpQkFBaUIsK0RBQVk7QUFDakQ7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQSxnQkFBZ0IsZ0VBQVE7QUFDeEI7QUFDQTtBQUNBLHFCQUFxQixrRkFBdUI7QUFDNUMsd0JBQXdCLGlGQUFzQjtBQUM5QyxvQkFBb0IsNERBQUk7QUFDeEI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFELDJCQUEyQix1QkFBdUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxTQUFTLEdBQUcsSUFBSTtBQUN4RCx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCw0REFBUyxtQ0FBbUMsNkVBQWtCLDJGQUEyRixnRUFBUTtBQUN0TjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixnRUFBUTtBQUM3QjtBQUNBO0FBQ0EsaUNBQWlDLDhEQUFNLEVBQUUsd0JBQXdCLFlBQVk7QUFDN0U7QUFDQTtBQUNBO0FBQ0EscURBQXFELDJEQUFRLG1DQUFtQyw0RUFBaUIsb0ZBQW9GLHdFQUFxQixTQUFTLGdFQUFRO0FBQzNPO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCx5REFBTSxtQ0FBbUMsMEVBQWUsa0ZBQWtGLHdFQUFxQixTQUFTLGdFQUFRO0FBQ3JPO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxnRUFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDREQUFTO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFFBQVEsNkVBQWtCO0FBQ25DO0FBQ0EsMEZBQTBGLCtEQUFPO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCx5REFBTSxtQ0FBbUMsMEVBQWU7QUFDN0c7QUFDQSxtRUFBbUUsZ0VBQVEsU0FBUywrREFBTztBQUMzRjtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsMkRBQVEsbUNBQW1DLDRFQUFpQjtBQUNqSDtBQUNBLHFFQUFxRSxnRUFBUSxTQUFTLCtEQUFPO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGdFQUFRO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0ZBQXVCO0FBQy9DLHVCQUF1QixvQkFBb0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhFQUFtQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsOERBQU0scUNBQXFDO0FBQ3BGO0FBQ0EsUUFBUSw4RUFBbUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw0RUFBaUI7QUFDekI7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLDhEQUFNLG1DQUFtQztBQUNoRjtBQUNBLFFBQVEsNEVBQWlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlEQUFTO0FBQzNCLFFBQVEsaURBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0VBQW9CO0FBQ3BDO0FBQ0EsU0FBUztBQUNULFFBQVEsaURBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0VBQW9CO0FBQ3BDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwrRUFBb0I7QUFDcEM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdFQUFRLG9DQUFvQyxpRUFBYztBQUM3RSwyQkFBMkIsZ0VBQVE7QUFDbkMsUUFBUSwrREFBTztBQUNmLFFBQVEscUVBQWE7QUFDckI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtFQUFVO0FBQzlCLHdCQUF3QixpRUFBUztBQUNqQyxRQUFRLGdFQUFRO0FBQ2hCO0FBQ0E7QUFDQSx5QkFBeUIsaUVBQVM7QUFDbEMsUUFBUSxnRUFBUTtBQUNoQjtBQUNBO0FBQ0EseUJBQXlCLGlFQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxRUFBYTtBQUNuQztBQUNBLDRCQUE0QixrRUFBVTtBQUN0QztBQUNBO0FBQ0EsNEJBQTRCLGdFQUFRO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpRUFBUztBQUNuQyxTQUFTLEtBQXFDO0FBQzlDLFFBQVEsNERBQUk7QUFDWjtBQUNBLFNBQVMsS0FBcUM7QUFDOUMsUUFBUSw0REFBSTtBQUNaO0FBQ0E7QUFDQSxRQUFRLHFFQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHNFQUFzRTtBQUN0RSxZQUFZLDhEQUFNO0FBQ2xCO0FBQ0EsU0FBUyxpQkFBaUI7QUFDMUI7QUFDQSxXQUFXLHFDQUFxQztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUMsS0FBSyw0REFBSTtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxpQkFBaUIsS0FBcUMsS0FBSyw0REFBSTtBQUMvRCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLHVCQUF1QixpRUFBUztBQUNoQztBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsdUNBQXVDLGlFQUFTO0FBQ2hELGFBQWE7QUFDYjtBQUNBO0FBQ0EsdUJBQXVCLGlFQUFTO0FBQ2hDO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx3Q0FBd0MsaUVBQVM7QUFDakQsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3RELG9CQUFvQiw0REFBSTtBQUN4QjtBQUNBLGFBQWE7QUFDYjtBQUNBLGlCQUFpQixLQUFxQztBQUN0RCxvQkFBb0IsNERBQUk7QUFDeEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdFQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixnRUFBUTtBQUM1QjtBQUNBO0FBQ0EseUJBQXlCLCtEQUFPO0FBQ2hDO0FBQ0E7QUFDQSx5QkFBeUIscUVBQWE7QUFDdEM7QUFDQTtBQUNBLG9CQUFvQiwrREFBTztBQUMzQjtBQUNBO0FBQ0EseUJBQXlCLHFFQUFhO0FBQ3RDO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQSxxQkFBcUIsZ0VBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdFQUFRO0FBQzVCO0FBQ0E7QUFDQSx5QkFBeUIsZ0VBQVE7QUFDakM7QUFDQTtBQUNBLHlCQUF5QiwrREFBTztBQUNoQztBQUNBO0FBQ0EseUJBQXlCLHFFQUFhO0FBQ3RDO0FBQ0E7QUFDQSxvQkFBb0IsZ0VBQVE7QUFDNUI7QUFDQTtBQUNBLHlCQUF5QiwrREFBTztBQUNoQztBQUNBO0FBQ0EseUJBQXlCLHFFQUFhO0FBQ3RDO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQsb0JBQW9CLDREQUFJO0FBQ3hCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSx1QkFBdUIsbUNBQW1DO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyxRQUFRO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwrREFBTztBQUMzQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQUk7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNENBQVE7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGFBQWE7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QixXQUFXLGFBQWE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsRUFBRTtBQUM5QixNQUFNO0FBQ047QUFDQTtBQUNBLHVCQUF1QixFQUFFO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4REFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGdFQUFRO0FBQ3hDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsZUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLGdFQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDhEQUFNLEdBQUc7QUFDM0Msd0JBQXdCLGdFQUFRLGVBQWUsZ0VBQVE7QUFDdkQ7QUFDQTtBQUNBLG1CQUFtQiw2Q0FBQztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLCtEQUFPLGFBQWEsZ0VBQVE7QUFDdkM7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQjtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0VBQVE7QUFDcEI7QUFDQTtBQUNBLGlCQUFpQixnRUFBUTtBQUN6QjtBQUNBLGdCQUFnQixnRUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsOERBQU0sR0FBRyxZQUFZLDZCQUE2QjtBQUN4RTtBQUNBLGFBQWEsSUFBSTtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix3Q0FBd0M7QUFDcEU7QUFDQTtBQUNBLHFDQUFxQyxVQUFVLEdBQUcsTUFBTTtBQUN4RDtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsaUJBQWlCLGdFQUFRO0FBQ3pCO0FBQ0E7QUFDQSw4QkFBOEIsOERBQU0sR0FBRztBQUN2QyxvQkFBb0IsZ0VBQVEsZUFBZSxnRUFBUTtBQUNuRDtBQUNBO0FBQ0EsZUFBZSw2Q0FBQztBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4REFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJDQUEyQztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsOERBQU07QUFDakI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwyQ0FBMkM7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw2QkFBNkI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsWUFBWSw0REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0VBQVE7QUFDaEIsZ0JBQWdCO0FBQ2hCO0FBQ0EsYUFBYSxxRUFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUNBQXFDO0FBQ2hEO0FBQ0E7QUFDQSxRQUFRLGdFQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLGdFQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLGdFQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCLHFFQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpRUFBUztBQUNuQztBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QyxRQUFRLDREQUFJO0FBQ1o7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZFQUFtQjtBQUMvQjtBQUNBLHVCQUF1Qix1RUFBaUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLDRDQUE0Qyw4QkFBOEI7QUFDMUU7QUFDQSxpQkFBaUI7QUFDakIsMENBQTBDLGtDQUFrQztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSwyQkFBMkIsdUVBQWlCO0FBQzVDO0FBQ0EsMkNBQTJDLDZFQUF1QjtBQUNsRSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsMkJBQTJCLHVFQUFpQjtBQUM1QywyQkFBMkIsK0VBQXlCO0FBQ3BELGlCQUFpQjtBQUNqQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyw0QkFBNEI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrRUFBVTtBQUN0QjtBQUNBO0FBQ0EsaUJBQWlCLGdFQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGNBQWM7QUFDZCxnQkFBZ0I7QUFDaEIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxvQkFBb0I7QUFDN0Q7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLFVBQVU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwrQkFBK0I7QUFDckQsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGdFQUFRO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0VBQVE7QUFDckIsZ0JBQWdCLCtEQUFPO0FBQ3ZCLGdCQUFnQixnRUFBUTtBQUN4QjtBQUNBO0FBQ0EsOENBQThDLGlFQUFTO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDhEQUFrQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsZ0JBQWdCLEtBQ007QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IscUVBQWE7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSw2QkFBNkIsOERBQWtCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsS0FDTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGlCQUFpQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0VBQVU7QUFDekI7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQSxvREFBb0QsaUVBQVM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGlFQUFTO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0VBQVUsRUFBRSxLQUFxQyxpQkFBaUIsU0FBRTtBQUN2RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLG9CQUFvQixJQUNNO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUE0RTtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxxRUFBYTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QixxQkFBcUIsOERBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQsZ0JBQWdCLDREQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsOERBQU0sR0FBRztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsV0FBVyx3QkFBd0IsNENBQTRDO0FBQ2pJO0FBQ0EsaUNBQWlDO0FBQ2pDLGdEQUFnRCxjQUFjO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrREFBTTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxRUFBYTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFTO0FBQ2pCO0FBQ0EsZ0JBQWdCLEtBQ007QUFDdEI7QUFDQTtBQUNBLDBCQUEwQixxRUFBYTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVEsdURBQVc7QUFDbkI7QUFDQSxnQkFBZ0IsS0FDTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBO0FBQ0Esc0JBQXNCLHNEQUFVO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixpRUFBUztBQUNwQztBQUNBO0FBQ0Esb0JBQW9CLCtDQUFHO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFVBQVUsZ0VBQVE7QUFDbEI7QUFDQSxjQUFjLGlFQUFjO0FBQzVCLDRCQUE0QiwrQ0FBRztBQUMvQjtBQUNBO0FBQ0E7QUFDQSxVQUFVLGdFQUFRO0FBQ2xCLFlBQVksK0RBQU87QUFDbkIsWUFBWSxxRUFBYTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQUc7QUFDekI7QUFDQSw2QkFBNkIsK0NBQUcsQ0FBQyxxRUFBYTtBQUM5QztBQUNBLFdBQVcsb0JBQW9CLEVBQUU7QUFDakM7QUFDQSwyQkFBMkIsK0NBQUcsQ0FBQyxxRUFBYTtBQUM1QztBQUNBLFdBQVcsb0JBQW9CLEVBQUU7QUFDakM7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpRUFBUyx5QkFBeUIsZ0VBQVE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUVBQVMsMEJBQTBCLGdFQUFRO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLGlFQUFTO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsa0VBQVU7QUFDL0I7QUFDQSw2QkFBNkIsa0VBQVU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUVBQVM7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxxRUFBYTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0RBQVE7QUFDM0I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSwyQkFBMkIsb0RBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUJBQXFCLG9EQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsNEJBQTRCLG9EQUFRO0FBQ3BDLDBCQUEwQixvREFBUTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHlEQUFhO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpREFBSztBQUMxQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QsT0FBTztBQUN0RSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxrRkFBdUIsQ0FBQywrREFBWTtBQUNwQztBQUNBLG1GQUF3QixDQUFDLDBFQUF1QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBb0U7QUFDeEUsbUJBQW1CLHFFQUFhO0FBQ2hDO0FBQ0EsSUFBSSwwRUFBZTtBQUNuQjtBQUNBLEtBQUssSUFBcUM7O0FBRXVGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1pMThuL2Rpc3QvdnVlLWkxOG4ucnVudGltZS5lc20tYnVuZGxlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICAqIHZ1ZS1pMThuIHY5LjIuMC1iZXRhLjM0XG4gICogKGMpIDIwMjIga2F6dXlhIGthd2FndWNoaVxuICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAgKi9cbmltcG9ydCB7IGdldEdsb2JhbFRoaXMsIGZvcm1hdCwgbWFrZVN5bWJvbCwgaXNQbGFpbk9iamVjdCwgaXNBcnJheSwgaXNTdHJpbmcsIGhhc093biwgaXNPYmplY3QsIGlzQm9vbGVhbiwgaXNSZWdFeHAsIGlzRnVuY3Rpb24sIGluQnJvd3NlciwgYXNzaWduLCBpc051bWJlciwgd2FybiwgY3JlYXRlRW1pdHRlciwgaXNFbXB0eU9iamVjdCB9IGZyb20gJ0BpbnRsaWZ5L3NoYXJlZCc7XG5pbXBvcnQgeyBDb3JlV2FybkNvZGVzLCBjcmVhdGVDb21waWxlRXJyb3IsIENvbXBpbGVFcnJvckNvZGVzLCBERUZBVUxUX0xPQ0FMRSwgdXBkYXRlRmFsbGJhY2tMb2NhbGUsIHNldEZhbGxiYWNrQ29udGV4dCwgY3JlYXRlQ29yZUNvbnRleHQsIGNsZWFyRGF0ZVRpbWVGb3JtYXQsIGNsZWFyTnVtYmVyRm9ybWF0LCBzZXRBZGRpdGlvbmFsTWV0YSwgZ2V0RmFsbGJhY2tDb250ZXh0LCBOT1RfUkVPU0xWRUQsIGlzVHJhbnNsYXRlRmFsbGJhY2tXYXJuLCBpc1RyYW5zbGF0ZU1pc3NpbmdXYXJuLCBwYXJzZVRyYW5zbGF0ZUFyZ3MsIHRyYW5zbGF0ZSwgTUlTU0lOR19SRVNPTFZFX1ZBTFVFLCBwYXJzZURhdGVUaW1lQXJncywgZGF0ZXRpbWUsIHBhcnNlTnVtYmVyQXJncywgbnVtYmVyLCBmYWxsYmFja1dpdGhMb2NhbGVDaGFpbiwgcmVnaXN0ZXJNZXNzYWdlUmVzb2x2ZXIsIHJlc29sdmVWYWx1ZSwgcmVnaXN0ZXJMb2NhbGVGYWxsYmFja2VyLCBzZXREZXZUb29sc0hvb2sgfSBmcm9tICdAaW50bGlmeS9jb3JlLWJhc2UnO1xuaW1wb3J0IHsgY3JlYXRlVk5vZGUsIFRleHQsIHJlZiwgZ2V0Q3VycmVudEluc3RhbmNlLCBjb21wdXRlZCwgd2F0Y2gsIEZyYWdtZW50LCBoLCBpbmplY3QsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHNoYWxsb3dSZWYsIG9uQmVmb3JlTW91bnQsIGlzUmVmIH0gZnJvbSAndnVlJztcbmltcG9ydCB7IHNldHVwRGV2dG9vbHNQbHVnaW4gfSBmcm9tICdAdnVlL2RldnRvb2xzLWFwaSc7XG5pbXBvcnQgeyBWdWVEZXZUb29sc0xhYmVscywgVnVlRGV2VG9vbHNQbGFjZWhvbGRlcnMsIFZ1ZURldlRvb2xzVGltZWxpbmVDb2xvcnMgfSBmcm9tICdAaW50bGlmeS92dWUtZGV2dG9vbHMnO1xuXG4vKipcclxuICogVnVlIEkxOG4gVmVyc2lvblxyXG4gKlxyXG4gKiBAcmVtYXJrc1xyXG4gKiBTZW12ZXIgZm9ybWF0LiBTYW1lIGZvcm1hdCBhcyB0aGUgcGFja2FnZS5qc29uIGB2ZXJzaW9uYCBmaWVsZC5cclxuICpcclxuICogQFZ1ZUkxOG5HZW5lcmFsXHJcbiAqL1xyXG5jb25zdCBWRVJTSU9OID0gJzkuMi4wLWJldGEuMzQnO1xyXG4vKipcclxuICogVGhpcyBpcyBvbmx5IGNhbGxlZCBpbiBlc20tYnVuZGxlciBidWlsZHMuXHJcbiAqIGlzdGFuYnVsLWlnbm9yZS1uZXh0XHJcbiAqL1xyXG5mdW5jdGlvbiBpbml0RmVhdHVyZUZsYWdzKCkge1xyXG4gICAgbGV0IG5lZWRXYXJuID0gZmFsc2U7XHJcbiAgICBpZiAodHlwZW9mIF9fVlVFX0kxOE5fRlVMTF9JTlNUQUxMX18gIT09ICdib29sZWFuJykge1xyXG4gICAgICAgIG5lZWRXYXJuID0gdHJ1ZTtcclxuICAgICAgICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfSTE4Tl9GVUxMX0lOU1RBTExfXyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIF9fVlVFX0kxOE5fTEVHQUNZX0FQSV9fICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICBuZWVkV2FybiA9IHRydWU7XHJcbiAgICAgICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX0kxOE5fTEVHQUNZX0FQSV9fID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgX19JTlRMSUZZX1BST0RfREVWVE9PTFNfXyAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgZ2V0R2xvYmFsVGhpcygpLl9fSU5UTElGWV9QUk9EX0RFVlRPT0xTX18gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbmVlZFdhcm4pIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYFlvdSBhcmUgcnVubmluZyB0aGUgZXNtLWJ1bmRsZXIgYnVpbGQgb2YgdnVlLWkxOG4uIEl0IGlzIHJlY29tbWVuZGVkIHRvIGAgK1xyXG4gICAgICAgICAgICBgY29uZmlndXJlIHlvdXIgYnVuZGxlciB0byBleHBsaWNpdGx5IHJlcGxhY2UgZmVhdHVyZSBmbGFnIGdsb2JhbHMgYCArXHJcbiAgICAgICAgICAgIGB3aXRoIGJvb2xlYW4gbGl0ZXJhbHMgdG8gZ2V0IHByb3BlciB0cmVlLXNoYWtpbmcgaW4gdGhlIGZpbmFsIGJ1bmRsZS5gKTtcclxuICAgIH1cclxufVxuXG5sZXQgY29kZSQxID0gQ29yZVdhcm5Db2Rlcy5fX0VYVEVORF9QT0lOVF9fO1xyXG5jb25zdCBpbmMkMSA9ICgpID0+ICsrY29kZSQxO1xyXG5jb25zdCBJMThuV2FybkNvZGVzID0ge1xyXG4gICAgRkFMTEJBQ0tfVE9fUk9PVDogY29kZSQxLFxyXG4gICAgTk9UX1NVUFBPUlRFRF9QUkVTRVJWRTogaW5jJDEoKSxcclxuICAgIE5PVF9TVVBQT1JURURfRk9STUFUVEVSOiBpbmMkMSgpLFxyXG4gICAgTk9UX1NVUFBPUlRFRF9QUkVTRVJWRV9ESVJFQ1RJVkU6IGluYyQxKCksXHJcbiAgICBOT1RfU1VQUE9SVEVEX0dFVF9DSE9JQ0VfSU5ERVg6IGluYyQxKCksXHJcbiAgICBDT01QT05FTlRfTkFNRV9MRUdBQ1lfQ09NUEFUSUJMRTogaW5jJDEoKSxcclxuICAgIE5PVF9GT1VORF9QQVJFTlRfU0NPUEU6IGluYyQxKCksXHJcbiAgICBOT1RfU1VQUE9SVF9NVUxUSV9JMThOX0lOU1RBTkNFOiBpbmMkMSgpIC8vIDE0XHJcbn07XHJcbmNvbnN0IHdhcm5NZXNzYWdlcyA9IHtcclxuICAgIFtJMThuV2FybkNvZGVzLkZBTExCQUNLX1RPX1JPT1RdOiBgRmFsbCBiYWNrIHRvIHt0eXBlfSAne2tleX0nIHdpdGggcm9vdCBsb2NhbGUuYCxcclxuICAgIFtJMThuV2FybkNvZGVzLk5PVF9TVVBQT1JURURfUFJFU0VSVkVdOiBgTm90IHN1cHBvcnRlZCAncHJlc2VydmUnLmAsXHJcbiAgICBbSTE4bldhcm5Db2Rlcy5OT1RfU1VQUE9SVEVEX0ZPUk1BVFRFUl06IGBOb3Qgc3VwcG9ydGVkICdmb3JtYXR0ZXInLmAsXHJcbiAgICBbSTE4bldhcm5Db2Rlcy5OT1RfU1VQUE9SVEVEX1BSRVNFUlZFX0RJUkVDVElWRV06IGBOb3Qgc3VwcG9ydGVkICdwcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQnLmAsXHJcbiAgICBbSTE4bldhcm5Db2Rlcy5OT1RfU1VQUE9SVEVEX0dFVF9DSE9JQ0VfSU5ERVhdOiBgTm90IHN1cHBvcnRlZCAnZ2V0Q2hvaWNlSW5kZXgnLmAsXHJcbiAgICBbSTE4bldhcm5Db2Rlcy5DT01QT05FTlRfTkFNRV9MRUdBQ1lfQ09NUEFUSUJMRV06IGBDb21wb25lbnQgbmFtZSBsZWdhY3kgY29tcGF0aWJsZTogJ3tuYW1lfScgLT4gJ2kxOG4nYCxcclxuICAgIFtJMThuV2FybkNvZGVzLk5PVF9GT1VORF9QQVJFTlRfU0NPUEVdOiBgTm90IGZvdW5kIHBhcmVudCBzY29wZS4gdXNlIHRoZSBnbG9iYWwgc2NvcGUuYCxcclxuICAgIFtJMThuV2FybkNvZGVzLk5PVF9TVVBQT1JUX01VTFRJX0kxOE5fSU5TVEFOQ0VdOiBgTm90IHN1cHBvcnQgbXVsdGkgaTE4biBpbnN0YW5jZS5gXHJcbn07XHJcbmZ1bmN0aW9uIGdldFdhcm5NZXNzYWdlKGNvZGUsIC4uLmFyZ3MpIHtcclxuICAgIHJldHVybiBmb3JtYXQod2Fybk1lc3NhZ2VzW2NvZGVdLCAuLi5hcmdzKTtcclxufVxuXG5sZXQgY29kZSA9IENvbXBpbGVFcnJvckNvZGVzLl9fRVhURU5EX1BPSU5UX187XHJcbmNvbnN0IGluYyA9ICgpID0+ICsrY29kZTtcclxuY29uc3QgSTE4bkVycm9yQ29kZXMgPSB7XHJcbiAgICAvLyBjb21wb3NlciBtb2R1bGUgZXJyb3JzXHJcbiAgICBVTkVYUEVDVEVEX1JFVFVSTl9UWVBFOiBjb2RlLFxyXG4gICAgLy8gbGVnYWN5IG1vZHVsZSBlcnJvcnNcclxuICAgIElOVkFMSURfQVJHVU1FTlQ6IGluYygpLFxyXG4gICAgLy8gaTE4biBtb2R1bGUgZXJyb3JzXHJcbiAgICBNVVNUX0JFX0NBTExfU0VUVVBfVE9QOiBpbmMoKSxcclxuICAgIE5PVF9JTlNMQUxMRUQ6IGluYygpLFxyXG4gICAgTk9UX0FWQUlMQUJMRV9JTl9MRUdBQ1lfTU9ERTogaW5jKCksXHJcbiAgICAvLyBkaXJlY3RpdmUgbW9kdWxlIGVycm9yc1xyXG4gICAgUkVRVUlSRURfVkFMVUU6IGluYygpLFxyXG4gICAgSU5WQUxJRF9WQUxVRTogaW5jKCksXHJcbiAgICAvLyB2dWUtZGV2dG9vbHMgZXJyb3JzXHJcbiAgICBDQU5OT1RfU0VUVVBfVlVFX0RFVlRPT0xTX1BMVUdJTjogaW5jKCksXHJcbiAgICBOT1RfSU5TTEFMTEVEX1dJVEhfUFJPVklERTogaW5jKCksXHJcbiAgICAvLyB1bmV4cGVjdGVkIGVycm9yXHJcbiAgICBVTkVYUEVDVEVEX0VSUk9SOiBpbmMoKSxcclxuICAgIC8vIG5vdCBjb21wYXRpYmxlIGxlZ2FjeSB2dWUtaTE4biBjb25zdHJ1Y3RvclxyXG4gICAgTk9UX0NPTVBBVElCTEVfTEVHQUNZX1ZVRV9JMThOOiBpbmMoKSxcclxuICAgIC8vIGJyaWRnZSBzdXBwb3J0IHZ1ZSAyLnggb25seVxyXG4gICAgQlJJREdFX1NVUFBPUlRfVlVFXzJfT05MWTogaW5jKCksXHJcbiAgICAvLyBuZWVkIHRvIGRlZmluZSBgaTE4bmAgb3B0aW9uIGluIGBhbGxvd0NvbXBvc2l0aW9uOiB0cnVlYCBhbmQgYHVzZVNjb3BlOiAnbG9jYWwnIGF0IGB1c2VJMThuYGBcclxuICAgIE1VU1RfREVGSU5FX0kxOE5fT1BUSU9OX0lOX0FMTE9XX0NPTVBPU0lUSU9OOiBpbmMoKSxcclxuICAgIC8vIE5vdCBhdmFpbGFibGUgQ29tcG9zdGlvbiBBUEkgaW4gTGVnYWN5IEFQSSBtb2RlLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlIGxlZ2FjeSBBUEkgbW9kZSBpcyB3b3JraW5nIHByb3Blcmx5XHJcbiAgICBOT1RfQVZBSUxBQkxFX0NPTVBPU0lUSU9OX0lOX0xFR0FDWTogaW5jKCksXHJcbiAgICAvLyBmb3IgZW5oYW5jZW1lbnRcclxuICAgIF9fRVhURU5EX1BPSU5UX186IGluYygpIC8vIDI5XHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZUkxOG5FcnJvcihjb2RlLCAuLi5hcmdzKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlQ29tcGlsZUVycm9yKGNvZGUsIG51bGwsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHsgbWVzc2FnZXM6IGVycm9yTWVzc2FnZXMsIGFyZ3MgfSA6IHVuZGVmaW5lZCk7XHJcbn1cclxuY29uc3QgZXJyb3JNZXNzYWdlcyA9IHtcclxuICAgIFtJMThuRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX1JFVFVSTl9UWVBFXTogJ1VuZXhwZWN0ZWQgcmV0dXJuIHR5cGUgaW4gY29tcG9zZXInLFxyXG4gICAgW0kxOG5FcnJvckNvZGVzLklOVkFMSURfQVJHVU1FTlRdOiAnSW52YWxpZCBhcmd1bWVudCcsXHJcbiAgICBbSTE4bkVycm9yQ29kZXMuTVVTVF9CRV9DQUxMX1NFVFVQX1RPUF06ICdNdXN0IGJlIGNhbGxlZCBhdCB0aGUgdG9wIG9mIGEgYHNldHVwYCBmdW5jdGlvbicsXHJcbiAgICBbSTE4bkVycm9yQ29kZXMuTk9UX0lOU0xBTExFRF06ICdOZWVkIHRvIGluc3RhbGwgd2l0aCBgYXBwLnVzZWAgZnVuY3Rpb24nLFxyXG4gICAgW0kxOG5FcnJvckNvZGVzLlVORVhQRUNURURfRVJST1JdOiAnVW5leHBlY3RlZCBlcnJvcicsXHJcbiAgICBbSTE4bkVycm9yQ29kZXMuTk9UX0FWQUlMQUJMRV9JTl9MRUdBQ1lfTU9ERV06ICdOb3QgYXZhaWxhYmxlIGluIGxlZ2FjeSBtb2RlJyxcclxuICAgIFtJMThuRXJyb3JDb2Rlcy5SRVFVSVJFRF9WQUxVRV06IGBSZXF1aXJlZCBpbiB2YWx1ZTogezB9YCxcclxuICAgIFtJMThuRXJyb3JDb2Rlcy5JTlZBTElEX1ZBTFVFXTogYEludmFsaWQgdmFsdWVgLFxyXG4gICAgW0kxOG5FcnJvckNvZGVzLkNBTk5PVF9TRVRVUF9WVUVfREVWVE9PTFNfUExVR0lOXTogYENhbm5vdCBzZXR1cCB2dWUtZGV2dG9vbHMgcGx1Z2luYCxcclxuICAgIFtJMThuRXJyb3JDb2Rlcy5OT1RfSU5TTEFMTEVEX1dJVEhfUFJPVklERV06ICdOZWVkIHRvIGluc3RhbGwgd2l0aCBgcHJvdmlkZWAgZnVuY3Rpb24nLFxyXG4gICAgW0kxOG5FcnJvckNvZGVzLk5PVF9DT01QQVRJQkxFX0xFR0FDWV9WVUVfSTE4Tl06ICdOb3QgY29tcGF0aWJsZSBsZWdhY3kgVnVlSTE4bi4nLFxyXG4gICAgW0kxOG5FcnJvckNvZGVzLkJSSURHRV9TVVBQT1JUX1ZVRV8yX09OTFldOiAndnVlLWkxOG4tYnJpZGdlIHN1cHBvcnQgVnVlIDIueCBvbmx5JyxcclxuICAgIFtJMThuRXJyb3JDb2Rlcy5NVVNUX0RFRklORV9JMThOX09QVElPTl9JTl9BTExPV19DT01QT1NJVElPTl06ICdNdXN0IGRlZmluZSDigJhpMThu4oCZIG9wdGlvbiBpbiBDb21wb3NpdGlvbiBBUEkgd2l0aCB1c2luZyBsb2NhbCBzY29wZSBpbiBMZWdhY3kgQVBJIG1vZGUnLFxyXG4gICAgW0kxOG5FcnJvckNvZGVzLk5PVF9BVkFJTEFCTEVfQ09NUE9TSVRJT05fSU5fTEVHQUNZXTogJ05vdCBhdmFpbGFibGUgQ29tcG9zdGlvbiBBUEkgaW4gTGVnYWN5IEFQSSBtb2RlLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlIGxlZ2FjeSBBUEkgbW9kZSBpcyB3b3JraW5nIHByb3Blcmx5J1xyXG59O1xuXG5jb25zdCBUcmFuc3JhdGVWTm9kZVN5bWJvbCA9IFxyXG4vKiAjX19QVVJFX18qLyBtYWtlU3ltYm9sKCdfX3RyYW5zcmF0ZVZOb2RlJyk7XHJcbmNvbnN0IERhdGV0aW1lUGFydHNTeW1ib2wgPSAvKiAjX19QVVJFX18qLyBtYWtlU3ltYm9sKCdfX2RhdGV0aW1lUGFydHMnKTtcclxuY29uc3QgTnVtYmVyUGFydHNTeW1ib2wgPSAvKiAjX19QVVJFX18qLyBtYWtlU3ltYm9sKCdfX251bWJlclBhcnRzJyk7XHJcbmNvbnN0IEVuYWJsZUVtaXR0ZXIgPSAvKiAjX19QVVJFX18qLyBtYWtlU3ltYm9sKCdfX2VuYWJsZUVtaXR0ZXInKTtcclxuY29uc3QgRGlzYWJsZUVtaXR0ZXIgPSAvKiAjX19QVVJFX18qLyBtYWtlU3ltYm9sKCdfX2Rpc2FibGVFbWl0dGVyJyk7XHJcbmNvbnN0IFNldFBsdXJhbFJ1bGVzU3ltYm9sID0gbWFrZVN5bWJvbCgnX19zZXRQbHVyYWxSdWxlcycpO1xyXG5tYWtlU3ltYm9sKCdfX2ludGxpZnlNZXRhJyk7XHJcbmNvbnN0IEluZWpjdFdpdGhPcHRpb24gPSAvKiAjX19QVVJFX18qLyBtYWtlU3ltYm9sKCdfX2luamVjdFdpdGhPcHRpb24nKTtcclxuY29uc3QgX19WVUVfSTE4Tl9CUklER0VfXyA9ICAnX19WVUVfSTE4Tl9CUklER0VfXyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyoqXHJcbiAqIFRyYW5zZm9ybSBmbGF0IGpzb24gaW4gb2JqIHRvIG5vcm1hbCBqc29uIGluIG9ialxyXG4gKi9cclxuZnVuY3Rpb24gaGFuZGxlRmxhdEpzb24ob2JqKSB7XHJcbiAgICAvLyBjaGVjayBvYmpcclxuICAgIGlmICghaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAvLyBjaGVjayBrZXlcclxuICAgICAgICBpZiAoIWhhc093bihvYmosIGtleSkpIHtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSBmb3Igbm9ybWFsIGpzb25cclxuICAgICAgICBpZiAoIWtleS5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgICAgICAgIC8vIHJlY3Vyc2l2ZSBwcm9jZXNzIHZhbHVlIGlmIHZhbHVlIGlzIGFsc28gYSBvYmplY3RcclxuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KG9ialtrZXldKSkge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlRmxhdEpzb24ob2JqW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSBmb3IgZmxhdCBqc29uLCB0cmFuc2Zvcm0gdG8gbm9ybWFsIGpzb25cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZ28gdG8gdGhlIGxhc3Qgb2JqZWN0XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YktleXMgPSBrZXkuc3BsaXQoJy4nKTtcclxuICAgICAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gc3ViS2V5cy5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICBsZXQgY3VycmVudE9iaiA9IG9iajtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXN0SW5kZXg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEoc3ViS2V5c1tpXSBpbiBjdXJyZW50T2JqKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPYmpbc3ViS2V5c1tpXV0gPSB7fTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPYmogPSBjdXJyZW50T2JqW3N1YktleXNbaV1dO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBsYXN0IG9iamVjdCB2YWx1ZSwgZGVsZXRlIG9sZCBwcm9wZXJ0eVxyXG4gICAgICAgICAgICBjdXJyZW50T2JqW3N1YktleXNbbGFzdEluZGV4XV0gPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgZGVsZXRlIG9ialtrZXldO1xyXG4gICAgICAgICAgICAvLyByZWN1cnNpdmUgcHJvY2VzcyB2YWx1ZSBpZiB2YWx1ZSBpcyBhbHNvIGEgb2JqZWN0XHJcbiAgICAgICAgICAgIGlmIChpc09iamVjdChjdXJyZW50T2JqW3N1YktleXNbbGFzdEluZGV4XV0pKSB7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVGbGF0SnNvbihjdXJyZW50T2JqW3N1YktleXNbbGFzdEluZGV4XV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxufVxyXG5mdW5jdGlvbiBnZXRMb2NhbGVNZXNzYWdlcyhsb2NhbGUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgbWVzc2FnZXMsIF9faTE4biwgbWVzc2FnZVJlc29sdmVyLCBmbGF0SnNvbiB9ID0gb3B0aW9ucztcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgY29uc3QgcmV0ID0gaXNQbGFpbk9iamVjdChtZXNzYWdlcylcclxuICAgICAgICA/IG1lc3NhZ2VzXHJcbiAgICAgICAgOiBpc0FycmF5KF9faTE4bilcclxuICAgICAgICAgICAgPyB7fVxyXG4gICAgICAgICAgICA6IHsgW2xvY2FsZV06IHt9IH07XHJcbiAgICAvLyBtZXJnZSBsb2NhbGUgbWVzc2FnZXMgb2YgaTE4biBjdXN0b20gYmxvY2tcclxuICAgIGlmIChpc0FycmF5KF9faTE4bikpIHtcclxuICAgICAgICBfX2kxOG4uZm9yRWFjaChjdXN0b20gPT4ge1xyXG4gICAgICAgICAgICBpZiAoJ2xvY2FsZScgaW4gY3VzdG9tICYmICdyZXNvdXJjZScgaW4gY3VzdG9tKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxvY2FsZSwgcmVzb3VyY2UgfSA9IGN1c3RvbTtcclxuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRbbG9jYWxlXSA9IHJldFtsb2NhbGVdIHx8IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZXBDb3B5KHJlc291cmNlLCByZXRbbG9jYWxlXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWVwQ29weShyZXNvdXJjZSwgcmV0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlzU3RyaW5nKGN1c3RvbSkgJiYgZGVlcENvcHkoSlNPTi5wYXJzZShjdXN0b20pLCByZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyBoYW5kbGUgbWVzc2FnZXMgZm9yIGZsYXQganNvblxyXG4gICAgaWYgKG1lc3NhZ2VSZXNvbHZlciA9PSBudWxsICYmIGZsYXRKc29uKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmV0KSB7XHJcbiAgICAgICAgICAgIGlmIChoYXNPd24ocmV0LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVGbGF0SnNvbihyZXRba2V5XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmNvbnN0IGlzTm90T2JqZWN0T3JJc0FycmF5ID0gKHZhbCkgPT4gIWlzT2JqZWN0KHZhbCkgfHwgaXNBcnJheSh2YWwpO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xyXG5mdW5jdGlvbiBkZWVwQ29weShzcmMsIGRlcykge1xyXG4gICAgLy8gc3JjIGFuZCBkZXMgc2hvdWxkIGJvdGggYmUgb2JqZWN0cywgYW5kIG5vbiBvZiB0aGVuIGNhbiBiZSBhIGFycmF5XHJcbiAgICBpZiAoaXNOb3RPYmplY3RPcklzQXJyYXkoc3JjKSB8fCBpc05vdE9iamVjdE9ySXNBcnJheShkZXMpKSB7XHJcbiAgICAgICAgdGhyb3cgY3JlYXRlSTE4bkVycm9yKEkxOG5FcnJvckNvZGVzLklOVkFMSURfVkFMVUUpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc3JjKSB7XHJcbiAgICAgICAgaWYgKGhhc093bihzcmMsIGtleSkpIHtcclxuICAgICAgICAgICAgaWYgKGlzTm90T2JqZWN0T3JJc0FycmF5KHNyY1trZXldKSB8fCBpc05vdE9iamVjdE9ySXNBcnJheShkZXNba2V5XSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlcGxhY2Ugd2l0aCBzcmNba2V5XSB3aGVuOlxyXG4gICAgICAgICAgICAgICAgLy8gc3JjW2tleV0gb3IgZGVzW2tleV0gaXMgbm90IGEgb2JqZWN0LCBvclxyXG4gICAgICAgICAgICAgICAgLy8gc3JjW2tleV0gb3IgZGVzW2tleV0gaXMgYSBhcnJheVxyXG4gICAgICAgICAgICAgICAgZGVzW2tleV0gPSBzcmNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHNyY1trZXldIGFuZCBkZXNba2V5XSBhcmUgYm90aCBvYmplY3QsIG1lcmdlIHRoZW1cclxuICAgICAgICAgICAgICAgIGRlZXBDb3B5KHNyY1trZXldLCBkZXNba2V5XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50T3B0aW9ucyhpbnN0YW5jZSkge1xyXG4gICAgcmV0dXJuIGluc3RhbmNlLnR5cGUgO1xyXG59XHJcbmZ1bmN0aW9uIGFkanVzdEkxOG5SZXNvdXJjZXMoZ2xvYmFsLCBvcHRpb25zLCBjb21wb25lbnRPcHRpb25zIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4pIHtcclxuICAgIGxldCBtZXNzYWdlcyA9IGlzT2JqZWN0KG9wdGlvbnMubWVzc2FnZXMpID8gb3B0aW9ucy5tZXNzYWdlcyA6IHt9O1xyXG4gICAgaWYgKCdfX2kxOG5HbG9iYWwnIGluIGNvbXBvbmVudE9wdGlvbnMpIHtcclxuICAgICAgICBtZXNzYWdlcyA9IGdldExvY2FsZU1lc3NhZ2VzKGdsb2JhbC5sb2NhbGUudmFsdWUsIHtcclxuICAgICAgICAgICAgbWVzc2FnZXMsXHJcbiAgICAgICAgICAgIF9faTE4bjogY29tcG9uZW50T3B0aW9ucy5fX2kxOG5HbG9iYWxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIG1lcmdlIGxvY2FsZSBtZXNzYWdlc1xyXG4gICAgY29uc3QgbG9jYWxlcyA9IE9iamVjdC5rZXlzKG1lc3NhZ2VzKTtcclxuICAgIGlmIChsb2NhbGVzLmxlbmd0aCkge1xyXG4gICAgICAgIGxvY2FsZXMuZm9yRWFjaChsb2NhbGUgPT4ge1xyXG4gICAgICAgICAgICBnbG9iYWwubWVyZ2VMb2NhbGVNZXNzYWdlKGxvY2FsZSwgbWVzc2FnZXNbbG9jYWxlXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB7XHJcbiAgICAgICAgLy8gbWVyZ2UgZGF0ZXRpbWUgZm9ybWF0c1xyXG4gICAgICAgIGlmIChpc09iamVjdChvcHRpb25zLmRhdGV0aW1lRm9ybWF0cykpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9jYWxlcyA9IE9iamVjdC5rZXlzKG9wdGlvbnMuZGF0ZXRpbWVGb3JtYXRzKTtcclxuICAgICAgICAgICAgaWYgKGxvY2FsZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbGVzLmZvckVhY2gobG9jYWxlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBnbG9iYWwubWVyZ2VEYXRlVGltZUZvcm1hdChsb2NhbGUsIG9wdGlvbnMuZGF0ZXRpbWVGb3JtYXRzW2xvY2FsZV0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbWVyZ2UgbnVtYmVyIGZvcm1hdHNcclxuICAgICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucy5udW1iZXJGb3JtYXRzKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsb2NhbGVzID0gT2JqZWN0LmtleXMob3B0aW9ucy5udW1iZXJGb3JtYXRzKTtcclxuICAgICAgICAgICAgaWYgKGxvY2FsZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbGVzLmZvckVhY2gobG9jYWxlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBnbG9iYWwubWVyZ2VOdW1iZXJGb3JtYXQobG9jYWxlLCBvcHRpb25zLm51bWJlckZvcm1hdHNbbG9jYWxlXSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZShrZXkpIHtcclxuICAgIHJldHVybiBjcmVhdGVWTm9kZShUZXh0LCBudWxsLCBrZXksIDApXHJcbiAgICAgICAgO1xyXG59XHJcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbi8vIGV4dGVuZCBWTm9kZSBpbnRlcmZhY2VcclxuY29uc3QgREVWVE9PTFNfTUVUQSA9ICdfX0lOVExJRllfTUVUQV9fJztcclxubGV0IGNvbXBvc2VySUQgPSAwO1xyXG5mdW5jdGlvbiBkZWZpbmVDb3JlTWlzc2luZ0hhbmRsZXIobWlzc2luZykge1xyXG4gICAgcmV0dXJuICgoY3R4LCBsb2NhbGUsIGtleSwgdHlwZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBtaXNzaW5nKGxvY2FsZSwga2V5LCBnZXRDdXJyZW50SW5zdGFuY2UoKSB8fCB1bmRlZmluZWQsIHR5cGUpO1xyXG4gICAgfSk7XHJcbn1cclxuLy8gZm9yIEludGxpZnkgRGV2VG9vbHNcclxuY29uc3QgZ2V0TWV0YUluZm8gPSAgKCkgPT4ge1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIGxldCBtZXRhID0gbnVsbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICByZXR1cm4gaW5zdGFuY2UgJiYgKG1ldGEgPSBnZXRDb21wb25lbnRPcHRpb25zKGluc3RhbmNlKVtERVZUT09MU19NRVRBXSlcclxuICAgICAgICA/IHsgW0RFVlRPT0xTX01FVEFdOiBtZXRhIH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgOiBudWxsO1xyXG59O1xyXG4vKipcclxuICogQ3JlYXRlIGNvbXBvc2VyIGludGVyZmFjZSBmYWN0b3J5XHJcbiAqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcclxuZnVuY3Rpb24gY3JlYXRlQ29tcG9zZXIob3B0aW9ucyA9IHt9LCBWdWVJMThuTGVnYWN5KSB7XHJcbiAgICBjb25zdCB7IF9fcm9vdCB9ID0gb3B0aW9ucztcclxuICAgIGNvbnN0IF9pc0dsb2JhbCA9IF9fcm9vdCA9PT0gdW5kZWZpbmVkO1xyXG4gICAgbGV0IF9pbmhlcml0TG9jYWxlID0gaXNCb29sZWFuKG9wdGlvbnMuaW5oZXJpdExvY2FsZSlcclxuICAgICAgICA/IG9wdGlvbnMuaW5oZXJpdExvY2FsZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGNvbnN0IF9sb2NhbGUgPSByZWYoXHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIF9fcm9vdCAmJiBfaW5oZXJpdExvY2FsZVxyXG4gICAgICAgID8gX19yb290LmxvY2FsZS52YWx1ZVxyXG4gICAgICAgIDogaXNTdHJpbmcob3B0aW9ucy5sb2NhbGUpXHJcbiAgICAgICAgICAgID8gb3B0aW9ucy5sb2NhbGVcclxuICAgICAgICAgICAgOiBERUZBVUxUX0xPQ0FMRSk7XHJcbiAgICBjb25zdCBfZmFsbGJhY2tMb2NhbGUgPSByZWYoXHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIF9fcm9vdCAmJiBfaW5oZXJpdExvY2FsZVxyXG4gICAgICAgID8gX19yb290LmZhbGxiYWNrTG9jYWxlLnZhbHVlXHJcbiAgICAgICAgOiBpc1N0cmluZyhvcHRpb25zLmZhbGxiYWNrTG9jYWxlKSB8fFxyXG4gICAgICAgICAgICBpc0FycmF5KG9wdGlvbnMuZmFsbGJhY2tMb2NhbGUpIHx8XHJcbiAgICAgICAgICAgIGlzUGxhaW5PYmplY3Qob3B0aW9ucy5mYWxsYmFja0xvY2FsZSkgfHxcclxuICAgICAgICAgICAgb3B0aW9ucy5mYWxsYmFja0xvY2FsZSA9PT0gZmFsc2VcclxuICAgICAgICAgICAgPyBvcHRpb25zLmZhbGxiYWNrTG9jYWxlXHJcbiAgICAgICAgICAgIDogX2xvY2FsZS52YWx1ZSk7XHJcbiAgICBjb25zdCBfbWVzc2FnZXMgPSByZWYoZ2V0TG9jYWxlTWVzc2FnZXMoX2xvY2FsZS52YWx1ZSwgb3B0aW9ucykpO1xyXG4gICAgLy8gcHJldHRpZXItaWdub3JlXHJcbiAgICBjb25zdCBfZGF0ZXRpbWVGb3JtYXRzID0gcmVmKGlzUGxhaW5PYmplY3Qob3B0aW9ucy5kYXRldGltZUZvcm1hdHMpXHJcbiAgICAgICAgICAgID8gb3B0aW9ucy5kYXRldGltZUZvcm1hdHNcclxuICAgICAgICAgICAgOiB7IFtfbG9jYWxlLnZhbHVlXToge30gfSlcclxuICAgICAgICA7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IF9udW1iZXJGb3JtYXRzID0gcmVmKGlzUGxhaW5PYmplY3Qob3B0aW9ucy5udW1iZXJGb3JtYXRzKVxyXG4gICAgICAgICAgICA/IG9wdGlvbnMubnVtYmVyRm9ybWF0c1xyXG4gICAgICAgICAgICA6IHsgW19sb2NhbGUudmFsdWVdOiB7fSB9KVxyXG4gICAgICAgIDtcclxuICAgIC8vIHdhcm5pbmcgc3VwcHJlc3Mgb3B0aW9uc1xyXG4gICAgLy8gcHJldHRpZXItaWdub3JlXHJcbiAgICBsZXQgX21pc3NpbmdXYXJuID0gX19yb290XHJcbiAgICAgICAgPyBfX3Jvb3QubWlzc2luZ1dhcm5cclxuICAgICAgICA6IGlzQm9vbGVhbihvcHRpb25zLm1pc3NpbmdXYXJuKSB8fCBpc1JlZ0V4cChvcHRpb25zLm1pc3NpbmdXYXJuKVxyXG4gICAgICAgICAgICA/IG9wdGlvbnMubWlzc2luZ1dhcm5cclxuICAgICAgICAgICAgOiB0cnVlO1xyXG4gICAgLy8gcHJldHRpZXItaWdub3JlXHJcbiAgICBsZXQgX2ZhbGxiYWNrV2FybiA9IF9fcm9vdFxyXG4gICAgICAgID8gX19yb290LmZhbGxiYWNrV2FyblxyXG4gICAgICAgIDogaXNCb29sZWFuKG9wdGlvbnMuZmFsbGJhY2tXYXJuKSB8fCBpc1JlZ0V4cChvcHRpb25zLmZhbGxiYWNrV2FybilcclxuICAgICAgICAgICAgPyBvcHRpb25zLmZhbGxiYWNrV2FyblxyXG4gICAgICAgICAgICA6IHRydWU7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGxldCBfZmFsbGJhY2tSb290ID0gX19yb290XHJcbiAgICAgICAgPyBfX3Jvb3QuZmFsbGJhY2tSb290XHJcbiAgICAgICAgOiBpc0Jvb2xlYW4ob3B0aW9ucy5mYWxsYmFja1Jvb3QpXHJcbiAgICAgICAgICAgID8gb3B0aW9ucy5mYWxsYmFja1Jvb3RcclxuICAgICAgICAgICAgOiB0cnVlO1xyXG4gICAgLy8gY29uZmlndXJlIGZhbGwgYmFjayB0byByb290XHJcbiAgICBsZXQgX2ZhbGxiYWNrRm9ybWF0ID0gISFvcHRpb25zLmZhbGxiYWNrRm9ybWF0O1xyXG4gICAgLy8gcnVudGltZSBtaXNzaW5nXHJcbiAgICBsZXQgX21pc3NpbmcgPSBpc0Z1bmN0aW9uKG9wdGlvbnMubWlzc2luZykgPyBvcHRpb25zLm1pc3NpbmcgOiBudWxsO1xyXG4gICAgbGV0IF9ydW50aW1lTWlzc2luZyA9IGlzRnVuY3Rpb24ob3B0aW9ucy5taXNzaW5nKVxyXG4gICAgICAgID8gZGVmaW5lQ29yZU1pc3NpbmdIYW5kbGVyKG9wdGlvbnMubWlzc2luZylcclxuICAgICAgICA6IG51bGw7XHJcbiAgICAvLyBwb3N0VHJhbnNsYXRpb24gaGFuZGxlclxyXG4gICAgbGV0IF9wb3N0VHJhbnNsYXRpb24gPSBpc0Z1bmN0aW9uKG9wdGlvbnMucG9zdFRyYW5zbGF0aW9uKVxyXG4gICAgICAgID8gb3B0aW9ucy5wb3N0VHJhbnNsYXRpb25cclxuICAgICAgICA6IG51bGw7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGxldCBfd2Fybkh0bWxNZXNzYWdlID0gX19yb290XHJcbiAgICAgICAgPyBfX3Jvb3Qud2Fybkh0bWxNZXNzYWdlXHJcbiAgICAgICAgOiBpc0Jvb2xlYW4ob3B0aW9ucy53YXJuSHRtbE1lc3NhZ2UpXHJcbiAgICAgICAgICAgID8gb3B0aW9ucy53YXJuSHRtbE1lc3NhZ2VcclxuICAgICAgICAgICAgOiB0cnVlO1xyXG4gICAgbGV0IF9lc2NhcGVQYXJhbWV0ZXIgPSAhIW9wdGlvbnMuZXNjYXBlUGFyYW1ldGVyO1xyXG4gICAgLy8gY3VzdG9tIGxpbmtlZCBtb2RpZmllcnNcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgY29uc3QgX21vZGlmaWVycyA9IF9fcm9vdFxyXG4gICAgICAgID8gX19yb290Lm1vZGlmaWVyc1xyXG4gICAgICAgIDogaXNQbGFpbk9iamVjdChvcHRpb25zLm1vZGlmaWVycylcclxuICAgICAgICAgICAgPyBvcHRpb25zLm1vZGlmaWVyc1xyXG4gICAgICAgICAgICA6IHt9O1xyXG4gICAgLy8gcGx1cmFsUnVsZXNcclxuICAgIGxldCBfcGx1cmFsUnVsZXMgPSBvcHRpb25zLnBsdXJhbFJ1bGVzIHx8IChfX3Jvb3QgJiYgX19yb290LnBsdXJhbFJ1bGVzKTtcclxuICAgIC8vIHJ1bnRpbWUgY29udGV4dFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxyXG4gICAgbGV0IF9jb250ZXh0O1xyXG4gICAgZnVuY3Rpb24gZ2V0Q29yZUNvbnRleHQoKSB7XHJcbiAgICAgICAgX2lzR2xvYmFsICYmIHNldEZhbGxiYWNrQ29udGV4dChudWxsKTtcclxuICAgICAgICBjb25zdCBjdHhPcHRpb25zID0ge1xyXG4gICAgICAgICAgICB2ZXJzaW9uOiBWRVJTSU9OLFxyXG4gICAgICAgICAgICBsb2NhbGU6IF9sb2NhbGUudmFsdWUsXHJcbiAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlOiBfZmFsbGJhY2tMb2NhbGUudmFsdWUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2VzOiBfbWVzc2FnZXMudmFsdWUsXHJcbiAgICAgICAgICAgIG1vZGlmaWVyczogX21vZGlmaWVycyxcclxuICAgICAgICAgICAgcGx1cmFsUnVsZXM6IF9wbHVyYWxSdWxlcyxcclxuICAgICAgICAgICAgbWlzc2luZzogX3J1bnRpbWVNaXNzaW5nID09PSBudWxsID8gdW5kZWZpbmVkIDogX3J1bnRpbWVNaXNzaW5nLFxyXG4gICAgICAgICAgICBtaXNzaW5nV2FybjogX21pc3NpbmdXYXJuLFxyXG4gICAgICAgICAgICBmYWxsYmFja1dhcm46IF9mYWxsYmFja1dhcm4sXHJcbiAgICAgICAgICAgIGZhbGxiYWNrRm9ybWF0OiBfZmFsbGJhY2tGb3JtYXQsXHJcbiAgICAgICAgICAgIHVucmVzb2x2aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBwb3N0VHJhbnNsYXRpb246IF9wb3N0VHJhbnNsYXRpb24gPT09IG51bGwgPyB1bmRlZmluZWQgOiBfcG9zdFRyYW5zbGF0aW9uLFxyXG4gICAgICAgICAgICB3YXJuSHRtbE1lc3NhZ2U6IF93YXJuSHRtbE1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGVzY2FwZVBhcmFtZXRlcjogX2VzY2FwZVBhcmFtZXRlcixcclxuICAgICAgICAgICAgbWVzc2FnZVJlc29sdmVyOiBvcHRpb25zLm1lc3NhZ2VSZXNvbHZlcixcclxuICAgICAgICAgICAgX19tZXRhOiB7IGZyYW1ld29yazogJ3Z1ZScgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjdHhPcHRpb25zLmRhdGV0aW1lRm9ybWF0cyA9IF9kYXRldGltZUZvcm1hdHMudmFsdWU7XHJcbiAgICAgICAgICAgIGN0eE9wdGlvbnMubnVtYmVyRm9ybWF0cyA9IF9udW1iZXJGb3JtYXRzLnZhbHVlO1xyXG4gICAgICAgICAgICBjdHhPcHRpb25zLl9fZGF0ZXRpbWVGb3JtYXR0ZXJzID0gaXNQbGFpbk9iamVjdChfY29udGV4dClcclxuICAgICAgICAgICAgICAgID8gX2NvbnRleHQuX19kYXRldGltZUZvcm1hdHRlcnNcclxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBjdHhPcHRpb25zLl9fbnVtYmVyRm9ybWF0dGVycyA9IGlzUGxhaW5PYmplY3QoX2NvbnRleHQpXHJcbiAgICAgICAgICAgICAgICA/IF9jb250ZXh0Ll9fbnVtYmVyRm9ybWF0dGVyc1xyXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgY3R4T3B0aW9ucy5fX3ZfZW1pdHRlciA9IGlzUGxhaW5PYmplY3QoX2NvbnRleHQpXHJcbiAgICAgICAgICAgICAgICA/IF9jb250ZXh0Ll9fdl9lbWl0dGVyXHJcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3R4ID0gY3JlYXRlQ29yZUNvbnRleHQoY3R4T3B0aW9ucyk7XHJcbiAgICAgICAgX2lzR2xvYmFsICYmIHNldEZhbGxiYWNrQ29udGV4dChjdHgpO1xyXG4gICAgICAgIHJldHVybiBjdHg7XHJcbiAgICB9XHJcbiAgICBfY29udGV4dCA9IGdldENvcmVDb250ZXh0KCk7XHJcbiAgICB1cGRhdGVGYWxsYmFja0xvY2FsZShfY29udGV4dCwgX2xvY2FsZS52YWx1ZSwgX2ZhbGxiYWNrTG9jYWxlLnZhbHVlKTtcclxuICAgIC8vIHRyYWNrIHJlYWN0aXZpdHlcclxuICAgIGZ1bmN0aW9uIHRyYWNrUmVhY3Rpdml0eVZhbHVlcygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgX2xvY2FsZS52YWx1ZSxcclxuICAgICAgICAgICAgICAgIF9mYWxsYmFja0xvY2FsZS52YWx1ZSxcclxuICAgICAgICAgICAgICAgIF9tZXNzYWdlcy52YWx1ZSxcclxuICAgICAgICAgICAgICAgIF9kYXRldGltZUZvcm1hdHMudmFsdWUsXHJcbiAgICAgICAgICAgICAgICBfbnVtYmVyRm9ybWF0cy52YWx1ZVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIDtcclxuICAgIH1cclxuICAgIC8vIGxvY2FsZVxyXG4gICAgY29uc3QgbG9jYWxlID0gY29tcHV0ZWQoe1xyXG4gICAgICAgIGdldDogKCkgPT4gX2xvY2FsZS52YWx1ZSxcclxuICAgICAgICBzZXQ6IHZhbCA9PiB7XHJcbiAgICAgICAgICAgIF9sb2NhbGUudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgIF9jb250ZXh0LmxvY2FsZSA9IF9sb2NhbGUudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBmYWxsYmFja0xvY2FsZVxyXG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPSBjb21wdXRlZCh7XHJcbiAgICAgICAgZ2V0OiAoKSA9PiBfZmFsbGJhY2tMb2NhbGUudmFsdWUsXHJcbiAgICAgICAgc2V0OiB2YWwgPT4ge1xyXG4gICAgICAgICAgICBfZmFsbGJhY2tMb2NhbGUudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgIF9jb250ZXh0LmZhbGxiYWNrTG9jYWxlID0gX2ZhbGxiYWNrTG9jYWxlLnZhbHVlO1xyXG4gICAgICAgICAgICB1cGRhdGVGYWxsYmFja0xvY2FsZShfY29udGV4dCwgX2xvY2FsZS52YWx1ZSwgdmFsKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIG1lc3NhZ2VzXHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IGNvbXB1dGVkKCgpID0+IF9tZXNzYWdlcy52YWx1ZSk7XHJcbiAgICAvLyBkYXRldGltZUZvcm1hdHNcclxuICAgIGNvbnN0IGRhdGV0aW1lRm9ybWF0cyA9IC8qICNfX1BVUkVfXyovIGNvbXB1dGVkKCgpID0+IF9kYXRldGltZUZvcm1hdHMudmFsdWUpO1xyXG4gICAgLy8gbnVtYmVyRm9ybWF0c1xyXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0cyA9IC8qICNfX1BVUkVfXyovIGNvbXB1dGVkKCgpID0+IF9udW1iZXJGb3JtYXRzLnZhbHVlKTtcclxuICAgIC8vIGdldFBvc3RUcmFuc2xhdGlvbkhhbmRsZXJcclxuICAgIGZ1bmN0aW9uIGdldFBvc3RUcmFuc2xhdGlvbkhhbmRsZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oX3Bvc3RUcmFuc2xhdGlvbikgPyBfcG9zdFRyYW5zbGF0aW9uIDogbnVsbDtcclxuICAgIH1cclxuICAgIC8vIHNldFBvc3RUcmFuc2xhdGlvbkhhbmRsZXJcclxuICAgIGZ1bmN0aW9uIHNldFBvc3RUcmFuc2xhdGlvbkhhbmRsZXIoaGFuZGxlcikge1xyXG4gICAgICAgIF9wb3N0VHJhbnNsYXRpb24gPSBoYW5kbGVyO1xyXG4gICAgICAgIF9jb250ZXh0LnBvc3RUcmFuc2xhdGlvbiA9IGhhbmRsZXI7XHJcbiAgICB9XHJcbiAgICAvLyBnZXRNaXNzaW5nSGFuZGxlclxyXG4gICAgZnVuY3Rpb24gZ2V0TWlzc2luZ0hhbmRsZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIF9taXNzaW5nO1xyXG4gICAgfVxyXG4gICAgLy8gc2V0TWlzc2luZ0hhbmRsZXJcclxuICAgIGZ1bmN0aW9uIHNldE1pc3NpbmdIYW5kbGVyKGhhbmRsZXIpIHtcclxuICAgICAgICBpZiAoaGFuZGxlciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBfcnVudGltZU1pc3NpbmcgPSBkZWZpbmVDb3JlTWlzc2luZ0hhbmRsZXIoaGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9taXNzaW5nID0gaGFuZGxlcjtcclxuICAgICAgICBfY29udGV4dC5taXNzaW5nID0gX3J1bnRpbWVNaXNzaW5nO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNSZXNvbHZlZFRyYW5zbGF0ZU1lc3NhZ2UodHlwZSwgYXJnIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGUgIT09ICd0cmFuc2xhdGUnIHx8ICFhcmcucmVzb2x2ZWRNZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gd3JhcFdpdGhEZXBzKGZuLCBhcmd1bWVudFBhcnNlciwgd2FyblR5cGUsIGZhbGxiYWNrU3VjY2VzcywgZmFsbGJhY2tGYWlsLCBzdWNjZXNzQ29uZGl0aW9uKSB7XHJcbiAgICAgICAgdHJhY2tSZWFjdGl2aXR5VmFsdWVzKCk7IC8vIHRyYWNrIHJlYWN0aXZlIGRlcGVuZGVuY3lcclxuICAgICAgICAvLyBOT1RFOiBleHBlcmltZW50YWwgISFcclxuICAgICAgICBsZXQgcmV0O1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19JTlRMSUZZX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgc2V0QWRkaXRpb25hbE1ldGEoZ2V0TWV0YUluZm8oKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9pc0dsb2JhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jb250ZXh0LmZhbGxiYWNrQ29udGV4dCA9IF9fcm9vdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGdldEZhbGxiYWNrQ29udGV4dCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0ID0gZm4oX2NvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgc2V0QWRkaXRpb25hbE1ldGEobnVsbCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9pc0dsb2JhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jb250ZXh0LmZhbGxiYWNrQ29udGV4dCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0ID0gZm4oX2NvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNOdW1iZXIocmV0KSAmJiByZXQgPT09IE5PVF9SRU9TTFZFRCkge1xyXG4gICAgICAgICAgICBjb25zdCBba2V5LCBhcmcyXSA9IGFyZ3VtZW50UGFyc2VyKCk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIF9fcm9vdCAmJlxyXG4gICAgICAgICAgICAgICAgaXNTdHJpbmcoa2V5KSAmJlxyXG4gICAgICAgICAgICAgICAgaXNSZXNvbHZlZFRyYW5zbGF0ZU1lc3NhZ2Uod2FyblR5cGUsIGFyZzIpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX2ZhbGxiYWNrUm9vdCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChpc1RyYW5zbGF0ZUZhbGxiYWNrV2FybihfZmFsbGJhY2tXYXJuLCBrZXkpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVHJhbnNsYXRlTWlzc2luZ1dhcm4oX21pc3NpbmdXYXJuLCBrZXkpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oZ2V0V2Fybk1lc3NhZ2UoSTE4bldhcm5Db2Rlcy5GQUxMQkFDS19UT19ST09ULCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogd2FyblR5cGVcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBmb3IgdnVlLWRldnRvb2xzIHRpbWVsaW5lIGV2ZW50XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBfX3ZfZW1pdHRlcjogZW1pdHRlciB9ID0gX2NvbnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVtaXR0ZXIgJiYgX2ZhbGxiYWNrUm9vdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoXCJmYWxsYmFja1wiIC8qIEZBTEJBQ0sgKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHdhcm5UeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86ICdnbG9iYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZDogYCR7d2FyblR5cGV9OiR7a2V5fWBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBfX3Jvb3QgJiYgX2ZhbGxiYWNrUm9vdFxyXG4gICAgICAgICAgICAgICAgPyBmYWxsYmFja1N1Y2Nlc3MoX19yb290KVxyXG4gICAgICAgICAgICAgICAgOiBmYWxsYmFja0ZhaWwoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc3VjY2Vzc0NvbmRpdGlvbihyZXQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuVU5FWFBFQ1RFRF9SRVRVUk5fVFlQRSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdFxyXG4gICAgZnVuY3Rpb24gdCguLi5hcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIHdyYXBXaXRoRGVwcyhjb250ZXh0ID0+IFJlZmxlY3QuYXBwbHkodHJhbnNsYXRlLCBudWxsLCBbY29udGV4dCwgLi4uYXJnc10pLCAoKSA9PiBwYXJzZVRyYW5zbGF0ZUFyZ3MoLi4uYXJncyksICd0cmFuc2xhdGUnLCByb290ID0+IFJlZmxlY3QuYXBwbHkocm9vdC50LCByb290LCBbLi4uYXJnc10pLCBrZXkgPT4ga2V5LCB2YWwgPT4gaXNTdHJpbmcodmFsKSk7XHJcbiAgICB9XHJcbiAgICAvLyBydFxyXG4gICAgZnVuY3Rpb24gcnQoLi4uYXJncykge1xyXG4gICAgICAgIGNvbnN0IFthcmcxLCBhcmcyLCBhcmczXSA9IGFyZ3M7XHJcbiAgICAgICAgaWYgKGFyZzMgJiYgIWlzT2JqZWN0KGFyZzMpKSB7XHJcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZUkxOG5FcnJvcihJMThuRXJyb3JDb2Rlcy5JTlZBTElEX0FSR1VNRU5UKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQoLi4uW2FyZzEsIGFyZzIsIGFzc2lnbih7IHJlc29sdmVkTWVzc2FnZTogdHJ1ZSB9LCBhcmczIHx8IHt9KV0pO1xyXG4gICAgfVxyXG4gICAgLy8gZFxyXG4gICAgZnVuY3Rpb24gZCguLi5hcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIHdyYXBXaXRoRGVwcyhjb250ZXh0ID0+IFJlZmxlY3QuYXBwbHkoZGF0ZXRpbWUsIG51bGwsIFtjb250ZXh0LCAuLi5hcmdzXSksICgpID0+IHBhcnNlRGF0ZVRpbWVBcmdzKC4uLmFyZ3MpLCAnZGF0ZXRpbWUgZm9ybWF0Jywgcm9vdCA9PiBSZWZsZWN0LmFwcGx5KHJvb3QuZCwgcm9vdCwgWy4uLmFyZ3NdKSwgKCkgPT4gTUlTU0lOR19SRVNPTFZFX1ZBTFVFLCB2YWwgPT4gaXNTdHJpbmcodmFsKSk7XHJcbiAgICB9XHJcbiAgICAvLyBuXHJcbiAgICBmdW5jdGlvbiBuKC4uLmFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gd3JhcFdpdGhEZXBzKGNvbnRleHQgPT4gUmVmbGVjdC5hcHBseShudW1iZXIsIG51bGwsIFtjb250ZXh0LCAuLi5hcmdzXSksICgpID0+IHBhcnNlTnVtYmVyQXJncyguLi5hcmdzKSwgJ251bWJlciBmb3JtYXQnLCByb290ID0+IFJlZmxlY3QuYXBwbHkocm9vdC5uLCByb290LCBbLi4uYXJnc10pLCAoKSA9PiBNSVNTSU5HX1JFU09MVkVfVkFMVUUsIHZhbCA9PiBpc1N0cmluZyh2YWwpKTtcclxuICAgIH1cclxuICAgIC8vIGZvciBjdXN0b20gcHJvY2Vzc29yXHJcbiAgICBmdW5jdGlvbiBub3JtYWxpemUodmFsdWVzKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5tYXAodmFsID0+IChpc1N0cmluZyh2YWwpID8gY3JlYXRlVGV4dE5vZGUodmFsKSA6IHZhbCkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW50ZXJwb2xhdGUgPSAodmFsKSA9PiB2YWw7XHJcbiAgICBjb25zdCBwcm9jZXNzb3IgPSB7XHJcbiAgICAgICAgbm9ybWFsaXplLFxyXG4gICAgICAgIGludGVycG9sYXRlLFxyXG4gICAgICAgIHR5cGU6ICd2bm9kZSdcclxuICAgIH07XHJcbiAgICAvLyB0cmFuc3JhdGVWTm9kZSwgdXNpbmcgZm9yIGBpMThuLXRgIGNvbXBvbmVudFxyXG4gICAgZnVuY3Rpb24gdHJhbnNyYXRlVk5vZGUoLi4uYXJncykge1xyXG4gICAgICAgIHJldHVybiB3cmFwV2l0aERlcHMoY29udGV4dCA9PiB7XHJcbiAgICAgICAgICAgIGxldCByZXQ7XHJcbiAgICAgICAgICAgIGNvbnN0IF9jb250ZXh0ID0gY29udGV4dDtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByb2Nlc3NvciA9IHByb2Nlc3NvcjtcclxuICAgICAgICAgICAgICAgIHJldCA9IFJlZmxlY3QuYXBwbHkodHJhbnNsYXRlLCBudWxsLCBbX2NvbnRleHQsIC4uLmFyZ3NdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByb2Nlc3NvciA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgICB9LCAoKSA9PiBwYXJzZVRyYW5zbGF0ZUFyZ3MoLi4uYXJncyksICd0cmFuc2xhdGUnLCBcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIHJvb3QgPT4gcm9vdFtUcmFuc3JhdGVWTm9kZVN5bWJvbF0oLi4uYXJncyksIGtleSA9PiBbY3JlYXRlVGV4dE5vZGUoa2V5KV0sIHZhbCA9PiBpc0FycmF5KHZhbCkpO1xyXG4gICAgfVxyXG4gICAgLy8gbnVtYmVyUGFydHMsIHVzaW5nIGZvciBgaTE4bi1uYCBjb21wb25lbnRcclxuICAgIGZ1bmN0aW9uIG51bWJlclBhcnRzKC4uLmFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gd3JhcFdpdGhEZXBzKGNvbnRleHQgPT4gUmVmbGVjdC5hcHBseShudW1iZXIsIG51bGwsIFtjb250ZXh0LCAuLi5hcmdzXSksICgpID0+IHBhcnNlTnVtYmVyQXJncyguLi5hcmdzKSwgJ251bWJlciBmb3JtYXQnLCBcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIHJvb3QgPT4gcm9vdFtOdW1iZXJQYXJ0c1N5bWJvbF0oLi4uYXJncyksICgpID0+IFtdLCB2YWwgPT4gaXNTdHJpbmcodmFsKSB8fCBpc0FycmF5KHZhbCkpO1xyXG4gICAgfVxyXG4gICAgLy8gZGF0ZXRpbWVQYXJ0cywgdXNpbmcgZm9yIGBpMThuLWRgIGNvbXBvbmVudFxyXG4gICAgZnVuY3Rpb24gZGF0ZXRpbWVQYXJ0cyguLi5hcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIHdyYXBXaXRoRGVwcyhjb250ZXh0ID0+IFJlZmxlY3QuYXBwbHkoZGF0ZXRpbWUsIG51bGwsIFtjb250ZXh0LCAuLi5hcmdzXSksICgpID0+IHBhcnNlRGF0ZVRpbWVBcmdzKC4uLmFyZ3MpLCAnZGF0ZXRpbWUgZm9ybWF0JywgXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICByb290ID0+IHJvb3RbRGF0ZXRpbWVQYXJ0c1N5bWJvbF0oLi4uYXJncyksICgpID0+IFtdLCB2YWwgPT4gaXNTdHJpbmcodmFsKSB8fCBpc0FycmF5KHZhbCkpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2V0UGx1cmFsUnVsZXMocnVsZXMpIHtcclxuICAgICAgICBfcGx1cmFsUnVsZXMgPSBydWxlcztcclxuICAgICAgICBfY29udGV4dC5wbHVyYWxSdWxlcyA9IF9wbHVyYWxSdWxlcztcclxuICAgIH1cclxuICAgIC8vIHRlXHJcbiAgICBmdW5jdGlvbiB0ZShrZXksIGxvY2FsZSkge1xyXG4gICAgICAgIGNvbnN0IHRhcmdldExvY2FsZSA9IGlzU3RyaW5nKGxvY2FsZSkgPyBsb2NhbGUgOiBfbG9jYWxlLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRMb2NhbGVNZXNzYWdlKHRhcmdldExvY2FsZSk7XHJcbiAgICAgICAgcmV0dXJuIF9jb250ZXh0Lm1lc3NhZ2VSZXNvbHZlcihtZXNzYWdlLCBrZXkpICE9PSBudWxsO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVzb2x2ZU1lc3NhZ2VzKGtleSkge1xyXG4gICAgICAgIGxldCBtZXNzYWdlcyA9IG51bGw7XHJcbiAgICAgICAgY29uc3QgbG9jYWxlcyA9IGZhbGxiYWNrV2l0aExvY2FsZUNoYWluKF9jb250ZXh0LCBfZmFsbGJhY2tMb2NhbGUudmFsdWUsIF9sb2NhbGUudmFsdWUpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9jYWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRMb2NhbGVNZXNzYWdlcyA9IF9tZXNzYWdlcy52YWx1ZVtsb2NhbGVzW2ldXSB8fCB7fTtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZVZhbHVlID0gX2NvbnRleHQubWVzc2FnZVJlc29sdmVyKHRhcmdldExvY2FsZU1lc3NhZ2VzLCBrZXkpO1xyXG4gICAgICAgICAgICBpZiAobWVzc2FnZVZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZVZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xyXG4gICAgfVxyXG4gICAgLy8gdG1cclxuICAgIGZ1bmN0aW9uIHRtKGtleSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gcmVzb2x2ZU1lc3NhZ2VzKGtleSk7XHJcbiAgICAgICAgLy8gcHJldHRpZXItaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzICE9IG51bGxcclxuICAgICAgICAgICAgPyBtZXNzYWdlc1xyXG4gICAgICAgICAgICA6IF9fcm9vdFxyXG4gICAgICAgICAgICAgICAgPyBfX3Jvb3QudG0oa2V5KSB8fCB7fVxyXG4gICAgICAgICAgICAgICAgOiB7fTtcclxuICAgIH1cclxuICAgIC8vIGdldExvY2FsZU1lc3NhZ2VcclxuICAgIGZ1bmN0aW9uIGdldExvY2FsZU1lc3NhZ2UobG9jYWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIChfbWVzc2FnZXMudmFsdWVbbG9jYWxlXSB8fCB7fSk7XHJcbiAgICB9XHJcbiAgICAvLyBzZXRMb2NhbGVNZXNzYWdlXHJcbiAgICBmdW5jdGlvbiBzZXRMb2NhbGVNZXNzYWdlKGxvY2FsZSwgbWVzc2FnZSkge1xyXG4gICAgICAgIF9tZXNzYWdlcy52YWx1ZVtsb2NhbGVdID0gbWVzc2FnZTtcclxuICAgICAgICBfY29udGV4dC5tZXNzYWdlcyA9IF9tZXNzYWdlcy52YWx1ZTtcclxuICAgIH1cclxuICAgIC8vIG1lcmdlTG9jYWxlTWVzc2FnZVxyXG4gICAgZnVuY3Rpb24gbWVyZ2VMb2NhbGVNZXNzYWdlKGxvY2FsZSwgbWVzc2FnZSkge1xyXG4gICAgICAgIF9tZXNzYWdlcy52YWx1ZVtsb2NhbGVdID0gX21lc3NhZ2VzLnZhbHVlW2xvY2FsZV0gfHwge307XHJcbiAgICAgICAgZGVlcENvcHkobWVzc2FnZSwgX21lc3NhZ2VzLnZhbHVlW2xvY2FsZV0pO1xyXG4gICAgICAgIF9jb250ZXh0Lm1lc3NhZ2VzID0gX21lc3NhZ2VzLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgLy8gZ2V0RGF0ZVRpbWVGb3JtYXRcclxuICAgIGZ1bmN0aW9uIGdldERhdGVUaW1lRm9ybWF0KGxvY2FsZSkge1xyXG4gICAgICAgIHJldHVybiBfZGF0ZXRpbWVGb3JtYXRzLnZhbHVlW2xvY2FsZV0gfHwge307XHJcbiAgICB9XHJcbiAgICAvLyBzZXREYXRlVGltZUZvcm1hdFxyXG4gICAgZnVuY3Rpb24gc2V0RGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmb3JtYXQpIHtcclxuICAgICAgICBfZGF0ZXRpbWVGb3JtYXRzLnZhbHVlW2xvY2FsZV0gPSBmb3JtYXQ7XHJcbiAgICAgICAgX2NvbnRleHQuZGF0ZXRpbWVGb3JtYXRzID0gX2RhdGV0aW1lRm9ybWF0cy52YWx1ZTtcclxuICAgICAgICBjbGVhckRhdGVUaW1lRm9ybWF0KF9jb250ZXh0LCBsb2NhbGUsIGZvcm1hdCk7XHJcbiAgICB9XHJcbiAgICAvLyBtZXJnZURhdGVUaW1lRm9ybWF0XHJcbiAgICBmdW5jdGlvbiBtZXJnZURhdGVUaW1lRm9ybWF0KGxvY2FsZSwgZm9ybWF0KSB7XHJcbiAgICAgICAgX2RhdGV0aW1lRm9ybWF0cy52YWx1ZVtsb2NhbGVdID0gYXNzaWduKF9kYXRldGltZUZvcm1hdHMudmFsdWVbbG9jYWxlXSB8fCB7fSwgZm9ybWF0KTtcclxuICAgICAgICBfY29udGV4dC5kYXRldGltZUZvcm1hdHMgPSBfZGF0ZXRpbWVGb3JtYXRzLnZhbHVlO1xyXG4gICAgICAgIGNsZWFyRGF0ZVRpbWVGb3JtYXQoX2NvbnRleHQsIGxvY2FsZSwgZm9ybWF0KTtcclxuICAgIH1cclxuICAgIC8vIGdldE51bWJlckZvcm1hdFxyXG4gICAgZnVuY3Rpb24gZ2V0TnVtYmVyRm9ybWF0KGxvY2FsZSkge1xyXG4gICAgICAgIHJldHVybiBfbnVtYmVyRm9ybWF0cy52YWx1ZVtsb2NhbGVdIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgLy8gc2V0TnVtYmVyRm9ybWF0XHJcbiAgICBmdW5jdGlvbiBzZXROdW1iZXJGb3JtYXQobG9jYWxlLCBmb3JtYXQpIHtcclxuICAgICAgICBfbnVtYmVyRm9ybWF0cy52YWx1ZVtsb2NhbGVdID0gZm9ybWF0O1xyXG4gICAgICAgIF9jb250ZXh0Lm51bWJlckZvcm1hdHMgPSBfbnVtYmVyRm9ybWF0cy52YWx1ZTtcclxuICAgICAgICBjbGVhck51bWJlckZvcm1hdChfY29udGV4dCwgbG9jYWxlLCBmb3JtYXQpO1xyXG4gICAgfVxyXG4gICAgLy8gbWVyZ2VOdW1iZXJGb3JtYXRcclxuICAgIGZ1bmN0aW9uIG1lcmdlTnVtYmVyRm9ybWF0KGxvY2FsZSwgZm9ybWF0KSB7XHJcbiAgICAgICAgX251bWJlckZvcm1hdHMudmFsdWVbbG9jYWxlXSA9IGFzc2lnbihfbnVtYmVyRm9ybWF0cy52YWx1ZVtsb2NhbGVdIHx8IHt9LCBmb3JtYXQpO1xyXG4gICAgICAgIF9jb250ZXh0Lm51bWJlckZvcm1hdHMgPSBfbnVtYmVyRm9ybWF0cy52YWx1ZTtcclxuICAgICAgICBjbGVhck51bWJlckZvcm1hdChfY29udGV4dCwgbG9jYWxlLCBmb3JtYXQpO1xyXG4gICAgfVxyXG4gICAgLy8gZm9yIGRlYnVnXHJcbiAgICBjb21wb3NlcklEKys7XHJcbiAgICAvLyB3YXRjaCByb290IGxvY2FsZSAmIGZhbGxiYWNrTG9jYWxlXHJcbiAgICBpZiAoX19yb290ICYmIGluQnJvd3Nlcikge1xyXG4gICAgICAgIHdhdGNoKF9fcm9vdC5sb2NhbGUsICh2YWwpID0+IHtcclxuICAgICAgICAgICAgaWYgKF9pbmhlcml0TG9jYWxlKSB7XHJcbiAgICAgICAgICAgICAgICBfbG9jYWxlLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubG9jYWxlID0gdmFsO1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlRmFsbGJhY2tMb2NhbGUoX2NvbnRleHQsIF9sb2NhbGUudmFsdWUsIF9mYWxsYmFja0xvY2FsZS52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB3YXRjaChfX3Jvb3QuZmFsbGJhY2tMb2NhbGUsICh2YWwpID0+IHtcclxuICAgICAgICAgICAgaWYgKF9pbmhlcml0TG9jYWxlKSB7XHJcbiAgICAgICAgICAgICAgICBfZmFsbGJhY2tMb2NhbGUudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICBfY29udGV4dC5mYWxsYmFja0xvY2FsZSA9IHZhbDtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUZhbGxiYWNrTG9jYWxlKF9jb250ZXh0LCBfbG9jYWxlLnZhbHVlLCBfZmFsbGJhY2tMb2NhbGUudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyBkZWZpbmUgYmFzaWMgY29tcG9zaXRpb24gQVBJIVxyXG4gICAgY29uc3QgY29tcG9zZXIgPSB7XHJcbiAgICAgICAgaWQ6IGNvbXBvc2VySUQsXHJcbiAgICAgICAgbG9jYWxlLFxyXG4gICAgICAgIGZhbGxiYWNrTG9jYWxlLFxyXG4gICAgICAgIGdldCBpbmhlcml0TG9jYWxlKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX2luaGVyaXRMb2NhbGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXQgaW5oZXJpdExvY2FsZSh2YWwpIHtcclxuICAgICAgICAgICAgX2luaGVyaXRMb2NhbGUgPSB2YWw7XHJcbiAgICAgICAgICAgIGlmICh2YWwgJiYgX19yb290KSB7XHJcbiAgICAgICAgICAgICAgICBfbG9jYWxlLnZhbHVlID0gX19yb290LmxvY2FsZS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIF9mYWxsYmFja0xvY2FsZS52YWx1ZSA9IF9fcm9vdC5mYWxsYmFja0xvY2FsZS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUZhbGxiYWNrTG9jYWxlKF9jb250ZXh0LCBfbG9jYWxlLnZhbHVlLCBfZmFsbGJhY2tMb2NhbGUudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgYXZhaWxhYmxlTG9jYWxlcygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKF9tZXNzYWdlcy52YWx1ZSkuc29ydCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWVzc2FnZXMsXHJcbiAgICAgICAgZ2V0IG1vZGlmaWVycygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9tb2RpZmllcnM7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgcGx1cmFsUnVsZXMoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfcGx1cmFsUnVsZXMgfHwge307XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgaXNHbG9iYWwoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfaXNHbG9iYWw7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgbWlzc2luZ1dhcm4oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfbWlzc2luZ1dhcm47XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXQgbWlzc2luZ1dhcm4odmFsKSB7XHJcbiAgICAgICAgICAgIF9taXNzaW5nV2FybiA9IHZhbDtcclxuICAgICAgICAgICAgX2NvbnRleHQubWlzc2luZ1dhcm4gPSBfbWlzc2luZ1dhcm47XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgZmFsbGJhY2tXYXJuKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX2ZhbGxiYWNrV2FybjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldCBmYWxsYmFja1dhcm4odmFsKSB7XHJcbiAgICAgICAgICAgIF9mYWxsYmFja1dhcm4gPSB2YWw7XHJcbiAgICAgICAgICAgIF9jb250ZXh0LmZhbGxiYWNrV2FybiA9IF9mYWxsYmFja1dhcm47XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgZmFsbGJhY2tSb290KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX2ZhbGxiYWNrUm9vdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldCBmYWxsYmFja1Jvb3QodmFsKSB7XHJcbiAgICAgICAgICAgIF9mYWxsYmFja1Jvb3QgPSB2YWw7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgZmFsbGJhY2tGb3JtYXQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfZmFsbGJhY2tGb3JtYXQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXQgZmFsbGJhY2tGb3JtYXQodmFsKSB7XHJcbiAgICAgICAgICAgIF9mYWxsYmFja0Zvcm1hdCA9IHZhbDtcclxuICAgICAgICAgICAgX2NvbnRleHQuZmFsbGJhY2tGb3JtYXQgPSBfZmFsbGJhY2tGb3JtYXQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgd2Fybkh0bWxNZXNzYWdlKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX3dhcm5IdG1sTWVzc2FnZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldCB3YXJuSHRtbE1lc3NhZ2UodmFsKSB7XHJcbiAgICAgICAgICAgIF93YXJuSHRtbE1lc3NhZ2UgPSB2YWw7XHJcbiAgICAgICAgICAgIF9jb250ZXh0Lndhcm5IdG1sTWVzc2FnZSA9IHZhbDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBlc2NhcGVQYXJhbWV0ZXIoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfZXNjYXBlUGFyYW1ldGVyO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0IGVzY2FwZVBhcmFtZXRlcih2YWwpIHtcclxuICAgICAgICAgICAgX2VzY2FwZVBhcmFtZXRlciA9IHZhbDtcclxuICAgICAgICAgICAgX2NvbnRleHQuZXNjYXBlUGFyYW1ldGVyID0gdmFsO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdCxcclxuICAgICAgICBnZXRMb2NhbGVNZXNzYWdlLFxyXG4gICAgICAgIHNldExvY2FsZU1lc3NhZ2UsXHJcbiAgICAgICAgbWVyZ2VMb2NhbGVNZXNzYWdlLFxyXG4gICAgICAgIGdldFBvc3RUcmFuc2xhdGlvbkhhbmRsZXIsXHJcbiAgICAgICAgc2V0UG9zdFRyYW5zbGF0aW9uSGFuZGxlcixcclxuICAgICAgICBnZXRNaXNzaW5nSGFuZGxlcixcclxuICAgICAgICBzZXRNaXNzaW5nSGFuZGxlcixcclxuICAgICAgICBbU2V0UGx1cmFsUnVsZXNTeW1ib2xdOiBzZXRQbHVyYWxSdWxlc1xyXG4gICAgfTtcclxuICAgIHtcclxuICAgICAgICBjb21wb3Nlci5kYXRldGltZUZvcm1hdHMgPSBkYXRldGltZUZvcm1hdHM7XHJcbiAgICAgICAgY29tcG9zZXIubnVtYmVyRm9ybWF0cyA9IG51bWJlckZvcm1hdHM7XHJcbiAgICAgICAgY29tcG9zZXIucnQgPSBydDtcclxuICAgICAgICBjb21wb3Nlci50ZSA9IHRlO1xyXG4gICAgICAgIGNvbXBvc2VyLnRtID0gdG07XHJcbiAgICAgICAgY29tcG9zZXIuZCA9IGQ7XHJcbiAgICAgICAgY29tcG9zZXIubiA9IG47XHJcbiAgICAgICAgY29tcG9zZXIuZ2V0RGF0ZVRpbWVGb3JtYXQgPSBnZXREYXRlVGltZUZvcm1hdDtcclxuICAgICAgICBjb21wb3Nlci5zZXREYXRlVGltZUZvcm1hdCA9IHNldERhdGVUaW1lRm9ybWF0O1xyXG4gICAgICAgIGNvbXBvc2VyLm1lcmdlRGF0ZVRpbWVGb3JtYXQgPSBtZXJnZURhdGVUaW1lRm9ybWF0O1xyXG4gICAgICAgIGNvbXBvc2VyLmdldE51bWJlckZvcm1hdCA9IGdldE51bWJlckZvcm1hdDtcclxuICAgICAgICBjb21wb3Nlci5zZXROdW1iZXJGb3JtYXQgPSBzZXROdW1iZXJGb3JtYXQ7XHJcbiAgICAgICAgY29tcG9zZXIubWVyZ2VOdW1iZXJGb3JtYXQgPSBtZXJnZU51bWJlckZvcm1hdDtcclxuICAgICAgICBjb21wb3NlcltJbmVqY3RXaXRoT3B0aW9uXSA9IG9wdGlvbnMuX19pbmplY3RXaXRoT3B0aW9uO1xyXG4gICAgICAgIGNvbXBvc2VyW1RyYW5zcmF0ZVZOb2RlU3ltYm9sXSA9IHRyYW5zcmF0ZVZOb2RlO1xyXG4gICAgICAgIGNvbXBvc2VyW0RhdGV0aW1lUGFydHNTeW1ib2xdID0gZGF0ZXRpbWVQYXJ0cztcclxuICAgICAgICBjb21wb3NlcltOdW1iZXJQYXJ0c1N5bWJvbF0gPSBudW1iZXJQYXJ0cztcclxuICAgIH1cclxuICAgIC8vIGZvciB2dWUtZGV2dG9vbHMgdGltZWxpbmUgZXZlbnRcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb21wb3NlcltFbmFibGVFbWl0dGVyXSA9IChlbWl0dGVyKSA9PiB7XHJcbiAgICAgICAgICAgIF9jb250ZXh0Ll9fdl9lbWl0dGVyID0gZW1pdHRlcjtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbXBvc2VyW0Rpc2FibGVFbWl0dGVyXSA9ICgpID0+IHtcclxuICAgICAgICAgICAgX2NvbnRleHQuX192X2VtaXR0ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb21wb3NlcjtcclxufVxyXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG4vKipcclxuICogQ29udmVydCB0byBJMThuIENvbXBvc2VyIE9wdGlvbnMgZnJvbSBWdWVJMThuIE9wdGlvbnNcclxuICpcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5mdW5jdGlvbiBjb252ZXJ0Q29tcG9zZXJPcHRpb25zKG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IGxvY2FsZSA9IGlzU3RyaW5nKG9wdGlvbnMubG9jYWxlKSA/IG9wdGlvbnMubG9jYWxlIDogREVGQVVMVF9MT0NBTEU7XHJcbiAgICBjb25zdCBmYWxsYmFja0xvY2FsZSA9IGlzU3RyaW5nKG9wdGlvbnMuZmFsbGJhY2tMb2NhbGUpIHx8XHJcbiAgICAgICAgaXNBcnJheShvcHRpb25zLmZhbGxiYWNrTG9jYWxlKSB8fFxyXG4gICAgICAgIGlzUGxhaW5PYmplY3Qob3B0aW9ucy5mYWxsYmFja0xvY2FsZSkgfHxcclxuICAgICAgICBvcHRpb25zLmZhbGxiYWNrTG9jYWxlID09PSBmYWxzZVxyXG4gICAgICAgID8gb3B0aW9ucy5mYWxsYmFja0xvY2FsZVxyXG4gICAgICAgIDogbG9jYWxlO1xyXG4gICAgY29uc3QgbWlzc2luZyA9IGlzRnVuY3Rpb24ob3B0aW9ucy5taXNzaW5nKSA/IG9wdGlvbnMubWlzc2luZyA6IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IG1pc3NpbmdXYXJuID0gaXNCb29sZWFuKG9wdGlvbnMuc2lsZW50VHJhbnNsYXRpb25XYXJuKSB8fFxyXG4gICAgICAgIGlzUmVnRXhwKG9wdGlvbnMuc2lsZW50VHJhbnNsYXRpb25XYXJuKVxyXG4gICAgICAgID8gIW9wdGlvbnMuc2lsZW50VHJhbnNsYXRpb25XYXJuXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgY29uc3QgZmFsbGJhY2tXYXJuID0gaXNCb29sZWFuKG9wdGlvbnMuc2lsZW50RmFsbGJhY2tXYXJuKSB8fFxyXG4gICAgICAgIGlzUmVnRXhwKG9wdGlvbnMuc2lsZW50RmFsbGJhY2tXYXJuKVxyXG4gICAgICAgID8gIW9wdGlvbnMuc2lsZW50RmFsbGJhY2tXYXJuXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgY29uc3QgZmFsbGJhY2tSb290ID0gaXNCb29sZWFuKG9wdGlvbnMuZmFsbGJhY2tSb290KVxyXG4gICAgICAgID8gb3B0aW9ucy5mYWxsYmFja1Jvb3RcclxuICAgICAgICA6IHRydWU7XHJcbiAgICBjb25zdCBmYWxsYmFja0Zvcm1hdCA9ICEhb3B0aW9ucy5mb3JtYXRGYWxsYmFja01lc3NhZ2VzO1xyXG4gICAgY29uc3QgbW9kaWZpZXJzID0gaXNQbGFpbk9iamVjdChvcHRpb25zLm1vZGlmaWVycykgPyBvcHRpb25zLm1vZGlmaWVycyA6IHt9O1xyXG4gICAgY29uc3QgcGx1cmFsaXphdGlvblJ1bGVzID0gb3B0aW9ucy5wbHVyYWxpemF0aW9uUnVsZXM7XHJcbiAgICBjb25zdCBwb3N0VHJhbnNsYXRpb24gPSBpc0Z1bmN0aW9uKG9wdGlvbnMucG9zdFRyYW5zbGF0aW9uKVxyXG4gICAgICAgID8gb3B0aW9ucy5wb3N0VHJhbnNsYXRpb25cclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IHdhcm5IdG1sTWVzc2FnZSA9IGlzU3RyaW5nKG9wdGlvbnMud2Fybkh0bWxJbk1lc3NhZ2UpXHJcbiAgICAgICAgPyBvcHRpb25zLndhcm5IdG1sSW5NZXNzYWdlICE9PSAnb2ZmJ1xyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGNvbnN0IGVzY2FwZVBhcmFtZXRlciA9ICEhb3B0aW9ucy5lc2NhcGVQYXJhbWV0ZXJIdG1sO1xyXG4gICAgY29uc3QgaW5oZXJpdExvY2FsZSA9IGlzQm9vbGVhbihvcHRpb25zLnN5bmMpID8gb3B0aW9ucy5zeW5jIDogdHJ1ZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgb3B0aW9ucy5mb3JtYXR0ZXIpIHtcclxuICAgICAgICB3YXJuKGdldFdhcm5NZXNzYWdlKEkxOG5XYXJuQ29kZXMuTk9UX1NVUFBPUlRFRF9GT1JNQVRURVIpKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgb3B0aW9ucy5wcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQpIHtcclxuICAgICAgICB3YXJuKGdldFdhcm5NZXNzYWdlKEkxOG5XYXJuQ29kZXMuTk9UX1NVUFBPUlRFRF9QUkVTRVJWRV9ESVJFQ1RJVkUpKTtcclxuICAgIH1cclxuICAgIGxldCBtZXNzYWdlcyA9IG9wdGlvbnMubWVzc2FnZXM7XHJcbiAgICBpZiAoaXNQbGFpbk9iamVjdChvcHRpb25zLnNoYXJlZE1lc3NhZ2VzKSkge1xyXG4gICAgICAgIGNvbnN0IHNoYXJlZE1lc3NhZ2VzID0gb3B0aW9ucy5zaGFyZWRNZXNzYWdlcztcclxuICAgICAgICBjb25zdCBsb2NhbGVzID0gT2JqZWN0LmtleXMoc2hhcmVkTWVzc2FnZXMpO1xyXG4gICAgICAgIG1lc3NhZ2VzID0gbG9jYWxlcy5yZWR1Y2UoKG1lc3NhZ2VzLCBsb2NhbGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VzW2xvY2FsZV0gfHwgKG1lc3NhZ2VzW2xvY2FsZV0gPSB7fSk7XHJcbiAgICAgICAgICAgIGFzc2lnbihtZXNzYWdlLCBzaGFyZWRNZXNzYWdlc1tsb2NhbGVdKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xyXG4gICAgICAgIH0sIChtZXNzYWdlcyB8fCB7fSkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBfX2kxOG4sIF9fcm9vdCwgX19pbmplY3RXaXRoT3B0aW9uIH0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgZGF0ZXRpbWVGb3JtYXRzID0gb3B0aW9ucy5kYXRldGltZUZvcm1hdHM7XHJcbiAgICBjb25zdCBudW1iZXJGb3JtYXRzID0gb3B0aW9ucy5udW1iZXJGb3JtYXRzO1xyXG4gICAgY29uc3QgZmxhdEpzb24gPSBvcHRpb25zLmZsYXRKc29uO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBsb2NhbGUsXHJcbiAgICAgICAgZmFsbGJhY2tMb2NhbGUsXHJcbiAgICAgICAgbWVzc2FnZXMsXHJcbiAgICAgICAgZmxhdEpzb24sXHJcbiAgICAgICAgZGF0ZXRpbWVGb3JtYXRzLFxyXG4gICAgICAgIG51bWJlckZvcm1hdHMsXHJcbiAgICAgICAgbWlzc2luZyxcclxuICAgICAgICBtaXNzaW5nV2FybixcclxuICAgICAgICBmYWxsYmFja1dhcm4sXHJcbiAgICAgICAgZmFsbGJhY2tSb290LFxyXG4gICAgICAgIGZhbGxiYWNrRm9ybWF0LFxyXG4gICAgICAgIG1vZGlmaWVycyxcclxuICAgICAgICBwbHVyYWxSdWxlczogcGx1cmFsaXphdGlvblJ1bGVzLFxyXG4gICAgICAgIHBvc3RUcmFuc2xhdGlvbixcclxuICAgICAgICB3YXJuSHRtbE1lc3NhZ2UsXHJcbiAgICAgICAgZXNjYXBlUGFyYW1ldGVyLFxyXG4gICAgICAgIG1lc3NhZ2VSZXNvbHZlcjogb3B0aW9ucy5tZXNzYWdlUmVzb2x2ZXIsXHJcbiAgICAgICAgaW5oZXJpdExvY2FsZSxcclxuICAgICAgICBfX2kxOG4sXHJcbiAgICAgICAgX19yb290LFxyXG4gICAgICAgIF9faW5qZWN0V2l0aE9wdGlvblxyXG4gICAgfTtcclxufVxyXG4vKipcclxuICogY3JlYXRlIFZ1ZUkxOG4gaW50ZXJmYWNlIGZhY3RvcnlcclxuICpcclxuICogQGludGVybmFsXHJcbiAqL1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xyXG5mdW5jdGlvbiBjcmVhdGVWdWVJMThuKG9wdGlvbnMgPSB7fSwgVnVlSTE4bkxlZ2FjeSkge1xyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvc2VyID0gY3JlYXRlQ29tcG9zZXIoY29udmVydENvbXBvc2VyT3B0aW9ucyhvcHRpb25zKSk7XHJcbiAgICAgICAgLy8gZGVmaW5lcyBWdWVJMThuXHJcbiAgICAgICAgY29uc3QgdnVlSTE4biA9IHtcclxuICAgICAgICAgICAgLy8gaWRcclxuICAgICAgICAgICAgaWQ6IGNvbXBvc2VyLmlkLFxyXG4gICAgICAgICAgICAvLyBsb2NhbGVcclxuICAgICAgICAgICAgZ2V0IGxvY2FsZSgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci5sb2NhbGUudmFsdWU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCBsb2NhbGUodmFsKSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb3Nlci5sb2NhbGUudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGZhbGxiYWNrTG9jYWxlXHJcbiAgICAgICAgICAgIGdldCBmYWxsYmFja0xvY2FsZSgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci5mYWxsYmFja0xvY2FsZS52YWx1ZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0IGZhbGxiYWNrTG9jYWxlKHZhbCkge1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZXIuZmFsbGJhY2tMb2NhbGUudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIG1lc3NhZ2VzXHJcbiAgICAgICAgICAgIGdldCBtZXNzYWdlcygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci5tZXNzYWdlcy52YWx1ZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gZGF0ZXRpbWVGb3JtYXRzXHJcbiAgICAgICAgICAgIGdldCBkYXRldGltZUZvcm1hdHMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9zZXIuZGF0ZXRpbWVGb3JtYXRzLnZhbHVlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBudW1iZXJGb3JtYXRzXHJcbiAgICAgICAgICAgIGdldCBudW1iZXJGb3JtYXRzKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VyLm51bWJlckZvcm1hdHMudmFsdWU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGF2YWlsYWJsZUxvY2FsZXNcclxuICAgICAgICAgICAgZ2V0IGF2YWlsYWJsZUxvY2FsZXMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9zZXIuYXZhaWxhYmxlTG9jYWxlcztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gZm9ybWF0dGVyXHJcbiAgICAgICAgICAgIGdldCBmb3JtYXR0ZXIoKSB7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihnZXRXYXJuTWVzc2FnZShJMThuV2FybkNvZGVzLk5PVF9TVVBQT1JURURfRk9STUFUVEVSKSk7XHJcbiAgICAgICAgICAgICAgICAvLyBkdW1teVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0ZSgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCBmb3JtYXR0ZXIodmFsKSB7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihnZXRXYXJuTWVzc2FnZShJMThuV2FybkNvZGVzLk5PVF9TVVBQT1JURURfRk9STUFUVEVSKSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIG1pc3NpbmdcclxuICAgICAgICAgICAgZ2V0IG1pc3NpbmcoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9zZXIuZ2V0TWlzc2luZ0hhbmRsZXIoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0IG1pc3NpbmcoaGFuZGxlcikge1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZXIuc2V0TWlzc2luZ0hhbmRsZXIoaGFuZGxlcik7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIHNpbGVudFRyYW5zbGF0aW9uV2FyblxyXG4gICAgICAgICAgICBnZXQgc2lsZW50VHJhbnNsYXRpb25XYXJuKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQm9vbGVhbihjb21wb3Nlci5taXNzaW5nV2FybilcclxuICAgICAgICAgICAgICAgICAgICA/ICFjb21wb3Nlci5taXNzaW5nV2FyblxyXG4gICAgICAgICAgICAgICAgICAgIDogY29tcG9zZXIubWlzc2luZ1dhcm47XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCBzaWxlbnRUcmFuc2xhdGlvbldhcm4odmFsKSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb3Nlci5taXNzaW5nV2FybiA9IGlzQm9vbGVhbih2YWwpID8gIXZhbCA6IHZhbDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gc2lsZW50RmFsbGJhY2tXYXJuXHJcbiAgICAgICAgICAgIGdldCBzaWxlbnRGYWxsYmFja1dhcm4oKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNCb29sZWFuKGNvbXBvc2VyLmZhbGxiYWNrV2FybilcclxuICAgICAgICAgICAgICAgICAgICA/ICFjb21wb3Nlci5mYWxsYmFja1dhcm5cclxuICAgICAgICAgICAgICAgICAgICA6IGNvbXBvc2VyLmZhbGxiYWNrV2FybjtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0IHNpbGVudEZhbGxiYWNrV2Fybih2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VyLmZhbGxiYWNrV2FybiA9IGlzQm9vbGVhbih2YWwpID8gIXZhbCA6IHZhbDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gbW9kaWZpZXJzXHJcbiAgICAgICAgICAgIGdldCBtb2RpZmllcnMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9zZXIubW9kaWZpZXJzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBmb3JtYXRGYWxsYmFja01lc3NhZ2VzXHJcbiAgICAgICAgICAgIGdldCBmb3JtYXRGYWxsYmFja01lc3NhZ2VzKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VyLmZhbGxiYWNrRm9ybWF0O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQgZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyh2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VyLmZhbGxiYWNrRm9ybWF0ID0gdmFsO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBwb3N0VHJhbnNsYXRpb25cclxuICAgICAgICAgICAgZ2V0IHBvc3RUcmFuc2xhdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci5nZXRQb3N0VHJhbnNsYXRpb25IYW5kbGVyKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCBwb3N0VHJhbnNsYXRpb24oaGFuZGxlcikge1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZXIuc2V0UG9zdFRyYW5zbGF0aW9uSGFuZGxlcihoYW5kbGVyKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gc3luY1xyXG4gICAgICAgICAgICBnZXQgc3luYygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci5pbmhlcml0TG9jYWxlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQgc3luYyh2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VyLmluaGVyaXRMb2NhbGUgPSB2YWw7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIHdhcm5Jbkh0bWxNZXNzYWdlXHJcbiAgICAgICAgICAgIGdldCB3YXJuSHRtbEluTWVzc2FnZSgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci53YXJuSHRtbE1lc3NhZ2UgPyAnd2FybicgOiAnb2ZmJztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0IHdhcm5IdG1sSW5NZXNzYWdlKHZhbCkge1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZXIud2Fybkh0bWxNZXNzYWdlID0gdmFsICE9PSAnb2ZmJztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gZXNjYXBlUGFyYW1ldGVySHRtbFxyXG4gICAgICAgICAgICBnZXQgZXNjYXBlUGFyYW1ldGVySHRtbCgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci5lc2NhcGVQYXJhbWV0ZXI7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCBlc2NhcGVQYXJhbWV0ZXJIdG1sKHZhbCkge1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZXIuZXNjYXBlUGFyYW1ldGVyID0gdmFsO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnRcclxuICAgICAgICAgICAgZ2V0IHByZXNlcnZlRGlyZWN0aXZlQ29udGVudCgpIHtcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oZ2V0V2Fybk1lc3NhZ2UoSTE4bldhcm5Db2Rlcy5OT1RfU1VQUE9SVEVEX1BSRVNFUlZFX0RJUkVDVElWRSkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCBwcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQodmFsKSB7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGdldFdhcm5NZXNzYWdlKEkxOG5XYXJuQ29kZXMuTk9UX1NVUFBPUlRFRF9QUkVTRVJWRV9ESVJFQ1RJVkUpKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gcGx1cmFsaXphdGlvblJ1bGVzXHJcbiAgICAgICAgICAgIGdldCBwbHVyYWxpemF0aW9uUnVsZXMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9zZXIucGx1cmFsUnVsZXMgfHwge307XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGZvciBpbnRlcm5hbFxyXG4gICAgICAgICAgICBfX2NvbXBvc2VyOiBjb21wb3NlcixcclxuICAgICAgICAgICAgLy8gdFxyXG4gICAgICAgICAgICB0KC4uLmFyZ3MpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFthcmcxLCBhcmcyLCBhcmczXSA9IGFyZ3M7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0ge307XHJcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmFtZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc1N0cmluZyhhcmcxKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZUkxOG5FcnJvcihJMThuRXJyb3JDb2Rlcy5JTlZBTElEX0FSR1VNRU5UKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFyZzE7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmcoYXJnMikpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGFyZzI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KGFyZzIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdCA9IGFyZzI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGFyZzIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZWQgPSBhcmcyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoYXJnMykpIHtcclxuICAgICAgICAgICAgICAgICAgICBsaXN0ID0gYXJnMztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoYXJnMykpIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lZCA9IGFyZzM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyByZXR1cm4gY29tcG9zZXIudChrZXksIChsaXN0IHx8IG5hbWVkIHx8IHt9KSBhcyBhbnksIG9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShjb21wb3Nlci50LCBjb21wb3NlciwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgICAgICAobGlzdCB8fCBuYW1lZCB8fCB7fSksXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJ0KC4uLmFyZ3MpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KGNvbXBvc2VyLnJ0LCBjb21wb3NlciwgWy4uLmFyZ3NdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gdGNcclxuICAgICAgICAgICAgdGMoLi4uYXJncykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgW2FyZzEsIGFyZzIsIGFyZzNdID0gYXJncztcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IHBsdXJhbDogMSB9O1xyXG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5hbWVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICghaXNTdHJpbmcoYXJnMSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuSU5WQUxJRF9BUkdVTUVOVCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhcmcxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGFyZzIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2NhbGUgPSBhcmcyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIoYXJnMikpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBsdXJhbCA9IGFyZzI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KGFyZzIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdCA9IGFyZzI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGFyZzIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZWQgPSBhcmcyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGFyZzMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2NhbGUgPSBhcmczO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNBcnJheShhcmczKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBhcmczO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChhcmczKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWVkID0gYXJnMztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHJldHVybiBjb21wb3Nlci50KGtleSwgKGxpc3QgfHwgbmFtZWQgfHwge30pIGFzIGFueSwgb3B0aW9ucylcclxuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KGNvbXBvc2VyLnQsIGNvbXBvc2VyLCBbXHJcbiAgICAgICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IHx8IG5hbWVkIHx8IHt9KSxcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gdGVcclxuICAgICAgICAgICAgdGUoa2V5LCBsb2NhbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci50ZShrZXksIGxvY2FsZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIHRtXHJcbiAgICAgICAgICAgIHRtKGtleSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VyLnRtKGtleSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGdldExvY2FsZU1lc3NhZ2VcclxuICAgICAgICAgICAgZ2V0TG9jYWxlTWVzc2FnZShsb2NhbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci5nZXRMb2NhbGVNZXNzYWdlKGxvY2FsZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIHNldExvY2FsZU1lc3NhZ2VcclxuICAgICAgICAgICAgc2V0TG9jYWxlTWVzc2FnZShsb2NhbGUsIG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VyLnNldExvY2FsZU1lc3NhZ2UobG9jYWxlLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gbWVyZ2VMb2NhbGVNZXNzYWdlXHJcbiAgICAgICAgICAgIG1lcmdlTG9jYWxlTWVzc2FnZShsb2NhbGUsIG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VyLm1lcmdlTG9jYWxlTWVzc2FnZShsb2NhbGUsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBkXHJcbiAgICAgICAgICAgIGQoLi4uYXJncykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkoY29tcG9zZXIuZCwgY29tcG9zZXIsIFsuLi5hcmdzXSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGdldERhdGVUaW1lRm9ybWF0XHJcbiAgICAgICAgICAgIGdldERhdGVUaW1lRm9ybWF0KGxvY2FsZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VyLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIHNldERhdGVUaW1lRm9ybWF0XHJcbiAgICAgICAgICAgIHNldERhdGVUaW1lRm9ybWF0KGxvY2FsZSwgZm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb3Nlci5zZXREYXRlVGltZUZvcm1hdChsb2NhbGUsIGZvcm1hdCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIG1lcmdlRGF0ZVRpbWVGb3JtYXRcclxuICAgICAgICAgICAgbWVyZ2VEYXRlVGltZUZvcm1hdChsb2NhbGUsIGZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZXIubWVyZ2VEYXRlVGltZUZvcm1hdChsb2NhbGUsIGZvcm1hdCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIG5cclxuICAgICAgICAgICAgbiguLi5hcmdzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShjb21wb3Nlci5uLCBjb21wb3NlciwgWy4uLmFyZ3NdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gZ2V0TnVtYmVyRm9ybWF0XHJcbiAgICAgICAgICAgIGdldE51bWJlckZvcm1hdChsb2NhbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb3Nlci5nZXROdW1iZXJGb3JtYXQobG9jYWxlKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gc2V0TnVtYmVyRm9ybWF0XHJcbiAgICAgICAgICAgIHNldE51bWJlckZvcm1hdChsb2NhbGUsIGZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZXIuc2V0TnVtYmVyRm9ybWF0KGxvY2FsZSwgZm9ybWF0KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gbWVyZ2VOdW1iZXJGb3JtYXRcclxuICAgICAgICAgICAgbWVyZ2VOdW1iZXJGb3JtYXQobG9jYWxlLCBmb3JtYXQpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VyLm1lcmdlTnVtYmVyRm9ybWF0KGxvY2FsZSwgZm9ybWF0KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gZ2V0Q2hvaWNlSW5kZXhcclxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgICAgICBnZXRDaG9pY2VJbmRleChjaG9pY2UsIGNob2ljZXNMZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oZ2V0V2Fybk1lc3NhZ2UoSTE4bldhcm5Db2Rlcy5OT1RfU1VQUE9SVEVEX0dFVF9DSE9JQ0VfSU5ERVgpKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gZm9yIGludGVybmFsXHJcbiAgICAgICAgICAgIF9fb25Db21wb25lbnRJbnN0YW5jZUNyZWF0ZWQodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNvbXBvbmVudEluc3RhbmNlQ3JlYXRlZExpc3RlbmVyIH0gPSBvcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudEluc3RhbmNlQ3JlYXRlZExpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50SW5zdGFuY2VDcmVhdGVkTGlzdGVuZXIodGFyZ2V0LCB2dWVJMThuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gZm9yIHZ1ZS1kZXZ0b29scyB0aW1lbGluZSBldmVudFxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgdnVlSTE4bi5fX2VuYWJsZUVtaXR0ZXIgPSAoZW1pdHRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgX19jb21wb3NlciA9IGNvbXBvc2VyO1xyXG4gICAgICAgICAgICAgICAgX19jb21wb3NlcltFbmFibGVFbWl0dGVyXSAmJiBfX2NvbXBvc2VyW0VuYWJsZUVtaXR0ZXJdKGVtaXR0ZXIpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB2dWVJMThuLl9fZGlzYWJsZUVtaXR0ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBfX2NvbXBvc2VyID0gY29tcG9zZXI7XHJcbiAgICAgICAgICAgICAgICBfX2NvbXBvc2VyW0Rpc2FibGVFbWl0dGVyXSAmJiBfX2NvbXBvc2VyW0Rpc2FibGVFbWl0dGVyXSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdnVlSTE4bjtcclxuICAgIH1cclxufVxyXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuY29uc3QgYmFzZUZvcm1hdFByb3BzID0ge1xyXG4gICAgdGFnOiB7XHJcbiAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XVxyXG4gICAgfSxcclxuICAgIGxvY2FsZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHNjb3BlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIC8vIE5PVEU6IGF2b2lkIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvcnVzaHN0YWNrL2lzc3Vlcy8xMDUwXHJcbiAgICAgICAgdmFsaWRhdG9yOiAodmFsIC8qIENvbXBvbmV0STE4blNjb3BlICovKSA9PiB2YWwgPT09ICdwYXJlbnQnIHx8IHZhbCA9PT0gJ2dsb2JhbCcsXHJcbiAgICAgICAgZGVmYXVsdDogJ3BhcmVudCcgLyogQ29tcG9uZXRJMThuU2NvcGUgKi9cclxuICAgIH0sXHJcbiAgICBpMThuOiB7XHJcbiAgICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9XHJcbn07XG5cbmZ1bmN0aW9uIGdldEludGVycG9sYXRlQXJnKFxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG57IHNsb3RzIH0sIC8vIFNldHVwQ29udGV4dCxcclxua2V5cykge1xyXG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09ICdkZWZhdWx0Jykge1xyXG4gICAgICAgIC8vIGRlZmF1bHQgc2xvdCB3aXRoIGxpc3RcclxuICAgICAgICBjb25zdCByZXQgPSBzbG90cy5kZWZhdWx0ID8gc2xvdHMuZGVmYXVsdCgpIDogW107XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICByZXR1cm4gcmV0LnJlZHVjZSgoc2xvdCwgY3VycmVudCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKHNsb3QgPSBbXHJcbiAgICAgICAgICAgICAgICAuLi5zbG90LFxyXG4gICAgICAgICAgICAgICAgLi4uKGlzQXJyYXkoY3VycmVudC5jaGlsZHJlbikgPyBjdXJyZW50LmNoaWxkcmVuIDogW2N1cnJlbnRdKVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9LCBbXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBuYW1lZCBzbG90c1xyXG4gICAgICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYXJnLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2xvdCA9IHNsb3RzW2tleV07XHJcbiAgICAgICAgICAgIGlmIChzbG90KSB7XHJcbiAgICAgICAgICAgICAgICBhcmdba2V5XSA9IHNsb3QoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gYXJnO1xyXG4gICAgICAgIH0sIHt9KTtcclxuICAgIH1cclxufVxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG5mdW5jdGlvbiBnZXRGcmFnbWVudGFibGVUYWcodGFnKSB7XHJcbiAgICByZXR1cm4gRnJhZ21lbnQgO1xyXG59XG5cbi8qKlxyXG4gKiBUcmFuc2xhdGlvbiBDb21wb25lbnRcclxuICpcclxuICogQHJlbWFya3NcclxuICogU2VlIHRoZSBmb2xsb3dpbmcgaXRlbXMgZm9yIHByb3BlcnR5IGFib3V0IGRldGFpbHNcclxuICpcclxuICogQFZ1ZUkxOG5TZWUgW1RyYW5zbGF0aW9uUHJvcHNdKGNvbXBvbmVudCN0cmFuc2xhdGlvbnByb3BzKVxyXG4gKiBAVnVlSTE4blNlZSBbQmFzZUZvcm1hdFByb3BzXShjb21wb25lbnQjYmFzZWZvcm1hdHByb3BzKVxyXG4gKiBAVnVlSTE4blNlZSBbQ29tcG9uZW50IEludGVycG9sYXRpb25dKC4uL2d1aWRlL2FkdmFuY2VkL2NvbXBvbmVudClcclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8ZGl2IGlkPVwiYXBwXCI+XHJcbiAqICAgPCEtLSAuLi4gLS0+XHJcbiAqICAgPGkxOG4gcGF0aD1cInRlcm1cIiB0YWc9XCJsYWJlbFwiIGZvcj1cInRvc1wiPlxyXG4gKiAgICAgPGEgOmhyZWY9XCJ1cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj57eyAkdCgndG9zJykgfX08L2E+XHJcbiAqICAgPC9pMThuPlxyXG4gKiAgIDwhLS0gLi4uIC0tPlxyXG4gKiA8L2Rpdj5cclxuICogYGBgXHJcbiAqIGBgYGpzXHJcbiAqIGltcG9ydCB7IGNyZWF0ZUFwcCB9IGZyb20gJ3Z1ZSdcclxuICogaW1wb3J0IHsgY3JlYXRlSTE4biB9IGZyb20gJ3Z1ZS1pMThuJ1xyXG4gKlxyXG4gKiBjb25zdCBtZXNzYWdlcyA9IHtcclxuICogICBlbjoge1xyXG4gKiAgICAgdG9zOiAnVGVybSBvZiBTZXJ2aWNlJyxcclxuICogICAgIHRlcm06ICdJIGFjY2VwdCB4eHggezB9LidcclxuICogICB9LFxyXG4gKiAgIGphOiB7XHJcbiAqICAgICB0b3M6ICfliKnnlKjopo/ntIQnLFxyXG4gKiAgICAgdGVybTogJ+engeOBryB4eHgg44GuezB944Gr5ZCM5oSP44GX44G+44GZ44CCJ1xyXG4gKiAgIH1cclxuICogfVxyXG4gKlxyXG4gKiBjb25zdCBpMThuID0gY3JlYXRlSTE4bih7XHJcbiAqICAgbG9jYWxlOiAnZW4nLFxyXG4gKiAgIG1lc3NhZ2VzXHJcbiAqIH0pXHJcbiAqXHJcbiAqIGNvbnN0IGFwcCA9IGNyZWF0ZUFwcCh7XHJcbiAqICAgZGF0YToge1xyXG4gKiAgICAgdXJsOiAnL3Rlcm0nXHJcbiAqICAgfVxyXG4gKiB9KS51c2UoaTE4bikubW91bnQoJyNhcHAnKVxyXG4gKiBgYGBcclxuICpcclxuICogQFZ1ZUkxOG5Db21wb25lbnRcclxuICovXHJcbmNvbnN0IFRyYW5zbGF0aW9uID0gIC8qIGRlZmluZUNvbXBvbmVudCAqLyB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgbmFtZTogJ2kxOG4tdCcsXHJcbiAgICBwcm9wczogYXNzaWduKHtcclxuICAgICAgICBrZXlwYXRoOiB7XHJcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBsdXJhbDoge1xyXG4gICAgICAgICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6ICh2YWwpID0+IGlzTnVtYmVyKHZhbCkgfHwgIWlzTmFOKHZhbClcclxuICAgICAgICB9XHJcbiAgICB9LCBiYXNlRm9ybWF0UHJvcHMpLFxyXG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIHNldHVwKHByb3BzLCBjb250ZXh0KSB7XHJcbiAgICAgICAgY29uc3QgeyBzbG90cywgYXR0cnMgfSA9IGNvbnRleHQ7XHJcbiAgICAgICAgLy8gTk9URTogYXZvaWQgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9ydXNoc3RhY2svaXNzdWVzLzEwNTBcclxuICAgICAgICBjb25zdCBpMThuID0gcHJvcHMuaTE4biB8fFxyXG4gICAgICAgICAgICB1c2VJMThuKHtcclxuICAgICAgICAgICAgICAgIHVzZVNjb3BlOiBwcm9wcy5zY29wZSxcclxuICAgICAgICAgICAgICAgIF9fdXNlQ29tcG9uZW50OiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzbG90cykuZmlsdGVyKGtleSA9PiBrZXkgIT09ICdfJyk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xyXG4gICAgICAgICAgICBpZiAocHJvcHMubG9jYWxlKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IHByb3BzLmxvY2FsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJvcHMucGx1cmFsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMucGx1cmFsID0gaXNTdHJpbmcocHJvcHMucGx1cmFsKSA/ICtwcm9wcy5wbHVyYWwgOiBwcm9wcy5wbHVyYWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgYXJnID0gZ2V0SW50ZXJwb2xhdGVBcmcoY29udGV4dCwga2V5cyk7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gaTE4bltUcmFuc3JhdGVWTm9kZVN5bWJvbF0ocHJvcHMua2V5cGF0aCwgYXJnLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgY29uc3QgYXNzaWduZWRBdHRycyA9IGFzc2lnbih7fSwgYXR0cnMpO1xyXG4gICAgICAgICAgICBjb25zdCB0YWcgPSBpc1N0cmluZyhwcm9wcy50YWcpIHx8IGlzT2JqZWN0KHByb3BzLnRhZylcclxuICAgICAgICAgICAgICAgID8gcHJvcHMudGFnXHJcbiAgICAgICAgICAgICAgICA6IGdldEZyYWdtZW50YWJsZVRhZygpO1xyXG4gICAgICAgICAgICByZXR1cm4gaCh0YWcsIGFzc2lnbmVkQXR0cnMsIGNoaWxkcmVuKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBpc1ZOb2RlKHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGlzQXJyYXkodGFyZ2V0KSAmJiAhaXNTdHJpbmcodGFyZ2V0WzBdKTtcclxufVxyXG5mdW5jdGlvbiByZW5kZXJGb3JtYXR0ZXIocHJvcHMsIGNvbnRleHQsIHNsb3RLZXlzLCBwYXJ0Rm9ybWF0dGVyKSB7XHJcbiAgICBjb25zdCB7IHNsb3RzLCBhdHRycyB9ID0gY29udGV4dDtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgcGFydDogdHJ1ZSB9O1xyXG4gICAgICAgIGxldCBvdmVycmlkZXMgPSB7fTtcclxuICAgICAgICBpZiAocHJvcHMubG9jYWxlKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMubG9jYWxlID0gcHJvcHMubG9jYWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNTdHJpbmcocHJvcHMuZm9ybWF0KSkge1xyXG4gICAgICAgICAgICBvcHRpb25zLmtleSA9IHByb3BzLmZvcm1hdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QocHJvcHMuZm9ybWF0KSkge1xyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgICBpZiAoaXNTdHJpbmcocHJvcHMuZm9ybWF0LmtleSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLmtleSA9IHByb3BzLmZvcm1hdC5rZXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBudW1iZXIgZm9ybWF0IG9wdGlvbnMgb25seVxyXG4gICAgICAgICAgICBvdmVycmlkZXMgPSBPYmplY3Qua2V5cyhwcm9wcy5mb3JtYXQpLnJlZHVjZSgob3B0aW9ucywgcHJvcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNsb3RLZXlzLmluY2x1ZGVzKHByb3ApXHJcbiAgICAgICAgICAgICAgICAgICAgPyBhc3NpZ24oe30sIG9wdGlvbnMsIHsgW3Byb3BdOiBwcm9wcy5mb3JtYXRbcHJvcF0gfSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25zO1xyXG4gICAgICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gcGFydEZvcm1hdHRlciguLi5bcHJvcHMudmFsdWUsIG9wdGlvbnMsIG92ZXJyaWRlc10pO1xyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IFtvcHRpb25zLmtleV07XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocGFydHMpKSB7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gcGFydHMubWFwKChwYXJ0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2xvdCA9IHNsb3RzW3BhcnQudHlwZV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gc2xvdFxyXG4gICAgICAgICAgICAgICAgICAgID8gc2xvdCh7IFtwYXJ0LnR5cGVdOiBwYXJ0LnZhbHVlLCBpbmRleCwgcGFydHMgfSlcclxuICAgICAgICAgICAgICAgICAgICA6IFtwYXJ0LnZhbHVlXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1ZOb2RlKG5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZVswXS5rZXkgPSBgJHtwYXJ0LnR5cGV9LSR7aW5kZXh9YDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcocGFydHMpKSB7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gW3BhcnRzXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWRBdHRycyA9IGFzc2lnbih7fSwgYXR0cnMpO1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IGlzU3RyaW5nKHByb3BzLnRhZykgfHwgaXNPYmplY3QocHJvcHMudGFnKVxyXG4gICAgICAgICAgICA/IHByb3BzLnRhZ1xyXG4gICAgICAgICAgICA6IGdldEZyYWdtZW50YWJsZVRhZygpO1xyXG4gICAgICAgIHJldHVybiBoKHRhZywgYXNzaWduZWRBdHRycywgY2hpbGRyZW4pO1xyXG4gICAgfTtcclxufVxuXG5jb25zdCBOVU1CRVJfRk9STUFUX0tFWVMgPSBbXHJcbiAgICAnbG9jYWxlTWF0Y2hlcicsXHJcbiAgICAnc3R5bGUnLFxyXG4gICAgJ3VuaXQnLFxyXG4gICAgJ3VuaXREaXNwbGF5JyxcclxuICAgICdjdXJyZW5jeScsXHJcbiAgICAnY3VycmVuY3lEaXNwbGF5JyxcclxuICAgICd1c2VHcm91cGluZycsXHJcbiAgICAnbnVtYmVyaW5nU3lzdGVtJyxcclxuICAgICdtaW5pbXVtSW50ZWdlckRpZ2l0cycsXHJcbiAgICAnbWluaW11bUZyYWN0aW9uRGlnaXRzJyxcclxuICAgICdtYXhpbXVtRnJhY3Rpb25EaWdpdHMnLFxyXG4gICAgJ21pbmltdW1TaWduaWZpY2FudERpZ2l0cycsXHJcbiAgICAnbWF4aW11bVNpZ25pZmljYW50RGlnaXRzJyxcclxuICAgICdub3RhdGlvbicsXHJcbiAgICAnZm9ybWF0TWF0Y2hlcidcclxuXTtcclxuLyoqXHJcbiAqIE51bWJlciBGb3JtYXQgQ29tcG9uZW50XHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIFNlZSB0aGUgZm9sbG93aW5nIGl0ZW1zIGZvciBwcm9wZXJ0eSBhYm91dCBkZXRhaWxzXHJcbiAqXHJcbiAqIEBWdWVJMThuU2VlIFtGb3JtYXR0YWJsZVByb3BzXShjb21wb25lbnQjZm9ybWF0dGFibGVwcm9wcylcclxuICogQFZ1ZUkxOG5TZWUgW0Jhc2VGb3JtYXRQcm9wc10oY29tcG9uZW50I2Jhc2Vmb3JtYXRwcm9wcylcclxuICogQFZ1ZUkxOG5TZWUgW0N1c3RvbSBGb3JtYXR0aW5nXSguLi9ndWlkZS9lc3NlbnRpYWxzL251bWJlciNjdXN0b20tZm9ybWF0dGluZylcclxuICpcclxuICogQFZ1ZUkxOG5EYW5nZXJcclxuICogTm90IHN1cHBvcnRlZCBJRSwgZHVlIHRvIG5vIHN1cHBvcnQgYEludGwuTnVtYmVyRm9ybWF0I2Zvcm1hdFRvUGFydHNgIGluIFtJRV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9OdW1iZXJGb3JtYXQvZm9ybWF0VG9QYXJ0cylcclxuICpcclxuICogSWYgeW91IHdhbnQgdG8gdXNlIGl0LCB5b3UgbmVlZCB0byB1c2UgW3BvbHlmaWxsXShodHRwczovL2dpdGh1Yi5jb20vZm9ybWF0anMvZm9ybWF0anMvdHJlZS9tYWluL3BhY2thZ2VzL2ludGwtbnVtYmVyZm9ybWF0KVxyXG4gKlxyXG4gKiBAVnVlSTE4bkNvbXBvbmVudFxyXG4gKi9cclxuY29uc3QgTnVtYmVyRm9ybWF0ID0gIC8qIGRlZmluZUNvbXBvbmVudCAqLyB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgbmFtZTogJ2kxOG4tbicsXHJcbiAgICBwcm9wczogYXNzaWduKHtcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmb3JtYXQ6IHtcclxuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XVxyXG4gICAgICAgIH1cclxuICAgIH0sIGJhc2VGb3JtYXRQcm9wcyksXHJcbiAgICAvKiBlc2xpbnQtZW5hYmxlICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgc2V0dXAocHJvcHMsIGNvbnRleHQpIHtcclxuICAgICAgICBjb25zdCBpMThuID0gcHJvcHMuaTE4biB8fFxyXG4gICAgICAgICAgICB1c2VJMThuKHsgdXNlU2NvcGU6ICdwYXJlbnQnLCBfX3VzZUNvbXBvbmVudDogdHJ1ZSB9KTtcclxuICAgICAgICByZXR1cm4gcmVuZGVyRm9ybWF0dGVyKHByb3BzLCBjb250ZXh0LCBOVU1CRVJfRk9STUFUX0tFWVMsICguLi5hcmdzKSA9PiBcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGkxOG5bTnVtYmVyUGFydHNTeW1ib2xdKC4uLmFyZ3MpKTtcclxuICAgIH1cclxufTtcblxuY29uc3QgREFURVRJTUVfRk9STUFUX0tFWVMgPSBbXHJcbiAgICAnZGF0ZVN0eWxlJyxcclxuICAgICd0aW1lU3R5bGUnLFxyXG4gICAgJ2ZyYWN0aW9uYWxTZWNvbmREaWdpdHMnLFxyXG4gICAgJ2NhbGVuZGFyJyxcclxuICAgICdkYXlQZXJpb2QnLFxyXG4gICAgJ251bWJlcmluZ1N5c3RlbScsXHJcbiAgICAnbG9jYWxlTWF0Y2hlcicsXHJcbiAgICAndGltZVpvbmUnLFxyXG4gICAgJ2hvdXIxMicsXHJcbiAgICAnaG91ckN5Y2xlJyxcclxuICAgICdmb3JtYXRNYXRjaGVyJyxcclxuICAgICd3ZWVrZGF5JyxcclxuICAgICdlcmEnLFxyXG4gICAgJ3llYXInLFxyXG4gICAgJ21vbnRoJyxcclxuICAgICdkYXknLFxyXG4gICAgJ2hvdXInLFxyXG4gICAgJ21pbnV0ZScsXHJcbiAgICAnc2Vjb25kJyxcclxuICAgICd0aW1lWm9uZU5hbWUnXHJcbl07XHJcbi8qKlxyXG4gKiBEYXRldGltZSBGb3JtYXQgQ29tcG9uZW50XHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIFNlZSB0aGUgZm9sbG93aW5nIGl0ZW1zIGZvciBwcm9wZXJ0eSBhYm91dCBkZXRhaWxzXHJcbiAqXHJcbiAqIEBWdWVJMThuU2VlIFtGb3JtYXR0YWJsZVByb3BzXShjb21wb25lbnQjZm9ybWF0dGFibGVwcm9wcylcclxuICogQFZ1ZUkxOG5TZWUgW0Jhc2VGb3JtYXRQcm9wc10oY29tcG9uZW50I2Jhc2Vmb3JtYXRwcm9wcylcclxuICogQFZ1ZUkxOG5TZWUgW0N1c3RvbSBGb3JtYXR0aW5nXSguLi9ndWlkZS9lc3NlbnRpYWxzL2RhdGV0aW1lI2N1c3RvbS1mb3JtYXR0aW5nKVxyXG4gKlxyXG4gKiBAVnVlSTE4bkRhbmdlclxyXG4gKiBOb3Qgc3VwcG9ydGVkIElFLCBkdWUgdG8gbm8gc3VwcG9ydCBgSW50bC5EYXRlVGltZUZvcm1hdCNmb3JtYXRUb1BhcnRzYCBpbiBbSUVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvRGF0ZVRpbWVGb3JtYXQvZm9ybWF0VG9QYXJ0cylcclxuICpcclxuICogSWYgeW91IHdhbnQgdG8gdXNlIGl0LCB5b3UgbmVlZCB0byB1c2UgW3BvbHlmaWxsXShodHRwczovL2dpdGh1Yi5jb20vZm9ybWF0anMvZm9ybWF0anMvdHJlZS9tYWluL3BhY2thZ2VzL2ludGwtZGF0ZXRpbWVmb3JtYXQpXHJcbiAqXHJcbiAqIEBWdWVJMThuQ29tcG9uZW50XHJcbiAqL1xyXG5jb25zdCBEYXRldGltZUZvcm1hdCA9ICAvKmRlZmluZUNvbXBvbmVudCAqLyB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgbmFtZTogJ2kxOG4tZCcsXHJcbiAgICBwcm9wczogYXNzaWduKHtcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICB0eXBlOiBbTnVtYmVyLCBEYXRlXSxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZvcm1hdDoge1xyXG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdXHJcbiAgICAgICAgfVxyXG4gICAgfSwgYmFzZUZvcm1hdFByb3BzKSxcclxuICAgIC8qIGVzbGludC1lbmFibGUgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBzZXR1cChwcm9wcywgY29udGV4dCkge1xyXG4gICAgICAgIGNvbnN0IGkxOG4gPSBwcm9wcy5pMThuIHx8XHJcbiAgICAgICAgICAgIHVzZUkxOG4oeyB1c2VTY29wZTogJ3BhcmVudCcsIF9fdXNlQ29tcG9uZW50OiB0cnVlIH0pO1xyXG4gICAgICAgIHJldHVybiByZW5kZXJGb3JtYXR0ZXIocHJvcHMsIGNvbnRleHQsIERBVEVUSU1FX0ZPUk1BVF9LRVlTLCAoLi4uYXJncykgPT4gXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBpMThuW0RhdGV0aW1lUGFydHNTeW1ib2xdKC4uLmFyZ3MpKTtcclxuICAgIH1cclxufTtcblxuZnVuY3Rpb24gZ2V0Q29tcG9zZXIkMihpMThuLCBpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgaTE4bkludGVybmFsID0gaTE4bjtcclxuICAgIGlmIChpMThuLm1vZGUgPT09ICdjb21wb3NpdGlvbicpIHtcclxuICAgICAgICByZXR1cm4gKGkxOG5JbnRlcm5hbC5fX2dldEluc3RhbmNlKGluc3RhbmNlKSB8fCBpMThuLmdsb2JhbCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB2dWVJMThuID0gaTE4bkludGVybmFsLl9fZ2V0SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgICAgIHJldHVybiB2dWVJMThuICE9IG51bGxcclxuICAgICAgICAgICAgPyB2dWVJMThuLl9fY29tcG9zZXJcclxuICAgICAgICAgICAgOiBpMThuLmdsb2JhbC5fX2NvbXBvc2VyO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHZURGlyZWN0aXZlKGkxOG4pIHtcclxuICAgIGNvbnN0IGJpbmQgPSAoZWwsIHsgaW5zdGFuY2UsIHZhbHVlLCBtb2RpZmllcnMgfSkgPT4ge1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UgfHwgIWluc3RhbmNlLiQpIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlSTE4bkVycm9yKEkxOG5FcnJvckNvZGVzLlVORVhQRUNURURfRVJST1IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb21wb3NlciA9IGdldENvbXBvc2VyJDIoaTE4biwgaW5zdGFuY2UuJCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBtb2RpZmllcnMucHJlc2VydmUpIHtcclxuICAgICAgICAgICAgd2FybihnZXRXYXJuTWVzc2FnZShJMThuV2FybkNvZGVzLk5PVF9TVVBQT1JURURfUFJFU0VSVkUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZVZhbHVlKHZhbHVlKTtcclxuICAgICAgICAvLyBlbC50ZXh0Q29udGVudCA9IGNvbXBvc2VyLnQoLi4ubWFrZVBhcmFtcyhwYXJzZWRWYWx1ZSkpXHJcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSBSZWZsZWN0LmFwcGx5KGNvbXBvc2VyLnQsIGNvbXBvc2VyLCBbXHJcbiAgICAgICAgICAgIC4uLm1ha2VQYXJhbXMocGFyc2VkVmFsdWUpXHJcbiAgICAgICAgXSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBiZWZvcmVNb3VudDogYmluZCxcclxuICAgICAgICBiZWZvcmVVcGRhdGU6IGJpbmRcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VWYWx1ZSh2YWx1ZSkge1xyXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB7IHBhdGg6IHZhbHVlIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xyXG4gICAgICAgIGlmICghKCdwYXRoJyBpbiB2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlSTE4bkVycm9yKEkxOG5FcnJvckNvZGVzLlJFUVVJUkVEX1ZBTFVFLCAncGF0aCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuSU5WQUxJRF9WQUxVRSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbWFrZVBhcmFtcyh2YWx1ZSkge1xyXG4gICAgY29uc3QgeyBwYXRoLCBsb2NhbGUsIGFyZ3MsIGNob2ljZSwgcGx1cmFsIH0gPSB2YWx1ZTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7fTtcclxuICAgIGNvbnN0IG5hbWVkID0gYXJncyB8fCB7fTtcclxuICAgIGlmIChpc1N0cmluZyhsb2NhbGUpKSB7XHJcbiAgICAgICAgb3B0aW9ucy5sb2NhbGUgPSBsb2NhbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNOdW1iZXIoY2hvaWNlKSkge1xyXG4gICAgICAgIG9wdGlvbnMucGx1cmFsID0gY2hvaWNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzTnVtYmVyKHBsdXJhbCkpIHtcclxuICAgICAgICBvcHRpb25zLnBsdXJhbCA9IHBsdXJhbDtcclxuICAgIH1cclxuICAgIHJldHVybiBbcGF0aCwgbmFtZWQsIG9wdGlvbnNdO1xyXG59XG5cbmZ1bmN0aW9uIGFwcGx5KGFwcCwgaTE4biwgLi4ub3B0aW9ucykge1xyXG4gICAgY29uc3QgcGx1Z2luT3B0aW9ucyA9IGlzUGxhaW5PYmplY3Qob3B0aW9uc1swXSlcclxuICAgICAgICA/IG9wdGlvbnNbMF1cclxuICAgICAgICA6IHt9O1xyXG4gICAgY29uc3QgdXNlSTE4bkNvbXBvbmVudE5hbWUgPSAhIXBsdWdpbk9wdGlvbnMudXNlSTE4bkNvbXBvbmVudE5hbWU7XHJcbiAgICBjb25zdCBnbG9iYWxJbnN0YWxsID0gaXNCb29sZWFuKHBsdWdpbk9wdGlvbnMuZ2xvYmFsSW5zdGFsbClcclxuICAgICAgICA/IHBsdWdpbk9wdGlvbnMuZ2xvYmFsSW5zdGFsbFxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZ2xvYmFsSW5zdGFsbCAmJiB1c2VJMThuQ29tcG9uZW50TmFtZSkge1xyXG4gICAgICAgIHdhcm4oZ2V0V2Fybk1lc3NhZ2UoSTE4bldhcm5Db2Rlcy5DT01QT05FTlRfTkFNRV9MRUdBQ1lfQ09NUEFUSUJMRSwge1xyXG4gICAgICAgICAgICBuYW1lOiBUcmFuc2xhdGlvbi5uYW1lXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGdsb2JhbEluc3RhbGwpIHtcclxuICAgICAgICAvLyBpbnN0YWxsIGNvbXBvbmVudHNcclxuICAgICAgICBhcHAuY29tcG9uZW50KCF1c2VJMThuQ29tcG9uZW50TmFtZSA/IFRyYW5zbGF0aW9uLm5hbWUgOiAnaTE4bicsIFRyYW5zbGF0aW9uKTtcclxuICAgICAgICBhcHAuY29tcG9uZW50KE51bWJlckZvcm1hdC5uYW1lLCBOdW1iZXJGb3JtYXQpO1xyXG4gICAgICAgIGFwcC5jb21wb25lbnQoRGF0ZXRpbWVGb3JtYXQubmFtZSwgRGF0ZXRpbWVGb3JtYXQpO1xyXG4gICAgfVxyXG4gICAgLy8gaW5zdGFsbCBkaXJlY3RpdmVcclxuICAgIHtcclxuICAgICAgICBhcHAuZGlyZWN0aXZlKCd0JywgdlREaXJlY3RpdmUoaTE4bikpO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IFZVRV9JMThOX0NPTVBPTkVOVF9UWVBFUyA9ICd2dWUtaTE4bjogY29tcG9zZXIgcHJvcGVydGllcyc7XHJcbmxldCBkZXZ0b29sc0FwaTtcclxuYXN5bmMgZnVuY3Rpb24gZW5hYmxlRGV2VG9vbHMoYXBwLCBpMThuKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHNldHVwRGV2dG9vbHNQbHVnaW4oe1xyXG4gICAgICAgICAgICAgICAgaWQ6IFwidnVlLWRldnRvb2xzLXBsdWdpbi12dWUtaTE4blwiIC8qIFBMVUdJTiAqLyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBWdWVEZXZUb29sc0xhYmVsc1tcInZ1ZS1kZXZ0b29scy1wbHVnaW4tdnVlLWkxOG5cIiAvKiBQTFVHSU4gKi9dLFxyXG4gICAgICAgICAgICAgICAgcGFja2FnZU5hbWU6ICd2dWUtaTE4bicsXHJcbiAgICAgICAgICAgICAgICBob21lcGFnZTogJ2h0dHBzOi8vdnVlLWkxOG4uaW50bGlmeS5kZXYnLFxyXG4gICAgICAgICAgICAgICAgbG9nbzogJ2h0dHBzOi8vdnVlLWkxOG4uaW50bGlmeS5kZXYvdnVlLWkxOG4tZGV2dG9vbHMtbG9nby5wbmcnLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50U3RhdGVUeXBlczogW1ZVRV9JMThOX0NPTVBPTkVOVF9UWVBFU10sXHJcbiAgICAgICAgICAgICAgICBhcHBcclxuICAgICAgICAgICAgfSwgYXBpID0+IHtcclxuICAgICAgICAgICAgICAgIGRldnRvb2xzQXBpID0gYXBpO1xyXG4gICAgICAgICAgICAgICAgYXBpLm9uLnZpc2l0Q29tcG9uZW50VHJlZSgoeyBjb21wb25lbnRJbnN0YW5jZSwgdHJlZU5vZGUgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudFRyZWVUYWdzKGNvbXBvbmVudEluc3RhbmNlLCB0cmVlTm9kZSwgaTE4bik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGFwaS5vbi5pbnNwZWN0Q29tcG9uZW50KCh7IGNvbXBvbmVudEluc3RhbmNlLCBpbnN0YW5jZURhdGEgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRJbnN0YW5jZS52bm9kZS5lbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJbnN0YW5jZS52bm9kZS5lbC5fX1ZVRV9JMThOX18gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VEYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpMThuLm1vZGUgPT09ICdsZWdhY3knKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgZ2xvYmFsIHNjb3BlIG9uIGxlZ2FjeSBtb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50SW5zdGFuY2Uudm5vZGUuZWwuX19WVUVfSTE4Tl9fICE9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4uZ2xvYmFsLl9fY29tcG9zZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0Q29tcG9zZXIoaW5zdGFuY2VEYXRhLCBjb21wb25lbnRJbnN0YW5jZS52bm9kZS5lbC5fX1ZVRV9JMThOX18pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdENvbXBvc2VyKGluc3RhbmNlRGF0YSwgY29tcG9uZW50SW5zdGFuY2Uudm5vZGUuZWwuX19WVUVfSTE4Tl9fKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYXBpLmFkZEluc3BlY3Rvcih7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwidnVlLWkxOG4tcmVzb3VyY2UtaW5zcGVjdG9yXCIgLyogQ1VTVE9NX0lOU1BFQ1RPUiAqLyxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogVnVlRGV2VG9vbHNMYWJlbHNbXCJ2dWUtaTE4bi1yZXNvdXJjZS1pbnNwZWN0b3JcIiAvKiBDVVNUT01fSU5TUEVDVE9SICovXSxcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiAnbGFuZ3VhZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWVGaWx0ZXJQbGFjZWhvbGRlcjogVnVlRGV2VG9vbHNQbGFjZWhvbGRlcnNbXCJ2dWUtaTE4bi1yZXNvdXJjZS1pbnNwZWN0b3JcIiAvKiBDVVNUT01fSU5TUEVDVE9SICovXVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBhcGkub24uZ2V0SW5zcGVjdG9yVHJlZShwYXlsb2FkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5hcHAgPT09IGFwcCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmluc3BlY3RvcklkID09PSBcInZ1ZS1pMThuLXJlc291cmNlLWluc3BlY3RvclwiIC8qIENVU1RPTV9JTlNQRUNUT1IgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTY29wZShwYXlsb2FkLCBpMThuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJvb3RzID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICAgICAgYXBpLm9uLmdldEluc3BlY3RvclN0YXRlKGFzeW5jIChwYXlsb2FkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gXCJ2dWUtaTE4bi1yZXNvdXJjZS1pbnNwZWN0b3JcIiAvKiBDVVNUT01fSU5TUEVDVE9SICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaS51bmhpZ2hsaWdodEVsZW1lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdFNjb3BlKHBheWxvYWQsIGkxOG4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5ub2RlSWQgPT09ICdnbG9iYWwnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJvb3RzLmhhcyhwYXlsb2FkLmFwcCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbcm9vdF0gPSBhd2FpdCBhcGkuZ2V0Q29tcG9uZW50SW5zdGFuY2VzKHBheWxvYWQuYXBwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290cy5zZXQocGF5bG9hZC5hcHAsIHJvb3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpLmhpZ2hsaWdodEVsZW1lbnQocm9vdHMuZ2V0KHBheWxvYWQuYXBwKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldENvbXBvbmVudEluc3RhbmNlKHBheWxvYWQubm9kZUlkLCBpMThuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlICYmIGFwaS5oaWdobGlnaHRFbGVtZW50KGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYXBpLm9uLmVkaXRJbnNwZWN0b3JTdGF0ZShwYXlsb2FkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5hcHAgPT09IGFwcCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmluc3BlY3RvcklkID09PSBcInZ1ZS1pMThuLXJlc291cmNlLWluc3BlY3RvclwiIC8qIENVU1RPTV9JTlNQRUNUT1IgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdFNjb3BlKHBheWxvYWQsIGkxOG4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYXBpLmFkZFRpbWVsaW5lTGF5ZXIoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcInZ1ZS1pMThuLXRpbWVsaW5lXCIgLyogVElNRUxJTkUgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFZ1ZURldlRvb2xzTGFiZWxzW1widnVlLWkxOG4tdGltZWxpbmVcIiAvKiBUSU1FTElORSAqL10sXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IFZ1ZURldlRvb2xzVGltZWxpbmVDb2xvcnNbXCJ2dWUtaTE4bi10aW1lbGluZVwiIC8qIFRJTUVMSU5FICovXVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG5mdW5jdGlvbiBnZXRJMThuU2NvcGVMYWJsZShpbnN0YW5jZSkge1xyXG4gICAgcmV0dXJuIChpbnN0YW5jZS50eXBlLm5hbWUgfHxcclxuICAgICAgICBpbnN0YW5jZS50eXBlLmRpc3BsYXlOYW1lIHx8XHJcbiAgICAgICAgaW5zdGFuY2UudHlwZS5fX2ZpbGUgfHxcclxuICAgICAgICAnQW5vbnltb3VzJyk7XHJcbn1cclxuZnVuY3Rpb24gdXBkYXRlQ29tcG9uZW50VHJlZVRhZ3MoaW5zdGFuY2UsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG50cmVlTm9kZSwgaTE4bikge1xyXG4gICAgLy8gcHJldHRpZXItaWdub3JlXHJcbiAgICBjb25zdCBnbG9iYWwgPSBpMThuLm1vZGUgPT09ICdjb21wb3NpdGlvbidcclxuICAgICAgICA/IGkxOG4uZ2xvYmFsXHJcbiAgICAgICAgOiBpMThuLmdsb2JhbC5fX2NvbXBvc2VyO1xyXG4gICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLnZub2RlLmVsICYmIGluc3RhbmNlLnZub2RlLmVsLl9fVlVFX0kxOE5fXykge1xyXG4gICAgICAgIC8vIGFkZCBjdXN0b20gdGFncyBsb2NhbCBzY29wZSBvbmx5XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnZub2RlLmVsLl9fVlVFX0kxOE5fXyAhPT0gZ2xvYmFsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhZyA9IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBgaTE4biAoJHtnZXRJMThuU2NvcGVMYWJsZShpbnN0YW5jZSl9IFNjb3BlKWAsXHJcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IDB4MDAwMDAwLFxyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAweGZmY2QxOVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0cmVlTm9kZS50YWdzLnB1c2godGFnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaW5zcGVjdENvbXBvc2VyKGluc3RhbmNlRGF0YSwgY29tcG9zZXIpIHtcclxuICAgIGNvbnN0IHR5cGUgPSBWVUVfSTE4Tl9DT01QT05FTlRfVFlQRVM7XHJcbiAgICBpbnN0YW5jZURhdGEuc3RhdGUucHVzaCh7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICBrZXk6ICdsb2NhbGUnLFxyXG4gICAgICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiBjb21wb3Nlci5sb2NhbGUudmFsdWVcclxuICAgIH0pO1xyXG4gICAgaW5zdGFuY2VEYXRhLnN0YXRlLnB1c2goe1xyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAga2V5OiAnYXZhaWxhYmxlTG9jYWxlcycsXHJcbiAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgIHZhbHVlOiBjb21wb3Nlci5hdmFpbGFibGVMb2NhbGVzXHJcbiAgICB9KTtcclxuICAgIGluc3RhbmNlRGF0YS5zdGF0ZS5wdXNoKHtcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIGtleTogJ2ZhbGxiYWNrTG9jYWxlJyxcclxuICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogY29tcG9zZXIuZmFsbGJhY2tMb2NhbGUudmFsdWVcclxuICAgIH0pO1xyXG4gICAgaW5zdGFuY2VEYXRhLnN0YXRlLnB1c2goe1xyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAga2V5OiAnaW5oZXJpdExvY2FsZScsXHJcbiAgICAgICAgZWRpdGFibGU6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IGNvbXBvc2VyLmluaGVyaXRMb2NhbGVcclxuICAgIH0pO1xyXG4gICAgaW5zdGFuY2VEYXRhLnN0YXRlLnB1c2goe1xyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAga2V5OiAnbWVzc2FnZXMnLFxyXG4gICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICB2YWx1ZTogZ2V0TG9jYWxlTWVzc2FnZVZhbHVlKGNvbXBvc2VyLm1lc3NhZ2VzLnZhbHVlKVxyXG4gICAgfSk7XHJcbiAgICB7XHJcbiAgICAgICAgaW5zdGFuY2VEYXRhLnN0YXRlLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBrZXk6ICdkYXRldGltZUZvcm1hdHMnLFxyXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb21wb3Nlci5kYXRldGltZUZvcm1hdHMudmFsdWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBpbnN0YW5jZURhdGEuc3RhdGUucHVzaCh7XHJcbiAgICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICAgIGtleTogJ251bWJlckZvcm1hdHMnLFxyXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb21wb3Nlci5udW1iZXJGb3JtYXRzLnZhbHVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuZnVuY3Rpb24gZ2V0TG9jYWxlTWVzc2FnZVZhbHVlKG1lc3NhZ2VzKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHt9O1xyXG4gICAgT2JqZWN0LmtleXMobWVzc2FnZXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHYgPSBtZXNzYWdlc1trZXldO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHYpICYmICdzb3VyY2UnIGluIHYpIHtcclxuICAgICAgICAgICAgdmFsdWVba2V5XSA9IGdldE1lc3NhZ2VGdW5jdGlvbkRldGFpbHModik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHYpKSB7XHJcbiAgICAgICAgICAgIHZhbHVlW2tleV0gPSBnZXRMb2NhbGVNZXNzYWdlVmFsdWUodik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZVtrZXldID0gdjtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG5jb25zdCBFU0MgPSB7XHJcbiAgICAnPCc6ICcmbHQ7JyxcclxuICAgICc+JzogJyZndDsnLFxyXG4gICAgJ1wiJzogJyZxdW90OycsXHJcbiAgICAnJic6ICcmYW1wOydcclxufTtcclxuZnVuY3Rpb24gZXNjYXBlKHMpIHtcclxuICAgIHJldHVybiBzLnJlcGxhY2UoL1s8PlwiJl0vZywgZXNjYXBlQ2hhcik7XHJcbn1cclxuZnVuY3Rpb24gZXNjYXBlQ2hhcihhKSB7XHJcbiAgICByZXR1cm4gRVNDW2FdIHx8IGE7XHJcbn1cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuZnVuY3Rpb24gZ2V0TWVzc2FnZUZ1bmN0aW9uRGV0YWlscyhmdW5jKSB7XHJcbiAgICBjb25zdCBhcmdTdHJpbmcgPSBmdW5jLnNvdXJjZSA/IGAoXCIke2VzY2FwZShmdW5jLnNvdXJjZSl9XCIpYCA6IGAoPylgO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBfY3VzdG9tOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdmdW5jdGlvbicsXHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGA8c3Bhbj7Gkjwvc3Bhbj4gJHthcmdTdHJpbmd9YFxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcmVnaXN0ZXJTY29wZShwYXlsb2FkLCBpMThuKSB7XHJcbiAgICBwYXlsb2FkLnJvb3ROb2Rlcy5wdXNoKHtcclxuICAgICAgICBpZDogJ2dsb2JhbCcsXHJcbiAgICAgICAgbGFiZWw6ICdHbG9iYWwgU2NvcGUnXHJcbiAgICB9KTtcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgY29uc3QgZ2xvYmFsID0gaTE4bi5tb2RlID09PSAnY29tcG9zaXRpb24nXHJcbiAgICAgICAgPyBpMThuLmdsb2JhbFxyXG4gICAgICAgIDogaTE4bi5nbG9iYWwuX19jb21wb3NlcjtcclxuICAgIGZvciAoY29uc3QgW2tleUluc3RhbmNlLCBpbnN0YW5jZV0gb2YgaTE4bi5fX2luc3RhbmNlcykge1xyXG4gICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgICAgIGNvbnN0IGNvbXBvc2VyID0gaTE4bi5tb2RlID09PSAnY29tcG9zaXRpb24nXHJcbiAgICAgICAgICAgID8gaW5zdGFuY2VcclxuICAgICAgICAgICAgOiBpbnN0YW5jZS5fX2NvbXBvc2VyO1xyXG4gICAgICAgIGlmIChnbG9iYWwgPT09IGNvbXBvc2VyKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXlsb2FkLnJvb3ROb2Rlcy5wdXNoKHtcclxuICAgICAgICAgICAgaWQ6IGNvbXBvc2VyLmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGxhYmVsOiBgJHtnZXRJMThuU2NvcGVMYWJsZShrZXlJbnN0YW5jZSl9IFNjb3BlYFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldENvbXBvbmVudEluc3RhbmNlKG5vZGVJZCwgaTE4bikge1xyXG4gICAgbGV0IGluc3RhbmNlID0gbnVsbDtcclxuICAgIGlmIChub2RlSWQgIT09ICdnbG9iYWwnKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBbY29tcG9uZW50LCBjb21wb3Nlcl0gb2YgaTE4bi5fX2luc3RhbmNlcy5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgaWYgKGNvbXBvc2VyLmlkLnRvU3RyaW5nKCkgPT09IG5vZGVJZCkge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpbnN0YW5jZTtcclxufVxyXG5mdW5jdGlvbiBnZXRDb21wb3NlciQxKG5vZGVJZCwgaTE4bikge1xyXG4gICAgaWYgKG5vZGVJZCA9PT0gJ2dsb2JhbCcpIHtcclxuICAgICAgICByZXR1cm4gaTE4bi5tb2RlID09PSAnY29tcG9zaXRpb24nXHJcbiAgICAgICAgICAgID8gaTE4bi5nbG9iYWxcclxuICAgICAgICAgICAgOiBpMThuLmdsb2JhbC5fX2NvbXBvc2VyO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBBcnJheS5mcm9tKGkxOG4uX19pbnN0YW5jZXMudmFsdWVzKCkpLmZpbmQoaXRlbSA9PiBpdGVtLmlkLnRvU3RyaW5nKCkgPT09IG5vZGVJZCk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpMThuLm1vZGUgPT09ICdjb21wb3NpdGlvbidcclxuICAgICAgICAgICAgICAgID8gaW5zdGFuY2VcclxuICAgICAgICAgICAgICAgIDogaW5zdGFuY2UuX19jb21wb3NlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpbnNwZWN0U2NvcGUocGF5bG9hZCwgaTE4blxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4pIHtcclxuICAgIGNvbnN0IGNvbXBvc2VyID0gZ2V0Q29tcG9zZXIkMShwYXlsb2FkLm5vZGVJZCwgaTE4bik7XHJcbiAgICBpZiAoY29tcG9zZXIpIHtcclxuICAgICAgICAvLyBUT0RPOlxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgcGF5bG9hZC5zdGF0ZSA9IG1ha2VTY29wZUluc3BlY3RTdGF0ZShjb21wb3Nlcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG5mdW5jdGlvbiBtYWtlU2NvcGVJbnNwZWN0U3RhdGUoY29tcG9zZXIpIHtcclxuICAgIGNvbnN0IHN0YXRlID0ge307XHJcbiAgICBjb25zdCBsb2NhbGVUeXBlID0gJ0xvY2FsZSByZWxhdGVkIGluZm8nO1xyXG4gICAgY29uc3QgbG9jYWxlU3RhdGVzID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogbG9jYWxlVHlwZSxcclxuICAgICAgICAgICAga2V5OiAnbG9jYWxlJyxcclxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb21wb3Nlci5sb2NhbGUudmFsdWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogbG9jYWxlVHlwZSxcclxuICAgICAgICAgICAga2V5OiAnZmFsbGJhY2tMb2NhbGUnLFxyXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgdmFsdWU6IGNvbXBvc2VyLmZhbGxiYWNrTG9jYWxlLnZhbHVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsZVR5cGUsXHJcbiAgICAgICAgICAgIGtleTogJ2F2YWlsYWJsZUxvY2FsZXMnLFxyXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb21wb3Nlci5hdmFpbGFibGVMb2NhbGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsZVR5cGUsXHJcbiAgICAgICAgICAgIGtleTogJ2luaGVyaXRMb2NhbGUnLFxyXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgdmFsdWU6IGNvbXBvc2VyLmluaGVyaXRMb2NhbGVcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgc3RhdGVbbG9jYWxlVHlwZV0gPSBsb2NhbGVTdGF0ZXM7XHJcbiAgICBjb25zdCBsb2NhbGVNZXNzYWdlc1R5cGUgPSAnTG9jYWxlIG1lc3NhZ2VzIGluZm8nO1xyXG4gICAgY29uc3QgbG9jYWxlTWVzc2FnZXNTdGF0ZXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBsb2NhbGVNZXNzYWdlc1R5cGUsXHJcbiAgICAgICAgICAgIGtleTogJ21lc3NhZ2VzJyxcclxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWx1ZTogZ2V0TG9jYWxlTWVzc2FnZVZhbHVlKGNvbXBvc2VyLm1lc3NhZ2VzLnZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgIF07XHJcbiAgICBzdGF0ZVtsb2NhbGVNZXNzYWdlc1R5cGVdID0gbG9jYWxlTWVzc2FnZXNTdGF0ZXM7XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgZGF0ZXRpbWVGb3JtYXRzVHlwZSA9ICdEYXRldGltZSBmb3JtYXRzIGluZm8nO1xyXG4gICAgICAgIGNvbnN0IGRhdGV0aW1lRm9ybWF0c1N0YXRlcyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogZGF0ZXRpbWVGb3JtYXRzVHlwZSxcclxuICAgICAgICAgICAgICAgIGtleTogJ2RhdGV0aW1lRm9ybWF0cycsXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogY29tcG9zZXIuZGF0ZXRpbWVGb3JtYXRzLnZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHN0YXRlW2RhdGV0aW1lRm9ybWF0c1R5cGVdID0gZGF0ZXRpbWVGb3JtYXRzU3RhdGVzO1xyXG4gICAgICAgIGNvbnN0IG51bWJlckZvcm1hdHNUeXBlID0gJ0RhdGV0aW1lIGZvcm1hdHMgaW5mbyc7XHJcbiAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0c1N0YXRlcyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogbnVtYmVyRm9ybWF0c1R5cGUsXHJcbiAgICAgICAgICAgICAgICBrZXk6ICdudW1iZXJGb3JtYXRzJyxcclxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBjb21wb3Nlci5udW1iZXJGb3JtYXRzLnZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHN0YXRlW251bWJlckZvcm1hdHNUeXBlXSA9IG51bWJlckZvcm1hdHNTdGF0ZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RhdGU7XHJcbn1cclxuZnVuY3Rpb24gYWRkVGltZWxpbmVFdmVudChldmVudCwgcGF5bG9hZCkge1xyXG4gICAgaWYgKGRldnRvb2xzQXBpKSB7XHJcbiAgICAgICAgbGV0IGdyb3VwSWQ7XHJcbiAgICAgICAgaWYgKHBheWxvYWQgJiYgJ2dyb3VwSWQnIGluIHBheWxvYWQpIHtcclxuICAgICAgICAgICAgZ3JvdXBJZCA9IHBheWxvYWQuZ3JvdXBJZDtcclxuICAgICAgICAgICAgZGVsZXRlIHBheWxvYWQuZ3JvdXBJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGV2dG9vbHNBcGkuYWRkVGltZWxpbmVFdmVudCh7XHJcbiAgICAgICAgICAgIGxheWVySWQ6IFwidnVlLWkxOG4tdGltZWxpbmVcIiAvKiBUSU1FTElORSAqLyxcclxuICAgICAgICAgICAgZXZlbnQ6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBldmVudCxcclxuICAgICAgICAgICAgICAgIGdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgICAgICAgbWV0YToge30sXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBwYXlsb2FkIHx8IHt9LFxyXG4gICAgICAgICAgICAgICAgbG9nVHlwZTogZXZlbnQgPT09IFwiY29tcGlsZS1lcnJvclwiIC8qIENPTVBJTEVfRVJST1IgKi9cclxuICAgICAgICAgICAgICAgICAgICA/ICdlcnJvcidcclxuICAgICAgICAgICAgICAgICAgICA6IGV2ZW50ID09PSBcImZhbGxiYWNrXCIgLyogRkFMQkFDSyAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudCA9PT0gXCJtaXNzaW5nXCIgLyogTUlTU0lORyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd3YXJuaW5nJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdkZWZhdWx0J1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZWRpdFNjb3BlKHBheWxvYWQsIGkxOG4pIHtcclxuICAgIGNvbnN0IGNvbXBvc2VyID0gZ2V0Q29tcG9zZXIkMShwYXlsb2FkLm5vZGVJZCwgaTE4bik7XHJcbiAgICBpZiAoY29tcG9zZXIpIHtcclxuICAgICAgICBjb25zdCBbZmllbGRdID0gcGF5bG9hZC5wYXRoO1xyXG4gICAgICAgIGlmIChmaWVsZCA9PT0gJ2xvY2FsZScgJiYgaXNTdHJpbmcocGF5bG9hZC5zdGF0ZS52YWx1ZSkpIHtcclxuICAgICAgICAgICAgY29tcG9zZXIubG9jYWxlLnZhbHVlID0gcGF5bG9hZC5zdGF0ZS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZmllbGQgPT09ICdmYWxsYmFja0xvY2FsZScgJiZcclxuICAgICAgICAgICAgKGlzU3RyaW5nKHBheWxvYWQuc3RhdGUudmFsdWUpIHx8XHJcbiAgICAgICAgICAgICAgICBpc0FycmF5KHBheWxvYWQuc3RhdGUudmFsdWUpIHx8XHJcbiAgICAgICAgICAgICAgICBpc09iamVjdChwYXlsb2FkLnN0YXRlLnZhbHVlKSkpIHtcclxuICAgICAgICAgICAgY29tcG9zZXIuZmFsbGJhY2tMb2NhbGUudmFsdWUgPSBwYXlsb2FkLnN0YXRlLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChmaWVsZCA9PT0gJ2luaGVyaXRMb2NhbGUnICYmIGlzQm9vbGVhbihwYXlsb2FkLnN0YXRlLnZhbHVlKSkge1xyXG4gICAgICAgICAgICBjb21wb3Nlci5pbmhlcml0TG9jYWxlID0gcGF5bG9hZC5zdGF0ZS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuLyoqXHJcbiAqIFN1cHBvcnRzIGNvbXBhdGliaWxpdHkgZm9yIGxlZ2FjeSB2dWUtaTE4biBBUElzXHJcbiAqIFRoaXMgbWl4aW4gaXMgdXNlZCB3aGVuIHdlIHVzZSB2dWUtaTE4bkB2OS54IG9yIGxhdGVyXHJcbiAqL1xyXG5mdW5jdGlvbiBkZWZpbmVNaXhpbih2dWVpMThuLCBjb21wb3NlciwgaTE4bikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBiZWZvcmVDcmVhdGUoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuVU5FWFBFQ1RFRF9FUlJPUik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmkxOG4pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNJMThuID0gb3B0aW9ucy5pMThuO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuX19pMThuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc0kxOG4uX19pMThuID0gb3B0aW9ucy5fX2kxOG47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zSTE4bi5fX3Jvb3QgPSBjb21wb3NlcjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzID09PSB0aGlzLiRyb290KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kaTE4biA9IG1lcmdlVG9Sb290KHZ1ZWkxOG4sIG9wdGlvbnNJMThuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNJMThuLl9faW5qZWN0V2l0aE9wdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kaTE4biA9IGNyZWF0ZVZ1ZUkxOG4ob3B0aW9uc0kxOG4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuX19pMThuKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcyA9PT0gdGhpcy4kcm9vdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGkxOG4gPSBtZXJnZVRvUm9vdCh2dWVpMThuLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGkxOG4gPSBjcmVhdGVWdWVJMThuKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX19pMThuOiBvcHRpb25zLl9faTE4bixcclxuICAgICAgICAgICAgICAgICAgICAgICAgX19pbmplY3RXaXRoT3B0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfX3Jvb3Q6IGNvbXBvc2VyXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXQgZ2xvYmFsXHJcbiAgICAgICAgICAgICAgICB0aGlzLiRpMThuID0gdnVlaTE4bjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5fX2kxOG5HbG9iYWwpIHtcclxuICAgICAgICAgICAgICAgIGFkanVzdEkxOG5SZXNvdXJjZXMoY29tcG9zZXIsIG9wdGlvbnMsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZ1ZWkxOG4uX19vbkNvbXBvbmVudEluc3RhbmNlQ3JlYXRlZCh0aGlzLiRpMThuKTtcclxuICAgICAgICAgICAgaTE4bi5fX3NldEluc3RhbmNlKGluc3RhbmNlLCB0aGlzLiRpMThuKTtcclxuICAgICAgICAgICAgLy8gZGVmaW5lcyB2dWUtaTE4biBsZWdhY3kgQVBJc1xyXG4gICAgICAgICAgICB0aGlzLiR0ID0gKC4uLmFyZ3MpID0+IHRoaXMuJGkxOG4udCguLi5hcmdzKTtcclxuICAgICAgICAgICAgdGhpcy4kcnQgPSAoLi4uYXJncykgPT4gdGhpcy4kaTE4bi5ydCguLi5hcmdzKTtcclxuICAgICAgICAgICAgdGhpcy4kdGMgPSAoLi4uYXJncykgPT4gdGhpcy4kaTE4bi50YyguLi5hcmdzKTtcclxuICAgICAgICAgICAgdGhpcy4kdGUgPSAoa2V5LCBsb2NhbGUpID0+IHRoaXMuJGkxOG4udGUoa2V5LCBsb2NhbGUpO1xyXG4gICAgICAgICAgICB0aGlzLiRkID0gKC4uLmFyZ3MpID0+IHRoaXMuJGkxOG4uZCguLi5hcmdzKTtcclxuICAgICAgICAgICAgdGhpcy4kbiA9ICguLi5hcmdzKSA9PiB0aGlzLiRpMThuLm4oLi4uYXJncyk7XHJcbiAgICAgICAgICAgIHRoaXMuJHRtID0gKGtleSkgPT4gdGhpcy4kaTE4bi50bShrZXkpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbW91bnRlZCgpIHtcclxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgICAgIGlmICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykgJiZcclxuICAgICAgICAgICAgICAgICFmYWxzZSAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy4kZWwgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuJGkxOG4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuJGVsLl9fVlVFX0kxOE5fXyA9IHRoaXMuJGkxOG4uX19jb21wb3NlcjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVtaXR0ZXIgPSAodGhpcy5fX3ZfZW1pdHRlciA9XHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRW1pdHRlcigpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IF92dWVJMThuID0gdGhpcy4kaTE4bjtcclxuICAgICAgICAgICAgICAgIF92dWVJMThuLl9fZW5hYmxlRW1pdHRlciAmJiBfdnVlSTE4bi5fX2VuYWJsZUVtaXR0ZXIoZW1pdHRlcik7XHJcbiAgICAgICAgICAgICAgICBlbWl0dGVyLm9uKCcqJywgYWRkVGltZWxpbmVFdmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHVubW91bnRlZCgpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZUkxOG5FcnJvcihJMThuRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0VSUk9SKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgICAgICAgICAgaWYgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSAmJlxyXG4gICAgICAgICAgICAgICAgIWZhbHNlICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLiRlbCAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy4kZWwuX19WVUVfSTE4Tl9fKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX3ZfZW1pdHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX192X2VtaXR0ZXIub2ZmKCcqJywgYWRkVGltZWxpbmVFdmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX192X2VtaXR0ZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4kaTE4bikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IF92dWVJMThuID0gdGhpcy4kaTE4bjtcclxuICAgICAgICAgICAgICAgICAgICBfdnVlSTE4bi5fX2Rpc2FibGVFbWl0dGVyICYmIF92dWVJMThuLl9fZGlzYWJsZUVtaXR0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy4kZWwuX19WVUVfSTE4Tl9fO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLiR0O1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy4kcnQ7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLiR0YztcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuJHRlO1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy4kZDtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuJG47XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLiR0bTtcclxuICAgICAgICAgICAgaTE4bi5fX2RlbGV0ZUluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuJGkxOG47XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZVRvUm9vdChyb290LCBvcHRpb25zKSB7XHJcbiAgICByb290LmxvY2FsZSA9IG9wdGlvbnMubG9jYWxlIHx8IHJvb3QubG9jYWxlO1xyXG4gICAgcm9vdC5mYWxsYmFja0xvY2FsZSA9IG9wdGlvbnMuZmFsbGJhY2tMb2NhbGUgfHwgcm9vdC5mYWxsYmFja0xvY2FsZTtcclxuICAgIHJvb3QubWlzc2luZyA9IG9wdGlvbnMubWlzc2luZyB8fCByb290Lm1pc3Npbmc7XHJcbiAgICByb290LnNpbGVudFRyYW5zbGF0aW9uV2FybiA9XHJcbiAgICAgICAgb3B0aW9ucy5zaWxlbnRUcmFuc2xhdGlvbldhcm4gfHwgcm9vdC5zaWxlbnRGYWxsYmFja1dhcm47XHJcbiAgICByb290LnNpbGVudEZhbGxiYWNrV2FybiA9XHJcbiAgICAgICAgb3B0aW9ucy5zaWxlbnRGYWxsYmFja1dhcm4gfHwgcm9vdC5zaWxlbnRGYWxsYmFja1dhcm47XHJcbiAgICByb290LmZvcm1hdEZhbGxiYWNrTWVzc2FnZXMgPVxyXG4gICAgICAgIG9wdGlvbnMuZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyB8fCByb290LmZvcm1hdEZhbGxiYWNrTWVzc2FnZXM7XHJcbiAgICByb290LnBvc3RUcmFuc2xhdGlvbiA9IG9wdGlvbnMucG9zdFRyYW5zbGF0aW9uIHx8IHJvb3QucG9zdFRyYW5zbGF0aW9uO1xyXG4gICAgcm9vdC53YXJuSHRtbEluTWVzc2FnZSA9IG9wdGlvbnMud2Fybkh0bWxJbk1lc3NhZ2UgfHwgcm9vdC53YXJuSHRtbEluTWVzc2FnZTtcclxuICAgIHJvb3QuZXNjYXBlUGFyYW1ldGVySHRtbCA9XHJcbiAgICAgICAgb3B0aW9ucy5lc2NhcGVQYXJhbWV0ZXJIdG1sIHx8IHJvb3QuZXNjYXBlUGFyYW1ldGVySHRtbDtcclxuICAgIHJvb3Quc3luYyA9IG9wdGlvbnMuc3luYyB8fCByb290LnN5bmM7XHJcbiAgICByb290Ll9fY29tcG9zZXJbU2V0UGx1cmFsUnVsZXNTeW1ib2xdKG9wdGlvbnMucGx1cmFsaXphdGlvblJ1bGVzIHx8IHJvb3QucGx1cmFsaXphdGlvblJ1bGVzKTtcclxuICAgIGNvbnN0IG1lc3NhZ2VzID0gZ2V0TG9jYWxlTWVzc2FnZXMocm9vdC5sb2NhbGUsIHtcclxuICAgICAgICBtZXNzYWdlczogb3B0aW9ucy5tZXNzYWdlcyxcclxuICAgICAgICBfX2kxOG46IG9wdGlvbnMuX19pMThuXHJcbiAgICB9KTtcclxuICAgIE9iamVjdC5rZXlzKG1lc3NhZ2VzKS5mb3JFYWNoKGxvY2FsZSA9PiByb290Lm1lcmdlTG9jYWxlTWVzc2FnZShsb2NhbGUsIG1lc3NhZ2VzW2xvY2FsZV0pKTtcclxuICAgIGlmIChvcHRpb25zLmRhdGV0aW1lRm9ybWF0cykge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMuZGF0ZXRpbWVGb3JtYXRzKS5mb3JFYWNoKGxvY2FsZSA9PiByb290Lm1lcmdlRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBvcHRpb25zLmRhdGV0aW1lRm9ybWF0c1tsb2NhbGVdKSk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5udW1iZXJGb3JtYXRzKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucy5udW1iZXJGb3JtYXRzKS5mb3JFYWNoKGxvY2FsZSA9PiByb290Lm1lcmdlTnVtYmVyRm9ybWF0KGxvY2FsZSwgb3B0aW9ucy5udW1iZXJGb3JtYXRzW2xvY2FsZV0pKTtcclxuICAgIH1cclxuICAgIHJldHVybiByb290O1xyXG59XG5cbi8qKlxyXG4gKiBJbmplY3Rpb24ga2V5IGZvciB7QGxpbmsgdXNlSTE4bn1cclxuICpcclxuICogQHJlbWFya3NcclxuICogVGhlIGdsb2JhbCBpbmplY3Rpb24ga2V5IGZvciBJMThuIGluc3RhbmNlcyB3aXRoIGB1c2VJMThuYC4gdGhpcyBpbmplY3Rpb24ga2V5IGlzIHVzZWQgaW4gV2ViIENvbXBvbmVudHMuXHJcbiAqIFNwZWNpZnkgdGhlIGkxOG4gaW5zdGFuY2UgY3JlYXRlZCBieSB7QGxpbmsgY3JlYXRlSTE4bn0gdG9nZXRoZXIgd2l0aCBgcHJvdmlkZWAgZnVuY3Rpb24uXHJcbiAqXHJcbiAqIEBWdWVJMThuR2VuZXJhbFxyXG4gKi9cclxuY29uc3QgSTE4bkluamVjdGlvbktleSA9IFxyXG4vKiAjX19QVVJFX18qLyBtYWtlU3ltYm9sKCdnbG9iYWwtdnVlLWkxOG4nKTtcclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcclxuZnVuY3Rpb24gY3JlYXRlSTE4bihvcHRpb25zID0ge30sIFZ1ZUkxOG5MZWdhY3kpIHtcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgY29uc3QgX19sZWdhY3lNb2RlID0gX19WVUVfSTE4Tl9MRUdBQ1lfQVBJX18gJiYgaXNCb29sZWFuKG9wdGlvbnMubGVnYWN5KVxyXG4gICAgICAgICAgICA/IG9wdGlvbnMubGVnYWN5XHJcbiAgICAgICAgICAgIDogX19WVUVfSTE4Tl9MRUdBQ1lfQVBJX187XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IF9fZ2xvYmFsSW5qZWN0aW9uID0gaXNCb29sZWFuKG9wdGlvbnMuZ2xvYmFsSW5qZWN0aW9uKVxyXG4gICAgICAgID8gb3B0aW9ucy5nbG9iYWxJbmplY3Rpb25cclxuICAgICAgICA6IHRydWU7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IF9fYWxsb3dDb21wb3NpdGlvbiA9IF9fVlVFX0kxOE5fTEVHQUNZX0FQSV9fICYmIF9fbGVnYWN5TW9kZVxyXG4gICAgICAgICAgICA/ICEhb3B0aW9ucy5hbGxvd0NvbXBvc2l0aW9uXHJcbiAgICAgICAgICAgIDogdHJ1ZTtcclxuICAgIGNvbnN0IF9faW5zdGFuY2VzID0gbmV3IE1hcCgpO1xyXG4gICAgY29uc3QgX19nbG9iYWwgPSBjcmVhdGVHbG9iYWwob3B0aW9ucywgX19sZWdhY3lNb2RlKTtcclxuICAgIGNvbnN0IHN5bWJvbCA9IG1ha2VTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ3Z1ZS1pMThuJyA6ICcnKTtcclxuICAgIGZ1bmN0aW9uIF9fZ2V0SW5zdGFuY2UoY29tcG9uZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIF9faW5zdGFuY2VzLmdldChjb21wb25lbnQpIHx8IG51bGw7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfX3NldEluc3RhbmNlKGNvbXBvbmVudCwgaW5zdGFuY2UpIHtcclxuICAgICAgICBfX2luc3RhbmNlcy5zZXQoY29tcG9uZW50LCBpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfX2RlbGV0ZUluc3RhbmNlKGNvbXBvbmVudCkge1xyXG4gICAgICAgIF9faW5zdGFuY2VzLmRlbGV0ZShjb21wb25lbnQpO1xyXG4gICAgfVxyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IGkxOG4gPSB7XHJcbiAgICAgICAgICAgIC8vIG1vZGVcclxuICAgICAgICAgICAgZ2V0IG1vZGUoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX19WVUVfSTE4Tl9MRUdBQ1lfQVBJX18gJiYgX19sZWdhY3lNb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnbGVnYWN5J1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ2NvbXBvc2l0aW9uJztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gYWxsb3dDb21wb3NpdGlvblxyXG4gICAgICAgICAgICBnZXQgYWxsb3dDb21wb3NpdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBfX2FsbG93Q29tcG9zaXRpb247XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGluc3RhbGwgcGx1Z2luXHJcbiAgICAgICAgICAgIGFzeW5jIGluc3RhbGwoYXBwLCAuLi5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwLl9fVlVFX0kxOE5fXyA9IGkxOG47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBzZXR1cCBnbG9iYWwgcHJvdmlkZXJcclxuICAgICAgICAgICAgICAgIGFwcC5fX1ZVRV9JMThOX1NZTUJPTF9fID0gc3ltYm9sO1xyXG4gICAgICAgICAgICAgICAgYXBwLnByb3ZpZGUoYXBwLl9fVlVFX0kxOE5fU1lNQk9MX18sIGkxOG4pO1xyXG4gICAgICAgICAgICAgICAgLy8gZ2xvYmFsIG1ldGhvZCBhbmQgcHJvcGVydGllcyBpbmplY3Rpb24gZm9yIENvbXBvc2l0aW9uIEFQSVxyXG4gICAgICAgICAgICAgICAgaWYgKCFfX2xlZ2FjeU1vZGUgJiYgX19nbG9iYWxJbmplY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBpbmplY3RHbG9iYWxGaWVsZHMoYXBwLCBpMThuLmdsb2JhbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBpbnN0YWxsIGJ1aWx0LWluIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZVxyXG4gICAgICAgICAgICAgICAgaWYgKF9fVlVFX0kxOE5fRlVMTF9JTlNUQUxMX18pIHtcclxuICAgICAgICAgICAgICAgICAgICBhcHBseShhcHAsIGkxOG4sIC4uLm9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gc2V0dXAgbWl4aW4gZm9yIExlZ2FjeSBBUElcclxuICAgICAgICAgICAgICAgIGlmIChfX1ZVRV9JMThOX0xFR0FDWV9BUElfXyAmJiBfX2xlZ2FjeU1vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcHAubWl4aW4oZGVmaW5lTWl4aW4oX19nbG9iYWwsIF9fZ2xvYmFsLl9fY29tcG9zZXIsIGkxOG4pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHNldHVwIHZ1ZS1kZXZ0b29scyBwbHVnaW5cclxuICAgICAgICAgICAgICAgIGlmICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykgJiYgIWZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV0ID0gYXdhaXQgZW5hYmxlRGV2VG9vbHMoYXBwLCBpMThuKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuQ0FOTk9UX1NFVFVQX1ZVRV9ERVZUT09MU19QTFVHSU4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbWl0dGVyID0gY3JlYXRlRW1pdHRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfX2xlZ2FjeU1vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX3Z1ZUkxOG4gPSBfX2dsb2JhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Z1ZUkxOG4uX19lbmFibGVFbWl0dGVyICYmIF92dWVJMThuLl9fZW5hYmxlRW1pdHRlcihlbWl0dGVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9jb21wb3NlciA9IF9fZ2xvYmFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfY29tcG9zZXJbRW5hYmxlRW1pdHRlcl0gJiYgX2NvbXBvc2VyW0VuYWJsZUVtaXR0ZXJdKGVtaXR0ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLm9uKCcqJywgYWRkVGltZWxpbmVFdmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGdsb2JhbCBhY2Nlc3NvclxyXG4gICAgICAgICAgICBnZXQgZ2xvYmFsKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2xvYmFsO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBAaW50ZXJuYWxcclxuICAgICAgICAgICAgX19pbnN0YW5jZXMsXHJcbiAgICAgICAgICAgIC8vIEBpbnRlcm5hbFxyXG4gICAgICAgICAgICBfX2dldEluc3RhbmNlLFxyXG4gICAgICAgICAgICAvLyBAaW50ZXJuYWxcclxuICAgICAgICAgICAgX19zZXRJbnN0YW5jZSxcclxuICAgICAgICAgICAgLy8gQGludGVybmFsXHJcbiAgICAgICAgICAgIF9fZGVsZXRlSW5zdGFuY2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBpMThuO1xyXG4gICAgfVxyXG59XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXHJcbmZ1bmN0aW9uIHVzZUkxOG4ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgaWYgKGluc3RhbmNlID09IG51bGwpIHtcclxuICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuTVVTVF9CRV9DQUxMX1NFVFVQX1RPUCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWluc3RhbmNlLmlzQ0UgJiZcclxuICAgICAgICBpbnN0YW5jZS5hcHBDb250ZXh0LmFwcCAhPSBudWxsICYmXHJcbiAgICAgICAgIWluc3RhbmNlLmFwcENvbnRleHQuYXBwLl9fVlVFX0kxOE5fU1lNQk9MX18pIHtcclxuICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuTk9UX0lOU0xBTExFRCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpMThuID0gZ2V0STE4bkluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgIGNvbnN0IGdsb2JhbCA9IGdldEdsb2JhbENvbXBvc2VyKGkxOG4pO1xyXG4gICAgY29uc3QgY29tcG9uZW50T3B0aW9ucyA9IGdldENvbXBvbmVudE9wdGlvbnMoaW5zdGFuY2UpO1xyXG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZShvcHRpb25zLCBjb21wb25lbnRPcHRpb25zKTtcclxuICAgIGlmIChfX1ZVRV9JMThOX0xFR0FDWV9BUElfXykge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgaWYgKGkxOG4ubW9kZSA9PT0gJ2xlZ2FjeScgJiYgIW9wdGlvbnMuX191c2VDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgaWYgKCFpMThuLmFsbG93Q29tcG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZUkxOG5FcnJvcihJMThuRXJyb3JDb2Rlcy5OT1RfQVZBSUxBQkxFX0lOX0xFR0FDWV9NT0RFKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdXNlSTE4bkZvckxlZ2FjeShpbnN0YW5jZSwgc2NvcGUsIGdsb2JhbCwgb3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHNjb3BlID09PSAnZ2xvYmFsJykge1xyXG4gICAgICAgIGFkanVzdEkxOG5SZXNvdXJjZXMoZ2xvYmFsLCBvcHRpb25zLCBjb21wb25lbnRPcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gZ2xvYmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHNjb3BlID09PSAncGFyZW50Jykge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgbGV0IGNvbXBvc2VyID0gZ2V0Q29tcG9zZXIoaTE4biwgaW5zdGFuY2UsIG9wdGlvbnMuX191c2VDb21wb25lbnQpO1xyXG4gICAgICAgIGlmIChjb21wb3NlciA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oZ2V0V2Fybk1lc3NhZ2UoSTE4bldhcm5Db2Rlcy5OT1RfRk9VTkRfUEFSRU5UX1NDT1BFKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZXIgPSBnbG9iYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb21wb3NlcjtcclxuICAgIH1cclxuICAgIGNvbnN0IGkxOG5JbnRlcm5hbCA9IGkxOG47XHJcbiAgICBsZXQgY29tcG9zZXIgPSBpMThuSW50ZXJuYWwuX19nZXRJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICBpZiAoY29tcG9zZXIgPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvc2VyT3B0aW9ucyA9IGFzc2lnbih7fSwgb3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKCdfX2kxOG4nIGluIGNvbXBvbmVudE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgY29tcG9zZXJPcHRpb25zLl9faTE4biA9IGNvbXBvbmVudE9wdGlvbnMuX19pMThuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZ2xvYmFsKSB7XHJcbiAgICAgICAgICAgIGNvbXBvc2VyT3B0aW9ucy5fX3Jvb3QgPSBnbG9iYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbXBvc2VyID0gY3JlYXRlQ29tcG9zZXIoY29tcG9zZXJPcHRpb25zKTtcclxuICAgICAgICBzZXR1cExpZmVDeWNsZShpMThuSW50ZXJuYWwsIGluc3RhbmNlLCBjb21wb3Nlcik7XHJcbiAgICAgICAgaTE4bkludGVybmFsLl9fc2V0SW5zdGFuY2UoaW5zdGFuY2UsIGNvbXBvc2VyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb21wb3NlcjtcclxufVxyXG4vKipcclxuICogQ2FzdCB0byBWdWVJMThuIGxlZ2FjeSBjb21wYXRpYmxlIHR5cGVcclxuICpcclxuICogQHJlbWFya3NcclxuICogVGhpcyBBUEkgaXMgcHJvdmlkZWQgb25seSB3aXRoIFt2dWUtaTE4bi1icmlkZ2VdKGh0dHBzOi8vdnVlLWkxOG4uaW50bGlmeS5kZXYvZ3VpZGUvbWlncmF0aW9uL3dheXMuaHRtbCN3aGF0LWlzLXZ1ZS1pMThuLWJyaWRnZSkuXHJcbiAqXHJcbiAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gY29udmVydCBhbiB7QGxpbmsgSTE4bn0gaW5zdGFuY2UgY3JlYXRlZCB3aXRoIHtAbGluayBjcmVhdGVJMThuIHwgY3JlYXRlSTE4bihsZWdhY3k6IHRydWUpfSBpbnRvIGEgYHZ1ZS1pMThuQHY4LnhgIGNvbXBhdGlibGUgaW5zdGFuY2Ugb2YgYG5ldyBWdWVJMThuYCBpbiBhIFR5cGVTY3JpcHQgZW52aXJvbm1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSBpMThuIC0gQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIEkxOG59XHJcbiAqIEByZXR1cm5zIEEgaTE4biBpbnN0YW5jZSB3aGljaCBpcyBjYXN0ZWQgdG8ge0BsaW5rIFZ1ZUkxOG59IHR5cGVcclxuICpcclxuICogQFZ1ZUkxOG5UaXBcclxuICogOm5ldzogcHJvdmlkZWQgYnkgKip2dWUtaTE4bi1icmlkZ2Ugb25seSoqXHJcbiAqXHJcbiAqIEBWdWVJMThuR2VuZXJhbFxyXG4gKi9cclxuY29uc3QgY2FzdFRvVnVlSTE4biA9ICAoaTE4blxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4pID0+IHtcclxuICAgIGlmICghKF9fVlVFX0kxOE5fQlJJREdFX18gaW4gaTE4bikpIHtcclxuICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuTk9UX0NPTVBBVElCTEVfTEVHQUNZX1ZVRV9JMThOKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpMThuO1xyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVHbG9iYWwob3B0aW9ucywgbGVnYWN5TW9kZSwgVnVlSTE4bkxlZ2FjeSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuKSB7XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIF9fVlVFX0kxOE5fTEVHQUNZX0FQSV9fICYmIGxlZ2FjeU1vZGVcclxuICAgICAgICAgICAgPyBjcmVhdGVWdWVJMThuKG9wdGlvbnMpXHJcbiAgICAgICAgICAgIDogY3JlYXRlQ29tcG9zZXIob3B0aW9ucyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0STE4bkluc3RhbmNlKGluc3RhbmNlKSB7XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgaTE4biA9IGluamVjdCghaW5zdGFuY2UuaXNDRVxyXG4gICAgICAgICAgICA/IGluc3RhbmNlLmFwcENvbnRleHQuYXBwLl9fVlVFX0kxOE5fU1lNQk9MX19cclxuICAgICAgICAgICAgOiBJMThuSW5qZWN0aW9uS2V5KTtcclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgICAgICBpZiAoIWkxOG4pIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlSTE4bkVycm9yKCFpbnN0YW5jZS5pc0NFXHJcbiAgICAgICAgICAgICAgICA/IEkxOG5FcnJvckNvZGVzLlVORVhQRUNURURfRVJST1JcclxuICAgICAgICAgICAgICAgIDogSTE4bkVycm9yQ29kZXMuTk9UX0lOU0xBTExFRF9XSVRIX1BST1ZJREUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaTE4bjtcclxuICAgIH1cclxufVxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG5mdW5jdGlvbiBnZXRTY29wZShvcHRpb25zLCBjb21wb25lbnRPcHRpb25zKSB7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIHJldHVybiBpc0VtcHR5T2JqZWN0KG9wdGlvbnMpXHJcbiAgICAgICAgPyAoJ19faTE4bicgaW4gY29tcG9uZW50T3B0aW9ucylcclxuICAgICAgICAgICAgPyAnbG9jYWwnXHJcbiAgICAgICAgICAgIDogJ2dsb2JhbCdcclxuICAgICAgICA6ICFvcHRpb25zLnVzZVNjb3BlXHJcbiAgICAgICAgICAgID8gJ2xvY2FsJ1xyXG4gICAgICAgICAgICA6IG9wdGlvbnMudXNlU2NvcGU7XHJcbn1cclxuZnVuY3Rpb24gZ2V0R2xvYmFsQ29tcG9zZXIoaTE4bikge1xyXG4gICAgLy8gcHJldHRpZXItaWdub3JlXHJcbiAgICByZXR1cm4gaTE4bi5tb2RlID09PSAnY29tcG9zaXRpb24nXHJcbiAgICAgICAgICAgID8gaTE4bi5nbG9iYWxcclxuICAgICAgICAgICAgOiBpMThuLmdsb2JhbC5fX2NvbXBvc2VyXHJcbiAgICAgICAgO1xyXG59XHJcbmZ1bmN0aW9uIGdldENvbXBvc2VyKGkxOG4sIHRhcmdldCwgdXNlQ29tcG9uZW50ID0gZmFsc2UpIHtcclxuICAgIGxldCBjb21wb3NlciA9IG51bGw7XHJcbiAgICBjb25zdCByb290ID0gdGFyZ2V0LnJvb3Q7XHJcbiAgICBsZXQgY3VycmVudCA9IHRhcmdldC5wYXJlbnQ7XHJcbiAgICB3aGlsZSAoY3VycmVudCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgaTE4bkludGVybmFsID0gaTE4bjtcclxuICAgICAgICBpZiAoaTE4bi5tb2RlID09PSAnY29tcG9zaXRpb24nKSB7XHJcbiAgICAgICAgICAgIGNvbXBvc2VyID0gaTE4bkludGVybmFsLl9fZ2V0SW5zdGFuY2UoY3VycmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoX19WVUVfSTE4Tl9MRUdBQ1lfQVBJX18pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZ1ZUkxOG4gPSBpMThuSW50ZXJuYWwuX19nZXRJbnN0YW5jZShjdXJyZW50KTtcclxuICAgICAgICAgICAgICAgIGlmICh2dWVJMThuICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wb3NlciA9IHZ1ZUkxOG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLl9fY29tcG9zZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZUNvbXBvbmVudCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlciAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhY29tcG9zZXJbSW5lamN0V2l0aE9wdGlvbl0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2VyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXBvc2VyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb290ID09PSBjdXJyZW50KSB7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29tcG9zZXI7XHJcbn1cclxuZnVuY3Rpb24gc2V0dXBMaWZlQ3ljbGUoaTE4biwgdGFyZ2V0LCBjb21wb3Nlcikge1xyXG4gICAgbGV0IGVtaXR0ZXIgPSBudWxsO1xyXG4gICAge1xyXG4gICAgICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGluamVjdCBjb21wb3NlciBpbnN0YW5jZSB0byBET00gZm9yIGludGxpZnktZGV2dG9vbHNcclxuICAgICAgICAgICAgaWYgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSAmJlxyXG4gICAgICAgICAgICAgICAgIWZhbHNlICYmXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQudm5vZGUuZWwpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC52bm9kZS5lbC5fX1ZVRV9JMThOX18gPSBjb21wb3NlcjtcclxuICAgICAgICAgICAgICAgIGVtaXR0ZXIgPSBjcmVhdGVFbWl0dGVyKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgICAgICAgY29uc3QgX2NvbXBvc2VyID0gY29tcG9zZXI7XHJcbiAgICAgICAgICAgICAgICBfY29tcG9zZXJbRW5hYmxlRW1pdHRlcl0gJiYgX2NvbXBvc2VyW0VuYWJsZUVtaXR0ZXJdKGVtaXR0ZXIpO1xyXG4gICAgICAgICAgICAgICAgZW1pdHRlci5vbignKicsIGFkZFRpbWVsaW5lRXZlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgdGFyZ2V0KTtcclxuICAgICAgICBvblVubW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBjb21wb3NlciBpbnN0YW5jZSBmcm9tIERPTSBmb3IgaW50bGlmeS1kZXZ0b29sc1xyXG4gICAgICAgICAgICBpZiAoKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pICYmXHJcbiAgICAgICAgICAgICAgICAhZmFsc2UgJiZcclxuICAgICAgICAgICAgICAgIHRhcmdldC52bm9kZS5lbCAmJlxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnZub2RlLmVsLl9fVlVFX0kxOE5fXykge1xyXG4gICAgICAgICAgICAgICAgZW1pdHRlciAmJiBlbWl0dGVyLm9mZignKicsIGFkZFRpbWVsaW5lRXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgICAgICAgIGNvbnN0IF9jb21wb3NlciA9IGNvbXBvc2VyO1xyXG4gICAgICAgICAgICAgICAgX2NvbXBvc2VyW0Rpc2FibGVFbWl0dGVyXSAmJiBfY29tcG9zZXJbRGlzYWJsZUVtaXR0ZXJdKCk7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0LnZub2RlLmVsLl9fVlVFX0kxOE5fXztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpMThuLl9fZGVsZXRlSW5zdGFuY2UodGFyZ2V0KTtcclxuICAgICAgICB9LCB0YXJnZXQpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHVzZUkxOG5Gb3JMZWdhY3koaW5zdGFuY2UsIHNjb3BlLCByb290LCBvcHRpb25zID0ge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbikge1xyXG4gICAgY29uc3QgaXNMb2NhbGUgPSBzY29wZSA9PT0gJ2xvY2FsJztcclxuICAgIGNvbnN0IF9jb21wb3NlciA9IHNoYWxsb3dSZWYobnVsbCk7XHJcbiAgICBpZiAoaXNMb2NhbGUgJiYgaW5zdGFuY2UucHJveHkgJiYgIWluc3RhbmNlLnByb3h5LiRvcHRpb25zLmkxOG4pIHtcclxuICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuTVVTVF9ERUZJTkVfSTE4Tl9PUFRJT05fSU5fQUxMT1dfQ09NUE9TSVRJT04pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgX2luaGVyaXRMb2NhbGUgPSBpc0Jvb2xlYW4ob3B0aW9ucy5pbmhlcml0TG9jYWxlKVxyXG4gICAgICAgID8gb3B0aW9ucy5pbmhlcml0TG9jYWxlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgY29uc3QgX2xvY2FsZSA9IHJlZihcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgaXNMb2NhbGUgJiYgX2luaGVyaXRMb2NhbGVcclxuICAgICAgICA/IHJvb3QubG9jYWxlLnZhbHVlXHJcbiAgICAgICAgOiBpc1N0cmluZyhvcHRpb25zLmxvY2FsZSlcclxuICAgICAgICAgICAgPyBvcHRpb25zLmxvY2FsZVxyXG4gICAgICAgICAgICA6IERFRkFVTFRfTE9DQUxFKTtcclxuICAgIGNvbnN0IF9mYWxsYmFja0xvY2FsZSA9IHJlZihcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgaXNMb2NhbGUgJiYgX2luaGVyaXRMb2NhbGVcclxuICAgICAgICA/IHJvb3QuZmFsbGJhY2tMb2NhbGUudmFsdWVcclxuICAgICAgICA6IGlzU3RyaW5nKG9wdGlvbnMuZmFsbGJhY2tMb2NhbGUpIHx8XHJcbiAgICAgICAgICAgIGlzQXJyYXkob3B0aW9ucy5mYWxsYmFja0xvY2FsZSkgfHxcclxuICAgICAgICAgICAgaXNQbGFpbk9iamVjdChvcHRpb25zLmZhbGxiYWNrTG9jYWxlKSB8fFxyXG4gICAgICAgICAgICBvcHRpb25zLmZhbGxiYWNrTG9jYWxlID09PSBmYWxzZVxyXG4gICAgICAgICAgICA/IG9wdGlvbnMuZmFsbGJhY2tMb2NhbGVcclxuICAgICAgICAgICAgOiBfbG9jYWxlLnZhbHVlKTtcclxuICAgIGNvbnN0IF9tZXNzYWdlcyA9IHJlZihnZXRMb2NhbGVNZXNzYWdlcyhfbG9jYWxlLnZhbHVlLCBvcHRpb25zKSk7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IF9kYXRldGltZUZvcm1hdHMgPSByZWYoaXNQbGFpbk9iamVjdChvcHRpb25zLmRhdGV0aW1lRm9ybWF0cylcclxuICAgICAgICA/IG9wdGlvbnMuZGF0ZXRpbWVGb3JtYXRzXHJcbiAgICAgICAgOiB7IFtfbG9jYWxlLnZhbHVlXToge30gfSk7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IF9udW1iZXJGb3JtYXRzID0gcmVmKGlzUGxhaW5PYmplY3Qob3B0aW9ucy5udW1iZXJGb3JtYXRzKVxyXG4gICAgICAgID8gb3B0aW9ucy5udW1iZXJGb3JtYXRzXHJcbiAgICAgICAgOiB7IFtfbG9jYWxlLnZhbHVlXToge30gfSk7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IF9taXNzaW5nV2FybiA9IGlzTG9jYWxlXHJcbiAgICAgICAgPyByb290Lm1pc3NpbmdXYXJuXHJcbiAgICAgICAgOiBpc0Jvb2xlYW4ob3B0aW9ucy5taXNzaW5nV2FybikgfHwgaXNSZWdFeHAob3B0aW9ucy5taXNzaW5nV2FybilcclxuICAgICAgICAgICAgPyBvcHRpb25zLm1pc3NpbmdXYXJuXHJcbiAgICAgICAgICAgIDogdHJ1ZTtcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgY29uc3QgX2ZhbGxiYWNrV2FybiA9IGlzTG9jYWxlXHJcbiAgICAgICAgPyByb290LmZhbGxiYWNrV2FyblxyXG4gICAgICAgIDogaXNCb29sZWFuKG9wdGlvbnMuZmFsbGJhY2tXYXJuKSB8fCBpc1JlZ0V4cChvcHRpb25zLmZhbGxiYWNrV2FybilcclxuICAgICAgICAgICAgPyBvcHRpb25zLmZhbGxiYWNrV2FyblxyXG4gICAgICAgICAgICA6IHRydWU7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IF9mYWxsYmFja1Jvb3QgPSBpc0xvY2FsZVxyXG4gICAgICAgID8gcm9vdC5mYWxsYmFja1Jvb3RcclxuICAgICAgICA6IGlzQm9vbGVhbihvcHRpb25zLmZhbGxiYWNrUm9vdClcclxuICAgICAgICAgICAgPyBvcHRpb25zLmZhbGxiYWNrUm9vdFxyXG4gICAgICAgICAgICA6IHRydWU7XHJcbiAgICAvLyBjb25maWd1cmUgZmFsbCBiYWNrIHRvIHJvb3RcclxuICAgIGNvbnN0IF9mYWxsYmFja0Zvcm1hdCA9ICEhb3B0aW9ucy5mYWxsYmFja0Zvcm1hdDtcclxuICAgIC8vIHJ1bnRpbWUgbWlzc2luZ1xyXG4gICAgY29uc3QgX21pc3NpbmcgPSBpc0Z1bmN0aW9uKG9wdGlvbnMubWlzc2luZykgPyBvcHRpb25zLm1pc3NpbmcgOiBudWxsO1xyXG4gICAgLy8gcG9zdFRyYW5zbGF0aW9uIGhhbmRsZXJcclxuICAgIGNvbnN0IF9wb3N0VHJhbnNsYXRpb24gPSBpc0Z1bmN0aW9uKG9wdGlvbnMucG9zdFRyYW5zbGF0aW9uKVxyXG4gICAgICAgID8gb3B0aW9ucy5wb3N0VHJhbnNsYXRpb25cclxuICAgICAgICA6IG51bGw7XHJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcclxuICAgIGNvbnN0IF93YXJuSHRtbE1lc3NhZ2UgPSBpc0xvY2FsZVxyXG4gICAgICAgID8gcm9vdC53YXJuSHRtbE1lc3NhZ2VcclxuICAgICAgICA6IGlzQm9vbGVhbihvcHRpb25zLndhcm5IdG1sTWVzc2FnZSlcclxuICAgICAgICAgICAgPyBvcHRpb25zLndhcm5IdG1sTWVzc2FnZVxyXG4gICAgICAgICAgICA6IHRydWU7XHJcbiAgICBjb25zdCBfZXNjYXBlUGFyYW1ldGVyID0gISFvcHRpb25zLmVzY2FwZVBhcmFtZXRlcjtcclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxyXG4gICAgY29uc3QgX21vZGlmaWVycyA9IGlzTG9jYWxlXHJcbiAgICAgICAgPyByb290Lm1vZGlmaWVyc1xyXG4gICAgICAgIDogaXNQbGFpbk9iamVjdChvcHRpb25zLm1vZGlmaWVycylcclxuICAgICAgICAgICAgPyBvcHRpb25zLm1vZGlmaWVyc1xyXG4gICAgICAgICAgICA6IHt9O1xyXG4gICAgLy8gcGx1cmFsUnVsZXNcclxuICAgIGNvbnN0IF9wbHVyYWxSdWxlcyA9IG9wdGlvbnMucGx1cmFsUnVsZXMgfHwgKGlzTG9jYWxlICYmIHJvb3QucGx1cmFsUnVsZXMpO1xyXG4gICAgLy8gdHJhY2sgcmVhY3Rpdml0eVxyXG4gICAgZnVuY3Rpb24gdHJhY2tSZWFjdGl2aXR5VmFsdWVzKCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIF9sb2NhbGUudmFsdWUsXHJcbiAgICAgICAgICAgIF9mYWxsYmFja0xvY2FsZS52YWx1ZSxcclxuICAgICAgICAgICAgX21lc3NhZ2VzLnZhbHVlLFxyXG4gICAgICAgICAgICBfZGF0ZXRpbWVGb3JtYXRzLnZhbHVlLFxyXG4gICAgICAgICAgICBfbnVtYmVyRm9ybWF0cy52YWx1ZVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcbiAgICAvLyBsb2NhbGVcclxuICAgIGNvbnN0IGxvY2FsZSA9IGNvbXB1dGVkKHtcclxuICAgICAgICBnZXQ6ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIF9jb21wb3Nlci52YWx1ZSA/IF9jb21wb3Nlci52YWx1ZS5sb2NhbGUudmFsdWUgOiBfbG9jYWxlLnZhbHVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0OiB2YWwgPT4ge1xyXG4gICAgICAgICAgICBpZiAoX2NvbXBvc2VyLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBfY29tcG9zZXIudmFsdWUubG9jYWxlLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9sb2NhbGUudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBmYWxsYmFja0xvY2FsZVxyXG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPSBjb21wdXRlZCh7XHJcbiAgICAgICAgZ2V0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWVcclxuICAgICAgICAgICAgICAgID8gX2NvbXBvc2VyLnZhbHVlLmZhbGxiYWNrTG9jYWxlLnZhbHVlXHJcbiAgICAgICAgICAgICAgICA6IF9mYWxsYmFja0xvY2FsZS52YWx1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldDogdmFsID0+IHtcclxuICAgICAgICAgICAgaWYgKF9jb21wb3Nlci52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgX2NvbXBvc2VyLnZhbHVlLmZhbGxiYWNrTG9jYWxlLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9mYWxsYmFja0xvY2FsZS52YWx1ZSA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIG1lc3NhZ2VzXHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBpZiAoX2NvbXBvc2VyLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWUubWVzc2FnZXMudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgICByZXR1cm4gX21lc3NhZ2VzLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgZGF0ZXRpbWVGb3JtYXRzID0gY29tcHV0ZWQoKCkgPT4gX2RhdGV0aW1lRm9ybWF0cy52YWx1ZSk7XHJcbiAgICBjb25zdCBudW1iZXJGb3JtYXRzID0gY29tcHV0ZWQoKCkgPT4gX251bWJlckZvcm1hdHMudmFsdWUpO1xyXG4gICAgZnVuY3Rpb24gZ2V0UG9zdFRyYW5zbGF0aW9uSGFuZGxlcigpIHtcclxuICAgICAgICByZXR1cm4gX2NvbXBvc2VyLnZhbHVlXHJcbiAgICAgICAgICAgID8gX2NvbXBvc2VyLnZhbHVlLmdldFBvc3RUcmFuc2xhdGlvbkhhbmRsZXIoKVxyXG4gICAgICAgICAgICA6IF9wb3N0VHJhbnNsYXRpb247XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzZXRQb3N0VHJhbnNsYXRpb25IYW5kbGVyKGhhbmRsZXIpIHtcclxuICAgICAgICBpZiAoX2NvbXBvc2VyLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIF9jb21wb3Nlci52YWx1ZS5zZXRQb3N0VHJhbnNsYXRpb25IYW5kbGVyKGhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdldE1pc3NpbmdIYW5kbGVyKCkge1xyXG4gICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWUgPyBfY29tcG9zZXIudmFsdWUuZ2V0TWlzc2luZ0hhbmRsZXIoKSA6IF9taXNzaW5nO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2V0TWlzc2luZ0hhbmRsZXIoaGFuZGxlcikge1xyXG4gICAgICAgIGlmIChfY29tcG9zZXIudmFsdWUpIHtcclxuICAgICAgICAgICAgX2NvbXBvc2VyLnZhbHVlLnNldE1pc3NpbmdIYW5kbGVyKGhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHdhcnBXaXRoRGVwcyhmbikge1xyXG4gICAgICAgIHRyYWNrUmVhY3Rpdml0eVZhbHVlcygpO1xyXG4gICAgICAgIHJldHVybiBmbigpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gdCguLi5hcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jb21wb3Nlci52YWx1ZVxyXG4gICAgICAgICAgICA/IHdhcnBXaXRoRGVwcygoKSA9PiBSZWZsZWN0LmFwcGx5KF9jb21wb3Nlci52YWx1ZS50LCBudWxsLCBbLi4uYXJnc10pKVxyXG4gICAgICAgICAgICA6IHdhcnBXaXRoRGVwcygoKSA9PiAnJyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBydCguLi5hcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jb21wb3Nlci52YWx1ZVxyXG4gICAgICAgICAgICA/IFJlZmxlY3QuYXBwbHkoX2NvbXBvc2VyLnZhbHVlLnJ0LCBudWxsLCBbLi4uYXJnc10pXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBkKC4uLmFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gX2NvbXBvc2VyLnZhbHVlXHJcbiAgICAgICAgICAgID8gd2FycFdpdGhEZXBzKCgpID0+IFJlZmxlY3QuYXBwbHkoX2NvbXBvc2VyLnZhbHVlLmQsIG51bGwsIFsuLi5hcmdzXSkpXHJcbiAgICAgICAgICAgIDogd2FycFdpdGhEZXBzKCgpID0+ICcnKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIG4oLi4uYXJncykge1xyXG4gICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWVcclxuICAgICAgICAgICAgPyB3YXJwV2l0aERlcHMoKCkgPT4gUmVmbGVjdC5hcHBseShfY29tcG9zZXIudmFsdWUubiwgbnVsbCwgWy4uLmFyZ3NdKSlcclxuICAgICAgICAgICAgOiB3YXJwV2l0aERlcHMoKCkgPT4gJycpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gdG0oa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIF9jb21wb3Nlci52YWx1ZSA/IF9jb21wb3Nlci52YWx1ZS50bShrZXkpIDoge307XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiB0ZShrZXksIGxvY2FsZSkge1xyXG4gICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWUgPyBfY29tcG9zZXIudmFsdWUudGUoa2V5LCBsb2NhbGUpIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRMb2NhbGVNZXNzYWdlKGxvY2FsZSkge1xyXG4gICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWUgPyBfY29tcG9zZXIudmFsdWUuZ2V0TG9jYWxlTWVzc2FnZShsb2NhbGUpIDoge307XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzZXRMb2NhbGVNZXNzYWdlKGxvY2FsZSwgbWVzc2FnZSkge1xyXG4gICAgICAgIGlmIChfY29tcG9zZXIudmFsdWUpIHtcclxuICAgICAgICAgICAgX2NvbXBvc2VyLnZhbHVlLnNldExvY2FsZU1lc3NhZ2UobG9jYWxlLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgX21lc3NhZ2VzLnZhbHVlW2xvY2FsZV0gPSBtZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIG1lcmdlTG9jYWxlTWVzc2FnZShsb2NhbGUsIG1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAoX2NvbXBvc2VyLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIF9jb21wb3Nlci52YWx1ZS5tZXJnZUxvY2FsZU1lc3NhZ2UobG9jYWxlLCBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXREYXRlVGltZUZvcm1hdChsb2NhbGUpIHtcclxuICAgICAgICByZXR1cm4gX2NvbXBvc2VyLnZhbHVlID8gX2NvbXBvc2VyLnZhbHVlLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZSkgOiB7fTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNldERhdGVUaW1lRm9ybWF0KGxvY2FsZSwgZm9ybWF0KSB7XHJcbiAgICAgICAgaWYgKF9jb21wb3Nlci52YWx1ZSkge1xyXG4gICAgICAgICAgICBfY29tcG9zZXIudmFsdWUuc2V0RGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmb3JtYXQpO1xyXG4gICAgICAgICAgICBfZGF0ZXRpbWVGb3JtYXRzLnZhbHVlW2xvY2FsZV0gPSBmb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gbWVyZ2VEYXRlVGltZUZvcm1hdChsb2NhbGUsIGZvcm1hdCkge1xyXG4gICAgICAgIGlmIChfY29tcG9zZXIudmFsdWUpIHtcclxuICAgICAgICAgICAgX2NvbXBvc2VyLnZhbHVlLm1lcmdlRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmb3JtYXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdldE51bWJlckZvcm1hdChsb2NhbGUpIHtcclxuICAgICAgICByZXR1cm4gX2NvbXBvc2VyLnZhbHVlID8gX2NvbXBvc2VyLnZhbHVlLmdldE51bWJlckZvcm1hdChsb2NhbGUpIDoge307XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzZXROdW1iZXJGb3JtYXQobG9jYWxlLCBmb3JtYXQpIHtcclxuICAgICAgICBpZiAoX2NvbXBvc2VyLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIF9jb21wb3Nlci52YWx1ZS5zZXROdW1iZXJGb3JtYXQobG9jYWxlLCBmb3JtYXQpO1xyXG4gICAgICAgICAgICBfbnVtYmVyRm9ybWF0cy52YWx1ZVtsb2NhbGVdID0gZm9ybWF0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIG1lcmdlTnVtYmVyRm9ybWF0KGxvY2FsZSwgZm9ybWF0KSB7XHJcbiAgICAgICAgaWYgKF9jb21wb3Nlci52YWx1ZSkge1xyXG4gICAgICAgICAgICBfY29tcG9zZXIudmFsdWUubWVyZ2VOdW1iZXJGb3JtYXQobG9jYWxlLCBmb3JtYXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHdyYXBwZXIgPSB7XHJcbiAgICAgICAgZ2V0IGlkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX2NvbXBvc2VyLnZhbHVlID8gX2NvbXBvc2VyLnZhbHVlLmlkIDogLTE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2NhbGUsXHJcbiAgICAgICAgZmFsbGJhY2tMb2NhbGUsXHJcbiAgICAgICAgbWVzc2FnZXMsXHJcbiAgICAgICAgZGF0ZXRpbWVGb3JtYXRzLFxyXG4gICAgICAgIG51bWJlckZvcm1hdHMsXHJcbiAgICAgICAgZ2V0IGluaGVyaXRMb2NhbGUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWUgPyBfY29tcG9zZXIudmFsdWUuaW5oZXJpdExvY2FsZSA6IF9pbmhlcml0TG9jYWxlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0IGluaGVyaXRMb2NhbGUodmFsKSB7XHJcbiAgICAgICAgICAgIGlmIChfY29tcG9zZXIudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIF9jb21wb3Nlci52YWx1ZS5pbmhlcml0TG9jYWxlID0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgYXZhaWxhYmxlTG9jYWxlcygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9jb21wb3Nlci52YWx1ZVxyXG4gICAgICAgICAgICAgICAgPyBfY29tcG9zZXIudmFsdWUuYXZhaWxhYmxlTG9jYWxlc1xyXG4gICAgICAgICAgICAgICAgOiBPYmplY3Qua2V5cyhfbWVzc2FnZXMudmFsdWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IG1vZGlmaWVycygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIChfY29tcG9zZXIudmFsdWUgPyBfY29tcG9zZXIudmFsdWUubW9kaWZpZXJzIDogX21vZGlmaWVycyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgcGx1cmFsUnVsZXMoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoX2NvbXBvc2VyLnZhbHVlID8gX2NvbXBvc2VyLnZhbHVlLnBsdXJhbFJ1bGVzIDogX3BsdXJhbFJ1bGVzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBpc0dsb2JhbCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9jb21wb3Nlci52YWx1ZSA/IF9jb21wb3Nlci52YWx1ZS5pc0dsb2JhbCA6IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IG1pc3NpbmdXYXJuKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX2NvbXBvc2VyLnZhbHVlID8gX2NvbXBvc2VyLnZhbHVlLm1pc3NpbmdXYXJuIDogX21pc3NpbmdXYXJuO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0IG1pc3NpbmdXYXJuKHZhbCkge1xyXG4gICAgICAgICAgICBpZiAoX2NvbXBvc2VyLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBfY29tcG9zZXIudmFsdWUubWlzc2luZ1dhcm4gPSB2YWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBmYWxsYmFja1dhcm4oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWUgPyBfY29tcG9zZXIudmFsdWUuZmFsbGJhY2tXYXJuIDogX2ZhbGxiYWNrV2FybjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldCBmYWxsYmFja1dhcm4odmFsKSB7XHJcbiAgICAgICAgICAgIGlmIChfY29tcG9zZXIudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIF9jb21wb3Nlci52YWx1ZS5taXNzaW5nV2FybiA9IHZhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IGZhbGxiYWNrUm9vdCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9jb21wb3Nlci52YWx1ZSA/IF9jb21wb3Nlci52YWx1ZS5mYWxsYmFja1Jvb3QgOiBfZmFsbGJhY2tSb290O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0IGZhbGxiYWNrUm9vdCh2YWwpIHtcclxuICAgICAgICAgICAgaWYgKF9jb21wb3Nlci52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgX2NvbXBvc2VyLnZhbHVlLmZhbGxiYWNrUm9vdCA9IHZhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IGZhbGxiYWNrRm9ybWF0KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX2NvbXBvc2VyLnZhbHVlID8gX2NvbXBvc2VyLnZhbHVlLmZhbGxiYWNrRm9ybWF0IDogX2ZhbGxiYWNrRm9ybWF0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0IGZhbGxiYWNrRm9ybWF0KHZhbCkge1xyXG4gICAgICAgICAgICBpZiAoX2NvbXBvc2VyLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBfY29tcG9zZXIudmFsdWUuZmFsbGJhY2tGb3JtYXQgPSB2YWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCB3YXJuSHRtbE1lc3NhZ2UoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfY29tcG9zZXIudmFsdWVcclxuICAgICAgICAgICAgICAgID8gX2NvbXBvc2VyLnZhbHVlLndhcm5IdG1sTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgOiBfd2Fybkh0bWxNZXNzYWdlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0IHdhcm5IdG1sTWVzc2FnZSh2YWwpIHtcclxuICAgICAgICAgICAgaWYgKF9jb21wb3Nlci52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgX2NvbXBvc2VyLnZhbHVlLndhcm5IdG1sTWVzc2FnZSA9IHZhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IGVzY2FwZVBhcmFtZXRlcigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9jb21wb3Nlci52YWx1ZVxyXG4gICAgICAgICAgICAgICAgPyBfY29tcG9zZXIudmFsdWUuZXNjYXBlUGFyYW1ldGVyXHJcbiAgICAgICAgICAgICAgICA6IF9lc2NhcGVQYXJhbWV0ZXI7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXQgZXNjYXBlUGFyYW1ldGVyKHZhbCkge1xyXG4gICAgICAgICAgICBpZiAoX2NvbXBvc2VyLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBfY29tcG9zZXIudmFsdWUuZXNjYXBlUGFyYW1ldGVyID0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0LFxyXG4gICAgICAgIGdldFBvc3RUcmFuc2xhdGlvbkhhbmRsZXIsXHJcbiAgICAgICAgc2V0UG9zdFRyYW5zbGF0aW9uSGFuZGxlcixcclxuICAgICAgICBnZXRNaXNzaW5nSGFuZGxlcixcclxuICAgICAgICBzZXRNaXNzaW5nSGFuZGxlcixcclxuICAgICAgICBydCxcclxuICAgICAgICBkLFxyXG4gICAgICAgIG4sXHJcbiAgICAgICAgdG0sXHJcbiAgICAgICAgdGUsXHJcbiAgICAgICAgZ2V0TG9jYWxlTWVzc2FnZSxcclxuICAgICAgICBzZXRMb2NhbGVNZXNzYWdlLFxyXG4gICAgICAgIG1lcmdlTG9jYWxlTWVzc2FnZSxcclxuICAgICAgICBnZXREYXRlVGltZUZvcm1hdCxcclxuICAgICAgICBzZXREYXRlVGltZUZvcm1hdCxcclxuICAgICAgICBtZXJnZURhdGVUaW1lRm9ybWF0LFxyXG4gICAgICAgIGdldE51bWJlckZvcm1hdCxcclxuICAgICAgICBzZXROdW1iZXJGb3JtYXQsXHJcbiAgICAgICAgbWVyZ2VOdW1iZXJGb3JtYXRcclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBzeW5jKGNvbXBvc2VyKSB7XHJcbiAgICAgICAgY29tcG9zZXIubG9jYWxlLnZhbHVlID0gX2xvY2FsZS52YWx1ZTtcclxuICAgICAgICBjb21wb3Nlci5mYWxsYmFja0xvY2FsZS52YWx1ZSA9IF9mYWxsYmFja0xvY2FsZS52YWx1ZTtcclxuICAgICAgICBPYmplY3Qua2V5cyhfbWVzc2FnZXMudmFsdWUpLmZvckVhY2gobG9jYWxlID0+IHtcclxuICAgICAgICAgICAgY29tcG9zZXIubWVyZ2VMb2NhbGVNZXNzYWdlKGxvY2FsZSwgX21lc3NhZ2VzLnZhbHVlW2xvY2FsZV0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKF9kYXRldGltZUZvcm1hdHMudmFsdWUpLmZvckVhY2gobG9jYWxlID0+IHtcclxuICAgICAgICAgICAgY29tcG9zZXIubWVyZ2VEYXRlVGltZUZvcm1hdChsb2NhbGUsIF9kYXRldGltZUZvcm1hdHMudmFsdWVbbG9jYWxlXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoX251bWJlckZvcm1hdHMudmFsdWUpLmZvckVhY2gobG9jYWxlID0+IHtcclxuICAgICAgICAgICAgY29tcG9zZXIubWVyZ2VOdW1iZXJGb3JtYXQobG9jYWxlLCBfbnVtYmVyRm9ybWF0cy52YWx1ZVtsb2NhbGVdKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb21wb3Nlci5lc2NhcGVQYXJhbWV0ZXIgPSBfZXNjYXBlUGFyYW1ldGVyO1xyXG4gICAgICAgIGNvbXBvc2VyLmZhbGxiYWNrRm9ybWF0ID0gX2ZhbGxiYWNrRm9ybWF0O1xyXG4gICAgICAgIGNvbXBvc2VyLmZhbGxiYWNrUm9vdCA9IF9mYWxsYmFja1Jvb3Q7XHJcbiAgICAgICAgY29tcG9zZXIuZmFsbGJhY2tXYXJuID0gX2ZhbGxiYWNrV2FybjtcclxuICAgICAgICBjb21wb3Nlci5taXNzaW5nV2FybiA9IF9taXNzaW5nV2FybjtcclxuICAgICAgICBjb21wb3Nlci53YXJuSHRtbE1lc3NhZ2UgPSBfd2Fybkh0bWxNZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgb25CZWZvcmVNb3VudCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnByb3h5ID09IG51bGwgfHwgaW5zdGFuY2UucHJveHkuJGkxOG4gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuTk9UX0FWQUlMQUJMRV9DT01QT1NJVElPTl9JTl9MRUdBQ1kpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNvbnN0IGNvbXBvc2VyID0gKF9jb21wb3Nlci52YWx1ZSA9IGluc3RhbmNlLnByb3h5LiRpMThuXHJcbiAgICAgICAgICAgIC5fX2NvbXBvc2VyKTtcclxuICAgICAgICBpZiAoc2NvcGUgPT09ICdnbG9iYWwnKSB7XHJcbiAgICAgICAgICAgIF9sb2NhbGUudmFsdWUgPSBjb21wb3Nlci5sb2NhbGUudmFsdWU7XHJcbiAgICAgICAgICAgIF9mYWxsYmFja0xvY2FsZS52YWx1ZSA9IGNvbXBvc2VyLmZhbGxiYWNrTG9jYWxlLnZhbHVlO1xyXG4gICAgICAgICAgICBfbWVzc2FnZXMudmFsdWUgPSBjb21wb3Nlci5tZXNzYWdlcy52YWx1ZTtcclxuICAgICAgICAgICAgX2RhdGV0aW1lRm9ybWF0cy52YWx1ZSA9IGNvbXBvc2VyLmRhdGV0aW1lRm9ybWF0cy52YWx1ZTtcclxuICAgICAgICAgICAgX251bWJlckZvcm1hdHMudmFsdWUgPSBjb21wb3Nlci5udW1iZXJGb3JtYXRzLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0xvY2FsZSkge1xyXG4gICAgICAgICAgICBzeW5jKGNvbXBvc2VyKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB3cmFwcGVyO1xyXG59XHJcbmNvbnN0IGdsb2JhbEV4cG9ydFByb3BzID0gW1xyXG4gICAgJ2xvY2FsZScsXHJcbiAgICAnZmFsbGJhY2tMb2NhbGUnLFxyXG4gICAgJ2F2YWlsYWJsZUxvY2FsZXMnXHJcbl07XHJcbmNvbnN0IGdsb2JhbEV4cG9ydE1ldGhvZHMgPSBbJ3QnLCAncnQnLCAnZCcsICduJywgJ3RtJ10gO1xyXG5mdW5jdGlvbiBpbmplY3RHbG9iYWxGaWVsZHMoYXBwLCBjb21wb3Nlcikge1xyXG4gICAgY29uc3QgaTE4biA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICBnbG9iYWxFeHBvcnRQcm9wcy5mb3JFYWNoKHByb3AgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbXBvc2VyLCBwcm9wKTtcclxuICAgICAgICBpZiAoIWRlc2MpIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlSTE4bkVycm9yKEkxOG5FcnJvckNvZGVzLlVORVhQRUNURURfRVJST1IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB3cmFwID0gaXNSZWYoZGVzYy52YWx1ZSkgLy8gY2hlY2sgY29tcHV0ZWQgcHJvcHNcclxuICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICBnZXQoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2MudmFsdWUudmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgICAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXNjLnZhbHVlLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgZ2V0KCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXNjLmdldCAmJiBkZXNjLmdldCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpMThuLCBwcm9wLCB3cmFwKTtcclxuICAgIH0pO1xyXG4gICAgYXBwLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiRpMThuID0gaTE4bjtcclxuICAgIGdsb2JhbEV4cG9ydE1ldGhvZHMuZm9yRWFjaChtZXRob2QgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbXBvc2VyLCBtZXRob2QpO1xyXG4gICAgICAgIGlmICghZGVzYyB8fCAhZGVzYy52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVJMThuRXJyb3IoSTE4bkVycm9yQ29kZXMuVU5FWFBFQ1RFRF9FUlJPUik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsIGAkJHttZXRob2R9YCwgZGVzYyk7XHJcbiAgICB9KTtcclxufVxuXG4vLyByZWdpc3RlciBtZXNzYWdlIHJlc29sdmVyIGF0IHZ1ZS1pMThuXHJcbnJlZ2lzdGVyTWVzc2FnZVJlc29sdmVyKHJlc29sdmVWYWx1ZSk7XHJcbi8vIHJlZ2lzdGVyIGZhbGxiYWNrIGxvY2FsZSBhdCB2dWUtaTE4blxyXG5yZWdpc3RlckxvY2FsZUZhbGxiYWNrZXIoZmFsbGJhY2tXaXRoTG9jYWxlQ2hhaW4pO1xyXG57XHJcbiAgICBpbml0RmVhdHVyZUZsYWdzKCk7XHJcbn1cclxuLy8gTk9URTogZXhwZXJpbWVudGFsICEhXHJcbmlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19JTlRMSUZZX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZ2V0R2xvYmFsVGhpcygpO1xyXG4gICAgdGFyZ2V0Ll9fSU5UTElGWV9fID0gdHJ1ZTtcclxuICAgIHNldERldlRvb2xzSG9vayh0YXJnZXQuX19JTlRMSUZZX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pO1xyXG59XHJcbmlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIDtcblxuZXhwb3J0IHsgRGF0ZXRpbWVGb3JtYXQsIEkxOG5JbmplY3Rpb25LZXksIE51bWJlckZvcm1hdCwgVHJhbnNsYXRpb24sIFZFUlNJT04sIGNhc3RUb1Z1ZUkxOG4sIGNyZWF0ZUkxOG4sIHVzZUkxOG4sIHZURGlyZWN0aXZlIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue-loader/dist/exportHelper.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/vue-loader/dist/exportHelper.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qcz9iOWE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHJ1bnRpbWUgaGVscGVyIGZvciBzZXR0aW5nIHByb3BlcnRpZXMgb24gY29tcG9uZW50c1xuLy8gaW4gYSB0cmVlLXNoYWthYmxlIHdheVxuZXhwb3J0cy5kZWZhdWx0ID0gKHNmYywgcHJvcHMpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBzZmMuX192Y2NPcHRzIHx8IHNmYztcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbF0gb2YgcHJvcHMpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/dist/exportHelper.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue-router/dist/vue-router.esm-bundler.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/vue-router/dist/vue-router.esm-bundler.js ***!
|
||
\****************************************************************/
|
||
/*! exports provided: NavigationFailureType, RouterLink, RouterView, START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NavigationFailureType\", function() { return NavigationFailureType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RouterLink\", function() { return RouterLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RouterView\", function() { return RouterView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"START_LOCATION\", function() { return START_LOCATION_NORMALIZED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createMemoryHistory\", function() { return createMemoryHistory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRouter\", function() { return createRouter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRouterMatcher\", function() { return createRouterMatcher; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createWebHashHistory\", function() { return createWebHashHistory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createWebHistory\", function() { return createWebHistory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNavigationFailure\", function() { return isNavigationFailure; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"matchedRouteKey\", function() { return matchedRouteKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onBeforeRouteLeave\", function() { return onBeforeRouteLeave; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onBeforeRouteUpdate\", function() { return onBeforeRouteUpdate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseQuery\", function() { return parseQuery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"routeLocationKey\", function() { return routeLocationKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"routerKey\", function() { return routerKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"routerViewLocationKey\", function() { return routerViewLocationKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringifyQuery\", function() { return stringifyQuery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useLink\", function() { return useLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useRoute\", function() { return useRoute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useRouter\", function() { return useRouter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"viewDepthKey\", function() { return viewDepthKey; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _vue_devtools_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vue/devtools-api */ \"./node_modules/@vue/devtools-api/lib/esm/index.js\");\n/*!\n * vue-router v4.0.14\n * (c) 2022 Eduardo San Martin Morote\n * @license MIT\n */\n\n\n\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst PolySymbol = (name) => \r\n// vr = vue router\r\nhasSymbol\r\n ? Symbol(( true) ? '[vue-router]: ' + name : undefined)\r\n : (( true) ? '[vue-router]: ' : undefined) + name;\r\n// rvlm = Router View Location Matched\r\n/**\r\n * RouteRecord being rendered by the closest ancestor Router View. Used for\r\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\r\n * Location Matched\r\n *\r\n * @internal\r\n */\r\nconst matchedRouteKey = /*#__PURE__*/ PolySymbol(( true) ? 'router view location matched' : undefined);\r\n/**\r\n * Allows overriding the router view depth to control which component in\r\n * `matched` is rendered. rvd stands for Router View Depth\r\n *\r\n * @internal\r\n */\r\nconst viewDepthKey = /*#__PURE__*/ PolySymbol(( true) ? 'router view depth' : undefined);\r\n/**\r\n * Allows overriding the router instance returned by `useRouter` in tests. r\r\n * stands for router\r\n *\r\n * @internal\r\n */\r\nconst routerKey = /*#__PURE__*/ PolySymbol(( true) ? 'router' : undefined);\r\n/**\r\n * Allows overriding the current route returned by `useRoute` in tests. rl\r\n * stands for route location\r\n *\r\n * @internal\r\n */\r\nconst routeLocationKey = /*#__PURE__*/ PolySymbol(( true) ? 'route location' : undefined);\r\n/**\r\n * Allows overriding the current route used by router-view. Internally this is\r\n * used when the `route` prop is passed.\r\n *\r\n * @internal\r\n */\r\nconst routerViewLocationKey = /*#__PURE__*/ PolySymbol(( true) ? 'router view location' : undefined);\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction isESModule(obj) {\r\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module');\r\n}\r\nconst assign = Object.assign;\r\nfunction applyToParams(fn, params) {\r\n const newParams = {};\r\n for (const key in params) {\r\n const value = params[key];\r\n newParams[key] = Array.isArray(value) ? value.map(fn) : fn(value);\r\n }\r\n return newParams;\r\n}\r\nconst noop = () => { };\n\nfunction warn(msg) {\r\n // avoid using ...args as it breaks in older Edge builds\r\n const args = Array.from(arguments).slice(1);\r\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\r\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\r\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\r\n/**\r\n * Transforms an URI into a normalized history location\r\n *\r\n * @param parseQuery\r\n * @param location - URI to normalize\r\n * @param currentLocation - current absolute location. Allows resolving relative\r\n * paths. Must start with `/`. Defaults to `/`\r\n * @returns a normalized history location\r\n */\r\nfunction parseURL(parseQuery, location, currentLocation = '/') {\r\n let path, query = {}, searchString = '', hash = '';\r\n // Could use URL and URLSearchParams but IE 11 doesn't support it\r\n const searchPos = location.indexOf('?');\r\n const hashPos = location.indexOf('#', searchPos > -1 ? searchPos : 0);\r\n if (searchPos > -1) {\r\n path = location.slice(0, searchPos);\r\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\r\n query = parseQuery(searchString);\r\n }\r\n if (hashPos > -1) {\r\n path = path || location.slice(0, hashPos);\r\n // keep the # character\r\n hash = location.slice(hashPos, location.length);\r\n }\r\n // no search and no query\r\n path = resolveRelativePath(path != null ? path : location, currentLocation);\r\n // empty path means a relative query or hash `?foo=f`, `#thing`\r\n return {\r\n fullPath: path + (searchString && '?') + searchString + hash,\r\n path,\r\n query,\r\n hash,\r\n };\r\n}\r\n/**\r\n * Stringifies a URL object\r\n *\r\n * @param stringifyQuery\r\n * @param location\r\n */\r\nfunction stringifyURL(stringifyQuery, location) {\r\n const query = location.query ? stringifyQuery(location.query) : '';\r\n return location.path + (query && '?') + query + (location.hash || '');\r\n}\r\n/**\r\n * Strips off the base from the beginning of a location.pathname in a non\r\n * case-sensitive way.\r\n *\r\n * @param pathname - location.pathname\r\n * @param base - base to strip off\r\n */\r\nfunction stripBase(pathname, base) {\r\n // no base or base is not found at the beginning\r\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\r\n return pathname;\r\n return pathname.slice(base.length) || '/';\r\n}\r\n/**\r\n * Checks if two RouteLocation are equal. This means that both locations are\r\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\r\n * parameters and `hash` are the same\r\n *\r\n * @param a - first {@link RouteLocation}\r\n * @param b - second {@link RouteLocation}\r\n */\r\nfunction isSameRouteLocation(stringifyQuery, a, b) {\r\n const aLastIndex = a.matched.length - 1;\r\n const bLastIndex = b.matched.length - 1;\r\n return (aLastIndex > -1 &&\r\n aLastIndex === bLastIndex &&\r\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\r\n isSameRouteLocationParams(a.params, b.params) &&\r\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\r\n a.hash === b.hash);\r\n}\r\n/**\r\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\r\n * considered equal to the `RouteRecord` they are aliasing.\r\n *\r\n * @param a - first {@link RouteRecord}\r\n * @param b - second {@link RouteRecord}\r\n */\r\nfunction isSameRouteRecord(a, b) {\r\n // since the original record has an undefined value for aliasOf\r\n // but all aliases point to the original record, this will always compare\r\n // the original record\r\n return (a.aliasOf || a) === (b.aliasOf || b);\r\n}\r\nfunction isSameRouteLocationParams(a, b) {\r\n if (Object.keys(a).length !== Object.keys(b).length)\r\n return false;\r\n for (const key in a) {\r\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction isSameRouteLocationParamsValue(a, b) {\r\n return Array.isArray(a)\r\n ? isEquivalentArray(a, b)\r\n : Array.isArray(b)\r\n ? isEquivalentArray(b, a)\r\n : a === b;\r\n}\r\n/**\r\n * Check if two arrays are the same or if an array with one single entry is the\r\n * same as another primitive value. Used to check query and parameters\r\n *\r\n * @param a - array of values\r\n * @param b - array of values or a single value\r\n */\r\nfunction isEquivalentArray(a, b) {\r\n return Array.isArray(b)\r\n ? a.length === b.length && a.every((value, i) => value === b[i])\r\n : a.length === 1 && a[0] === b;\r\n}\r\n/**\r\n * Resolves a relative path that starts with `.`.\r\n *\r\n * @param to - path location we are resolving\r\n * @param from - currentLocation.path, should start with `/`\r\n */\r\nfunction resolveRelativePath(to, from) {\r\n if (to.startsWith('/'))\r\n return to;\r\n if (( true) && !from.startsWith('/')) {\r\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\r\n return to;\r\n }\r\n if (!to)\r\n return from;\r\n const fromSegments = from.split('/');\r\n const toSegments = to.split('/');\r\n let position = fromSegments.length - 1;\r\n let toPosition;\r\n let segment;\r\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\r\n segment = toSegments[toPosition];\r\n // can't go below zero\r\n if (position === 1 || segment === '.')\r\n continue;\r\n if (segment === '..')\r\n position--;\r\n // found something that is not relative path\r\n else\r\n break;\r\n }\r\n return (fromSegments.slice(0, position).join('/') +\r\n '/' +\r\n toSegments\r\n .slice(toPosition - (toPosition === toSegments.length ? 1 : 0))\r\n .join('/'));\r\n}\n\nvar NavigationType;\r\n(function (NavigationType) {\r\n NavigationType[\"pop\"] = \"pop\";\r\n NavigationType[\"push\"] = \"push\";\r\n})(NavigationType || (NavigationType = {}));\r\nvar NavigationDirection;\r\n(function (NavigationDirection) {\r\n NavigationDirection[\"back\"] = \"back\";\r\n NavigationDirection[\"forward\"] = \"forward\";\r\n NavigationDirection[\"unknown\"] = \"\";\r\n})(NavigationDirection || (NavigationDirection = {}));\r\n/**\r\n * Starting location for Histories\r\n */\r\nconst START = '';\r\n// Generic utils\r\n/**\r\n * Normalizes a base by removing any trailing slash and reading the base tag if\r\n * present.\r\n *\r\n * @param base - base to normalize\r\n */\r\nfunction normalizeBase(base) {\r\n if (!base) {\r\n if (isBrowser) {\r\n // respect <base> tag\r\n const baseEl = document.querySelector('base');\r\n base = (baseEl && baseEl.getAttribute('href')) || '/';\r\n // strip full URL origin\r\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\r\n }\r\n else {\r\n base = '/';\r\n }\r\n }\r\n // ensure leading slash when it was removed by the regex above avoid leading\r\n // slash with hash because the file could be read from the disk like file://\r\n // and the leading slash would cause problems\r\n if (base[0] !== '/' && base[0] !== '#')\r\n base = '/' + base;\r\n // remove the trailing slash so all other method can just do `base + fullPath`\r\n // to build an href\r\n return removeTrailingSlash(base);\r\n}\r\n// remove any character before the hash\r\nconst BEFORE_HASH_RE = /^[^#]+#/;\r\nfunction createHref(base, location) {\r\n return base.replace(BEFORE_HASH_RE, '#') + location;\r\n}\n\nfunction getElementPosition(el, offset) {\r\n const docRect = document.documentElement.getBoundingClientRect();\r\n const elRect = el.getBoundingClientRect();\r\n return {\r\n behavior: offset.behavior,\r\n left: elRect.left - docRect.left - (offset.left || 0),\r\n top: elRect.top - docRect.top - (offset.top || 0),\r\n };\r\n}\r\nconst computeScrollPosition = () => ({\r\n left: window.pageXOffset,\r\n top: window.pageYOffset,\r\n});\r\nfunction scrollToPosition(position) {\r\n let scrollToOptions;\r\n if ('el' in position) {\r\n const positionEl = position.el;\r\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\r\n /**\r\n * `id`s can accept pretty much any characters, including CSS combinators\r\n * like `>` or `~`. It's still possible to retrieve elements using\r\n * `document.getElementById('~')` but it needs to be escaped when using\r\n * `document.querySelector('#\\\\~')` for it to be valid. The only\r\n * requirements for `id`s are them to be unique on the page and to not be\r\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\r\n * be properly escaped for it to work with `querySelector`. We could check\r\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\r\n * would make things inconsistent since they are valid characters for an\r\n * `id` but would need to be escaped when using `querySelector`, breaking\r\n * their usage and ending up in no selector returned. Selectors need to be\r\n * escaped:\r\n *\r\n * - `#1-thing` becomes `#\\31 -thing`\r\n * - `#with~symbols` becomes `#with\\\\~symbols`\r\n *\r\n * - More information about the topic can be found at\r\n * https://mathiasbynens.be/notes/html5-id-class.\r\n * - Practical example: https://mathiasbynens.be/demo/html5-id\r\n */\r\n if (( true) && typeof position.el === 'string') {\r\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\r\n try {\r\n const foundEl = document.querySelector(position.el);\r\n if (isIdSelector && foundEl) {\r\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n catch (err) {\r\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n }\r\n const el = typeof positionEl === 'string'\r\n ? isIdSelector\r\n ? document.getElementById(positionEl.slice(1))\r\n : document.querySelector(positionEl)\r\n : positionEl;\r\n if (!el) {\r\n ( true) &&\r\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\r\n return;\r\n }\r\n scrollToOptions = getElementPosition(el, position);\r\n }\r\n else {\r\n scrollToOptions = position;\r\n }\r\n if ('scrollBehavior' in document.documentElement.style)\r\n window.scrollTo(scrollToOptions);\r\n else {\r\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset, scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset);\r\n }\r\n}\r\nfunction getScrollKey(path, delta) {\r\n const position = history.state ? history.state.position - delta : -1;\r\n return position + path;\r\n}\r\nconst scrollPositions = new Map();\r\nfunction saveScrollPosition(key, scrollPosition) {\r\n scrollPositions.set(key, scrollPosition);\r\n}\r\nfunction getSavedScrollPosition(key) {\r\n const scroll = scrollPositions.get(key);\r\n // consume it so it's not used again\r\n scrollPositions.delete(key);\r\n return scroll;\r\n}\r\n// TODO: RFC about how to save scroll position\r\n/**\r\n * ScrollBehavior instance used by the router to compute and restore the scroll\r\n * position when navigating.\r\n */\r\n// export interface ScrollHandler<ScrollPositionEntry extends HistoryStateValue, ScrollPosition extends ScrollPositionEntry> {\r\n// // returns a scroll position that can be saved in history\r\n// compute(): ScrollPositionEntry\r\n// // can take an extended ScrollPositionEntry\r\n// scroll(position: ScrollPosition): void\r\n// }\r\n// export const scrollHandler: ScrollHandler<ScrollPosition> = {\r\n// compute: computeScroll,\r\n// scroll: scrollToPosition,\r\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\r\n/**\r\n * Creates a normalized history location from a window.location object\r\n * @param location -\r\n */\r\nfunction createCurrentLocation(base, location) {\r\n const { pathname, search, hash } = location;\r\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\r\n const hashPos = base.indexOf('#');\r\n if (hashPos > -1) {\r\n let slicePos = hash.includes(base.slice(hashPos))\r\n ? base.slice(hashPos).length\r\n : 1;\r\n let pathFromHash = hash.slice(slicePos);\r\n // prepend the starting slash to hash so the url starts with /#\r\n if (pathFromHash[0] !== '/')\r\n pathFromHash = '/' + pathFromHash;\r\n return stripBase(pathFromHash, '');\r\n }\r\n const path = stripBase(pathname, base);\r\n return path + search + hash;\r\n}\r\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\r\n let listeners = [];\r\n let teardowns = [];\r\n // TODO: should it be a stack? a Dict. Check if the popstate listener\r\n // can trigger twice\r\n let pauseState = null;\r\n const popStateHandler = ({ state, }) => {\r\n const to = createCurrentLocation(base, location);\r\n const from = currentLocation.value;\r\n const fromState = historyState.value;\r\n let delta = 0;\r\n if (state) {\r\n currentLocation.value = to;\r\n historyState.value = state;\r\n // ignore the popstate and reset the pauseState\r\n if (pauseState && pauseState === from) {\r\n pauseState = null;\r\n return;\r\n }\r\n delta = fromState ? state.position - fromState.position : 0;\r\n }\r\n else {\r\n replace(to);\r\n }\r\n // console.log({ deltaFromCurrent })\r\n // Here we could also revert the navigation by calling history.go(-delta)\r\n // this listener will have to be adapted to not trigger again and to wait for the url\r\n // to be updated before triggering the listeners. Some kind of validation function would also\r\n // need to be passed to the listeners so the navigation can be accepted\r\n // call all listeners\r\n listeners.forEach(listener => {\r\n listener(currentLocation.value, from, {\r\n delta,\r\n type: NavigationType.pop,\r\n direction: delta\r\n ? delta > 0\r\n ? NavigationDirection.forward\r\n : NavigationDirection.back\r\n : NavigationDirection.unknown,\r\n });\r\n });\r\n };\r\n function pauseListeners() {\r\n pauseState = currentLocation.value;\r\n }\r\n function listen(callback) {\r\n // setup the listener and prepare teardown callbacks\r\n listeners.push(callback);\r\n const teardown = () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n teardowns.push(teardown);\r\n return teardown;\r\n }\r\n function beforeUnloadListener() {\r\n const { history } = window;\r\n if (!history.state)\r\n return;\r\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\r\n }\r\n function destroy() {\r\n for (const teardown of teardowns)\r\n teardown();\r\n teardowns = [];\r\n window.removeEventListener('popstate', popStateHandler);\r\n window.removeEventListener('beforeunload', beforeUnloadListener);\r\n }\r\n // setup the listeners and prepare teardown callbacks\r\n window.addEventListener('popstate', popStateHandler);\r\n window.addEventListener('beforeunload', beforeUnloadListener);\r\n return {\r\n pauseListeners,\r\n listen,\r\n destroy,\r\n };\r\n}\r\n/**\r\n * Creates a state object\r\n */\r\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\r\n return {\r\n back,\r\n current,\r\n forward,\r\n replaced,\r\n position: window.history.length,\r\n scroll: computeScroll ? computeScrollPosition() : null,\r\n };\r\n}\r\nfunction useHistoryStateNavigation(base) {\r\n const { history, location } = window;\r\n // private variables\r\n const currentLocation = {\r\n value: createCurrentLocation(base, location),\r\n };\r\n const historyState = { value: history.state };\r\n // build current history entry as this is a fresh navigation\r\n if (!historyState.value) {\r\n changeLocation(currentLocation.value, {\r\n back: null,\r\n current: currentLocation.value,\r\n forward: null,\r\n // the length is off by one, we need to decrease it\r\n position: history.length - 1,\r\n replaced: true,\r\n // don't add a scroll as the user may have an anchor and we want\r\n // scrollBehavior to be triggered without a saved position\r\n scroll: null,\r\n }, true);\r\n }\r\n function changeLocation(to, state, replace) {\r\n /**\r\n * if a base tag is provided and we are on a normal domain, we have to\r\n * respect the provided `base` attribute because pushState() will use it and\r\n * potentially erase anything before the `#` like at\r\n * https://github.com/vuejs/router/issues/685 where a base of\r\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\r\n * there is no host, the `<base>` tag makes no sense and if there isn't a\r\n * base tag we can just use everything after the `#`.\r\n */\r\n const hashIndex = base.indexOf('#');\r\n const url = hashIndex > -1\r\n ? (location.host && document.querySelector('base')\r\n ? base\r\n : base.slice(hashIndex)) + to\r\n : createBaseLocation() + base + to;\r\n try {\r\n // BROWSER QUIRK\r\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\r\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\r\n historyState.value = state;\r\n }\r\n catch (err) {\r\n if ((true)) {\r\n warn('Error with push/replace State', err);\r\n }\r\n else {}\r\n // Force the navigation, this also resets the call count\r\n location[replace ? 'replace' : 'assign'](url);\r\n }\r\n }\r\n function replace(to, data) {\r\n const state = assign({}, history.state, buildState(historyState.value.back, \r\n // keep back and forward entries but override current position\r\n to, historyState.value.forward, true), data, { position: historyState.value.position });\r\n changeLocation(to, state, true);\r\n currentLocation.value = to;\r\n }\r\n function push(to, data) {\r\n // Add to current entry the information of where we are going\r\n // as well as saving the current position\r\n const currentState = assign({}, \r\n // use current history state to gracefully handle a wrong call to\r\n // history.replaceState\r\n // https://github.com/vuejs/router/issues/366\r\n historyState.value, history.state, {\r\n forward: to,\r\n scroll: computeScrollPosition(),\r\n });\r\n if (( true) && !history.state) {\r\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\r\n `history.replaceState(history.state, '', url)\\n\\n` +\r\n `You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`);\r\n }\r\n changeLocation(currentState.current, currentState, true);\r\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\r\n changeLocation(to, state, false);\r\n currentLocation.value = to;\r\n }\r\n return {\r\n location: currentLocation,\r\n state: historyState,\r\n push,\r\n replace,\r\n };\r\n}\r\n/**\r\n * Creates an HTML5 history. Most common history for single page applications.\r\n *\r\n * @param base -\r\n */\r\nfunction createWebHistory(base) {\r\n base = normalizeBase(base);\r\n const historyNavigation = useHistoryStateNavigation(base);\r\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\r\n function go(delta, triggerListeners = true) {\r\n if (!triggerListeners)\r\n historyListeners.pauseListeners();\r\n history.go(delta);\r\n }\r\n const routerHistory = assign({\r\n // it's overridden right after\r\n location: '',\r\n base,\r\n go,\r\n createHref: createHref.bind(null, base),\r\n }, historyNavigation, historyListeners);\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => historyNavigation.location.value,\r\n });\r\n Object.defineProperty(routerHistory, 'state', {\r\n enumerable: true,\r\n get: () => historyNavigation.state.value,\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\r\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\r\n *\r\n * @param base - Base applied to all urls, defaults to '/'\r\n * @returns a history object that can be passed to the router constructor\r\n */\r\nfunction createMemoryHistory(base = '') {\r\n let listeners = [];\r\n let queue = [START];\r\n let position = 0;\r\n base = normalizeBase(base);\r\n function setLocation(location) {\r\n position++;\r\n if (position === queue.length) {\r\n // we are at the end, we can simply append a new entry\r\n queue.push(location);\r\n }\r\n else {\r\n // we are in the middle, we remove everything from here in the queue\r\n queue.splice(position);\r\n queue.push(location);\r\n }\r\n }\r\n function triggerListeners(to, from, { direction, delta }) {\r\n const info = {\r\n direction,\r\n delta,\r\n type: NavigationType.pop,\r\n };\r\n for (const callback of listeners) {\r\n callback(to, from, info);\r\n }\r\n }\r\n const routerHistory = {\r\n // rewritten by Object.defineProperty\r\n location: START,\r\n // TODO: should be kept in queue\r\n state: {},\r\n base,\r\n createHref: createHref.bind(null, base),\r\n replace(to) {\r\n // remove current entry and decrement position\r\n queue.splice(position--, 1);\r\n setLocation(to);\r\n },\r\n push(to, data) {\r\n setLocation(to);\r\n },\r\n listen(callback) {\r\n listeners.push(callback);\r\n return () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n },\r\n destroy() {\r\n listeners = [];\r\n queue = [START];\r\n position = 0;\r\n },\r\n go(delta, shouldTrigger = true) {\r\n const from = this.location;\r\n const direction = \r\n // we are considering delta === 0 going forward, but in abstract mode\r\n // using 0 for the delta doesn't make sense like it does in html5 where\r\n // it reloads the page\r\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\r\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\r\n if (shouldTrigger) {\r\n triggerListeners(this.location, from, {\r\n direction,\r\n delta,\r\n });\r\n }\r\n },\r\n };\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => queue[position],\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a hash history. Useful for web applications with no host (e.g.\r\n * `file://`) or when configuring a server to handle any URL is not possible.\r\n *\r\n * @param base - optional base to provide. Defaults to `location.pathname +\r\n * location.search` If there is a `<base>` tag in the `head`, its value will be\r\n * ignored in favor of this parameter **but note it affects all the\r\n * history.pushState() calls**, meaning that if you use a `<base>` tag, it's\r\n * `href` value **has to match this parameter** (ignoring anything after the\r\n * `#`).\r\n *\r\n * @example\r\n * ```js\r\n * // at https://example.com/folder\r\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\r\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\r\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\r\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\r\n * // you should avoid doing this because it changes the original url and breaks copying urls\r\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\r\n *\r\n * // at file:///usr/etc/folder/index.html\r\n * // for locations with no `host`, the base is ignored\r\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\r\n * ```\r\n */\r\nfunction createWebHashHistory(base) {\r\n // Make sure this implementation is fine in terms of encoding, specially for IE11\r\n // for `file://`, directly use the pathname and ignore the base\r\n // location.pathname contains an initial `/` even at the root: `https://example.com`\r\n base = location.host ? base || location.pathname + location.search : '';\r\n // allow the user to provide a `#` in the middle: `/base/#/app`\r\n if (!base.includes('#'))\r\n base += '#';\r\n if (( true) && !base.endsWith('#/') && !base.endsWith('#')) {\r\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\r\n }\r\n return createWebHistory(base);\r\n}\n\nfunction isRouteLocation(route) {\r\n return typeof route === 'string' || (route && typeof route === 'object');\r\n}\r\nfunction isRouteName(name) {\r\n return typeof name === 'string' || typeof name === 'symbol';\r\n}\n\n/**\r\n * Initial route location where the router is. Can be used in navigation guards\r\n * to differentiate the initial navigation.\r\n *\r\n * @example\r\n * ```js\r\n * import { START_LOCATION } from 'vue-router'\r\n *\r\n * router.beforeEach((to, from) => {\r\n * if (from === START_LOCATION) {\r\n * // initial navigation\r\n * }\r\n * })\r\n * ```\r\n */\r\nconst START_LOCATION_NORMALIZED = {\r\n path: '/',\r\n name: undefined,\r\n params: {},\r\n query: {},\r\n hash: '',\r\n fullPath: '/',\r\n matched: [],\r\n meta: {},\r\n redirectedFrom: undefined,\r\n};\n\nconst NavigationFailureSymbol = /*#__PURE__*/ PolySymbol(( true) ? 'navigation failure' : undefined);\r\n/**\r\n * Enumeration with all possible types for navigation failures. Can be passed to\r\n * {@link isNavigationFailure} to check for specific failures.\r\n */\r\nvar NavigationFailureType;\r\n(function (NavigationFailureType) {\r\n /**\r\n * An aborted navigation is a navigation that failed because a navigation\r\n * guard returned `false` or called `next(false)`\r\n */\r\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\r\n /**\r\n * A cancelled navigation is a navigation that failed because a more recent\r\n * navigation finished started (not necessarily finished).\r\n */\r\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\r\n /**\r\n * A duplicated navigation is a navigation that failed because it was\r\n * initiated while already being at the exact same location.\r\n */\r\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\r\n})(NavigationFailureType || (NavigationFailureType = {}));\r\n// DEV only debug messages\r\nconst ErrorTypeMessages = {\r\n [1 /* MATCHER_NOT_FOUND */]({ location, currentLocation }) {\r\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\r\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\r\n : ''}`;\r\n },\r\n [2 /* NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\r\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\r\n },\r\n [4 /* NAVIGATION_ABORTED */]({ from, to }) {\r\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\r\n },\r\n [8 /* NAVIGATION_CANCELLED */]({ from, to }) {\r\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\r\n },\r\n [16 /* NAVIGATION_DUPLICATED */]({ from, to }) {\r\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\r\n },\r\n};\r\nfunction createRouterError(type, params) {\r\n // keep full error messages in cjs versions\r\n if (true) {\r\n return assign(new Error(ErrorTypeMessages[type](params)), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n else {}\r\n}\r\nfunction isNavigationFailure(error, type) {\r\n return (error instanceof Error &&\r\n NavigationFailureSymbol in error &&\r\n (type == null || !!(error.type & type)));\r\n}\r\nconst propertiesToLog = ['params', 'query', 'hash'];\r\nfunction stringifyRoute(to) {\r\n if (typeof to === 'string')\r\n return to;\r\n if ('path' in to)\r\n return to.path;\r\n const location = {};\r\n for (const key of propertiesToLog) {\r\n if (key in to)\r\n location[key] = to[key];\r\n }\r\n return JSON.stringify(location, null, 2);\r\n}\n\n// default pattern for a param: non greedy everything but /\r\nconst BASE_PARAM_PATTERN = '[^/]+?';\r\nconst BASE_PATH_PARSER_OPTIONS = {\r\n sensitive: false,\r\n strict: false,\r\n start: true,\r\n end: true,\r\n};\r\n// Special Regex characters that must be escaped in static tokens\r\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\r\n/**\r\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\r\n *\r\n * @param segments - array of segments returned by tokenizePath\r\n * @param extraOptions - optional options for the regexp\r\n * @returns a PathParser\r\n */\r\nfunction tokensToParser(segments, extraOptions) {\r\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\r\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\r\n const score = [];\r\n // the regexp as a string\r\n let pattern = options.start ? '^' : '';\r\n // extracted keys\r\n const keys = [];\r\n for (const segment of segments) {\r\n // the root segment needs special treatment\r\n const segmentScores = segment.length ? [] : [90 /* Root */];\r\n // allow trailing slash\r\n if (options.strict && !segment.length)\r\n pattern += '/';\r\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\r\n const token = segment[tokenIndex];\r\n // resets the score if we are inside a sub segment /:a-other-:b\r\n let subSegmentScore = 40 /* Segment */ +\r\n (options.sensitive ? 0.25 /* BonusCaseSensitive */ : 0);\r\n if (token.type === 0 /* Static */) {\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n pattern += '/';\r\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\r\n subSegmentScore += 40 /* Static */;\r\n }\r\n else if (token.type === 1 /* Param */) {\r\n const { value, repeatable, optional, regexp } = token;\r\n keys.push({\r\n name: value,\r\n repeatable,\r\n optional,\r\n });\r\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\r\n // the user provided a custom regexp /:id(\\\\d+)\r\n if (re !== BASE_PARAM_PATTERN) {\r\n subSegmentScore += 10 /* BonusCustomRegExp */;\r\n // make sure the regexp is valid before using it\r\n try {\r\n new RegExp(`(${re})`);\r\n }\r\n catch (err) {\r\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\r\n err.message);\r\n }\r\n }\r\n // when we repeat we must take care of the repeating leading slash\r\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n subPattern =\r\n // avoid an optional / if there are more segments e.g. /:p?-static\r\n // or /:p?-:p2\r\n optional && segment.length < 2\r\n ? `(?:/${subPattern})`\r\n : '/' + subPattern;\r\n if (optional)\r\n subPattern += '?';\r\n pattern += subPattern;\r\n subSegmentScore += 20 /* Dynamic */;\r\n if (optional)\r\n subSegmentScore += -8 /* BonusOptional */;\r\n if (repeatable)\r\n subSegmentScore += -20 /* BonusRepeatable */;\r\n if (re === '.*')\r\n subSegmentScore += -50 /* BonusWildcard */;\r\n }\r\n segmentScores.push(subSegmentScore);\r\n }\r\n // an empty array like /home/ -> [[{home}], []]\r\n // if (!segment.length) pattern += '/'\r\n score.push(segmentScores);\r\n }\r\n // only apply the strict bonus to the last score\r\n if (options.strict && options.end) {\r\n const i = score.length - 1;\r\n score[i][score[i].length - 1] += 0.7000000000000001 /* BonusStrict */;\r\n }\r\n // TODO: dev only warn double trailing slash\r\n if (!options.strict)\r\n pattern += '/?';\r\n if (options.end)\r\n pattern += '$';\r\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\r\n else if (options.strict)\r\n pattern += '(?:/|$)';\r\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\r\n function parse(path) {\r\n const match = path.match(re);\r\n const params = {};\r\n if (!match)\r\n return null;\r\n for (let i = 1; i < match.length; i++) {\r\n const value = match[i] || '';\r\n const key = keys[i - 1];\r\n params[key.name] = value && key.repeatable ? value.split('/') : value;\r\n }\r\n return params;\r\n }\r\n function stringify(params) {\r\n let path = '';\r\n // for optional parameters to allow to be empty\r\n let avoidDuplicatedSlash = false;\r\n for (const segment of segments) {\r\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\r\n path += '/';\r\n avoidDuplicatedSlash = false;\r\n for (const token of segment) {\r\n if (token.type === 0 /* Static */) {\r\n path += token.value;\r\n }\r\n else if (token.type === 1 /* Param */) {\r\n const { value, repeatable, optional } = token;\r\n const param = value in params ? params[value] : '';\r\n if (Array.isArray(param) && !repeatable)\r\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\r\n const text = Array.isArray(param) ? param.join('/') : param;\r\n if (!text) {\r\n if (optional) {\r\n // if we have more than one optional param like /:a?-static we\r\n // don't need to care about the optional param\r\n if (segment.length < 2) {\r\n // remove the last slash as we could be at the end\r\n if (path.endsWith('/'))\r\n path = path.slice(0, -1);\r\n // do not append a slash on the next iteration\r\n else\r\n avoidDuplicatedSlash = true;\r\n }\r\n }\r\n else\r\n throw new Error(`Missing required param \"${value}\"`);\r\n }\r\n path += text;\r\n }\r\n }\r\n }\r\n return path;\r\n }\r\n return {\r\n re,\r\n score,\r\n keys,\r\n parse,\r\n stringify,\r\n };\r\n}\r\n/**\r\n * Compares an array of numbers as used in PathParser.score and returns a\r\n * number. This function can be used to `sort` an array\r\n *\r\n * @param a - first array of numbers\r\n * @param b - second array of numbers\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n * should be sorted first\r\n */\r\nfunction compareScoreArray(a, b) {\r\n let i = 0;\r\n while (i < a.length && i < b.length) {\r\n const diff = b[i] - a[i];\r\n // only keep going if diff === 0\r\n if (diff)\r\n return diff;\r\n i++;\r\n }\r\n // if the last subsegment was Static, the shorter segments should be sorted first\r\n // otherwise sort the longest segment first\r\n if (a.length < b.length) {\r\n return a.length === 1 && a[0] === 40 /* Static */ + 40 /* Segment */\r\n ? -1\r\n : 1;\r\n }\r\n else if (a.length > b.length) {\r\n return b.length === 1 && b[0] === 40 /* Static */ + 40 /* Segment */\r\n ? 1\r\n : -1;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * Compare function that can be used with `sort` to sort an array of PathParser\r\n *\r\n * @param a - first PathParser\r\n * @param b - second PathParser\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n */\r\nfunction comparePathParserScore(a, b) {\r\n let i = 0;\r\n const aScore = a.score;\r\n const bScore = b.score;\r\n while (i < aScore.length && i < bScore.length) {\r\n const comp = compareScoreArray(aScore[i], bScore[i]);\r\n // do not return if both are equal\r\n if (comp)\r\n return comp;\r\n i++;\r\n }\r\n // if a and b share the same score entries but b has more, sort b first\r\n return bScore.length - aScore.length;\r\n // this is the ternary version\r\n // return aScore.length < bScore.length\r\n // ? 1\r\n // : aScore.length > bScore.length\r\n // ? -1\r\n // : 0\r\n}\n\nconst ROOT_TOKEN = {\r\n type: 0 /* Static */,\r\n value: '',\r\n};\r\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\r\n// After some profiling, the cache seems to be unnecessary because tokenizePath\r\n// (the slowest part of adding a route) is very fast\r\n// const tokenCache = new Map<string, Token[][]>()\r\nfunction tokenizePath(path) {\r\n if (!path)\r\n return [[]];\r\n if (path === '/')\r\n return [[ROOT_TOKEN]];\r\n if (!path.startsWith('/')) {\r\n throw new Error(( true)\r\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\r\n : undefined);\r\n }\r\n // if (tokenCache.has(path)) return tokenCache.get(path)!\r\n function crash(message) {\r\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\r\n }\r\n let state = 0 /* Static */;\r\n let previousState = state;\r\n const tokens = [];\r\n // the segment will always be valid because we get into the initial state\r\n // with the leading /\r\n let segment;\r\n function finalizeSegment() {\r\n if (segment)\r\n tokens.push(segment);\r\n segment = [];\r\n }\r\n // index on the path\r\n let i = 0;\r\n // char at index\r\n let char;\r\n // buffer of the value read\r\n let buffer = '';\r\n // custom regexp for a param\r\n let customRe = '';\r\n function consumeBuffer() {\r\n if (!buffer)\r\n return;\r\n if (state === 0 /* Static */) {\r\n segment.push({\r\n type: 0 /* Static */,\r\n value: buffer,\r\n });\r\n }\r\n else if (state === 1 /* Param */ ||\r\n state === 2 /* ParamRegExp */ ||\r\n state === 3 /* ParamRegExpEnd */) {\r\n if (segment.length > 1 && (char === '*' || char === '+'))\r\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\r\n segment.push({\r\n type: 1 /* Param */,\r\n value: buffer,\r\n regexp: customRe,\r\n repeatable: char === '*' || char === '+',\r\n optional: char === '*' || char === '?',\r\n });\r\n }\r\n else {\r\n crash('Invalid state to consume buffer');\r\n }\r\n buffer = '';\r\n }\r\n function addCharToBuffer() {\r\n buffer += char;\r\n }\r\n while (i < path.length) {\r\n char = path[i++];\r\n if (char === '\\\\' && state !== 2 /* ParamRegExp */) {\r\n previousState = state;\r\n state = 4 /* EscapeNext */;\r\n continue;\r\n }\r\n switch (state) {\r\n case 0 /* Static */:\r\n if (char === '/') {\r\n if (buffer) {\r\n consumeBuffer();\r\n }\r\n finalizeSegment();\r\n }\r\n else if (char === ':') {\r\n consumeBuffer();\r\n state = 1 /* Param */;\r\n }\r\n else {\r\n addCharToBuffer();\r\n }\r\n break;\r\n case 4 /* EscapeNext */:\r\n addCharToBuffer();\r\n state = previousState;\r\n break;\r\n case 1 /* Param */:\r\n if (char === '(') {\r\n state = 2 /* ParamRegExp */;\r\n }\r\n else if (VALID_PARAM_RE.test(char)) {\r\n addCharToBuffer();\r\n }\r\n else {\r\n consumeBuffer();\r\n state = 0 /* Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n }\r\n break;\r\n case 2 /* ParamRegExp */:\r\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\r\n // it already works by escaping the closing )\r\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\r\n // is this really something people need since you can also write\r\n // /prefix_:p()_suffix\r\n if (char === ')') {\r\n // handle the escaped )\r\n if (customRe[customRe.length - 1] == '\\\\')\r\n customRe = customRe.slice(0, -1) + char;\r\n else\r\n state = 3 /* ParamRegExpEnd */;\r\n }\r\n else {\r\n customRe += char;\r\n }\r\n break;\r\n case 3 /* ParamRegExpEnd */:\r\n // same as finalizing a param\r\n consumeBuffer();\r\n state = 0 /* Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n customRe = '';\r\n break;\r\n default:\r\n crash('Unknown state');\r\n break;\r\n }\r\n }\r\n if (state === 2 /* ParamRegExp */)\r\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\r\n consumeBuffer();\r\n finalizeSegment();\r\n // tokenCache.set(path, tokens)\r\n return tokens;\r\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\r\n const parser = tokensToParser(tokenizePath(record.path), options);\r\n // warn against params with the same name\r\n if ((true)) {\r\n const existingKeys = new Set();\r\n for (const key of parser.keys) {\r\n if (existingKeys.has(key.name))\r\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\r\n existingKeys.add(key.name);\r\n }\r\n }\r\n const matcher = assign(parser, {\r\n record,\r\n parent,\r\n // these needs to be populated by the parent\r\n children: [],\r\n alias: [],\r\n });\r\n if (parent) {\r\n // both are aliases or both are not aliases\r\n // we don't want to mix them because the order is used when\r\n // passing originalRecord in Matcher.addRoute\r\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\r\n parent.children.push(matcher);\r\n }\r\n return matcher;\r\n}\n\n/**\r\n * Creates a Router Matcher.\r\n *\r\n * @internal\r\n * @param routes - array of initial routes\r\n * @param globalOptions - global route options\r\n */\r\nfunction createRouterMatcher(routes, globalOptions) {\r\n // normalized ordered array of matchers\r\n const matchers = [];\r\n const matcherMap = new Map();\r\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\r\n function getRecordMatcher(name) {\r\n return matcherMap.get(name);\r\n }\r\n function addRoute(record, parent, originalRecord) {\r\n // used later on to remove by name\r\n const isRootAdd = !originalRecord;\r\n const mainNormalizedRecord = normalizeRouteRecord(record);\r\n // we might be the child of an alias\r\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\r\n const options = mergeOptions(globalOptions, record);\r\n // generate an array of records to correctly handle aliases\r\n const normalizedRecords = [\r\n mainNormalizedRecord,\r\n ];\r\n if ('alias' in record) {\r\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\r\n for (const alias of aliases) {\r\n normalizedRecords.push(assign({}, mainNormalizedRecord, {\r\n // this allows us to hold a copy of the `components` option\r\n // so that async components cache is hold on the original record\r\n components: originalRecord\r\n ? originalRecord.record.components\r\n : mainNormalizedRecord.components,\r\n path: alias,\r\n // we might be the child of an alias\r\n aliasOf: originalRecord\r\n ? originalRecord.record\r\n : mainNormalizedRecord,\r\n // the aliases are always of the same kind as the original since they\r\n // are defined on the same record\r\n }));\r\n }\r\n }\r\n let matcher;\r\n let originalMatcher;\r\n for (const normalizedRecord of normalizedRecords) {\r\n const { path } = normalizedRecord;\r\n // Build up the path for nested routes if the child isn't an absolute\r\n // route. Only add the / delimiter if the child path isn't empty and if the\r\n // parent path doesn't have a trailing slash\r\n if (parent && path[0] !== '/') {\r\n const parentPath = parent.record.path;\r\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\r\n normalizedRecord.path =\r\n parent.record.path + (path && connectingSlash + path);\r\n }\r\n if (( true) && normalizedRecord.path === '*') {\r\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\r\n 'See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.');\r\n }\r\n // create the object before hand so it can be passed to children\r\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\r\n if (( true) && parent && path[0] === '/')\r\n checkMissingParamsInAbsolutePath(matcher, parent);\r\n // if we are an alias we must tell the original record that we exist\r\n // so we can be removed\r\n if (originalRecord) {\r\n originalRecord.alias.push(matcher);\r\n if ((true)) {\r\n checkSameParams(originalRecord, matcher);\r\n }\r\n }\r\n else {\r\n // otherwise, the first record is the original and others are aliases\r\n originalMatcher = originalMatcher || matcher;\r\n if (originalMatcher !== matcher)\r\n originalMatcher.alias.push(matcher);\r\n // remove the route if named and only for the top record (avoid in nested calls)\r\n // this works because the original record is the first one\r\n if (isRootAdd && record.name && !isAliasRecord(matcher))\r\n removeRoute(record.name);\r\n }\r\n if ('children' in mainNormalizedRecord) {\r\n const children = mainNormalizedRecord.children;\r\n for (let i = 0; i < children.length; i++) {\r\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\r\n }\r\n }\r\n // if there was no original record, then the first one was not an alias and all\r\n // other alias (if any) need to reference this record when adding children\r\n originalRecord = originalRecord || matcher;\r\n // TODO: add normalized records for more flexibility\r\n // if (parent && isAliasRecord(originalRecord)) {\r\n // parent.children.push(originalRecord)\r\n // }\r\n insertMatcher(matcher);\r\n }\r\n return originalMatcher\r\n ? () => {\r\n // since other matchers are aliases, they should be removed by the original matcher\r\n removeRoute(originalMatcher);\r\n }\r\n : noop;\r\n }\r\n function removeRoute(matcherRef) {\r\n if (isRouteName(matcherRef)) {\r\n const matcher = matcherMap.get(matcherRef);\r\n if (matcher) {\r\n matcherMap.delete(matcherRef);\r\n matchers.splice(matchers.indexOf(matcher), 1);\r\n matcher.children.forEach(removeRoute);\r\n matcher.alias.forEach(removeRoute);\r\n }\r\n }\r\n else {\r\n const index = matchers.indexOf(matcherRef);\r\n if (index > -1) {\r\n matchers.splice(index, 1);\r\n if (matcherRef.record.name)\r\n matcherMap.delete(matcherRef.record.name);\r\n matcherRef.children.forEach(removeRoute);\r\n matcherRef.alias.forEach(removeRoute);\r\n }\r\n }\r\n }\r\n function getRoutes() {\r\n return matchers;\r\n }\r\n function insertMatcher(matcher) {\r\n let i = 0;\r\n while (i < matchers.length &&\r\n comparePathParserScore(matcher, matchers[i]) >= 0 &&\r\n // Adding children with empty path should still appear before the parent\r\n // https://github.com/vuejs/router/issues/1124\r\n (matcher.record.path !== matchers[i].record.path ||\r\n !isRecordChildOf(matcher, matchers[i])))\r\n i++;\r\n matchers.splice(i, 0, matcher);\r\n // only add the original record to the name map\r\n if (matcher.record.name && !isAliasRecord(matcher))\r\n matcherMap.set(matcher.record.name, matcher);\r\n }\r\n function resolve(location, currentLocation) {\r\n let matcher;\r\n let params = {};\r\n let path;\r\n let name;\r\n if ('name' in location && location.name) {\r\n matcher = matcherMap.get(location.name);\r\n if (!matcher)\r\n throw createRouterError(1 /* MATCHER_NOT_FOUND */, {\r\n location,\r\n });\r\n name = matcher.record.name;\r\n params = assign(\r\n // paramsFromLocation is a new object\r\n paramsFromLocation(currentLocation.params, \r\n // only keep params that exist in the resolved location\r\n // TODO: only keep optional params coming from a parent record\r\n matcher.keys.filter(k => !k.optional).map(k => k.name)), location.params);\r\n // throws if cannot be stringified\r\n path = matcher.stringify(params);\r\n }\r\n else if ('path' in location) {\r\n // no need to resolve the path with the matcher as it was provided\r\n // this also allows the user to control the encoding\r\n path = location.path;\r\n if (( true) && !path.startsWith('/')) {\r\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/router.`);\r\n }\r\n matcher = matchers.find(m => m.re.test(path));\r\n // matcher should have a value after the loop\r\n if (matcher) {\r\n // TODO: dev warning of unused params if provided\r\n // we know the matcher works because we tested the regexp\r\n params = matcher.parse(path);\r\n name = matcher.record.name;\r\n }\r\n // location is a relative path\r\n }\r\n else {\r\n // match by name or path of current route\r\n matcher = currentLocation.name\r\n ? matcherMap.get(currentLocation.name)\r\n : matchers.find(m => m.re.test(currentLocation.path));\r\n if (!matcher)\r\n throw createRouterError(1 /* MATCHER_NOT_FOUND */, {\r\n location,\r\n currentLocation,\r\n });\r\n name = matcher.record.name;\r\n // since we are navigating to the same location, we don't need to pick the\r\n // params like when `name` is provided\r\n params = assign({}, currentLocation.params, location.params);\r\n path = matcher.stringify(params);\r\n }\r\n const matched = [];\r\n let parentMatcher = matcher;\r\n while (parentMatcher) {\r\n // reversed order so parents are at the beginning\r\n matched.unshift(parentMatcher.record);\r\n parentMatcher = parentMatcher.parent;\r\n }\r\n return {\r\n name,\r\n path,\r\n params,\r\n matched,\r\n meta: mergeMetaFields(matched),\r\n };\r\n }\r\n // add initial routes\r\n routes.forEach(route => addRoute(route));\r\n return { addRoute, resolve, removeRoute, getRoutes, getRecordMatcher };\r\n}\r\nfunction paramsFromLocation(params, keys) {\r\n const newParams = {};\r\n for (const key of keys) {\r\n if (key in params)\r\n newParams[key] = params[key];\r\n }\r\n return newParams;\r\n}\r\n/**\r\n * Normalizes a RouteRecordRaw. Creates a copy\r\n *\r\n * @param record\r\n * @returns the normalized version\r\n */\r\nfunction normalizeRouteRecord(record) {\r\n return {\r\n path: record.path,\r\n redirect: record.redirect,\r\n name: record.name,\r\n meta: record.meta || {},\r\n aliasOf: undefined,\r\n beforeEnter: record.beforeEnter,\r\n props: normalizeRecordProps(record),\r\n children: record.children || [],\r\n instances: {},\r\n leaveGuards: new Set(),\r\n updateGuards: new Set(),\r\n enterCallbacks: {},\r\n components: 'components' in record\r\n ? record.components || {}\r\n : { default: record.component },\r\n };\r\n}\r\n/**\r\n * Normalize the optional `props` in a record to always be an object similar to\r\n * components. Also accept a boolean for components.\r\n * @param record\r\n */\r\nfunction normalizeRecordProps(record) {\r\n const propsObject = {};\r\n // props does not exist on redirect records but we can set false directly\r\n const props = record.props || false;\r\n if ('component' in record) {\r\n propsObject.default = props;\r\n }\r\n else {\r\n // NOTE: we could also allow a function to be applied to every component.\r\n // Would need user feedback for use cases\r\n for (const name in record.components)\r\n propsObject[name] = typeof props === 'boolean' ? props : props[name];\r\n }\r\n return propsObject;\r\n}\r\n/**\r\n * Checks if a record or any of its parent is an alias\r\n * @param record\r\n */\r\nfunction isAliasRecord(record) {\r\n while (record) {\r\n if (record.record.aliasOf)\r\n return true;\r\n record = record.parent;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Merge meta fields of an array of records\r\n *\r\n * @param matched - array of matched records\r\n */\r\nfunction mergeMetaFields(matched) {\r\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\r\n}\r\nfunction mergeOptions(defaults, partialOptions) {\r\n const options = {};\r\n for (const key in defaults) {\r\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\r\n }\r\n return options;\r\n}\r\nfunction isSameParam(a, b) {\r\n return (a.name === b.name &&\r\n a.optional === b.optional &&\r\n a.repeatable === b.repeatable);\r\n}\r\n/**\r\n * Check if a path and its alias have the same required params\r\n *\r\n * @param a - original record\r\n * @param b - alias record\r\n */\r\nfunction checkSameParams(a, b) {\r\n for (const key of a.keys) {\r\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" should have the exact same param named \"${key.name}\"`);\r\n }\r\n for (const key of b.keys) {\r\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" should have the exact same param named \"${key.name}\"`);\r\n }\r\n}\r\nfunction checkMissingParamsInAbsolutePath(record, parent) {\r\n for (const key of parent.keys) {\r\n if (!record.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Absolute path \"${record.record.path}\" should have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\r\n }\r\n}\r\nfunction isRecordChildOf(record, parent) {\r\n return parent.children.some(child => child === record || isRecordChildOf(record, child));\r\n}\n\n/**\r\n * Encoding Rules ␣ = Space Path: ␣ \" < > # ? { } Query: ␣ \" < > # & = Hash: ␣ \"\r\n * < > `\r\n *\r\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\r\n * defines some extra characters to be encoded. Most browsers do not encode them\r\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\r\n * also encode `!'()*`. Leaving unencoded only ASCII alphanumeric(`a-zA-Z0-9`)\r\n * plus `-._~`. This extra safety should be applied to query by patching the\r\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\r\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\r\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\r\n * encoded everywhere because some browsers like FF encode it when directly\r\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\r\n */\r\n// const EXTRA_RESERVED_RE = /[!'()*]/g\r\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\r\nconst HASH_RE = /#/g; // %23\r\nconst AMPERSAND_RE = /&/g; // %26\r\nconst SLASH_RE = /\\//g; // %2F\r\nconst EQUAL_RE = /=/g; // %3D\r\nconst IM_RE = /\\?/g; // %3F\r\nconst PLUS_RE = /\\+/g; // %2B\r\n/**\r\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\r\n * seems to be less flexible than not doing so and I can't find out the legacy\r\n * systems requiring this for regular requests like text/html. In the standard,\r\n * the encoding of the plus character is only mentioned for\r\n * application/x-www-form-urlencoded\r\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\r\n * leave the plus character as is in queries. To be more flexible, we allow the\r\n * plus character on the query but it can also be manually encoded by the user.\r\n *\r\n * Resources:\r\n * - https://url.spec.whatwg.org/#urlencoded-parsing\r\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\r\n */\r\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\r\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\r\nconst ENC_CARET_RE = /%5E/g; // ^\r\nconst ENC_BACKTICK_RE = /%60/g; // `\r\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\r\nconst ENC_PIPE_RE = /%7C/g; // |\r\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\r\nconst ENC_SPACE_RE = /%20/g; // }\r\n/**\r\n * Encode characters that need to be encoded on the path, search and hash\r\n * sections of the URL.\r\n *\r\n * @internal\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction commonEncode(text) {\r\n return encodeURI('' + text)\r\n .replace(ENC_PIPE_RE, '|')\r\n .replace(ENC_BRACKET_OPEN_RE, '[')\r\n .replace(ENC_BRACKET_CLOSE_RE, ']');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the hash section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeHash(text) {\r\n return commonEncode(text)\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^');\r\n}\r\n/**\r\n * Encode characters that need to be encoded query values on the query\r\n * section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeQueryValue(text) {\r\n return (commonEncode(text)\r\n // Encode the space as +, encode the + to differentiate it from the space\r\n .replace(PLUS_RE, '%2B')\r\n .replace(ENC_SPACE_RE, '+')\r\n .replace(HASH_RE, '%23')\r\n .replace(AMPERSAND_RE, '%26')\r\n .replace(ENC_BACKTICK_RE, '`')\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^'));\r\n}\r\n/**\r\n * Like `encodeQueryValue` but also encodes the `=` character.\r\n *\r\n * @param text - string to encode\r\n */\r\nfunction encodeQueryKey(text) {\r\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodePath(text) {\r\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL as a\r\n * param. This function encodes everything {@link encodePath} does plus the\r\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\r\n * string instead.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeParam(text) {\r\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\r\n}\r\n/**\r\n * Decode text using `decodeURIComponent`. Returns the original text if it\r\n * fails.\r\n *\r\n * @param text - string to decode\r\n * @returns decoded string\r\n */\r\nfunction decode(text) {\r\n try {\r\n return decodeURIComponent('' + text);\r\n }\r\n catch (err) {\r\n ( true) && warn(`Error decoding \"${text}\". Using original value`);\r\n }\r\n return '' + text;\r\n}\n\n/**\r\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\r\n * version with the leading `?` and without Should work as URLSearchParams\r\n\n * @internal\r\n *\r\n * @param search - search string to parse\r\n * @returns a query object\r\n */\r\nfunction parseQuery(search) {\r\n const query = {};\r\n // avoid creating an object with an empty key and empty value\r\n // because of split('&')\r\n if (search === '' || search === '?')\r\n return query;\r\n const hasLeadingIM = search[0] === '?';\r\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\r\n for (let i = 0; i < searchParams.length; ++i) {\r\n // pre decode the + into space\r\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\r\n // allow the = character\r\n const eqPos = searchParam.indexOf('=');\r\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\r\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\r\n if (key in query) {\r\n // an extra variable for ts types\r\n let currentValue = query[key];\r\n if (!Array.isArray(currentValue)) {\r\n currentValue = query[key] = [currentValue];\r\n }\r\n currentValue.push(value);\r\n }\r\n else {\r\n query[key] = value;\r\n }\r\n }\r\n return query;\r\n}\r\n/**\r\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\r\n * doesn't prepend a `?`\r\n *\r\n * @internal\r\n *\r\n * @param query - query object to stringify\r\n * @returns string version of the query without the leading `?`\r\n */\r\nfunction stringifyQuery(query) {\r\n let search = '';\r\n for (let key in query) {\r\n const value = query[key];\r\n key = encodeQueryKey(key);\r\n if (value == null) {\r\n // only null adds the value\r\n if (value !== undefined) {\r\n search += (search.length ? '&' : '') + key;\r\n }\r\n continue;\r\n }\r\n // keep null values\r\n const values = Array.isArray(value)\r\n ? value.map(v => v && encodeQueryValue(v))\r\n : [value && encodeQueryValue(value)];\r\n values.forEach(value => {\r\n // skip undefined values in arrays as if they were not present\r\n // smaller code than using filter\r\n if (value !== undefined) {\r\n // only append & with non-empty search\r\n search += (search.length ? '&' : '') + key;\r\n if (value != null)\r\n search += '=' + value;\r\n }\r\n });\r\n }\r\n return search;\r\n}\r\n/**\r\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\r\n * numbers into strings, removing keys with an undefined value and replacing\r\n * undefined with null in arrays\r\n *\r\n * @param query - query object to normalize\r\n * @returns a normalized query object\r\n */\r\nfunction normalizeQuery(query) {\r\n const normalizedQuery = {};\r\n for (const key in query) {\r\n const value = query[key];\r\n if (value !== undefined) {\r\n normalizedQuery[key] = Array.isArray(value)\r\n ? value.map(v => (v == null ? null : '' + v))\r\n : value == null\r\n ? value\r\n : '' + value;\r\n }\r\n }\r\n return normalizedQuery;\r\n}\n\n/**\r\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\r\n */\r\nfunction useCallbacks() {\r\n let handlers = [];\r\n function add(handler) {\r\n handlers.push(handler);\r\n return () => {\r\n const i = handlers.indexOf(handler);\r\n if (i > -1)\r\n handlers.splice(i, 1);\r\n };\r\n }\r\n function reset() {\r\n handlers = [];\r\n }\r\n return {\r\n add,\r\n list: () => handlers,\r\n reset,\r\n };\r\n}\n\nfunction registerGuard(record, name, guard) {\r\n const removeFromList = () => {\r\n record[name].delete(guard);\r\n };\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"onUnmounted\"])(removeFromList);\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"onDeactivated\"])(removeFromList);\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"onActivated\"])(() => {\r\n record[name].add(guard);\r\n });\r\n record[name].add(guard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the component for the current\r\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\r\n * used in any component. The guard is removed when the component is unmounted.\r\n *\r\n * @param leaveGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteLeave(leaveGuard) {\r\n if (( true) && !Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"])()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n ( true) &&\r\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside of a component child of <router-view>. Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the current location is about\r\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\r\n * component. The guard is removed when the component is unmounted.\r\n *\r\n * @param updateGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteUpdate(updateGuard) {\r\n if (( true) && !Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"])()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n ( true) &&\r\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside of a component child of <router-view>. Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'updateGuards', updateGuard);\r\n}\r\nfunction guardToPromiseFn(guard, to, from, record, name) {\r\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\r\n const enterCallbackArray = record &&\r\n // name is defined if record is because of the function overload\r\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\r\n return () => new Promise((resolve, reject) => {\r\n const next = (valid) => {\r\n if (valid === false)\r\n reject(createRouterError(4 /* NAVIGATION_ABORTED */, {\r\n from,\r\n to,\r\n }));\r\n else if (valid instanceof Error) {\r\n reject(valid);\r\n }\r\n else if (isRouteLocation(valid)) {\r\n reject(createRouterError(2 /* NAVIGATION_GUARD_REDIRECT */, {\r\n from: to,\r\n to: valid,\r\n }));\r\n }\r\n else {\r\n if (enterCallbackArray &&\r\n // since enterCallbackArray is truthy, both record and name also are\r\n record.enterCallbacks[name] === enterCallbackArray &&\r\n typeof valid === 'function')\r\n enterCallbackArray.push(valid);\r\n resolve();\r\n }\r\n };\r\n // wrapping with Promise.resolve allows it to work with both async and sync guards\r\n const guardReturn = guard.call(record && record.instances[name], to, from, ( true) ? canOnlyBeCalledOnce(next, to, from) : undefined);\r\n let guardCall = Promise.resolve(guardReturn);\r\n if (guard.length < 3)\r\n guardCall = guardCall.then(next);\r\n if (( true) && guard.length > 2) {\r\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\r\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\r\n guardCall = guardCall.then(resolvedValue => {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n return Promise.reject(new Error('Invalid navigation guard'));\r\n }\r\n return resolvedValue;\r\n });\r\n // TODO: test me!\r\n }\r\n else if (guardReturn !== undefined) {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n reject(new Error('Invalid navigation guard'));\r\n return;\r\n }\r\n }\r\n }\r\n guardCall.catch(err => reject(err));\r\n });\r\n}\r\nfunction canOnlyBeCalledOnce(next, to, from) {\r\n let called = 0;\r\n return function () {\r\n if (called++ === 1)\r\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\r\n // @ts-expect-error: we put it in the original one because it's easier to check\r\n next._called = true;\r\n if (called === 1)\r\n next.apply(null, arguments);\r\n };\r\n}\r\nfunction extractComponentsGuards(matched, guardType, to, from) {\r\n const guards = [];\r\n for (const record of matched) {\r\n for (const name in record.components) {\r\n let rawComponent = record.components[name];\r\n if ((true)) {\r\n if (!rawComponent ||\r\n (typeof rawComponent !== 'object' &&\r\n typeof rawComponent !== 'function')) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\r\n ` a valid component. Received \"${String(rawComponent)}\".`);\r\n // throw to ensure we stop here but warn to ensure the message isn't\r\n // missed by the user\r\n throw new Error('Invalid route component');\r\n }\r\n else if ('then' in rawComponent) {\r\n // warn if user wrote import('/component.vue') instead of () =>\r\n // import('./component.vue')\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\r\n `Promise instead of a function that returns a Promise. Did you ` +\r\n `write \"import('./MyPage.vue')\" instead of ` +\r\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\r\n `production if not fixed.`);\r\n const promise = rawComponent;\r\n rawComponent = () => promise;\r\n }\r\n else if (rawComponent.__asyncLoader &&\r\n // warn only once per component\r\n !rawComponent.__warnedDefineAsync) {\r\n rawComponent.__warnedDefineAsync = true;\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\r\n `using \"defineAsyncComponent()\". ` +\r\n `Write \"() => import('./MyPage.vue')\" instead of ` +\r\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\r\n }\r\n }\r\n // skip update and leave guards if the route component is not mounted\r\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\r\n continue;\r\n if (isRouteComponent(rawComponent)) {\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = rawComponent.__vccOpts || rawComponent;\r\n const guard = options[guardType];\r\n guard && guards.push(guardToPromiseFn(guard, to, from, record, name));\r\n }\r\n else {\r\n // start requesting the chunk already\r\n let componentPromise = rawComponent();\r\n if (( true) && !('catch' in componentPromise)) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\r\n componentPromise = Promise.resolve(componentPromise);\r\n }\r\n guards.push(() => componentPromise.then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n record.components[name] = resolvedComponent;\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = resolvedComponent.__vccOpts || resolvedComponent;\r\n const guard = options[guardType];\r\n return guard && guardToPromiseFn(guard, to, from, record, name)();\r\n }));\r\n }\r\n }\r\n }\r\n return guards;\r\n}\r\n/**\r\n * Allows differentiating lazy components from functional components and vue-class-component\r\n *\r\n * @param component\r\n */\r\nfunction isRouteComponent(component) {\r\n return (typeof component === 'object' ||\r\n 'displayName' in component ||\r\n 'props' in component ||\r\n '__vccOpts' in component);\r\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\r\n// `isExactActive` behavior should go through an RFC\r\nfunction useLink(props) {\r\n const router = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(routerKey);\r\n const currentRoute = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(routeLocationKey);\r\n const route = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => router.resolve(Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(props.to)));\r\n const activeRecordIndex = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => {\r\n const { matched } = route.value;\r\n const { length } = matched;\r\n const routeMatched = matched[length - 1];\r\n const currentMatched = currentRoute.matched;\r\n if (!routeMatched || !currentMatched.length)\r\n return -1;\r\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\r\n if (index > -1)\r\n return index;\r\n // possible parent record\r\n const parentRecordPath = getOriginalPath(matched[length - 2]);\r\n return (\r\n // we are dealing with nested routes\r\n length > 1 &&\r\n // if the parent and matched route have the same path, this link is\r\n // referring to the empty child. Or we currently are on a different\r\n // child of the same parent\r\n getOriginalPath(routeMatched) === parentRecordPath &&\r\n // avoid comparing the child with its parent\r\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\r\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\r\n : index);\r\n });\r\n const isActive = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => activeRecordIndex.value > -1 &&\r\n includesParams(currentRoute.params, route.value.params));\r\n const isExactActive = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => activeRecordIndex.value > -1 &&\r\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\r\n isSameRouteLocationParams(currentRoute.params, route.value.params));\r\n function navigate(e = {}) {\r\n if (guardEvent(e)) {\r\n return router[Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(props.replace) ? 'replace' : 'push'](Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(props.to)\r\n // avoid uncaught errors are they are logged anyway\r\n ).catch(noop);\r\n }\r\n return Promise.resolve();\r\n }\r\n // devtools only\r\n if (( true) && isBrowser) {\r\n const instance = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"])();\r\n if (instance) {\r\n const linkContextDevtools = {\r\n route: route.value,\r\n isActive: isActive.value,\r\n isExactActive: isExactActive.value,\r\n };\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools = instance.__vrl_devtools || [];\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools.push(linkContextDevtools);\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"watchEffect\"])(() => {\r\n linkContextDevtools.route = route.value;\r\n linkContextDevtools.isActive = isActive.value;\r\n linkContextDevtools.isExactActive = isExactActive.value;\r\n }, { flush: 'post' });\r\n }\r\n }\r\n return {\r\n route,\r\n href: Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => route.value.href),\r\n isActive,\r\n isExactActive,\r\n navigate,\r\n };\r\n}\r\nconst RouterLinkImpl = /*#__PURE__*/ Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"defineComponent\"])({\r\n name: 'RouterLink',\r\n props: {\r\n to: {\r\n type: [String, Object],\r\n required: true,\r\n },\r\n replace: Boolean,\r\n activeClass: String,\r\n // inactiveClass: String,\r\n exactActiveClass: String,\r\n custom: Boolean,\r\n ariaCurrentValue: {\r\n type: String,\r\n default: 'page',\r\n },\r\n },\r\n useLink,\r\n setup(props, { slots }) {\r\n const link = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"])(useLink(props));\r\n const { options } = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(routerKey);\r\n const elClass = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => ({\r\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\r\n // [getLinkClass(\r\n // props.inactiveClass,\r\n // options.linkInactiveClass,\r\n // 'router-link-inactive'\r\n // )]: !link.isExactActive,\r\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\r\n }));\r\n return () => {\r\n const children = slots.default && slots.default(link);\r\n return props.custom\r\n ? children\r\n : Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"h\"])('a', {\r\n 'aria-current': link.isExactActive\r\n ? props.ariaCurrentValue\r\n : null,\r\n href: link.href,\r\n // this would override user added attrs but Vue will still add\r\n // the listener so we end up triggering both\r\n onClick: link.navigate,\r\n class: elClass.value,\r\n }, children);\r\n };\r\n },\r\n});\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to render a link that triggers a navigation on click.\r\n */\r\nconst RouterLink = RouterLinkImpl;\r\nfunction guardEvent(e) {\r\n // don't redirect with control keys\r\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\r\n return;\r\n // don't redirect when preventDefault called\r\n if (e.defaultPrevented)\r\n return;\r\n // don't redirect on right click\r\n if (e.button !== undefined && e.button !== 0)\r\n return;\r\n // don't redirect if `target=\"_blank\"`\r\n // @ts-expect-error getAttribute does exist\r\n if (e.currentTarget && e.currentTarget.getAttribute) {\r\n // @ts-expect-error getAttribute exists\r\n const target = e.currentTarget.getAttribute('target');\r\n if (/\\b_blank\\b/i.test(target))\r\n return;\r\n }\r\n // this may be a Weex event which doesn't have this method\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n return true;\r\n}\r\nfunction includesParams(outer, inner) {\r\n for (const key in inner) {\r\n const innerValue = inner[key];\r\n const outerValue = outer[key];\r\n if (typeof innerValue === 'string') {\r\n if (innerValue !== outerValue)\r\n return false;\r\n }\r\n else {\r\n if (!Array.isArray(outerValue) ||\r\n outerValue.length !== innerValue.length ||\r\n innerValue.some((value, i) => value !== outerValue[i]))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Get the original path value of a record by following its aliasOf\r\n * @param record\r\n */\r\nfunction getOriginalPath(record) {\r\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\r\n}\r\n/**\r\n * Utility class to get the active class based on defaults.\r\n * @param propClass\r\n * @param globalClass\r\n * @param defaultClass\r\n */\r\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\r\n ? propClass\r\n : globalClass != null\r\n ? globalClass\r\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"defineComponent\"])({\r\n name: 'RouterView',\r\n // #674 we manually inherit them\r\n inheritAttrs: false,\r\n props: {\r\n name: {\r\n type: String,\r\n default: 'default',\r\n },\r\n route: Object,\r\n },\r\n setup(props, { attrs, slots }) {\r\n ( true) && warnDeprecatedUsage();\r\n const injectedRoute = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(routerViewLocationKey);\r\n const routeToDisplay = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => props.route || injectedRoute.value);\r\n const depth = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(viewDepthKey, 0);\r\n const matchedRouteRef = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => routeToDisplay.value.matched[depth]);\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"provide\"])(viewDepthKey, depth + 1);\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"provide\"])(matchedRouteKey, matchedRouteRef);\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"provide\"])(routerViewLocationKey, routeToDisplay);\r\n const viewRef = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"ref\"])();\r\n // watch at the same time the component instance, the route record we are\r\n // rendering, and the name\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\r\n // copy reused instances\r\n if (to) {\r\n // this will update the instance for new instances as well as reused\r\n // instances when navigating to a new route\r\n to.instances[name] = instance;\r\n // the component instance is reused for a different route or name so\r\n // we copy any saved update or leave guards. With async setup, the\r\n // mounting component will mount before the matchedRoute changes,\r\n // making instance === oldInstance, so we check if guards have been\r\n // added before. This works because we remove guards when\r\n // unmounting/deactivating components\r\n if (from && from !== to && instance && instance === oldInstance) {\r\n if (!to.leaveGuards.size) {\r\n to.leaveGuards = from.leaveGuards;\r\n }\r\n if (!to.updateGuards.size) {\r\n to.updateGuards = from.updateGuards;\r\n }\r\n }\r\n }\r\n // trigger beforeRouteEnter next callbacks\r\n if (instance &&\r\n to &&\r\n // if there is no instance but to and from are the same this might be\r\n // the first visit\r\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\r\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\r\n }\r\n }, { flush: 'post' });\r\n return () => {\r\n const route = routeToDisplay.value;\r\n const matchedRoute = matchedRouteRef.value;\r\n const ViewComponent = matchedRoute && matchedRoute.components[props.name];\r\n // we need the value at the time we render because when we unmount, we\r\n // navigated to a different location so the value is different\r\n const currentName = props.name;\r\n if (!ViewComponent) {\r\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\r\n }\r\n // props from route configuration\r\n const routePropsOption = matchedRoute.props[props.name];\r\n const routeProps = routePropsOption\r\n ? routePropsOption === true\r\n ? route.params\r\n : typeof routePropsOption === 'function'\r\n ? routePropsOption(route)\r\n : routePropsOption\r\n : null;\r\n const onVnodeUnmounted = vnode => {\r\n // remove the instance reference to prevent leak\r\n if (vnode.component.isUnmounted) {\r\n matchedRoute.instances[currentName] = null;\r\n }\r\n };\r\n const component = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"h\"])(ViewComponent, assign({}, routeProps, attrs, {\r\n onVnodeUnmounted,\r\n ref: viewRef,\r\n }));\r\n if (( true) &&\r\n isBrowser &&\r\n component.ref) {\r\n // TODO: can display if it's an alias, its props\r\n const info = {\r\n depth,\r\n name: matchedRoute.name,\r\n path: matchedRoute.path,\r\n meta: matchedRoute.meta,\r\n };\r\n const internalInstances = Array.isArray(component.ref)\r\n ? component.ref.map(r => r.i)\r\n : [component.ref.i];\r\n internalInstances.forEach(instance => {\r\n // @ts-expect-error\r\n instance.__vrv_devtools = info;\r\n });\r\n }\r\n return (\r\n // pass the vnode to the slot as a prop.\r\n // h and <component :is=\"...\"> both accept vnodes\r\n normalizeSlot(slots.default, { Component: component, route }) ||\r\n component);\r\n };\r\n },\r\n});\r\nfunction normalizeSlot(slot, data) {\r\n if (!slot)\r\n return null;\r\n const slotContent = slot(data);\r\n return slotContent.length === 1 ? slotContent[0] : slotContent;\r\n}\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to display the current route the user is at.\r\n */\r\nconst RouterView = RouterViewImpl;\r\n// warn against deprecated usage with <transition> & <keep-alive>\r\n// due to functional component being no longer eager in Vue 3\r\nfunction warnDeprecatedUsage() {\r\n const instance = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"])();\r\n const parentName = instance.parent && instance.parent.type.name;\r\n if (parentName &&\r\n (parentName === 'KeepAlive' || parentName.includes('Transition'))) {\r\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\r\n warn(`<router-view> can no longer be used directly inside <transition> or <keep-alive>.\\n` +\r\n `Use slot props instead:\\n\\n` +\r\n `<router-view v-slot=\"{ Component }\">\\n` +\r\n ` <${comp}>\\n` +\r\n ` <component :is=\"Component\" />\\n` +\r\n ` </${comp}>\\n` +\r\n `</router-view>`);\r\n }\r\n}\n\nfunction formatRouteLocation(routeLocation, tooltip) {\r\n const copy = assign({}, routeLocation, {\r\n // remove variables that can contain vue instances\r\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\r\n });\r\n return {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: routeLocation.fullPath,\r\n tooltip,\r\n value: copy,\r\n },\r\n };\r\n}\r\nfunction formatDisplay(display) {\r\n return {\r\n _custom: {\r\n display,\r\n },\r\n };\r\n}\r\n// to support multiple router instances\r\nlet routerId = 0;\r\nfunction addDevtools(app, router, matcher) {\r\n // Take over router.beforeEach and afterEach\r\n // make sure we are not registering the devtool twice\r\n if (router.__hasDevtools)\r\n return;\r\n router.__hasDevtools = true;\r\n // increment to support multiple router instances\r\n const id = routerId++;\r\n Object(_vue_devtools_api__WEBPACK_IMPORTED_MODULE_1__[\"setupDevtoolsPlugin\"])({\r\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\r\n label: 'Vue Router',\r\n packageName: 'vue-router',\r\n homepage: 'https://router.vuejs.org',\r\n logo: 'https://router.vuejs.org/logo.png',\r\n componentStateTypes: ['Routing'],\r\n app,\r\n }, api => {\r\n // display state added by the router\r\n api.on.inspectComponent((payload, ctx) => {\r\n if (payload.instanceData) {\r\n payload.instanceData.state.push({\r\n type: 'Routing',\r\n key: '$route',\r\n editable: false,\r\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\r\n });\r\n }\r\n });\r\n // mark router-link as active and display tags on router views\r\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\r\n if (componentInstance.__vrv_devtools) {\r\n const info = componentInstance.__vrv_devtools;\r\n node.tags.push({\r\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\r\n textColor: 0,\r\n tooltip: 'This component is rendered by <router-view>',\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n // if multiple useLink are used\r\n if (Array.isArray(componentInstance.__vrl_devtools)) {\r\n componentInstance.__devtoolsApi = api;\r\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\r\n let backgroundColor = ORANGE_400;\r\n let tooltip = '';\r\n if (devtoolsData.isExactActive) {\r\n backgroundColor = LIME_500;\r\n tooltip = 'This is exactly active';\r\n }\r\n else if (devtoolsData.isActive) {\r\n backgroundColor = BLUE_600;\r\n tooltip = 'This link is active';\r\n }\r\n node.tags.push({\r\n label: devtoolsData.route.path,\r\n textColor: 0,\r\n tooltip,\r\n backgroundColor,\r\n });\r\n });\r\n }\r\n });\r\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])(router.currentRoute, () => {\r\n // refresh active state\r\n refreshRoutesView();\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n const navigationsLayerId = 'router:navigations:' + id;\r\n api.addTimelineLayer({\r\n id: navigationsLayerId,\r\n label: `Router${id ? ' ' + id : ''} Navigations`,\r\n color: 0x40a8c4,\r\n });\r\n // const errorsLayerId = 'router:errors'\r\n // api.addTimelineLayer({\r\n // id: errorsLayerId,\r\n // label: 'Router Errors',\r\n // color: 0xea5455,\r\n // })\r\n router.onError((error, to) => {\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'Error during Navigation',\r\n subtitle: to.fullPath,\r\n logType: 'error',\r\n time: api.now(),\r\n data: { error },\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n // attached to `meta` and used to group events\r\n let navigationId = 0;\r\n router.beforeEach((to, from) => {\r\n const data = {\r\n guard: formatDisplay('beforeEach'),\r\n from: formatRouteLocation(from, 'Current Location during this navigation'),\r\n to: formatRouteLocation(to, 'Target location'),\r\n };\r\n // Used to group navigations together, hide from devtools\r\n Object.defineProperty(to.meta, '__navigationId', {\r\n value: navigationId++,\r\n });\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n time: api.now(),\r\n title: 'Start of navigation',\r\n subtitle: to.fullPath,\r\n data,\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n router.afterEach((to, from, failure) => {\r\n const data = {\r\n guard: formatDisplay('afterEach'),\r\n };\r\n if (failure) {\r\n data.failure = {\r\n _custom: {\r\n type: Error,\r\n readOnly: true,\r\n display: failure ? failure.message : '',\r\n tooltip: 'Navigation Failure',\r\n value: failure,\r\n },\r\n };\r\n data.status = formatDisplay('❌');\r\n }\r\n else {\r\n data.status = formatDisplay('✅');\r\n }\r\n // we set here to have the right order\r\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\r\n data.to = formatRouteLocation(to, 'Target location');\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'End of navigation',\r\n subtitle: to.fullPath,\r\n time: api.now(),\r\n data,\r\n logType: failure ? 'warning' : 'default',\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n /**\r\n * Inspector of Existing routes\r\n */\r\n const routerInspectorId = 'router-inspector:' + id;\r\n api.addInspector({\r\n id: routerInspectorId,\r\n label: 'Routes' + (id ? ' ' + id : ''),\r\n icon: 'book',\r\n treeFilterPlaceholder: 'Search routes',\r\n });\r\n function refreshRoutesView() {\r\n // the routes view isn't active\r\n if (!activeRoutesPayload)\r\n return;\r\n const payload = activeRoutesPayload;\r\n // children routes will appear as nested\r\n let routes = matcher.getRoutes().filter(route => !route.parent);\r\n // reset match state to false\r\n routes.forEach(resetMatchStateOnRouteRecord);\r\n // apply a match state if there is a payload\r\n if (payload.filter) {\r\n routes = routes.filter(route => \r\n // save matches state based on the payload\r\n isRouteMatching(route, payload.filter.toLowerCase()));\r\n }\r\n // mark active routes\r\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\r\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\r\n }\r\n let activeRoutesPayload;\r\n api.on.getInspectorTree(payload => {\r\n activeRoutesPayload = payload;\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n refreshRoutesView();\r\n }\r\n });\r\n /**\r\n * Display information about the currently selected route record\r\n */\r\n api.on.getInspectorState(payload => {\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n const routes = matcher.getRoutes();\r\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\r\n if (route) {\r\n payload.state = {\r\n options: formatRouteRecordMatcherForStateInspector(route),\r\n };\r\n }\r\n }\r\n });\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n}\r\nfunction modifierForKey(key) {\r\n if (key.optional) {\r\n return key.repeatable ? '*' : '?';\r\n }\r\n else {\r\n return key.repeatable ? '+' : '';\r\n }\r\n}\r\nfunction formatRouteRecordMatcherForStateInspector(route) {\r\n const { record } = route;\r\n const fields = [\r\n { editable: false, key: 'path', value: record.path },\r\n ];\r\n if (record.name != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'name',\r\n value: record.name,\r\n });\r\n }\r\n fields.push({ editable: false, key: 'regexp', value: route.re });\r\n if (route.keys.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'keys',\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.keys\r\n .map(key => `${key.name}${modifierForKey(key)}`)\r\n .join(' '),\r\n tooltip: 'Param keys',\r\n value: route.keys,\r\n },\r\n },\r\n });\r\n }\r\n if (record.redirect != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'redirect',\r\n value: record.redirect,\r\n });\r\n }\r\n if (route.alias.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'aliases',\r\n value: route.alias.map(alias => alias.record.path),\r\n });\r\n }\r\n fields.push({\r\n key: 'score',\r\n editable: false,\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.score.map(score => score.join(', ')).join(' | '),\r\n tooltip: 'Score used to sort routes',\r\n value: route.score,\r\n },\r\n },\r\n });\r\n return fields;\r\n}\r\n/**\r\n * Extracted from tailwind palette\r\n */\r\nconst PINK_500 = 0xec4899;\r\nconst BLUE_600 = 0x2563eb;\r\nconst LIME_500 = 0x84cc16;\r\nconst CYAN_400 = 0x22d3ee;\r\nconst ORANGE_400 = 0xfb923c;\r\n// const GRAY_100 = 0xf4f4f5\r\nconst DARK = 0x666666;\r\nfunction formatRouteRecordForInspector(route) {\r\n const tags = [];\r\n const { record } = route;\r\n if (record.name != null) {\r\n tags.push({\r\n label: String(record.name),\r\n textColor: 0,\r\n backgroundColor: CYAN_400,\r\n });\r\n }\r\n if (record.aliasOf) {\r\n tags.push({\r\n label: 'alias',\r\n textColor: 0,\r\n backgroundColor: ORANGE_400,\r\n });\r\n }\r\n if (route.__vd_match) {\r\n tags.push({\r\n label: 'matches',\r\n textColor: 0,\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n if (route.__vd_exactActive) {\r\n tags.push({\r\n label: 'exact',\r\n textColor: 0,\r\n backgroundColor: LIME_500,\r\n });\r\n }\r\n if (route.__vd_active) {\r\n tags.push({\r\n label: 'active',\r\n textColor: 0,\r\n backgroundColor: BLUE_600,\r\n });\r\n }\r\n if (record.redirect) {\r\n tags.push({\r\n label: 'redirect: ' +\r\n (typeof record.redirect === 'string' ? record.redirect : 'Object'),\r\n textColor: 0xffffff,\r\n backgroundColor: DARK,\r\n });\r\n }\r\n // add an id to be able to select it. Using the `path` is not possible because\r\n // empty path children would collide with their parents\r\n let id = record.__vd_id;\r\n if (id == null) {\r\n id = String(routeRecordId++);\r\n record.__vd_id = id;\r\n }\r\n return {\r\n id,\r\n label: record.path,\r\n tags,\r\n children: route.children.map(formatRouteRecordForInspector),\r\n };\r\n}\r\n// incremental id for route records and inspector state\r\nlet routeRecordId = 0;\r\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\r\nfunction markRouteRecordActive(route, currentRoute) {\r\n // no route will be active if matched is empty\r\n // reset the matching state\r\n const isExactActive = currentRoute.matched.length &&\r\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\r\n route.__vd_exactActive = route.__vd_active = isExactActive;\r\n if (!isExactActive) {\r\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\r\n }\r\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\r\n}\r\nfunction resetMatchStateOnRouteRecord(route) {\r\n route.__vd_match = false;\r\n route.children.forEach(resetMatchStateOnRouteRecord);\r\n}\r\nfunction isRouteMatching(route, filter) {\r\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\r\n route.__vd_match = false;\r\n if (!found || found.length < 3) {\r\n return false;\r\n }\r\n // use a regexp without $ at the end to match nested routes better\r\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\r\n if (nonEndingRE.test(filter)) {\r\n // mark children as matches\r\n route.children.forEach(child => isRouteMatching(child, filter));\r\n // exception case: `/`\r\n if (route.record.path !== '/' || filter === '/') {\r\n route.__vd_match = route.re.test(filter);\r\n return true;\r\n }\r\n // hide the / route\r\n return false;\r\n }\r\n const path = route.record.path.toLowerCase();\r\n const decodedPath = decode(path);\r\n // also allow partial matching on the path\r\n if (!filter.startsWith('/') &&\r\n (decodedPath.includes(filter) || path.includes(filter)))\r\n return true;\r\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\r\n return true;\r\n if (route.record.name && String(route.record.name).includes(filter))\r\n return true;\r\n return route.children.some(child => isRouteMatching(child, filter));\r\n}\r\nfunction omit(obj, keys) {\r\n const ret = {};\r\n for (const key in obj) {\r\n if (!keys.includes(key)) {\r\n // @ts-expect-error\r\n ret[key] = obj[key];\r\n }\r\n }\r\n return ret;\r\n}\n\n/**\r\n * Creates a Router instance that can be used by a Vue app.\r\n *\r\n * @param options - {@link RouterOptions}\r\n */\r\nfunction createRouter(options) {\r\n const matcher = createRouterMatcher(options.routes, options);\r\n const parseQuery$1 = options.parseQuery || parseQuery;\r\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\r\n const routerHistory = options.history;\r\n if (( true) && !routerHistory)\r\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\r\n ' https://next.router.vuejs.org/api/#history.');\r\n const beforeGuards = useCallbacks();\r\n const beforeResolveGuards = useCallbacks();\r\n const afterGuards = useCallbacks();\r\n const currentRoute = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"shallowRef\"])(START_LOCATION_NORMALIZED);\r\n let pendingLocation = START_LOCATION_NORMALIZED;\r\n // leave the scrollRestoration if no scrollBehavior is provided\r\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\r\n history.scrollRestoration = 'manual';\r\n }\r\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\r\n const encodeParams = applyToParams.bind(null, encodeParam);\r\n const decodeParams = \r\n // @ts-expect-error: intentionally avoid the type check\r\n applyToParams.bind(null, decode);\r\n function addRoute(parentOrRoute, route) {\r\n let parent;\r\n let record;\r\n if (isRouteName(parentOrRoute)) {\r\n parent = matcher.getRecordMatcher(parentOrRoute);\r\n record = route;\r\n }\r\n else {\r\n record = parentOrRoute;\r\n }\r\n return matcher.addRoute(record, parent);\r\n }\r\n function removeRoute(name) {\r\n const recordMatcher = matcher.getRecordMatcher(name);\r\n if (recordMatcher) {\r\n matcher.removeRoute(recordMatcher);\r\n }\r\n else if ((true)) {\r\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\r\n }\r\n }\r\n function getRoutes() {\r\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\r\n }\r\n function hasRoute(name) {\r\n return !!matcher.getRecordMatcher(name);\r\n }\r\n function resolve(rawLocation, currentLocation) {\r\n // const objectLocation = routerLocationAsObject(rawLocation)\r\n // we create a copy to modify it later\r\n currentLocation = assign({}, currentLocation || currentRoute.value);\r\n if (typeof rawLocation === 'string') {\r\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\r\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\r\n const href = routerHistory.createHref(locationNormalized.fullPath);\r\n if ((true)) {\r\n if (href.startsWith('//'))\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${rawLocation}\"`);\r\n }\r\n }\r\n // locationNormalized is always a new object\r\n return assign(locationNormalized, matchedRoute, {\r\n params: decodeParams(matchedRoute.params),\r\n hash: decode(locationNormalized.hash),\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n let matcherLocation;\r\n // path could be relative in object as well\r\n if ('path' in rawLocation) {\r\n if (( true) &&\r\n 'params' in rawLocation &&\r\n !('name' in rawLocation) &&\r\n // @ts-expect-error: the type is never\r\n Object.keys(rawLocation.params).length) {\r\n warn(`Path \"${\r\n // @ts-expect-error: the type is never\r\n rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\r\n }\r\n matcherLocation = assign({}, rawLocation, {\r\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\r\n });\r\n }\r\n else {\r\n // remove any nullish param\r\n const targetParams = assign({}, rawLocation.params);\r\n for (const key in targetParams) {\r\n if (targetParams[key] == null) {\r\n delete targetParams[key];\r\n }\r\n }\r\n // pass encoded values to the matcher so it can produce encoded path and fullPath\r\n matcherLocation = assign({}, rawLocation, {\r\n params: encodeParams(rawLocation.params),\r\n });\r\n // current location params are decoded, we need to encode them in case the\r\n // matcher merges the params\r\n currentLocation.params = encodeParams(currentLocation.params);\r\n }\r\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\r\n const hash = rawLocation.hash || '';\r\n if (( true) && hash && !hash.startsWith('#')) {\r\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\r\n }\r\n // decoding them) the matcher might have merged current location params so\r\n // we need to run the decoding again\r\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\r\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\r\n hash: encodeHash(hash),\r\n path: matchedRoute.path,\r\n }));\r\n const href = routerHistory.createHref(fullPath);\r\n if ((true)) {\r\n if (href.startsWith('//')) {\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n }\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${'path' in rawLocation ? rawLocation.path : rawLocation}\"`);\r\n }\r\n }\r\n return assign({\r\n fullPath,\r\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\r\n // hash\r\n hash,\r\n query: \r\n // if the user is using a custom query lib like qs, we might have\r\n // nested objects, so we keep the query as is, meaning it can contain\r\n // numbers at `$route.query`, but at the point, the user will have to\r\n // use their own type anyway.\r\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\r\n stringifyQuery$1 === stringifyQuery\r\n ? normalizeQuery(rawLocation.query)\r\n : (rawLocation.query || {}),\r\n }, matchedRoute, {\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n function locationAsObject(to) {\r\n return typeof to === 'string'\r\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\r\n : assign({}, to);\r\n }\r\n function checkCanceledNavigation(to, from) {\r\n if (pendingLocation !== to) {\r\n return createRouterError(8 /* NAVIGATION_CANCELLED */, {\r\n from,\r\n to,\r\n });\r\n }\r\n }\r\n function push(to) {\r\n return pushWithRedirect(to);\r\n }\r\n function replace(to) {\r\n return push(assign(locationAsObject(to), { replace: true }));\r\n }\r\n function handleRedirectRecord(to) {\r\n const lastMatched = to.matched[to.matched.length - 1];\r\n if (lastMatched && lastMatched.redirect) {\r\n const { redirect } = lastMatched;\r\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\r\n if (typeof newTargetLocation === 'string') {\r\n newTargetLocation =\r\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\r\n ? (newTargetLocation = locationAsObject(newTargetLocation))\r\n : // force empty params\r\n { path: newTargetLocation };\r\n // @ts-expect-error: force empty params when a string is passed to let\r\n // the router parse them again\r\n newTargetLocation.params = {};\r\n }\r\n if (( true) &&\r\n !('path' in newTargetLocation) &&\r\n !('name' in newTargetLocation)) {\r\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\r\n throw new Error('Invalid redirect');\r\n }\r\n return assign({\r\n query: to.query,\r\n hash: to.hash,\r\n params: to.params,\r\n }, newTargetLocation);\r\n }\r\n }\r\n function pushWithRedirect(to, redirectedFrom) {\r\n const targetLocation = (pendingLocation = resolve(to));\r\n const from = currentRoute.value;\r\n const data = to.state;\r\n const force = to.force;\r\n // to could be a string where `replace` is a function\r\n const replace = to.replace === true;\r\n const shouldRedirect = handleRedirectRecord(targetLocation);\r\n if (shouldRedirect)\r\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\r\n state: data,\r\n force,\r\n replace,\r\n }), \r\n // keep original redirectedFrom if it exists\r\n redirectedFrom || targetLocation);\r\n // if it was a redirect we already called `pushWithRedirect` above\r\n const toLocation = targetLocation;\r\n toLocation.redirectedFrom = redirectedFrom;\r\n let failure;\r\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\r\n failure = createRouterError(16 /* NAVIGATION_DUPLICATED */, { to: toLocation, from });\r\n // trigger scroll to allow scrolling to the same anchor\r\n handleScroll(from, from, \r\n // this is a push, the only way for it to be triggered from a\r\n // history.listen is with a redirect, which makes it become a push\r\n true, \r\n // This cannot be the first navigation because the initial location\r\n // cannot be manually navigated to\r\n false);\r\n }\r\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\r\n .catch((error) => isNavigationFailure(error)\r\n ? // navigation redirects still mark the router as ready\r\n isNavigationFailure(error, 2 /* NAVIGATION_GUARD_REDIRECT */)\r\n ? error\r\n : markAsReady(error) // also returns the error\r\n : // reject any unknown error\r\n triggerError(error, toLocation, from))\r\n .then((failure) => {\r\n if (failure) {\r\n if (isNavigationFailure(failure, 2 /* NAVIGATION_GUARD_REDIRECT */)) {\r\n if (( true) &&\r\n // we are redirecting to the same location we were already at\r\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\r\n // and we have done it a couple of times\r\n redirectedFrom &&\r\n // @ts-expect-error: added only in dev\r\n (redirectedFrom._count = redirectedFrom._count\r\n ? // @ts-expect-error\r\n redirectedFrom._count + 1\r\n : 1) > 10) {\r\n warn(`Detected an infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow. This will break in production if not fixed.`);\r\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\r\n }\r\n return pushWithRedirect(\r\n // keep options\r\n assign(locationAsObject(failure.to), {\r\n state: data,\r\n force,\r\n replace,\r\n }), \r\n // preserve the original redirectedFrom if any\r\n redirectedFrom || toLocation);\r\n }\r\n }\r\n else {\r\n // if we fail we don't finalize the navigation\r\n failure = finalizeNavigation(toLocation, from, true, replace, data);\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n return failure;\r\n });\r\n }\r\n /**\r\n * Helper to reject and skip all navigation guards if a new navigation happened\r\n * @param to\r\n * @param from\r\n */\r\n function checkCanceledNavigationAndReject(to, from) {\r\n const error = checkCanceledNavigation(to, from);\r\n return error ? Promise.reject(error) : Promise.resolve();\r\n }\r\n // TODO: refactor the whole before guards by internally using router.beforeEach\r\n function navigate(to, from) {\r\n let guards;\r\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\r\n // all components here have been resolved once because we are leaving\r\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\r\n // leavingRecords is already reversed\r\n for (const record of leavingRecords) {\r\n record.leaveGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeRouteLeave guards\r\n return (runGuardQueue(guards)\r\n .then(() => {\r\n // check global guards beforeEach\r\n guards = [];\r\n for (const guard of beforeGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check in components beforeRouteUpdate\r\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\r\n for (const record of updatingRecords) {\r\n record.updateGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check the route beforeEnter\r\n guards = [];\r\n for (const record of to.matched) {\r\n // do not trigger beforeEnter on reused views\r\n if (record.beforeEnter && !from.matched.includes(record)) {\r\n if (Array.isArray(record.beforeEnter)) {\r\n for (const beforeEnter of record.beforeEnter)\r\n guards.push(guardToPromiseFn(beforeEnter, to, from));\r\n }\r\n else {\r\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\r\n }\r\n }\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise<Component>\r\n // clear existing enterCallbacks, these are added by extractComponentsGuards\r\n to.matched.forEach(record => (record.enterCallbacks = {}));\r\n // check in-component beforeRouteEnter\r\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check global guards beforeResolve\r\n guards = [];\r\n for (const guard of beforeResolveGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n // catch any navigation canceled\r\n .catch(err => isNavigationFailure(err, 8 /* NAVIGATION_CANCELLED */)\r\n ? err\r\n : Promise.reject(err)));\r\n }\r\n function triggerAfterEach(to, from, failure) {\r\n // navigation is confirmed, call afterGuards\r\n // TODO: wrap with error handlers\r\n for (const guard of afterGuards.list())\r\n guard(to, from, failure);\r\n }\r\n /**\r\n * - Cleans up any navigation guards\r\n * - Changes the url if necessary\r\n * - Calls the scrollBehavior\r\n */\r\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\r\n // a more recent navigation took place\r\n const error = checkCanceledNavigation(toLocation, from);\r\n if (error)\r\n return error;\r\n // only consider as push if it's not the first navigation\r\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\r\n const state = !isBrowser ? {} : history.state;\r\n // change URL only if the user did a push/replace and if it's not the initial navigation because\r\n // it's just reflecting the url\r\n if (isPush) {\r\n // on the initial navigation, we want to reuse the scroll position from\r\n // history state if it exists\r\n if (replace || isFirstNavigation)\r\n routerHistory.replace(toLocation.fullPath, assign({\r\n scroll: isFirstNavigation && state && state.scroll,\r\n }, data));\r\n else\r\n routerHistory.push(toLocation.fullPath, data);\r\n }\r\n // accept current navigation\r\n currentRoute.value = toLocation;\r\n handleScroll(toLocation, from, isPush, isFirstNavigation);\r\n markAsReady();\r\n }\r\n let removeHistoryListener;\r\n // attach listener to history to trigger navigations\r\n function setupListeners() {\r\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\r\n // cannot be a redirect route because it was in history\r\n const toLocation = resolve(to);\r\n // due to dynamic routing, and to hash history with manual navigation\r\n // (manually changing the url or calling history.hash = '#/somewhere'),\r\n // there could be a redirect record in history\r\n const shouldRedirect = handleRedirectRecord(toLocation);\r\n if (shouldRedirect) {\r\n pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\r\n return;\r\n }\r\n pendingLocation = toLocation;\r\n const from = currentRoute.value;\r\n // TODO: should be moved to web history?\r\n if (isBrowser) {\r\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\r\n }\r\n navigate(toLocation, from)\r\n .catch((error) => {\r\n if (isNavigationFailure(error, 4 /* NAVIGATION_ABORTED */ | 8 /* NAVIGATION_CANCELLED */)) {\r\n return error;\r\n }\r\n if (isNavigationFailure(error, 2 /* NAVIGATION_GUARD_REDIRECT */)) {\r\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\r\n // false) but this is bug prone as we have no way to wait the\r\n // navigation to be finished before calling pushWithRedirect. Using\r\n // a setTimeout of 16ms seems to work but there is not guarantee for\r\n // it to work on every browser. So Instead we do not restore the\r\n // history entry and trigger a new navigation as requested by the\r\n // navigation guard.\r\n // the error is already handled by router.push we just want to avoid\r\n // logging the error\r\n pushWithRedirect(error.to, toLocation\r\n // avoid an uncaught rejection, let push call triggerError\r\n )\r\n .then(failure => {\r\n // manual change in hash history #916 ending up in the URL not\r\n // changing but it was changed by the manual url change, so we\r\n // need to manually change it ourselves\r\n if (isNavigationFailure(failure, 4 /* NAVIGATION_ABORTED */ |\r\n 16 /* NAVIGATION_DUPLICATED */) &&\r\n !info.delta &&\r\n info.type === NavigationType.pop) {\r\n routerHistory.go(-1, false);\r\n }\r\n })\r\n .catch(noop);\r\n // avoid the then branch\r\n return Promise.reject();\r\n }\r\n // do not restore history on unknown direction\r\n if (info.delta)\r\n routerHistory.go(-info.delta, false);\r\n // unrecognized error, transfer to the global handler\r\n return triggerError(error, toLocation, from);\r\n })\r\n .then((failure) => {\r\n failure =\r\n failure ||\r\n finalizeNavigation(\r\n // after navigation, all matched components are resolved\r\n toLocation, from, false);\r\n // revert the navigation\r\n if (failure) {\r\n if (info.delta) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n else if (info.type === NavigationType.pop &&\r\n isNavigationFailure(failure, 4 /* NAVIGATION_ABORTED */ | 16 /* NAVIGATION_DUPLICATED */)) {\r\n // manual change in hash history #916\r\n // it's like a push but lacks the information of the direction\r\n routerHistory.go(-1, false);\r\n }\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n })\r\n .catch(noop);\r\n });\r\n }\r\n // Initialization and Errors\r\n let readyHandlers = useCallbacks();\r\n let errorHandlers = useCallbacks();\r\n let ready;\r\n /**\r\n * Trigger errorHandlers added via onError and throws the error as well\r\n *\r\n * @param error - error to throw\r\n * @param to - location we were navigating to when the error happened\r\n * @param from - location we were navigating from when the error happened\r\n * @returns the error as a rejected promise\r\n */\r\n function triggerError(error, to, from) {\r\n markAsReady(error);\r\n const list = errorHandlers.list();\r\n if (list.length) {\r\n list.forEach(handler => handler(error, to, from));\r\n }\r\n else {\r\n if ((true)) {\r\n warn('uncaught error during route navigation:');\r\n }\r\n console.error(error);\r\n }\r\n return Promise.reject(error);\r\n }\r\n function isReady() {\r\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\r\n return Promise.resolve();\r\n return new Promise((resolve, reject) => {\r\n readyHandlers.add([resolve, reject]);\r\n });\r\n }\r\n function markAsReady(err) {\r\n if (!ready) {\r\n // still not ready if an error happened\r\n ready = !err;\r\n setupListeners();\r\n readyHandlers\r\n .list()\r\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\r\n readyHandlers.reset();\r\n }\r\n return err;\r\n }\r\n // Scroll behavior\r\n function handleScroll(to, from, isPush, isFirstNavigation) {\r\n const { scrollBehavior } = options;\r\n if (!isBrowser || !scrollBehavior)\r\n return Promise.resolve();\r\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\r\n ((isFirstNavigation || !isPush) &&\r\n history.state &&\r\n history.state.scroll) ||\r\n null;\r\n return Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"nextTick\"])()\r\n .then(() => scrollBehavior(to, from, scrollPosition))\r\n .then(position => position && scrollToPosition(position))\r\n .catch(err => triggerError(err, to, from));\r\n }\r\n const go = (delta) => routerHistory.go(delta);\r\n let started;\r\n const installedApps = new Set();\r\n const router = {\r\n currentRoute,\r\n addRoute,\r\n removeRoute,\r\n hasRoute,\r\n getRoutes,\r\n resolve,\r\n options,\r\n push,\r\n replace,\r\n go,\r\n back: () => go(-1),\r\n forward: () => go(1),\r\n beforeEach: beforeGuards.add,\r\n beforeResolve: beforeResolveGuards.add,\r\n afterEach: afterGuards.add,\r\n onError: errorHandlers.add,\r\n isReady,\r\n install(app) {\r\n const router = this;\r\n app.component('RouterLink', RouterLink);\r\n app.component('RouterView', RouterView);\r\n app.config.globalProperties.$router = router;\r\n Object.defineProperty(app.config.globalProperties, '$route', {\r\n enumerable: true,\r\n get: () => Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"unref\"])(currentRoute),\r\n });\r\n // this initial navigation is only necessary on client, on server it doesn't\r\n // make sense because it will create an extra unnecessary navigation and could\r\n // lead to problems\r\n if (isBrowser &&\r\n // used for the initial navigation client side to avoid pushing\r\n // multiple times when the router is used in multiple apps\r\n !started &&\r\n currentRoute.value === START_LOCATION_NORMALIZED) {\r\n // see above\r\n started = true;\r\n push(routerHistory.location).catch(err => {\r\n if ((true))\r\n warn('Unexpected error when starting the router:', err);\r\n });\r\n }\r\n const reactiveRoute = {};\r\n for (const key in START_LOCATION_NORMALIZED) {\r\n // @ts-expect-error: the key matches\r\n reactiveRoute[key] = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"computed\"])(() => currentRoute.value[key]);\r\n }\r\n app.provide(routerKey, router);\r\n app.provide(routeLocationKey, Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"])(reactiveRoute));\r\n app.provide(routerViewLocationKey, currentRoute);\r\n const unmountApp = app.unmount;\r\n installedApps.add(app);\r\n app.unmount = function () {\r\n installedApps.delete(app);\r\n // the router is not attached to an app anymore\r\n if (installedApps.size < 1) {\r\n // invalidate the current navigation\r\n pendingLocation = START_LOCATION_NORMALIZED;\r\n removeHistoryListener && removeHistoryListener();\r\n currentRoute.value = START_LOCATION_NORMALIZED;\r\n started = false;\r\n ready = false;\r\n }\r\n unmountApp();\r\n };\r\n if (( true) && isBrowser) {\r\n addDevtools(app, router, matcher);\r\n }\r\n },\r\n };\r\n return router;\r\n}\r\nfunction runGuardQueue(guards) {\r\n return guards.reduce((promise, guard) => promise.then(() => guard()), Promise.resolve());\r\n}\r\nfunction extractChangingRecords(to, from) {\r\n const leavingRecords = [];\r\n const updatingRecords = [];\r\n const enteringRecords = [];\r\n const len = Math.max(from.matched.length, to.matched.length);\r\n for (let i = 0; i < len; i++) {\r\n const recordFrom = from.matched[i];\r\n if (recordFrom) {\r\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\r\n updatingRecords.push(recordFrom);\r\n else\r\n leavingRecords.push(recordFrom);\r\n }\r\n const recordTo = to.matched[i];\r\n if (recordTo) {\r\n // the type doesn't matter because we are comparing per reference\r\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\r\n enteringRecords.push(recordTo);\r\n }\r\n }\r\n }\r\n return [leavingRecords, updatingRecords, enteringRecords];\r\n}\n\n/**\r\n * Returns the router instance. Equivalent to using `$router` inside\r\n * templates.\r\n */\r\nfunction useRouter() {\r\n return Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(routerKey);\r\n}\r\n/**\r\n * Returns the current route location. Equivalent to using `$route` inside\r\n * templates.\r\n */\r\nfunction useRoute() {\r\n return Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(routeLocationKey);\r\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXJvdXRlci9kaXN0L3Z1ZS1yb3V0ZXIuZXNtLWJ1bmRsZXIuanM/NmMwMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaU07QUFDekk7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxLQUFxQyw4QkFBOEIsU0FBSTtBQUNyRixRQUFRLEtBQXFDLHVCQUF1QixTQUFNO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsS0FBcUMscUNBQXFDLFNBQU07QUFDbEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLEtBQXFDLDBCQUEwQixTQUFLO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxLQUFxQyxlQUFlLFNBQUc7QUFDbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELEtBQXFDLHVCQUF1QixTQUFJO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxLQUFxQyw2QkFBNkIsU0FBSzs7QUFFL0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0JBQWtCO0FBQ2hEO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUMsZ0dBQWdHLEdBQUcsVUFBVSxLQUFLLDJCQUEyQixLQUFLO0FBQ2xKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnQ0FBZ0M7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdDQUF3QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrREFBa0Q7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsWUFBWSxxREFBcUQsWUFBWTtBQUMzSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLFlBQVk7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsOERBQThELFlBQVk7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixTQUFTO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbUJBQW1CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxVQUFVO0FBQ3pCO0FBQ0E7QUFDQSxzQ0FBc0Msa0JBQWtCLGtDQUFrQztBQUMxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0JBQW9CO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBLGlCQUFpQixFQUVKO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBLHNEQUFzRCx3Q0FBd0M7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0RBQWdELHNDQUFzQztBQUNySDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxtQkFBbUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDLG1EQUFtRCxLQUFLLGVBQWUsMEJBQTBCO0FBQ2pHO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQSwwREFBMEQsS0FBcUMsMkJBQTJCLFNBQUk7QUFDOUg7QUFDQTtBQUNBLElBQUksMEJBQTBCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsc0RBQXNEO0FBQ3ZEO0FBQ0E7QUFDQSxpQ0FBaUMsNEJBQTRCO0FBQzdELGlDQUFpQyx5QkFBeUIsRUFBRTtBQUM1RDtBQUNBLGlCQUFpQjtBQUNqQixLQUFLO0FBQ0wseUNBQXlDLFlBQVk7QUFDckQsbUNBQW1DLGNBQWMsUUFBUSxtQkFBbUI7QUFDNUUsS0FBSztBQUNMLGtDQUFrQyxXQUFXO0FBQzdDLDJDQUEyQyxjQUFjLFFBQVEsWUFBWTtBQUM3RSxLQUFLO0FBQ0wsb0NBQW9DLFdBQVc7QUFDL0MsNkNBQTZDLGNBQWMsUUFBUSxZQUFZO0FBQy9FLEtBQUs7QUFDTCxzQ0FBc0MsV0FBVztBQUNqRCxxRUFBcUUsY0FBYztBQUNuRixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFnRDtBQUN4RDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTLEVBS0o7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsNkJBQTZCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzQ0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLEdBQUc7QUFDMUM7QUFDQTtBQUNBLDRFQUE0RSxNQUFNLEtBQUssR0FBRztBQUMxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxHQUFHLFVBQVUsR0FBRyxZQUFZLEdBQUc7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFdBQVc7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxLQUFLO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw4QkFBOEI7QUFDekQ7QUFDQTtBQUNBLDJEQUEyRCxNQUFNO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVFQUF1RSxNQUFNO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQztBQUM5RCx1REFBdUQsS0FBSyxnQkFBZ0IsS0FBSztBQUNqRixjQUFjLFNBQXdCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxNQUFNLEtBQUssT0FBTyxLQUFLLFFBQVE7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsT0FBTztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxPQUFPO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSwyREFBMkQsU0FBUyxjQUFjLFlBQVk7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDZDQUE2QztBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IscUJBQXFCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQsZ0ZBQWdGLEtBQUssbURBQW1ELEtBQUs7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSxlQUFlLDRCQUE0QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlFQUF5RTtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxjQUFjLDhCQUE4QixjQUFjLDRDQUE0QyxTQUFTO0FBQ2pKO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxjQUFjLDhCQUE4QixjQUFjLDRDQUE0QyxTQUFTO0FBQ2pKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsbUJBQW1CLDRDQUE0QyxTQUFTLG1CQUFtQixtQkFBbUI7QUFDeEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtDQUErQyxFQUFFO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUU7QUFDakU7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLDBCQUEwQjtBQUMxQix1QkFBdUI7QUFDdkIsc0JBQXNCO0FBQ3RCLG9CQUFvQjtBQUNwQixzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQyxvQ0FBb0M7QUFDcEMsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQixpQ0FBaUM7QUFDakMsMkJBQTJCO0FBQzNCLGtDQUFrQztBQUNsQyw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEMsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEMsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxpQkFBaUI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQyw2QkFBNkIsS0FBSztBQUNoRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0Msb0JBQW9CO0FBQ3hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHlCQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsdUJBQXVCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCLFNBQVMsb0JBQW9CO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFXO0FBQ2YsSUFBSSx5REFBYTtBQUNqQixJQUFJLHVEQUFXO0FBQ2Y7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsdUJBQXVCO0FBQ3BFO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLFNBQVMsS0FBcUMsTUFBTSw4REFBa0I7QUFDdEU7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGtEQUFNO0FBQy9CO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix3QkFBd0I7QUFDdEQ7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0EsU0FBUyxLQUFxQyxNQUFNLDhEQUFrQjtBQUN0RTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0RBQU07QUFDL0I7QUFDQSxNQUFNO0FBQ047QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRkFBb0YsS0FBcUMsMENBQTBDLFNBQUk7QUFDdks7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCw4RUFBOEUseUNBQXlDLEtBQUssaUJBQWlCO0FBQzdJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyR0FBMkcsY0FBYyxRQUFRLFlBQVk7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsS0FBSyx5QkFBeUIsWUFBWTtBQUNqRix5REFBeUQscUJBQXFCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLEtBQUsseUJBQXlCLFlBQVk7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxLQUFLLHlCQUF5QixZQUFZO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQsdUNBQXVDLEtBQUsseUJBQXlCLFlBQVk7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RkFBdUYsS0FBSyxRQUFRLFlBQVk7QUFDaEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrREFBTTtBQUN6Qix5QkFBeUIsa0RBQU07QUFDL0Isa0JBQWtCLG9EQUFRLHNCQUFzQixpREFBSztBQUNyRCw4QkFBOEIsb0RBQVE7QUFDdEMsZUFBZSxVQUFVO0FBQ3pCLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHFCQUFxQixvREFBUTtBQUM3QjtBQUNBLDBCQUEwQixvREFBUTtBQUNsQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0EsMEJBQTBCLGlEQUFLLHNDQUFzQyxpREFBSztBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQWdFO0FBQ3pFLHlCQUF5Qiw4REFBa0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsR0FBRyxnQkFBZ0I7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG9EQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsMkRBQWU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLGtCQUFrQixRQUFRO0FBQzFCLHFCQUFxQixvREFBUTtBQUM3QixlQUFlLFVBQVUsR0FBRyxrREFBTTtBQUNsQyx3QkFBd0Isb0RBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsNkNBQUM7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLDJEQUFlO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMLGtCQUFrQixlQUFlO0FBQ2pDLFNBQVMsS0FBcUM7QUFDOUMsOEJBQThCLGtEQUFNO0FBQ3BDLCtCQUErQixvREFBUTtBQUN2QyxzQkFBc0Isa0RBQU07QUFDNUIsZ0NBQWdDLG9EQUFRO0FBQ3hDLFFBQVEsbURBQU87QUFDZixRQUFRLG1EQUFPO0FBQ2YsUUFBUSxtREFBTztBQUNmLHdCQUF3QiwrQ0FBRztBQUMzQjtBQUNBO0FBQ0EsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxHQUFHLGdCQUFnQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELGtDQUFrQztBQUN2RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qiw2Q0FBQyx5QkFBeUI7QUFDeEQ7QUFDQTtBQUNBLGFBQWE7QUFDYixpQkFBaUIsS0FBZ0U7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLDhCQUE4QjtBQUN4RTtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsOERBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxZQUFZO0FBQy9DLGtCQUFrQixLQUFLO0FBQ3ZCO0FBQ0EsbUJBQW1CLEtBQUs7QUFDeEI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNkVBQW1CO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxvQ0FBb0Msb0NBQW9DO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxQkFBcUI7QUFDaEU7QUFDQSxnRUFBZ0UsZUFBZTtBQUMvRTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVCxRQUFRLGlEQUFLO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsbUJBQW1CO0FBQy9DO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixRQUFRO0FBQ25DO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsU0FBUyxtREFBbUQ7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsaUJBQWlCLGtEQUFrRDtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsU0FBUyxFQUFFLG9CQUFvQjtBQUN0RTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixzREFBVTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsSUFBcUM7QUFDdkQsc0RBQXNELGFBQWE7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0Esa0RBQWtELGdDQUFnQztBQUNsRjtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBLHNDQUFzQyxZQUFZLGlCQUFpQixLQUFLO0FBQ3hFO0FBQ0EsbUVBQW1FLFlBQVk7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELG9GQUFvRixLQUFLLFdBQVcsS0FBSztBQUN6RztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTtBQUNqRTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsYUFBYSxJQUFxQztBQUNsRDtBQUNBLGtDQUFrQyxZQUFZLGlCQUFpQixLQUFLO0FBQ3BFO0FBQ0E7QUFDQSwrREFBK0QsdURBQXVEO0FBQ3RIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGdCQUFnQjtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0EsaURBQWlELDJDQUEyQyx5QkFBeUIsWUFBWTtBQUNqSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUVBQXlFLHVCQUF1QjtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdHQUF3RyxjQUFjLFFBQVEsb0JBQW9CO0FBQ2xKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELGdCQUFnQjtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlCQUFpQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0RBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixpREFBSztBQUNoQyxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxvREFBUTtBQUM3QztBQUNBO0FBQ0EsMENBQTBDLG9EQUFRO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQWdFO0FBQ2pGO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsa0RBQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrREFBTTtBQUNqQjs7QUFFaVoiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLXJvdXRlci9kaXN0L3Z1ZS1yb3V0ZXIuZXNtLWJ1bmRsZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAgKiB2dWUtcm91dGVyIHY0LjAuMTRcbiAgKiAoYykgMjAyMiBFZHVhcmRvIFNhbiBNYXJ0aW4gTW9yb3RlXG4gICogQGxpY2Vuc2UgTUlUXG4gICovXG5pbXBvcnQgeyBnZXRDdXJyZW50SW5zdGFuY2UsIGluamVjdCwgb25Vbm1vdW50ZWQsIG9uRGVhY3RpdmF0ZWQsIG9uQWN0aXZhdGVkLCBjb21wdXRlZCwgdW5yZWYsIHdhdGNoRWZmZWN0LCBkZWZpbmVDb21wb25lbnQsIHJlYWN0aXZlLCBoLCBwcm92aWRlLCByZWYsIHdhdGNoLCBzaGFsbG93UmVmLCBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBzZXR1cERldnRvb2xzUGx1Z2luIH0gZnJvbSAnQHZ1ZS9kZXZ0b29scy1hcGknO1xuXG5jb25zdCBoYXNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWcgPT09ICdzeW1ib2wnO1xyXG5jb25zdCBQb2x5U3ltYm9sID0gKG5hbWUpID0+IFxyXG4vLyB2ciA9IHZ1ZSByb3V0ZXJcclxuaGFzU3ltYm9sXHJcbiAgICA/IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnW3Z1ZS1yb3V0ZXJdOiAnICsgbmFtZSA6IG5hbWUpXHJcbiAgICA6ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnW3Z1ZS1yb3V0ZXJdOiAnIDogJ192cl8nKSArIG5hbWU7XHJcbi8vIHJ2bG0gPSBSb3V0ZXIgVmlldyBMb2NhdGlvbiBNYXRjaGVkXHJcbi8qKlxyXG4gKiBSb3V0ZVJlY29yZCBiZWluZyByZW5kZXJlZCBieSB0aGUgY2xvc2VzdCBhbmNlc3RvciBSb3V0ZXIgVmlldy4gVXNlZCBmb3JcclxuICogYG9uQmVmb3JlUm91dGVVcGRhdGVgIGFuZCBgb25CZWZvcmVSb3V0ZUxlYXZlYC4gcnZsbSBzdGFuZHMgZm9yIFJvdXRlciBWaWV3XHJcbiAqIExvY2F0aW9uIE1hdGNoZWRcclxuICpcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5jb25zdCBtYXRjaGVkUm91dGVLZXkgPSAvKiNfX1BVUkVfXyovIFBvbHlTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ3JvdXRlciB2aWV3IGxvY2F0aW9uIG1hdGNoZWQnIDogJ3J2bG0nKTtcclxuLyoqXHJcbiAqIEFsbG93cyBvdmVycmlkaW5nIHRoZSByb3V0ZXIgdmlldyBkZXB0aCB0byBjb250cm9sIHdoaWNoIGNvbXBvbmVudCBpblxyXG4gKiBgbWF0Y2hlZGAgaXMgcmVuZGVyZWQuIHJ2ZCBzdGFuZHMgZm9yIFJvdXRlciBWaWV3IERlcHRoXHJcbiAqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3Qgdmlld0RlcHRoS2V5ID0gLyojX19QVVJFX18qLyBQb2x5U3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdyb3V0ZXIgdmlldyBkZXB0aCcgOiAncnZkJyk7XHJcbi8qKlxyXG4gKiBBbGxvd3Mgb3ZlcnJpZGluZyB0aGUgcm91dGVyIGluc3RhbmNlIHJldHVybmVkIGJ5IGB1c2VSb3V0ZXJgIGluIHRlc3RzLiByXHJcbiAqIHN0YW5kcyBmb3Igcm91dGVyXHJcbiAqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3Qgcm91dGVyS2V5ID0gLyojX19QVVJFX18qLyBQb2x5U3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdyb3V0ZXInIDogJ3InKTtcclxuLyoqXHJcbiAqIEFsbG93cyBvdmVycmlkaW5nIHRoZSBjdXJyZW50IHJvdXRlIHJldHVybmVkIGJ5IGB1c2VSb3V0ZWAgaW4gdGVzdHMuIHJsXHJcbiAqIHN0YW5kcyBmb3Igcm91dGUgbG9jYXRpb25cclxuICpcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5jb25zdCByb3V0ZUxvY2F0aW9uS2V5ID0gLyojX19QVVJFX18qLyBQb2x5U3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdyb3V0ZSBsb2NhdGlvbicgOiAncmwnKTtcclxuLyoqXHJcbiAqIEFsbG93cyBvdmVycmlkaW5nIHRoZSBjdXJyZW50IHJvdXRlIHVzZWQgYnkgcm91dGVyLXZpZXcuIEludGVybmFsbHkgdGhpcyBpc1xyXG4gKiB1c2VkIHdoZW4gdGhlIGByb3V0ZWAgcHJvcCBpcyBwYXNzZWQuXHJcbiAqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3Qgcm91dGVyVmlld0xvY2F0aW9uS2V5ID0gLyojX19QVVJFX18qLyBQb2x5U3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdyb3V0ZXIgdmlldyBsb2NhdGlvbicgOiAncnZsJyk7XG5cbmNvbnN0IGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuXG5mdW5jdGlvbiBpc0VTTW9kdWxlKG9iaikge1xyXG4gICAgcmV0dXJuIG9iai5fX2VzTW9kdWxlIHx8IChoYXNTeW1ib2wgJiYgb2JqW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdNb2R1bGUnKTtcclxufVxyXG5jb25zdCBhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xyXG5mdW5jdGlvbiBhcHBseVRvUGFyYW1zKGZuLCBwYXJhbXMpIHtcclxuICAgIGNvbnN0IG5ld1BhcmFtcyA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcclxuICAgICAgICBuZXdQYXJhbXNba2V5XSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKGZuKSA6IGZuKHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdQYXJhbXM7XHJcbn1cclxuY29uc3Qgbm9vcCA9ICgpID0+IHsgfTtcblxuZnVuY3Rpb24gd2Fybihtc2cpIHtcclxuICAgIC8vIGF2b2lkIHVzaW5nIC4uLmFyZ3MgYXMgaXQgYnJlYWtzIGluIG9sZGVyIEVkZ2UgYnVpbGRzXHJcbiAgICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpLnNsaWNlKDEpO1xyXG4gICAgY29uc29sZS53YXJuLmFwcGx5KGNvbnNvbGUsIFsnW1Z1ZSBSb3V0ZXIgd2Fybl06ICcgKyBtc2ddLmNvbmNhdChhcmdzKSk7XHJcbn1cblxuY29uc3QgVFJBSUxJTkdfU0xBU0hfUkUgPSAvXFwvJC87XHJcbmNvbnN0IHJlbW92ZVRyYWlsaW5nU2xhc2ggPSAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKFRSQUlMSU5HX1NMQVNIX1JFLCAnJyk7XHJcbi8qKlxyXG4gKiBUcmFuc2Zvcm1zIGFuIFVSSSBpbnRvIGEgbm9ybWFsaXplZCBoaXN0b3J5IGxvY2F0aW9uXHJcbiAqXHJcbiAqIEBwYXJhbSBwYXJzZVF1ZXJ5XHJcbiAqIEBwYXJhbSBsb2NhdGlvbiAtIFVSSSB0byBub3JtYWxpemVcclxuICogQHBhcmFtIGN1cnJlbnRMb2NhdGlvbiAtIGN1cnJlbnQgYWJzb2x1dGUgbG9jYXRpb24uIEFsbG93cyByZXNvbHZpbmcgcmVsYXRpdmVcclxuICogcGF0aHMuIE11c3Qgc3RhcnQgd2l0aCBgL2AuIERlZmF1bHRzIHRvIGAvYFxyXG4gKiBAcmV0dXJucyBhIG5vcm1hbGl6ZWQgaGlzdG9yeSBsb2NhdGlvblxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VVUkwocGFyc2VRdWVyeSwgbG9jYXRpb24sIGN1cnJlbnRMb2NhdGlvbiA9ICcvJykge1xyXG4gICAgbGV0IHBhdGgsIHF1ZXJ5ID0ge30sIHNlYXJjaFN0cmluZyA9ICcnLCBoYXNoID0gJyc7XHJcbiAgICAvLyBDb3VsZCB1c2UgVVJMIGFuZCBVUkxTZWFyY2hQYXJhbXMgYnV0IElFIDExIGRvZXNuJ3Qgc3VwcG9ydCBpdFxyXG4gICAgY29uc3Qgc2VhcmNoUG9zID0gbG9jYXRpb24uaW5kZXhPZignPycpO1xyXG4gICAgY29uc3QgaGFzaFBvcyA9IGxvY2F0aW9uLmluZGV4T2YoJyMnLCBzZWFyY2hQb3MgPiAtMSA/IHNlYXJjaFBvcyA6IDApO1xyXG4gICAgaWYgKHNlYXJjaFBvcyA+IC0xKSB7XHJcbiAgICAgICAgcGF0aCA9IGxvY2F0aW9uLnNsaWNlKDAsIHNlYXJjaFBvcyk7XHJcbiAgICAgICAgc2VhcmNoU3RyaW5nID0gbG9jYXRpb24uc2xpY2Uoc2VhcmNoUG9zICsgMSwgaGFzaFBvcyA+IC0xID8gaGFzaFBvcyA6IGxvY2F0aW9uLmxlbmd0aCk7XHJcbiAgICAgICAgcXVlcnkgPSBwYXJzZVF1ZXJ5KHNlYXJjaFN0cmluZyk7XHJcbiAgICB9XHJcbiAgICBpZiAoaGFzaFBvcyA+IC0xKSB7XHJcbiAgICAgICAgcGF0aCA9IHBhdGggfHwgbG9jYXRpb24uc2xpY2UoMCwgaGFzaFBvcyk7XHJcbiAgICAgICAgLy8ga2VlcCB0aGUgIyBjaGFyYWN0ZXJcclxuICAgICAgICBoYXNoID0gbG9jYXRpb24uc2xpY2UoaGFzaFBvcywgbG9jYXRpb24ubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIC8vIG5vIHNlYXJjaCBhbmQgbm8gcXVlcnlcclxuICAgIHBhdGggPSByZXNvbHZlUmVsYXRpdmVQYXRoKHBhdGggIT0gbnVsbCA/IHBhdGggOiBsb2NhdGlvbiwgY3VycmVudExvY2F0aW9uKTtcclxuICAgIC8vIGVtcHR5IHBhdGggbWVhbnMgYSByZWxhdGl2ZSBxdWVyeSBvciBoYXNoIGA/Zm9vPWZgLCBgI3RoaW5nYFxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBmdWxsUGF0aDogcGF0aCArIChzZWFyY2hTdHJpbmcgJiYgJz8nKSArIHNlYXJjaFN0cmluZyArIGhhc2gsXHJcbiAgICAgICAgcGF0aCxcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICBoYXNoLFxyXG4gICAgfTtcclxufVxyXG4vKipcclxuICogU3RyaW5naWZpZXMgYSBVUkwgb2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSBzdHJpbmdpZnlRdWVyeVxyXG4gKiBAcGFyYW0gbG9jYXRpb25cclxuICovXHJcbmZ1bmN0aW9uIHN0cmluZ2lmeVVSTChzdHJpbmdpZnlRdWVyeSwgbG9jYXRpb24pIHtcclxuICAgIGNvbnN0IHF1ZXJ5ID0gbG9jYXRpb24ucXVlcnkgPyBzdHJpbmdpZnlRdWVyeShsb2NhdGlvbi5xdWVyeSkgOiAnJztcclxuICAgIHJldHVybiBsb2NhdGlvbi5wYXRoICsgKHF1ZXJ5ICYmICc/JykgKyBxdWVyeSArIChsb2NhdGlvbi5oYXNoIHx8ICcnKTtcclxufVxyXG4vKipcclxuICogU3RyaXBzIG9mZiB0aGUgYmFzZSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSBsb2NhdGlvbi5wYXRobmFtZSBpbiBhIG5vblxyXG4gKiBjYXNlLXNlbnNpdGl2ZSB3YXkuXHJcbiAqXHJcbiAqIEBwYXJhbSBwYXRobmFtZSAtIGxvY2F0aW9uLnBhdGhuYW1lXHJcbiAqIEBwYXJhbSBiYXNlIC0gYmFzZSB0byBzdHJpcCBvZmZcclxuICovXHJcbmZ1bmN0aW9uIHN0cmlwQmFzZShwYXRobmFtZSwgYmFzZSkge1xyXG4gICAgLy8gbm8gYmFzZSBvciBiYXNlIGlzIG5vdCBmb3VuZCBhdCB0aGUgYmVnaW5uaW5nXHJcbiAgICBpZiAoIWJhc2UgfHwgIXBhdGhuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChiYXNlLnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgICAgIHJldHVybiBwYXRobmFtZTtcclxuICAgIHJldHVybiBwYXRobmFtZS5zbGljZShiYXNlLmxlbmd0aCkgfHwgJy8nO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgdHdvIFJvdXRlTG9jYXRpb24gYXJlIGVxdWFsLiBUaGlzIG1lYW5zIHRoYXQgYm90aCBsb2NhdGlvbnMgYXJlXHJcbiAqIHBvaW50aW5nIHRvd2FyZHMgdGhlIHNhbWUge0BsaW5rIFJvdXRlUmVjb3JkfSBhbmQgdGhhdCBhbGwgYHBhcmFtc2AsIGBxdWVyeWBcclxuICogcGFyYW1ldGVycyBhbmQgYGhhc2hgIGFyZSB0aGUgc2FtZVxyXG4gKlxyXG4gKiBAcGFyYW0gYSAtIGZpcnN0IHtAbGluayBSb3V0ZUxvY2F0aW9ufVxyXG4gKiBAcGFyYW0gYiAtIHNlY29uZCB7QGxpbmsgUm91dGVMb2NhdGlvbn1cclxuICovXHJcbmZ1bmN0aW9uIGlzU2FtZVJvdXRlTG9jYXRpb24oc3RyaW5naWZ5UXVlcnksIGEsIGIpIHtcclxuICAgIGNvbnN0IGFMYXN0SW5kZXggPSBhLm1hdGNoZWQubGVuZ3RoIC0gMTtcclxuICAgIGNvbnN0IGJMYXN0SW5kZXggPSBiLm1hdGNoZWQubGVuZ3RoIC0gMTtcclxuICAgIHJldHVybiAoYUxhc3RJbmRleCA+IC0xICYmXHJcbiAgICAgICAgYUxhc3RJbmRleCA9PT0gYkxhc3RJbmRleCAmJlxyXG4gICAgICAgIGlzU2FtZVJvdXRlUmVjb3JkKGEubWF0Y2hlZFthTGFzdEluZGV4XSwgYi5tYXRjaGVkW2JMYXN0SW5kZXhdKSAmJlxyXG4gICAgICAgIGlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXMoYS5wYXJhbXMsIGIucGFyYW1zKSAmJlxyXG4gICAgICAgIHN0cmluZ2lmeVF1ZXJ5KGEucXVlcnkpID09PSBzdHJpbmdpZnlRdWVyeShiLnF1ZXJ5KSAmJlxyXG4gICAgICAgIGEuaGFzaCA9PT0gYi5oYXNoKTtcclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgdHdvIGBSb3V0ZVJlY29yZHNgIGFyZSBlcXVhbC4gVGFrZXMgaW50byBhY2NvdW50IGFsaWFzZXM6IHRoZXkgYXJlXHJcbiAqIGNvbnNpZGVyZWQgZXF1YWwgdG8gdGhlIGBSb3V0ZVJlY29yZGAgdGhleSBhcmUgYWxpYXNpbmcuXHJcbiAqXHJcbiAqIEBwYXJhbSBhIC0gZmlyc3Qge0BsaW5rIFJvdXRlUmVjb3JkfVxyXG4gKiBAcGFyYW0gYiAtIHNlY29uZCB7QGxpbmsgUm91dGVSZWNvcmR9XHJcbiAqL1xyXG5mdW5jdGlvbiBpc1NhbWVSb3V0ZVJlY29yZChhLCBiKSB7XHJcbiAgICAvLyBzaW5jZSB0aGUgb3JpZ2luYWwgcmVjb3JkIGhhcyBhbiB1bmRlZmluZWQgdmFsdWUgZm9yIGFsaWFzT2ZcclxuICAgIC8vIGJ1dCBhbGwgYWxpYXNlcyBwb2ludCB0byB0aGUgb3JpZ2luYWwgcmVjb3JkLCB0aGlzIHdpbGwgYWx3YXlzIGNvbXBhcmVcclxuICAgIC8vIHRoZSBvcmlnaW5hbCByZWNvcmRcclxuICAgIHJldHVybiAoYS5hbGlhc09mIHx8IGEpID09PSAoYi5hbGlhc09mIHx8IGIpO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXMoYSwgYikge1xyXG4gICAgaWYgKE9iamVjdC5rZXlzKGEpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGEpIHtcclxuICAgICAgICBpZiAoIWlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXNWYWx1ZShhW2tleV0sIGJba2V5XSkpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXNWYWx1ZShhLCBiKSB7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhKVxyXG4gICAgICAgID8gaXNFcXVpdmFsZW50QXJyYXkoYSwgYilcclxuICAgICAgICA6IEFycmF5LmlzQXJyYXkoYilcclxuICAgICAgICAgICAgPyBpc0VxdWl2YWxlbnRBcnJheShiLCBhKVxyXG4gICAgICAgICAgICA6IGEgPT09IGI7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIHR3byBhcnJheXMgYXJlIHRoZSBzYW1lIG9yIGlmIGFuIGFycmF5IHdpdGggb25lIHNpbmdsZSBlbnRyeSBpcyB0aGVcclxuICogc2FtZSBhcyBhbm90aGVyIHByaW1pdGl2ZSB2YWx1ZS4gVXNlZCB0byBjaGVjayBxdWVyeSBhbmQgcGFyYW1ldGVyc1xyXG4gKlxyXG4gKiBAcGFyYW0gYSAtIGFycmF5IG9mIHZhbHVlc1xyXG4gKiBAcGFyYW0gYiAtIGFycmF5IG9mIHZhbHVlcyBvciBhIHNpbmdsZSB2YWx1ZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNFcXVpdmFsZW50QXJyYXkoYSwgYikge1xyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYilcclxuICAgICAgICA/IGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJiBhLmV2ZXJ5KCh2YWx1ZSwgaSkgPT4gdmFsdWUgPT09IGJbaV0pXHJcbiAgICAgICAgOiBhLmxlbmd0aCA9PT0gMSAmJiBhWzBdID09PSBiO1xyXG59XHJcbi8qKlxyXG4gKiBSZXNvbHZlcyBhIHJlbGF0aXZlIHBhdGggdGhhdCBzdGFydHMgd2l0aCBgLmAuXHJcbiAqXHJcbiAqIEBwYXJhbSB0byAtIHBhdGggbG9jYXRpb24gd2UgYXJlIHJlc29sdmluZ1xyXG4gKiBAcGFyYW0gZnJvbSAtIGN1cnJlbnRMb2NhdGlvbi5wYXRoLCBzaG91bGQgc3RhcnQgd2l0aCBgL2BcclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVSZWxhdGl2ZVBhdGgodG8sIGZyb20pIHtcclxuICAgIGlmICh0by5zdGFydHNXaXRoKCcvJykpXHJcbiAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZnJvbS5zdGFydHNXaXRoKCcvJykpIHtcclxuICAgICAgICB3YXJuKGBDYW5ub3QgcmVzb2x2ZSBhIHJlbGF0aXZlIGxvY2F0aW9uIHdpdGhvdXQgYW4gYWJzb2x1dGUgcGF0aC4gVHJ5aW5nIHRvIHJlc29sdmUgXCIke3RvfVwiIGZyb20gXCIke2Zyb219XCIuIEl0IHNob3VsZCBsb29rIGxpa2UgXCIvJHtmcm9tfVwiLmApO1xyXG4gICAgICAgIHJldHVybiB0bztcclxuICAgIH1cclxuICAgIGlmICghdG8pXHJcbiAgICAgICAgcmV0dXJuIGZyb207XHJcbiAgICBjb25zdCBmcm9tU2VnbWVudHMgPSBmcm9tLnNwbGl0KCcvJyk7XHJcbiAgICBjb25zdCB0b1NlZ21lbnRzID0gdG8uc3BsaXQoJy8nKTtcclxuICAgIGxldCBwb3NpdGlvbiA9IGZyb21TZWdtZW50cy5sZW5ndGggLSAxO1xyXG4gICAgbGV0IHRvUG9zaXRpb247XHJcbiAgICBsZXQgc2VnbWVudDtcclxuICAgIGZvciAodG9Qb3NpdGlvbiA9IDA7IHRvUG9zaXRpb24gPCB0b1NlZ21lbnRzLmxlbmd0aDsgdG9Qb3NpdGlvbisrKSB7XHJcbiAgICAgICAgc2VnbWVudCA9IHRvU2VnbWVudHNbdG9Qb3NpdGlvbl07XHJcbiAgICAgICAgLy8gY2FuJ3QgZ28gYmVsb3cgemVyb1xyXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMSB8fCBzZWdtZW50ID09PSAnLicpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIGlmIChzZWdtZW50ID09PSAnLi4nKVxyXG4gICAgICAgICAgICBwb3NpdGlvbi0tO1xyXG4gICAgICAgIC8vIGZvdW5kIHNvbWV0aGluZyB0aGF0IGlzIG5vdCByZWxhdGl2ZSBwYXRoXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiAoZnJvbVNlZ21lbnRzLnNsaWNlKDAsIHBvc2l0aW9uKS5qb2luKCcvJykgK1xyXG4gICAgICAgICcvJyArXHJcbiAgICAgICAgdG9TZWdtZW50c1xyXG4gICAgICAgICAgICAuc2xpY2UodG9Qb3NpdGlvbiAtICh0b1Bvc2l0aW9uID09PSB0b1NlZ21lbnRzLmxlbmd0aCA/IDEgOiAwKSlcclxuICAgICAgICAgICAgLmpvaW4oJy8nKSk7XHJcbn1cblxudmFyIE5hdmlnYXRpb25UeXBlO1xyXG4oZnVuY3Rpb24gKE5hdmlnYXRpb25UeXBlKSB7XHJcbiAgICBOYXZpZ2F0aW9uVHlwZVtcInBvcFwiXSA9IFwicG9wXCI7XHJcbiAgICBOYXZpZ2F0aW9uVHlwZVtcInB1c2hcIl0gPSBcInB1c2hcIjtcclxufSkoTmF2aWdhdGlvblR5cGUgfHwgKE5hdmlnYXRpb25UeXBlID0ge30pKTtcclxudmFyIE5hdmlnYXRpb25EaXJlY3Rpb247XHJcbihmdW5jdGlvbiAoTmF2aWdhdGlvbkRpcmVjdGlvbikge1xyXG4gICAgTmF2aWdhdGlvbkRpcmVjdGlvbltcImJhY2tcIl0gPSBcImJhY2tcIjtcclxuICAgIE5hdmlnYXRpb25EaXJlY3Rpb25bXCJmb3J3YXJkXCJdID0gXCJmb3J3YXJkXCI7XHJcbiAgICBOYXZpZ2F0aW9uRGlyZWN0aW9uW1widW5rbm93blwiXSA9IFwiXCI7XHJcbn0pKE5hdmlnYXRpb25EaXJlY3Rpb24gfHwgKE5hdmlnYXRpb25EaXJlY3Rpb24gPSB7fSkpO1xyXG4vKipcclxuICogU3RhcnRpbmcgbG9jYXRpb24gZm9yIEhpc3Rvcmllc1xyXG4gKi9cclxuY29uc3QgU1RBUlQgPSAnJztcclxuLy8gR2VuZXJpYyB1dGlsc1xyXG4vKipcclxuICogTm9ybWFsaXplcyBhIGJhc2UgYnkgcmVtb3ZpbmcgYW55IHRyYWlsaW5nIHNsYXNoIGFuZCByZWFkaW5nIHRoZSBiYXNlIHRhZyBpZlxyXG4gKiBwcmVzZW50LlxyXG4gKlxyXG4gKiBAcGFyYW0gYmFzZSAtIGJhc2UgdG8gbm9ybWFsaXplXHJcbiAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVCYXNlKGJhc2UpIHtcclxuICAgIGlmICghYmFzZSkge1xyXG4gICAgICAgIGlmIChpc0Jyb3dzZXIpIHtcclxuICAgICAgICAgICAgLy8gcmVzcGVjdCA8YmFzZT4gdGFnXHJcbiAgICAgICAgICAgIGNvbnN0IGJhc2VFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Jhc2UnKTtcclxuICAgICAgICAgICAgYmFzZSA9IChiYXNlRWwgJiYgYmFzZUVsLmdldEF0dHJpYnV0ZSgnaHJlZicpKSB8fCAnLyc7XHJcbiAgICAgICAgICAgIC8vIHN0cmlwIGZ1bGwgVVJMIG9yaWdpblxyXG4gICAgICAgICAgICBiYXNlID0gYmFzZS5yZXBsYWNlKC9eXFx3KzpcXC9cXC9bXlxcL10rLywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYmFzZSA9ICcvJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBlbnN1cmUgbGVhZGluZyBzbGFzaCB3aGVuIGl0IHdhcyByZW1vdmVkIGJ5IHRoZSByZWdleCBhYm92ZSBhdm9pZCBsZWFkaW5nXHJcbiAgICAvLyBzbGFzaCB3aXRoIGhhc2ggYmVjYXVzZSB0aGUgZmlsZSBjb3VsZCBiZSByZWFkIGZyb20gdGhlIGRpc2sgbGlrZSBmaWxlOi8vXHJcbiAgICAvLyBhbmQgdGhlIGxlYWRpbmcgc2xhc2ggd291bGQgY2F1c2UgcHJvYmxlbXNcclxuICAgIGlmIChiYXNlWzBdICE9PSAnLycgJiYgYmFzZVswXSAhPT0gJyMnKVxyXG4gICAgICAgIGJhc2UgPSAnLycgKyBiYXNlO1xyXG4gICAgLy8gcmVtb3ZlIHRoZSB0cmFpbGluZyBzbGFzaCBzbyBhbGwgb3RoZXIgbWV0aG9kIGNhbiBqdXN0IGRvIGBiYXNlICsgZnVsbFBhdGhgXHJcbiAgICAvLyB0byBidWlsZCBhbiBocmVmXHJcbiAgICByZXR1cm4gcmVtb3ZlVHJhaWxpbmdTbGFzaChiYXNlKTtcclxufVxyXG4vLyByZW1vdmUgYW55IGNoYXJhY3RlciBiZWZvcmUgdGhlIGhhc2hcclxuY29uc3QgQkVGT1JFX0hBU0hfUkUgPSAvXlteI10rIy87XHJcbmZ1bmN0aW9uIGNyZWF0ZUhyZWYoYmFzZSwgbG9jYXRpb24pIHtcclxuICAgIHJldHVybiBiYXNlLnJlcGxhY2UoQkVGT1JFX0hBU0hfUkUsICcjJykgKyBsb2NhdGlvbjtcclxufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50UG9zaXRpb24oZWwsIG9mZnNldCkge1xyXG4gICAgY29uc3QgZG9jUmVjdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGVsUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBiZWhhdmlvcjogb2Zmc2V0LmJlaGF2aW9yLFxyXG4gICAgICAgIGxlZnQ6IGVsUmVjdC5sZWZ0IC0gZG9jUmVjdC5sZWZ0IC0gKG9mZnNldC5sZWZ0IHx8IDApLFxyXG4gICAgICAgIHRvcDogZWxSZWN0LnRvcCAtIGRvY1JlY3QudG9wIC0gKG9mZnNldC50b3AgfHwgMCksXHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IGNvbXB1dGVTY3JvbGxQb3NpdGlvbiA9ICgpID0+ICh7XHJcbiAgICBsZWZ0OiB3aW5kb3cucGFnZVhPZmZzZXQsXHJcbiAgICB0b3A6IHdpbmRvdy5wYWdlWU9mZnNldCxcclxufSk7XHJcbmZ1bmN0aW9uIHNjcm9sbFRvUG9zaXRpb24ocG9zaXRpb24pIHtcclxuICAgIGxldCBzY3JvbGxUb09wdGlvbnM7XHJcbiAgICBpZiAoJ2VsJyBpbiBwb3NpdGlvbikge1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uRWwgPSBwb3NpdGlvbi5lbDtcclxuICAgICAgICBjb25zdCBpc0lkU2VsZWN0b3IgPSB0eXBlb2YgcG9zaXRpb25FbCA9PT0gJ3N0cmluZycgJiYgcG9zaXRpb25FbC5zdGFydHNXaXRoKCcjJyk7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogYGlkYHMgY2FuIGFjY2VwdCBwcmV0dHkgbXVjaCBhbnkgY2hhcmFjdGVycywgaW5jbHVkaW5nIENTUyBjb21iaW5hdG9yc1xyXG4gICAgICAgICAqIGxpa2UgYD5gIG9yIGB+YC4gSXQncyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBlbGVtZW50cyB1c2luZ1xyXG4gICAgICAgICAqIGBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnficpYCBidXQgaXQgbmVlZHMgdG8gYmUgZXNjYXBlZCB3aGVuIHVzaW5nXHJcbiAgICAgICAgICogYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNcXFxcficpYCBmb3IgaXQgdG8gYmUgdmFsaWQuIFRoZSBvbmx5XHJcbiAgICAgICAgICogcmVxdWlyZW1lbnRzIGZvciBgaWRgcyBhcmUgdGhlbSB0byBiZSB1bmlxdWUgb24gdGhlIHBhZ2UgYW5kIHRvIG5vdCBiZVxyXG4gICAgICAgICAqIGVtcHR5IChgaWQ9XCJcImApLiBCZWNhdXNlIG9mIHRoYXQsIHdoZW4gcGFzc2luZyBhbiBpZCBzZWxlY3RvciwgaXQgc2hvdWxkXHJcbiAgICAgICAgICogYmUgcHJvcGVybHkgZXNjYXBlZCBmb3IgaXQgdG8gd29yayB3aXRoIGBxdWVyeVNlbGVjdG9yYC4gV2UgY291bGQgY2hlY2tcclxuICAgICAgICAgKiBmb3IgdGhlIGlkIHNlbGVjdG9yIHRvIGJlIHNpbXBsZSAobm8gQ1NTIGNvbWJpbmF0b3JzIGArID5+YCkgYnV0IHRoYXRcclxuICAgICAgICAgKiB3b3VsZCBtYWtlIHRoaW5ncyBpbmNvbnNpc3RlbnQgc2luY2UgdGhleSBhcmUgdmFsaWQgY2hhcmFjdGVycyBmb3IgYW5cclxuICAgICAgICAgKiBgaWRgIGJ1dCB3b3VsZCBuZWVkIHRvIGJlIGVzY2FwZWQgd2hlbiB1c2luZyBgcXVlcnlTZWxlY3RvcmAsIGJyZWFraW5nXHJcbiAgICAgICAgICogdGhlaXIgdXNhZ2UgYW5kIGVuZGluZyB1cCBpbiBubyBzZWxlY3RvciByZXR1cm5lZC4gU2VsZWN0b3JzIG5lZWQgdG8gYmVcclxuICAgICAgICAgKiBlc2NhcGVkOlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogLSBgIzEtdGhpbmdgIGJlY29tZXMgYCNcXDMxIC10aGluZ2BcclxuICAgICAgICAgKiAtIGAjd2l0aH5zeW1ib2xzYCBiZWNvbWVzIGAjd2l0aFxcXFx+c3ltYm9sc2BcclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIC0gTW9yZSBpbmZvcm1hdGlvbiBhYm91dCAgdGhlIHRvcGljIGNhbiBiZSBmb3VuZCBhdFxyXG4gICAgICAgICAqICAgaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2h0bWw1LWlkLWNsYXNzLlxyXG4gICAgICAgICAqIC0gUHJhY3RpY2FsIGV4YW1wbGU6IGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9kZW1vL2h0bWw1LWlkXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0eXBlb2YgcG9zaXRpb24uZWwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNJZFNlbGVjdG9yIHx8ICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwb3NpdGlvbi5lbC5zbGljZSgxKSkpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmRFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocG9zaXRpb24uZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0lkU2VsZWN0b3IgJiYgZm91bmRFbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBUaGUgc2VsZWN0b3IgXCIke3Bvc2l0aW9uLmVsfVwiIHNob3VsZCBiZSBwYXNzZWQgYXMgXCJlbDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignJHtwb3NpdGlvbi5lbH0nKVwiIGJlY2F1c2UgaXQgc3RhcnRzIHdpdGggXCIjXCIuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiB0byBhdm9pZCBvdGhlciB3YXJuaW5nc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYFRoZSBzZWxlY3RvciBcIiR7cG9zaXRpb24uZWx9XCIgaXMgaW52YWxpZC4gSWYgeW91IGFyZSB1c2luZyBhbiBpZCBzZWxlY3RvciwgbWFrZSBzdXJlIHRvIGVzY2FwZSBpdC4gWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZXNjYXBpbmcgY2hhcmFjdGVycyBpbiBzZWxlY3RvcnMgYXQgaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2Nzcy1lc2NhcGVzIG9yIHVzZSBDU1MuZXNjYXBlIChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ1NTL2VzY2FwZSkuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRvIGF2b2lkIG90aGVyIHdhcm5pbmdzXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGVsID0gdHlwZW9mIHBvc2l0aW9uRWwgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgID8gaXNJZFNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBvc2l0aW9uRWwuc2xpY2UoMSkpXHJcbiAgICAgICAgICAgICAgICA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocG9zaXRpb25FbClcclxuICAgICAgICAgICAgOiBwb3NpdGlvbkVsO1xyXG4gICAgICAgIGlmICghZWwpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDb3VsZG4ndCBmaW5kIGVsZW1lbnQgdXNpbmcgc2VsZWN0b3IgXCIke3Bvc2l0aW9uLmVsfVwiIHJldHVybmVkIGJ5IHNjcm9sbEJlaGF2aW9yLmApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNjcm9sbFRvT3B0aW9ucyA9IGdldEVsZW1lbnRQb3NpdGlvbihlbCwgcG9zaXRpb24pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgc2Nyb2xsVG9PcHRpb25zID0gcG9zaXRpb247XHJcbiAgICB9XHJcbiAgICBpZiAoJ3Njcm9sbEJlaGF2aW9yJyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUpXHJcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHNjcm9sbFRvT3B0aW9ucyk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oc2Nyb2xsVG9PcHRpb25zLmxlZnQgIT0gbnVsbCA/IHNjcm9sbFRvT3B0aW9ucy5sZWZ0IDogd2luZG93LnBhZ2VYT2Zmc2V0LCBzY3JvbGxUb09wdGlvbnMudG9wICE9IG51bGwgPyBzY3JvbGxUb09wdGlvbnMudG9wIDogd2luZG93LnBhZ2VZT2Zmc2V0KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRTY3JvbGxLZXkocGF0aCwgZGVsdGEpIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gaGlzdG9yeS5zdGF0ZSA/IGhpc3Rvcnkuc3RhdGUucG9zaXRpb24gLSBkZWx0YSA6IC0xO1xyXG4gICAgcmV0dXJuIHBvc2l0aW9uICsgcGF0aDtcclxufVxyXG5jb25zdCBzY3JvbGxQb3NpdGlvbnMgPSBuZXcgTWFwKCk7XHJcbmZ1bmN0aW9uIHNhdmVTY3JvbGxQb3NpdGlvbihrZXksIHNjcm9sbFBvc2l0aW9uKSB7XHJcbiAgICBzY3JvbGxQb3NpdGlvbnMuc2V0KGtleSwgc2Nyb2xsUG9zaXRpb24pO1xyXG59XHJcbmZ1bmN0aW9uIGdldFNhdmVkU2Nyb2xsUG9zaXRpb24oa2V5KSB7XHJcbiAgICBjb25zdCBzY3JvbGwgPSBzY3JvbGxQb3NpdGlvbnMuZ2V0KGtleSk7XHJcbiAgICAvLyBjb25zdW1lIGl0IHNvIGl0J3Mgbm90IHVzZWQgYWdhaW5cclxuICAgIHNjcm9sbFBvc2l0aW9ucy5kZWxldGUoa2V5KTtcclxuICAgIHJldHVybiBzY3JvbGw7XHJcbn1cclxuLy8gVE9ETzogUkZDIGFib3V0IGhvdyB0byBzYXZlIHNjcm9sbCBwb3NpdGlvblxyXG4vKipcclxuICogU2Nyb2xsQmVoYXZpb3IgaW5zdGFuY2UgdXNlZCBieSB0aGUgcm91dGVyIHRvIGNvbXB1dGUgYW5kIHJlc3RvcmUgdGhlIHNjcm9sbFxyXG4gKiBwb3NpdGlvbiB3aGVuIG5hdmlnYXRpbmcuXHJcbiAqL1xyXG4vLyBleHBvcnQgaW50ZXJmYWNlIFNjcm9sbEhhbmRsZXI8U2Nyb2xsUG9zaXRpb25FbnRyeSBleHRlbmRzIEhpc3RvcnlTdGF0ZVZhbHVlLCBTY3JvbGxQb3NpdGlvbiBleHRlbmRzIFNjcm9sbFBvc2l0aW9uRW50cnk+IHtcclxuLy8gICAvLyByZXR1cm5zIGEgc2Nyb2xsIHBvc2l0aW9uIHRoYXQgY2FuIGJlIHNhdmVkIGluIGhpc3RvcnlcclxuLy8gICBjb21wdXRlKCk6IFNjcm9sbFBvc2l0aW9uRW50cnlcclxuLy8gICAvLyBjYW4gdGFrZSBhbiBleHRlbmRlZCBTY3JvbGxQb3NpdGlvbkVudHJ5XHJcbi8vICAgc2Nyb2xsKHBvc2l0aW9uOiBTY3JvbGxQb3NpdGlvbik6IHZvaWRcclxuLy8gfVxyXG4vLyBleHBvcnQgY29uc3Qgc2Nyb2xsSGFuZGxlcjogU2Nyb2xsSGFuZGxlcjxTY3JvbGxQb3NpdGlvbj4gPSB7XHJcbi8vICAgY29tcHV0ZTogY29tcHV0ZVNjcm9sbCxcclxuLy8gICBzY3JvbGw6IHNjcm9sbFRvUG9zaXRpb24sXHJcbi8vIH1cblxubGV0IGNyZWF0ZUJhc2VMb2NhdGlvbiA9ICgpID0+IGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3Q7XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbm9ybWFsaXplZCBoaXN0b3J5IGxvY2F0aW9uIGZyb20gYSB3aW5kb3cubG9jYXRpb24gb2JqZWN0XHJcbiAqIEBwYXJhbSBsb2NhdGlvbiAtXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVDdXJyZW50TG9jYXRpb24oYmFzZSwgbG9jYXRpb24pIHtcclxuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9ID0gbG9jYXRpb247XHJcbiAgICAvLyBhbGxvd3MgaGFzaCBiYXNlcyBsaWtlICMsIC8jLCAjLywgIyEsICMhLywgLyMhLywgb3IgZXZlbiAvZm9sZGVyI2VuZFxyXG4gICAgY29uc3QgaGFzaFBvcyA9IGJhc2UuaW5kZXhPZignIycpO1xyXG4gICAgaWYgKGhhc2hQb3MgPiAtMSkge1xyXG4gICAgICAgIGxldCBzbGljZVBvcyA9IGhhc2guaW5jbHVkZXMoYmFzZS5zbGljZShoYXNoUG9zKSlcclxuICAgICAgICAgICAgPyBiYXNlLnNsaWNlKGhhc2hQb3MpLmxlbmd0aFxyXG4gICAgICAgICAgICA6IDE7XHJcbiAgICAgICAgbGV0IHBhdGhGcm9tSGFzaCA9IGhhc2guc2xpY2Uoc2xpY2VQb3MpO1xyXG4gICAgICAgIC8vIHByZXBlbmQgdGhlIHN0YXJ0aW5nIHNsYXNoIHRvIGhhc2ggc28gdGhlIHVybCBzdGFydHMgd2l0aCAvI1xyXG4gICAgICAgIGlmIChwYXRoRnJvbUhhc2hbMF0gIT09ICcvJylcclxuICAgICAgICAgICAgcGF0aEZyb21IYXNoID0gJy8nICsgcGF0aEZyb21IYXNoO1xyXG4gICAgICAgIHJldHVybiBzdHJpcEJhc2UocGF0aEZyb21IYXNoLCAnJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXRoID0gc3RyaXBCYXNlKHBhdGhuYW1lLCBiYXNlKTtcclxuICAgIHJldHVybiBwYXRoICsgc2VhcmNoICsgaGFzaDtcclxufVxyXG5mdW5jdGlvbiB1c2VIaXN0b3J5TGlzdGVuZXJzKGJhc2UsIGhpc3RvcnlTdGF0ZSwgY3VycmVudExvY2F0aW9uLCByZXBsYWNlKSB7XHJcbiAgICBsZXQgbGlzdGVuZXJzID0gW107XHJcbiAgICBsZXQgdGVhcmRvd25zID0gW107XHJcbiAgICAvLyBUT0RPOiBzaG91bGQgaXQgYmUgYSBzdGFjaz8gYSBEaWN0LiBDaGVjayBpZiB0aGUgcG9wc3RhdGUgbGlzdGVuZXJcclxuICAgIC8vIGNhbiB0cmlnZ2VyIHR3aWNlXHJcbiAgICBsZXQgcGF1c2VTdGF0ZSA9IG51bGw7XHJcbiAgICBjb25zdCBwb3BTdGF0ZUhhbmRsZXIgPSAoeyBzdGF0ZSwgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRvID0gY3JlYXRlQ3VycmVudExvY2F0aW9uKGJhc2UsIGxvY2F0aW9uKTtcclxuICAgICAgICBjb25zdCBmcm9tID0gY3VycmVudExvY2F0aW9uLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGZyb21TdGF0ZSA9IGhpc3RvcnlTdGF0ZS52YWx1ZTtcclxuICAgICAgICBsZXQgZGVsdGEgPSAwO1xyXG4gICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICBjdXJyZW50TG9jYXRpb24udmFsdWUgPSB0bztcclxuICAgICAgICAgICAgaGlzdG9yeVN0YXRlLnZhbHVlID0gc3RhdGU7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGUgcG9wc3RhdGUgYW5kIHJlc2V0IHRoZSBwYXVzZVN0YXRlXHJcbiAgICAgICAgICAgIGlmIChwYXVzZVN0YXRlICYmIHBhdXNlU3RhdGUgPT09IGZyb20pIHtcclxuICAgICAgICAgICAgICAgIHBhdXNlU3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlbHRhID0gZnJvbVN0YXRlID8gc3RhdGUucG9zaXRpb24gLSBmcm9tU3RhdGUucG9zaXRpb24gOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmVwbGFjZSh0byk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHsgZGVsdGFGcm9tQ3VycmVudCB9KVxyXG4gICAgICAgIC8vIEhlcmUgd2UgY291bGQgYWxzbyByZXZlcnQgdGhlIG5hdmlnYXRpb24gYnkgY2FsbGluZyBoaXN0b3J5LmdvKC1kZWx0YSlcclxuICAgICAgICAvLyB0aGlzIGxpc3RlbmVyIHdpbGwgaGF2ZSB0byBiZSBhZGFwdGVkIHRvIG5vdCB0cmlnZ2VyIGFnYWluIGFuZCB0byB3YWl0IGZvciB0aGUgdXJsXHJcbiAgICAgICAgLy8gdG8gYmUgdXBkYXRlZCBiZWZvcmUgdHJpZ2dlcmluZyB0aGUgbGlzdGVuZXJzLiBTb21lIGtpbmQgb2YgdmFsaWRhdGlvbiBmdW5jdGlvbiB3b3VsZCBhbHNvXHJcbiAgICAgICAgLy8gbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGxpc3RlbmVycyBzbyB0aGUgbmF2aWdhdGlvbiBjYW4gYmUgYWNjZXB0ZWRcclxuICAgICAgICAvLyBjYWxsIGFsbCBsaXN0ZW5lcnNcclxuICAgICAgICBsaXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XHJcbiAgICAgICAgICAgIGxpc3RlbmVyKGN1cnJlbnRMb2NhdGlvbi52YWx1ZSwgZnJvbSwge1xyXG4gICAgICAgICAgICAgICAgZGVsdGEsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBOYXZpZ2F0aW9uVHlwZS5wb3AsXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGRlbHRhXHJcbiAgICAgICAgICAgICAgICAgICAgPyBkZWx0YSA+IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBOYXZpZ2F0aW9uRGlyZWN0aW9uLmZvcndhcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBOYXZpZ2F0aW9uRGlyZWN0aW9uLmJhY2tcclxuICAgICAgICAgICAgICAgICAgICA6IE5hdmlnYXRpb25EaXJlY3Rpb24udW5rbm93bixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgZnVuY3Rpb24gcGF1c2VMaXN0ZW5lcnMoKSB7XHJcbiAgICAgICAgcGF1c2VTdGF0ZSA9IGN1cnJlbnRMb2NhdGlvbi52YWx1ZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGxpc3RlbihjYWxsYmFjaykge1xyXG4gICAgICAgIC8vIHNldHVwIHRoZSBsaXN0ZW5lciBhbmQgcHJlcGFyZSB0ZWFyZG93biBjYWxsYmFja3NcclxuICAgICAgICBsaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7XHJcbiAgICAgICAgY29uc3QgdGVhcmRvd24gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJzLmluZGV4T2YoY2FsbGJhY2spO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSlcclxuICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGVhcmRvd25zLnB1c2godGVhcmRvd24pO1xyXG4gICAgICAgIHJldHVybiB0ZWFyZG93bjtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGJlZm9yZVVubG9hZExpc3RlbmVyKCkge1xyXG4gICAgICAgIGNvbnN0IHsgaGlzdG9yeSB9ID0gd2luZG93O1xyXG4gICAgICAgIGlmICghaGlzdG9yeS5zdGF0ZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKGFzc2lnbih7fSwgaGlzdG9yeS5zdGF0ZSwgeyBzY3JvbGw6IGNvbXB1dGVTY3JvbGxQb3NpdGlvbigpIH0pLCAnJyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBkZXN0cm95KCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgdGVhcmRvd24gb2YgdGVhcmRvd25zKVxyXG4gICAgICAgICAgICB0ZWFyZG93bigpO1xyXG4gICAgICAgIHRlYXJkb3ducyA9IFtdO1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHBvcFN0YXRlSGFuZGxlcik7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGJlZm9yZVVubG9hZExpc3RlbmVyKTtcclxuICAgIH1cclxuICAgIC8vIHNldHVwIHRoZSBsaXN0ZW5lcnMgYW5kIHByZXBhcmUgdGVhcmRvd24gY2FsbGJhY2tzXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBwb3BTdGF0ZUhhbmRsZXIpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGJlZm9yZVVubG9hZExpc3RlbmVyKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcGF1c2VMaXN0ZW5lcnMsXHJcbiAgICAgICAgbGlzdGVuLFxyXG4gICAgICAgIGRlc3Ryb3ksXHJcbiAgICB9O1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgc3RhdGUgb2JqZWN0XHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZFN0YXRlKGJhY2ssIGN1cnJlbnQsIGZvcndhcmQsIHJlcGxhY2VkID0gZmFsc2UsIGNvbXB1dGVTY3JvbGwgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBiYWNrLFxyXG4gICAgICAgIGN1cnJlbnQsXHJcbiAgICAgICAgZm9yd2FyZCxcclxuICAgICAgICByZXBsYWNlZCxcclxuICAgICAgICBwb3NpdGlvbjogd2luZG93Lmhpc3RvcnkubGVuZ3RoLFxyXG4gICAgICAgIHNjcm9sbDogY29tcHV0ZVNjcm9sbCA/IGNvbXB1dGVTY3JvbGxQb3NpdGlvbigpIDogbnVsbCxcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gdXNlSGlzdG9yeVN0YXRlTmF2aWdhdGlvbihiYXNlKSB7XHJcbiAgICBjb25zdCB7IGhpc3RvcnksIGxvY2F0aW9uIH0gPSB3aW5kb3c7XHJcbiAgICAvLyBwcml2YXRlIHZhcmlhYmxlc1xyXG4gICAgY29uc3QgY3VycmVudExvY2F0aW9uID0ge1xyXG4gICAgICAgIHZhbHVlOiBjcmVhdGVDdXJyZW50TG9jYXRpb24oYmFzZSwgbG9jYXRpb24pLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhpc3RvcnlTdGF0ZSA9IHsgdmFsdWU6IGhpc3Rvcnkuc3RhdGUgfTtcclxuICAgIC8vIGJ1aWxkIGN1cnJlbnQgaGlzdG9yeSBlbnRyeSBhcyB0aGlzIGlzIGEgZnJlc2ggbmF2aWdhdGlvblxyXG4gICAgaWYgKCFoaXN0b3J5U3RhdGUudmFsdWUpIHtcclxuICAgICAgICBjaGFuZ2VMb2NhdGlvbihjdXJyZW50TG9jYXRpb24udmFsdWUsIHtcclxuICAgICAgICAgICAgYmFjazogbnVsbCxcclxuICAgICAgICAgICAgY3VycmVudDogY3VycmVudExvY2F0aW9uLnZhbHVlLFxyXG4gICAgICAgICAgICBmb3J3YXJkOiBudWxsLFxyXG4gICAgICAgICAgICAvLyB0aGUgbGVuZ3RoIGlzIG9mZiBieSBvbmUsIHdlIG5lZWQgdG8gZGVjcmVhc2UgaXRcclxuICAgICAgICAgICAgcG9zaXRpb246IGhpc3RvcnkubGVuZ3RoIC0gMSxcclxuICAgICAgICAgICAgcmVwbGFjZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIC8vIGRvbid0IGFkZCBhIHNjcm9sbCBhcyB0aGUgdXNlciBtYXkgaGF2ZSBhbiBhbmNob3IgYW5kIHdlIHdhbnRcclxuICAgICAgICAgICAgLy8gc2Nyb2xsQmVoYXZpb3IgdG8gYmUgdHJpZ2dlcmVkIHdpdGhvdXQgYSBzYXZlZCBwb3NpdGlvblxyXG4gICAgICAgICAgICBzY3JvbGw6IG51bGwsXHJcbiAgICAgICAgfSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjaGFuZ2VMb2NhdGlvbih0bywgc3RhdGUsIHJlcGxhY2UpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBpZiBhIGJhc2UgdGFnIGlzIHByb3ZpZGVkIGFuZCB3ZSBhcmUgb24gYSBub3JtYWwgZG9tYWluLCB3ZSBoYXZlIHRvXHJcbiAgICAgICAgICogcmVzcGVjdCB0aGUgcHJvdmlkZWQgYGJhc2VgIGF0dHJpYnV0ZSBiZWNhdXNlIHB1c2hTdGF0ZSgpIHdpbGwgdXNlIGl0IGFuZFxyXG4gICAgICAgICAqIHBvdGVudGlhbGx5IGVyYXNlIGFueXRoaW5nIGJlZm9yZSB0aGUgYCNgIGxpa2UgYXRcclxuICAgICAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvcm91dGVyL2lzc3Vlcy82ODUgd2hlcmUgYSBiYXNlIG9mXHJcbiAgICAgICAgICogYC9mb2xkZXIvI2AgYnV0IGEgYmFzZSBvZiBgL2Agd291bGQgZXJhc2UgdGhlIGAvZm9sZGVyL2Agc2VjdGlvbi4gSWZcclxuICAgICAgICAgKiB0aGVyZSBpcyBubyBob3N0LCB0aGUgYDxiYXNlPmAgdGFnIG1ha2VzIG5vIHNlbnNlIGFuZCBpZiB0aGVyZSBpc24ndCBhXHJcbiAgICAgICAgICogYmFzZSB0YWcgd2UgY2FuIGp1c3QgdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGAjYC5cclxuICAgICAgICAgKi9cclxuICAgICAgICBjb25zdCBoYXNoSW5kZXggPSBiYXNlLmluZGV4T2YoJyMnKTtcclxuICAgICAgICBjb25zdCB1cmwgPSBoYXNoSW5kZXggPiAtMVxyXG4gICAgICAgICAgICA/IChsb2NhdGlvbi5ob3N0ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Jhc2UnKVxyXG4gICAgICAgICAgICAgICAgPyBiYXNlXHJcbiAgICAgICAgICAgICAgICA6IGJhc2Uuc2xpY2UoaGFzaEluZGV4KSkgKyB0b1xyXG4gICAgICAgICAgICA6IGNyZWF0ZUJhc2VMb2NhdGlvbigpICsgYmFzZSArIHRvO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIEJST1dTRVIgUVVJUktcclxuICAgICAgICAgICAgLy8gTk9URTogU2FmYXJpIHRocm93cyBhIFNlY3VyaXR5RXJyb3Igd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gMTAwIHRpbWVzIGluIDMwIHNlY29uZHNcclxuICAgICAgICAgICAgaGlzdG9yeVtyZXBsYWNlID8gJ3JlcGxhY2VTdGF0ZScgOiAncHVzaFN0YXRlJ10oc3RhdGUsICcnLCB1cmwpO1xyXG4gICAgICAgICAgICBoaXN0b3J5U3RhdGUudmFsdWUgPSBzdGF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKCdFcnJvciB3aXRoIHB1c2gvcmVwbGFjZSBTdGF0ZScsIGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRm9yY2UgdGhlIG5hdmlnYXRpb24sIHRoaXMgYWxzbyByZXNldHMgdGhlIGNhbGwgY291bnRcclxuICAgICAgICAgICAgbG9jYXRpb25bcmVwbGFjZSA/ICdyZXBsYWNlJyA6ICdhc3NpZ24nXSh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlcGxhY2UodG8sIGRhdGEpIHtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IGFzc2lnbih7fSwgaGlzdG9yeS5zdGF0ZSwgYnVpbGRTdGF0ZShoaXN0b3J5U3RhdGUudmFsdWUuYmFjaywgXHJcbiAgICAgICAgLy8ga2VlcCBiYWNrIGFuZCBmb3J3YXJkIGVudHJpZXMgYnV0IG92ZXJyaWRlIGN1cnJlbnQgcG9zaXRpb25cclxuICAgICAgICB0bywgaGlzdG9yeVN0YXRlLnZhbHVlLmZvcndhcmQsIHRydWUpLCBkYXRhLCB7IHBvc2l0aW9uOiBoaXN0b3J5U3RhdGUudmFsdWUucG9zaXRpb24gfSk7XHJcbiAgICAgICAgY2hhbmdlTG9jYXRpb24odG8sIHN0YXRlLCB0cnVlKTtcclxuICAgICAgICBjdXJyZW50TG9jYXRpb24udmFsdWUgPSB0bztcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHB1c2godG8sIGRhdGEpIHtcclxuICAgICAgICAvLyBBZGQgdG8gY3VycmVudCBlbnRyeSB0aGUgaW5mb3JtYXRpb24gb2Ygd2hlcmUgd2UgYXJlIGdvaW5nXHJcbiAgICAgICAgLy8gYXMgd2VsbCBhcyBzYXZpbmcgdGhlIGN1cnJlbnQgcG9zaXRpb25cclxuICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBhc3NpZ24oe30sIFxyXG4gICAgICAgIC8vIHVzZSBjdXJyZW50IGhpc3Rvcnkgc3RhdGUgdG8gZ3JhY2VmdWxseSBoYW5kbGUgYSB3cm9uZyBjYWxsIHRvXHJcbiAgICAgICAgLy8gaGlzdG9yeS5yZXBsYWNlU3RhdGVcclxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvcm91dGVyL2lzc3Vlcy8zNjZcclxuICAgICAgICBoaXN0b3J5U3RhdGUudmFsdWUsIGhpc3Rvcnkuc3RhdGUsIHtcclxuICAgICAgICAgICAgZm9yd2FyZDogdG8sXHJcbiAgICAgICAgICAgIHNjcm9sbDogY29tcHV0ZVNjcm9sbFBvc2l0aW9uKCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaGlzdG9yeS5zdGF0ZSkge1xyXG4gICAgICAgICAgICB3YXJuKGBoaXN0b3J5LnN0YXRlIHNlZW1zIHRvIGhhdmUgYmVlbiBtYW51YWxseSByZXBsYWNlZCB3aXRob3V0IHByZXNlcnZpbmcgdGhlIG5lY2Vzc2FyeSB2YWx1ZXMuIE1ha2Ugc3VyZSB0byBwcmVzZXJ2ZSBleGlzdGluZyBoaXN0b3J5IHN0YXRlIGlmIHlvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBoaXN0b3J5LnJlcGxhY2VTdGF0ZTpcXG5cXG5gICtcclxuICAgICAgICAgICAgICAgIGBoaXN0b3J5LnJlcGxhY2VTdGF0ZShoaXN0b3J5LnN0YXRlLCAnJywgdXJsKVxcblxcbmAgK1xyXG4gICAgICAgICAgICAgICAgYFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIGF0IGh0dHBzOi8vbmV4dC5yb3V0ZXIudnVlanMub3JnL2d1aWRlL21pZ3JhdGlvbi8jdXNhZ2Utb2YtaGlzdG9yeS1zdGF0ZS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2hhbmdlTG9jYXRpb24oY3VycmVudFN0YXRlLmN1cnJlbnQsIGN1cnJlbnRTdGF0ZSwgdHJ1ZSk7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBhc3NpZ24oe30sIGJ1aWxkU3RhdGUoY3VycmVudExvY2F0aW9uLnZhbHVlLCB0bywgbnVsbCksIHsgcG9zaXRpb246IGN1cnJlbnRTdGF0ZS5wb3NpdGlvbiArIDEgfSwgZGF0YSk7XHJcbiAgICAgICAgY2hhbmdlTG9jYXRpb24odG8sIHN0YXRlLCBmYWxzZSk7XHJcbiAgICAgICAgY3VycmVudExvY2F0aW9uLnZhbHVlID0gdG87XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGxvY2F0aW9uOiBjdXJyZW50TG9jYXRpb24sXHJcbiAgICAgICAgc3RhdGU6IGhpc3RvcnlTdGF0ZSxcclxuICAgICAgICBwdXNoLFxyXG4gICAgICAgIHJlcGxhY2UsXHJcbiAgICB9O1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGFuIEhUTUw1IGhpc3RvcnkuIE1vc3QgY29tbW9uIGhpc3RvcnkgZm9yIHNpbmdsZSBwYWdlIGFwcGxpY2F0aW9ucy5cclxuICpcclxuICogQHBhcmFtIGJhc2UgLVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlV2ViSGlzdG9yeShiYXNlKSB7XHJcbiAgICBiYXNlID0gbm9ybWFsaXplQmFzZShiYXNlKTtcclxuICAgIGNvbnN0IGhpc3RvcnlOYXZpZ2F0aW9uID0gdXNlSGlzdG9yeVN0YXRlTmF2aWdhdGlvbihiYXNlKTtcclxuICAgIGNvbnN0IGhpc3RvcnlMaXN0ZW5lcnMgPSB1c2VIaXN0b3J5TGlzdGVuZXJzKGJhc2UsIGhpc3RvcnlOYXZpZ2F0aW9uLnN0YXRlLCBoaXN0b3J5TmF2aWdhdGlvbi5sb2NhdGlvbiwgaGlzdG9yeU5hdmlnYXRpb24ucmVwbGFjZSk7XHJcbiAgICBmdW5jdGlvbiBnbyhkZWx0YSwgdHJpZ2dlckxpc3RlbmVycyA9IHRydWUpIHtcclxuICAgICAgICBpZiAoIXRyaWdnZXJMaXN0ZW5lcnMpXHJcbiAgICAgICAgICAgIGhpc3RvcnlMaXN0ZW5lcnMucGF1c2VMaXN0ZW5lcnMoKTtcclxuICAgICAgICBoaXN0b3J5LmdvKGRlbHRhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJvdXRlckhpc3RvcnkgPSBhc3NpZ24oe1xyXG4gICAgICAgIC8vIGl0J3Mgb3ZlcnJpZGRlbiByaWdodCBhZnRlclxyXG4gICAgICAgIGxvY2F0aW9uOiAnJyxcclxuICAgICAgICBiYXNlLFxyXG4gICAgICAgIGdvLFxyXG4gICAgICAgIGNyZWF0ZUhyZWY6IGNyZWF0ZUhyZWYuYmluZChudWxsLCBiYXNlKSxcclxuICAgIH0sIGhpc3RvcnlOYXZpZ2F0aW9uLCBoaXN0b3J5TGlzdGVuZXJzKTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyb3V0ZXJIaXN0b3J5LCAnbG9jYXRpb24nLCB7XHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICBnZXQ6ICgpID0+IGhpc3RvcnlOYXZpZ2F0aW9uLmxvY2F0aW9uLnZhbHVlLFxyXG4gICAgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocm91dGVySGlzdG9yeSwgJ3N0YXRlJywge1xyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgZ2V0OiAoKSA9PiBoaXN0b3J5TmF2aWdhdGlvbi5zdGF0ZS52YWx1ZSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJvdXRlckhpc3Rvcnk7XHJcbn1cblxuLyoqXHJcbiAqIENyZWF0ZXMgYSBpbi1tZW1vcnkgYmFzZWQgaGlzdG9yeS4gVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIGhpc3RvcnkgaXMgdG8gaGFuZGxlIFNTUi4gSXQgc3RhcnRzIGluIGEgc3BlY2lhbCBsb2NhdGlvbiB0aGF0IGlzIG5vd2hlcmUuXHJcbiAqIEl0J3MgdXAgdG8gdGhlIHVzZXIgdG8gcmVwbGFjZSB0aGF0IGxvY2F0aW9uIHdpdGggdGhlIHN0YXJ0ZXIgbG9jYXRpb24gYnkgZWl0aGVyIGNhbGxpbmcgYHJvdXRlci5wdXNoYCBvciBgcm91dGVyLnJlcGxhY2VgLlxyXG4gKlxyXG4gKiBAcGFyYW0gYmFzZSAtIEJhc2UgYXBwbGllZCB0byBhbGwgdXJscywgZGVmYXVsdHMgdG8gJy8nXHJcbiAqIEByZXR1cm5zIGEgaGlzdG9yeSBvYmplY3QgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSByb3V0ZXIgY29uc3RydWN0b3JcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZU1lbW9yeUhpc3RvcnkoYmFzZSA9ICcnKSB7XHJcbiAgICBsZXQgbGlzdGVuZXJzID0gW107XHJcbiAgICBsZXQgcXVldWUgPSBbU1RBUlRdO1xyXG4gICAgbGV0IHBvc2l0aW9uID0gMDtcclxuICAgIGJhc2UgPSBub3JtYWxpemVCYXNlKGJhc2UpO1xyXG4gICAgZnVuY3Rpb24gc2V0TG9jYXRpb24obG9jYXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbisrO1xyXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gcXVldWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vIHdlIGFyZSBhdCB0aGUgZW5kLCB3ZSBjYW4gc2ltcGx5IGFwcGVuZCBhIG5ldyBlbnRyeVxyXG4gICAgICAgICAgICBxdWV1ZS5wdXNoKGxvY2F0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHdlIGFyZSBpbiB0aGUgbWlkZGxlLCB3ZSByZW1vdmUgZXZlcnl0aGluZyBmcm9tIGhlcmUgaW4gdGhlIHF1ZXVlXHJcbiAgICAgICAgICAgIHF1ZXVlLnNwbGljZShwb3NpdGlvbik7XHJcbiAgICAgICAgICAgIHF1ZXVlLnB1c2gobG9jYXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHRyaWdnZXJMaXN0ZW5lcnModG8sIGZyb20sIHsgZGlyZWN0aW9uLCBkZWx0YSB9KSB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IHtcclxuICAgICAgICAgICAgZGlyZWN0aW9uLFxyXG4gICAgICAgICAgICBkZWx0YSxcclxuICAgICAgICAgICAgdHlwZTogTmF2aWdhdGlvblR5cGUucG9wLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBsaXN0ZW5lcnMpIHtcclxuICAgICAgICAgICAgY2FsbGJhY2sodG8sIGZyb20sIGluZm8pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHJvdXRlckhpc3RvcnkgPSB7XHJcbiAgICAgICAgLy8gcmV3cml0dGVuIGJ5IE9iamVjdC5kZWZpbmVQcm9wZXJ0eVxyXG4gICAgICAgIGxvY2F0aW9uOiBTVEFSVCxcclxuICAgICAgICAvLyBUT0RPOiBzaG91bGQgYmUga2VwdCBpbiBxdWV1ZVxyXG4gICAgICAgIHN0YXRlOiB7fSxcclxuICAgICAgICBiYXNlLFxyXG4gICAgICAgIGNyZWF0ZUhyZWY6IGNyZWF0ZUhyZWYuYmluZChudWxsLCBiYXNlKSxcclxuICAgICAgICByZXBsYWNlKHRvKSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBjdXJyZW50IGVudHJ5IGFuZCBkZWNyZW1lbnQgcG9zaXRpb25cclxuICAgICAgICAgICAgcXVldWUuc3BsaWNlKHBvc2l0aW9uLS0sIDEpO1xyXG4gICAgICAgICAgICBzZXRMb2NhdGlvbih0byk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwdXNoKHRvLCBkYXRhKSB7XHJcbiAgICAgICAgICAgIHNldExvY2F0aW9uKHRvKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxpc3RlbihjYWxsYmFjaykge1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGxpc3RlbmVycy5pbmRleE9mKGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgbGlzdGVuZXJzID0gW107XHJcbiAgICAgICAgICAgIHF1ZXVlID0gW1NUQVJUXTtcclxuICAgICAgICAgICAgcG9zaXRpb24gPSAwO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ28oZGVsdGEsIHNob3VsZFRyaWdnZXIgPSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSB0aGlzLmxvY2F0aW9uO1xyXG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBcclxuICAgICAgICAgICAgLy8gd2UgYXJlIGNvbnNpZGVyaW5nIGRlbHRhID09PSAwIGdvaW5nIGZvcndhcmQsIGJ1dCBpbiBhYnN0cmFjdCBtb2RlXHJcbiAgICAgICAgICAgIC8vIHVzaW5nIDAgZm9yIHRoZSBkZWx0YSBkb2Vzbid0IG1ha2Ugc2Vuc2UgbGlrZSBpdCBkb2VzIGluIGh0bWw1IHdoZXJlXHJcbiAgICAgICAgICAgIC8vIGl0IHJlbG9hZHMgdGhlIHBhZ2VcclxuICAgICAgICAgICAgZGVsdGEgPCAwID8gTmF2aWdhdGlvbkRpcmVjdGlvbi5iYWNrIDogTmF2aWdhdGlvbkRpcmVjdGlvbi5mb3J3YXJkO1xyXG4gICAgICAgICAgICBwb3NpdGlvbiA9IE1hdGgubWF4KDAsIE1hdGgubWluKHBvc2l0aW9uICsgZGVsdGEsIHF1ZXVlLmxlbmd0aCAtIDEpKTtcclxuICAgICAgICAgICAgaWYgKHNob3VsZFRyaWdnZXIpIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJMaXN0ZW5lcnModGhpcy5sb2NhdGlvbiwgZnJvbSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBkZWx0YSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIH07XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocm91dGVySGlzdG9yeSwgJ2xvY2F0aW9uJywge1xyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgZ2V0OiAoKSA9PiBxdWV1ZVtwb3NpdGlvbl0sXHJcbiAgICB9KTtcclxuICAgIHJldHVybiByb3V0ZXJIaXN0b3J5O1xyXG59XG5cbi8qKlxyXG4gKiBDcmVhdGVzIGEgaGFzaCBoaXN0b3J5LiBVc2VmdWwgZm9yIHdlYiBhcHBsaWNhdGlvbnMgd2l0aCBubyBob3N0IChlLmcuXHJcbiAqIGBmaWxlOi8vYCkgb3Igd2hlbiBjb25maWd1cmluZyBhIHNlcnZlciB0byBoYW5kbGUgYW55IFVSTCBpcyBub3QgcG9zc2libGUuXHJcbiAqXHJcbiAqIEBwYXJhbSBiYXNlIC0gb3B0aW9uYWwgYmFzZSB0byBwcm92aWRlLiBEZWZhdWx0cyB0byBgbG9jYXRpb24ucGF0aG5hbWUgK1xyXG4gKiBsb2NhdGlvbi5zZWFyY2hgIElmIHRoZXJlIGlzIGEgYDxiYXNlPmAgdGFnIGluIHRoZSBgaGVhZGAsIGl0cyB2YWx1ZSB3aWxsIGJlXHJcbiAqIGlnbm9yZWQgaW4gZmF2b3Igb2YgdGhpcyBwYXJhbWV0ZXIgKipidXQgbm90ZSBpdCBhZmZlY3RzIGFsbCB0aGVcclxuICogaGlzdG9yeS5wdXNoU3RhdGUoKSBjYWxscyoqLCBtZWFuaW5nIHRoYXQgaWYgeW91IHVzZSBhIGA8YmFzZT5gIHRhZywgaXQnc1xyXG4gKiBgaHJlZmAgdmFsdWUgKipoYXMgdG8gbWF0Y2ggdGhpcyBwYXJhbWV0ZXIqKiAoaWdub3JpbmcgYW55dGhpbmcgYWZ0ZXIgdGhlXHJcbiAqIGAjYCkuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGpzXHJcbiAqIC8vIGF0IGh0dHBzOi8vZXhhbXBsZS5jb20vZm9sZGVyXHJcbiAqIGNyZWF0ZVdlYkhhc2hIaXN0b3J5KCkgLy8gZ2l2ZXMgYSB1cmwgb2YgYGh0dHBzOi8vZXhhbXBsZS5jb20vZm9sZGVyI2BcclxuICogY3JlYXRlV2ViSGFzaEhpc3RvcnkoJy9mb2xkZXIvJykgLy8gZ2l2ZXMgYSB1cmwgb2YgYGh0dHBzOi8vZXhhbXBsZS5jb20vZm9sZGVyLyNgXHJcbiAqIC8vIGlmIHRoZSBgI2AgaXMgcHJvdmlkZWQgaW4gdGhlIGJhc2UsIGl0IHdvbid0IGJlIGFkZGVkIGJ5IGBjcmVhdGVXZWJIYXNoSGlzdG9yeWBcclxuICogY3JlYXRlV2ViSGFzaEhpc3RvcnkoJy9mb2xkZXIvIy9hcHAvJykgLy8gZ2l2ZXMgYSB1cmwgb2YgYGh0dHBzOi8vZXhhbXBsZS5jb20vZm9sZGVyLyMvYXBwL2BcclxuICogLy8geW91IHNob3VsZCBhdm9pZCBkb2luZyB0aGlzIGJlY2F1c2UgaXQgY2hhbmdlcyB0aGUgb3JpZ2luYWwgdXJsIGFuZCBicmVha3MgY29weWluZyB1cmxzXHJcbiAqIGNyZWF0ZVdlYkhhc2hIaXN0b3J5KCcvb3RoZXItZm9sZGVyLycpIC8vIGdpdmVzIGEgdXJsIG9mIGBodHRwczovL2V4YW1wbGUuY29tL290aGVyLWZvbGRlci8jYFxyXG4gKlxyXG4gKiAvLyBhdCBmaWxlOi8vL3Vzci9ldGMvZm9sZGVyL2luZGV4Lmh0bWxcclxuICogLy8gZm9yIGxvY2F0aW9ucyB3aXRoIG5vIGBob3N0YCwgdGhlIGJhc2UgaXMgaWdub3JlZFxyXG4gKiBjcmVhdGVXZWJIYXNoSGlzdG9yeSgnL2lBbUlnbm9yZWQnKSAvLyBnaXZlcyBhIHVybCBvZiBgZmlsZTovLy91c3IvZXRjL2ZvbGRlci9pbmRleC5odG1sI2BcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVXZWJIYXNoSGlzdG9yeShiYXNlKSB7XHJcbiAgICAvLyBNYWtlIHN1cmUgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBmaW5lIGluIHRlcm1zIG9mIGVuY29kaW5nLCBzcGVjaWFsbHkgZm9yIElFMTFcclxuICAgIC8vIGZvciBgZmlsZTovL2AsIGRpcmVjdGx5IHVzZSB0aGUgcGF0aG5hbWUgYW5kIGlnbm9yZSB0aGUgYmFzZVxyXG4gICAgLy8gbG9jYXRpb24ucGF0aG5hbWUgY29udGFpbnMgYW4gaW5pdGlhbCBgL2AgZXZlbiBhdCB0aGUgcm9vdDogYGh0dHBzOi8vZXhhbXBsZS5jb21gXHJcbiAgICBiYXNlID0gbG9jYXRpb24uaG9zdCA/IGJhc2UgfHwgbG9jYXRpb24ucGF0aG5hbWUgKyBsb2NhdGlvbi5zZWFyY2ggOiAnJztcclxuICAgIC8vIGFsbG93IHRoZSB1c2VyIHRvIHByb3ZpZGUgYSBgI2AgaW4gdGhlIG1pZGRsZTogYC9iYXNlLyMvYXBwYFxyXG4gICAgaWYgKCFiYXNlLmluY2x1ZGVzKCcjJykpXHJcbiAgICAgICAgYmFzZSArPSAnIyc7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFiYXNlLmVuZHNXaXRoKCcjLycpICYmICFiYXNlLmVuZHNXaXRoKCcjJykpIHtcclxuICAgICAgICB3YXJuKGBBIGhhc2ggYmFzZSBtdXN0IGVuZCB3aXRoIGEgXCIjXCI6XFxuXCIke2Jhc2V9XCIgc2hvdWxkIGJlIFwiJHtiYXNlLnJlcGxhY2UoLyMuKiQvLCAnIycpfVwiLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZVdlYkhpc3RvcnkoYmFzZSk7XHJcbn1cblxuZnVuY3Rpb24gaXNSb3V0ZUxvY2F0aW9uKHJvdXRlKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHJvdXRlID09PSAnc3RyaW5nJyB8fCAocm91dGUgJiYgdHlwZW9mIHJvdXRlID09PSAnb2JqZWN0Jyk7XHJcbn1cclxuZnVuY3Rpb24gaXNSb3V0ZU5hbWUobmFtZSkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgbmFtZSA9PT0gJ3N5bWJvbCc7XHJcbn1cblxuLyoqXHJcbiAqIEluaXRpYWwgcm91dGUgbG9jYXRpb24gd2hlcmUgdGhlIHJvdXRlciBpcy4gQ2FuIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBndWFyZHNcclxuICogdG8gZGlmZmVyZW50aWF0ZSB0aGUgaW5pdGlhbCBuYXZpZ2F0aW9uLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBqc1xyXG4gKiBpbXBvcnQgeyBTVEFSVF9MT0NBVElPTiB9IGZyb20gJ3Z1ZS1yb3V0ZXInXHJcbiAqXHJcbiAqIHJvdXRlci5iZWZvcmVFYWNoKCh0bywgZnJvbSkgPT4ge1xyXG4gKiAgIGlmIChmcm9tID09PSBTVEFSVF9MT0NBVElPTikge1xyXG4gKiAgICAgLy8gaW5pdGlhbCBuYXZpZ2F0aW9uXHJcbiAqICAgfVxyXG4gKiB9KVxyXG4gKiBgYGBcclxuICovXHJcbmNvbnN0IFNUQVJUX0xPQ0FUSU9OX05PUk1BTElaRUQgPSB7XHJcbiAgICBwYXRoOiAnLycsXHJcbiAgICBuYW1lOiB1bmRlZmluZWQsXHJcbiAgICBwYXJhbXM6IHt9LFxyXG4gICAgcXVlcnk6IHt9LFxyXG4gICAgaGFzaDogJycsXHJcbiAgICBmdWxsUGF0aDogJy8nLFxyXG4gICAgbWF0Y2hlZDogW10sXHJcbiAgICBtZXRhOiB7fSxcclxuICAgIHJlZGlyZWN0ZWRGcm9tOiB1bmRlZmluZWQsXHJcbn07XG5cbmNvbnN0IE5hdmlnYXRpb25GYWlsdXJlU3ltYm9sID0gLyojX19QVVJFX18qLyBQb2x5U3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICduYXZpZ2F0aW9uIGZhaWx1cmUnIDogJ25mJyk7XHJcbi8qKlxyXG4gKiBFbnVtZXJhdGlvbiB3aXRoIGFsbCBwb3NzaWJsZSB0eXBlcyBmb3IgbmF2aWdhdGlvbiBmYWlsdXJlcy4gQ2FuIGJlIHBhc3NlZCB0b1xyXG4gKiB7QGxpbmsgaXNOYXZpZ2F0aW9uRmFpbHVyZX0gdG8gY2hlY2sgZm9yIHNwZWNpZmljIGZhaWx1cmVzLlxyXG4gKi9cclxudmFyIE5hdmlnYXRpb25GYWlsdXJlVHlwZTtcclxuKGZ1bmN0aW9uIChOYXZpZ2F0aW9uRmFpbHVyZVR5cGUpIHtcclxuICAgIC8qKlxyXG4gICAgICogQW4gYWJvcnRlZCBuYXZpZ2F0aW9uIGlzIGEgbmF2aWdhdGlvbiB0aGF0IGZhaWxlZCBiZWNhdXNlIGEgbmF2aWdhdGlvblxyXG4gICAgICogZ3VhcmQgcmV0dXJuZWQgYGZhbHNlYCBvciBjYWxsZWQgYG5leHQoZmFsc2UpYFxyXG4gICAgICovXHJcbiAgICBOYXZpZ2F0aW9uRmFpbHVyZVR5cGVbTmF2aWdhdGlvbkZhaWx1cmVUeXBlW1wiYWJvcnRlZFwiXSA9IDRdID0gXCJhYm9ydGVkXCI7XHJcbiAgICAvKipcclxuICAgICAqIEEgY2FuY2VsbGVkIG5hdmlnYXRpb24gaXMgYSBuYXZpZ2F0aW9uIHRoYXQgZmFpbGVkIGJlY2F1c2UgYSBtb3JlIHJlY2VudFxyXG4gICAgICogbmF2aWdhdGlvbiBmaW5pc2hlZCBzdGFydGVkIChub3QgbmVjZXNzYXJpbHkgZmluaXNoZWQpLlxyXG4gICAgICovXHJcbiAgICBOYXZpZ2F0aW9uRmFpbHVyZVR5cGVbTmF2aWdhdGlvbkZhaWx1cmVUeXBlW1wiY2FuY2VsbGVkXCJdID0gOF0gPSBcImNhbmNlbGxlZFwiO1xyXG4gICAgLyoqXHJcbiAgICAgKiBBIGR1cGxpY2F0ZWQgbmF2aWdhdGlvbiBpcyBhIG5hdmlnYXRpb24gdGhhdCBmYWlsZWQgYmVjYXVzZSBpdCB3YXNcclxuICAgICAqIGluaXRpYXRlZCB3aGlsZSBhbHJlYWR5IGJlaW5nIGF0IHRoZSBleGFjdCBzYW1lIGxvY2F0aW9uLlxyXG4gICAgICovXHJcbiAgICBOYXZpZ2F0aW9uRmFpbHVyZVR5cGVbTmF2aWdhdGlvbkZhaWx1cmVUeXBlW1wiZHVwbGljYXRlZFwiXSA9IDE2XSA9IFwiZHVwbGljYXRlZFwiO1xyXG59KShOYXZpZ2F0aW9uRmFpbHVyZVR5cGUgfHwgKE5hdmlnYXRpb25GYWlsdXJlVHlwZSA9IHt9KSk7XHJcbi8vIERFViBvbmx5IGRlYnVnIG1lc3NhZ2VzXHJcbmNvbnN0IEVycm9yVHlwZU1lc3NhZ2VzID0ge1xyXG4gICAgWzEgLyogTUFUQ0hFUl9OT1RfRk9VTkQgKi9dKHsgbG9jYXRpb24sIGN1cnJlbnRMb2NhdGlvbiB9KSB7XHJcbiAgICAgICAgcmV0dXJuIGBObyBtYXRjaCBmb3JcXG4gJHtKU09OLnN0cmluZ2lmeShsb2NhdGlvbil9JHtjdXJyZW50TG9jYXRpb25cclxuICAgICAgICAgICAgPyAnXFxud2hpbGUgYmVpbmcgYXRcXG4nICsgSlNPTi5zdHJpbmdpZnkoY3VycmVudExvY2F0aW9uKVxyXG4gICAgICAgICAgICA6ICcnfWA7XHJcbiAgICB9LFxyXG4gICAgWzIgLyogTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCAqL10oeyBmcm9tLCB0bywgfSkge1xyXG4gICAgICAgIHJldHVybiBgUmVkaXJlY3RlZCBmcm9tIFwiJHtmcm9tLmZ1bGxQYXRofVwiIHRvIFwiJHtzdHJpbmdpZnlSb3V0ZSh0byl9XCIgdmlhIGEgbmF2aWdhdGlvbiBndWFyZC5gO1xyXG4gICAgfSxcclxuICAgIFs0IC8qIE5BVklHQVRJT05fQUJPUlRFRCAqL10oeyBmcm9tLCB0byB9KSB7XHJcbiAgICAgICAgcmV0dXJuIGBOYXZpZ2F0aW9uIGFib3J0ZWQgZnJvbSBcIiR7ZnJvbS5mdWxsUGF0aH1cIiB0byBcIiR7dG8uZnVsbFBhdGh9XCIgdmlhIGEgbmF2aWdhdGlvbiBndWFyZC5gO1xyXG4gICAgfSxcclxuICAgIFs4IC8qIE5BVklHQVRJT05fQ0FOQ0VMTEVEICovXSh7IGZyb20sIHRvIH0pIHtcclxuICAgICAgICByZXR1cm4gYE5hdmlnYXRpb24gY2FuY2VsbGVkIGZyb20gXCIke2Zyb20uZnVsbFBhdGh9XCIgdG8gXCIke3RvLmZ1bGxQYXRofVwiIHdpdGggYSBuZXcgbmF2aWdhdGlvbi5gO1xyXG4gICAgfSxcclxuICAgIFsxNiAvKiBOQVZJR0FUSU9OX0RVUExJQ0FURUQgKi9dKHsgZnJvbSwgdG8gfSkge1xyXG4gICAgICAgIHJldHVybiBgQXZvaWRlZCByZWR1bmRhbnQgbmF2aWdhdGlvbiB0byBjdXJyZW50IGxvY2F0aW9uOiBcIiR7ZnJvbS5mdWxsUGF0aH1cIi5gO1xyXG4gICAgfSxcclxufTtcclxuZnVuY3Rpb24gY3JlYXRlUm91dGVyRXJyb3IodHlwZSwgcGFyYW1zKSB7XHJcbiAgICAvLyBrZWVwIGZ1bGwgZXJyb3IgbWVzc2FnZXMgaW4gY2pzIHZlcnNpb25zXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8ICF0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuIGFzc2lnbihuZXcgRXJyb3IoRXJyb3JUeXBlTWVzc2FnZXNbdHlwZV0ocGFyYW1zKSksIHtcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgW05hdmlnYXRpb25GYWlsdXJlU3ltYm9sXTogdHJ1ZSxcclxuICAgICAgICB9LCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGFzc2lnbihuZXcgRXJyb3IoKSwge1xyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBbTmF2aWdhdGlvbkZhaWx1cmVTeW1ib2xdOiB0cnVlLFxyXG4gICAgICAgIH0sIHBhcmFtcyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNOYXZpZ2F0aW9uRmFpbHVyZShlcnJvciwgdHlwZSkge1xyXG4gICAgcmV0dXJuIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmXHJcbiAgICAgICAgTmF2aWdhdGlvbkZhaWx1cmVTeW1ib2wgaW4gZXJyb3IgJiZcclxuICAgICAgICAodHlwZSA9PSBudWxsIHx8ICEhKGVycm9yLnR5cGUgJiB0eXBlKSkpO1xyXG59XHJcbmNvbnN0IHByb3BlcnRpZXNUb0xvZyA9IFsncGFyYW1zJywgJ3F1ZXJ5JywgJ2hhc2gnXTtcclxuZnVuY3Rpb24gc3RyaW5naWZ5Um91dGUodG8pIHtcclxuICAgIGlmICh0eXBlb2YgdG8gPT09ICdzdHJpbmcnKVxyXG4gICAgICAgIHJldHVybiB0bztcclxuICAgIGlmICgncGF0aCcgaW4gdG8pXHJcbiAgICAgICAgcmV0dXJuIHRvLnBhdGg7XHJcbiAgICBjb25zdCBsb2NhdGlvbiA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgcHJvcGVydGllc1RvTG9nKSB7XHJcbiAgICAgICAgaWYgKGtleSBpbiB0bylcclxuICAgICAgICAgICAgbG9jYXRpb25ba2V5XSA9IHRvW2tleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobG9jYXRpb24sIG51bGwsIDIpO1xyXG59XG5cbi8vIGRlZmF1bHQgcGF0dGVybiBmb3IgYSBwYXJhbTogbm9uIGdyZWVkeSBldmVyeXRoaW5nIGJ1dCAvXHJcbmNvbnN0IEJBU0VfUEFSQU1fUEFUVEVSTiA9ICdbXi9dKz8nO1xyXG5jb25zdCBCQVNFX1BBVEhfUEFSU0VSX09QVElPTlMgPSB7XHJcbiAgICBzZW5zaXRpdmU6IGZhbHNlLFxyXG4gICAgc3RyaWN0OiBmYWxzZSxcclxuICAgIHN0YXJ0OiB0cnVlLFxyXG4gICAgZW5kOiB0cnVlLFxyXG59O1xyXG4vLyBTcGVjaWFsIFJlZ2V4IGNoYXJhY3RlcnMgdGhhdCBtdXN0IGJlIGVzY2FwZWQgaW4gc3RhdGljIHRva2Vuc1xyXG5jb25zdCBSRUdFWF9DSEFSU19SRSA9IC9bLisqP14ke30oKVtcXF0vXFxcXF0vZztcclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBwYXRoIHBhcnNlciBmcm9tIGFuIGFycmF5IG9mIFNlZ21lbnRzIChhIHNlZ21lbnQgaXMgYW4gYXJyYXkgb2YgVG9rZW5zKVxyXG4gKlxyXG4gKiBAcGFyYW0gc2VnbWVudHMgLSBhcnJheSBvZiBzZWdtZW50cyByZXR1cm5lZCBieSB0b2tlbml6ZVBhdGhcclxuICogQHBhcmFtIGV4dHJhT3B0aW9ucyAtIG9wdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSByZWdleHBcclxuICogQHJldHVybnMgYSBQYXRoUGFyc2VyXHJcbiAqL1xyXG5mdW5jdGlvbiB0b2tlbnNUb1BhcnNlcihzZWdtZW50cywgZXh0cmFPcHRpb25zKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gYXNzaWduKHt9LCBCQVNFX1BBVEhfUEFSU0VSX09QVElPTlMsIGV4dHJhT3B0aW9ucyk7XHJcbiAgICAvLyB0aGUgYW1vdW50IG9mIHNjb3JlcyBpcyB0aGUgc2FtZSBhcyB0aGUgbGVuZ3RoIG9mIHNlZ21lbnRzIGV4Y2VwdCBmb3IgdGhlIHJvb3Qgc2VnbWVudCBcIi9cIlxyXG4gICAgY29uc3Qgc2NvcmUgPSBbXTtcclxuICAgIC8vIHRoZSByZWdleHAgYXMgYSBzdHJpbmdcclxuICAgIGxldCBwYXR0ZXJuID0gb3B0aW9ucy5zdGFydCA/ICdeJyA6ICcnO1xyXG4gICAgLy8gZXh0cmFjdGVkIGtleXNcclxuICAgIGNvbnN0IGtleXMgPSBbXTtcclxuICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzZWdtZW50cykge1xyXG4gICAgICAgIC8vIHRoZSByb290IHNlZ21lbnQgbmVlZHMgc3BlY2lhbCB0cmVhdG1lbnRcclxuICAgICAgICBjb25zdCBzZWdtZW50U2NvcmVzID0gc2VnbWVudC5sZW5ndGggPyBbXSA6IFs5MCAvKiBSb290ICovXTtcclxuICAgICAgICAvLyBhbGxvdyB0cmFpbGluZyBzbGFzaFxyXG4gICAgICAgIGlmIChvcHRpb25zLnN0cmljdCAmJiAhc2VnbWVudC5sZW5ndGgpXHJcbiAgICAgICAgICAgIHBhdHRlcm4gKz0gJy8nO1xyXG4gICAgICAgIGZvciAobGV0IHRva2VuSW5kZXggPSAwOyB0b2tlbkluZGV4IDwgc2VnbWVudC5sZW5ndGg7IHRva2VuSW5kZXgrKykge1xyXG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IHNlZ21lbnRbdG9rZW5JbmRleF07XHJcbiAgICAgICAgICAgIC8vIHJlc2V0cyB0aGUgc2NvcmUgaWYgd2UgYXJlIGluc2lkZSBhIHN1YiBzZWdtZW50IC86YS1vdGhlci06YlxyXG4gICAgICAgICAgICBsZXQgc3ViU2VnbWVudFNjb3JlID0gNDAgLyogU2VnbWVudCAqLyArXHJcbiAgICAgICAgICAgICAgICAob3B0aW9ucy5zZW5zaXRpdmUgPyAwLjI1IC8qIEJvbnVzQ2FzZVNlbnNpdGl2ZSAqLyA6IDApO1xyXG4gICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gMCAvKiBTdGF0aWMgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHByZXBlbmQgdGhlIHNsYXNoIGlmIHdlIGFyZSBzdGFydGluZyBhIG5ldyBzZWdtZW50XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRva2VuSW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArPSAnLyc7XHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IHRva2VuLnZhbHVlLnJlcGxhY2UoUkVHRVhfQ0hBUlNfUkUsICdcXFxcJCYnKTtcclxuICAgICAgICAgICAgICAgIHN1YlNlZ21lbnRTY29yZSArPSA0MCAvKiBTdGF0aWMgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gMSAvKiBQYXJhbSAqLykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwgcmVwZWF0YWJsZSwgb3B0aW9uYWwsIHJlZ2V4cCB9ID0gdG9rZW47XHJcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlID0gcmVnZXhwID8gcmVnZXhwIDogQkFTRV9QQVJBTV9QQVRURVJOO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhlIHVzZXIgcHJvdmlkZWQgYSBjdXN0b20gcmVnZXhwIC86aWQoXFxcXGQrKVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlICE9PSBCQVNFX1BBUkFNX1BBVFRFUk4pIHtcclxuICAgICAgICAgICAgICAgICAgICBzdWJTZWdtZW50U2NvcmUgKz0gMTAgLyogQm9udXNDdXN0b21SZWdFeHAgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSByZWdleHAgaXMgdmFsaWQgYmVmb3JlIHVzaW5nIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFJlZ0V4cChgKCR7cmV9KWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjdXN0b20gUmVnRXhwIGZvciBwYXJhbSBcIiR7dmFsdWV9XCIgKCR7cmV9KTogYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gd2hlbiB3ZSByZXBlYXQgd2UgbXVzdCB0YWtlIGNhcmUgb2YgdGhlIHJlcGVhdGluZyBsZWFkaW5nIHNsYXNoXHJcbiAgICAgICAgICAgICAgICBsZXQgc3ViUGF0dGVybiA9IHJlcGVhdGFibGUgPyBgKCg/OiR7cmV9KSg/Oi8oPzoke3JlfSkpKilgIDogYCgke3JlfSlgO1xyXG4gICAgICAgICAgICAgICAgLy8gcHJlcGVuZCB0aGUgc2xhc2ggaWYgd2UgYXJlIHN0YXJ0aW5nIGEgbmV3IHNlZ21lbnRcclxuICAgICAgICAgICAgICAgIGlmICghdG9rZW5JbmRleClcclxuICAgICAgICAgICAgICAgICAgICBzdWJQYXR0ZXJuID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXZvaWQgYW4gb3B0aW9uYWwgLyBpZiB0aGVyZSBhcmUgbW9yZSBzZWdtZW50cyBlLmcuIC86cD8tc3RhdGljXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIC86cD8tOnAyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsICYmIHNlZ21lbnQubGVuZ3RoIDwgMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgKD86LyR7c3ViUGF0dGVybn0pYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLycgKyBzdWJQYXR0ZXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbmFsKVxyXG4gICAgICAgICAgICAgICAgICAgIHN1YlBhdHRlcm4gKz0gJz8nO1xyXG4gICAgICAgICAgICAgICAgcGF0dGVybiArPSBzdWJQYXR0ZXJuO1xyXG4gICAgICAgICAgICAgICAgc3ViU2VnbWVudFNjb3JlICs9IDIwIC8qIER5bmFtaWMgKi87XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uYWwpXHJcbiAgICAgICAgICAgICAgICAgICAgc3ViU2VnbWVudFNjb3JlICs9IC04IC8qIEJvbnVzT3B0aW9uYWwgKi87XHJcbiAgICAgICAgICAgICAgICBpZiAocmVwZWF0YWJsZSlcclxuICAgICAgICAgICAgICAgICAgICBzdWJTZWdtZW50U2NvcmUgKz0gLTIwIC8qIEJvbnVzUmVwZWF0YWJsZSAqLztcclxuICAgICAgICAgICAgICAgIGlmIChyZSA9PT0gJy4qJylcclxuICAgICAgICAgICAgICAgICAgICBzdWJTZWdtZW50U2NvcmUgKz0gLTUwIC8qIEJvbnVzV2lsZGNhcmQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2VnbWVudFNjb3Jlcy5wdXNoKHN1YlNlZ21lbnRTY29yZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFuIGVtcHR5IGFycmF5IGxpa2UgL2hvbWUvIC0+IFtbe2hvbWV9XSwgW11dXHJcbiAgICAgICAgLy8gaWYgKCFzZWdtZW50Lmxlbmd0aCkgcGF0dGVybiArPSAnLydcclxuICAgICAgICBzY29yZS5wdXNoKHNlZ21lbnRTY29yZXMpO1xyXG4gICAgfVxyXG4gICAgLy8gb25seSBhcHBseSB0aGUgc3RyaWN0IGJvbnVzIHRvIHRoZSBsYXN0IHNjb3JlXHJcbiAgICBpZiAob3B0aW9ucy5zdHJpY3QgJiYgb3B0aW9ucy5lbmQpIHtcclxuICAgICAgICBjb25zdCBpID0gc2NvcmUubGVuZ3RoIC0gMTtcclxuICAgICAgICBzY29yZVtpXVtzY29yZVtpXS5sZW5ndGggLSAxXSArPSAwLjcwMDAwMDAwMDAwMDAwMDEgLyogQm9udXNTdHJpY3QgKi87XHJcbiAgICB9XHJcbiAgICAvLyBUT0RPOiBkZXYgb25seSB3YXJuIGRvdWJsZSB0cmFpbGluZyBzbGFzaFxyXG4gICAgaWYgKCFvcHRpb25zLnN0cmljdClcclxuICAgICAgICBwYXR0ZXJuICs9ICcvPyc7XHJcbiAgICBpZiAob3B0aW9ucy5lbmQpXHJcbiAgICAgICAgcGF0dGVybiArPSAnJCc7XHJcbiAgICAvLyBhbGxvdyBwYXRocyBsaWtlIC9keW5hbWljIHRvIG9ubHkgbWF0Y2ggZHluYW1pYyBvciBkeW5hbWljLy4uLiBidXQgbm90IGR5bmFtaWNfc29tZXRoaW5nX2Vsc2VcclxuICAgIGVsc2UgaWYgKG9wdGlvbnMuc3RyaWN0KVxyXG4gICAgICAgIHBhdHRlcm4gKz0gJyg/Oi98JCknO1xyXG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKHBhdHRlcm4sIG9wdGlvbnMuc2Vuc2l0aXZlID8gJycgOiAnaScpO1xyXG4gICAgZnVuY3Rpb24gcGFyc2UocGF0aCkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaChyZSk7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICAgICAgaWYgKCFtYXRjaClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBtYXRjaC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG1hdGNoW2ldIHx8ICcnO1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2kgLSAxXTtcclxuICAgICAgICAgICAgcGFyYW1zW2tleS5uYW1lXSA9IHZhbHVlICYmIGtleS5yZXBlYXRhYmxlID8gdmFsdWUuc3BsaXQoJy8nKSA6IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc3RyaW5naWZ5KHBhcmFtcykge1xyXG4gICAgICAgIGxldCBwYXRoID0gJyc7XHJcbiAgICAgICAgLy8gZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gYWxsb3cgdG8gYmUgZW1wdHlcclxuICAgICAgICBsZXQgYXZvaWREdXBsaWNhdGVkU2xhc2ggPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygc2VnbWVudHMpIHtcclxuICAgICAgICAgICAgaWYgKCFhdm9pZER1cGxpY2F0ZWRTbGFzaCB8fCAhcGF0aC5lbmRzV2l0aCgnLycpKVxyXG4gICAgICAgICAgICAgICAgcGF0aCArPSAnLyc7XHJcbiAgICAgICAgICAgIGF2b2lkRHVwbGljYXRlZFNsYXNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2Ygc2VnbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IDAgLyogU3RhdGljICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0aCArPSB0b2tlbi52YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IDEgLyogUGFyYW0gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHZhbHVlLCByZXBlYXRhYmxlLCBvcHRpb25hbCB9ID0gdG9rZW47XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSB2YWx1ZSBpbiBwYXJhbXMgPyBwYXJhbXNbdmFsdWVdIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFyYW0pICYmICFyZXBlYXRhYmxlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkIHBhcmFtIFwiJHt2YWx1ZX1cIiBpcyBhbiBhcnJheSBidXQgaXQgaXMgbm90IHJlcGVhdGFibGUgKCogb3IgKyBtb2RpZmllcnMpYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkocGFyYW0pID8gcGFyYW0uam9pbignLycpIDogcGFyYW07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25hbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIG9wdGlvbmFsIHBhcmFtIGxpa2UgLzphPy1zdGF0aWMgd2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB0aGUgb3B0aW9uYWwgcGFyYW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA8IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgdGhlIGxhc3Qgc2xhc2ggYXMgd2UgY291bGQgYmUgYXQgdGhlIGVuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoLnNsaWNlKDAsIC0xKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3QgYXBwZW5kIGEgc2xhc2ggb24gdGhlIG5leHQgaXRlcmF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdm9pZER1cGxpY2F0ZWRTbGFzaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIHBhcmFtIFwiJHt2YWx1ZX1cImApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBwYXRoICs9IHRleHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlLFxyXG4gICAgICAgIHNjb3JlLFxyXG4gICAgICAgIGtleXMsXHJcbiAgICAgICAgcGFyc2UsXHJcbiAgICAgICAgc3RyaW5naWZ5LFxyXG4gICAgfTtcclxufVxyXG4vKipcclxuICogQ29tcGFyZXMgYW4gYXJyYXkgb2YgbnVtYmVycyBhcyB1c2VkIGluIFBhdGhQYXJzZXIuc2NvcmUgYW5kIHJldHVybnMgYVxyXG4gKiBudW1iZXIuIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYHNvcnRgIGFuIGFycmF5XHJcbiAqXHJcbiAqIEBwYXJhbSBhIC0gZmlyc3QgYXJyYXkgb2YgbnVtYmVyc1xyXG4gKiBAcGFyYW0gYiAtIHNlY29uZCBhcnJheSBvZiBudW1iZXJzXHJcbiAqIEByZXR1cm5zIDAgaWYgYm90aCBhcmUgZXF1YWwsIDwgMCBpZiBhIHNob3VsZCBiZSBzb3J0ZWQgZmlyc3QsID4gMCBpZiBiXHJcbiAqIHNob3VsZCBiZSBzb3J0ZWQgZmlyc3RcclxuICovXHJcbmZ1bmN0aW9uIGNvbXBhcmVTY29yZUFycmF5KGEsIGIpIHtcclxuICAgIGxldCBpID0gMDtcclxuICAgIHdoaWxlIChpIDwgYS5sZW5ndGggJiYgaSA8IGIubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IGJbaV0gLSBhW2ldO1xyXG4gICAgICAgIC8vIG9ubHkga2VlcCBnb2luZyBpZiBkaWZmID09PSAwXHJcbiAgICAgICAgaWYgKGRpZmYpXHJcbiAgICAgICAgICAgIHJldHVybiBkaWZmO1xyXG4gICAgICAgIGkrKztcclxuICAgIH1cclxuICAgIC8vIGlmIHRoZSBsYXN0IHN1YnNlZ21lbnQgd2FzIFN0YXRpYywgdGhlIHNob3J0ZXIgc2VnbWVudHMgc2hvdWxkIGJlIHNvcnRlZCBmaXJzdFxyXG4gICAgLy8gb3RoZXJ3aXNlIHNvcnQgdGhlIGxvbmdlc3Qgc2VnbWVudCBmaXJzdFxyXG4gICAgaWYgKGEubGVuZ3RoIDwgYi5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gYS5sZW5ndGggPT09IDEgJiYgYVswXSA9PT0gNDAgLyogU3RhdGljICovICsgNDAgLyogU2VnbWVudCAqL1xyXG4gICAgICAgICAgICA/IC0xXHJcbiAgICAgICAgICAgIDogMTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGEubGVuZ3RoID4gYi5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gYi5sZW5ndGggPT09IDEgJiYgYlswXSA9PT0gNDAgLyogU3RhdGljICovICsgNDAgLyogU2VnbWVudCAqL1xyXG4gICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgOiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG59XHJcbi8qKlxyXG4gKiBDb21wYXJlIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBgc29ydGAgdG8gc29ydCBhbiBhcnJheSBvZiBQYXRoUGFyc2VyXHJcbiAqXHJcbiAqIEBwYXJhbSBhIC0gZmlyc3QgUGF0aFBhcnNlclxyXG4gKiBAcGFyYW0gYiAtIHNlY29uZCBQYXRoUGFyc2VyXHJcbiAqIEByZXR1cm5zIDAgaWYgYm90aCBhcmUgZXF1YWwsIDwgMCBpZiBhIHNob3VsZCBiZSBzb3J0ZWQgZmlyc3QsID4gMCBpZiBiXHJcbiAqL1xyXG5mdW5jdGlvbiBjb21wYXJlUGF0aFBhcnNlclNjb3JlKGEsIGIpIHtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGNvbnN0IGFTY29yZSA9IGEuc2NvcmU7XHJcbiAgICBjb25zdCBiU2NvcmUgPSBiLnNjb3JlO1xyXG4gICAgd2hpbGUgKGkgPCBhU2NvcmUubGVuZ3RoICYmIGkgPCBiU2NvcmUubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgY29tcCA9IGNvbXBhcmVTY29yZUFycmF5KGFTY29yZVtpXSwgYlNjb3JlW2ldKTtcclxuICAgICAgICAvLyBkbyBub3QgcmV0dXJuIGlmIGJvdGggYXJlIGVxdWFsXHJcbiAgICAgICAgaWYgKGNvbXApXHJcbiAgICAgICAgICAgIHJldHVybiBjb21wO1xyXG4gICAgICAgIGkrKztcclxuICAgIH1cclxuICAgIC8vIGlmIGEgYW5kIGIgc2hhcmUgdGhlIHNhbWUgc2NvcmUgZW50cmllcyBidXQgYiBoYXMgbW9yZSwgc29ydCBiIGZpcnN0XHJcbiAgICByZXR1cm4gYlNjb3JlLmxlbmd0aCAtIGFTY29yZS5sZW5ndGg7XHJcbiAgICAvLyB0aGlzIGlzIHRoZSB0ZXJuYXJ5IHZlcnNpb25cclxuICAgIC8vIHJldHVybiBhU2NvcmUubGVuZ3RoIDwgYlNjb3JlLmxlbmd0aFxyXG4gICAgLy8gICA/IDFcclxuICAgIC8vICAgOiBhU2NvcmUubGVuZ3RoID4gYlNjb3JlLmxlbmd0aFxyXG4gICAgLy8gICA/IC0xXHJcbiAgICAvLyAgIDogMFxyXG59XG5cbmNvbnN0IFJPT1RfVE9LRU4gPSB7XHJcbiAgICB0eXBlOiAwIC8qIFN0YXRpYyAqLyxcclxuICAgIHZhbHVlOiAnJyxcclxufTtcclxuY29uc3QgVkFMSURfUEFSQU1fUkUgPSAvW2EtekEtWjAtOV9dLztcclxuLy8gQWZ0ZXIgc29tZSBwcm9maWxpbmcsIHRoZSBjYWNoZSBzZWVtcyB0byBiZSB1bm5lY2Vzc2FyeSBiZWNhdXNlIHRva2VuaXplUGF0aFxyXG4vLyAodGhlIHNsb3dlc3QgcGFydCBvZiBhZGRpbmcgYSByb3V0ZSkgaXMgdmVyeSBmYXN0XHJcbi8vIGNvbnN0IHRva2VuQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgVG9rZW5bXVtdPigpXHJcbmZ1bmN0aW9uIHRva2VuaXplUGF0aChwYXRoKSB7XHJcbiAgICBpZiAoIXBhdGgpXHJcbiAgICAgICAgcmV0dXJuIFtbXV07XHJcbiAgICBpZiAocGF0aCA9PT0gJy8nKVxyXG4gICAgICAgIHJldHVybiBbW1JPT1RfVE9LRU5dXTtcclxuICAgIGlmICghcGF0aC5zdGFydHNXaXRoKCcvJykpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgID8gYFJvdXRlIHBhdGhzIHNob3VsZCBzdGFydCB3aXRoIGEgXCIvXCI6IFwiJHtwYXRofVwiIHNob3VsZCBiZSBcIi8ke3BhdGh9XCIuYFxyXG4gICAgICAgICAgICA6IGBJbnZhbGlkIHBhdGggXCIke3BhdGh9XCJgKTtcclxuICAgIH1cclxuICAgIC8vIGlmICh0b2tlbkNhY2hlLmhhcyhwYXRoKSkgcmV0dXJuIHRva2VuQ2FjaGUuZ2V0KHBhdGgpIVxyXG4gICAgZnVuY3Rpb24gY3Jhc2gobWVzc2FnZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRVJSICgke3N0YXRlfSkvXCIke2J1ZmZlcn1cIjogJHttZXNzYWdlfWApO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0YXRlID0gMCAvKiBTdGF0aWMgKi87XHJcbiAgICBsZXQgcHJldmlvdXNTdGF0ZSA9IHN0YXRlO1xyXG4gICAgY29uc3QgdG9rZW5zID0gW107XHJcbiAgICAvLyB0aGUgc2VnbWVudCB3aWxsIGFsd2F5cyBiZSB2YWxpZCBiZWNhdXNlIHdlIGdldCBpbnRvIHRoZSBpbml0aWFsIHN0YXRlXHJcbiAgICAvLyB3aXRoIHRoZSBsZWFkaW5nIC9cclxuICAgIGxldCBzZWdtZW50O1xyXG4gICAgZnVuY3Rpb24gZmluYWxpemVTZWdtZW50KCkge1xyXG4gICAgICAgIGlmIChzZWdtZW50KVxyXG4gICAgICAgICAgICB0b2tlbnMucHVzaChzZWdtZW50KTtcclxuICAgICAgICBzZWdtZW50ID0gW107XHJcbiAgICB9XHJcbiAgICAvLyBpbmRleCBvbiB0aGUgcGF0aFxyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgLy8gY2hhciBhdCBpbmRleFxyXG4gICAgbGV0IGNoYXI7XHJcbiAgICAvLyBidWZmZXIgb2YgdGhlIHZhbHVlIHJlYWRcclxuICAgIGxldCBidWZmZXIgPSAnJztcclxuICAgIC8vIGN1c3RvbSByZWdleHAgZm9yIGEgcGFyYW1cclxuICAgIGxldCBjdXN0b21SZSA9ICcnO1xyXG4gICAgZnVuY3Rpb24gY29uc3VtZUJ1ZmZlcigpIHtcclxuICAgICAgICBpZiAoIWJ1ZmZlcilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmIChzdGF0ZSA9PT0gMCAvKiBTdGF0aWMgKi8pIHtcclxuICAgICAgICAgICAgc2VnbWVudC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDAgLyogU3RhdGljICovLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGJ1ZmZlcixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHN0YXRlID09PSAxIC8qIFBhcmFtICovIHx8XHJcbiAgICAgICAgICAgIHN0YXRlID09PSAyIC8qIFBhcmFtUmVnRXhwICovIHx8XHJcbiAgICAgICAgICAgIHN0YXRlID09PSAzIC8qIFBhcmFtUmVnRXhwRW5kICovKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA+IDEgJiYgKGNoYXIgPT09ICcqJyB8fCBjaGFyID09PSAnKycpKVxyXG4gICAgICAgICAgICAgICAgY3Jhc2goYEEgcmVwZWF0YWJsZSBwYXJhbSAoJHtidWZmZXJ9KSBtdXN0IGJlIGFsb25lIGluIGl0cyBzZWdtZW50LiBlZzogJy86aWRzKy5gKTtcclxuICAgICAgICAgICAgc2VnbWVudC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDEgLyogUGFyYW0gKi8sXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogYnVmZmVyLFxyXG4gICAgICAgICAgICAgICAgcmVnZXhwOiBjdXN0b21SZSxcclxuICAgICAgICAgICAgICAgIHJlcGVhdGFibGU6IGNoYXIgPT09ICcqJyB8fCBjaGFyID09PSAnKycsXHJcbiAgICAgICAgICAgICAgICBvcHRpb25hbDogY2hhciA9PT0gJyonIHx8IGNoYXIgPT09ICc/JyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjcmFzaCgnSW52YWxpZCBzdGF0ZSB0byBjb25zdW1lIGJ1ZmZlcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBidWZmZXIgPSAnJztcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGFkZENoYXJUb0J1ZmZlcigpIHtcclxuICAgICAgICBidWZmZXIgKz0gY2hhcjtcclxuICAgIH1cclxuICAgIHdoaWxlIChpIDwgcGF0aC5sZW5ndGgpIHtcclxuICAgICAgICBjaGFyID0gcGF0aFtpKytdO1xyXG4gICAgICAgIGlmIChjaGFyID09PSAnXFxcXCcgJiYgc3RhdGUgIT09IDIgLyogUGFyYW1SZWdFeHAgKi8pIHtcclxuICAgICAgICAgICAgcHJldmlvdXNTdGF0ZSA9IHN0YXRlO1xyXG4gICAgICAgICAgICBzdGF0ZSA9IDQgLyogRXNjYXBlTmV4dCAqLztcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICAgICAgY2FzZSAwIC8qIFN0YXRpYyAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnLycpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVCdWZmZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZmluYWxpemVTZWdtZW50KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSAnOicpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdW1lQnVmZmVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAxIC8qIFBhcmFtICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2hhclRvQnVmZmVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA0IC8qIEVzY2FwZU5leHQgKi86XHJcbiAgICAgICAgICAgICAgICBhZGRDaGFyVG9CdWZmZXIoKTtcclxuICAgICAgICAgICAgICAgIHN0YXRlID0gcHJldmlvdXNTdGF0ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDEgLyogUGFyYW0gKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJygnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyIC8qIFBhcmFtUmVnRXhwICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoVkFMSURfUEFSQU1fUkUudGVzdChjaGFyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFkZENoYXJUb0J1ZmZlcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3VtZUJ1ZmZlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMCAvKiBTdGF0aWMgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZ28gYmFjayBvbmUgY2hhcmFjdGVyIGlmIHdlIHdlcmUgbm90IG1vZGlmeWluZ1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGFyICE9PSAnKicgJiYgY2hhciAhPT0gJz8nICYmIGNoYXIgIT09ICcrJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMiAvKiBQYXJhbVJlZ0V4cCAqLzpcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IGlzIGl0IHdvcnRoIGhhbmRsaW5nIG5lc3RlZCByZWdleHA/IGxpa2UgOnAoPzpwcmVmaXhfKFteL10rKV9zdWZmaXgpXHJcbiAgICAgICAgICAgICAgICAvLyBpdCBhbHJlYWR5IHdvcmtzIGJ5IGVzY2FwaW5nIHRoZSBjbG9zaW5nIClcclxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcGF0aHMuZXNtLmRldi8/cD1BQU1lSmJpQXdRRWNES2JBb0FBa1A2MFBHMlI2UUF2Z05hQTZBRkFDTTJBQnVRQkIjXHJcbiAgICAgICAgICAgICAgICAvLyBpcyB0aGlzIHJlYWxseSBzb21ldGhpbmcgcGVvcGxlIG5lZWQgc2luY2UgeW91IGNhbiBhbHNvIHdyaXRlXHJcbiAgICAgICAgICAgICAgICAvLyAvcHJlZml4XzpwKClfc3VmZml4XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJyknKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSBlc2NhcGVkIClcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VzdG9tUmVbY3VzdG9tUmUubGVuZ3RoIC0gMV0gPT0gJ1xcXFwnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21SZSA9IGN1c3RvbVJlLnNsaWNlKDAsIC0xKSArIGNoYXI7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDMgLyogUGFyYW1SZWdFeHBFbmQgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21SZSArPSBjaGFyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMyAvKiBQYXJhbVJlZ0V4cEVuZCAqLzpcclxuICAgICAgICAgICAgICAgIC8vIHNhbWUgYXMgZmluYWxpemluZyBhIHBhcmFtXHJcbiAgICAgICAgICAgICAgICBjb25zdW1lQnVmZmVyKCk7XHJcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IDAgLyogU3RhdGljICovO1xyXG4gICAgICAgICAgICAgICAgLy8gZ28gYmFjayBvbmUgY2hhcmFjdGVyIGlmIHdlIHdlcmUgbm90IG1vZGlmeWluZ1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgIT09ICcqJyAmJiBjaGFyICE9PSAnPycgJiYgY2hhciAhPT0gJysnKVxyXG4gICAgICAgICAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgICAgIGN1c3RvbVJlID0gJyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNyYXNoKCdVbmtub3duIHN0YXRlJyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdGUgPT09IDIgLyogUGFyYW1SZWdFeHAgKi8pXHJcbiAgICAgICAgY3Jhc2goYFVuZmluaXNoZWQgY3VzdG9tIFJlZ0V4cCBmb3IgcGFyYW0gXCIke2J1ZmZlcn1cImApO1xyXG4gICAgY29uc3VtZUJ1ZmZlcigpO1xyXG4gICAgZmluYWxpemVTZWdtZW50KCk7XHJcbiAgICAvLyB0b2tlbkNhY2hlLnNldChwYXRoLCB0b2tlbnMpXHJcbiAgICByZXR1cm4gdG9rZW5zO1xyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlUmVjb3JkTWF0Y2hlcihyZWNvcmQsIHBhcmVudCwgb3B0aW9ucykge1xyXG4gICAgY29uc3QgcGFyc2VyID0gdG9rZW5zVG9QYXJzZXIodG9rZW5pemVQYXRoKHJlY29yZC5wYXRoKSwgb3B0aW9ucyk7XHJcbiAgICAvLyB3YXJuIGFnYWluc3QgcGFyYW1zIHdpdGggdGhlIHNhbWUgbmFtZVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nS2V5cyA9IG5ldyBTZXQoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBwYXJzZXIua2V5cykge1xyXG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdLZXlzLmhhcyhrZXkubmFtZSkpXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBGb3VuZCBkdXBsaWNhdGVkIHBhcmFtcyB3aXRoIG5hbWUgXCIke2tleS5uYW1lfVwiIGZvciBwYXRoIFwiJHtyZWNvcmQucGF0aH1cIi4gT25seSB0aGUgbGFzdCBvbmUgd2lsbCBiZSBhdmFpbGFibGUgb24gXCIkcm91dGUucGFyYW1zXCIuYCk7XHJcbiAgICAgICAgICAgIGV4aXN0aW5nS2V5cy5hZGQoa2V5Lm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IG1hdGNoZXIgPSBhc3NpZ24ocGFyc2VyLCB7XHJcbiAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgIHBhcmVudCxcclxuICAgICAgICAvLyB0aGVzZSBuZWVkcyB0byBiZSBwb3B1bGF0ZWQgYnkgdGhlIHBhcmVudFxyXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcclxuICAgICAgICBhbGlhczogW10sXHJcbiAgICB9KTtcclxuICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAvLyBib3RoIGFyZSBhbGlhc2VzIG9yIGJvdGggYXJlIG5vdCBhbGlhc2VzXHJcbiAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBtaXggdGhlbSBiZWNhdXNlIHRoZSBvcmRlciBpcyB1c2VkIHdoZW5cclxuICAgICAgICAvLyBwYXNzaW5nIG9yaWdpbmFsUmVjb3JkIGluIE1hdGNoZXIuYWRkUm91dGVcclxuICAgICAgICBpZiAoIW1hdGNoZXIucmVjb3JkLmFsaWFzT2YgPT09ICFwYXJlbnQucmVjb3JkLmFsaWFzT2YpXHJcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG1hdGNoZXIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hdGNoZXI7XHJcbn1cblxuLyoqXHJcbiAqIENyZWF0ZXMgYSBSb3V0ZXIgTWF0Y2hlci5cclxuICpcclxuICogQGludGVybmFsXHJcbiAqIEBwYXJhbSByb3V0ZXMgLSBhcnJheSBvZiBpbml0aWFsIHJvdXRlc1xyXG4gKiBAcGFyYW0gZ2xvYmFsT3B0aW9ucyAtIGdsb2JhbCByb3V0ZSBvcHRpb25zXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXJNYXRjaGVyKHJvdXRlcywgZ2xvYmFsT3B0aW9ucykge1xyXG4gICAgLy8gbm9ybWFsaXplZCBvcmRlcmVkIGFycmF5IG9mIG1hdGNoZXJzXHJcbiAgICBjb25zdCBtYXRjaGVycyA9IFtdO1xyXG4gICAgY29uc3QgbWF0Y2hlck1hcCA9IG5ldyBNYXAoKTtcclxuICAgIGdsb2JhbE9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoeyBzdHJpY3Q6IGZhbHNlLCBlbmQ6IHRydWUsIHNlbnNpdGl2ZTogZmFsc2UgfSwgZ2xvYmFsT3B0aW9ucyk7XHJcbiAgICBmdW5jdGlvbiBnZXRSZWNvcmRNYXRjaGVyKG5hbWUpIHtcclxuICAgICAgICByZXR1cm4gbWF0Y2hlck1hcC5nZXQobmFtZSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBhZGRSb3V0ZShyZWNvcmQsIHBhcmVudCwgb3JpZ2luYWxSZWNvcmQpIHtcclxuICAgICAgICAvLyB1c2VkIGxhdGVyIG9uIHRvIHJlbW92ZSBieSBuYW1lXHJcbiAgICAgICAgY29uc3QgaXNSb290QWRkID0gIW9yaWdpbmFsUmVjb3JkO1xyXG4gICAgICAgIGNvbnN0IG1haW5Ob3JtYWxpemVkUmVjb3JkID0gbm9ybWFsaXplUm91dGVSZWNvcmQocmVjb3JkKTtcclxuICAgICAgICAvLyB3ZSBtaWdodCBiZSB0aGUgY2hpbGQgb2YgYW4gYWxpYXNcclxuICAgICAgICBtYWluTm9ybWFsaXplZFJlY29yZC5hbGlhc09mID0gb3JpZ2luYWxSZWNvcmQgJiYgb3JpZ2luYWxSZWNvcmQucmVjb3JkO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoZ2xvYmFsT3B0aW9ucywgcmVjb3JkKTtcclxuICAgICAgICAvLyBnZW5lcmF0ZSBhbiBhcnJheSBvZiByZWNvcmRzIHRvIGNvcnJlY3RseSBoYW5kbGUgYWxpYXNlc1xyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZWNvcmRzID0gW1xyXG4gICAgICAgICAgICBtYWluTm9ybWFsaXplZFJlY29yZCxcclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmICgnYWxpYXMnIGluIHJlY29yZCkge1xyXG4gICAgICAgICAgICBjb25zdCBhbGlhc2VzID0gdHlwZW9mIHJlY29yZC5hbGlhcyA9PT0gJ3N0cmluZycgPyBbcmVjb3JkLmFsaWFzXSA6IHJlY29yZC5hbGlhcztcclxuICAgICAgICAgICAgZm9yIChjb25zdCBhbGlhcyBvZiBhbGlhc2VzKSB7XHJcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkUmVjb3Jkcy5wdXNoKGFzc2lnbih7fSwgbWFpbk5vcm1hbGl6ZWRSZWNvcmQsIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGFsbG93cyB1cyB0byBob2xkIGEgY29weSBvZiB0aGUgYGNvbXBvbmVudHNgIG9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgYXN5bmMgY29tcG9uZW50cyBjYWNoZSBpcyBob2xkIG9uIHRoZSBvcmlnaW5hbCByZWNvcmRcclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzOiBvcmlnaW5hbFJlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9yaWdpbmFsUmVjb3JkLnJlY29yZC5jb21wb25lbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbWFpbk5vcm1hbGl6ZWRSZWNvcmQuY29tcG9uZW50cyxcclxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBhbGlhcyxcclxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBtaWdodCBiZSB0aGUgY2hpbGQgb2YgYW4gYWxpYXNcclxuICAgICAgICAgICAgICAgICAgICBhbGlhc09mOiBvcmlnaW5hbFJlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9yaWdpbmFsUmVjb3JkLnJlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG1haW5Ob3JtYWxpemVkUmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBhbGlhc2VzIGFyZSBhbHdheXMgb2YgdGhlIHNhbWUga2luZCBhcyB0aGUgb3JpZ2luYWwgc2luY2UgdGhleVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFyZSBkZWZpbmVkIG9uIHRoZSBzYW1lIHJlY29yZFxyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBtYXRjaGVyO1xyXG4gICAgICAgIGxldCBvcmlnaW5hbE1hdGNoZXI7XHJcbiAgICAgICAgZm9yIChjb25zdCBub3JtYWxpemVkUmVjb3JkIG9mIG5vcm1hbGl6ZWRSZWNvcmRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcGF0aCB9ID0gbm9ybWFsaXplZFJlY29yZDtcclxuICAgICAgICAgICAgLy8gQnVpbGQgdXAgdGhlIHBhdGggZm9yIG5lc3RlZCByb3V0ZXMgaWYgdGhlIGNoaWxkIGlzbid0IGFuIGFic29sdXRlXHJcbiAgICAgICAgICAgIC8vIHJvdXRlLiBPbmx5IGFkZCB0aGUgLyBkZWxpbWl0ZXIgaWYgdGhlIGNoaWxkIHBhdGggaXNuJ3QgZW1wdHkgYW5kIGlmIHRoZVxyXG4gICAgICAgICAgICAvLyBwYXJlbnQgcGF0aCBkb2Vzbid0IGhhdmUgYSB0cmFpbGluZyBzbGFzaFxyXG4gICAgICAgICAgICBpZiAocGFyZW50ICYmIHBhdGhbMF0gIT09ICcvJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50UGF0aCA9IHBhcmVudC5yZWNvcmQucGF0aDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3RpbmdTbGFzaCA9IHBhcmVudFBhdGhbcGFyZW50UGF0aC5sZW5ndGggLSAxXSA9PT0gJy8nID8gJycgOiAnLyc7XHJcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkUmVjb3JkLnBhdGggPVxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5yZWNvcmQucGF0aCArIChwYXRoICYmIGNvbm5lY3RpbmdTbGFzaCArIHBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbm9ybWFsaXplZFJlY29yZC5wYXRoID09PSAnKicpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2F0Y2ggYWxsIHJvdXRlcyAoXCIqXCIpIG11c3Qgbm93IGJlIGRlZmluZWQgdXNpbmcgYSBwYXJhbSB3aXRoIGEgY3VzdG9tIHJlZ2V4cC5cXG4nICtcclxuICAgICAgICAgICAgICAgICAgICAnU2VlIG1vcmUgYXQgaHR0cHM6Ly9uZXh0LnJvdXRlci52dWVqcy5vcmcvZ3VpZGUvbWlncmF0aW9uLyNyZW1vdmVkLXN0YXItb3ItY2F0Y2gtYWxsLXJvdXRlcy4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjcmVhdGUgdGhlIG9iamVjdCBiZWZvcmUgaGFuZCBzbyBpdCBjYW4gYmUgcGFzc2VkIHRvIGNoaWxkcmVuXHJcbiAgICAgICAgICAgIG1hdGNoZXIgPSBjcmVhdGVSb3V0ZVJlY29yZE1hdGNoZXIobm9ybWFsaXplZFJlY29yZCwgcGFyZW50LCBvcHRpb25zKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBwYXJlbnQgJiYgcGF0aFswXSA9PT0gJy8nKVxyXG4gICAgICAgICAgICAgICAgY2hlY2tNaXNzaW5nUGFyYW1zSW5BYnNvbHV0ZVBhdGgobWF0Y2hlciwgcGFyZW50KTtcclxuICAgICAgICAgICAgLy8gaWYgd2UgYXJlIGFuIGFsaWFzIHdlIG11c3QgdGVsbCB0aGUgb3JpZ2luYWwgcmVjb3JkIHRoYXQgd2UgZXhpc3RcclxuICAgICAgICAgICAgLy8gc28gd2UgY2FuIGJlIHJlbW92ZWRcclxuICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVjb3JkKSB7XHJcbiAgICAgICAgICAgICAgICBvcmlnaW5hbFJlY29yZC5hbGlhcy5wdXNoKG1hdGNoZXIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrU2FtZVBhcmFtcyhvcmlnaW5hbFJlY29yZCwgbWF0Y2hlcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHRoZSBmaXJzdCByZWNvcmQgaXMgdGhlIG9yaWdpbmFsIGFuZCBvdGhlcnMgYXJlIGFsaWFzZXNcclxuICAgICAgICAgICAgICAgIG9yaWdpbmFsTWF0Y2hlciA9IG9yaWdpbmFsTWF0Y2hlciB8fCBtYXRjaGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbmFsTWF0Y2hlciAhPT0gbWF0Y2hlcilcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbE1hdGNoZXIuYWxpYXMucHVzaChtYXRjaGVyKTtcclxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgcm91dGUgaWYgbmFtZWQgYW5kIG9ubHkgZm9yIHRoZSB0b3AgcmVjb3JkIChhdm9pZCBpbiBuZXN0ZWQgY2FsbHMpXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIHdvcmtzIGJlY2F1c2UgdGhlIG9yaWdpbmFsIHJlY29yZCBpcyB0aGUgZmlyc3Qgb25lXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNSb290QWRkICYmIHJlY29yZC5uYW1lICYmICFpc0FsaWFzUmVjb3JkKG1hdGNoZXIpKVxyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZVJvdXRlKHJlY29yZC5uYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBtYWluTm9ybWFsaXplZFJlY29yZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBtYWluTm9ybWFsaXplZFJlY29yZC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBhZGRSb3V0ZShjaGlsZHJlbltpXSwgbWF0Y2hlciwgb3JpZ2luYWxSZWNvcmQgJiYgb3JpZ2luYWxSZWNvcmQuY2hpbGRyZW5baV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIHdhcyBubyBvcmlnaW5hbCByZWNvcmQsIHRoZW4gdGhlIGZpcnN0IG9uZSB3YXMgbm90IGFuIGFsaWFzIGFuZCBhbGxcclxuICAgICAgICAgICAgLy8gb3RoZXIgYWxpYXMgKGlmIGFueSkgbmVlZCB0byByZWZlcmVuY2UgdGhpcyByZWNvcmQgd2hlbiBhZGRpbmcgY2hpbGRyZW5cclxuICAgICAgICAgICAgb3JpZ2luYWxSZWNvcmQgPSBvcmlnaW5hbFJlY29yZCB8fCBtYXRjaGVyO1xyXG4gICAgICAgICAgICAvLyBUT0RPOiBhZGQgbm9ybWFsaXplZCByZWNvcmRzIGZvciBtb3JlIGZsZXhpYmlsaXR5XHJcbiAgICAgICAgICAgIC8vIGlmIChwYXJlbnQgJiYgaXNBbGlhc1JlY29yZChvcmlnaW5hbFJlY29yZCkpIHtcclxuICAgICAgICAgICAgLy8gICBwYXJlbnQuY2hpbGRyZW4ucHVzaChvcmlnaW5hbFJlY29yZClcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBpbnNlcnRNYXRjaGVyKG1hdGNoZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb3JpZ2luYWxNYXRjaGVyXHJcbiAgICAgICAgICAgID8gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gc2luY2Ugb3RoZXIgbWF0Y2hlcnMgYXJlIGFsaWFzZXMsIHRoZXkgc2hvdWxkIGJlIHJlbW92ZWQgYnkgdGhlIG9yaWdpbmFsIG1hdGNoZXJcclxuICAgICAgICAgICAgICAgIHJlbW92ZVJvdXRlKG9yaWdpbmFsTWF0Y2hlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgOiBub29wO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVtb3ZlUm91dGUobWF0Y2hlclJlZikge1xyXG4gICAgICAgIGlmIChpc1JvdXRlTmFtZShtYXRjaGVyUmVmKSkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVyID0gbWF0Y2hlck1hcC5nZXQobWF0Y2hlclJlZik7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGVyKSB7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVyTWFwLmRlbGV0ZShtYXRjaGVyUmVmKTtcclxuICAgICAgICAgICAgICAgIG1hdGNoZXJzLnNwbGljZShtYXRjaGVycy5pbmRleE9mKG1hdGNoZXIpLCAxKTtcclxuICAgICAgICAgICAgICAgIG1hdGNoZXIuY2hpbGRyZW4uZm9yRWFjaChyZW1vdmVSb3V0ZSk7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVyLmFsaWFzLmZvckVhY2gocmVtb3ZlUm91dGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IG1hdGNoZXJzLmluZGV4T2YobWF0Y2hlclJlZik7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZXJSZWYucmVjb3JkLm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlck1hcC5kZWxldGUobWF0Y2hlclJlZi5yZWNvcmQubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVyUmVmLmNoaWxkcmVuLmZvckVhY2gocmVtb3ZlUm91dGUpO1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hlclJlZi5hbGlhcy5mb3JFYWNoKHJlbW92ZVJvdXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdldFJvdXRlcygpIHtcclxuICAgICAgICByZXR1cm4gbWF0Y2hlcnM7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBpbnNlcnRNYXRjaGVyKG1hdGNoZXIpIHtcclxuICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCBtYXRjaGVycy5sZW5ndGggJiZcclxuICAgICAgICAgICAgY29tcGFyZVBhdGhQYXJzZXJTY29yZShtYXRjaGVyLCBtYXRjaGVyc1tpXSkgPj0gMCAmJlxyXG4gICAgICAgICAgICAvLyBBZGRpbmcgY2hpbGRyZW4gd2l0aCBlbXB0eSBwYXRoIHNob3VsZCBzdGlsbCBhcHBlYXIgYmVmb3JlIHRoZSBwYXJlbnRcclxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3JvdXRlci9pc3N1ZXMvMTEyNFxyXG4gICAgICAgICAgICAobWF0Y2hlci5yZWNvcmQucGF0aCAhPT0gbWF0Y2hlcnNbaV0ucmVjb3JkLnBhdGggfHxcclxuICAgICAgICAgICAgICAgICFpc1JlY29yZENoaWxkT2YobWF0Y2hlciwgbWF0Y2hlcnNbaV0pKSlcclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgIG1hdGNoZXJzLnNwbGljZShpLCAwLCBtYXRjaGVyKTtcclxuICAgICAgICAvLyBvbmx5IGFkZCB0aGUgb3JpZ2luYWwgcmVjb3JkIHRvIHRoZSBuYW1lIG1hcFxyXG4gICAgICAgIGlmIChtYXRjaGVyLnJlY29yZC5uYW1lICYmICFpc0FsaWFzUmVjb3JkKG1hdGNoZXIpKVxyXG4gICAgICAgICAgICBtYXRjaGVyTWFwLnNldChtYXRjaGVyLnJlY29yZC5uYW1lLCBtYXRjaGVyKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlc29sdmUobG9jYXRpb24sIGN1cnJlbnRMb2NhdGlvbikge1xyXG4gICAgICAgIGxldCBtYXRjaGVyO1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSB7fTtcclxuICAgICAgICBsZXQgcGF0aDtcclxuICAgICAgICBsZXQgbmFtZTtcclxuICAgICAgICBpZiAoJ25hbWUnIGluIGxvY2F0aW9uICYmIGxvY2F0aW9uLm5hbWUpIHtcclxuICAgICAgICAgICAgbWF0Y2hlciA9IG1hdGNoZXJNYXAuZ2V0KGxvY2F0aW9uLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoIW1hdGNoZXIpXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVSb3V0ZXJFcnJvcigxIC8qIE1BVENIRVJfTk9UX0ZPVU5EICovLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbmFtZSA9IG1hdGNoZXIucmVjb3JkLm5hbWU7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IGFzc2lnbihcclxuICAgICAgICAgICAgLy8gcGFyYW1zRnJvbUxvY2F0aW9uIGlzIGEgbmV3IG9iamVjdFxyXG4gICAgICAgICAgICBwYXJhbXNGcm9tTG9jYXRpb24oY3VycmVudExvY2F0aW9uLnBhcmFtcywgXHJcbiAgICAgICAgICAgIC8vIG9ubHkga2VlcCBwYXJhbXMgdGhhdCBleGlzdCBpbiB0aGUgcmVzb2x2ZWQgbG9jYXRpb25cclxuICAgICAgICAgICAgLy8gVE9ETzogb25seSBrZWVwIG9wdGlvbmFsIHBhcmFtcyBjb21pbmcgZnJvbSBhIHBhcmVudCByZWNvcmRcclxuICAgICAgICAgICAgbWF0Y2hlci5rZXlzLmZpbHRlcihrID0+ICFrLm9wdGlvbmFsKS5tYXAoayA9PiBrLm5hbWUpKSwgbG9jYXRpb24ucGFyYW1zKTtcclxuICAgICAgICAgICAgLy8gdGhyb3dzIGlmIGNhbm5vdCBiZSBzdHJpbmdpZmllZFxyXG4gICAgICAgICAgICBwYXRoID0gbWF0Y2hlci5zdHJpbmdpZnkocGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoJ3BhdGgnIGluIGxvY2F0aW9uKSB7XHJcbiAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gcmVzb2x2ZSB0aGUgcGF0aCB3aXRoIHRoZSBtYXRjaGVyIGFzIGl0IHdhcyBwcm92aWRlZFxyXG4gICAgICAgICAgICAvLyB0aGlzIGFsc28gYWxsb3dzIHRoZSB1c2VyIHRvIGNvbnRyb2wgdGhlIGVuY29kaW5nXHJcbiAgICAgICAgICAgIHBhdGggPSBsb2NhdGlvbi5wYXRoO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgVGhlIE1hdGNoZXIgY2Fubm90IHJlc29sdmUgcmVsYXRpdmUgcGF0aHMgYnV0IHJlY2VpdmVkIFwiJHtwYXRofVwiLiBVbmxlc3MgeW91IGRpcmVjdGx5IGNhbGxlZCBcXGBtYXRjaGVyLnJlc29sdmUoXCIke3BhdGh9XCIpXFxgLCB0aGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHZ1ZS1yb3V0ZXIuIFBsZWFzZSBvcGVuIGFuIGlzc3VlIGF0IGh0dHBzOi8vbmV3LWlzc3VlLnZ1ZWpzLm9yZy8/cmVwbz12dWVqcy9yb3V0ZXIuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbWF0Y2hlciA9IG1hdGNoZXJzLmZpbmQobSA9PiBtLnJlLnRlc3QocGF0aCkpO1xyXG4gICAgICAgICAgICAvLyBtYXRjaGVyIHNob3VsZCBoYXZlIGEgdmFsdWUgYWZ0ZXIgdGhlIGxvb3BcclxuICAgICAgICAgICAgaWYgKG1hdGNoZXIpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IGRldiB3YXJuaW5nIG9mIHVudXNlZCBwYXJhbXMgaWYgcHJvdmlkZWRcclxuICAgICAgICAgICAgICAgIC8vIHdlIGtub3cgdGhlIG1hdGNoZXIgd29ya3MgYmVjYXVzZSB3ZSB0ZXN0ZWQgdGhlIHJlZ2V4cFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zID0gbWF0Y2hlci5wYXJzZShwYXRoKTtcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBtYXRjaGVyLnJlY29yZC5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGxvY2F0aW9uIGlzIGEgcmVsYXRpdmUgcGF0aFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbWF0Y2ggYnkgbmFtZSBvciBwYXRoIG9mIGN1cnJlbnQgcm91dGVcclxuICAgICAgICAgICAgbWF0Y2hlciA9IGN1cnJlbnRMb2NhdGlvbi5uYW1lXHJcbiAgICAgICAgICAgICAgICA/IG1hdGNoZXJNYXAuZ2V0KGN1cnJlbnRMb2NhdGlvbi5uYW1lKVxyXG4gICAgICAgICAgICAgICAgOiBtYXRjaGVycy5maW5kKG0gPT4gbS5yZS50ZXN0KGN1cnJlbnRMb2NhdGlvbi5wYXRoKSk7XHJcbiAgICAgICAgICAgIGlmICghbWF0Y2hlcilcclxuICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVJvdXRlckVycm9yKDEgLyogTUFUQ0hFUl9OT1RfRk9VTkQgKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50TG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbmFtZSA9IG1hdGNoZXIucmVjb3JkLm5hbWU7XHJcbiAgICAgICAgICAgIC8vIHNpbmNlIHdlIGFyZSBuYXZpZ2F0aW5nIHRvIHRoZSBzYW1lIGxvY2F0aW9uLCB3ZSBkb24ndCBuZWVkIHRvIHBpY2sgdGhlXHJcbiAgICAgICAgICAgIC8vIHBhcmFtcyBsaWtlIHdoZW4gYG5hbWVgIGlzIHByb3ZpZGVkXHJcbiAgICAgICAgICAgIHBhcmFtcyA9IGFzc2lnbih7fSwgY3VycmVudExvY2F0aW9uLnBhcmFtcywgbG9jYXRpb24ucGFyYW1zKTtcclxuICAgICAgICAgICAgcGF0aCA9IG1hdGNoZXIuc3RyaW5naWZ5KHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1hdGNoZWQgPSBbXTtcclxuICAgICAgICBsZXQgcGFyZW50TWF0Y2hlciA9IG1hdGNoZXI7XHJcbiAgICAgICAgd2hpbGUgKHBhcmVudE1hdGNoZXIpIHtcclxuICAgICAgICAgICAgLy8gcmV2ZXJzZWQgb3JkZXIgc28gcGFyZW50cyBhcmUgYXQgdGhlIGJlZ2lubmluZ1xyXG4gICAgICAgICAgICBtYXRjaGVkLnVuc2hpZnQocGFyZW50TWF0Y2hlci5yZWNvcmQpO1xyXG4gICAgICAgICAgICBwYXJlbnRNYXRjaGVyID0gcGFyZW50TWF0Y2hlci5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgIHBhdGgsXHJcbiAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgbWF0Y2hlZCxcclxuICAgICAgICAgICAgbWV0YTogbWVyZ2VNZXRhRmllbGRzKG1hdGNoZWQpLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICAvLyBhZGQgaW5pdGlhbCByb3V0ZXNcclxuICAgIHJvdXRlcy5mb3JFYWNoKHJvdXRlID0+IGFkZFJvdXRlKHJvdXRlKSk7XHJcbiAgICByZXR1cm4geyBhZGRSb3V0ZSwgcmVzb2x2ZSwgcmVtb3ZlUm91dGUsIGdldFJvdXRlcywgZ2V0UmVjb3JkTWF0Y2hlciB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcmFtc0Zyb21Mb2NhdGlvbihwYXJhbXMsIGtleXMpIHtcclxuICAgIGNvbnN0IG5ld1BhcmFtcyA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgIGlmIChrZXkgaW4gcGFyYW1zKVxyXG4gICAgICAgICAgICBuZXdQYXJhbXNba2V5XSA9IHBhcmFtc1trZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1BhcmFtcztcclxufVxyXG4vKipcclxuICogTm9ybWFsaXplcyBhIFJvdXRlUmVjb3JkUmF3LiBDcmVhdGVzIGEgY29weVxyXG4gKlxyXG4gKiBAcGFyYW0gcmVjb3JkXHJcbiAqIEByZXR1cm5zIHRoZSBub3JtYWxpemVkIHZlcnNpb25cclxuICovXHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVJvdXRlUmVjb3JkKHJlY29yZCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwYXRoOiByZWNvcmQucGF0aCxcclxuICAgICAgICByZWRpcmVjdDogcmVjb3JkLnJlZGlyZWN0LFxyXG4gICAgICAgIG5hbWU6IHJlY29yZC5uYW1lLFxyXG4gICAgICAgIG1ldGE6IHJlY29yZC5tZXRhIHx8IHt9LFxyXG4gICAgICAgIGFsaWFzT2Y6IHVuZGVmaW5lZCxcclxuICAgICAgICBiZWZvcmVFbnRlcjogcmVjb3JkLmJlZm9yZUVudGVyLFxyXG4gICAgICAgIHByb3BzOiBub3JtYWxpemVSZWNvcmRQcm9wcyhyZWNvcmQpLFxyXG4gICAgICAgIGNoaWxkcmVuOiByZWNvcmQuY2hpbGRyZW4gfHwgW10sXHJcbiAgICAgICAgaW5zdGFuY2VzOiB7fSxcclxuICAgICAgICBsZWF2ZUd1YXJkczogbmV3IFNldCgpLFxyXG4gICAgICAgIHVwZGF0ZUd1YXJkczogbmV3IFNldCgpLFxyXG4gICAgICAgIGVudGVyQ2FsbGJhY2tzOiB7fSxcclxuICAgICAgICBjb21wb25lbnRzOiAnY29tcG9uZW50cycgaW4gcmVjb3JkXHJcbiAgICAgICAgICAgID8gcmVjb3JkLmNvbXBvbmVudHMgfHwge31cclxuICAgICAgICAgICAgOiB7IGRlZmF1bHQ6IHJlY29yZC5jb21wb25lbnQgfSxcclxuICAgIH07XHJcbn1cclxuLyoqXHJcbiAqIE5vcm1hbGl6ZSB0aGUgb3B0aW9uYWwgYHByb3BzYCBpbiBhIHJlY29yZCB0byBhbHdheXMgYmUgYW4gb2JqZWN0IHNpbWlsYXIgdG9cclxuICogY29tcG9uZW50cy4gQWxzbyBhY2NlcHQgYSBib29sZWFuIGZvciBjb21wb25lbnRzLlxyXG4gKiBAcGFyYW0gcmVjb3JkXHJcbiAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVSZWNvcmRQcm9wcyhyZWNvcmQpIHtcclxuICAgIGNvbnN0IHByb3BzT2JqZWN0ID0ge307XHJcbiAgICAvLyBwcm9wcyBkb2VzIG5vdCBleGlzdCBvbiByZWRpcmVjdCByZWNvcmRzIGJ1dCB3ZSBjYW4gc2V0IGZhbHNlIGRpcmVjdGx5XHJcbiAgICBjb25zdCBwcm9wcyA9IHJlY29yZC5wcm9wcyB8fCBmYWxzZTtcclxuICAgIGlmICgnY29tcG9uZW50JyBpbiByZWNvcmQpIHtcclxuICAgICAgICBwcm9wc09iamVjdC5kZWZhdWx0ID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBOT1RFOiB3ZSBjb3VsZCBhbHNvIGFsbG93IGEgZnVuY3Rpb24gdG8gYmUgYXBwbGllZCB0byBldmVyeSBjb21wb25lbnQuXHJcbiAgICAgICAgLy8gV291bGQgbmVlZCB1c2VyIGZlZWRiYWNrIGZvciB1c2UgY2FzZXNcclxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gcmVjb3JkLmNvbXBvbmVudHMpXHJcbiAgICAgICAgICAgIHByb3BzT2JqZWN0W25hbWVdID0gdHlwZW9mIHByb3BzID09PSAnYm9vbGVhbicgPyBwcm9wcyA6IHByb3BzW25hbWVdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzT2JqZWN0O1xyXG59XHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgYSByZWNvcmQgb3IgYW55IG9mIGl0cyBwYXJlbnQgaXMgYW4gYWxpYXNcclxuICogQHBhcmFtIHJlY29yZFxyXG4gKi9cclxuZnVuY3Rpb24gaXNBbGlhc1JlY29yZChyZWNvcmQpIHtcclxuICAgIHdoaWxlIChyZWNvcmQpIHtcclxuICAgICAgICBpZiAocmVjb3JkLnJlY29yZC5hbGlhc09mKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICByZWNvcmQgPSByZWNvcmQucGFyZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbi8qKlxyXG4gKiBNZXJnZSBtZXRhIGZpZWxkcyBvZiBhbiBhcnJheSBvZiByZWNvcmRzXHJcbiAqXHJcbiAqIEBwYXJhbSBtYXRjaGVkIC0gYXJyYXkgb2YgbWF0Y2hlZCByZWNvcmRzXHJcbiAqL1xyXG5mdW5jdGlvbiBtZXJnZU1ldGFGaWVsZHMobWF0Y2hlZCkge1xyXG4gICAgcmV0dXJuIG1hdGNoZWQucmVkdWNlKChtZXRhLCByZWNvcmQpID0+IGFzc2lnbihtZXRhLCByZWNvcmQubWV0YSksIHt9KTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMoZGVmYXVsdHMsIHBhcnRpYWxPcHRpb25zKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0cykge1xyXG4gICAgICAgIG9wdGlvbnNba2V5XSA9IGtleSBpbiBwYXJ0aWFsT3B0aW9ucyA/IHBhcnRpYWxPcHRpb25zW2tleV0gOiBkZWZhdWx0c1trZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbn1cclxuZnVuY3Rpb24gaXNTYW1lUGFyYW0oYSwgYikge1xyXG4gICAgcmV0dXJuIChhLm5hbWUgPT09IGIubmFtZSAmJlxyXG4gICAgICAgIGEub3B0aW9uYWwgPT09IGIub3B0aW9uYWwgJiZcclxuICAgICAgICBhLnJlcGVhdGFibGUgPT09IGIucmVwZWF0YWJsZSk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIGEgcGF0aCBhbmQgaXRzIGFsaWFzIGhhdmUgdGhlIHNhbWUgcmVxdWlyZWQgcGFyYW1zXHJcbiAqXHJcbiAqIEBwYXJhbSBhIC0gb3JpZ2luYWwgcmVjb3JkXHJcbiAqIEBwYXJhbSBiIC0gYWxpYXMgcmVjb3JkXHJcbiAqL1xyXG5mdW5jdGlvbiBjaGVja1NhbWVQYXJhbXMoYSwgYikge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgYS5rZXlzKSB7XHJcbiAgICAgICAgaWYgKCFrZXkub3B0aW9uYWwgJiYgIWIua2V5cy5maW5kKGlzU2FtZVBhcmFtLmJpbmQobnVsbCwga2V5KSkpXHJcbiAgICAgICAgICAgIHJldHVybiB3YXJuKGBBbGlhcyBcIiR7Yi5yZWNvcmQucGF0aH1cIiBhbmQgdGhlIG9yaWdpbmFsIHJlY29yZDogXCIke2EucmVjb3JkLnBhdGh9XCIgc2hvdWxkIGhhdmUgdGhlIGV4YWN0IHNhbWUgcGFyYW0gbmFtZWQgXCIke2tleS5uYW1lfVwiYCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBiLmtleXMpIHtcclxuICAgICAgICBpZiAoIWtleS5vcHRpb25hbCAmJiAhYS5rZXlzLmZpbmQoaXNTYW1lUGFyYW0uYmluZChudWxsLCBrZXkpKSlcclxuICAgICAgICAgICAgcmV0dXJuIHdhcm4oYEFsaWFzIFwiJHtiLnJlY29yZC5wYXRofVwiIGFuZCB0aGUgb3JpZ2luYWwgcmVjb3JkOiBcIiR7YS5yZWNvcmQucGF0aH1cIiBzaG91bGQgaGF2ZSB0aGUgZXhhY3Qgc2FtZSBwYXJhbSBuYW1lZCBcIiR7a2V5Lm5hbWV9XCJgKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjaGVja01pc3NpbmdQYXJhbXNJbkFic29sdXRlUGF0aChyZWNvcmQsIHBhcmVudCkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgcGFyZW50LmtleXMpIHtcclxuICAgICAgICBpZiAoIXJlY29yZC5rZXlzLmZpbmQoaXNTYW1lUGFyYW0uYmluZChudWxsLCBrZXkpKSlcclxuICAgICAgICAgICAgcmV0dXJuIHdhcm4oYEFic29sdXRlIHBhdGggXCIke3JlY29yZC5yZWNvcmQucGF0aH1cIiBzaG91bGQgaGF2ZSB0aGUgZXhhY3Qgc2FtZSBwYXJhbSBuYW1lZCBcIiR7a2V5Lm5hbWV9XCIgYXMgaXRzIHBhcmVudCBcIiR7cGFyZW50LnJlY29yZC5wYXRofVwiLmApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzUmVjb3JkQ2hpbGRPZihyZWNvcmQsIHBhcmVudCkge1xyXG4gICAgcmV0dXJuIHBhcmVudC5jaGlsZHJlbi5zb21lKGNoaWxkID0+IGNoaWxkID09PSByZWNvcmQgfHwgaXNSZWNvcmRDaGlsZE9mKHJlY29yZCwgY2hpbGQpKTtcclxufVxuXG4vKipcclxuICogRW5jb2RpbmcgUnVsZXMg4pCjID0gU3BhY2UgUGF0aDog4pCjIFwiIDwgPiAjID8geyB9IFF1ZXJ5OiDikKMgXCIgPCA+ICMgJiA9IEhhc2g6IOKQoyBcIlxyXG4gKiA8ID4gYFxyXG4gKlxyXG4gKiBPbiB0b3Agb2YgdGhhdCwgdGhlIFJGQzM5ODYgKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMi4yKVxyXG4gKiBkZWZpbmVzIHNvbWUgZXh0cmEgY2hhcmFjdGVycyB0byBiZSBlbmNvZGVkLiBNb3N0IGJyb3dzZXJzIGRvIG5vdCBlbmNvZGUgdGhlbVxyXG4gKiBpbiBlbmNvZGVVUkkgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy91cmwvaXNzdWVzLzM2OSwgc28gaXQgbWF5IGJlIHNhZmVyIHRvXHJcbiAqIGFsc28gZW5jb2RlIGAhJygpKmAuIExlYXZpbmcgdW5lbmNvZGVkIG9ubHkgQVNDSUkgYWxwaGFudW1lcmljKGBhLXpBLVowLTlgKVxyXG4gKiBwbHVzIGAtLl9+YC4gVGhpcyBleHRyYSBzYWZldHkgc2hvdWxkIGJlIGFwcGxpZWQgdG8gcXVlcnkgYnkgcGF0Y2hpbmcgdGhlXHJcbiAqIHN0cmluZyByZXR1cm5lZCBieSBlbmNvZGVVUklDb21wb25lbnQgZW5jb2RlVVJJIGFsc28gZW5jb2RlcyBgW1xcXV5gLiBgXFxgXHJcbiAqIHNob3VsZCBiZSBlbmNvZGVkIHRvIGF2b2lkIGFtYmlndWl0eS4gQnJvd3NlcnMgKElFLCBGRiwgQykgdHJhbnNmb3JtIGEgYFxcYFxyXG4gKiBpbnRvIGEgYC9gIGlmIGRpcmVjdGx5IHR5cGVkIGluLiBUaGUgX2JhY2t0aWNrXyAoYGBgYGApIHNob3VsZCBhbHNvIGJlXHJcbiAqIGVuY29kZWQgZXZlcnl3aGVyZSBiZWNhdXNlIHNvbWUgYnJvd3NlcnMgbGlrZSBGRiBlbmNvZGUgaXQgd2hlbiBkaXJlY3RseVxyXG4gKiB3cml0dGVuIHdoaWxlIG90aGVycyBkb24ndC4gU2FmYXJpIGFuZCBJRSBkb24ndCBlbmNvZGUgYGBcIjw+e31gYGAgaW4gaGFzaC5cclxuICovXHJcbi8vIGNvbnN0IEVYVFJBX1JFU0VSVkVEX1JFID0gL1shJygpKl0vZ1xyXG4vLyBjb25zdCBlbmNvZGVSZXNlcnZlZFJlcGxhY2VyID0gKGM6IHN0cmluZykgPT4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KVxyXG5jb25zdCBIQVNIX1JFID0gLyMvZzsgLy8gJTIzXHJcbmNvbnN0IEFNUEVSU0FORF9SRSA9IC8mL2c7IC8vICUyNlxyXG5jb25zdCBTTEFTSF9SRSA9IC9cXC8vZzsgLy8gJTJGXHJcbmNvbnN0IEVRVUFMX1JFID0gLz0vZzsgLy8gJTNEXHJcbmNvbnN0IElNX1JFID0gL1xcPy9nOyAvLyAlM0ZcclxuY29uc3QgUExVU19SRSA9IC9cXCsvZzsgLy8gJTJCXHJcbi8qKlxyXG4gKiBOT1RFOiBJdCdzIG5vdCBjbGVhciB0byBtZSBpZiB3ZSBzaG91bGQgZW5jb2RlIHRoZSArIHN5bWJvbCBpbiBxdWVyaWVzLCBpdFxyXG4gKiBzZWVtcyB0byBiZSBsZXNzIGZsZXhpYmxlIHRoYW4gbm90IGRvaW5nIHNvIGFuZCBJIGNhbid0IGZpbmQgb3V0IHRoZSBsZWdhY3lcclxuICogc3lzdGVtcyByZXF1aXJpbmcgdGhpcyBmb3IgcmVndWxhciByZXF1ZXN0cyBsaWtlIHRleHQvaHRtbC4gSW4gdGhlIHN0YW5kYXJkLFxyXG4gKiB0aGUgZW5jb2Rpbmcgb2YgdGhlIHBsdXMgY2hhcmFjdGVyIGlzIG9ubHkgbWVudGlvbmVkIGZvclxyXG4gKiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcclxuICogKGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsZW5jb2RlZC1wYXJzaW5nKSBhbmQgbW9zdCBicm93c2VycyBzZWVtcyBsb1xyXG4gKiBsZWF2ZSB0aGUgcGx1cyBjaGFyYWN0ZXIgYXMgaXMgaW4gcXVlcmllcy4gVG8gYmUgbW9yZSBmbGV4aWJsZSwgd2UgYWxsb3cgdGhlXHJcbiAqIHBsdXMgY2hhcmFjdGVyIG9uIHRoZSBxdWVyeSBidXQgaXQgY2FuIGFsc28gYmUgbWFudWFsbHkgZW5jb2RlZCBieSB0aGUgdXNlci5cclxuICpcclxuICogUmVzb3VyY2VzOlxyXG4gKiAtIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsZW5jb2RlZC1wYXJzaW5nXHJcbiAqIC0gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTYzNDI3MS91cmwtZW5jb2RpbmctdGhlLXNwYWNlLWNoYXJhY3Rlci1vci0yMFxyXG4gKi9cclxuY29uc3QgRU5DX0JSQUNLRVRfT1BFTl9SRSA9IC8lNUIvZzsgLy8gW1xyXG5jb25zdCBFTkNfQlJBQ0tFVF9DTE9TRV9SRSA9IC8lNUQvZzsgLy8gXVxyXG5jb25zdCBFTkNfQ0FSRVRfUkUgPSAvJTVFL2c7IC8vIF5cclxuY29uc3QgRU5DX0JBQ0tUSUNLX1JFID0gLyU2MC9nOyAvLyBgXHJcbmNvbnN0IEVOQ19DVVJMWV9PUEVOX1JFID0gLyU3Qi9nOyAvLyB7XHJcbmNvbnN0IEVOQ19QSVBFX1JFID0gLyU3Qy9nOyAvLyB8XHJcbmNvbnN0IEVOQ19DVVJMWV9DTE9TRV9SRSA9IC8lN0QvZzsgLy8gfVxyXG5jb25zdCBFTkNfU1BBQ0VfUkUgPSAvJTIwL2c7IC8vIH1cclxuLyoqXHJcbiAqIEVuY29kZSBjaGFyYWN0ZXJzIHRoYXQgbmVlZCB0byBiZSBlbmNvZGVkIG9uIHRoZSBwYXRoLCBzZWFyY2ggYW5kIGhhc2hcclxuICogc2VjdGlvbnMgb2YgdGhlIFVSTC5cclxuICpcclxuICogQGludGVybmFsXHJcbiAqIEBwYXJhbSB0ZXh0IC0gc3RyaW5nIHRvIGVuY29kZVxyXG4gKiBAcmV0dXJucyBlbmNvZGVkIHN0cmluZ1xyXG4gKi9cclxuZnVuY3Rpb24gY29tbW9uRW5jb2RlKHRleHQpIHtcclxuICAgIHJldHVybiBlbmNvZGVVUkkoJycgKyB0ZXh0KVxyXG4gICAgICAgIC5yZXBsYWNlKEVOQ19QSVBFX1JFLCAnfCcpXHJcbiAgICAgICAgLnJlcGxhY2UoRU5DX0JSQUNLRVRfT1BFTl9SRSwgJ1snKVxyXG4gICAgICAgIC5yZXBsYWNlKEVOQ19CUkFDS0VUX0NMT1NFX1JFLCAnXScpO1xyXG59XHJcbi8qKlxyXG4gKiBFbmNvZGUgY2hhcmFjdGVycyB0aGF0IG5lZWQgdG8gYmUgZW5jb2RlZCBvbiB0aGUgaGFzaCBzZWN0aW9uIG9mIHRoZSBVUkwuXHJcbiAqXHJcbiAqIEBwYXJhbSB0ZXh0IC0gc3RyaW5nIHRvIGVuY29kZVxyXG4gKiBAcmV0dXJucyBlbmNvZGVkIHN0cmluZ1xyXG4gKi9cclxuZnVuY3Rpb24gZW5jb2RlSGFzaCh0ZXh0KSB7XHJcbiAgICByZXR1cm4gY29tbW9uRW5jb2RlKHRleHQpXHJcbiAgICAgICAgLnJlcGxhY2UoRU5DX0NVUkxZX09QRU5fUkUsICd7JylcclxuICAgICAgICAucmVwbGFjZShFTkNfQ1VSTFlfQ0xPU0VfUkUsICd9JylcclxuICAgICAgICAucmVwbGFjZShFTkNfQ0FSRVRfUkUsICdeJyk7XHJcbn1cclxuLyoqXHJcbiAqIEVuY29kZSBjaGFyYWN0ZXJzIHRoYXQgbmVlZCB0byBiZSBlbmNvZGVkIHF1ZXJ5IHZhbHVlcyBvbiB0aGUgcXVlcnlcclxuICogc2VjdGlvbiBvZiB0aGUgVVJMLlxyXG4gKlxyXG4gKiBAcGFyYW0gdGV4dCAtIHN0cmluZyB0byBlbmNvZGVcclxuICogQHJldHVybnMgZW5jb2RlZCBzdHJpbmdcclxuICovXHJcbmZ1bmN0aW9uIGVuY29kZVF1ZXJ5VmFsdWUodGV4dCkge1xyXG4gICAgcmV0dXJuIChjb21tb25FbmNvZGUodGV4dClcclxuICAgICAgICAvLyBFbmNvZGUgdGhlIHNwYWNlIGFzICssIGVuY29kZSB0aGUgKyB0byBkaWZmZXJlbnRpYXRlIGl0IGZyb20gdGhlIHNwYWNlXHJcbiAgICAgICAgLnJlcGxhY2UoUExVU19SRSwgJyUyQicpXHJcbiAgICAgICAgLnJlcGxhY2UoRU5DX1NQQUNFX1JFLCAnKycpXHJcbiAgICAgICAgLnJlcGxhY2UoSEFTSF9SRSwgJyUyMycpXHJcbiAgICAgICAgLnJlcGxhY2UoQU1QRVJTQU5EX1JFLCAnJTI2JylcclxuICAgICAgICAucmVwbGFjZShFTkNfQkFDS1RJQ0tfUkUsICdgJylcclxuICAgICAgICAucmVwbGFjZShFTkNfQ1VSTFlfT1BFTl9SRSwgJ3snKVxyXG4gICAgICAgIC5yZXBsYWNlKEVOQ19DVVJMWV9DTE9TRV9SRSwgJ30nKVxyXG4gICAgICAgIC5yZXBsYWNlKEVOQ19DQVJFVF9SRSwgJ14nKSk7XHJcbn1cclxuLyoqXHJcbiAqIExpa2UgYGVuY29kZVF1ZXJ5VmFsdWVgIGJ1dCBhbHNvIGVuY29kZXMgdGhlIGA9YCBjaGFyYWN0ZXIuXHJcbiAqXHJcbiAqIEBwYXJhbSB0ZXh0IC0gc3RyaW5nIHRvIGVuY29kZVxyXG4gKi9cclxuZnVuY3Rpb24gZW5jb2RlUXVlcnlLZXkodGV4dCkge1xyXG4gICAgcmV0dXJuIGVuY29kZVF1ZXJ5VmFsdWUodGV4dCkucmVwbGFjZShFUVVBTF9SRSwgJyUzRCcpO1xyXG59XHJcbi8qKlxyXG4gKiBFbmNvZGUgY2hhcmFjdGVycyB0aGF0IG5lZWQgdG8gYmUgZW5jb2RlZCBvbiB0aGUgcGF0aCBzZWN0aW9uIG9mIHRoZSBVUkwuXHJcbiAqXHJcbiAqIEBwYXJhbSB0ZXh0IC0gc3RyaW5nIHRvIGVuY29kZVxyXG4gKiBAcmV0dXJucyBlbmNvZGVkIHN0cmluZ1xyXG4gKi9cclxuZnVuY3Rpb24gZW5jb2RlUGF0aCh0ZXh0KSB7XHJcbiAgICByZXR1cm4gY29tbW9uRW5jb2RlKHRleHQpLnJlcGxhY2UoSEFTSF9SRSwgJyUyMycpLnJlcGxhY2UoSU1fUkUsICclM0YnKTtcclxufVxyXG4vKipcclxuICogRW5jb2RlIGNoYXJhY3RlcnMgdGhhdCBuZWVkIHRvIGJlIGVuY29kZWQgb24gdGhlIHBhdGggc2VjdGlvbiBvZiB0aGUgVVJMIGFzIGFcclxuICogcGFyYW0uIFRoaXMgZnVuY3Rpb24gZW5jb2RlcyBldmVyeXRoaW5nIHtAbGluayBlbmNvZGVQYXRofSBkb2VzIHBsdXMgdGhlXHJcbiAqIHNsYXNoIChgL2ApIGNoYXJhY3Rlci4gSWYgYHRleHRgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCwgcmV0dXJucyBhbiBlbXB0eVxyXG4gKiBzdHJpbmcgaW5zdGVhZC5cclxuICpcclxuICogQHBhcmFtIHRleHQgLSBzdHJpbmcgdG8gZW5jb2RlXHJcbiAqIEByZXR1cm5zIGVuY29kZWQgc3RyaW5nXHJcbiAqL1xyXG5mdW5jdGlvbiBlbmNvZGVQYXJhbSh0ZXh0KSB7XHJcbiAgICByZXR1cm4gdGV4dCA9PSBudWxsID8gJycgOiBlbmNvZGVQYXRoKHRleHQpLnJlcGxhY2UoU0xBU0hfUkUsICclMkYnKTtcclxufVxyXG4vKipcclxuICogRGVjb2RlIHRleHQgdXNpbmcgYGRlY29kZVVSSUNvbXBvbmVudGAuIFJldHVybnMgdGhlIG9yaWdpbmFsIHRleHQgaWYgaXRcclxuICogZmFpbHMuXHJcbiAqXHJcbiAqIEBwYXJhbSB0ZXh0IC0gc3RyaW5nIHRvIGRlY29kZVxyXG4gKiBAcmV0dXJucyBkZWNvZGVkIHN0cmluZ1xyXG4gKi9cclxuZnVuY3Rpb24gZGVjb2RlKHRleHQpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCgnJyArIHRleHQpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBFcnJvciBkZWNvZGluZyBcIiR7dGV4dH1cIi4gVXNpbmcgb3JpZ2luYWwgdmFsdWVgKTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJyArIHRleHQ7XHJcbn1cblxuLyoqXHJcbiAqIFRyYW5zZm9ybXMgYSBxdWVyeVN0cmluZyBpbnRvIGEge0BsaW5rIExvY2F0aW9uUXVlcnl9IG9iamVjdC4gQWNjZXB0IGJvdGgsIGFcclxuICogdmVyc2lvbiB3aXRoIHRoZSBsZWFkaW5nIGA/YCBhbmQgd2l0aG91dCBTaG91bGQgd29yayBhcyBVUkxTZWFyY2hQYXJhbXNcclxuXG4gKiBAaW50ZXJuYWxcclxuICpcclxuICogQHBhcmFtIHNlYXJjaCAtIHNlYXJjaCBzdHJpbmcgdG8gcGFyc2VcclxuICogQHJldHVybnMgYSBxdWVyeSBvYmplY3RcclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlUXVlcnkoc2VhcmNoKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IHt9O1xyXG4gICAgLy8gYXZvaWQgY3JlYXRpbmcgYW4gb2JqZWN0IHdpdGggYW4gZW1wdHkga2V5IGFuZCBlbXB0eSB2YWx1ZVxyXG4gICAgLy8gYmVjYXVzZSBvZiBzcGxpdCgnJicpXHJcbiAgICBpZiAoc2VhcmNoID09PSAnJyB8fCBzZWFyY2ggPT09ICc/JylcclxuICAgICAgICByZXR1cm4gcXVlcnk7XHJcbiAgICBjb25zdCBoYXNMZWFkaW5nSU0gPSBzZWFyY2hbMF0gPT09ICc/JztcclxuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IChoYXNMZWFkaW5nSU0gPyBzZWFyY2guc2xpY2UoMSkgOiBzZWFyY2gpLnNwbGl0KCcmJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlYXJjaFBhcmFtcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIC8vIHByZSBkZWNvZGUgdGhlICsgaW50byBzcGFjZVxyXG4gICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtID0gc2VhcmNoUGFyYW1zW2ldLnJlcGxhY2UoUExVU19SRSwgJyAnKTtcclxuICAgICAgICAvLyBhbGxvdyB0aGUgPSBjaGFyYWN0ZXJcclxuICAgICAgICBjb25zdCBlcVBvcyA9IHNlYXJjaFBhcmFtLmluZGV4T2YoJz0nKTtcclxuICAgICAgICBjb25zdCBrZXkgPSBkZWNvZGUoZXFQb3MgPCAwID8gc2VhcmNoUGFyYW0gOiBzZWFyY2hQYXJhbS5zbGljZSgwLCBlcVBvcykpO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXFQb3MgPCAwID8gbnVsbCA6IGRlY29kZShzZWFyY2hQYXJhbS5zbGljZShlcVBvcyArIDEpKTtcclxuICAgICAgICBpZiAoa2V5IGluIHF1ZXJ5KSB7XHJcbiAgICAgICAgICAgIC8vIGFuIGV4dHJhIHZhcmlhYmxlIGZvciB0cyB0eXBlc1xyXG4gICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gcXVlcnlba2V5XTtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IHF1ZXJ5W2tleV0gPSBbY3VycmVudFZhbHVlXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXJyZW50VmFsdWUucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBxdWVyeVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHF1ZXJ5O1xyXG59XHJcbi8qKlxyXG4gKiBTdHJpbmdpZmllcyBhIHtAbGluayBMb2NhdGlvblF1ZXJ5UmF3fSBvYmplY3QuIExpa2UgYFVSTFNlYXJjaFBhcmFtc2AsIGl0XHJcbiAqIGRvZXNuJ3QgcHJlcGVuZCBhIGA/YFxyXG4gKlxyXG4gKiBAaW50ZXJuYWxcclxuICpcclxuICogQHBhcmFtIHF1ZXJ5IC0gcXVlcnkgb2JqZWN0IHRvIHN0cmluZ2lmeVxyXG4gKiBAcmV0dXJucyBzdHJpbmcgdmVyc2lvbiBvZiB0aGUgcXVlcnkgd2l0aG91dCB0aGUgbGVhZGluZyBgP2BcclxuICovXHJcbmZ1bmN0aW9uIHN0cmluZ2lmeVF1ZXJ5KHF1ZXJ5KSB7XHJcbiAgICBsZXQgc2VhcmNoID0gJyc7XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gcXVlcnkpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHF1ZXJ5W2tleV07XHJcbiAgICAgICAga2V5ID0gZW5jb2RlUXVlcnlLZXkoa2V5KTtcclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvLyBvbmx5IG51bGwgYWRkcyB0aGUgdmFsdWVcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHNlYXJjaCArPSAoc2VhcmNoLmxlbmd0aCA/ICcmJyA6ICcnKSArIGtleTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8ga2VlcCBudWxsIHZhbHVlc1xyXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgICAgICAgID8gdmFsdWUubWFwKHYgPT4gdiAmJiBlbmNvZGVRdWVyeVZhbHVlKHYpKVxyXG4gICAgICAgICAgICA6IFt2YWx1ZSAmJiBlbmNvZGVRdWVyeVZhbHVlKHZhbHVlKV07XHJcbiAgICAgICAgdmFsdWVzLmZvckVhY2godmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAvLyBza2lwIHVuZGVmaW5lZCB2YWx1ZXMgaW4gYXJyYXlzIGFzIGlmIHRoZXkgd2VyZSBub3QgcHJlc2VudFxyXG4gICAgICAgICAgICAvLyBzbWFsbGVyIGNvZGUgdGhhbiB1c2luZyBmaWx0ZXJcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIG9ubHkgYXBwZW5kICYgd2l0aCBub24tZW1wdHkgc2VhcmNoXHJcbiAgICAgICAgICAgICAgICBzZWFyY2ggKz0gKHNlYXJjaC5sZW5ndGggPyAnJicgOiAnJykgKyBrZXk7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2ggKz0gJz0nICsgdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBzZWFyY2g7XHJcbn1cclxuLyoqXHJcbiAqIFRyYW5zZm9ybXMgYSB7QGxpbmsgTG9jYXRpb25RdWVyeVJhd30gaW50byBhIHtAbGluayBMb2NhdGlvblF1ZXJ5fSBieSBjYXN0aW5nXHJcbiAqIG51bWJlcnMgaW50byBzdHJpbmdzLCByZW1vdmluZyBrZXlzIHdpdGggYW4gdW5kZWZpbmVkIHZhbHVlIGFuZCByZXBsYWNpbmdcclxuICogdW5kZWZpbmVkIHdpdGggbnVsbCBpbiBhcnJheXNcclxuICpcclxuICogQHBhcmFtIHF1ZXJ5IC0gcXVlcnkgb2JqZWN0IHRvIG5vcm1hbGl6ZVxyXG4gKiBAcmV0dXJucyBhIG5vcm1hbGl6ZWQgcXVlcnkgb2JqZWN0XHJcbiAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVRdWVyeShxdWVyeSkge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBxdWVyeSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcXVlcnlba2V5XTtcclxuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBub3JtYWxpemVkUXVlcnlba2V5XSA9IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgICAgICAgICAgICA/IHZhbHVlLm1hcCh2ID0+ICh2ID09IG51bGwgPyBudWxsIDogJycgKyB2KSlcclxuICAgICAgICAgICAgICAgIDogdmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgID8gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICA6ICcnICsgdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRRdWVyeTtcclxufVxuXG4vKipcclxuICogQ3JlYXRlIGEgbGlzdCBvZiBjYWxsYmFja3MgdGhhdCBjYW4gYmUgcmVzZXQuIFVzZWQgdG8gY3JlYXRlIGJlZm9yZSBhbmQgYWZ0ZXIgbmF2aWdhdGlvbiBndWFyZHMgbGlzdFxyXG4gKi9cclxuZnVuY3Rpb24gdXNlQ2FsbGJhY2tzKCkge1xyXG4gICAgbGV0IGhhbmRsZXJzID0gW107XHJcbiAgICBmdW5jdGlvbiBhZGQoaGFuZGxlcikge1xyXG4gICAgICAgIGhhbmRsZXJzLnB1c2goaGFuZGxlcik7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaSA9IGhhbmRsZXJzLmluZGV4T2YoaGFuZGxlcik7XHJcbiAgICAgICAgICAgIGlmIChpID4gLTEpXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVycy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xyXG4gICAgICAgIGhhbmRsZXJzID0gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGFkZCxcclxuICAgICAgICBsaXN0OiAoKSA9PiBoYW5kbGVycyxcclxuICAgICAgICByZXNldCxcclxuICAgIH07XHJcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJHdWFyZChyZWNvcmQsIG5hbWUsIGd1YXJkKSB7XHJcbiAgICBjb25zdCByZW1vdmVGcm9tTGlzdCA9ICgpID0+IHtcclxuICAgICAgICByZWNvcmRbbmFtZV0uZGVsZXRlKGd1YXJkKTtcclxuICAgIH07XHJcbiAgICBvblVubW91bnRlZChyZW1vdmVGcm9tTGlzdCk7XHJcbiAgICBvbkRlYWN0aXZhdGVkKHJlbW92ZUZyb21MaXN0KTtcclxuICAgIG9uQWN0aXZhdGVkKCgpID0+IHtcclxuICAgICAgICByZWNvcmRbbmFtZV0uYWRkKGd1YXJkKTtcclxuICAgIH0pO1xyXG4gICAgcmVjb3JkW25hbWVdLmFkZChndWFyZCk7XHJcbn1cclxuLyoqXHJcbiAqIEFkZCBhIG5hdmlnYXRpb24gZ3VhcmQgdGhhdCB0cmlnZ2VycyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGZvciB0aGUgY3VycmVudFxyXG4gKiBsb2NhdGlvbiBpcyBhYm91dCB0byBiZSBsZWZ0LiBTaW1pbGFyIHRvIHtAbGluayBiZWZvcmVSb3V0ZUxlYXZlfSBidXQgY2FuIGJlXHJcbiAqIHVzZWQgaW4gYW55IGNvbXBvbmVudC4gVGhlIGd1YXJkIGlzIHJlbW92ZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIHVubW91bnRlZC5cclxuICpcclxuICogQHBhcmFtIGxlYXZlR3VhcmQgLSB7QGxpbmsgTmF2aWdhdGlvbkd1YXJkfVxyXG4gKi9cclxuZnVuY3Rpb24gb25CZWZvcmVSb3V0ZUxlYXZlKGxlYXZlR3VhcmQpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWdldEN1cnJlbnRJbnN0YW5jZSgpKSB7XHJcbiAgICAgICAgd2FybignZ2V0Q3VycmVudEluc3RhbmNlKCkgcmV0dXJuZWQgbnVsbC4gb25CZWZvcmVSb3V0ZUxlYXZlKCkgbXVzdCBiZSBjYWxsZWQgYXQgdGhlIHRvcCBvZiBhIHNldHVwIGZ1bmN0aW9uJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYWN0aXZlUmVjb3JkID0gaW5qZWN0KG1hdGNoZWRSb3V0ZUtleSwgXHJcbiAgICAvLyB0byBhdm9pZCB3YXJuaW5nXHJcbiAgICB7fSkudmFsdWU7XHJcbiAgICBpZiAoIWFjdGl2ZVJlY29yZCkge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuKCdObyBhY3RpdmUgcm91dGUgcmVjb3JkIHdhcyBmb3VuZCB3aGVuIGNhbGxpbmcgYG9uQmVmb3JlUm91dGVMZWF2ZSgpYC4gTWFrZSBzdXJlIHlvdSBjYWxsIHRoaXMgZnVuY3Rpb24gaW5zaWRlIG9mIGEgY29tcG9uZW50IGNoaWxkIG9mIDxyb3V0ZXItdmlldz4uIE1heWJlIHlvdSBjYWxsZWQgaXQgaW5zaWRlIG9mIEFwcC52dWU/Jyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmVnaXN0ZXJHdWFyZChhY3RpdmVSZWNvcmQsICdsZWF2ZUd1YXJkcycsIGxlYXZlR3VhcmQpO1xyXG59XHJcbi8qKlxyXG4gKiBBZGQgYSBuYXZpZ2F0aW9uIGd1YXJkIHRoYXQgdHJpZ2dlcnMgd2hlbmV2ZXIgdGhlIGN1cnJlbnQgbG9jYXRpb24gaXMgYWJvdXRcclxuICogdG8gYmUgdXBkYXRlZC4gU2ltaWxhciB0byB7QGxpbmsgYmVmb3JlUm91dGVVcGRhdGV9IGJ1dCBjYW4gYmUgdXNlZCBpbiBhbnlcclxuICogY29tcG9uZW50LiBUaGUgZ3VhcmQgaXMgcmVtb3ZlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgdW5tb3VudGVkLlxyXG4gKlxyXG4gKiBAcGFyYW0gdXBkYXRlR3VhcmQgLSB7QGxpbmsgTmF2aWdhdGlvbkd1YXJkfVxyXG4gKi9cclxuZnVuY3Rpb24gb25CZWZvcmVSb3V0ZVVwZGF0ZSh1cGRhdGVHdWFyZCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZ2V0Q3VycmVudEluc3RhbmNlKCkpIHtcclxuICAgICAgICB3YXJuKCdnZXRDdXJyZW50SW5zdGFuY2UoKSByZXR1cm5lZCBudWxsLiBvbkJlZm9yZVJvdXRlVXBkYXRlKCkgbXVzdCBiZSBjYWxsZWQgYXQgdGhlIHRvcCBvZiBhIHNldHVwIGZ1bmN0aW9uJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYWN0aXZlUmVjb3JkID0gaW5qZWN0KG1hdGNoZWRSb3V0ZUtleSwgXHJcbiAgICAvLyB0byBhdm9pZCB3YXJuaW5nXHJcbiAgICB7fSkudmFsdWU7XHJcbiAgICBpZiAoIWFjdGl2ZVJlY29yZCkge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuKCdObyBhY3RpdmUgcm91dGUgcmVjb3JkIHdhcyBmb3VuZCB3aGVuIGNhbGxpbmcgYG9uQmVmb3JlUm91dGVVcGRhdGUoKWAuIE1ha2Ugc3VyZSB5b3UgY2FsbCB0aGlzIGZ1bmN0aW9uIGluc2lkZSBvZiBhIGNvbXBvbmVudCBjaGlsZCBvZiA8cm91dGVyLXZpZXc+LiBNYXliZSB5b3UgY2FsbGVkIGl0IGluc2lkZSBvZiBBcHAudnVlPycpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHJlZ2lzdGVyR3VhcmQoYWN0aXZlUmVjb3JkLCAndXBkYXRlR3VhcmRzJywgdXBkYXRlR3VhcmQpO1xyXG59XHJcbmZ1bmN0aW9uIGd1YXJkVG9Qcm9taXNlRm4oZ3VhcmQsIHRvLCBmcm9tLCByZWNvcmQsIG5hbWUpIHtcclxuICAgIC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGVudGVyQ2FsbGJhY2tBcnJheSB0byBwcmV2ZW50IHB1c2hpbmcgY2FsbGJhY2tzIGlmIGEgbmV3IG5hdmlnYXRpb24gdG9vayBwbGFjZVxyXG4gICAgY29uc3QgZW50ZXJDYWxsYmFja0FycmF5ID0gcmVjb3JkICYmXHJcbiAgICAgICAgLy8gbmFtZSBpcyBkZWZpbmVkIGlmIHJlY29yZCBpcyBiZWNhdXNlIG9mIHRoZSBmdW5jdGlvbiBvdmVybG9hZFxyXG4gICAgICAgIChyZWNvcmQuZW50ZXJDYWxsYmFja3NbbmFtZV0gPSByZWNvcmQuZW50ZXJDYWxsYmFja3NbbmFtZV0gfHwgW10pO1xyXG4gICAgcmV0dXJuICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBjb25zdCBuZXh0ID0gKHZhbGlkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWxpZCA9PT0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICByZWplY3QoY3JlYXRlUm91dGVyRXJyb3IoNCAvKiBOQVZJR0FUSU9OX0FCT1JURUQgKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICBmcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvLFxyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh2YWxpZCBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QodmFsaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUm91dGVMb2NhdGlvbih2YWxpZCkpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChjcmVhdGVSb3V0ZXJFcnJvcigyIC8qIE5BVklHQVRJT05fR1VBUkRfUkVESVJFQ1QgKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICBmcm9tOiB0byxcclxuICAgICAgICAgICAgICAgICAgICB0bzogdmFsaWQsXHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZW50ZXJDYWxsYmFja0FycmF5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luY2UgZW50ZXJDYWxsYmFja0FycmF5IGlzIHRydXRoeSwgYm90aCByZWNvcmQgYW5kIG5hbWUgYWxzbyBhcmVcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuZW50ZXJDYWxsYmFja3NbbmFtZV0gPT09IGVudGVyQ2FsbGJhY2tBcnJheSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWxpZCA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICBlbnRlckNhbGxiYWNrQXJyYXkucHVzaCh2YWxpZCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIHdyYXBwaW5nIHdpdGggUHJvbWlzZS5yZXNvbHZlIGFsbG93cyBpdCB0byB3b3JrIHdpdGggYm90aCBhc3luYyBhbmQgc3luYyBndWFyZHNcclxuICAgICAgICBjb25zdCBndWFyZFJldHVybiA9IGd1YXJkLmNhbGwocmVjb3JkICYmIHJlY29yZC5pbnN0YW5jZXNbbmFtZV0sIHRvLCBmcm9tLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBjYW5Pbmx5QmVDYWxsZWRPbmNlKG5leHQsIHRvLCBmcm9tKSA6IG5leHQpO1xyXG4gICAgICAgIGxldCBndWFyZENhbGwgPSBQcm9taXNlLnJlc29sdmUoZ3VhcmRSZXR1cm4pO1xyXG4gICAgICAgIGlmIChndWFyZC5sZW5ndGggPCAzKVxyXG4gICAgICAgICAgICBndWFyZENhbGwgPSBndWFyZENhbGwudGhlbihuZXh0KTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGd1YXJkLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBUaGUgXCJuZXh0XCIgY2FsbGJhY2sgd2FzIG5ldmVyIGNhbGxlZCBpbnNpZGUgb2YgJHtndWFyZC5uYW1lID8gJ1wiJyArIGd1YXJkLm5hbWUgKyAnXCInIDogJyd9OlxcbiR7Z3VhcmQudG9TdHJpbmcoKX1cXG4uIElmIHlvdSBhcmUgcmV0dXJuaW5nIGEgdmFsdWUgaW5zdGVhZCBvZiBjYWxsaW5nIFwibmV4dFwiLCBtYWtlIHN1cmUgdG8gcmVtb3ZlIHRoZSBcIm5leHRcIiBwYXJhbWV0ZXIgZnJvbSB5b3VyIGZ1bmN0aW9uLmA7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZ3VhcmRSZXR1cm4gPT09ICdvYmplY3QnICYmICd0aGVuJyBpbiBndWFyZFJldHVybikge1xyXG4gICAgICAgICAgICAgICAgZ3VhcmRDYWxsID0gZ3VhcmRDYWxsLnRoZW4ocmVzb2x2ZWRWYWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogX2NhbGxlZCBpcyBhZGRlZCBhdCBjYW5Pbmx5QmVDYWxsZWRPbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0Ll9jYWxsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignSW52YWxpZCBuYXZpZ2F0aW9uIGd1YXJkJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogdGVzdCBtZSFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChndWFyZFJldHVybiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBfY2FsbGVkIGlzIGFkZGVkIGF0IGNhbk9ubHlCZUNhbGxlZE9uY2VcclxuICAgICAgICAgICAgICAgIGlmICghbmV4dC5fY2FsbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdJbnZhbGlkIG5hdmlnYXRpb24gZ3VhcmQnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGd1YXJkQ2FsbC5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gY2FuT25seUJlQ2FsbGVkT25jZShuZXh0LCB0bywgZnJvbSkge1xyXG4gICAgbGV0IGNhbGxlZCA9IDA7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChjYWxsZWQrKyA9PT0gMSlcclxuICAgICAgICAgICAgd2FybihgVGhlIFwibmV4dFwiIGNhbGxiYWNrIHdhcyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgaW4gb25lIG5hdmlnYXRpb24gZ3VhcmQgd2hlbiBnb2luZyBmcm9tIFwiJHtmcm9tLmZ1bGxQYXRofVwiIHRvIFwiJHt0by5mdWxsUGF0aH1cIi4gSXQgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uZSB0aW1lIGluIGVhY2ggbmF2aWdhdGlvbiBndWFyZC4gVGhpcyB3aWxsIGZhaWwgaW4gcHJvZHVjdGlvbi5gKTtcclxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB3ZSBwdXQgaXQgaW4gdGhlIG9yaWdpbmFsIG9uZSBiZWNhdXNlIGl0J3MgZWFzaWVyIHRvIGNoZWNrXHJcbiAgICAgICAgbmV4dC5fY2FsbGVkID0gdHJ1ZTtcclxuICAgICAgICBpZiAoY2FsbGVkID09PSAxKVxyXG4gICAgICAgICAgICBuZXh0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGV4dHJhY3RDb21wb25lbnRzR3VhcmRzKG1hdGNoZWQsIGd1YXJkVHlwZSwgdG8sIGZyb20pIHtcclxuICAgIGNvbnN0IGd1YXJkcyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgbWF0Y2hlZCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiByZWNvcmQuY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBsZXQgcmF3Q29tcG9uZW50ID0gcmVjb3JkLmNvbXBvbmVudHNbbmFtZV07XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcmF3Q29tcG9uZW50IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiByYXdDb21wb25lbnQgIT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiByYXdDb21wb25lbnQgIT09ICdmdW5jdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IFwiJHtuYW1lfVwiIGluIHJlY29yZCB3aXRoIHBhdGggXCIke3JlY29yZC5wYXRofVwiIGlzIG5vdGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgIGEgdmFsaWQgY29tcG9uZW50LiBSZWNlaXZlZCBcIiR7U3RyaW5nKHJhd0NvbXBvbmVudCl9XCIuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhyb3cgdG8gZW5zdXJlIHdlIHN0b3AgaGVyZSBidXQgd2FybiB0byBlbnN1cmUgdGhlIG1lc3NhZ2UgaXNuJ3RcclxuICAgICAgICAgICAgICAgICAgICAvLyBtaXNzZWQgYnkgdGhlIHVzZXJcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcm91dGUgY29tcG9uZW50Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgndGhlbicgaW4gcmF3Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2FybiBpZiB1c2VyIHdyb3RlIGltcG9ydCgnL2NvbXBvbmVudC52dWUnKSBpbnN0ZWFkIG9mICgpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW1wb3J0KCcuL2NvbXBvbmVudC52dWUnKVxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBcIiR7bmFtZX1cIiBpbiByZWNvcmQgd2l0aCBwYXRoIFwiJHtyZWNvcmQucGF0aH1cIiBpcyBhIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgUHJvbWlzZSBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgUHJvbWlzZS4gRGlkIHlvdSBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHdyaXRlIFwiaW1wb3J0KCcuL015UGFnZS52dWUnKVwiIGluc3RlYWQgb2YgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBcIigpID0+IGltcG9ydCgnLi9NeVBhZ2UudnVlJylcIiA/IFRoaXMgd2lsbCBicmVhayBpbiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHByb2R1Y3Rpb24gaWYgbm90IGZpeGVkLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSByYXdDb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcmF3Q29tcG9uZW50ID0gKCkgPT4gcHJvbWlzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJhd0NvbXBvbmVudC5fX2FzeW5jTG9hZGVyICYmXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2FybiBvbmx5IG9uY2UgcGVyIGNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgICFyYXdDb21wb25lbnQuX193YXJuZWREZWZpbmVBc3luYykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJhd0NvbXBvbmVudC5fX3dhcm5lZERlZmluZUFzeW5jID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgXCIke25hbWV9XCIgaW4gcmVjb3JkIHdpdGggcGF0aCBcIiR7cmVjb3JkLnBhdGh9XCIgaXMgZGVmaW5lZCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHVzaW5nIFwiZGVmaW5lQXN5bmNDb21wb25lbnQoKVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYFdyaXRlIFwiKCkgPT4gaW1wb3J0KCcuL015UGFnZS52dWUnKVwiIGluc3RlYWQgb2YgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBcImRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IGltcG9ydCgnLi9NeVBhZ2UudnVlJykpXCIuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCB1cGRhdGUgYW5kIGxlYXZlIGd1YXJkcyBpZiB0aGUgcm91dGUgY29tcG9uZW50IGlzIG5vdCBtb3VudGVkXHJcbiAgICAgICAgICAgIGlmIChndWFyZFR5cGUgIT09ICdiZWZvcmVSb3V0ZUVudGVyJyAmJiAhcmVjb3JkLmluc3RhbmNlc1tuYW1lXSlcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAoaXNSb3V0ZUNvbXBvbmVudChyYXdDb21wb25lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBfX3ZjY09wdHMgaXMgYWRkZWQgYnkgdnVlLWNsYXNzLWNvbXBvbmVudCBhbmQgY29udGFpbiB0aGUgcmVndWxhciBvcHRpb25zXHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gcmF3Q29tcG9uZW50Ll9fdmNjT3B0cyB8fCByYXdDb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBndWFyZCA9IG9wdGlvbnNbZ3VhcmRUeXBlXTtcclxuICAgICAgICAgICAgICAgIGd1YXJkICYmIGd1YXJkcy5wdXNoKGd1YXJkVG9Qcm9taXNlRm4oZ3VhcmQsIHRvLCBmcm9tLCByZWNvcmQsIG5hbWUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHJlcXVlc3RpbmcgdGhlIGNodW5rIGFscmVhZHlcclxuICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnRQcm9taXNlID0gcmF3Q29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICEoJ2NhdGNoJyBpbiBjb21wb25lbnRQcm9taXNlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBcIiR7bmFtZX1cIiBpbiByZWNvcmQgd2l0aCBwYXRoIFwiJHtyZWNvcmQucGF0aH1cIiBpcyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgcmV0dXJuIGEgUHJvbWlzZS4gSWYgeW91IHdlcmUgcGFzc2luZyBhIGZ1bmN0aW9uYWwgY29tcG9uZW50LCBtYWtlIHN1cmUgdG8gYWRkIGEgXCJkaXNwbGF5TmFtZVwiIHRvIHRoZSBjb21wb25lbnQuIFRoaXMgd2lsbCBicmVhayBpbiBwcm9kdWN0aW9uIGlmIG5vdCBmaXhlZC5gKTtcclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGNvbXBvbmVudFByb21pc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZ3VhcmRzLnB1c2goKCkgPT4gY29tcG9uZW50UHJvbWlzZS50aGVuKHJlc29sdmVkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBDb3VsZG4ndCByZXNvbHZlIGNvbXBvbmVudCBcIiR7bmFtZX1cIiBhdCBcIiR7cmVjb3JkLnBhdGh9XCJgKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRDb21wb25lbnQgPSBpc0VTTW9kdWxlKHJlc29sdmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlc29sdmVkLmRlZmF1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiByZXNvbHZlZDtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZXBsYWNlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSByZXNvbHZlZCBjb21wb25lbnRcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY29tcG9uZW50c1tuYW1lXSA9IHJlc29sdmVkQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIF9fdmNjT3B0cyBpcyBhZGRlZCBieSB2dWUtY2xhc3MtY29tcG9uZW50IGFuZCBjb250YWluIHRoZSByZWd1bGFyIG9wdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gcmVzb2x2ZWRDb21wb25lbnQuX192Y2NPcHRzIHx8IHJlc29sdmVkQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGd1YXJkID0gb3B0aW9uc1tndWFyZFR5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBndWFyZCAmJiBndWFyZFRvUHJvbWlzZUZuKGd1YXJkLCB0bywgZnJvbSwgcmVjb3JkLCBuYW1lKSgpO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGd1YXJkcztcclxufVxyXG4vKipcclxuICogQWxsb3dzIGRpZmZlcmVudGlhdGluZyBsYXp5IGNvbXBvbmVudHMgZnJvbSBmdW5jdGlvbmFsIGNvbXBvbmVudHMgYW5kIHZ1ZS1jbGFzcy1jb21wb25lbnRcclxuICpcclxuICogQHBhcmFtIGNvbXBvbmVudFxyXG4gKi9cclxuZnVuY3Rpb24gaXNSb3V0ZUNvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgIHJldHVybiAodHlwZW9mIGNvbXBvbmVudCA9PT0gJ29iamVjdCcgfHxcclxuICAgICAgICAnZGlzcGxheU5hbWUnIGluIGNvbXBvbmVudCB8fFxyXG4gICAgICAgICdwcm9wcycgaW4gY29tcG9uZW50IHx8XHJcbiAgICAgICAgJ19fdmNjT3B0cycgaW4gY29tcG9uZW50KTtcclxufVxuXG4vLyBUT0RPOiB3ZSBjb3VsZCBhbGxvdyBjdXJyZW50Um91dGUgYXMgYSBwcm9wIHRvIGV4cG9zZSBgaXNBY3RpdmVgIGFuZFxyXG4vLyBgaXNFeGFjdEFjdGl2ZWAgYmVoYXZpb3Igc2hvdWxkIGdvIHRocm91Z2ggYW4gUkZDXHJcbmZ1bmN0aW9uIHVzZUxpbmsocHJvcHMpIHtcclxuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChyb3V0ZXJLZXkpO1xyXG4gICAgY29uc3QgY3VycmVudFJvdXRlID0gaW5qZWN0KHJvdXRlTG9jYXRpb25LZXkpO1xyXG4gICAgY29uc3Qgcm91dGUgPSBjb21wdXRlZCgoKSA9PiByb3V0ZXIucmVzb2x2ZSh1bnJlZihwcm9wcy50bykpKTtcclxuICAgIGNvbnN0IGFjdGl2ZVJlY29yZEluZGV4ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgbWF0Y2hlZCB9ID0gcm91dGUudmFsdWU7XHJcbiAgICAgICAgY29uc3QgeyBsZW5ndGggfSA9IG1hdGNoZWQ7XHJcbiAgICAgICAgY29uc3Qgcm91dGVNYXRjaGVkID0gbWF0Y2hlZFtsZW5ndGggLSAxXTtcclxuICAgICAgICBjb25zdCBjdXJyZW50TWF0Y2hlZCA9IGN1cnJlbnRSb3V0ZS5tYXRjaGVkO1xyXG4gICAgICAgIGlmICghcm91dGVNYXRjaGVkIHx8ICFjdXJyZW50TWF0Y2hlZC5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRNYXRjaGVkLmZpbmRJbmRleChpc1NhbWVSb3V0ZVJlY29yZC5iaW5kKG51bGwsIHJvdXRlTWF0Y2hlZCkpO1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKVxyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgICAgLy8gcG9zc2libGUgcGFyZW50IHJlY29yZFxyXG4gICAgICAgIGNvbnN0IHBhcmVudFJlY29yZFBhdGggPSBnZXRPcmlnaW5hbFBhdGgobWF0Y2hlZFtsZW5ndGggLSAyXSk7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAvLyB3ZSBhcmUgZGVhbGluZyB3aXRoIG5lc3RlZCByb3V0ZXNcclxuICAgICAgICBsZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgIC8vIGlmIHRoZSBwYXJlbnQgYW5kIG1hdGNoZWQgcm91dGUgaGF2ZSB0aGUgc2FtZSBwYXRoLCB0aGlzIGxpbmsgaXNcclxuICAgICAgICAgICAgLy8gcmVmZXJyaW5nIHRvIHRoZSBlbXB0eSBjaGlsZC4gT3Igd2UgY3VycmVudGx5IGFyZSBvbiBhIGRpZmZlcmVudFxyXG4gICAgICAgICAgICAvLyBjaGlsZCBvZiB0aGUgc2FtZSBwYXJlbnRcclxuICAgICAgICAgICAgZ2V0T3JpZ2luYWxQYXRoKHJvdXRlTWF0Y2hlZCkgPT09IHBhcmVudFJlY29yZFBhdGggJiZcclxuICAgICAgICAgICAgLy8gYXZvaWQgY29tcGFyaW5nIHRoZSBjaGlsZCB3aXRoIGl0cyBwYXJlbnRcclxuICAgICAgICAgICAgY3VycmVudE1hdGNoZWRbY3VycmVudE1hdGNoZWQubGVuZ3RoIC0gMV0ucGF0aCAhPT0gcGFyZW50UmVjb3JkUGF0aFxyXG4gICAgICAgICAgICA/IGN1cnJlbnRNYXRjaGVkLmZpbmRJbmRleChpc1NhbWVSb3V0ZVJlY29yZC5iaW5kKG51bGwsIG1hdGNoZWRbbGVuZ3RoIC0gMl0pKVxyXG4gICAgICAgICAgICA6IGluZGV4KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgaXNBY3RpdmUgPSBjb21wdXRlZCgoKSA9PiBhY3RpdmVSZWNvcmRJbmRleC52YWx1ZSA+IC0xICYmXHJcbiAgICAgICAgaW5jbHVkZXNQYXJhbXMoY3VycmVudFJvdXRlLnBhcmFtcywgcm91dGUudmFsdWUucGFyYW1zKSk7XHJcbiAgICBjb25zdCBpc0V4YWN0QWN0aXZlID0gY29tcHV0ZWQoKCkgPT4gYWN0aXZlUmVjb3JkSW5kZXgudmFsdWUgPiAtMSAmJlxyXG4gICAgICAgIGFjdGl2ZVJlY29yZEluZGV4LnZhbHVlID09PSBjdXJyZW50Um91dGUubWF0Y2hlZC5sZW5ndGggLSAxICYmXHJcbiAgICAgICAgaXNTYW1lUm91dGVMb2NhdGlvblBhcmFtcyhjdXJyZW50Um91dGUucGFyYW1zLCByb3V0ZS52YWx1ZS5wYXJhbXMpKTtcclxuICAgIGZ1bmN0aW9uIG5hdmlnYXRlKGUgPSB7fSkge1xyXG4gICAgICAgIGlmIChndWFyZEV2ZW50KGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByb3V0ZXJbdW5yZWYocHJvcHMucmVwbGFjZSkgPyAncmVwbGFjZScgOiAncHVzaCddKHVucmVmKHByb3BzLnRvKVxyXG4gICAgICAgICAgICAvLyBhdm9pZCB1bmNhdWdodCBlcnJvcnMgYXJlIHRoZXkgYXJlIGxvZ2dlZCBhbnl3YXlcclxuICAgICAgICAgICAgKS5jYXRjaChub29wKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG4gICAgLy8gZGV2dG9vbHMgb25seVxyXG4gICAgaWYgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSAmJiBpc0Jyb3dzZXIpIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rQ29udGV4dERldnRvb2xzID0ge1xyXG4gICAgICAgICAgICAgICAgcm91dGU6IHJvdXRlLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgaXNBY3RpdmU6IGlzQWN0aXZlLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgaXNFeGFjdEFjdGl2ZTogaXNFeGFjdEFjdGl2ZS52YWx1ZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogdGhpcyBpcyBpbnRlcm5hbFxyXG4gICAgICAgICAgICBpbnN0YW5jZS5fX3ZybF9kZXZ0b29scyA9IGluc3RhbmNlLl9fdnJsX2RldnRvb2xzIHx8IFtdO1xyXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB0aGlzIGlzIGludGVybmFsXHJcbiAgICAgICAgICAgIGluc3RhbmNlLl9fdnJsX2RldnRvb2xzLnB1c2gobGlua0NvbnRleHREZXZ0b29scyk7XHJcbiAgICAgICAgICAgIHdhdGNoRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxpbmtDb250ZXh0RGV2dG9vbHMucm91dGUgPSByb3V0ZS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGxpbmtDb250ZXh0RGV2dG9vbHMuaXNBY3RpdmUgPSBpc0FjdGl2ZS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGxpbmtDb250ZXh0RGV2dG9vbHMuaXNFeGFjdEFjdGl2ZSA9IGlzRXhhY3RBY3RpdmUudmFsdWU7XHJcbiAgICAgICAgICAgIH0sIHsgZmx1c2g6ICdwb3N0JyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJvdXRlLFxyXG4gICAgICAgIGhyZWY6IGNvbXB1dGVkKCgpID0+IHJvdXRlLnZhbHVlLmhyZWYpLFxyXG4gICAgICAgIGlzQWN0aXZlLFxyXG4gICAgICAgIGlzRXhhY3RBY3RpdmUsXHJcbiAgICAgICAgbmF2aWdhdGUsXHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IFJvdXRlckxpbmtJbXBsID0gLyojX19QVVJFX18qLyBkZWZpbmVDb21wb25lbnQoe1xyXG4gICAgbmFtZTogJ1JvdXRlckxpbmsnLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICB0bzoge1xyXG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxyXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlcGxhY2U6IEJvb2xlYW4sXHJcbiAgICAgICAgYWN0aXZlQ2xhc3M6IFN0cmluZyxcclxuICAgICAgICAvLyBpbmFjdGl2ZUNsYXNzOiBTdHJpbmcsXHJcbiAgICAgICAgZXhhY3RBY3RpdmVDbGFzczogU3RyaW5nLFxyXG4gICAgICAgIGN1c3RvbTogQm9vbGVhbixcclxuICAgICAgICBhcmlhQ3VycmVudFZhbHVlOiB7XHJcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICAgICAgZGVmYXVsdDogJ3BhZ2UnLFxyXG4gICAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgdXNlTGluayxcclxuICAgIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcclxuICAgICAgICBjb25zdCBsaW5rID0gcmVhY3RpdmUodXNlTGluayhwcm9wcykpO1xyXG4gICAgICAgIGNvbnN0IHsgb3B0aW9ucyB9ID0gaW5qZWN0KHJvdXRlcktleSk7XHJcbiAgICAgICAgY29uc3QgZWxDbGFzcyA9IGNvbXB1dGVkKCgpID0+ICh7XHJcbiAgICAgICAgICAgIFtnZXRMaW5rQ2xhc3MocHJvcHMuYWN0aXZlQ2xhc3MsIG9wdGlvbnMubGlua0FjdGl2ZUNsYXNzLCAncm91dGVyLWxpbmstYWN0aXZlJyldOiBsaW5rLmlzQWN0aXZlLFxyXG4gICAgICAgICAgICAvLyBbZ2V0TGlua0NsYXNzKFxyXG4gICAgICAgICAgICAvLyAgIHByb3BzLmluYWN0aXZlQ2xhc3MsXHJcbiAgICAgICAgICAgIC8vICAgb3B0aW9ucy5saW5rSW5hY3RpdmVDbGFzcyxcclxuICAgICAgICAgICAgLy8gICAncm91dGVyLWxpbmstaW5hY3RpdmUnXHJcbiAgICAgICAgICAgIC8vICldOiAhbGluay5pc0V4YWN0QWN0aXZlLFxyXG4gICAgICAgICAgICBbZ2V0TGlua0NsYXNzKHByb3BzLmV4YWN0QWN0aXZlQ2xhc3MsIG9wdGlvbnMubGlua0V4YWN0QWN0aXZlQ2xhc3MsICdyb3V0ZXItbGluay1leGFjdC1hY3RpdmUnKV06IGxpbmsuaXNFeGFjdEFjdGl2ZSxcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0ICYmIHNsb3RzLmRlZmF1bHQobGluayk7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5jdXN0b21cclxuICAgICAgICAgICAgICAgID8gY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIDogaCgnYScsIHtcclxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1jdXJyZW50JzogbGluay5pc0V4YWN0QWN0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHMuYXJpYUN1cnJlbnRWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogbGluay5ocmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd291bGQgb3ZlcnJpZGUgdXNlciBhZGRlZCBhdHRycyBidXQgVnVlIHdpbGwgc3RpbGwgYWRkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGxpc3RlbmVyIHNvIHdlIGVuZCB1cCB0cmlnZ2VyaW5nIGJvdGhcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBsaW5rLm5hdmlnYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlbENsYXNzLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW4pO1xyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG59KTtcclxuLy8gZXhwb3J0IHRoZSBwdWJsaWMgdHlwZSBmb3IgaC90c3ggaW5mZXJlbmNlXHJcbi8vIGFsc28gdG8gYXZvaWQgaW5saW5lIGltcG9ydCgpIGluIGdlbmVyYXRlZCBkLnRzIGZpbGVzXHJcbi8qKlxyXG4gKiBDb21wb25lbnQgdG8gcmVuZGVyIGEgbGluayB0aGF0IHRyaWdnZXJzIGEgbmF2aWdhdGlvbiBvbiBjbGljay5cclxuICovXHJcbmNvbnN0IFJvdXRlckxpbmsgPSBSb3V0ZXJMaW5rSW1wbDtcclxuZnVuY3Rpb24gZ3VhcmRFdmVudChlKSB7XHJcbiAgICAvLyBkb24ndCByZWRpcmVjdCB3aXRoIGNvbnRyb2wga2V5c1xyXG4gICAgaWYgKGUubWV0YUtleSB8fCBlLmFsdEtleSB8fCBlLmN0cmxLZXkgfHwgZS5zaGlmdEtleSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAvLyBkb24ndCByZWRpcmVjdCB3aGVuIHByZXZlbnREZWZhdWx0IGNhbGxlZFxyXG4gICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAvLyBkb24ndCByZWRpcmVjdCBvbiByaWdodCBjbGlja1xyXG4gICAgaWYgKGUuYnV0dG9uICE9PSB1bmRlZmluZWQgJiYgZS5idXR0b24gIT09IDApXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgLy8gZG9uJ3QgcmVkaXJlY3QgaWYgYHRhcmdldD1cIl9ibGFua1wiYFxyXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBnZXRBdHRyaWJ1dGUgZG9lcyBleGlzdFxyXG4gICAgaWYgKGUuY3VycmVudFRhcmdldCAmJiBlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKSB7XHJcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBnZXRBdHRyaWJ1dGUgZXhpc3RzXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgndGFyZ2V0Jyk7XHJcbiAgICAgICAgaWYgKC9cXGJfYmxhbmtcXGIvaS50ZXN0KHRhcmdldCkpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHRoaXMgbWF5IGJlIGEgV2VleCBldmVudCB3aGljaCBkb2Vzbid0IGhhdmUgdGhpcyBtZXRob2RcclxuICAgIGlmIChlLnByZXZlbnREZWZhdWx0KVxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIGluY2x1ZGVzUGFyYW1zKG91dGVyLCBpbm5lcikge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5uZXIpIHtcclxuICAgICAgICBjb25zdCBpbm5lclZhbHVlID0gaW5uZXJba2V5XTtcclxuICAgICAgICBjb25zdCBvdXRlclZhbHVlID0gb3V0ZXJba2V5XTtcclxuICAgICAgICBpZiAodHlwZW9mIGlubmVyVmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbm5lclZhbHVlICE9PSBvdXRlclZhbHVlKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG91dGVyVmFsdWUpIHx8XHJcbiAgICAgICAgICAgICAgICBvdXRlclZhbHVlLmxlbmd0aCAhPT0gaW5uZXJWYWx1ZS5sZW5ndGggfHxcclxuICAgICAgICAgICAgICAgIGlubmVyVmFsdWUuc29tZSgodmFsdWUsIGkpID0+IHZhbHVlICE9PSBvdXRlclZhbHVlW2ldKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogR2V0IHRoZSBvcmlnaW5hbCBwYXRoIHZhbHVlIG9mIGEgcmVjb3JkIGJ5IGZvbGxvd2luZyBpdHMgYWxpYXNPZlxyXG4gKiBAcGFyYW0gcmVjb3JkXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRPcmlnaW5hbFBhdGgocmVjb3JkKSB7XHJcbiAgICByZXR1cm4gcmVjb3JkID8gKHJlY29yZC5hbGlhc09mID8gcmVjb3JkLmFsaWFzT2YucGF0aCA6IHJlY29yZC5wYXRoKSA6ICcnO1xyXG59XHJcbi8qKlxyXG4gKiBVdGlsaXR5IGNsYXNzIHRvIGdldCB0aGUgYWN0aXZlIGNsYXNzIGJhc2VkIG9uIGRlZmF1bHRzLlxyXG4gKiBAcGFyYW0gcHJvcENsYXNzXHJcbiAqIEBwYXJhbSBnbG9iYWxDbGFzc1xyXG4gKiBAcGFyYW0gZGVmYXVsdENsYXNzXHJcbiAqL1xyXG5jb25zdCBnZXRMaW5rQ2xhc3MgPSAocHJvcENsYXNzLCBnbG9iYWxDbGFzcywgZGVmYXVsdENsYXNzKSA9PiBwcm9wQ2xhc3MgIT0gbnVsbFxyXG4gICAgPyBwcm9wQ2xhc3NcclxuICAgIDogZ2xvYmFsQ2xhc3MgIT0gbnVsbFxyXG4gICAgICAgID8gZ2xvYmFsQ2xhc3NcclxuICAgICAgICA6IGRlZmF1bHRDbGFzcztcblxuY29uc3QgUm91dGVyVmlld0ltcGwgPSAvKiNfX1BVUkVfXyovIGRlZmluZUNvbXBvbmVudCh7XHJcbiAgICBuYW1lOiAnUm91dGVyVmlldycsXHJcbiAgICAvLyAjNjc0IHdlIG1hbnVhbGx5IGluaGVyaXQgdGhlbVxyXG4gICAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgbmFtZToge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdkZWZhdWx0JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJvdXRlOiBPYmplY3QsXHJcbiAgICB9LFxyXG4gICAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybkRlcHJlY2F0ZWRVc2FnZSgpO1xyXG4gICAgICAgIGNvbnN0IGluamVjdGVkUm91dGUgPSBpbmplY3Qocm91dGVyVmlld0xvY2F0aW9uS2V5KTtcclxuICAgICAgICBjb25zdCByb3V0ZVRvRGlzcGxheSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnJvdXRlIHx8IGluamVjdGVkUm91dGUudmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IGRlcHRoID0gaW5qZWN0KHZpZXdEZXB0aEtleSwgMCk7XHJcbiAgICAgICAgY29uc3QgbWF0Y2hlZFJvdXRlUmVmID0gY29tcHV0ZWQoKCkgPT4gcm91dGVUb0Rpc3BsYXkudmFsdWUubWF0Y2hlZFtkZXB0aF0pO1xyXG4gICAgICAgIHByb3ZpZGUodmlld0RlcHRoS2V5LCBkZXB0aCArIDEpO1xyXG4gICAgICAgIHByb3ZpZGUobWF0Y2hlZFJvdXRlS2V5LCBtYXRjaGVkUm91dGVSZWYpO1xyXG4gICAgICAgIHByb3ZpZGUocm91dGVyVmlld0xvY2F0aW9uS2V5LCByb3V0ZVRvRGlzcGxheSk7XHJcbiAgICAgICAgY29uc3Qgdmlld1JlZiA9IHJlZigpO1xyXG4gICAgICAgIC8vIHdhdGNoIGF0IHRoZSBzYW1lIHRpbWUgdGhlIGNvbXBvbmVudCBpbnN0YW5jZSwgdGhlIHJvdXRlIHJlY29yZCB3ZSBhcmVcclxuICAgICAgICAvLyByZW5kZXJpbmcsIGFuZCB0aGUgbmFtZVxyXG4gICAgICAgIHdhdGNoKCgpID0+IFt2aWV3UmVmLnZhbHVlLCBtYXRjaGVkUm91dGVSZWYudmFsdWUsIHByb3BzLm5hbWVdLCAoW2luc3RhbmNlLCB0bywgbmFtZV0sIFtvbGRJbnN0YW5jZSwgZnJvbSwgb2xkTmFtZV0pID0+IHtcclxuICAgICAgICAgICAgLy8gY29weSByZXVzZWQgaW5zdGFuY2VzXHJcbiAgICAgICAgICAgIGlmICh0bykge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyB3aWxsIHVwZGF0ZSB0aGUgaW5zdGFuY2UgZm9yIG5ldyBpbnN0YW5jZXMgYXMgd2VsbCBhcyByZXVzZWRcclxuICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlcyB3aGVuIG5hdmlnYXRpbmcgdG8gYSBuZXcgcm91dGVcclxuICAgICAgICAgICAgICAgIHRvLmluc3RhbmNlc1tuYW1lXSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZSBpcyByZXVzZWQgZm9yIGEgZGlmZmVyZW50IHJvdXRlIG9yIG5hbWUgc29cclxuICAgICAgICAgICAgICAgIC8vIHdlIGNvcHkgYW55IHNhdmVkIHVwZGF0ZSBvciBsZWF2ZSBndWFyZHMuIFdpdGggYXN5bmMgc2V0dXAsIHRoZVxyXG4gICAgICAgICAgICAgICAgLy8gbW91bnRpbmcgY29tcG9uZW50IHdpbGwgbW91bnQgYmVmb3JlIHRoZSBtYXRjaGVkUm91dGUgY2hhbmdlcyxcclxuICAgICAgICAgICAgICAgIC8vIG1ha2luZyBpbnN0YW5jZSA9PT0gb2xkSW5zdGFuY2UsIHNvIHdlIGNoZWNrIGlmIGd1YXJkcyBoYXZlIGJlZW5cclxuICAgICAgICAgICAgICAgIC8vIGFkZGVkIGJlZm9yZS4gVGhpcyB3b3JrcyBiZWNhdXNlIHdlIHJlbW92ZSBndWFyZHMgd2hlblxyXG4gICAgICAgICAgICAgICAgLy8gdW5tb3VudGluZy9kZWFjdGl2YXRpbmcgY29tcG9uZW50c1xyXG4gICAgICAgICAgICAgICAgaWYgKGZyb20gJiYgZnJvbSAhPT0gdG8gJiYgaW5zdGFuY2UgJiYgaW5zdGFuY2UgPT09IG9sZEluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0by5sZWF2ZUd1YXJkcy5zaXplKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvLmxlYXZlR3VhcmRzID0gZnJvbS5sZWF2ZUd1YXJkcztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0by51cGRhdGVHdWFyZHMuc2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0by51cGRhdGVHdWFyZHMgPSBmcm9tLnVwZGF0ZUd1YXJkcztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdHJpZ2dlciBiZWZvcmVSb3V0ZUVudGVyIG5leHQgY2FsbGJhY2tzXHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSAmJlxyXG4gICAgICAgICAgICAgICAgdG8gJiZcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGluc3RhbmNlIGJ1dCB0byBhbmQgZnJvbSBhcmUgdGhlIHNhbWUgdGhpcyBtaWdodCBiZVxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHZpc2l0XHJcbiAgICAgICAgICAgICAgICAoIWZyb20gfHwgIWlzU2FtZVJvdXRlUmVjb3JkKHRvLCBmcm9tKSB8fCAhb2xkSW5zdGFuY2UpKSB7XHJcbiAgICAgICAgICAgICAgICAodG8uZW50ZXJDYWxsYmFja3NbbmFtZV0gfHwgW10pLmZvckVhY2goY2FsbGJhY2sgPT4gY2FsbGJhY2soaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHsgZmx1c2g6ICdwb3N0JyB9KTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IHJvdXRlVG9EaXNwbGF5LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkUm91dGUgPSBtYXRjaGVkUm91dGVSZWYudmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IFZpZXdDb21wb25lbnQgPSBtYXRjaGVkUm91dGUgJiYgbWF0Y2hlZFJvdXRlLmNvbXBvbmVudHNbcHJvcHMubmFtZV07XHJcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdGhlIHZhbHVlIGF0IHRoZSB0aW1lIHdlIHJlbmRlciBiZWNhdXNlIHdoZW4gd2UgdW5tb3VudCwgd2VcclxuICAgICAgICAgICAgLy8gbmF2aWdhdGVkIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uIHNvIHRoZSB2YWx1ZSBpcyBkaWZmZXJlbnRcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudE5hbWUgPSBwcm9wcy5uYW1lO1xyXG4gICAgICAgICAgICBpZiAoIVZpZXdDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVTbG90KHNsb3RzLmRlZmF1bHQsIHsgQ29tcG9uZW50OiBWaWV3Q29tcG9uZW50LCByb3V0ZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcm9wcyBmcm9tIHJvdXRlIGNvbmZpZ3VyYXRpb25cclxuICAgICAgICAgICAgY29uc3Qgcm91dGVQcm9wc09wdGlvbiA9IG1hdGNoZWRSb3V0ZS5wcm9wc1twcm9wcy5uYW1lXTtcclxuICAgICAgICAgICAgY29uc3Qgcm91dGVQcm9wcyA9IHJvdXRlUHJvcHNPcHRpb25cclxuICAgICAgICAgICAgICAgID8gcm91dGVQcm9wc09wdGlvbiA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgID8gcm91dGUucGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2Ygcm91dGVQcm9wc09wdGlvbiA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJvdXRlUHJvcHNPcHRpb24ocm91dGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcm91dGVQcm9wc09wdGlvblxyXG4gICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICBjb25zdCBvblZub2RlVW5tb3VudGVkID0gdm5vZGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBpbnN0YW5jZSByZWZlcmVuY2UgdG8gcHJldmVudCBsZWFrXHJcbiAgICAgICAgICAgICAgICBpZiAodm5vZGUuY29tcG9uZW50LmlzVW5tb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFJvdXRlLmluc3RhbmNlc1tjdXJyZW50TmFtZV0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBoKFZpZXdDb21wb25lbnQsIGFzc2lnbih7fSwgcm91dGVQcm9wcywgYXR0cnMsIHtcclxuICAgICAgICAgICAgICAgIG9uVm5vZGVVbm1vdW50ZWQsXHJcbiAgICAgICAgICAgICAgICByZWY6IHZpZXdSZWYsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgaWYgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNCcm93c2VyICYmXHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQucmVmKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBjYW4gZGlzcGxheSBpZiBpdCdzIGFuIGFsaWFzLCBpdHMgcHJvcHNcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbWF0Y2hlZFJvdXRlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogbWF0Y2hlZFJvdXRlLnBhdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgbWV0YTogbWF0Y2hlZFJvdXRlLm1ldGEsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWxJbnN0YW5jZXMgPSBBcnJheS5pc0FycmF5KGNvbXBvbmVudC5yZWYpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjb21wb25lbnQucmVmLm1hcChyID0+IHIuaSlcclxuICAgICAgICAgICAgICAgICAgICA6IFtjb21wb25lbnQucmVmLmldO1xyXG4gICAgICAgICAgICAgICAgaW50ZXJuYWxJbnN0YW5jZXMuZm9yRWFjaChpbnN0YW5jZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLl9fdnJ2X2RldnRvb2xzID0gaW5mbztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIC8vIHBhc3MgdGhlIHZub2RlIHRvIHRoZSBzbG90IGFzIGEgcHJvcC5cclxuICAgICAgICAgICAgLy8gaCBhbmQgPGNvbXBvbmVudCA6aXM9XCIuLi5cIj4gYm90aCBhY2NlcHQgdm5vZGVzXHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZVNsb3Qoc2xvdHMuZGVmYXVsdCwgeyBDb21wb25lbnQ6IGNvbXBvbmVudCwgcm91dGUgfSkgfHxcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbn0pO1xyXG5mdW5jdGlvbiBub3JtYWxpemVTbG90KHNsb3QsIGRhdGEpIHtcclxuICAgIGlmICghc2xvdClcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IHNsb3RDb250ZW50ID0gc2xvdChkYXRhKTtcclxuICAgIHJldHVybiBzbG90Q29udGVudC5sZW5ndGggPT09IDEgPyBzbG90Q29udGVudFswXSA6IHNsb3RDb250ZW50O1xyXG59XHJcbi8vIGV4cG9ydCB0aGUgcHVibGljIHR5cGUgZm9yIGgvdHN4IGluZmVyZW5jZVxyXG4vLyBhbHNvIHRvIGF2b2lkIGlubGluZSBpbXBvcnQoKSBpbiBnZW5lcmF0ZWQgZC50cyBmaWxlc1xyXG4vKipcclxuICogQ29tcG9uZW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnQgcm91dGUgdGhlIHVzZXIgaXMgYXQuXHJcbiAqL1xyXG5jb25zdCBSb3V0ZXJWaWV3ID0gUm91dGVyVmlld0ltcGw7XHJcbi8vIHdhcm4gYWdhaW5zdCBkZXByZWNhdGVkIHVzYWdlIHdpdGggPHRyYW5zaXRpb24+ICYgPGtlZXAtYWxpdmU+XHJcbi8vIGR1ZSB0byBmdW5jdGlvbmFsIGNvbXBvbmVudCBiZWluZyBubyBsb25nZXIgZWFnZXIgaW4gVnVlIDNcclxuZnVuY3Rpb24gd2FybkRlcHJlY2F0ZWRVc2FnZSgpIHtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICBjb25zdCBwYXJlbnROYW1lID0gaW5zdGFuY2UucGFyZW50ICYmIGluc3RhbmNlLnBhcmVudC50eXBlLm5hbWU7XHJcbiAgICBpZiAocGFyZW50TmFtZSAmJlxyXG4gICAgICAgIChwYXJlbnROYW1lID09PSAnS2VlcEFsaXZlJyB8fCBwYXJlbnROYW1lLmluY2x1ZGVzKCdUcmFuc2l0aW9uJykpKSB7XHJcbiAgICAgICAgY29uc3QgY29tcCA9IHBhcmVudE5hbWUgPT09ICdLZWVwQWxpdmUnID8gJ2tlZXAtYWxpdmUnIDogJ3RyYW5zaXRpb24nO1xyXG4gICAgICAgIHdhcm4oYDxyb3V0ZXItdmlldz4gY2FuIG5vIGxvbmdlciBiZSB1c2VkIGRpcmVjdGx5IGluc2lkZSA8dHJhbnNpdGlvbj4gb3IgPGtlZXAtYWxpdmU+LlxcbmAgK1xyXG4gICAgICAgICAgICBgVXNlIHNsb3QgcHJvcHMgaW5zdGVhZDpcXG5cXG5gICtcclxuICAgICAgICAgICAgYDxyb3V0ZXItdmlldyB2LXNsb3Q9XCJ7IENvbXBvbmVudCB9XCI+XFxuYCArXHJcbiAgICAgICAgICAgIGAgIDwke2NvbXB9PlxcbmAgK1xyXG4gICAgICAgICAgICBgICAgIDxjb21wb25lbnQgOmlzPVwiQ29tcG9uZW50XCIgLz5cXG5gICtcclxuICAgICAgICAgICAgYCAgPC8ke2NvbXB9PlxcbmAgK1xyXG4gICAgICAgICAgICBgPC9yb3V0ZXItdmlldz5gKTtcclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiBmb3JtYXRSb3V0ZUxvY2F0aW9uKHJvdXRlTG9jYXRpb24sIHRvb2x0aXApIHtcclxuICAgIGNvbnN0IGNvcHkgPSBhc3NpZ24oe30sIHJvdXRlTG9jYXRpb24sIHtcclxuICAgICAgICAvLyByZW1vdmUgdmFyaWFibGVzIHRoYXQgY2FuIGNvbnRhaW4gdnVlIGluc3RhbmNlc1xyXG4gICAgICAgIG1hdGNoZWQ6IHJvdXRlTG9jYXRpb24ubWF0Y2hlZC5tYXAobWF0Y2hlZCA9PiBvbWl0KG1hdGNoZWQsIFsnaW5zdGFuY2VzJywgJ2NoaWxkcmVuJywgJ2FsaWFzT2YnXSkpLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIF9jdXN0b206IHtcclxuICAgICAgICAgICAgdHlwZTogbnVsbCxcclxuICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgIGRpc3BsYXk6IHJvdXRlTG9jYXRpb24uZnVsbFBhdGgsXHJcbiAgICAgICAgICAgIHRvb2x0aXAsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb3B5LFxyXG4gICAgICAgIH0sXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGZvcm1hdERpc3BsYXkoZGlzcGxheSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBfY3VzdG9tOiB7XHJcbiAgICAgICAgICAgIGRpc3BsYXksXHJcbiAgICAgICAgfSxcclxuICAgIH07XHJcbn1cclxuLy8gdG8gc3VwcG9ydCBtdWx0aXBsZSByb3V0ZXIgaW5zdGFuY2VzXHJcbmxldCByb3V0ZXJJZCA9IDA7XHJcbmZ1bmN0aW9uIGFkZERldnRvb2xzKGFwcCwgcm91dGVyLCBtYXRjaGVyKSB7XHJcbiAgICAvLyBUYWtlIG92ZXIgcm91dGVyLmJlZm9yZUVhY2ggYW5kIGFmdGVyRWFjaFxyXG4gICAgLy8gbWFrZSBzdXJlIHdlIGFyZSBub3QgcmVnaXN0ZXJpbmcgdGhlIGRldnRvb2wgdHdpY2VcclxuICAgIGlmIChyb3V0ZXIuX19oYXNEZXZ0b29scylcclxuICAgICAgICByZXR1cm47XHJcbiAgICByb3V0ZXIuX19oYXNEZXZ0b29scyA9IHRydWU7XHJcbiAgICAvLyBpbmNyZW1lbnQgdG8gc3VwcG9ydCBtdWx0aXBsZSByb3V0ZXIgaW5zdGFuY2VzXHJcbiAgICBjb25zdCBpZCA9IHJvdXRlcklkKys7XHJcbiAgICBzZXR1cERldnRvb2xzUGx1Z2luKHtcclxuICAgICAgICBpZDogJ29yZy52dWVqcy5yb3V0ZXInICsgKGlkID8gJy4nICsgaWQgOiAnJyksXHJcbiAgICAgICAgbGFiZWw6ICdWdWUgUm91dGVyJyxcclxuICAgICAgICBwYWNrYWdlTmFtZTogJ3Z1ZS1yb3V0ZXInLFxyXG4gICAgICAgIGhvbWVwYWdlOiAnaHR0cHM6Ly9yb3V0ZXIudnVlanMub3JnJyxcclxuICAgICAgICBsb2dvOiAnaHR0cHM6Ly9yb3V0ZXIudnVlanMub3JnL2xvZ28ucG5nJyxcclxuICAgICAgICBjb21wb25lbnRTdGF0ZVR5cGVzOiBbJ1JvdXRpbmcnXSxcclxuICAgICAgICBhcHAsXHJcbiAgICB9LCBhcGkgPT4ge1xyXG4gICAgICAgIC8vIGRpc3BsYXkgc3RhdGUgYWRkZWQgYnkgdGhlIHJvdXRlclxyXG4gICAgICAgIGFwaS5vbi5pbnNwZWN0Q29tcG9uZW50KChwYXlsb2FkLCBjdHgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHBheWxvYWQuaW5zdGFuY2VEYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmluc3RhbmNlRGF0YS5zdGF0ZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUm91dGluZycsXHJcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnJHJvdXRlJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdFJvdXRlTG9jYXRpb24ocm91dGVyLmN1cnJlbnRSb3V0ZS52YWx1ZSwgJ0N1cnJlbnQgUm91dGUnKSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gbWFyayByb3V0ZXItbGluayBhcyBhY3RpdmUgYW5kIGRpc3BsYXkgdGFncyBvbiByb3V0ZXIgdmlld3NcclxuICAgICAgICBhcGkub24udmlzaXRDb21wb25lbnRUcmVlKCh7IHRyZWVOb2RlOiBub2RlLCBjb21wb25lbnRJbnN0YW5jZSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb21wb25lbnRJbnN0YW5jZS5fX3Zydl9kZXZ0b29scykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5mbyA9IGNvbXBvbmVudEluc3RhbmNlLl9fdnJ2X2RldnRvb2xzO1xyXG4gICAgICAgICAgICAgICAgbm9kZS50YWdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAoaW5mby5uYW1lID8gYCR7aW5mby5uYW1lLnRvU3RyaW5nKCl9OiBgIDogJycpICsgaW5mby5wYXRoLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcjogMCxcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAnVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgYnkgJmx0O3JvdXRlci12aWV3Jmd0OycsXHJcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBQSU5LXzUwMCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGlmIG11bHRpcGxlIHVzZUxpbmsgYXJlIHVzZWRcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50SW5zdGFuY2UuX192cmxfZGV2dG9vbHMpKSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnRJbnN0YW5jZS5fX2RldnRvb2xzQXBpID0gYXBpO1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50SW5zdGFuY2UuX192cmxfZGV2dG9vbHMuZm9yRWFjaChkZXZ0b29sc0RhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSBPUkFOR0VfNDAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0b29sdGlwID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRldnRvb2xzRGF0YS5pc0V4YWN0QWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IExJTUVfNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwID0gJ1RoaXMgaXMgZXhhY3RseSBhY3RpdmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkZXZ0b29sc0RhdGEuaXNBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQkxVRV82MDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXAgPSAnVGhpcyBsaW5rIGlzIGFjdGl2ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUudGFncy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGRldnRvb2xzRGF0YS5yb3V0ZS5wYXRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgd2F0Y2gocm91dGVyLmN1cnJlbnRSb3V0ZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyByZWZyZXNoIGFjdGl2ZSBzdGF0ZVxyXG4gICAgICAgICAgICByZWZyZXNoUm91dGVzVmlldygpO1xyXG4gICAgICAgICAgICBhcGkubm90aWZ5Q29tcG9uZW50VXBkYXRlKCk7XHJcbiAgICAgICAgICAgIGFwaS5zZW5kSW5zcGVjdG9yVHJlZShyb3V0ZXJJbnNwZWN0b3JJZCk7XHJcbiAgICAgICAgICAgIGFwaS5zZW5kSW5zcGVjdG9yU3RhdGUocm91dGVySW5zcGVjdG9ySWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25zTGF5ZXJJZCA9ICdyb3V0ZXI6bmF2aWdhdGlvbnM6JyArIGlkO1xyXG4gICAgICAgIGFwaS5hZGRUaW1lbGluZUxheWVyKHtcclxuICAgICAgICAgICAgaWQ6IG5hdmlnYXRpb25zTGF5ZXJJZCxcclxuICAgICAgICAgICAgbGFiZWw6IGBSb3V0ZXIke2lkID8gJyAnICsgaWQgOiAnJ30gTmF2aWdhdGlvbnNgLFxyXG4gICAgICAgICAgICBjb2xvcjogMHg0MGE4YzQsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gY29uc3QgZXJyb3JzTGF5ZXJJZCA9ICdyb3V0ZXI6ZXJyb3JzJ1xyXG4gICAgICAgIC8vIGFwaS5hZGRUaW1lbGluZUxheWVyKHtcclxuICAgICAgICAvLyAgIGlkOiBlcnJvcnNMYXllcklkLFxyXG4gICAgICAgIC8vICAgbGFiZWw6ICdSb3V0ZXIgRXJyb3JzJyxcclxuICAgICAgICAvLyAgIGNvbG9yOiAweGVhNTQ1NSxcclxuICAgICAgICAvLyB9KVxyXG4gICAgICAgIHJvdXRlci5vbkVycm9yKChlcnJvciwgdG8pID0+IHtcclxuICAgICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xyXG4gICAgICAgICAgICAgICAgbGF5ZXJJZDogbmF2aWdhdGlvbnNMYXllcklkLFxyXG4gICAgICAgICAgICAgICAgZXZlbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0Vycm9yIGR1cmluZyBOYXZpZ2F0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdG8uZnVsbFBhdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgbG9nVHlwZTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgICB0aW1lOiBhcGkubm93KCksXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBlcnJvciB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwSWQ6IHRvLm1ldGEuX19uYXZpZ2F0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBhdHRhY2hlZCB0byBgbWV0YWAgYW5kIHVzZWQgdG8gZ3JvdXAgZXZlbnRzXHJcbiAgICAgICAgbGV0IG5hdmlnYXRpb25JZCA9IDA7XHJcbiAgICAgICAgcm91dGVyLmJlZm9yZUVhY2goKHRvLCBmcm9tKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBndWFyZDogZm9ybWF0RGlzcGxheSgnYmVmb3JlRWFjaCcpLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogZm9ybWF0Um91dGVMb2NhdGlvbihmcm9tLCAnQ3VycmVudCBMb2NhdGlvbiBkdXJpbmcgdGhpcyBuYXZpZ2F0aW9uJyksXHJcbiAgICAgICAgICAgICAgICB0bzogZm9ybWF0Um91dGVMb2NhdGlvbih0bywgJ1RhcmdldCBsb2NhdGlvbicpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvLyBVc2VkIHRvIGdyb3VwIG5hdmlnYXRpb25zIHRvZ2V0aGVyLCBoaWRlIGZyb20gZGV2dG9vbHNcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRvLm1ldGEsICdfX25hdmlnYXRpb25JZCcsIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBuYXZpZ2F0aW9uSWQrKyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcclxuICAgICAgICAgICAgICAgIGxheWVySWQ6IG5hdmlnYXRpb25zTGF5ZXJJZCxcclxuICAgICAgICAgICAgICAgIGV2ZW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGltZTogYXBpLm5vdygpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnU3RhcnQgb2YgbmF2aWdhdGlvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHRvLmZ1bGxQYXRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZDogdG8ubWV0YS5fX25hdmlnYXRpb25JZCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvdXRlci5hZnRlckVhY2goKHRvLCBmcm9tLCBmYWlsdXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBndWFyZDogZm9ybWF0RGlzcGxheSgnYWZ0ZXJFYWNoJyksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChmYWlsdXJlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmZhaWx1cmUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2N1c3RvbToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBFcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZhaWx1cmUgPyBmYWlsdXJlLm1lc3NhZ2UgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogJ05hdmlnYXRpb24gRmFpbHVyZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmYWlsdXJlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSBmb3JtYXREaXNwbGF5KCfinYwnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gZm9ybWF0RGlzcGxheSgn4pyFJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gd2Ugc2V0IGhlcmUgdG8gaGF2ZSB0aGUgcmlnaHQgb3JkZXJcclxuICAgICAgICAgICAgZGF0YS5mcm9tID0gZm9ybWF0Um91dGVMb2NhdGlvbihmcm9tLCAnQ3VycmVudCBMb2NhdGlvbiBkdXJpbmcgdGhpcyBuYXZpZ2F0aW9uJyk7XHJcbiAgICAgICAgICAgIGRhdGEudG8gPSBmb3JtYXRSb3V0ZUxvY2F0aW9uKHRvLCAnVGFyZ2V0IGxvY2F0aW9uJyk7XHJcbiAgICAgICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcclxuICAgICAgICAgICAgICAgIGxheWVySWQ6IG5hdmlnYXRpb25zTGF5ZXJJZCxcclxuICAgICAgICAgICAgICAgIGV2ZW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdFbmQgb2YgbmF2aWdhdGlvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHRvLmZ1bGxQYXRoLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbWU6IGFwaS5ub3coKSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIGxvZ1R5cGU6IGZhaWx1cmUgPyAnd2FybmluZycgOiAnZGVmYXVsdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZDogdG8ubWV0YS5fX25hdmlnYXRpb25JZCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEluc3BlY3RvciBvZiBFeGlzdGluZyByb3V0ZXNcclxuICAgICAgICAgKi9cclxuICAgICAgICBjb25zdCByb3V0ZXJJbnNwZWN0b3JJZCA9ICdyb3V0ZXItaW5zcGVjdG9yOicgKyBpZDtcclxuICAgICAgICBhcGkuYWRkSW5zcGVjdG9yKHtcclxuICAgICAgICAgICAgaWQ6IHJvdXRlckluc3BlY3RvcklkLFxyXG4gICAgICAgICAgICBsYWJlbDogJ1JvdXRlcycgKyAoaWQgPyAnICcgKyBpZCA6ICcnKSxcclxuICAgICAgICAgICAgaWNvbjogJ2Jvb2snLFxyXG4gICAgICAgICAgICB0cmVlRmlsdGVyUGxhY2Vob2xkZXI6ICdTZWFyY2ggcm91dGVzJyxcclxuICAgICAgICB9KTtcclxuICAgICAgICBmdW5jdGlvbiByZWZyZXNoUm91dGVzVmlldygpIHtcclxuICAgICAgICAgICAgLy8gdGhlIHJvdXRlcyB2aWV3IGlzbid0IGFjdGl2ZVxyXG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVJvdXRlc1BheWxvYWQpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhY3RpdmVSb3V0ZXNQYXlsb2FkO1xyXG4gICAgICAgICAgICAvLyBjaGlsZHJlbiByb3V0ZXMgd2lsbCBhcHBlYXIgYXMgbmVzdGVkXHJcbiAgICAgICAgICAgIGxldCByb3V0ZXMgPSBtYXRjaGVyLmdldFJvdXRlcygpLmZpbHRlcihyb3V0ZSA9PiAhcm91dGUucGFyZW50KTtcclxuICAgICAgICAgICAgLy8gcmVzZXQgbWF0Y2ggc3RhdGUgdG8gZmFsc2VcclxuICAgICAgICAgICAgcm91dGVzLmZvckVhY2gocmVzZXRNYXRjaFN0YXRlT25Sb3V0ZVJlY29yZCk7XHJcbiAgICAgICAgICAgIC8vIGFwcGx5IGEgbWF0Y2ggc3RhdGUgaWYgdGhlcmUgaXMgYSBwYXlsb2FkXHJcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgcm91dGVzID0gcm91dGVzLmZpbHRlcihyb3V0ZSA9PiBcclxuICAgICAgICAgICAgICAgIC8vIHNhdmUgbWF0Y2hlcyBzdGF0ZSBiYXNlZCBvbiB0aGUgcGF5bG9hZFxyXG4gICAgICAgICAgICAgICAgaXNSb3V0ZU1hdGNoaW5nKHJvdXRlLCBwYXlsb2FkLmZpbHRlci50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbWFyayBhY3RpdmUgcm91dGVzXHJcbiAgICAgICAgICAgIHJvdXRlcy5mb3JFYWNoKHJvdXRlID0+IG1hcmtSb3V0ZVJlY29yZEFjdGl2ZShyb3V0ZSwgcm91dGVyLmN1cnJlbnRSb3V0ZS52YWx1ZSkpO1xyXG4gICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IHJvdXRlcy5tYXAoZm9ybWF0Um91dGVSZWNvcmRGb3JJbnNwZWN0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYWN0aXZlUm91dGVzUGF5bG9hZDtcclxuICAgICAgICBhcGkub24uZ2V0SW5zcGVjdG9yVHJlZShwYXlsb2FkID0+IHtcclxuICAgICAgICAgICAgYWN0aXZlUm91dGVzUGF5bG9hZCA9IHBheWxvYWQ7XHJcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmFwcCA9PT0gYXBwICYmIHBheWxvYWQuaW5zcGVjdG9ySWQgPT09IHJvdXRlckluc3BlY3RvcklkKSB7XHJcbiAgICAgICAgICAgICAgICByZWZyZXNoUm91dGVzVmlldygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogRGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHJvdXRlIHJlY29yZFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGFwaS5vbi5nZXRJbnNwZWN0b3JTdGF0ZShwYXlsb2FkID0+IHtcclxuICAgICAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiYgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gcm91dGVySW5zcGVjdG9ySWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlcyA9IG1hdGNoZXIuZ2V0Um91dGVzKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZSA9IHJvdXRlcy5maW5kKHJvdXRlID0+IHJvdXRlLnJlY29yZC5fX3ZkX2lkID09PSBwYXlsb2FkLm5vZGVJZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocm91dGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnN0YXRlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBmb3JtYXRSb3V0ZVJlY29yZE1hdGNoZXJGb3JTdGF0ZUluc3BlY3Rvcihyb3V0ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGFwaS5zZW5kSW5zcGVjdG9yVHJlZShyb3V0ZXJJbnNwZWN0b3JJZCk7XHJcbiAgICAgICAgYXBpLnNlbmRJbnNwZWN0b3JTdGF0ZShyb3V0ZXJJbnNwZWN0b3JJZCk7XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBtb2RpZmllckZvcktleShrZXkpIHtcclxuICAgIGlmIChrZXkub3B0aW9uYWwpIHtcclxuICAgICAgICByZXR1cm4ga2V5LnJlcGVhdGFibGUgPyAnKicgOiAnPyc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4ga2V5LnJlcGVhdGFibGUgPyAnKycgOiAnJztcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBmb3JtYXRSb3V0ZVJlY29yZE1hdGNoZXJGb3JTdGF0ZUluc3BlY3Rvcihyb3V0ZSkge1xyXG4gICAgY29uc3QgeyByZWNvcmQgfSA9IHJvdXRlO1xyXG4gICAgY29uc3QgZmllbGRzID0gW1xyXG4gICAgICAgIHsgZWRpdGFibGU6IGZhbHNlLCBrZXk6ICdwYXRoJywgdmFsdWU6IHJlY29yZC5wYXRoIH0sXHJcbiAgICBdO1xyXG4gICAgaWYgKHJlY29yZC5uYW1lICE9IG51bGwpIHtcclxuICAgICAgICBmaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAga2V5OiAnbmFtZScsXHJcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQubmFtZSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGZpZWxkcy5wdXNoKHsgZWRpdGFibGU6IGZhbHNlLCBrZXk6ICdyZWdleHAnLCB2YWx1ZTogcm91dGUucmUgfSk7XHJcbiAgICBpZiAocm91dGUua2V5cy5sZW5ndGgpIHtcclxuICAgICAgICBmaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAga2V5OiAna2V5cycsXHJcbiAgICAgICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICAgICAgICBfY3VzdG9tOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiByb3V0ZS5rZXlzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoa2V5ID0+IGAke2tleS5uYW1lfSR7bW9kaWZpZXJGb3JLZXkoa2V5KX1gKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdQYXJhbSBrZXlzJyxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcm91dGUua2V5cyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAocmVjb3JkLnJlZGlyZWN0ICE9IG51bGwpIHtcclxuICAgICAgICBmaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAga2V5OiAncmVkaXJlY3QnLFxyXG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLnJlZGlyZWN0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvdXRlLmFsaWFzLmxlbmd0aCkge1xyXG4gICAgICAgIGZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBrZXk6ICdhbGlhc2VzJyxcclxuICAgICAgICAgICAgdmFsdWU6IHJvdXRlLmFsaWFzLm1hcChhbGlhcyA9PiBhbGlhcy5yZWNvcmQucGF0aCksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmaWVsZHMucHVzaCh7XHJcbiAgICAgICAga2V5OiAnc2NvcmUnLFxyXG4gICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICBfY3VzdG9tOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiByb3V0ZS5zY29yZS5tYXAoc2NvcmUgPT4gc2NvcmUuam9pbignLCAnKSkuam9pbignIHwgJyksXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwOiAnU2NvcmUgdXNlZCB0byBzb3J0IHJvdXRlcycsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogcm91dGUuc2NvcmUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZpZWxkcztcclxufVxyXG4vKipcclxuICogRXh0cmFjdGVkIGZyb20gdGFpbHdpbmQgcGFsZXR0ZVxyXG4gKi9cclxuY29uc3QgUElOS181MDAgPSAweGVjNDg5OTtcclxuY29uc3QgQkxVRV82MDAgPSAweDI1NjNlYjtcclxuY29uc3QgTElNRV81MDAgPSAweDg0Y2MxNjtcclxuY29uc3QgQ1lBTl80MDAgPSAweDIyZDNlZTtcclxuY29uc3QgT1JBTkdFXzQwMCA9IDB4ZmI5MjNjO1xyXG4vLyBjb25zdCBHUkFZXzEwMCA9IDB4ZjRmNGY1XHJcbmNvbnN0IERBUksgPSAweDY2NjY2NjtcclxuZnVuY3Rpb24gZm9ybWF0Um91dGVSZWNvcmRGb3JJbnNwZWN0b3Iocm91dGUpIHtcclxuICAgIGNvbnN0IHRhZ3MgPSBbXTtcclxuICAgIGNvbnN0IHsgcmVjb3JkIH0gPSByb3V0ZTtcclxuICAgIGlmIChyZWNvcmQubmFtZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGFncy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6IFN0cmluZyhyZWNvcmQubmFtZSksXHJcbiAgICAgICAgICAgIHRleHRDb2xvcjogMCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBDWUFOXzQwMCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChyZWNvcmQuYWxpYXNPZikge1xyXG4gICAgICAgIHRhZ3MucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiAnYWxpYXMnLFxyXG4gICAgICAgICAgICB0ZXh0Q29sb3I6IDAsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogT1JBTkdFXzQwMCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChyb3V0ZS5fX3ZkX21hdGNoKSB7XHJcbiAgICAgICAgdGFncy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6ICdtYXRjaGVzJyxcclxuICAgICAgICAgICAgdGV4dENvbG9yOiAwLFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFBJTktfNTAwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvdXRlLl9fdmRfZXhhY3RBY3RpdmUpIHtcclxuICAgICAgICB0YWdzLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogJ2V4YWN0JyxcclxuICAgICAgICAgICAgdGV4dENvbG9yOiAwLFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IExJTUVfNTAwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvdXRlLl9fdmRfYWN0aXZlKSB7XHJcbiAgICAgICAgdGFncy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6ICdhY3RpdmUnLFxyXG4gICAgICAgICAgICB0ZXh0Q29sb3I6IDAsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogQkxVRV82MDAsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAocmVjb3JkLnJlZGlyZWN0KSB7XHJcbiAgICAgICAgdGFncy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6ICdyZWRpcmVjdDogJyArXHJcbiAgICAgICAgICAgICAgICAodHlwZW9mIHJlY29yZC5yZWRpcmVjdCA9PT0gJ3N0cmluZycgPyByZWNvcmQucmVkaXJlY3QgOiAnT2JqZWN0JyksXHJcbiAgICAgICAgICAgIHRleHRDb2xvcjogMHhmZmZmZmYsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogREFSSyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIGFkZCBhbiBpZCB0byBiZSBhYmxlIHRvIHNlbGVjdCBpdC4gVXNpbmcgdGhlIGBwYXRoYCBpcyBub3QgcG9zc2libGUgYmVjYXVzZVxyXG4gICAgLy8gZW1wdHkgcGF0aCBjaGlsZHJlbiB3b3VsZCBjb2xsaWRlIHdpdGggdGhlaXIgcGFyZW50c1xyXG4gICAgbGV0IGlkID0gcmVjb3JkLl9fdmRfaWQ7XHJcbiAgICBpZiAoaWQgPT0gbnVsbCkge1xyXG4gICAgICAgIGlkID0gU3RyaW5nKHJvdXRlUmVjb3JkSWQrKyk7XHJcbiAgICAgICAgcmVjb3JkLl9fdmRfaWQgPSBpZDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgbGFiZWw6IHJlY29yZC5wYXRoLFxyXG4gICAgICAgIHRhZ3MsXHJcbiAgICAgICAgY2hpbGRyZW46IHJvdXRlLmNoaWxkcmVuLm1hcChmb3JtYXRSb3V0ZVJlY29yZEZvckluc3BlY3RvciksXHJcbiAgICB9O1xyXG59XHJcbi8vICBpbmNyZW1lbnRhbCBpZCBmb3Igcm91dGUgcmVjb3JkcyBhbmQgaW5zcGVjdG9yIHN0YXRlXHJcbmxldCByb3V0ZVJlY29yZElkID0gMDtcclxuY29uc3QgRVhUUkFDVF9SRUdFWFBfUkUgPSAvXlxcLyguKilcXC8oW2Etel0qKSQvO1xyXG5mdW5jdGlvbiBtYXJrUm91dGVSZWNvcmRBY3RpdmUocm91dGUsIGN1cnJlbnRSb3V0ZSkge1xyXG4gICAgLy8gbm8gcm91dGUgd2lsbCBiZSBhY3RpdmUgaWYgbWF0Y2hlZCBpcyBlbXB0eVxyXG4gICAgLy8gcmVzZXQgdGhlIG1hdGNoaW5nIHN0YXRlXHJcbiAgICBjb25zdCBpc0V4YWN0QWN0aXZlID0gY3VycmVudFJvdXRlLm1hdGNoZWQubGVuZ3RoICYmXHJcbiAgICAgICAgaXNTYW1lUm91dGVSZWNvcmQoY3VycmVudFJvdXRlLm1hdGNoZWRbY3VycmVudFJvdXRlLm1hdGNoZWQubGVuZ3RoIC0gMV0sIHJvdXRlLnJlY29yZCk7XHJcbiAgICByb3V0ZS5fX3ZkX2V4YWN0QWN0aXZlID0gcm91dGUuX192ZF9hY3RpdmUgPSBpc0V4YWN0QWN0aXZlO1xyXG4gICAgaWYgKCFpc0V4YWN0QWN0aXZlKSB7XHJcbiAgICAgICAgcm91dGUuX192ZF9hY3RpdmUgPSBjdXJyZW50Um91dGUubWF0Y2hlZC5zb21lKG1hdGNoID0+IGlzU2FtZVJvdXRlUmVjb3JkKG1hdGNoLCByb3V0ZS5yZWNvcmQpKTtcclxuICAgIH1cclxuICAgIHJvdXRlLmNoaWxkcmVuLmZvckVhY2goY2hpbGRSb3V0ZSA9PiBtYXJrUm91dGVSZWNvcmRBY3RpdmUoY2hpbGRSb3V0ZSwgY3VycmVudFJvdXRlKSk7XHJcbn1cclxuZnVuY3Rpb24gcmVzZXRNYXRjaFN0YXRlT25Sb3V0ZVJlY29yZChyb3V0ZSkge1xyXG4gICAgcm91dGUuX192ZF9tYXRjaCA9IGZhbHNlO1xyXG4gICAgcm91dGUuY2hpbGRyZW4uZm9yRWFjaChyZXNldE1hdGNoU3RhdGVPblJvdXRlUmVjb3JkKTtcclxufVxyXG5mdW5jdGlvbiBpc1JvdXRlTWF0Y2hpbmcocm91dGUsIGZpbHRlcikge1xyXG4gICAgY29uc3QgZm91bmQgPSBTdHJpbmcocm91dGUucmUpLm1hdGNoKEVYVFJBQ1RfUkVHRVhQX1JFKTtcclxuICAgIHJvdXRlLl9fdmRfbWF0Y2ggPSBmYWxzZTtcclxuICAgIGlmICghZm91bmQgfHwgZm91bmQubGVuZ3RoIDwgMykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIHVzZSBhIHJlZ2V4cCB3aXRob3V0ICQgYXQgdGhlIGVuZCB0byBtYXRjaCBuZXN0ZWQgcm91dGVzIGJldHRlclxyXG4gICAgY29uc3Qgbm9uRW5kaW5nUkUgPSBuZXcgUmVnRXhwKGZvdW5kWzFdLnJlcGxhY2UoL1xcJCQvLCAnJyksIGZvdW5kWzJdKTtcclxuICAgIGlmIChub25FbmRpbmdSRS50ZXN0KGZpbHRlcikpIHtcclxuICAgICAgICAvLyBtYXJrIGNoaWxkcmVuIGFzIG1hdGNoZXNcclxuICAgICAgICByb3V0ZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGlzUm91dGVNYXRjaGluZyhjaGlsZCwgZmlsdGVyKSk7XHJcbiAgICAgICAgLy8gZXhjZXB0aW9uIGNhc2U6IGAvYFxyXG4gICAgICAgIGlmIChyb3V0ZS5yZWNvcmQucGF0aCAhPT0gJy8nIHx8IGZpbHRlciA9PT0gJy8nKSB7XHJcbiAgICAgICAgICAgIHJvdXRlLl9fdmRfbWF0Y2ggPSByb3V0ZS5yZS50ZXN0KGZpbHRlcik7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBoaWRlIHRoZSAvIHJvdXRlXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGF0aCA9IHJvdXRlLnJlY29yZC5wYXRoLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBkZWNvZGVkUGF0aCA9IGRlY29kZShwYXRoKTtcclxuICAgIC8vIGFsc28gYWxsb3cgcGFydGlhbCBtYXRjaGluZyBvbiB0aGUgcGF0aFxyXG4gICAgaWYgKCFmaWx0ZXIuc3RhcnRzV2l0aCgnLycpICYmXHJcbiAgICAgICAgKGRlY29kZWRQYXRoLmluY2x1ZGVzKGZpbHRlcikgfHwgcGF0aC5pbmNsdWRlcyhmaWx0ZXIpKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGlmIChkZWNvZGVkUGF0aC5zdGFydHNXaXRoKGZpbHRlcikgfHwgcGF0aC5zdGFydHNXaXRoKGZpbHRlcikpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBpZiAocm91dGUucmVjb3JkLm5hbWUgJiYgU3RyaW5nKHJvdXRlLnJlY29yZC5uYW1lKS5pbmNsdWRlcyhmaWx0ZXIpKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIHJvdXRlLmNoaWxkcmVuLnNvbWUoY2hpbGQgPT4gaXNSb3V0ZU1hdGNoaW5nKGNoaWxkLCBmaWx0ZXIpKTtcclxufVxyXG5mdW5jdGlvbiBvbWl0KG9iaiwga2V5cykge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXHJcbiAgICAgICAgICAgIHJldFtrZXldID0gb2JqW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxuXG4vKipcclxuICogQ3JlYXRlcyBhIFJvdXRlciBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIGJ5IGEgVnVlIGFwcC5cclxuICpcclxuICogQHBhcmFtIG9wdGlvbnMgLSB7QGxpbmsgUm91dGVyT3B0aW9uc31cclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlcihvcHRpb25zKSB7XHJcbiAgICBjb25zdCBtYXRjaGVyID0gY3JlYXRlUm91dGVyTWF0Y2hlcihvcHRpb25zLnJvdXRlcywgb3B0aW9ucyk7XHJcbiAgICBjb25zdCBwYXJzZVF1ZXJ5JDEgPSBvcHRpb25zLnBhcnNlUXVlcnkgfHwgcGFyc2VRdWVyeTtcclxuICAgIGNvbnN0IHN0cmluZ2lmeVF1ZXJ5JDEgPSBvcHRpb25zLnN0cmluZ2lmeVF1ZXJ5IHx8IHN0cmluZ2lmeVF1ZXJ5O1xyXG4gICAgY29uc3Qgcm91dGVySGlzdG9yeSA9IG9wdGlvbnMuaGlzdG9yeTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXJvdXRlckhpc3RvcnkpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlIHRoZSBcImhpc3RvcnlcIiBvcHRpb24gd2hlbiBjYWxsaW5nIFwiY3JlYXRlUm91dGVyKClcIjonICtcclxuICAgICAgICAgICAgJyBodHRwczovL25leHQucm91dGVyLnZ1ZWpzLm9yZy9hcGkvI2hpc3RvcnkuJyk7XHJcbiAgICBjb25zdCBiZWZvcmVHdWFyZHMgPSB1c2VDYWxsYmFja3MoKTtcclxuICAgIGNvbnN0IGJlZm9yZVJlc29sdmVHdWFyZHMgPSB1c2VDYWxsYmFja3MoKTtcclxuICAgIGNvbnN0IGFmdGVyR3VhcmRzID0gdXNlQ2FsbGJhY2tzKCk7XHJcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSBzaGFsbG93UmVmKFNUQVJUX0xPQ0FUSU9OX05PUk1BTElaRUQpO1xyXG4gICAgbGV0IHBlbmRpbmdMb2NhdGlvbiA9IFNUQVJUX0xPQ0FUSU9OX05PUk1BTElaRUQ7XHJcbiAgICAvLyBsZWF2ZSB0aGUgc2Nyb2xsUmVzdG9yYXRpb24gaWYgbm8gc2Nyb2xsQmVoYXZpb3IgaXMgcHJvdmlkZWRcclxuICAgIGlmIChpc0Jyb3dzZXIgJiYgb3B0aW9ucy5zY3JvbGxCZWhhdmlvciAmJiAnc2Nyb2xsUmVzdG9yYXRpb24nIGluIGhpc3RvcnkpIHtcclxuICAgICAgICBoaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gJ21hbnVhbCc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBub3JtYWxpemVQYXJhbXMgPSBhcHBseVRvUGFyYW1zLmJpbmQobnVsbCwgcGFyYW1WYWx1ZSA9PiAnJyArIHBhcmFtVmFsdWUpO1xyXG4gICAgY29uc3QgZW5jb2RlUGFyYW1zID0gYXBwbHlUb1BhcmFtcy5iaW5kKG51bGwsIGVuY29kZVBhcmFtKTtcclxuICAgIGNvbnN0IGRlY29kZVBhcmFtcyA9IFxyXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogaW50ZW50aW9uYWxseSBhdm9pZCB0aGUgdHlwZSBjaGVja1xyXG4gICAgYXBwbHlUb1BhcmFtcy5iaW5kKG51bGwsIGRlY29kZSk7XHJcbiAgICBmdW5jdGlvbiBhZGRSb3V0ZShwYXJlbnRPclJvdXRlLCByb3V0ZSkge1xyXG4gICAgICAgIGxldCBwYXJlbnQ7XHJcbiAgICAgICAgbGV0IHJlY29yZDtcclxuICAgICAgICBpZiAoaXNSb3V0ZU5hbWUocGFyZW50T3JSb3V0ZSkpIHtcclxuICAgICAgICAgICAgcGFyZW50ID0gbWF0Y2hlci5nZXRSZWNvcmRNYXRjaGVyKHBhcmVudE9yUm91dGUpO1xyXG4gICAgICAgICAgICByZWNvcmQgPSByb3V0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJlY29yZCA9IHBhcmVudE9yUm91dGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXRjaGVyLmFkZFJvdXRlKHJlY29yZCwgcGFyZW50KTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlbW92ZVJvdXRlKG5hbWUpIHtcclxuICAgICAgICBjb25zdCByZWNvcmRNYXRjaGVyID0gbWF0Y2hlci5nZXRSZWNvcmRNYXRjaGVyKG5hbWUpO1xyXG4gICAgICAgIGlmIChyZWNvcmRNYXRjaGVyKSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXIucmVtb3ZlUm91dGUocmVjb3JkTWF0Y2hlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBDYW5ub3QgcmVtb3ZlIG5vbi1leGlzdGVudCByb3V0ZSBcIiR7U3RyaW5nKG5hbWUpfVwiYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZ2V0Um91dGVzKCkge1xyXG4gICAgICAgIHJldHVybiBtYXRjaGVyLmdldFJvdXRlcygpLm1hcChyb3V0ZU1hdGNoZXIgPT4gcm91dGVNYXRjaGVyLnJlY29yZCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBoYXNSb3V0ZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuICEhbWF0Y2hlci5nZXRSZWNvcmRNYXRjaGVyKG5hbWUpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVzb2x2ZShyYXdMb2NhdGlvbiwgY3VycmVudExvY2F0aW9uKSB7XHJcbiAgICAgICAgLy8gY29uc3Qgb2JqZWN0TG9jYXRpb24gPSByb3V0ZXJMb2NhdGlvbkFzT2JqZWN0KHJhd0xvY2F0aW9uKVxyXG4gICAgICAgIC8vIHdlIGNyZWF0ZSBhIGNvcHkgdG8gbW9kaWZ5IGl0IGxhdGVyXHJcbiAgICAgICAgY3VycmVudExvY2F0aW9uID0gYXNzaWduKHt9LCBjdXJyZW50TG9jYXRpb24gfHwgY3VycmVudFJvdXRlLnZhbHVlKTtcclxuICAgICAgICBpZiAodHlwZW9mIHJhd0xvY2F0aW9uID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbk5vcm1hbGl6ZWQgPSBwYXJzZVVSTChwYXJzZVF1ZXJ5JDEsIHJhd0xvY2F0aW9uLCBjdXJyZW50TG9jYXRpb24ucGF0aCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRSb3V0ZSA9IG1hdGNoZXIucmVzb2x2ZSh7IHBhdGg6IGxvY2F0aW9uTm9ybWFsaXplZC5wYXRoIH0sIGN1cnJlbnRMb2NhdGlvbik7XHJcbiAgICAgICAgICAgIGNvbnN0IGhyZWYgPSByb3V0ZXJIaXN0b3J5LmNyZWF0ZUhyZWYobG9jYXRpb25Ob3JtYWxpemVkLmZ1bGxQYXRoKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGhyZWYuc3RhcnRzV2l0aCgnLy8nKSlcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBMb2NhdGlvbiBcIiR7cmF3TG9jYXRpb259XCIgcmVzb2x2ZWQgdG8gXCIke2hyZWZ9XCIuIEEgcmVzb2x2ZWQgbG9jYXRpb24gY2Fubm90IHN0YXJ0IHdpdGggbXVsdGlwbGUgc2xhc2hlcy5gKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFtYXRjaGVkUm91dGUubWF0Y2hlZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBObyBtYXRjaCBmb3VuZCBmb3IgbG9jYXRpb24gd2l0aCBwYXRoIFwiJHtyYXdMb2NhdGlvbn1cImApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGxvY2F0aW9uTm9ybWFsaXplZCBpcyBhbHdheXMgYSBuZXcgb2JqZWN0XHJcbiAgICAgICAgICAgIHJldHVybiBhc3NpZ24obG9jYXRpb25Ob3JtYWxpemVkLCBtYXRjaGVkUm91dGUsIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtczogZGVjb2RlUGFyYW1zKG1hdGNoZWRSb3V0ZS5wYXJhbXMpLFxyXG4gICAgICAgICAgICAgICAgaGFzaDogZGVjb2RlKGxvY2F0aW9uTm9ybWFsaXplZC5oYXNoKSxcclxuICAgICAgICAgICAgICAgIHJlZGlyZWN0ZWRGcm9tOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBocmVmLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1hdGNoZXJMb2NhdGlvbjtcclxuICAgICAgICAvLyBwYXRoIGNvdWxkIGJlIHJlbGF0aXZlIGluIG9iamVjdCBhcyB3ZWxsXHJcbiAgICAgICAgaWYgKCdwYXRoJyBpbiByYXdMb2NhdGlvbikge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAncGFyYW1zJyBpbiByYXdMb2NhdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgISgnbmFtZScgaW4gcmF3TG9jYXRpb24pICYmXHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB0aGUgdHlwZSBpcyBuZXZlclxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmF3TG9jYXRpb24ucGFyYW1zKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYFBhdGggXCIke1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogdGhlIHR5cGUgaXMgbmV2ZXJcclxuICAgICAgICAgICAgICAgIHJhd0xvY2F0aW9uLnBhdGh9XCIgd2FzIHBhc3NlZCB3aXRoIHBhcmFtcyBidXQgdGhleSB3aWxsIGJlIGlnbm9yZWQuIFVzZSBhIG5hbWVkIHJvdXRlIGFsb25nc2lkZSBwYXJhbXMgaW5zdGVhZC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtYXRjaGVyTG9jYXRpb24gPSBhc3NpZ24oe30sIHJhd0xvY2F0aW9uLCB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBwYXJzZVVSTChwYXJzZVF1ZXJ5JDEsIHJhd0xvY2F0aW9uLnBhdGgsIGN1cnJlbnRMb2NhdGlvbi5wYXRoKS5wYXRoLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBhbnkgbnVsbGlzaCBwYXJhbVxyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRQYXJhbXMgPSBhc3NpZ24oe30sIHJhd0xvY2F0aW9uLnBhcmFtcyk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRhcmdldFBhcmFtcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFBhcmFtc1trZXldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0UGFyYW1zW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcGFzcyBlbmNvZGVkIHZhbHVlcyB0byB0aGUgbWF0Y2hlciBzbyBpdCBjYW4gcHJvZHVjZSBlbmNvZGVkIHBhdGggYW5kIGZ1bGxQYXRoXHJcbiAgICAgICAgICAgIG1hdGNoZXJMb2NhdGlvbiA9IGFzc2lnbih7fSwgcmF3TG9jYXRpb24sIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtczogZW5jb2RlUGFyYW1zKHJhd0xvY2F0aW9uLnBhcmFtcyksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyBjdXJyZW50IGxvY2F0aW9uIHBhcmFtcyBhcmUgZGVjb2RlZCwgd2UgbmVlZCB0byBlbmNvZGUgdGhlbSBpbiBjYXNlIHRoZVxyXG4gICAgICAgICAgICAvLyBtYXRjaGVyIG1lcmdlcyB0aGUgcGFyYW1zXHJcbiAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbi5wYXJhbXMgPSBlbmNvZGVQYXJhbXMoY3VycmVudExvY2F0aW9uLnBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1hdGNoZWRSb3V0ZSA9IG1hdGNoZXIucmVzb2x2ZShtYXRjaGVyTG9jYXRpb24sIGN1cnJlbnRMb2NhdGlvbik7XHJcbiAgICAgICAgY29uc3QgaGFzaCA9IHJhd0xvY2F0aW9uLmhhc2ggfHwgJyc7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBoYXNoICYmICFoYXNoLnN0YXJ0c1dpdGgoJyMnKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBBIFxcYGhhc2hcXGAgc2hvdWxkIGFsd2F5cyBzdGFydCB3aXRoIHRoZSBjaGFyYWN0ZXIgXCIjXCIuIFJlcGxhY2UgXCIke2hhc2h9XCIgd2l0aCBcIiMke2hhc2h9XCIuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGRlY29kaW5nIHRoZW0pIHRoZSBtYXRjaGVyIG1pZ2h0IGhhdmUgbWVyZ2VkIGN1cnJlbnQgbG9jYXRpb24gcGFyYW1zIHNvXHJcbiAgICAgICAgLy8gd2UgbmVlZCB0byBydW4gdGhlIGRlY29kaW5nIGFnYWluXHJcbiAgICAgICAgbWF0Y2hlZFJvdXRlLnBhcmFtcyA9IG5vcm1hbGl6ZVBhcmFtcyhkZWNvZGVQYXJhbXMobWF0Y2hlZFJvdXRlLnBhcmFtcykpO1xyXG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gc3RyaW5naWZ5VVJMKHN0cmluZ2lmeVF1ZXJ5JDEsIGFzc2lnbih7fSwgcmF3TG9jYXRpb24sIHtcclxuICAgICAgICAgICAgaGFzaDogZW5jb2RlSGFzaChoYXNoKSxcclxuICAgICAgICAgICAgcGF0aDogbWF0Y2hlZFJvdXRlLnBhdGgsXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIGNvbnN0IGhyZWYgPSByb3V0ZXJIaXN0b3J5LmNyZWF0ZUhyZWYoZnVsbFBhdGgpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgaWYgKGhyZWYuc3RhcnRzV2l0aCgnLy8nKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgTG9jYXRpb24gXCIke3Jhd0xvY2F0aW9ufVwiIHJlc29sdmVkIHRvIFwiJHtocmVmfVwiLiBBIHJlc29sdmVkIGxvY2F0aW9uIGNhbm5vdCBzdGFydCB3aXRoIG11bHRpcGxlIHNsYXNoZXMuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIW1hdGNoZWRSb3V0ZS5tYXRjaGVkLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgTm8gbWF0Y2ggZm91bmQgZm9yIGxvY2F0aW9uIHdpdGggcGF0aCBcIiR7J3BhdGgnIGluIHJhd0xvY2F0aW9uID8gcmF3TG9jYXRpb24ucGF0aCA6IHJhd0xvY2F0aW9ufVwiYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFzc2lnbih7XHJcbiAgICAgICAgICAgIGZ1bGxQYXRoLFxyXG4gICAgICAgICAgICAvLyBrZWVwIHRoZSBoYXNoIGVuY29kZWQgc28gZnVsbFBhdGggaXMgZWZmZWN0aXZlbHkgcGF0aCArIGVuY29kZWRRdWVyeSArXHJcbiAgICAgICAgICAgIC8vIGhhc2hcclxuICAgICAgICAgICAgaGFzaCxcclxuICAgICAgICAgICAgcXVlcnk6IFxyXG4gICAgICAgICAgICAvLyBpZiB0aGUgdXNlciBpcyB1c2luZyBhIGN1c3RvbSBxdWVyeSBsaWIgbGlrZSBxcywgd2UgbWlnaHQgaGF2ZVxyXG4gICAgICAgICAgICAvLyBuZXN0ZWQgb2JqZWN0cywgc28gd2Uga2VlcCB0aGUgcXVlcnkgYXMgaXMsIG1lYW5pbmcgaXQgY2FuIGNvbnRhaW5cclxuICAgICAgICAgICAgLy8gbnVtYmVycyBhdCBgJHJvdXRlLnF1ZXJ5YCwgYnV0IGF0IHRoZSBwb2ludCwgdGhlIHVzZXIgd2lsbCBoYXZlIHRvXHJcbiAgICAgICAgICAgIC8vIHVzZSB0aGVpciBvd24gdHlwZSBhbnl3YXkuXHJcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy9yb3V0ZXIvaXNzdWVzLzMyOCNpc3N1ZWNvbW1lbnQtNjQ5NDgxNTY3XHJcbiAgICAgICAgICAgIHN0cmluZ2lmeVF1ZXJ5JDEgPT09IHN0cmluZ2lmeVF1ZXJ5XHJcbiAgICAgICAgICAgICAgICA/IG5vcm1hbGl6ZVF1ZXJ5KHJhd0xvY2F0aW9uLnF1ZXJ5KVxyXG4gICAgICAgICAgICAgICAgOiAocmF3TG9jYXRpb24ucXVlcnkgfHwge30pLFxyXG4gICAgICAgIH0sIG1hdGNoZWRSb3V0ZSwge1xyXG4gICAgICAgICAgICByZWRpcmVjdGVkRnJvbTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBocmVmLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gbG9jYXRpb25Bc09iamVjdCh0bykge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdG8gPT09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgID8gcGFyc2VVUkwocGFyc2VRdWVyeSQxLCB0bywgY3VycmVudFJvdXRlLnZhbHVlLnBhdGgpXHJcbiAgICAgICAgICAgIDogYXNzaWduKHt9LCB0byk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjaGVja0NhbmNlbGVkTmF2aWdhdGlvbih0bywgZnJvbSkge1xyXG4gICAgICAgIGlmIChwZW5kaW5nTG9jYXRpb24gIT09IHRvKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVSb3V0ZXJFcnJvcig4IC8qIE5BVklHQVRJT05fQ0FOQ0VMTEVEICovLCB7XHJcbiAgICAgICAgICAgICAgICBmcm9tLFxyXG4gICAgICAgICAgICAgICAgdG8sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHB1c2godG8pIHtcclxuICAgICAgICByZXR1cm4gcHVzaFdpdGhSZWRpcmVjdCh0byk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiByZXBsYWNlKHRvKSB7XHJcbiAgICAgICAgcmV0dXJuIHB1c2goYXNzaWduKGxvY2F0aW9uQXNPYmplY3QodG8pLCB7IHJlcGxhY2U6IHRydWUgfSkpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaGFuZGxlUmVkaXJlY3RSZWNvcmQodG8pIHtcclxuICAgICAgICBjb25zdCBsYXN0TWF0Y2hlZCA9IHRvLm1hdGNoZWRbdG8ubWF0Y2hlZC5sZW5ndGggLSAxXTtcclxuICAgICAgICBpZiAobGFzdE1hdGNoZWQgJiYgbGFzdE1hdGNoZWQucmVkaXJlY3QpIHtcclxuICAgICAgICAgICAgY29uc3QgeyByZWRpcmVjdCB9ID0gbGFzdE1hdGNoZWQ7XHJcbiAgICAgICAgICAgIGxldCBuZXdUYXJnZXRMb2NhdGlvbiA9IHR5cGVvZiByZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJyA/IHJlZGlyZWN0KHRvKSA6IHJlZGlyZWN0O1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld1RhcmdldExvY2F0aW9uID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgbmV3VGFyZ2V0TG9jYXRpb24gPVxyXG4gICAgICAgICAgICAgICAgICAgIG5ld1RhcmdldExvY2F0aW9uLmluY2x1ZGVzKCc/JykgfHwgbmV3VGFyZ2V0TG9jYXRpb24uaW5jbHVkZXMoJyMnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChuZXdUYXJnZXRMb2NhdGlvbiA9IGxvY2F0aW9uQXNPYmplY3QobmV3VGFyZ2V0TG9jYXRpb24pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IC8vIGZvcmNlIGVtcHR5IHBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYXRoOiBuZXdUYXJnZXRMb2NhdGlvbiB9O1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogZm9yY2UgZW1wdHkgcGFyYW1zIHdoZW4gYSBzdHJpbmcgaXMgcGFzc2VkIHRvIGxldFxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIHJvdXRlciBwYXJzZSB0aGVtIGFnYWluXHJcbiAgICAgICAgICAgICAgICBuZXdUYXJnZXRMb2NhdGlvbi5wYXJhbXMgPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAhKCdwYXRoJyBpbiBuZXdUYXJnZXRMb2NhdGlvbikgJiZcclxuICAgICAgICAgICAgICAgICEoJ25hbWUnIGluIG5ld1RhcmdldExvY2F0aW9uKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgSW52YWxpZCByZWRpcmVjdCBmb3VuZDpcXG4ke0pTT04uc3RyaW5naWZ5KG5ld1RhcmdldExvY2F0aW9uLCBudWxsLCAyKX1cXG4gd2hlbiBuYXZpZ2F0aW5nIHRvIFwiJHt0by5mdWxsUGF0aH1cIi4gQSByZWRpcmVjdCBtdXN0IGNvbnRhaW4gYSBuYW1lIG9yIHBhdGguIFRoaXMgd2lsbCBicmVhayBpbiBwcm9kdWN0aW9uLmApO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlZGlyZWN0Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGFzc2lnbih7XHJcbiAgICAgICAgICAgICAgICBxdWVyeTogdG8ucXVlcnksXHJcbiAgICAgICAgICAgICAgICBoYXNoOiB0by5oYXNoLFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB0by5wYXJhbXMsXHJcbiAgICAgICAgICAgIH0sIG5ld1RhcmdldExvY2F0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwdXNoV2l0aFJlZGlyZWN0KHRvLCByZWRpcmVjdGVkRnJvbSkge1xyXG4gICAgICAgIGNvbnN0IHRhcmdldExvY2F0aW9uID0gKHBlbmRpbmdMb2NhdGlvbiA9IHJlc29sdmUodG8pKTtcclxuICAgICAgICBjb25zdCBmcm9tID0gY3VycmVudFJvdXRlLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0by5zdGF0ZTtcclxuICAgICAgICBjb25zdCBmb3JjZSA9IHRvLmZvcmNlO1xyXG4gICAgICAgIC8vIHRvIGNvdWxkIGJlIGEgc3RyaW5nIHdoZXJlIGByZXBsYWNlYCBpcyBhIGZ1bmN0aW9uXHJcbiAgICAgICAgY29uc3QgcmVwbGFjZSA9IHRvLnJlcGxhY2UgPT09IHRydWU7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkUmVkaXJlY3QgPSBoYW5kbGVSZWRpcmVjdFJlY29yZCh0YXJnZXRMb2NhdGlvbik7XHJcbiAgICAgICAgaWYgKHNob3VsZFJlZGlyZWN0KVxyXG4gICAgICAgICAgICByZXR1cm4gcHVzaFdpdGhSZWRpcmVjdChhc3NpZ24obG9jYXRpb25Bc09iamVjdChzaG91bGRSZWRpcmVjdCksIHtcclxuICAgICAgICAgICAgICAgIHN0YXRlOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgZm9yY2UsXHJcbiAgICAgICAgICAgICAgICByZXBsYWNlLFxyXG4gICAgICAgICAgICB9KSwgXHJcbiAgICAgICAgICAgIC8vIGtlZXAgb3JpZ2luYWwgcmVkaXJlY3RlZEZyb20gaWYgaXQgZXhpc3RzXHJcbiAgICAgICAgICAgIHJlZGlyZWN0ZWRGcm9tIHx8IHRhcmdldExvY2F0aW9uKTtcclxuICAgICAgICAvLyBpZiBpdCB3YXMgYSByZWRpcmVjdCB3ZSBhbHJlYWR5IGNhbGxlZCBgcHVzaFdpdGhSZWRpcmVjdGAgYWJvdmVcclxuICAgICAgICBjb25zdCB0b0xvY2F0aW9uID0gdGFyZ2V0TG9jYXRpb247XHJcbiAgICAgICAgdG9Mb2NhdGlvbi5yZWRpcmVjdGVkRnJvbSA9IHJlZGlyZWN0ZWRGcm9tO1xyXG4gICAgICAgIGxldCBmYWlsdXJlO1xyXG4gICAgICAgIGlmICghZm9yY2UgJiYgaXNTYW1lUm91dGVMb2NhdGlvbihzdHJpbmdpZnlRdWVyeSQxLCBmcm9tLCB0YXJnZXRMb2NhdGlvbikpIHtcclxuICAgICAgICAgICAgZmFpbHVyZSA9IGNyZWF0ZVJvdXRlckVycm9yKDE2IC8qIE5BVklHQVRJT05fRFVQTElDQVRFRCAqLywgeyB0bzogdG9Mb2NhdGlvbiwgZnJvbSB9KTtcclxuICAgICAgICAgICAgLy8gdHJpZ2dlciBzY3JvbGwgdG8gYWxsb3cgc2Nyb2xsaW5nIHRvIHRoZSBzYW1lIGFuY2hvclxyXG4gICAgICAgICAgICBoYW5kbGVTY3JvbGwoZnJvbSwgZnJvbSwgXHJcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgYSBwdXNoLCB0aGUgb25seSB3YXkgZm9yIGl0IHRvIGJlIHRyaWdnZXJlZCBmcm9tIGFcclxuICAgICAgICAgICAgLy8gaGlzdG9yeS5saXN0ZW4gaXMgd2l0aCBhIHJlZGlyZWN0LCB3aGljaCBtYWtlcyBpdCBiZWNvbWUgYSBwdXNoXHJcbiAgICAgICAgICAgIHRydWUsIFxyXG4gICAgICAgICAgICAvLyBUaGlzIGNhbm5vdCBiZSB0aGUgZmlyc3QgbmF2aWdhdGlvbiBiZWNhdXNlIHRoZSBpbml0aWFsIGxvY2F0aW9uXHJcbiAgICAgICAgICAgIC8vIGNhbm5vdCBiZSBtYW51YWxseSBuYXZpZ2F0ZWQgdG9cclxuICAgICAgICAgICAgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKGZhaWx1cmUgPyBQcm9taXNlLnJlc29sdmUoZmFpbHVyZSkgOiBuYXZpZ2F0ZSh0b0xvY2F0aW9uLCBmcm9tKSlcclxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gaXNOYXZpZ2F0aW9uRmFpbHVyZShlcnJvcilcclxuICAgICAgICAgICAgPyAvLyBuYXZpZ2F0aW9uIHJlZGlyZWN0cyBzdGlsbCBtYXJrIHRoZSByb3V0ZXIgYXMgcmVhZHlcclxuICAgICAgICAgICAgICAgIGlzTmF2aWdhdGlvbkZhaWx1cmUoZXJyb3IsIDIgLyogTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCAqLylcclxuICAgICAgICAgICAgICAgICAgICA/IGVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgOiBtYXJrQXNSZWFkeShlcnJvcikgLy8gYWxzbyByZXR1cm5zIHRoZSBlcnJvclxyXG4gICAgICAgICAgICA6IC8vIHJlamVjdCBhbnkgdW5rbm93biBlcnJvclxyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckVycm9yKGVycm9yLCB0b0xvY2F0aW9uLCBmcm9tKSlcclxuICAgICAgICAgICAgLnRoZW4oKGZhaWx1cmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZhaWx1cmUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc05hdmlnYXRpb25GYWlsdXJlKGZhaWx1cmUsIDIgLyogTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSByZWRpcmVjdGluZyB0byB0aGUgc2FtZSBsb2NhdGlvbiB3ZSB3ZXJlIGFscmVhZHkgYXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTYW1lUm91dGVMb2NhdGlvbihzdHJpbmdpZnlRdWVyeSQxLCByZXNvbHZlKGZhaWx1cmUudG8pLCB0b0xvY2F0aW9uKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2UgaGF2ZSBkb25lIGl0IGEgY291cGxlIG9mIHRpbWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0ZWRGcm9tICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGFkZGVkIG9ubHkgaW4gZGV2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZWRpcmVjdGVkRnJvbS5fY291bnQgPSByZWRpcmVjdGVkRnJvbS5fY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gLy8gQHRzLWV4cGVjdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0ZWRGcm9tLl9jb3VudCArIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMSkgPiAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBEZXRlY3RlZCBhbiBpbmZpbml0ZSByZWRpcmVjdGlvbiBpbiBhIG5hdmlnYXRpb24gZ3VhcmQgd2hlbiBnb2luZyBmcm9tIFwiJHtmcm9tLmZ1bGxQYXRofVwiIHRvIFwiJHt0b0xvY2F0aW9uLmZ1bGxQYXRofVwiLiBBYm9ydGluZyB0byBhdm9pZCBhIFN0YWNrIE92ZXJmbG93LiBUaGlzIHdpbGwgYnJlYWsgaW4gcHJvZHVjdGlvbiBpZiBub3QgZml4ZWQuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0luZmluaXRlIHJlZGlyZWN0IGluIG5hdmlnYXRpb24gZ3VhcmQnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXNoV2l0aFJlZGlyZWN0KFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgb3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbihsb2NhdGlvbkFzT2JqZWN0KGZhaWx1cmUudG8pLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JjZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSxcclxuICAgICAgICAgICAgICAgICAgICB9KSwgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJlc2VydmUgdGhlIG9yaWdpbmFsIHJlZGlyZWN0ZWRGcm9tIGlmIGFueVxyXG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0ZWRGcm9tIHx8IHRvTG9jYXRpb24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgd2UgZmFpbCB3ZSBkb24ndCBmaW5hbGl6ZSB0aGUgbmF2aWdhdGlvblxyXG4gICAgICAgICAgICAgICAgZmFpbHVyZSA9IGZpbmFsaXplTmF2aWdhdGlvbih0b0xvY2F0aW9uLCBmcm9tLCB0cnVlLCByZXBsYWNlLCBkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0cmlnZ2VyQWZ0ZXJFYWNoKHRvTG9jYXRpb24sIGZyb20sIGZhaWx1cmUpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIHRvIHJlamVjdCBhbmQgc2tpcCBhbGwgbmF2aWdhdGlvbiBndWFyZHMgaWYgYSBuZXcgbmF2aWdhdGlvbiBoYXBwZW5lZFxyXG4gICAgICogQHBhcmFtIHRvXHJcbiAgICAgKiBAcGFyYW0gZnJvbVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjaGVja0NhbmNlbGVkTmF2aWdhdGlvbkFuZFJlamVjdCh0bywgZnJvbSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gY2hlY2tDYW5jZWxlZE5hdmlnYXRpb24odG8sIGZyb20pO1xyXG4gICAgICAgIHJldHVybiBlcnJvciA/IFByb21pc2UucmVqZWN0KGVycm9yKSA6IFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG4gICAgLy8gVE9ETzogcmVmYWN0b3IgdGhlIHdob2xlIGJlZm9yZSBndWFyZHMgYnkgaW50ZXJuYWxseSB1c2luZyByb3V0ZXIuYmVmb3JlRWFjaFxyXG4gICAgZnVuY3Rpb24gbmF2aWdhdGUodG8sIGZyb20pIHtcclxuICAgICAgICBsZXQgZ3VhcmRzO1xyXG4gICAgICAgIGNvbnN0IFtsZWF2aW5nUmVjb3JkcywgdXBkYXRpbmdSZWNvcmRzLCBlbnRlcmluZ1JlY29yZHNdID0gZXh0cmFjdENoYW5naW5nUmVjb3Jkcyh0bywgZnJvbSk7XHJcbiAgICAgICAgLy8gYWxsIGNvbXBvbmVudHMgaGVyZSBoYXZlIGJlZW4gcmVzb2x2ZWQgb25jZSBiZWNhdXNlIHdlIGFyZSBsZWF2aW5nXHJcbiAgICAgICAgZ3VhcmRzID0gZXh0cmFjdENvbXBvbmVudHNHdWFyZHMobGVhdmluZ1JlY29yZHMucmV2ZXJzZSgpLCAnYmVmb3JlUm91dGVMZWF2ZScsIHRvLCBmcm9tKTtcclxuICAgICAgICAvLyBsZWF2aW5nUmVjb3JkcyBpcyBhbHJlYWR5IHJldmVyc2VkXHJcbiAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgbGVhdmluZ1JlY29yZHMpIHtcclxuICAgICAgICAgICAgcmVjb3JkLmxlYXZlR3VhcmRzLmZvckVhY2goZ3VhcmQgPT4ge1xyXG4gICAgICAgICAgICAgICAgZ3VhcmRzLnB1c2goZ3VhcmRUb1Byb21pc2VGbihndWFyZCwgdG8sIGZyb20pKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNhbmNlbGVkTmF2aWdhdGlvbkNoZWNrID0gY2hlY2tDYW5jZWxlZE5hdmlnYXRpb25BbmRSZWplY3QuYmluZChudWxsLCB0bywgZnJvbSk7XHJcbiAgICAgICAgZ3VhcmRzLnB1c2goY2FuY2VsZWROYXZpZ2F0aW9uQ2hlY2spO1xyXG4gICAgICAgIC8vIHJ1biB0aGUgcXVldWUgb2YgcGVyIHJvdXRlIGJlZm9yZVJvdXRlTGVhdmUgZ3VhcmRzXHJcbiAgICAgICAgcmV0dXJuIChydW5HdWFyZFF1ZXVlKGd1YXJkcylcclxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBjaGVjayBnbG9iYWwgZ3VhcmRzIGJlZm9yZUVhY2hcclxuICAgICAgICAgICAgZ3VhcmRzID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ3VhcmQgb2YgYmVmb3JlR3VhcmRzLmxpc3QoKSkge1xyXG4gICAgICAgICAgICAgICAgZ3VhcmRzLnB1c2goZ3VhcmRUb1Byb21pc2VGbihndWFyZCwgdG8sIGZyb20pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBndWFyZHMucHVzaChjYW5jZWxlZE5hdmlnYXRpb25DaGVjayk7XHJcbiAgICAgICAgICAgIHJldHVybiBydW5HdWFyZFF1ZXVlKGd1YXJkcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBjaGVjayBpbiBjb21wb25lbnRzIGJlZm9yZVJvdXRlVXBkYXRlXHJcbiAgICAgICAgICAgIGd1YXJkcyA9IGV4dHJhY3RDb21wb25lbnRzR3VhcmRzKHVwZGF0aW5nUmVjb3JkcywgJ2JlZm9yZVJvdXRlVXBkYXRlJywgdG8sIGZyb20pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiB1cGRhdGluZ1JlY29yZHMpIHtcclxuICAgICAgICAgICAgICAgIHJlY29yZC51cGRhdGVHdWFyZHMuZm9yRWFjaChndWFyZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3VhcmRzLnB1c2goZ3VhcmRUb1Byb21pc2VGbihndWFyZCwgdG8sIGZyb20pKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGd1YXJkcy5wdXNoKGNhbmNlbGVkTmF2aWdhdGlvbkNoZWNrKTtcclxuICAgICAgICAgICAgLy8gcnVuIHRoZSBxdWV1ZSBvZiBwZXIgcm91dGUgYmVmb3JlRW50ZXIgZ3VhcmRzXHJcbiAgICAgICAgICAgIHJldHVybiBydW5HdWFyZFF1ZXVlKGd1YXJkcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBjaGVjayB0aGUgcm91dGUgYmVmb3JlRW50ZXJcclxuICAgICAgICAgICAgZ3VhcmRzID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHRvLm1hdGNoZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCB0cmlnZ2VyIGJlZm9yZUVudGVyIG9uIHJldXNlZCB2aWV3c1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5iZWZvcmVFbnRlciAmJiAhZnJvbS5tYXRjaGVkLmluY2x1ZGVzKHJlY29yZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWNvcmQuYmVmb3JlRW50ZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYmVmb3JlRW50ZXIgb2YgcmVjb3JkLmJlZm9yZUVudGVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmRzLnB1c2goZ3VhcmRUb1Byb21pc2VGbihiZWZvcmVFbnRlciwgdG8sIGZyb20pKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGd1YXJkcy5wdXNoKGd1YXJkVG9Qcm9taXNlRm4ocmVjb3JkLmJlZm9yZUVudGVyLCB0bywgZnJvbSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBndWFyZHMucHVzaChjYW5jZWxlZE5hdmlnYXRpb25DaGVjayk7XHJcbiAgICAgICAgICAgIC8vIHJ1biB0aGUgcXVldWUgb2YgcGVyIHJvdXRlIGJlZm9yZUVudGVyIGd1YXJkc1xyXG4gICAgICAgICAgICByZXR1cm4gcnVuR3VhcmRRdWV1ZShndWFyZHMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCB0by5tYXRjaGVkIGlzIG5vcm1hbGl6ZWQgYW5kIGRvZXMgbm90IGNvbnRhaW4gYW55ICgpID0+IFByb21pc2U8Q29tcG9uZW50PlxyXG4gICAgICAgICAgICAvLyBjbGVhciBleGlzdGluZyBlbnRlckNhbGxiYWNrcywgdGhlc2UgYXJlIGFkZGVkIGJ5IGV4dHJhY3RDb21wb25lbnRzR3VhcmRzXHJcbiAgICAgICAgICAgIHRvLm1hdGNoZWQuZm9yRWFjaChyZWNvcmQgPT4gKHJlY29yZC5lbnRlckNhbGxiYWNrcyA9IHt9KSk7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGluLWNvbXBvbmVudCBiZWZvcmVSb3V0ZUVudGVyXHJcbiAgICAgICAgICAgIGd1YXJkcyA9IGV4dHJhY3RDb21wb25lbnRzR3VhcmRzKGVudGVyaW5nUmVjb3JkcywgJ2JlZm9yZVJvdXRlRW50ZXInLCB0bywgZnJvbSk7XHJcbiAgICAgICAgICAgIGd1YXJkcy5wdXNoKGNhbmNlbGVkTmF2aWdhdGlvbkNoZWNrKTtcclxuICAgICAgICAgICAgLy8gcnVuIHRoZSBxdWV1ZSBvZiBwZXIgcm91dGUgYmVmb3JlRW50ZXIgZ3VhcmRzXHJcbiAgICAgICAgICAgIHJldHVybiBydW5HdWFyZFF1ZXVlKGd1YXJkcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBjaGVjayBnbG9iYWwgZ3VhcmRzIGJlZm9yZVJlc29sdmVcclxuICAgICAgICAgICAgZ3VhcmRzID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ3VhcmQgb2YgYmVmb3JlUmVzb2x2ZUd1YXJkcy5saXN0KCkpIHtcclxuICAgICAgICAgICAgICAgIGd1YXJkcy5wdXNoKGd1YXJkVG9Qcm9taXNlRm4oZ3VhcmQsIHRvLCBmcm9tKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZ3VhcmRzLnB1c2goY2FuY2VsZWROYXZpZ2F0aW9uQ2hlY2spO1xyXG4gICAgICAgICAgICByZXR1cm4gcnVuR3VhcmRRdWV1ZShndWFyZHMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAgIC8vIGNhdGNoIGFueSBuYXZpZ2F0aW9uIGNhbmNlbGVkXHJcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4gaXNOYXZpZ2F0aW9uRmFpbHVyZShlcnIsIDggLyogTkFWSUdBVElPTl9DQU5DRUxMRUQgKi8pXHJcbiAgICAgICAgICAgID8gZXJyXHJcbiAgICAgICAgICAgIDogUHJvbWlzZS5yZWplY3QoZXJyKSkpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gdHJpZ2dlckFmdGVyRWFjaCh0bywgZnJvbSwgZmFpbHVyZSkge1xyXG4gICAgICAgIC8vIG5hdmlnYXRpb24gaXMgY29uZmlybWVkLCBjYWxsIGFmdGVyR3VhcmRzXHJcbiAgICAgICAgLy8gVE9ETzogd3JhcCB3aXRoIGVycm9yIGhhbmRsZXJzXHJcbiAgICAgICAgZm9yIChjb25zdCBndWFyZCBvZiBhZnRlckd1YXJkcy5saXN0KCkpXHJcbiAgICAgICAgICAgIGd1YXJkKHRvLCBmcm9tLCBmYWlsdXJlKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogLSBDbGVhbnMgdXAgYW55IG5hdmlnYXRpb24gZ3VhcmRzXHJcbiAgICAgKiAtIENoYW5nZXMgdGhlIHVybCBpZiBuZWNlc3NhcnlcclxuICAgICAqIC0gQ2FsbHMgdGhlIHNjcm9sbEJlaGF2aW9yXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGZpbmFsaXplTmF2aWdhdGlvbih0b0xvY2F0aW9uLCBmcm9tLCBpc1B1c2gsIHJlcGxhY2UsIGRhdGEpIHtcclxuICAgICAgICAvLyBhIG1vcmUgcmVjZW50IG5hdmlnYXRpb24gdG9vayBwbGFjZVxyXG4gICAgICAgIGNvbnN0IGVycm9yID0gY2hlY2tDYW5jZWxlZE5hdmlnYXRpb24odG9Mb2NhdGlvbiwgZnJvbSk7XHJcbiAgICAgICAgaWYgKGVycm9yKVxyXG4gICAgICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICAgICAgLy8gb25seSBjb25zaWRlciBhcyBwdXNoIGlmIGl0J3Mgbm90IHRoZSBmaXJzdCBuYXZpZ2F0aW9uXHJcbiAgICAgICAgY29uc3QgaXNGaXJzdE5hdmlnYXRpb24gPSBmcm9tID09PSBTVEFSVF9MT0NBVElPTl9OT1JNQUxJWkVEO1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gIWlzQnJvd3NlciA/IHt9IDogaGlzdG9yeS5zdGF0ZTtcclxuICAgICAgICAvLyBjaGFuZ2UgVVJMIG9ubHkgaWYgdGhlIHVzZXIgZGlkIGEgcHVzaC9yZXBsYWNlIGFuZCBpZiBpdCdzIG5vdCB0aGUgaW5pdGlhbCBuYXZpZ2F0aW9uIGJlY2F1c2VcclxuICAgICAgICAvLyBpdCdzIGp1c3QgcmVmbGVjdGluZyB0aGUgdXJsXHJcbiAgICAgICAgaWYgKGlzUHVzaCkge1xyXG4gICAgICAgICAgICAvLyBvbiB0aGUgaW5pdGlhbCBuYXZpZ2F0aW9uLCB3ZSB3YW50IHRvIHJldXNlIHRoZSBzY3JvbGwgcG9zaXRpb24gZnJvbVxyXG4gICAgICAgICAgICAvLyBoaXN0b3J5IHN0YXRlIGlmIGl0IGV4aXN0c1xyXG4gICAgICAgICAgICBpZiAocmVwbGFjZSB8fCBpc0ZpcnN0TmF2aWdhdGlvbilcclxuICAgICAgICAgICAgICAgIHJvdXRlckhpc3RvcnkucmVwbGFjZSh0b0xvY2F0aW9uLmZ1bGxQYXRoLCBhc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogaXNGaXJzdE5hdmlnYXRpb24gJiYgc3RhdGUgJiYgc3RhdGUuc2Nyb2xsLFxyXG4gICAgICAgICAgICAgICAgfSwgZGF0YSkpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByb3V0ZXJIaXN0b3J5LnB1c2godG9Mb2NhdGlvbi5mdWxsUGF0aCwgZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFjY2VwdCBjdXJyZW50IG5hdmlnYXRpb25cclxuICAgICAgICBjdXJyZW50Um91dGUudmFsdWUgPSB0b0xvY2F0aW9uO1xyXG4gICAgICAgIGhhbmRsZVNjcm9sbCh0b0xvY2F0aW9uLCBmcm9tLCBpc1B1c2gsIGlzRmlyc3ROYXZpZ2F0aW9uKTtcclxuICAgICAgICBtYXJrQXNSZWFkeSgpO1xyXG4gICAgfVxyXG4gICAgbGV0IHJlbW92ZUhpc3RvcnlMaXN0ZW5lcjtcclxuICAgIC8vIGF0dGFjaCBsaXN0ZW5lciB0byBoaXN0b3J5IHRvIHRyaWdnZXIgbmF2aWdhdGlvbnNcclxuICAgIGZ1bmN0aW9uIHNldHVwTGlzdGVuZXJzKCkge1xyXG4gICAgICAgIHJlbW92ZUhpc3RvcnlMaXN0ZW5lciA9IHJvdXRlckhpc3RvcnkubGlzdGVuKCh0bywgX2Zyb20sIGluZm8pID0+IHtcclxuICAgICAgICAgICAgLy8gY2Fubm90IGJlIGEgcmVkaXJlY3Qgcm91dGUgYmVjYXVzZSBpdCB3YXMgaW4gaGlzdG9yeVxyXG4gICAgICAgICAgICBjb25zdCB0b0xvY2F0aW9uID0gcmVzb2x2ZSh0byk7XHJcbiAgICAgICAgICAgIC8vIGR1ZSB0byBkeW5hbWljIHJvdXRpbmcsIGFuZCB0byBoYXNoIGhpc3Rvcnkgd2l0aCBtYW51YWwgbmF2aWdhdGlvblxyXG4gICAgICAgICAgICAvLyAobWFudWFsbHkgY2hhbmdpbmcgdGhlIHVybCBvciBjYWxsaW5nIGhpc3RvcnkuaGFzaCA9ICcjL3NvbWV3aGVyZScpLFxyXG4gICAgICAgICAgICAvLyB0aGVyZSBjb3VsZCBiZSBhIHJlZGlyZWN0IHJlY29yZCBpbiBoaXN0b3J5XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlZGlyZWN0ID0gaGFuZGxlUmVkaXJlY3RSZWNvcmQodG9Mb2NhdGlvbik7XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRSZWRpcmVjdCkge1xyXG4gICAgICAgICAgICAgICAgcHVzaFdpdGhSZWRpcmVjdChhc3NpZ24oc2hvdWxkUmVkaXJlY3QsIHsgcmVwbGFjZTogdHJ1ZSB9KSwgdG9Mb2NhdGlvbikuY2F0Y2gobm9vcCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGVuZGluZ0xvY2F0aW9uID0gdG9Mb2NhdGlvbjtcclxuICAgICAgICAgICAgY29uc3QgZnJvbSA9IGN1cnJlbnRSb3V0ZS52YWx1ZTtcclxuICAgICAgICAgICAgLy8gVE9ETzogc2hvdWxkIGJlIG1vdmVkIHRvIHdlYiBoaXN0b3J5P1xyXG4gICAgICAgICAgICBpZiAoaXNCcm93c2VyKSB7XHJcbiAgICAgICAgICAgICAgICBzYXZlU2Nyb2xsUG9zaXRpb24oZ2V0U2Nyb2xsS2V5KGZyb20uZnVsbFBhdGgsIGluZm8uZGVsdGEpLCBjb21wdXRlU2Nyb2xsUG9zaXRpb24oKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmF2aWdhdGUodG9Mb2NhdGlvbiwgZnJvbSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpc05hdmlnYXRpb25GYWlsdXJlKGVycm9yLCA0IC8qIE5BVklHQVRJT05fQUJPUlRFRCAqLyB8IDggLyogTkFWSUdBVElPTl9DQU5DRUxMRUQgKi8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2aWdhdGlvbkZhaWx1cmUoZXJyb3IsIDIgLyogTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBIZXJlIHdlIGNvdWxkIGNhbGwgaWYgKGluZm8uZGVsdGEpIHJvdXRlckhpc3RvcnkuZ28oLWluZm8uZGVsdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZmFsc2UpIGJ1dCB0aGlzIGlzIGJ1ZyBwcm9uZSBhcyB3ZSBoYXZlIG5vIHdheSB0byB3YWl0IHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRpb24gdG8gYmUgZmluaXNoZWQgYmVmb3JlIGNhbGxpbmcgcHVzaFdpdGhSZWRpcmVjdC4gVXNpbmdcclxuICAgICAgICAgICAgICAgICAgICAvLyBhIHNldFRpbWVvdXQgb2YgMTZtcyBzZWVtcyB0byB3b3JrIGJ1dCB0aGVyZSBpcyBub3QgZ3VhcmFudGVlIGZvclxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0IHRvIHdvcmsgb24gZXZlcnkgYnJvd3Nlci4gU28gSW5zdGVhZCB3ZSBkbyBub3QgcmVzdG9yZSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAvLyBoaXN0b3J5IGVudHJ5IGFuZCB0cmlnZ2VyIGEgbmV3IG5hdmlnYXRpb24gYXMgcmVxdWVzdGVkIGJ5IHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRpb24gZ3VhcmQuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGVycm9yIGlzIGFscmVhZHkgaGFuZGxlZCBieSByb3V0ZXIucHVzaCB3ZSBqdXN0IHdhbnQgdG8gYXZvaWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBsb2dnaW5nIHRoZSBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIHB1c2hXaXRoUmVkaXJlY3QoZXJyb3IudG8sIHRvTG9jYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAvLyBhdm9pZCBhbiB1bmNhdWdodCByZWplY3Rpb24sIGxldCBwdXNoIGNhbGwgdHJpZ2dlckVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmYWlsdXJlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFudWFsIGNoYW5nZSBpbiBoYXNoIGhpc3RvcnkgIzkxNiBlbmRpbmcgdXAgaW4gdGhlIFVSTCBub3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdpbmcgYnV0IGl0IHdhcyBjaGFuZ2VkIGJ5IHRoZSBtYW51YWwgdXJsIGNoYW5nZSwgc28gd2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBtYW51YWxseSBjaGFuZ2UgaXQgb3Vyc2VsdmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05hdmlnYXRpb25GYWlsdXJlKGZhaWx1cmUsIDQgLyogTkFWSUdBVElPTl9BQk9SVEVEICovIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2IC8qIE5BVklHQVRJT05fRFVQTElDQVRFRCAqLykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpbmZvLmRlbHRhICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgPT09IE5hdmlnYXRpb25UeXBlLnBvcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVySGlzdG9yeS5nbygtMSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGF2b2lkIHRoZSB0aGVuIGJyYW5jaFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gZG8gbm90IHJlc3RvcmUgaGlzdG9yeSBvbiB1bmtub3duIGRpcmVjdGlvblxyXG4gICAgICAgICAgICAgICAgaWYgKGluZm8uZGVsdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgcm91dGVySGlzdG9yeS5nbygtaW5mby5kZWx0YSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gdW5yZWNvZ25pemVkIGVycm9yLCB0cmFuc2ZlciB0byB0aGUgZ2xvYmFsIGhhbmRsZXJcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cmlnZ2VyRXJyb3IoZXJyb3IsIHRvTG9jYXRpb24sIGZyb20pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKGZhaWx1cmUpID0+IHtcclxuICAgICAgICAgICAgICAgIGZhaWx1cmUgPVxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemVOYXZpZ2F0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBuYXZpZ2F0aW9uLCBhbGwgbWF0Y2hlZCBjb21wb25lbnRzIGFyZSByZXNvbHZlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b0xvY2F0aW9uLCBmcm9tLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAvLyByZXZlcnQgdGhlIG5hdmlnYXRpb25cclxuICAgICAgICAgICAgICAgIGlmIChmYWlsdXJlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8uZGVsdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVySGlzdG9yeS5nbygtaW5mby5kZWx0YSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmZvLnR5cGUgPT09IE5hdmlnYXRpb25UeXBlLnBvcCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc05hdmlnYXRpb25GYWlsdXJlKGZhaWx1cmUsIDQgLyogTkFWSUdBVElPTl9BQk9SVEVEICovIHwgMTYgLyogTkFWSUdBVElPTl9EVVBMSUNBVEVEICovKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYW51YWwgY2hhbmdlIGluIGhhc2ggaGlzdG9yeSAjOTE2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3MgbGlrZSBhIHB1c2ggYnV0IGxhY2tzIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZGlyZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckhpc3RvcnkuZ28oLTEsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyQWZ0ZXJFYWNoKHRvTG9jYXRpb24sIGZyb20sIGZhaWx1cmUpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gSW5pdGlhbGl6YXRpb24gYW5kIEVycm9yc1xyXG4gICAgbGV0IHJlYWR5SGFuZGxlcnMgPSB1c2VDYWxsYmFja3MoKTtcclxuICAgIGxldCBlcnJvckhhbmRsZXJzID0gdXNlQ2FsbGJhY2tzKCk7XHJcbiAgICBsZXQgcmVhZHk7XHJcbiAgICAvKipcclxuICAgICAqIFRyaWdnZXIgZXJyb3JIYW5kbGVycyBhZGRlZCB2aWEgb25FcnJvciBhbmQgdGhyb3dzIHRoZSBlcnJvciBhcyB3ZWxsXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGVycm9yIC0gZXJyb3IgdG8gdGhyb3dcclxuICAgICAqIEBwYXJhbSB0byAtIGxvY2F0aW9uIHdlIHdlcmUgbmF2aWdhdGluZyB0byB3aGVuIHRoZSBlcnJvciBoYXBwZW5lZFxyXG4gICAgICogQHBhcmFtIGZyb20gLSBsb2NhdGlvbiB3ZSB3ZXJlIG5hdmlnYXRpbmcgZnJvbSB3aGVuIHRoZSBlcnJvciBoYXBwZW5lZFxyXG4gICAgICogQHJldHVybnMgdGhlIGVycm9yIGFzIGEgcmVqZWN0ZWQgcHJvbWlzZVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiB0cmlnZ2VyRXJyb3IoZXJyb3IsIHRvLCBmcm9tKSB7XHJcbiAgICAgICAgbWFya0FzUmVhZHkoZXJyb3IpO1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSBlcnJvckhhbmRsZXJzLmxpc3QoKTtcclxuICAgICAgICBpZiAobGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGhhbmRsZXIgPT4gaGFuZGxlcihlcnJvciwgdG8sIGZyb20pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oJ3VuY2F1Z2h0IGVycm9yIGR1cmluZyByb3V0ZSBuYXZpZ2F0aW9uOicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gaXNSZWFkeSgpIHtcclxuICAgICAgICBpZiAocmVhZHkgJiYgY3VycmVudFJvdXRlLnZhbHVlICE9PSBTVEFSVF9MT0NBVElPTl9OT1JNQUxJWkVEKVxyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgcmVhZHlIYW5kbGVycy5hZGQoW3Jlc29sdmUsIHJlamVjdF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gbWFya0FzUmVhZHkoZXJyKSB7XHJcbiAgICAgICAgaWYgKCFyZWFkeSkge1xyXG4gICAgICAgICAgICAvLyBzdGlsbCBub3QgcmVhZHkgaWYgYW4gZXJyb3IgaGFwcGVuZWRcclxuICAgICAgICAgICAgcmVhZHkgPSAhZXJyO1xyXG4gICAgICAgICAgICBzZXR1cExpc3RlbmVycygpO1xyXG4gICAgICAgICAgICByZWFkeUhhbmRsZXJzXHJcbiAgICAgICAgICAgICAgICAubGlzdCgpXHJcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoW3Jlc29sdmUsIHJlamVjdF0pID0+IChlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoKSkpO1xyXG4gICAgICAgICAgICByZWFkeUhhbmRsZXJzLnJlc2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlcnI7XHJcbiAgICB9XHJcbiAgICAvLyBTY3JvbGwgYmVoYXZpb3JcclxuICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbCh0bywgZnJvbSwgaXNQdXNoLCBpc0ZpcnN0TmF2aWdhdGlvbikge1xyXG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsQmVoYXZpb3IgfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgaWYgKCFpc0Jyb3dzZXIgfHwgIXNjcm9sbEJlaGF2aW9yKVxyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSAoIWlzUHVzaCAmJiBnZXRTYXZlZFNjcm9sbFBvc2l0aW9uKGdldFNjcm9sbEtleSh0by5mdWxsUGF0aCwgMCkpKSB8fFxyXG4gICAgICAgICAgICAoKGlzRmlyc3ROYXZpZ2F0aW9uIHx8ICFpc1B1c2gpICYmXHJcbiAgICAgICAgICAgICAgICBoaXN0b3J5LnN0YXRlICYmXHJcbiAgICAgICAgICAgICAgICBoaXN0b3J5LnN0YXRlLnNjcm9sbCkgfHxcclxuICAgICAgICAgICAgbnVsbDtcclxuICAgICAgICByZXR1cm4gbmV4dFRpY2soKVxyXG4gICAgICAgICAgICAudGhlbigoKSA9PiBzY3JvbGxCZWhhdmlvcih0bywgZnJvbSwgc2Nyb2xsUG9zaXRpb24pKVxyXG4gICAgICAgICAgICAudGhlbihwb3NpdGlvbiA9PiBwb3NpdGlvbiAmJiBzY3JvbGxUb1Bvc2l0aW9uKHBvc2l0aW9uKSlcclxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB0cmlnZ2VyRXJyb3IoZXJyLCB0bywgZnJvbSkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZ28gPSAoZGVsdGEpID0+IHJvdXRlckhpc3RvcnkuZ28oZGVsdGEpO1xyXG4gICAgbGV0IHN0YXJ0ZWQ7XHJcbiAgICBjb25zdCBpbnN0YWxsZWRBcHBzID0gbmV3IFNldCgpO1xyXG4gICAgY29uc3Qgcm91dGVyID0ge1xyXG4gICAgICAgIGN1cnJlbnRSb3V0ZSxcclxuICAgICAgICBhZGRSb3V0ZSxcclxuICAgICAgICByZW1vdmVSb3V0ZSxcclxuICAgICAgICBoYXNSb3V0ZSxcclxuICAgICAgICBnZXRSb3V0ZXMsXHJcbiAgICAgICAgcmVzb2x2ZSxcclxuICAgICAgICBvcHRpb25zLFxyXG4gICAgICAgIHB1c2gsXHJcbiAgICAgICAgcmVwbGFjZSxcclxuICAgICAgICBnbyxcclxuICAgICAgICBiYWNrOiAoKSA9PiBnbygtMSksXHJcbiAgICAgICAgZm9yd2FyZDogKCkgPT4gZ28oMSksXHJcbiAgICAgICAgYmVmb3JlRWFjaDogYmVmb3JlR3VhcmRzLmFkZCxcclxuICAgICAgICBiZWZvcmVSZXNvbHZlOiBiZWZvcmVSZXNvbHZlR3VhcmRzLmFkZCxcclxuICAgICAgICBhZnRlckVhY2g6IGFmdGVyR3VhcmRzLmFkZCxcclxuICAgICAgICBvbkVycm9yOiBlcnJvckhhbmRsZXJzLmFkZCxcclxuICAgICAgICBpc1JlYWR5LFxyXG4gICAgICAgIGluc3RhbGwoYXBwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlciA9IHRoaXM7XHJcbiAgICAgICAgICAgIGFwcC5jb21wb25lbnQoJ1JvdXRlckxpbmsnLCBSb3V0ZXJMaW5rKTtcclxuICAgICAgICAgICAgYXBwLmNvbXBvbmVudCgnUm91dGVyVmlldycsIFJvdXRlclZpZXcpO1xyXG4gICAgICAgICAgICBhcHAuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJHJvdXRlciA9IHJvdXRlcjtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywgJyRyb3V0ZScsIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHVucmVmKGN1cnJlbnRSb3V0ZSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyB0aGlzIGluaXRpYWwgbmF2aWdhdGlvbiBpcyBvbmx5IG5lY2Vzc2FyeSBvbiBjbGllbnQsIG9uIHNlcnZlciBpdCBkb2Vzbid0XHJcbiAgICAgICAgICAgIC8vIG1ha2Ugc2Vuc2UgYmVjYXVzZSBpdCB3aWxsIGNyZWF0ZSBhbiBleHRyYSB1bm5lY2Vzc2FyeSBuYXZpZ2F0aW9uIGFuZCBjb3VsZFxyXG4gICAgICAgICAgICAvLyBsZWFkIHRvIHByb2JsZW1zXHJcbiAgICAgICAgICAgIGlmIChpc0Jyb3dzZXIgJiZcclxuICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIHRoZSBpbml0aWFsIG5hdmlnYXRpb24gY2xpZW50IHNpZGUgdG8gYXZvaWQgcHVzaGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gbXVsdGlwbGUgdGltZXMgd2hlbiB0aGUgcm91dGVyIGlzIHVzZWQgaW4gbXVsdGlwbGUgYXBwc1xyXG4gICAgICAgICAgICAgICAgIXN0YXJ0ZWQgJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRSb3V0ZS52YWx1ZSA9PT0gU1RBUlRfTE9DQVRJT05fTk9STUFMSVpFRCkge1xyXG4gICAgICAgICAgICAgICAgLy8gc2VlIGFib3ZlXHJcbiAgICAgICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHB1c2gocm91dGVySGlzdG9yeS5sb2NhdGlvbikuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKCdVbmV4cGVjdGVkIGVycm9yIHdoZW4gc3RhcnRpbmcgdGhlIHJvdXRlcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVhY3RpdmVSb3V0ZSA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBTVEFSVF9MT0NBVElPTl9OT1JNQUxJWkVEKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB0aGUga2V5IG1hdGNoZXNcclxuICAgICAgICAgICAgICAgIHJlYWN0aXZlUm91dGVba2V5XSA9IGNvbXB1dGVkKCgpID0+IGN1cnJlbnRSb3V0ZS52YWx1ZVtrZXldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhcHAucHJvdmlkZShyb3V0ZXJLZXksIHJvdXRlcik7XHJcbiAgICAgICAgICAgIGFwcC5wcm92aWRlKHJvdXRlTG9jYXRpb25LZXksIHJlYWN0aXZlKHJlYWN0aXZlUm91dGUpKTtcclxuICAgICAgICAgICAgYXBwLnByb3ZpZGUocm91dGVyVmlld0xvY2F0aW9uS2V5LCBjdXJyZW50Um91dGUpO1xyXG4gICAgICAgICAgICBjb25zdCB1bm1vdW50QXBwID0gYXBwLnVubW91bnQ7XHJcbiAgICAgICAgICAgIGluc3RhbGxlZEFwcHMuYWRkKGFwcCk7XHJcbiAgICAgICAgICAgIGFwcC51bm1vdW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFsbGVkQXBwcy5kZWxldGUoYXBwKTtcclxuICAgICAgICAgICAgICAgIC8vIHRoZSByb3V0ZXIgaXMgbm90IGF0dGFjaGVkIHRvIGFuIGFwcCBhbnltb3JlXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFsbGVkQXBwcy5zaXplIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGludmFsaWRhdGUgdGhlIGN1cnJlbnQgbmF2aWdhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdMb2NhdGlvbiA9IFNUQVJUX0xPQ0FUSU9OX05PUk1BTElaRUQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSGlzdG9yeUxpc3RlbmVyICYmIHJlbW92ZUhpc3RvcnlMaXN0ZW5lcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSb3V0ZS52YWx1ZSA9IFNUQVJUX0xPQ0FUSU9OX05PUk1BTElaRUQ7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50QXBwKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICgoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykgJiYgaXNCcm93c2VyKSB7XHJcbiAgICAgICAgICAgICAgICBhZGREZXZ0b29scyhhcHAsIHJvdXRlciwgbWF0Y2hlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgfTtcclxuICAgIHJldHVybiByb3V0ZXI7XHJcbn1cclxuZnVuY3Rpb24gcnVuR3VhcmRRdWV1ZShndWFyZHMpIHtcclxuICAgIHJldHVybiBndWFyZHMucmVkdWNlKChwcm9taXNlLCBndWFyZCkgPT4gcHJvbWlzZS50aGVuKCgpID0+IGd1YXJkKCkpLCBQcm9taXNlLnJlc29sdmUoKSk7XHJcbn1cclxuZnVuY3Rpb24gZXh0cmFjdENoYW5naW5nUmVjb3Jkcyh0bywgZnJvbSkge1xyXG4gICAgY29uc3QgbGVhdmluZ1JlY29yZHMgPSBbXTtcclxuICAgIGNvbnN0IHVwZGF0aW5nUmVjb3JkcyA9IFtdO1xyXG4gICAgY29uc3QgZW50ZXJpbmdSZWNvcmRzID0gW107XHJcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1heChmcm9tLm1hdGNoZWQubGVuZ3RoLCB0by5tYXRjaGVkLmxlbmd0aCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcmVjb3JkRnJvbSA9IGZyb20ubWF0Y2hlZFtpXTtcclxuICAgICAgICBpZiAocmVjb3JkRnJvbSkge1xyXG4gICAgICAgICAgICBpZiAodG8ubWF0Y2hlZC5maW5kKHJlY29yZCA9PiBpc1NhbWVSb3V0ZVJlY29yZChyZWNvcmQsIHJlY29yZEZyb20pKSlcclxuICAgICAgICAgICAgICAgIHVwZGF0aW5nUmVjb3Jkcy5wdXNoKHJlY29yZEZyb20pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBsZWF2aW5nUmVjb3Jkcy5wdXNoKHJlY29yZEZyb20pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZWNvcmRUbyA9IHRvLm1hdGNoZWRbaV07XHJcbiAgICAgICAgaWYgKHJlY29yZFRvKSB7XHJcbiAgICAgICAgICAgIC8vIHRoZSB0eXBlIGRvZXNuJ3QgbWF0dGVyIGJlY2F1c2Ugd2UgYXJlIGNvbXBhcmluZyBwZXIgcmVmZXJlbmNlXHJcbiAgICAgICAgICAgIGlmICghZnJvbS5tYXRjaGVkLmZpbmQocmVjb3JkID0+IGlzU2FtZVJvdXRlUmVjb3JkKHJlY29yZCwgcmVjb3JkVG8pKSkge1xyXG4gICAgICAgICAgICAgICAgZW50ZXJpbmdSZWNvcmRzLnB1c2gocmVjb3JkVG8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtsZWF2aW5nUmVjb3JkcywgdXBkYXRpbmdSZWNvcmRzLCBlbnRlcmluZ1JlY29yZHNdO1xyXG59XG5cbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSByb3V0ZXIgaW5zdGFuY2UuIEVxdWl2YWxlbnQgdG8gdXNpbmcgYCRyb3V0ZXJgIGluc2lkZVxyXG4gKiB0ZW1wbGF0ZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiB1c2VSb3V0ZXIoKSB7XHJcbiAgICByZXR1cm4gaW5qZWN0KHJvdXRlcktleSk7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGN1cnJlbnQgcm91dGUgbG9jYXRpb24uIEVxdWl2YWxlbnQgdG8gdXNpbmcgYCRyb3V0ZWAgaW5zaWRlXHJcbiAqIHRlbXBsYXRlcy5cclxuICovXHJcbmZ1bmN0aW9uIHVzZVJvdXRlKCkge1xyXG4gICAgcmV0dXJuIGluamVjdChyb3V0ZUxvY2F0aW9uS2V5KTtcclxufVxuXG5leHBvcnQgeyBOYXZpZ2F0aW9uRmFpbHVyZVR5cGUsIFJvdXRlckxpbmssIFJvdXRlclZpZXcsIFNUQVJUX0xPQ0FUSU9OX05PUk1BTElaRUQgYXMgU1RBUlRfTE9DQVRJT04sIGNyZWF0ZU1lbW9yeUhpc3RvcnksIGNyZWF0ZVJvdXRlciwgY3JlYXRlUm91dGVyTWF0Y2hlciwgY3JlYXRlV2ViSGFzaEhpc3RvcnksIGNyZWF0ZVdlYkhpc3RvcnksIGlzTmF2aWdhdGlvbkZhaWx1cmUsIG1hdGNoZWRSb3V0ZUtleSwgb25CZWZvcmVSb3V0ZUxlYXZlLCBvbkJlZm9yZVJvdXRlVXBkYXRlLCBwYXJzZVF1ZXJ5LCByb3V0ZUxvY2F0aW9uS2V5LCByb3V0ZXJLZXksIHJvdXRlclZpZXdMb2NhdGlvbktleSwgc3RyaW5naWZ5UXVlcnksIHVzZUxpbmssIHVzZVJvdXRlLCB1c2VSb3V0ZXIsIHZpZXdEZXB0aEtleSB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue-router/dist/vue-router.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue-style-loader/lib/addStylesClient.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/vue-style-loader/lib/addStylesClient.js ***!
|
||
\**************************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return addStylesClient; });\n/* harmony import */ var _listToStyles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./listToStyles */ \"./node_modules/vue-style-loader/lib/listToStyles.js\");\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\n\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\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\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nfunction addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzPzQ5OWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFeUM7O0FBRXpDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpQkFBaUI7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmOztBQUVBOztBQUVBLGVBQWUsNkRBQVk7QUFDM0I7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw2REFBWTtBQUMzQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBO0FBQ0EsdUJBQXVCLDJCQUEyQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixtQkFBbUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMkJBQTJCO0FBQ2hEO0FBQ0E7QUFDQSxZQUFZLHVCQUF1QjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUJBQXFCLHVCQUF1QjtBQUM1QztBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4gIE1vZGlmaWVkIGJ5IEV2YW4gWW91IEB5eXg5OTA4MDNcbiovXG5cbmltcG9ydCBsaXN0VG9TdHlsZXMgZnJvbSAnLi9saXN0VG9TdHlsZXMnXG5cbnZhciBoYXNEb2N1bWVudCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcblxuaWYgKHR5cGVvZiBERUJVRyAhPT0gJ3VuZGVmaW5lZCcgJiYgREVCVUcpIHtcbiAgaWYgKCFoYXNEb2N1bWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAndnVlLXN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50LiAnICtcbiAgICBcIlVzZSB7IHRhcmdldDogJ25vZGUnIH0gaW4geW91ciBXZWJwYWNrIGNvbmZpZyB0byBpbmRpY2F0ZSBhIHNlcnZlci1yZW5kZXJpbmcgZW52aXJvbm1lbnQuXCJcbiAgKSB9XG59XG5cbi8qXG50eXBlIFN0eWxlT2JqZWN0ID0ge1xuICBpZDogbnVtYmVyO1xuICBwYXJ0czogQXJyYXk8U3R5bGVPYmplY3RQYXJ0PlxufVxuXG50eXBlIFN0eWxlT2JqZWN0UGFydCA9IHtcbiAgY3NzOiBzdHJpbmc7XG4gIG1lZGlhOiBzdHJpbmc7XG4gIHNvdXJjZU1hcDogP3N0cmluZ1xufVxuKi9cblxudmFyIHN0eWxlc0luRG9tID0gey8qXG4gIFtpZDogbnVtYmVyXToge1xuICAgIGlkOiBudW1iZXIsXG4gICAgcmVmczogbnVtYmVyLFxuICAgIHBhcnRzOiBBcnJheTwob2JqPzogU3R5bGVPYmplY3RQYXJ0KSA9PiB2b2lkPlxuICB9XG4qL31cblxudmFyIGhlYWQgPSBoYXNEb2N1bWVudCAmJiAoZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdKVxudmFyIHNpbmdsZXRvbkVsZW1lbnQgPSBudWxsXG52YXIgc2luZ2xldG9uQ291bnRlciA9IDBcbnZhciBpc1Byb2R1Y3Rpb24gPSBmYWxzZVxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fVxudmFyIG9wdGlvbnMgPSBudWxsXG52YXIgc3NySWRLZXkgPSAnZGF0YS12dWUtc3NyLWlkJ1xuXG4vLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbi8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcbnZhciBpc09sZElFID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL21zaWUgWzYtOV1cXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRTdHlsZXNDbGllbnQgKHBhcmVudElkLCBsaXN0LCBfaXNQcm9kdWN0aW9uLCBfb3B0aW9ucykge1xuICBpc1Byb2R1Y3Rpb24gPSBfaXNQcm9kdWN0aW9uXG5cbiAgb3B0aW9ucyA9IF9vcHRpb25zIHx8IHt9XG5cbiAgdmFyIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJZCwgbGlzdClcbiAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUgKG5ld0xpc3QpIHtcbiAgICB2YXIgbWF5UmVtb3ZlID0gW11cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAgICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgICBkb21TdHlsZS5yZWZzLS1cbiAgICAgIG1heVJlbW92ZS5wdXNoKGRvbVN0eWxlKVxuICAgIH1cbiAgICBpZiAobmV3TGlzdCkge1xuICAgICAgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBuZXdMaXN0KVxuICAgICAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXMgPSBbXVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldXG4gICAgICBpZiAoZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgZG9tU3R5bGUucGFydHNbal0oKVxuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHlsZS5pZF1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkU3R5bGVzVG9Eb20gKHN0eWxlcyAvKiBBcnJheTxTdHlsZU9iamVjdD4gKi8pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgaWYgKGRvbVN0eWxlKSB7XG4gICAgICBkb21TdHlsZS5yZWZzKytcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHNbal0oaXRlbS5wYXJ0c1tqXSlcbiAgICAgIH1cbiAgICAgIGZvciAoOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgaWYgKGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA+IGl0ZW0ucGFydHMubGVuZ3RoKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA9IGl0ZW0ucGFydHMubGVuZ3RoXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJ0cyA9IFtdXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgcGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIHN0eWxlc0luRG9tW2l0ZW0uaWRdID0geyBpZDogaXRlbS5pZCwgcmVmczogMSwgcGFydHM6IHBhcnRzIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50ICgpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJylcbiAgc3R5bGVFbGVtZW50LnR5cGUgPSAndGV4dC9jc3MnXG4gIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KVxuICByZXR1cm4gc3R5bGVFbGVtZW50XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlIChvYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gIHZhciB1cGRhdGUsIHJlbW92ZVxuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGVbJyArIHNzcklkS2V5ICsgJ349XCInICsgb2JqLmlkICsgJ1wiXScpXG5cbiAgaWYgKHN0eWxlRWxlbWVudCkge1xuICAgIGlmIChpc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGFuZCBpbiBwcm9kdWN0aW9uIG1vZGUuXG4gICAgICAvLyBzaW1wbHkgZG8gbm90aGluZy5cbiAgICAgIHJldHVybiBub29wXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGJ1dCBpbiBkZXYgbW9kZS5cbiAgICAgIC8vIGZvciBzb21lIHJlYXNvbiBDaHJvbWUgY2FuJ3QgaGFuZGxlIHNvdXJjZSBtYXAgaW4gc2VydmVyLXJlbmRlcmVkXG4gICAgICAvLyBzdHlsZSB0YWdzIC0gc291cmNlIG1hcHMgaW4gPHN0eWxlPiBvbmx5IHdvcmtzIGlmIHRoZSBzdHlsZSB0YWcgaXNcbiAgICAgIC8vIGNyZWF0ZWQgYW5kIGluc2VydGVkIGR5bmFtaWNhbGx5LiBTbyB3ZSByZW1vdmUgdGhlIHNlcnZlciByZW5kZXJlZFxuICAgICAgLy8gc3R5bGVzIGFuZCBpbmplY3QgbmV3IG9uZXMuXG4gICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzT2xkSUUpIHtcbiAgICAvLyB1c2Ugc2luZ2xldG9uIG1vZGUgZm9yIElFOS5cbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrK1xuICAgIHN0eWxlRWxlbWVudCA9IHNpbmdsZXRvbkVsZW1lbnQgfHwgKHNpbmdsZXRvbkVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKSlcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCBmYWxzZSlcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCB0cnVlKVxuICB9IGVsc2Uge1xuICAgIC8vIHVzZSBtdWx0aS1zdHlsZS10YWcgbW9kZSBpbiBhbGwgb3RoZXIgY2FzZXNcbiAgICBzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKVxuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZShvYmopXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChuZXdPYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiZcbiAgICAgICAgICBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJlxuICAgICAgICAgIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKVxuICAgIH1cbiAgfVxufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgdGV4dFN0b3JlID0gW11cblxuICByZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudFxuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpXG4gIH1cbn0pKClcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyAoc3R5bGVFbGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLmNzc1xuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKVxuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKVxuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXNcbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSlcbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2RlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZUVsZW1lbnQsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzc1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWFcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXBcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKVxuICB9XG4gIGlmIChvcHRpb25zLnNzcklkKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShzc3JJZEtleSwgb2JqLmlkKVxuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCkge1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZGV2dG9vbHMvZG9jcy9qYXZhc2NyaXB0LWRlYnVnZ2luZ1xuICAgIC8vIHRoaXMgbWFrZXMgc291cmNlIG1hcHMgaW5zaWRlIHN0eWxlIHRhZ3Mgd29yayBwcm9wZXJseSBpbiBDaHJvbWVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VVUkw9JyArIHNvdXJjZU1hcC5zb3VyY2VzWzBdICsgJyAqLydcbiAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSArICcgKi8nXG4gIH1cblxuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzXG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpXG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKVxuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/lib/addStylesClient.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue-style-loader/lib/listToStyles.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/vue-style-loader/lib/listToStyles.js ***!
|
||
\***********************************************************/
|
||
/*! exports provided: default */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return listToStyles; });\n/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nfunction listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzPzliYmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsaUJBQWlCLGlCQUFpQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsd0JBQXdCO0FBQzNELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2xpc3RUb1N0eWxlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNsYXRlcyB0aGUgbGlzdCBmb3JtYXQgcHJvZHVjZWQgYnkgY3NzLWxvYWRlciBpbnRvIHNvbWV0aGluZ1xuICogZWFzaWVyIHRvIG1hbmlwdWxhdGUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RUb1N0eWxlcyAocGFyZW50SWQsIGxpc3QpIHtcbiAgdmFyIHN0eWxlcyA9IFtdXG4gIHZhciBuZXdTdHlsZXMgPSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV1cbiAgICB2YXIgaWQgPSBpdGVtWzBdXG4gICAgdmFyIGNzcyA9IGl0ZW1bMV1cbiAgICB2YXIgbWVkaWEgPSBpdGVtWzJdXG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0ZW1bM11cbiAgICB2YXIgcGFydCA9IHtcbiAgICAgIGlkOiBwYXJlbnRJZCArICc6JyArIGksXG4gICAgICBjc3M6IGNzcyxcbiAgICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291cmNlTWFwXG4gICAgfVxuICAgIGlmICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHsgaWQ6IGlkLCBwYXJ0czogW3BhcnRdIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3R5bGVzXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-style-loader/lib/listToStyles.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue/dist/vue.cjs.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/vue/dist/vue.cjs.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar compilerDom = __webpack_require__(/*! @vue/compiler-dom */ \"./node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js\");\nvar runtimeDom = __webpack_require__(/*! @vue/runtime-dom */ \"./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js\");\nvar shared = __webpack_require__(/*! @vue/shared */ \"./node_modules/@vue/shared/dist/shared.esm-bundler.js\");\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n n[k] = e[k];\n });\n }\n n['default'] = e;\n return Object.freeze(n);\n}\n\nvar runtimeDom__namespace = /*#__PURE__*/_interopNamespace(runtimeDom);\n\n// This entry is the \"full-build\" that includes both the runtime\r\nconst compileCache = Object.create(null);\r\nfunction compileToFunction(template, options) {\r\n if (!shared.isString(template)) {\r\n if (template.nodeType) {\r\n template = template.innerHTML;\r\n }\r\n else {\r\n runtimeDom.warn(`invalid template option: `, template);\r\n return shared.NOOP;\r\n }\r\n }\r\n const key = template;\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n if (template[0] === '#') {\r\n const el = document.querySelector(template);\r\n if (!el) {\r\n runtimeDom.warn(`Template element not found or is empty: ${template}`);\r\n }\r\n // __UNSAFE__\r\n // Reason: potential execution of JS expressions in in-DOM template.\r\n // The user must make sure the in-DOM template is trusted. If it's rendered\r\n // by the server, the template should not contain any user data.\r\n template = el ? el.innerHTML : ``;\r\n }\r\n const { code } = compilerDom.compile(template, shared.extend({\r\n hoistStatic: true,\r\n onError: onError ,\r\n onWarn: e => onError(e, true) \r\n }, options));\r\n function onError(err, asWarning = false) {\r\n const message = asWarning\r\n ? err.message\r\n : `Template compilation error: ${err.message}`;\r\n const codeFrame = err.loc &&\r\n shared.generateCodeFrame(template, err.loc.start.offset, err.loc.end.offset);\r\n runtimeDom.warn(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n // The wildcard import results in a huge object with every export\r\n // with keys that cannot be mangled, and can be quite heavy size-wise.\r\n // In the global build we know `Vue` is available globally so we can avoid\r\n // the wildcard object.\r\n const render = (new Function('Vue', code)(runtimeDom__namespace));\r\n render._rc = true;\r\n return (compileCache[key] = render);\r\n}\r\nruntimeDom.registerRuntimeCompiler(compileToFunction);\n\nObject.keys(runtimeDom).forEach(function (k) {\n if (k !== 'default') exports[k] = runtimeDom[k];\n});\nexports.compile = compileToFunction;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLmNqcy5qcz9kNGQ3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLDhDQUE4QyxjQUFjOztBQUU1RCxrQkFBa0IsbUJBQU8sQ0FBQyw0RkFBbUI7QUFDN0MsaUJBQWlCLG1CQUFPLENBQUMseUZBQWtCO0FBQzNDLGFBQWEsbUJBQU8sQ0FBQywwRUFBYTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsU0FBUztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLFlBQVk7QUFDekQ7QUFDQTtBQUNBLHVDQUF1QyxRQUFRLElBQUksVUFBVTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS9kaXN0L3Z1ZS5janMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciBjb21waWxlckRvbSA9IHJlcXVpcmUoJ0B2dWUvY29tcGlsZXItZG9tJyk7XG52YXIgcnVudGltZURvbSA9IHJlcXVpcmUoJ0B2dWUvcnVudGltZS1kb20nKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCdAdnVlL3NoYXJlZCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcE5hbWVzcGFjZShlKSB7XG4gIGlmIChlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7XG4gIHZhciBuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKGUpIHtcbiAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBuW2tdID0gZVtrXTtcbiAgICB9KTtcbiAgfVxuICBuWydkZWZhdWx0J10gPSBlO1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShuKTtcbn1cblxudmFyIHJ1bnRpbWVEb21fX25hbWVzcGFjZSA9IC8qI19fUFVSRV9fKi9faW50ZXJvcE5hbWVzcGFjZShydW50aW1lRG9tKTtcblxuLy8gVGhpcyBlbnRyeSBpcyB0aGUgXCJmdWxsLWJ1aWxkXCIgdGhhdCBpbmNsdWRlcyBib3RoIHRoZSBydW50aW1lXHJcbmNvbnN0IGNvbXBpbGVDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbmZ1bmN0aW9uIGNvbXBpbGVUb0Z1bmN0aW9uKHRlbXBsYXRlLCBvcHRpb25zKSB7XHJcbiAgICBpZiAoIXNoYXJlZC5pc1N0cmluZyh0ZW1wbGF0ZSkpIHtcclxuICAgICAgICBpZiAodGVtcGxhdGUubm9kZVR5cGUpIHtcclxuICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5pbm5lckhUTUw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBydW50aW1lRG9tLndhcm4oYGludmFsaWQgdGVtcGxhdGUgb3B0aW9uOiBgLCB0ZW1wbGF0ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBzaGFyZWQuTk9PUDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBrZXkgPSB0ZW1wbGF0ZTtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNvbXBpbGVDYWNoZVtrZXldO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGVtcGxhdGVbMF0gPT09ICcjJykge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0ZW1wbGF0ZSk7XHJcbiAgICAgICAgaWYgKCFlbCkge1xyXG4gICAgICAgICAgICBydW50aW1lRG9tLndhcm4oYFRlbXBsYXRlIGVsZW1lbnQgbm90IGZvdW5kIG9yIGlzIGVtcHR5OiAke3RlbXBsYXRlfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBfX1VOU0FGRV9fXHJcbiAgICAgICAgLy8gUmVhc29uOiBwb3RlbnRpYWwgZXhlY3V0aW9uIG9mIEpTIGV4cHJlc3Npb25zIGluIGluLURPTSB0ZW1wbGF0ZS5cclxuICAgICAgICAvLyBUaGUgdXNlciBtdXN0IG1ha2Ugc3VyZSB0aGUgaW4tRE9NIHRlbXBsYXRlIGlzIHRydXN0ZWQuIElmIGl0J3MgcmVuZGVyZWRcclxuICAgICAgICAvLyBieSB0aGUgc2VydmVyLCB0aGUgdGVtcGxhdGUgc2hvdWxkIG5vdCBjb250YWluIGFueSB1c2VyIGRhdGEuXHJcbiAgICAgICAgdGVtcGxhdGUgPSBlbCA/IGVsLmlubmVySFRNTCA6IGBgO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBjb2RlIH0gPSBjb21waWxlckRvbS5jb21waWxlKHRlbXBsYXRlLCBzaGFyZWQuZXh0ZW5kKHtcclxuICAgICAgICBob2lzdFN0YXRpYzogdHJ1ZSxcclxuICAgICAgICBvbkVycm9yOiBvbkVycm9yICxcclxuICAgICAgICBvbldhcm46IGUgPT4gb25FcnJvcihlLCB0cnVlKSBcclxuICAgIH0sIG9wdGlvbnMpKTtcclxuICAgIGZ1bmN0aW9uIG9uRXJyb3IoZXJyLCBhc1dhcm5pbmcgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhc1dhcm5pbmdcclxuICAgICAgICAgICAgPyBlcnIubWVzc2FnZVxyXG4gICAgICAgICAgICA6IGBUZW1wbGF0ZSBjb21waWxhdGlvbiBlcnJvcjogJHtlcnIubWVzc2FnZX1gO1xyXG4gICAgICAgIGNvbnN0IGNvZGVGcmFtZSA9IGVyci5sb2MgJiZcclxuICAgICAgICAgICAgc2hhcmVkLmdlbmVyYXRlQ29kZUZyYW1lKHRlbXBsYXRlLCBlcnIubG9jLnN0YXJ0Lm9mZnNldCwgZXJyLmxvYy5lbmQub2Zmc2V0KTtcclxuICAgICAgICBydW50aW1lRG9tLndhcm4oY29kZUZyYW1lID8gYCR7bWVzc2FnZX1cXG4ke2NvZGVGcmFtZX1gIDogbWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgICAvLyBUaGUgd2lsZGNhcmQgaW1wb3J0IHJlc3VsdHMgaW4gYSBodWdlIG9iamVjdCB3aXRoIGV2ZXJ5IGV4cG9ydFxyXG4gICAgLy8gd2l0aCBrZXlzIHRoYXQgY2Fubm90IGJlIG1hbmdsZWQsIGFuZCBjYW4gYmUgcXVpdGUgaGVhdnkgc2l6ZS13aXNlLlxyXG4gICAgLy8gSW4gdGhlIGdsb2JhbCBidWlsZCB3ZSBrbm93IGBWdWVgIGlzIGF2YWlsYWJsZSBnbG9iYWxseSBzbyB3ZSBjYW4gYXZvaWRcclxuICAgIC8vIHRoZSB3aWxkY2FyZCBvYmplY3QuXHJcbiAgICBjb25zdCByZW5kZXIgPSAobmV3IEZ1bmN0aW9uKCdWdWUnLCBjb2RlKShydW50aW1lRG9tX19uYW1lc3BhY2UpKTtcclxuICAgIHJlbmRlci5fcmMgPSB0cnVlO1xyXG4gICAgcmV0dXJuIChjb21waWxlQ2FjaGVba2V5XSA9IHJlbmRlcik7XHJcbn1cclxucnVudGltZURvbS5yZWdpc3RlclJ1bnRpbWVDb21waWxlcihjb21waWxlVG9GdW5jdGlvbik7XG5cbk9iamVjdC5rZXlzKHJ1bnRpbWVEb20pLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgaWYgKGsgIT09ICdkZWZhdWx0JykgZXhwb3J0c1trXSA9IHJ1bnRpbWVEb21ba107XG59KTtcbmV4cG9ydHMuY29tcGlsZSA9IGNvbXBpbGVUb0Z1bmN0aW9uO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vue/dist/vue.cjs.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue/dist/vue.runtime.esm-bundler.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/vue/dist/vue.runtime.esm-bundler.js ***!
|
||
\**********************************************************/
|
||
/*! exports provided: EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref, camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey, BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId, Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers, compile */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compile\", function() { return compile; });\n/* harmony import */ var _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vue/runtime-dom */ \"./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EffectScope\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"EffectScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactiveEffect\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"ReactiveEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"customRef\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"customRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"effect\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"effect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"effectScope\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"effectScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentScope\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentScope\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isProxy\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"isProxy\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isReactive\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"isReactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isReadonly\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"isReadonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRef\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"isRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isShallow\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"isShallow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"markRaw\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"markRaw\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onScopeDispose\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onScopeDispose\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"proxyRefs\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"proxyRefs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reactive\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"readonly\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"readonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ref\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"ref\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowReactive\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"shallowReactive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowReadonly\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"shallowReadonly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shallowRef\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"shallowRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stop\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"stop\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRaw\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"toRaw\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRef\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"toRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRefs\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"toRefs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerRef\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"triggerRef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unref\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"unref\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"capitalize\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"capitalize\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeClass\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"normalizeClass\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeProps\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"normalizeProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeStyle\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStyle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toDisplayString\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"toDisplayString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toHandlerKey\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"toHandlerKey\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BaseTransition\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"BaseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Comment\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"Comment\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Fragment\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KeepAlive\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"KeepAlive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Static\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"Static\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Suspense\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"Suspense\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Teleport\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"Teleport\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"Text\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"callWithAsyncErrorHandling\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"callWithAsyncErrorHandling\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"callWithErrorHandling\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"callWithErrorHandling\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cloneVNode\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"cloneVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compatUtils\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"compatUtils\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"computed\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"computed\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createBlock\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createBlock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createCommentVNode\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createCommentVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createElementBlock\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createElementBlock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createElementVNode\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createElementVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createHydrationRenderer\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createHydrationRenderer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createPropsRestProxy\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createPropsRestProxy\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createRenderer\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createRenderer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSlots\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createSlots\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createStaticVNode\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createStaticVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTextVNode\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createTextVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVNode\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineAsyncComponent\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"defineAsyncComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineComponent\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"defineComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineEmits\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"defineEmits\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineExpose\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"defineExpose\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineProps\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"defineProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"devtools\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"devtools\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentInstance\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"getCurrentInstance\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTransitionRawChildren\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"getTransitionRawChildren\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"guardReactiveProps\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"guardReactiveProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"h\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"handleError\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"handleError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"initCustomFormatter\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"initCustomFormatter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"inject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isMemoSame\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"isMemoSame\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRuntimeOnly\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"isRuntimeOnly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isVNode\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"isVNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mergeDefaults\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"mergeDefaults\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mergeProps\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"mergeProps\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nextTick\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"nextTick\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onActivated\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onActivated\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onBeforeMount\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onBeforeMount\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onBeforeUnmount\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onBeforeUnmount\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onBeforeUpdate\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onBeforeUpdate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onDeactivated\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onDeactivated\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onErrorCaptured\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onErrorCaptured\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onMounted\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onMounted\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onRenderTracked\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onRenderTracked\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onRenderTriggered\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onRenderTriggered\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onServerPrefetch\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onServerPrefetch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUnmounted\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onUnmounted\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUpdated\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"onUpdated\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openBlock\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"openBlock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"popScopeId\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"popScopeId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"provide\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"provide\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pushScopeId\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"pushScopeId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"queuePostFlushCb\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"queuePostFlushCb\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerRuntimeCompiler\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"registerRuntimeCompiler\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderList\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"renderList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderSlot\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"renderSlot\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveComponent\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"resolveComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveDirective\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"resolveDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveDynamicComponent\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"resolveDynamicComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveFilter\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"resolveFilter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveTransitionHooks\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"resolveTransitionHooks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setBlockTracking\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"setBlockTracking\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setDevtoolsHook\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"setDevtoolsHook\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setTransitionHooks\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"setTransitionHooks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ssrContextKey\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"ssrContextKey\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ssrUtils\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"ssrUtils\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toHandlers\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"toHandlers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transformVNodeArgs\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"transformVNodeArgs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useAttrs\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"useAttrs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useSSRContext\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"useSSRContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useSlots\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"useSlots\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useTransitionState\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"useTransitionState\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"version\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"warn\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"warn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"watch\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"watch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"watchEffect\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"watchEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"watchPostEffect\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"watchPostEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"watchSyncEffect\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"watchSyncEffect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withAsyncContext\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"withAsyncContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withCtx\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"withCtx\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withDefaults\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"withDefaults\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withDirectives\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"withDirectives\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withMemo\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"withMemo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withScopeId\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"withScopeId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Transition\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"Transition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransitionGroup\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"TransitionGroup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VueElement\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"VueElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createApp\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createApp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSSRApp\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"createSSRApp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineCustomElement\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"defineCustomElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defineSSRCustomElement\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"defineSSRCustomElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hydrate\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"hydrate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"initDirectivesForSSR\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"initDirectivesForSSR\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useCssModule\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"useCssModule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useCssVars\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"useCssVars\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vModelCheckbox\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"vModelCheckbox\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vModelDynamic\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"vModelDynamic\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vModelRadio\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"vModelRadio\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vModelSelect\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"vModelSelect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vModelText\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"vModelText\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vShow\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"vShow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withKeys\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"withKeys\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withModifiers\", function() { return _vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"withModifiers\"]; });\n\n\n\n\nfunction initDev() {\r\n {\r\n Object(_vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"initCustomFormatter\"])();\r\n }\r\n}\n\n// This entry exports the runtime only, and is built as\r\nif ((true)) {\r\n initDev();\r\n}\r\nconst compile = () => {\r\n if ((true)) {\r\n Object(_vue_runtime_dom__WEBPACK_IMPORTED_MODULE_0__[\"warn\"])(`Runtime compilation is not supported in this build of Vue.` +\r\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\r\n ) /* should not happen */);\r\n }\r\n};\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLnJ1bnRpbWUuZXNtLWJ1bmRsZXIuanM/N2EyMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDNUI7O0FBRWpDO0FBQ0E7QUFDQSxRQUFRLDRFQUFtQjtBQUMzQjtBQUNBOztBQUVBO0FBQ0EsS0FBSyxJQUFxQztBQUMxQztBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDLFFBQVEsNkRBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFbUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLnJ1bnRpbWUuZXNtLWJ1bmRsZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbml0Q3VzdG9tRm9ybWF0dGVyLCB3YXJuIH0gZnJvbSAnQHZ1ZS9ydW50aW1lLWRvbSc7XG5leHBvcnQgKiBmcm9tICdAdnVlL3J1bnRpbWUtZG9tJztcblxuZnVuY3Rpb24gaW5pdERldigpIHtcclxuICAgIHtcclxuICAgICAgICBpbml0Q3VzdG9tRm9ybWF0dGVyKCk7XHJcbiAgICB9XHJcbn1cblxuLy8gVGhpcyBlbnRyeSBleHBvcnRzIHRoZSBydW50aW1lIG9ubHksIGFuZCBpcyBidWlsdCBhc1xyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICBpbml0RGV2KCk7XHJcbn1cclxuY29uc3QgY29tcGlsZSA9ICgpID0+IHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBSdW50aW1lIGNvbXBpbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBWdWUuYCArXHJcbiAgICAgICAgICAgIChgIENvbmZpZ3VyZSB5b3VyIGJ1bmRsZXIgdG8gYWxpYXMgXCJ2dWVcIiB0byBcInZ1ZS9kaXN0L3Z1ZS5lc20tYnVuZGxlci5qc1wiLmBcclxuICAgICAgICAgICAgICAgICkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8pO1xyXG4gICAgfVxyXG59O1xuXG5leHBvcnQgeyBjb21waWxlIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue/dist/vue.runtime.esm-bundler.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vue/index.js":
|
||
/*!***********************************!*\
|
||
!*** ./node_modules/vue/index.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./dist/vue.cjs.js */ \"./node_modules/vue/dist/vue.cjs.js\")\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlL2luZGV4LmpzPzIxMzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQVk7O0FBRVosSUFBSSxLQUFxQyxFQUFFLEVBRTFDO0FBQ0QsbUJBQW1CLG1CQUFPLENBQUMsNkRBQW1CO0FBQzlDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZGlzdC92dWUuY2pzLnByb2QuanMnKVxufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Rpc3QvdnVlLmNqcy5qcycpXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue/index.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/vuex/dist/vuex.esm-browser.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/vuex/dist/vuex.esm-browser.js ***!
|
||
\****************************************************/
|
||
/*! exports provided: default, Store, createLogger, createNamespacedHelpers, createStore, mapActions, mapGetters, mapMutations, mapState, storeKey, useStore */
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Store\", function() { return Store; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createLogger\", function() { return createLogger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createNamespacedHelpers\", function() { return createNamespacedHelpers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createStore\", function() { return createStore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapActions\", function() { return mapActions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapGetters\", function() { return mapGetters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapMutations\", function() { return mapMutations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapState\", function() { return mapState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"storeKey\", function() { return storeKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useStore\", function() { return useStore; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _vue_devtools_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vue/devtools-api */ \"./node_modules/@vue/devtools-api/lib/esm/index.js\");\n/*!\n * vuex v4.0.2\n * (c) 2021 Evan You\n * @license MIT\n */\n\n\n\nvar storeKey = 'store';\n\nfunction useStore (key) {\n if ( key === void 0 ) key = null;\n\n return Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(key !== null ? key : storeKey)\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset state\n resetStoreState(store, state, hot);\n}\n\nfunction resetStoreState (store, state, hot) {\n var oldState = store._state;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computedObj = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldState.\n // using partial to return function with only arguments preserved in closure environment.\n computedObj[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n // TODO: use `computed` when it's possible. at the moment we can't due to\n // https://github.com/vuejs/vuex/pull/1883\n get: function () { return computedObj[key](); },\n enumerable: true // for local getters\n });\n });\n\n store._state = Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"reactive\"])({\n data: state\n });\n\n // enable strict mode for new state\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldState) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldState.data = null;\n });\n }\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && true) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n parentState[moduleName] = module.state;\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (!store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (!store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by state update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])(function () { return store._state.data; }, function () {\n {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, flush: 'sync' });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nvar LABEL_VUEX_BINDINGS = 'vuex bindings';\nvar MUTATIONS_LAYER_ID = 'vuex:mutations';\nvar ACTIONS_LAYER_ID = 'vuex:actions';\nvar INSPECTOR_ID = 'vuex';\n\nvar actionId = 0;\n\nfunction addDevtools (app, store) {\n Object(_vue_devtools_api__WEBPACK_IMPORTED_MODULE_1__[\"setupDevtoolsPlugin\"])(\n {\n id: 'org.vuejs.vuex',\n app: app,\n label: 'Vuex',\n homepage: 'https://next.vuex.vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\n packageName: 'vuex',\n componentStateTypes: [LABEL_VUEX_BINDINGS]\n },\n function (api) {\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: 'Vuex Mutations',\n color: COLOR_LIME_500\n });\n\n api.addTimelineLayer({\n id: ACTIONS_LAYER_ID,\n label: 'Vuex Actions',\n color: COLOR_LIME_500\n });\n\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n\n api.on.getInspectorTree(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n if (payload.filter) {\n var nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [\n formatStoreForInspectorTree(store._modules.root, '')\n ];\n }\n }\n });\n\n api.on.getInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n makeLocalGetters(store, modulePath);\n payload.state = formatStoreForInspectorState(\n getStoreModule(store._modules, modulePath),\n modulePath === 'root' ? store.getters : store._makeLocalGettersCache,\n modulePath\n );\n }\n });\n\n api.on.editInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n var path = payload.path;\n if (modulePath !== 'root') {\n path = modulePath.split('/').filter(Boolean).concat( path);\n }\n store._withCommit(function () {\n payload.set(store._state.data, path, payload.state.value);\n });\n }\n });\n\n store.subscribe(function (mutation, state) {\n var data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = state;\n\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data: data\n }\n });\n });\n\n store.subscribeAction({\n before: function (action, state) {\n var data = {};\n if (action.payload) {\n data.payload = action.payload;\n }\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data: data\n }\n });\n },\n after: function (action, state) {\n var data = {};\n var duration = Date.now() - action._time;\n data.duration = {\n _custom: {\n type: 'duration',\n display: (duration + \"ms\"),\n tooltip: 'Action duration',\n value: duration\n }\n };\n if (action.payload) {\n data.payload = action.payload;\n }\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data: data\n }\n });\n }\n });\n }\n );\n}\n\n// extracted from tailwind palette\nvar COLOR_LIME_500 = 0x84cc16;\nvar COLOR_DARK = 0x666666;\nvar COLOR_WHITE = 0xffffff;\n\nvar TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: COLOR_WHITE,\n backgroundColor: COLOR_DARK\n};\n\n/**\n * @param {string} path\n */\nfunction extractNameFromPath (path) {\n return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root'\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorNode}\n */\nfunction formatStoreForInspectorTree (module, path) {\n return {\n id: path || 'root',\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: extractNameFromPath(path),\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys(module._children).map(function (moduleName) { return formatStoreForInspectorTree(\n module._children[moduleName],\n path + moduleName + '/'\n ); }\n )\n }\n}\n\n/**\n * @param {import('@vue/devtools-api').CustomInspectorNode[]} result\n * @param {*} module\n * @param {string} filter\n * @param {string} path\n */\nfunction flattenStoreForInspectorTree (result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || 'root',\n label: path.endsWith('/') ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n Object.keys(module._children).forEach(function (moduleName) {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + '/');\n });\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorState}\n */\nfunction formatStoreForInspectorState (module, getters, path) {\n getters = path === 'root' ? getters : getters[path];\n var gettersKeys = Object.keys(getters);\n var storeState = {\n state: Object.keys(module.state).map(function (key) { return ({\n key: key,\n editable: true,\n value: module.state[key]\n }); })\n };\n\n if (gettersKeys.length) {\n var tree = transformPathsToObjectTree(getters);\n storeState.getters = Object.keys(tree).map(function (key) { return ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(function () { return tree[key]; })\n }); });\n }\n\n return storeState\n}\n\nfunction transformPathsToObjectTree (getters) {\n var result = {};\n Object.keys(getters).forEach(function (key) {\n var path = key.split('/');\n if (path.length > 1) {\n var target = result;\n var leafKey = path.pop();\n path.forEach(function (p) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n target = target[p]._custom.value;\n });\n target[leafKey] = canThrow(function () { return getters[key]; });\n } else {\n result[key] = canThrow(function () { return getters[key]; });\n }\n });\n return result\n}\n\nfunction getStoreModule (moduleMap, path) {\n var names = path.split('/').filter(function (n) { return n; });\n return names.reduce(\n function (module, moduleName, i) {\n var child = module[moduleName];\n if (!child) {\n throw new Error((\"Missing module \\\"\" + moduleName + \"\\\" for path \\\"\" + path + \"\\\".\"))\n }\n return i === names.length - 1 ? child : child._children\n },\n path === 'root' ? moduleMap : moduleMap.root._children\n )\n}\n\nfunction canThrow (cb) {\n try {\n return cb()\n } catch (e) {\n return e\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors$1 = { namespaced: { configurable: true } };\n\nprototypeAccessors$1.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors$1 );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nfunction createStore (options) {\n return new Store(options)\n}\n\nvar Store = function Store (options) {\n var this$1$1 = this;\n if ( options === void 0 ) options = {};\n\n {\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n var devtools = options.devtools;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._makeLocalGettersCache = Object.create(null);\n this._devtools = devtools;\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store state, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreState(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1$1); });\n};\n\nvar prototypeAccessors = { state: { configurable: true } };\n\nStore.prototype.install = function install (app, injectKey) {\n app.provide(injectKey || storeKey, this);\n app.config.globalProperties.$store = this;\n\n var useDevtools = this._devtools !== undefined\n ? this._devtools\n : true ;\n\n if (useDevtools) {\n addDevtools(app, this);\n }\n};\n\nprototypeAccessors.state.get = function () {\n return this._state.data\n};\n\nprototypeAccessors.state.set = function (v) {\n {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1$1.state); });\n\n if (\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1$1.state); });\n } catch (e) {\n {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1$1.state); });\n } catch (e) {\n {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1$1.state, error); });\n } catch (e) {\n {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch$1 (getter, cb, options) {\n var this$1$1 = this;\n\n {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return Object(vue__WEBPACK_IMPORTED_MODULE_0__[\"watch\"])(function () { return getter(this$1$1.state, this$1$1.getters); }, cb, Object.assign({}, options))\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1$1 = this;\n\n this._withCommit(function () {\n this$1$1._state.data = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreState(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1$1.state, path.slice(0, -1));\n delete parentState[path[path.length - 1]];\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors );\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if (!isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if (!isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if (!isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if (!(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if (!isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if (!module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n version: '4.0.2',\n Store: Store,\n storeKey: storeKey,\n createStore: createStore,\n useStore: useStore,\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVleC9kaXN0L3Z1ZXguZXNtLWJyb3dzZXIuanM/NTUwMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOEM7QUFDVTs7QUFFeEQ7O0FBRUE7QUFDQTs7QUFFQSxTQUFTLGtEQUFNO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxjQUFjO0FBQ3pCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0MsMkJBQTJCLEVBQUU7QUFDbkU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQywwQkFBMEIsRUFBRTtBQUN2RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkJBQTJCLEVBQUU7QUFDckQ7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSCxpQkFBaUIsb0RBQVE7QUFDekI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3Qyx1QkFBdUIsMkNBQTJDO0FBQ2xFLEtBQUs7QUFDTDtBQUNBLHdCQUF3QiwwQ0FBMEM7QUFDbEU7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDRCQUE0QixFQUFFO0FBQ3hEO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFLGlEQUFLLGNBQWMsMEJBQTBCLEVBQUU7QUFDakQ7QUFDQTtBQUNBO0FBQ0EsR0FBRyxHQUFHLDRCQUE0QjtBQUNsQzs7QUFFQTtBQUNBLDRDQUE0QyxtQkFBbUIsRUFBRTtBQUNqRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEVBQUUsNkVBQW1CO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVFQUF1RTtBQUN2RTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsa0RBQWtEO0FBQzdELFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFLEVBQUU7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsK0RBQStEO0FBQy9EO0FBQ0E7QUFDQSxtQ0FBbUMsa0JBQWtCLEVBQUU7QUFDdkQsS0FBSyxFQUFFLEVBQUU7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsOENBQThDLHFCQUFxQixFQUFFO0FBQ3JFLEtBQUs7QUFDTCwwQ0FBMEMscUJBQXFCLEVBQUU7QUFDakU7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRCxVQUFVLEVBQUU7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLGNBQWMscUJBQXFCOztBQUUvRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLG9DQUFvQyxFQUFFO0FBQ2xFO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEI7QUFDNUIsdUVBQXVFLEVBQUU7QUFDekU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEI7O0FBRTFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0M7QUFDaEMsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyx5QkFBeUIsRUFBRTtBQUNoRTs7QUFFQSwwQkFBMEIsU0FBUyxxQkFBcUI7O0FBRXhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQSw2QkFBNkIsc0NBQXNDLEVBQUU7O0FBRXJFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDbkQsK0JBQStCLDJDQUEyQyxFQUFFO0FBQzVFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdELHlCQUF5QixFQUFFO0FBQzNFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGtCQUFrQixFQUFFO0FBQ3RELG1DQUFtQywwQ0FBMEMsRUFBRTtBQUMvRSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxrQ0FBa0Msa0JBQWtCLEVBQUU7QUFDdEQsbUNBQW1DLGlEQUFpRCxFQUFFO0FBQ3RGLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlDQUF5QyxhQUFhO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGlEQUFLLGNBQWMsaURBQWlELEVBQUUsc0JBQXNCO0FBQ3JHOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBLGlDQUFpQyxlQUFlOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUNBQWlDLGVBQWU7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsaUNBQWlDLGVBQWU7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSDtBQUNBO0FBQ0EsaUNBQWlDLGlCQUFpQixHQUFHLGlCQUFpQixHQUFHLGlCQUFpQjtBQUMxRixpQkFBaUIsaUJBQWlCLFFBQVEsbUJBQW1CLEdBQUcsbUJBQW1CLEdBQUcsbUJBQW1CO0FBQ3pHLFdBQVcsYUFBYTtBQUN4QixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLFVBQVUscUJBQXFCLEVBQUUsRUFBRTtBQUNqRSwyQ0FBMkMsVUFBVSwwQkFBMEIsRUFBRSxFQUFFO0FBQ25GOztBQUVBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMsMEJBQTBCLGlGQUFpRixhQUFhO0FBQ3hILG9DQUFvQywrREFBK0QsY0FBYztBQUNqSCxvREFBb0QsNkVBQTZFLFlBQVk7QUFDN0ksc0NBQXNDLHlFQUF5RSxhQUFhO0FBQzVILGdEQUFnRCx5RUFBeUUsWUFBWTtBQUNySSxzQ0FBc0M7QUFDdEMsa0NBQWtDO0FBQ2xDLDBCQUEwQjs7QUFFMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0RBQXNEO0FBQ3RELG9EQUFvRDtBQUNwRCxzREFBc0Q7QUFDdEQ7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrREFBa0Q7QUFDbEQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsb0VBQUssRUFBQztBQUNvSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy92dWV4L2Rpc3QvdnVleC5lc20tYnJvd3Nlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogdnVleCB2NC4wLjJcbiAqIChjKSAyMDIxIEV2YW4gWW91XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuaW1wb3J0IHsgaW5qZWN0LCByZWFjdGl2ZSwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuaW1wb3J0IHsgc2V0dXBEZXZ0b29sc1BsdWdpbiB9IGZyb20gJ0B2dWUvZGV2dG9vbHMtYXBpJztcblxudmFyIHN0b3JlS2V5ID0gJ3N0b3JlJztcblxuZnVuY3Rpb24gdXNlU3RvcmUgKGtleSkge1xuICBpZiAoIGtleSA9PT0gdm9pZCAwICkga2V5ID0gbnVsbDtcblxuICByZXR1cm4gaW5qZWN0KGtleSAhPT0gbnVsbCA/IGtleSA6IHN0b3JlS2V5KVxufVxuXG4vKipcbiAqIEdldCB0aGUgZmlyc3QgaXRlbSB0aGF0IHBhc3MgdGhlIHRlc3RcbiAqIGJ5IHNlY29uZCBhcmd1bWVudCBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGxpc3RcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIGZpbmQgKGxpc3QsIGYpIHtcbiAgcmV0dXJuIGxpc3QuZmlsdGVyKGYpWzBdXG59XG5cbi8qKlxuICogRGVlcCBjb3B5IHRoZSBnaXZlbiBvYmplY3QgY29uc2lkZXJpbmcgY2lyY3VsYXIgc3RydWN0dXJlLlxuICogVGhpcyBmdW5jdGlvbiBjYWNoZXMgYWxsIG5lc3RlZCBvYmplY3RzIGFuZCBpdHMgY29waWVzLlxuICogSWYgaXQgZGV0ZWN0cyBjaXJjdWxhciBzdHJ1Y3R1cmUsIHVzZSBjYWNoZWQgY29weSB0byBhdm9pZCBpbmZpbml0ZSBsb29wLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGNhY2hlXG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiBkZWVwQ29weSAob2JqLCBjYWNoZSkge1xuICBpZiAoIGNhY2hlID09PSB2b2lkIDAgKSBjYWNoZSA9IFtdO1xuXG4gIC8vIGp1c3QgcmV0dXJuIGlmIG9iaiBpcyBpbW11dGFibGUgdmFsdWVcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmpcbiAgfVxuXG4gIC8vIGlmIG9iaiBpcyBoaXQsIGl0IGlzIGluIGNpcmN1bGFyIHN0cnVjdHVyZVxuICB2YXIgaGl0ID0gZmluZChjYWNoZSwgZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMub3JpZ2luYWwgPT09IG9iajsgfSk7XG4gIGlmIChoaXQpIHtcbiAgICByZXR1cm4gaGl0LmNvcHlcbiAgfVxuXG4gIHZhciBjb3B5ID0gQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fTtcbiAgLy8gcHV0IHRoZSBjb3B5IGludG8gY2FjaGUgYXQgZmlyc3RcbiAgLy8gYmVjYXVzZSB3ZSB3YW50IHRvIHJlZmVyIGl0IGluIHJlY3Vyc2l2ZSBkZWVwQ29weVxuICBjYWNoZS5wdXNoKHtcbiAgICBvcmlnaW5hbDogb2JqLFxuICAgIGNvcHk6IGNvcHlcbiAgfSk7XG5cbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBjb3B5W2tleV0gPSBkZWVwQ29weShvYmpba2V5XSwgY2FjaGUpO1xuICB9KTtcblxuICByZXR1cm4gY29weVxufVxuXG4vKipcbiAqIGZvckVhY2ggZm9yIG9iamVjdFxuICovXG5mdW5jdGlvbiBmb3JFYWNoVmFsdWUgKG9iaiwgZm4pIHtcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGZuKG9ialtrZXldLCBrZXkpOyB9KTtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSAodmFsKSB7XG4gIHJldHVybiB2YWwgJiYgdHlwZW9mIHZhbC50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGFzc2VydCAoY29uZGl0aW9uLCBtc2cpIHtcbiAgaWYgKCFjb25kaXRpb24pIHsgdGhyb3cgbmV3IEVycm9yKChcIlt2dWV4XSBcIiArIG1zZykpIH1cbn1cblxuZnVuY3Rpb24gcGFydGlhbCAoZm4sIGFyZykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmbihhcmcpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJpY1N1YnNjcmliZSAoZm4sIHN1YnMsIG9wdGlvbnMpIHtcbiAgaWYgKHN1YnMuaW5kZXhPZihmbikgPCAwKSB7XG4gICAgb3B0aW9ucyAmJiBvcHRpb25zLnByZXBlbmRcbiAgICAgID8gc3Vicy51bnNoaWZ0KGZuKVxuICAgICAgOiBzdWJzLnB1c2goZm4pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGkgPSBzdWJzLmluZGV4T2YoZm4pO1xuICAgIGlmIChpID4gLTEpIHtcbiAgICAgIHN1YnMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXNldFN0b3JlIChzdG9yZSwgaG90KSB7XG4gIHN0b3JlLl9hY3Rpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX211dGF0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl93cmFwcGVkR2V0dGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHN0YXRlID0gc3RvcmUuc3RhdGU7XG4gIC8vIGluaXQgYWxsIG1vZHVsZXNcbiAgaW5zdGFsbE1vZHVsZShzdG9yZSwgc3RhdGUsIFtdLCBzdG9yZS5fbW9kdWxlcy5yb290LCB0cnVlKTtcbiAgLy8gcmVzZXQgc3RhdGVcbiAgcmVzZXRTdG9yZVN0YXRlKHN0b3JlLCBzdGF0ZSwgaG90KTtcbn1cblxuZnVuY3Rpb24gcmVzZXRTdG9yZVN0YXRlIChzdG9yZSwgc3RhdGUsIGhvdCkge1xuICB2YXIgb2xkU3RhdGUgPSBzdG9yZS5fc3RhdGU7XG5cbiAgLy8gYmluZCBzdG9yZSBwdWJsaWMgZ2V0dGVyc1xuICBzdG9yZS5nZXR0ZXJzID0ge307XG4gIC8vIHJlc2V0IGxvY2FsIGdldHRlcnMgY2FjaGVcbiAgc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciB3cmFwcGVkR2V0dGVycyA9IHN0b3JlLl93cmFwcGVkR2V0dGVycztcbiAgdmFyIGNvbXB1dGVkT2JqID0ge307XG4gIGZvckVhY2hWYWx1ZSh3cmFwcGVkR2V0dGVycywgZnVuY3Rpb24gKGZuLCBrZXkpIHtcbiAgICAvLyB1c2UgY29tcHV0ZWQgdG8gbGV2ZXJhZ2UgaXRzIGxhenktY2FjaGluZyBtZWNoYW5pc21cbiAgICAvLyBkaXJlY3QgaW5saW5lIGZ1bmN0aW9uIHVzZSB3aWxsIGxlYWQgdG8gY2xvc3VyZSBwcmVzZXJ2aW5nIG9sZFN0YXRlLlxuICAgIC8vIHVzaW5nIHBhcnRpYWwgdG8gcmV0dXJuIGZ1bmN0aW9uIHdpdGggb25seSBhcmd1bWVudHMgcHJlc2VydmVkIGluIGNsb3N1cmUgZW52aXJvbm1lbnQuXG4gICAgY29tcHV0ZWRPYmpba2V5XSA9IHBhcnRpYWwoZm4sIHN0b3JlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RvcmUuZ2V0dGVycywga2V5LCB7XG4gICAgICAvLyBUT0RPOiB1c2UgYGNvbXB1dGVkYCB3aGVuIGl0J3MgcG9zc2libGUuIGF0IHRoZSBtb21lbnQgd2UgY2FuJ3QgZHVlIHRvXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVleC9wdWxsLzE4ODNcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY29tcHV0ZWRPYmpba2V5XSgpOyB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSAvLyBmb3IgbG9jYWwgZ2V0dGVyc1xuICAgIH0pO1xuICB9KTtcblxuICBzdG9yZS5fc3RhdGUgPSByZWFjdGl2ZSh7XG4gICAgZGF0YTogc3RhdGVcbiAgfSk7XG5cbiAgLy8gZW5hYmxlIHN0cmljdCBtb2RlIGZvciBuZXcgc3RhdGVcbiAgaWYgKHN0b3JlLnN0cmljdCkge1xuICAgIGVuYWJsZVN0cmljdE1vZGUoc3RvcmUpO1xuICB9XG5cbiAgaWYgKG9sZFN0YXRlKSB7XG4gICAgaWYgKGhvdCkge1xuICAgICAgLy8gZGlzcGF0Y2ggY2hhbmdlcyBpbiBhbGwgc3Vic2NyaWJlZCB3YXRjaGVyc1xuICAgICAgLy8gdG8gZm9yY2UgZ2V0dGVyIHJlLWV2YWx1YXRpb24gZm9yIGhvdCByZWxvYWRpbmcuXG4gICAgICBzdG9yZS5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9sZFN0YXRlLmRhdGEgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGluc3RhbGxNb2R1bGUgKHN0b3JlLCByb290U3RhdGUsIHBhdGgsIG1vZHVsZSwgaG90KSB7XG4gIHZhciBpc1Jvb3QgPSAhcGF0aC5sZW5ndGg7XG4gIHZhciBuYW1lc3BhY2UgPSBzdG9yZS5fbW9kdWxlcy5nZXROYW1lc3BhY2UocGF0aCk7XG5cbiAgLy8gcmVnaXN0ZXIgaW4gbmFtZXNwYWNlIG1hcFxuICBpZiAobW9kdWxlLm5hbWVzcGFjZWQpIHtcbiAgICBpZiAoc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSAmJiB0cnVlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBkdXBsaWNhdGUgbmFtZXNwYWNlIFwiICsgbmFtZXNwYWNlICsgXCIgZm9yIHRoZSBuYW1lc3BhY2VkIG1vZHVsZSBcIiArIChwYXRoLmpvaW4oJy8nKSkpKTtcbiAgICB9XG4gICAgc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSA9IG1vZHVsZTtcbiAgfVxuXG4gIC8vIHNldCBzdGF0ZVxuICBpZiAoIWlzUm9vdCAmJiAhaG90KSB7XG4gICAgdmFyIHBhcmVudFN0YXRlID0gZ2V0TmVzdGVkU3RhdGUocm9vdFN0YXRlLCBwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgdmFyIG1vZHVsZU5hbWUgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAge1xuICAgICAgICBpZiAobW9kdWxlTmFtZSBpbiBwYXJlbnRTdGF0ZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIChcIlt2dWV4XSBzdGF0ZSBmaWVsZCBcXFwiXCIgKyBtb2R1bGVOYW1lICsgXCJcXFwiIHdhcyBvdmVycmlkZGVuIGJ5IGEgbW9kdWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhdCBcXFwiXCIgKyAocGF0aC5qb2luKCcuJykpICsgXCJcXFwiXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGFyZW50U3RhdGVbbW9kdWxlTmFtZV0gPSBtb2R1bGUuc3RhdGU7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgbG9jYWwgPSBtb2R1bGUuY29udGV4dCA9IG1ha2VMb2NhbENvbnRleHQoc3RvcmUsIG5hbWVzcGFjZSwgcGF0aCk7XG5cbiAgbW9kdWxlLmZvckVhY2hNdXRhdGlvbihmdW5jdGlvbiAobXV0YXRpb24sIGtleSkge1xuICAgIHZhciBuYW1lc3BhY2VkVHlwZSA9IG5hbWVzcGFjZSArIGtleTtcbiAgICByZWdpc3Rlck11dGF0aW9uKHN0b3JlLCBuYW1lc3BhY2VkVHlwZSwgbXV0YXRpb24sIGxvY2FsKTtcbiAgfSk7XG5cbiAgbW9kdWxlLmZvckVhY2hBY3Rpb24oZnVuY3Rpb24gKGFjdGlvbiwga2V5KSB7XG4gICAgdmFyIHR5cGUgPSBhY3Rpb24ucm9vdCA/IGtleSA6IG5hbWVzcGFjZSArIGtleTtcbiAgICB2YXIgaGFuZGxlciA9IGFjdGlvbi5oYW5kbGVyIHx8IGFjdGlvbjtcbiAgICByZWdpc3RlckFjdGlvbihzdG9yZSwgdHlwZSwgaGFuZGxlciwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaEdldHRlcihmdW5jdGlvbiAoZ2V0dGVyLCBrZXkpIHtcbiAgICB2YXIgbmFtZXNwYWNlZFR5cGUgPSBuYW1lc3BhY2UgKyBrZXk7XG4gICAgcmVnaXN0ZXJHZXR0ZXIoc3RvcmUsIG5hbWVzcGFjZWRUeXBlLCBnZXR0ZXIsIGxvY2FsKTtcbiAgfSk7XG5cbiAgbW9kdWxlLmZvckVhY2hDaGlsZChmdW5jdGlvbiAoY2hpbGQsIGtleSkge1xuICAgIGluc3RhbGxNb2R1bGUoc3RvcmUsIHJvb3RTdGF0ZSwgcGF0aC5jb25jYXQoa2V5KSwgY2hpbGQsIGhvdCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIG1ha2UgbG9jYWxpemVkIGRpc3BhdGNoLCBjb21taXQsIGdldHRlcnMgYW5kIHN0YXRlXG4gKiBpZiB0aGVyZSBpcyBubyBuYW1lc3BhY2UsIGp1c3QgdXNlIHJvb3Qgb25lc1xuICovXG5mdW5jdGlvbiBtYWtlTG9jYWxDb250ZXh0IChzdG9yZSwgbmFtZXNwYWNlLCBwYXRoKSB7XG4gIHZhciBub05hbWVzcGFjZSA9IG5hbWVzcGFjZSA9PT0gJyc7XG5cbiAgdmFyIGxvY2FsID0ge1xuICAgIGRpc3BhdGNoOiBub05hbWVzcGFjZSA/IHN0b3JlLmRpc3BhdGNoIDogZnVuY3Rpb24gKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICAgIHZhciBhcmdzID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKTtcbiAgICAgIHZhciBwYXlsb2FkID0gYXJncy5wYXlsb2FkO1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmdzLm9wdGlvbnM7XG4gICAgICB2YXIgdHlwZSA9IGFyZ3MudHlwZTtcblxuICAgICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLnJvb3QpIHtcbiAgICAgICAgdHlwZSA9IG5hbWVzcGFjZSArIHR5cGU7XG4gICAgICAgIGlmICghc3RvcmUuX2FjdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIGFjdGlvbiB0eXBlOiBcIiArIChhcmdzLnR5cGUpICsgXCIsIGdsb2JhbCB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RvcmUuZGlzcGF0Y2godHlwZSwgcGF5bG9hZClcbiAgICB9LFxuXG4gICAgY29tbWl0OiBub05hbWVzcGFjZSA/IHN0b3JlLmNvbW1pdCA6IGZ1bmN0aW9uIChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgICB2YXIgYXJncyA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgICB2YXIgcGF5bG9hZCA9IGFyZ3MucGF5bG9hZDtcbiAgICAgIHZhciBvcHRpb25zID0gYXJncy5vcHRpb25zO1xuICAgICAgdmFyIHR5cGUgPSBhcmdzLnR5cGU7XG5cbiAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5yb290KSB7XG4gICAgICAgIHR5cGUgPSBuYW1lc3BhY2UgKyB0eXBlO1xuICAgICAgICBpZiAoIXN0b3JlLl9tdXRhdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIG11dGF0aW9uIHR5cGU6IFwiICsgKGFyZ3MudHlwZSkgKyBcIiwgZ2xvYmFsIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0b3JlLmNvbW1pdCh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gZ2V0dGVycyBhbmQgc3RhdGUgb2JqZWN0IG11c3QgYmUgZ290dGVuIGxhemlseVxuICAvLyBiZWNhdXNlIHRoZXkgd2lsbCBiZSBjaGFuZ2VkIGJ5IHN0YXRlIHVwZGF0ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsb2NhbCwge1xuICAgIGdldHRlcnM6IHtcbiAgICAgIGdldDogbm9OYW1lc3BhY2VcbiAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5nZXR0ZXJzOyB9XG4gICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbWFrZUxvY2FsR2V0dGVycyhzdG9yZSwgbmFtZXNwYWNlKTsgfVxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0TmVzdGVkU3RhdGUoc3RvcmUuc3RhdGUsIHBhdGgpOyB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbG9jYWxcbn1cblxuZnVuY3Rpb24gbWFrZUxvY2FsR2V0dGVycyAoc3RvcmUsIG5hbWVzcGFjZSkge1xuICBpZiAoIXN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXSkge1xuICAgIHZhciBnZXR0ZXJzUHJveHkgPSB7fTtcbiAgICB2YXIgc3BsaXRQb3MgPSBuYW1lc3BhY2UubGVuZ3RoO1xuICAgIE9iamVjdC5rZXlzKHN0b3JlLmdldHRlcnMpLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIC8vIHNraXAgaWYgdGhlIHRhcmdldCBnZXR0ZXIgaXMgbm90IG1hdGNoIHRoaXMgbmFtZXNwYWNlXG4gICAgICBpZiAodHlwZS5zbGljZSgwLCBzcGxpdFBvcykgIT09IG5hbWVzcGFjZSkgeyByZXR1cm4gfVxuXG4gICAgICAvLyBleHRyYWN0IGxvY2FsIGdldHRlciB0eXBlXG4gICAgICB2YXIgbG9jYWxUeXBlID0gdHlwZS5zbGljZShzcGxpdFBvcyk7XG5cbiAgICAgIC8vIEFkZCBhIHBvcnQgdG8gdGhlIGdldHRlcnMgcHJveHkuXG4gICAgICAvLyBEZWZpbmUgYXMgZ2V0dGVyIHByb3BlcnR5IGJlY2F1c2VcbiAgICAgIC8vIHdlIGRvIG5vdCB3YW50IHRvIGV2YWx1YXRlIHRoZSBnZXR0ZXJzIGluIHRoaXMgdGltZS5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnZXR0ZXJzUHJveHksIGxvY2FsVHlwZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLmdldHRlcnNbdHlwZV07IH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXSA9IGdldHRlcnNQcm94eTtcbiAgfVxuXG4gIHJldHVybiBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV1cbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJNdXRhdGlvbiAoc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKSB7XG4gIHZhciBlbnRyeSA9IHN0b3JlLl9tdXRhdGlvbnNbdHlwZV0gfHwgKHN0b3JlLl9tdXRhdGlvbnNbdHlwZV0gPSBbXSk7XG4gIGVudHJ5LnB1c2goZnVuY3Rpb24gd3JhcHBlZE11dGF0aW9uSGFuZGxlciAocGF5bG9hZCkge1xuICAgIGhhbmRsZXIuY2FsbChzdG9yZSwgbG9jYWwuc3RhdGUsIHBheWxvYWQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJBY3Rpb24gKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCkge1xuICB2YXIgZW50cnkgPSBzdG9yZS5fYWN0aW9uc1t0eXBlXSB8fCAoc3RvcmUuX2FjdGlvbnNbdHlwZV0gPSBbXSk7XG4gIGVudHJ5LnB1c2goZnVuY3Rpb24gd3JhcHBlZEFjdGlvbkhhbmRsZXIgKHBheWxvYWQpIHtcbiAgICB2YXIgcmVzID0gaGFuZGxlci5jYWxsKHN0b3JlLCB7XG4gICAgICBkaXNwYXRjaDogbG9jYWwuZGlzcGF0Y2gsXG4gICAgICBjb21taXQ6IGxvY2FsLmNvbW1pdCxcbiAgICAgIGdldHRlcnM6IGxvY2FsLmdldHRlcnMsXG4gICAgICBzdGF0ZTogbG9jYWwuc3RhdGUsXG4gICAgICByb290R2V0dGVyczogc3RvcmUuZ2V0dGVycyxcbiAgICAgIHJvb3RTdGF0ZTogc3RvcmUuc3RhdGVcbiAgICB9LCBwYXlsb2FkKTtcbiAgICBpZiAoIWlzUHJvbWlzZShyZXMpKSB7XG4gICAgICByZXMgPSBQcm9taXNlLnJlc29sdmUocmVzKTtcbiAgICB9XG4gICAgaWYgKHN0b3JlLl9kZXZ0b29sSG9vaykge1xuICAgICAgcmV0dXJuIHJlcy5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHN0b3JlLl9kZXZ0b29sSG9vay5lbWl0KCd2dWV4OmVycm9yJywgZXJyKTtcbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJHZXR0ZXIgKHN0b3JlLCB0eXBlLCByYXdHZXR0ZXIsIGxvY2FsKSB7XG4gIGlmIChzdG9yZS5fd3JhcHBlZEdldHRlcnNbdHlwZV0pIHtcbiAgICB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBkdXBsaWNhdGUgZ2V0dGVyIGtleTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIHN0b3JlLl93cmFwcGVkR2V0dGVyc1t0eXBlXSA9IGZ1bmN0aW9uIHdyYXBwZWRHZXR0ZXIgKHN0b3JlKSB7XG4gICAgcmV0dXJuIHJhd0dldHRlcihcbiAgICAgIGxvY2FsLnN0YXRlLCAvLyBsb2NhbCBzdGF0ZVxuICAgICAgbG9jYWwuZ2V0dGVycywgLy8gbG9jYWwgZ2V0dGVyc1xuICAgICAgc3RvcmUuc3RhdGUsIC8vIHJvb3Qgc3RhdGVcbiAgICAgIHN0b3JlLmdldHRlcnMgLy8gcm9vdCBnZXR0ZXJzXG4gICAgKVxuICB9O1xufVxuXG5mdW5jdGlvbiBlbmFibGVTdHJpY3RNb2RlIChzdG9yZSkge1xuICB3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5fc3RhdGUuZGF0YTsgfSwgZnVuY3Rpb24gKCkge1xuICAgIHtcbiAgICAgIGFzc2VydChzdG9yZS5fY29tbWl0dGluZywgXCJkbyBub3QgbXV0YXRlIHZ1ZXggc3RvcmUgc3RhdGUgb3V0c2lkZSBtdXRhdGlvbiBoYW5kbGVycy5cIik7XG4gICAgfVxuICB9LCB7IGRlZXA6IHRydWUsIGZsdXNoOiAnc3luYycgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE5lc3RlZFN0YXRlIChzdGF0ZSwgcGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBrZXkpIHsgcmV0dXJuIHN0YXRlW2tleV07IH0sIHN0YXRlKVxufVxuXG5mdW5jdGlvbiB1bmlmeU9iamVjdFN0eWxlICh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKSB7XG4gIGlmIChpc09iamVjdCh0eXBlKSAmJiB0eXBlLnR5cGUpIHtcbiAgICBvcHRpb25zID0gcGF5bG9hZDtcbiAgICBwYXlsb2FkID0gdHlwZTtcbiAgICB0eXBlID0gdHlwZS50eXBlO1xuICB9XG5cbiAge1xuICAgIGFzc2VydCh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycsIChcImV4cGVjdHMgc3RyaW5nIGFzIHRoZSB0eXBlLCBidXQgZm91bmQgXCIgKyAodHlwZW9mIHR5cGUpICsgXCIuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQsIG9wdGlvbnM6IG9wdGlvbnMgfVxufVxuXG52YXIgTEFCRUxfVlVFWF9CSU5ESU5HUyA9ICd2dWV4IGJpbmRpbmdzJztcbnZhciBNVVRBVElPTlNfTEFZRVJfSUQgPSAndnVleDptdXRhdGlvbnMnO1xudmFyIEFDVElPTlNfTEFZRVJfSUQgPSAndnVleDphY3Rpb25zJztcbnZhciBJTlNQRUNUT1JfSUQgPSAndnVleCc7XG5cbnZhciBhY3Rpb25JZCA9IDA7XG5cbmZ1bmN0aW9uIGFkZERldnRvb2xzIChhcHAsIHN0b3JlKSB7XG4gIHNldHVwRGV2dG9vbHNQbHVnaW4oXG4gICAge1xuICAgICAgaWQ6ICdvcmcudnVlanMudnVleCcsXG4gICAgICBhcHA6IGFwcCxcbiAgICAgIGxhYmVsOiAnVnVleCcsXG4gICAgICBob21lcGFnZTogJ2h0dHBzOi8vbmV4dC52dWV4LnZ1ZWpzLm9yZy8nLFxuICAgICAgbG9nbzogJ2h0dHBzOi8vdnVlanMub3JnL2ltYWdlcy9pY29ucy9mYXZpY29uLTk2eDk2LnBuZycsXG4gICAgICBwYWNrYWdlTmFtZTogJ3Z1ZXgnLFxuICAgICAgY29tcG9uZW50U3RhdGVUeXBlczogW0xBQkVMX1ZVRVhfQklORElOR1NdXG4gICAgfSxcbiAgICBmdW5jdGlvbiAoYXBpKSB7XG4gICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgIGlkOiBNVVRBVElPTlNfTEFZRVJfSUQsXG4gICAgICAgIGxhYmVsOiAnVnVleCBNdXRhdGlvbnMnLFxuICAgICAgICBjb2xvcjogQ09MT1JfTElNRV81MDBcbiAgICAgIH0pO1xuXG4gICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgIGlkOiBBQ1RJT05TX0xBWUVSX0lELFxuICAgICAgICBsYWJlbDogJ1Z1ZXggQWN0aW9ucycsXG4gICAgICAgIGNvbG9yOiBDT0xPUl9MSU1FXzUwMFxuICAgICAgfSk7XG5cbiAgICAgIGFwaS5hZGRJbnNwZWN0b3Ioe1xuICAgICAgICBpZDogSU5TUEVDVE9SX0lELFxuICAgICAgICBsYWJlbDogJ1Z1ZXgnLFxuICAgICAgICBpY29uOiAnc3RvcmFnZScsXG4gICAgICAgIHRyZWVGaWx0ZXJQbGFjZWhvbGRlcjogJ0ZpbHRlciBzdG9yZXMuLi4nXG4gICAgICB9KTtcblxuICAgICAgYXBpLm9uLmdldEluc3BlY3RvclRyZWUoZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiYgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgaWYgKHBheWxvYWQuZmlsdGVyKSB7XG4gICAgICAgICAgICB2YXIgbm9kZXMgPSBbXTtcbiAgICAgICAgICAgIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUobm9kZXMsIHN0b3JlLl9tb2R1bGVzLnJvb3QsIHBheWxvYWQuZmlsdGVyLCAnJyk7XG4gICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IG5vZGVzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IFtcbiAgICAgICAgICAgICAgZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JUcmVlKHN0b3JlLl9tb2R1bGVzLnJvb3QsICcnKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhcGkub24uZ2V0SW5zcGVjdG9yU3RhdGUoZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiYgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgdmFyIG1vZHVsZVBhdGggPSBwYXlsb2FkLm5vZGVJZDtcbiAgICAgICAgICBtYWtlTG9jYWxHZXR0ZXJzKHN0b3JlLCBtb2R1bGVQYXRoKTtcbiAgICAgICAgICBwYXlsb2FkLnN0YXRlID0gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JTdGF0ZShcbiAgICAgICAgICAgIGdldFN0b3JlTW9kdWxlKHN0b3JlLl9tb2R1bGVzLCBtb2R1bGVQYXRoKSxcbiAgICAgICAgICAgIG1vZHVsZVBhdGggPT09ICdyb290JyA/IHN0b3JlLmdldHRlcnMgOiBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlLFxuICAgICAgICAgICAgbW9kdWxlUGF0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhcGkub24uZWRpdEluc3BlY3RvclN0YXRlKGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gICAgICAgIGlmIChwYXlsb2FkLmFwcCA9PT0gYXBwICYmIHBheWxvYWQuaW5zcGVjdG9ySWQgPT09IElOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgIHZhciBtb2R1bGVQYXRoID0gcGF5bG9hZC5ub2RlSWQ7XG4gICAgICAgICAgdmFyIHBhdGggPSBwYXlsb2FkLnBhdGg7XG4gICAgICAgICAgaWYgKG1vZHVsZVBhdGggIT09ICdyb290Jykge1xuICAgICAgICAgICAgcGF0aCA9IG1vZHVsZVBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbikuY29uY2F0KCBwYXRoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcGF5bG9hZC5zZXQoc3RvcmUuX3N0YXRlLmRhdGEsIHBhdGgsIHBheWxvYWQuc3RhdGUudmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB7fTtcblxuICAgICAgICBpZiAobXV0YXRpb24ucGF5bG9hZCkge1xuICAgICAgICAgIGRhdGEucGF5bG9hZCA9IG11dGF0aW9uLnBheWxvYWQ7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLnN0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgYXBpLm5vdGlmeUNvbXBvbmVudFVwZGF0ZSgpO1xuICAgICAgICBhcGkuc2VuZEluc3BlY3RvclRyZWUoSU5TUEVDVE9SX0lEKTtcbiAgICAgICAgYXBpLnNlbmRJbnNwZWN0b3JTdGF0ZShJTlNQRUNUT1JfSUQpO1xuXG4gICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICBsYXllcklkOiBNVVRBVElPTlNfTEFZRVJfSUQsXG4gICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICB0aXRsZTogbXV0YXRpb24udHlwZSxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHN0b3JlLnN1YnNjcmliZUFjdGlvbih7XG4gICAgICAgIGJlZm9yZTogZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IHt9O1xuICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGlvbi5faWQgPSBhY3Rpb25JZCsrO1xuICAgICAgICAgIGFjdGlvbi5fdGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgbGF5ZXJJZDogQUNUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgIHRpbWU6IGFjdGlvbi5fdGltZSxcbiAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICBncm91cElkOiBhY3Rpb24uX2lkLFxuICAgICAgICAgICAgICBzdWJ0aXRsZTogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlcjogZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IHt9O1xuICAgICAgICAgIHZhciBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBhY3Rpb24uX3RpbWU7XG4gICAgICAgICAgZGF0YS5kdXJhdGlvbiA9IHtcbiAgICAgICAgICAgIF9jdXN0b206IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2R1cmF0aW9uJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogKGR1cmF0aW9uICsgXCJtc1wiKSxcbiAgICAgICAgICAgICAgdG9vbHRpcDogJ0FjdGlvbiBkdXJhdGlvbicsXG4gICAgICAgICAgICAgIHZhbHVlOiBkdXJhdGlvblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGFjdGlvbi5wYXlsb2FkKSB7XG4gICAgICAgICAgICBkYXRhLnBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgbGF5ZXJJZDogQUNUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICAgIHRpdGxlOiBhY3Rpb24udHlwZSxcbiAgICAgICAgICAgICAgZ3JvdXBJZDogYWN0aW9uLl9pZCxcbiAgICAgICAgICAgICAgc3VidGl0bGU6ICdlbmQnLFxuICAgICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcbn1cblxuLy8gZXh0cmFjdGVkIGZyb20gdGFpbHdpbmQgcGFsZXR0ZVxudmFyIENPTE9SX0xJTUVfNTAwID0gMHg4NGNjMTY7XG52YXIgQ09MT1JfREFSSyA9IDB4NjY2NjY2O1xudmFyIENPTE9SX1dISVRFID0gMHhmZmZmZmY7XG5cbnZhciBUQUdfTkFNRVNQQUNFRCA9IHtcbiAgbGFiZWw6ICduYW1lc3BhY2VkJyxcbiAgdGV4dENvbG9yOiBDT0xPUl9XSElURSxcbiAgYmFja2dyb3VuZENvbG9yOiBDT0xPUl9EQVJLXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3ROYW1lRnJvbVBhdGggKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGggJiYgcGF0aCAhPT0gJ3Jvb3QnID8gcGF0aC5zcGxpdCgnLycpLnNsaWNlKC0yLCAtMSlbMF0gOiAnUm9vdCdcbn1cblxuLyoqXG4gKiBAcGFyYW0geyp9IG1vZHVsZVxuICogQHJldHVybiB7aW1wb3J0KCdAdnVlL2RldnRvb2xzLWFwaScpLkN1c3RvbUluc3BlY3Rvck5vZGV9XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZSAobW9kdWxlLCBwYXRoKSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IHBhdGggfHwgJ3Jvb3QnLFxuICAgIC8vIGFsbCBtb2R1bGVzIGVuZCB3aXRoIGEgYC9gLCB3ZSB3YW50IHRoZSBsYXN0IHNlZ21lbnQgb25seVxuICAgIC8vIGNhcnQvIC0+IGNhcnRcbiAgICAvLyBuZXN0ZWQvY2FydC8gLT4gY2FydFxuICAgIGxhYmVsOiBleHRyYWN0TmFtZUZyb21QYXRoKHBhdGgpLFxuICAgIHRhZ3M6IG1vZHVsZS5uYW1lc3BhY2VkID8gW1RBR19OQU1FU1BBQ0VEXSA6IFtdLFxuICAgIGNoaWxkcmVuOiBPYmplY3Qua2V5cyhtb2R1bGUuX2NoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKG1vZHVsZU5hbWUpIHsgcmV0dXJuIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZShcbiAgICAgICAgbW9kdWxlLl9jaGlsZHJlblttb2R1bGVOYW1lXSxcbiAgICAgICAgcGF0aCArIG1vZHVsZU5hbWUgKyAnLydcbiAgICAgICk7IH1cbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnQHZ1ZS9kZXZ0b29scy1hcGknKS5DdXN0b21JbnNwZWN0b3JOb2RlW119IHJlc3VsdFxuICogQHBhcmFtIHsqfSBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWx0ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUgKHJlc3VsdCwgbW9kdWxlLCBmaWx0ZXIsIHBhdGgpIHtcbiAgaWYgKHBhdGguaW5jbHVkZXMoZmlsdGVyKSkge1xuICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgIGlkOiBwYXRoIHx8ICdyb290JyxcbiAgICAgIGxhYmVsOiBwYXRoLmVuZHNXaXRoKCcvJykgPyBwYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoIC0gMSkgOiBwYXRoIHx8ICdSb290JyxcbiAgICAgIHRhZ3M6IG1vZHVsZS5uYW1lc3BhY2VkID8gW1RBR19OQU1FU1BBQ0VEXSA6IFtdXG4gICAgfSk7XG4gIH1cbiAgT2JqZWN0LmtleXMobW9kdWxlLl9jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAobW9kdWxlTmFtZSkge1xuICAgIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUocmVzdWx0LCBtb2R1bGUuX2NoaWxkcmVuW21vZHVsZU5hbWVdLCBmaWx0ZXIsIHBhdGggKyBtb2R1bGVOYW1lICsgJy8nKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSBtb2R1bGVcbiAqIEByZXR1cm4ge2ltcG9ydCgnQHZ1ZS9kZXZ0b29scy1hcGknKS5DdXN0b21JbnNwZWN0b3JTdGF0ZX1cbiAqL1xuZnVuY3Rpb24gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JTdGF0ZSAobW9kdWxlLCBnZXR0ZXJzLCBwYXRoKSB7XG4gIGdldHRlcnMgPSBwYXRoID09PSAncm9vdCcgPyBnZXR0ZXJzIDogZ2V0dGVyc1twYXRoXTtcbiAgdmFyIGdldHRlcnNLZXlzID0gT2JqZWN0LmtleXMoZ2V0dGVycyk7XG4gIHZhciBzdG9yZVN0YXRlID0ge1xuICAgIHN0YXRlOiBPYmplY3Qua2V5cyhtb2R1bGUuc3RhdGUpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBtb2R1bGUuc3RhdGVba2V5XVxuICAgIH0pOyB9KVxuICB9O1xuXG4gIGlmIChnZXR0ZXJzS2V5cy5sZW5ndGgpIHtcbiAgICB2YXIgdHJlZSA9IHRyYW5zZm9ybVBhdGhzVG9PYmplY3RUcmVlKGdldHRlcnMpO1xuICAgIHN0b3JlU3RhdGUuZ2V0dGVycyA9IE9iamVjdC5rZXlzKHRyZWUpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoe1xuICAgICAga2V5OiBrZXkuZW5kc1dpdGgoJy8nKSA/IGV4dHJhY3ROYW1lRnJvbVBhdGgoa2V5KSA6IGtleSxcbiAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBjYW5UaHJvdyhmdW5jdGlvbiAoKSB7IHJldHVybiB0cmVlW2tleV07IH0pXG4gICAgfSk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0b3JlU3RhdGVcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUGF0aHNUb09iamVjdFRyZWUgKGdldHRlcnMpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBPYmplY3Qua2V5cyhnZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcGF0aCA9IGtleS5zcGxpdCgnLycpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciB0YXJnZXQgPSByZXN1bHQ7XG4gICAgICB2YXIgbGVhZktleSA9IHBhdGgucG9wKCk7XG4gICAgICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKCF0YXJnZXRbcF0pIHtcbiAgICAgICAgICB0YXJnZXRbcF0gPSB7XG4gICAgICAgICAgICBfY3VzdG9tOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7fSxcbiAgICAgICAgICAgICAgZGlzcGxheTogcCxcbiAgICAgICAgICAgICAgdG9vbHRpcDogJ01vZHVsZScsXG4gICAgICAgICAgICAgIGFic3RyYWN0OiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQgPSB0YXJnZXRbcF0uX2N1c3RvbS52YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdGFyZ2V0W2xlYWZLZXldID0gY2FuVGhyb3coZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0dGVyc1trZXldOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSBjYW5UaHJvdyhmdW5jdGlvbiAoKSB7IHJldHVybiBnZXR0ZXJzW2tleV07IH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gZ2V0U3RvcmVNb2R1bGUgKG1vZHVsZU1hcCwgcGF0aCkge1xuICB2YXIgbmFtZXMgPSBwYXRoLnNwbGl0KCcvJykuZmlsdGVyKGZ1bmN0aW9uIChuKSB7IHJldHVybiBuOyB9KTtcbiAgcmV0dXJuIG5hbWVzLnJlZHVjZShcbiAgICBmdW5jdGlvbiAobW9kdWxlLCBtb2R1bGVOYW1lLCBpKSB7XG4gICAgICB2YXIgY2hpbGQgPSBtb2R1bGVbbW9kdWxlTmFtZV07XG4gICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigoXCJNaXNzaW5nIG1vZHVsZSBcXFwiXCIgKyBtb2R1bGVOYW1lICsgXCJcXFwiIGZvciBwYXRoIFxcXCJcIiArIHBhdGggKyBcIlxcXCIuXCIpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGkgPT09IG5hbWVzLmxlbmd0aCAtIDEgPyBjaGlsZCA6IGNoaWxkLl9jaGlsZHJlblxuICAgIH0sXG4gICAgcGF0aCA9PT0gJ3Jvb3QnID8gbW9kdWxlTWFwIDogbW9kdWxlTWFwLnJvb3QuX2NoaWxkcmVuXG4gIClcbn1cblxuZnVuY3Rpb24gY2FuVGhyb3cgKGNiKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGNiKClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBlXG4gIH1cbn1cblxuLy8gQmFzZSBkYXRhIHN0cnVjdCBmb3Igc3RvcmUncyBtb2R1bGUsIHBhY2thZ2Ugd2l0aCBzb21lIGF0dHJpYnV0ZSBhbmQgbWV0aG9kXG52YXIgTW9kdWxlID0gZnVuY3Rpb24gTW9kdWxlIChyYXdNb2R1bGUsIHJ1bnRpbWUpIHtcbiAgdGhpcy5ydW50aW1lID0gcnVudGltZTtcbiAgLy8gU3RvcmUgc29tZSBjaGlsZHJlbiBpdGVtXG4gIHRoaXMuX2NoaWxkcmVuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gU3RvcmUgdGhlIG9yaWdpbiBtb2R1bGUgb2JqZWN0IHdoaWNoIHBhc3NlZCBieSBwcm9ncmFtbWVyXG4gIHRoaXMuX3Jhd01vZHVsZSA9IHJhd01vZHVsZTtcbiAgdmFyIHJhd1N0YXRlID0gcmF3TW9kdWxlLnN0YXRlO1xuXG4gIC8vIFN0b3JlIHRoZSBvcmlnaW4gbW9kdWxlJ3Mgc3RhdGVcbiAgdGhpcy5zdGF0ZSA9ICh0eXBlb2YgcmF3U3RhdGUgPT09ICdmdW5jdGlvbicgPyByYXdTdGF0ZSgpIDogcmF3U3RhdGUpIHx8IHt9O1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQxID0geyBuYW1lc3BhY2VkOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycyQxLm5hbWVzcGFjZWQuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gISF0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZFxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5hZGRDaGlsZCA9IGZ1bmN0aW9uIGFkZENoaWxkIChrZXksIG1vZHVsZSkge1xuICB0aGlzLl9jaGlsZHJlbltrZXldID0gbW9kdWxlO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIHJlbW92ZUNoaWxkIChrZXkpIHtcbiAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW2tleV07XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmdldENoaWxkID0gZnVuY3Rpb24gZ2V0Q2hpbGQgKGtleSkge1xuICByZXR1cm4gdGhpcy5fY2hpbGRyZW5ba2V5XVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5oYXNDaGlsZCA9IGZ1bmN0aW9uIGhhc0NoaWxkIChrZXkpIHtcbiAgcmV0dXJuIGtleSBpbiB0aGlzLl9jaGlsZHJlblxufTtcblxuTW9kdWxlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKHJhd01vZHVsZSkge1xuICB0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZCA9IHJhd01vZHVsZS5uYW1lc3BhY2VkO1xuICBpZiAocmF3TW9kdWxlLmFjdGlvbnMpIHtcbiAgICB0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucyA9IHJhd01vZHVsZS5hY3Rpb25zO1xuICB9XG4gIGlmIChyYXdNb2R1bGUubXV0YXRpb25zKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucyA9IHJhd01vZHVsZS5tdXRhdGlvbnM7XG4gIH1cbiAgaWYgKHJhd01vZHVsZS5nZXR0ZXJzKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLmdldHRlcnMgPSByYXdNb2R1bGUuZ2V0dGVycztcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoQ2hpbGQgPSBmdW5jdGlvbiBmb3JFYWNoQ2hpbGQgKGZuKSB7XG4gIGZvckVhY2hWYWx1ZSh0aGlzLl9jaGlsZHJlbiwgZm4pO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoR2V0dGVyID0gZnVuY3Rpb24gZm9yRWFjaEdldHRlciAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzLCBmbik7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaEFjdGlvbiA9IGZ1bmN0aW9uIGZvckVhY2hBY3Rpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucywgZm4pO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hNdXRhdGlvbiA9IGZ1bmN0aW9uIGZvckVhY2hNdXRhdGlvbiAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucywgZm4pO1xuICB9XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggTW9kdWxlLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzJDEgKTtcblxudmFyIE1vZHVsZUNvbGxlY3Rpb24gPSBmdW5jdGlvbiBNb2R1bGVDb2xsZWN0aW9uIChyYXdSb290TW9kdWxlKSB7XG4gIC8vIHJlZ2lzdGVyIHJvb3QgbW9kdWxlIChWdWV4LlN0b3JlIG9wdGlvbnMpXG4gIHRoaXMucmVnaXN0ZXIoW10sIHJhd1Jvb3RNb2R1bGUsIGZhbHNlKTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIGdldCAocGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG1vZHVsZSwga2V5KSB7XG4gICAgcmV0dXJuIG1vZHVsZS5nZXRDaGlsZChrZXkpXG4gIH0sIHRoaXMucm9vdClcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldE5hbWVzcGFjZSA9IGZ1bmN0aW9uIGdldE5hbWVzcGFjZSAocGF0aCkge1xuICB2YXIgbW9kdWxlID0gdGhpcy5yb290O1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwga2V5KSB7XG4gICAgbW9kdWxlID0gbW9kdWxlLmdldENoaWxkKGtleSk7XG4gICAgcmV0dXJuIG5hbWVzcGFjZSArIChtb2R1bGUubmFtZXNwYWNlZCA/IGtleSArICcvJyA6ICcnKVxuICB9LCAnJylcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSQxIChyYXdSb290TW9kdWxlKSB7XG4gIHVwZGF0ZShbXSwgdGhpcy5yb290LCByYXdSb290TW9kdWxlKTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIgKHBhdGgsIHJhd01vZHVsZSwgcnVudGltZSkge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG4gICAgaWYgKCBydW50aW1lID09PSB2b2lkIDAgKSBydW50aW1lID0gdHJ1ZTtcblxuICB7XG4gICAgYXNzZXJ0UmF3TW9kdWxlKHBhdGgsIHJhd01vZHVsZSk7XG4gIH1cblxuICB2YXIgbmV3TW9kdWxlID0gbmV3IE1vZHVsZShyYXdNb2R1bGUsIHJ1bnRpbWUpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLnJvb3QgPSBuZXdNb2R1bGU7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0KHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICBwYXJlbnQuYWRkQ2hpbGQocGF0aFtwYXRoLmxlbmd0aCAtIDFdLCBuZXdNb2R1bGUpO1xuICB9XG5cbiAgLy8gcmVnaXN0ZXIgbmVzdGVkIG1vZHVsZXNcbiAgaWYgKHJhd01vZHVsZS5tb2R1bGVzKSB7XG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZS5tb2R1bGVzLCBmdW5jdGlvbiAocmF3Q2hpbGRNb2R1bGUsIGtleSkge1xuICAgICAgdGhpcyQxJDEucmVnaXN0ZXIocGF0aC5jb25jYXQoa2V5KSwgcmF3Q2hpbGRNb2R1bGUsIHJ1bnRpbWUpO1xuICAgIH0pO1xuICB9XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS51bnJlZ2lzdGVyID0gZnVuY3Rpb24gdW5yZWdpc3RlciAocGF0aCkge1xuICB2YXIgcGFyZW50ID0gdGhpcy5nZXQocGF0aC5zbGljZSgwLCAtMSkpO1xuICB2YXIga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICB2YXIgY2hpbGQgPSBwYXJlbnQuZ2V0Q2hpbGQoa2V5KTtcblxuICBpZiAoIWNoaWxkKSB7XG4gICAge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gdW5yZWdpc3RlciBtb2R1bGUgJ1wiICsga2V5ICsgXCInLCB3aGljaCBpcyBcIiArXG4gICAgICAgIFwibm90IHJlZ2lzdGVyZWRcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWNoaWxkLnJ1bnRpbWUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBhcmVudC5yZW1vdmVDaGlsZChrZXkpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuaXNSZWdpc3RlcmVkID0gZnVuY3Rpb24gaXNSZWdpc3RlcmVkIChwYXRoKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gIHZhciBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHBhcmVudCkge1xuICAgIHJldHVybiBwYXJlbnQuaGFzQ2hpbGQoa2V5KVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59O1xuXG5mdW5jdGlvbiB1cGRhdGUgKHBhdGgsIHRhcmdldE1vZHVsZSwgbmV3TW9kdWxlKSB7XG4gIHtcbiAgICBhc3NlcnRSYXdNb2R1bGUocGF0aCwgbmV3TW9kdWxlKTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSB0YXJnZXQgbW9kdWxlXG4gIHRhcmdldE1vZHVsZS51cGRhdGUobmV3TW9kdWxlKTtcblxuICAvLyB1cGRhdGUgbmVzdGVkIG1vZHVsZXNcbiAgaWYgKG5ld01vZHVsZS5tb2R1bGVzKSB7XG4gICAgZm9yICh2YXIga2V5IGluIG5ld01vZHVsZS5tb2R1bGVzKSB7XG4gICAgICBpZiAoIXRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpKSB7XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gYWRkIGEgbmV3IG1vZHVsZSAnXCIgKyBrZXkgKyBcIicgb24gaG90IHJlbG9hZGluZywgXCIgK1xuICAgICAgICAgICAgJ21hbnVhbCByZWxvYWQgaXMgbmVlZGVkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUoXG4gICAgICAgIHBhdGguY29uY2F0KGtleSksXG4gICAgICAgIHRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpLFxuICAgICAgICBuZXdNb2R1bGUubW9kdWxlc1trZXldXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgZnVuY3Rpb25Bc3NlcnQgPSB7XG4gIGFzc2VydDogZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7IH0sXG4gIGV4cGVjdGVkOiAnZnVuY3Rpb24nXG59O1xuXG52YXIgb2JqZWN0QXNzZXJ0ID0ge1xuICBhc3NlcnQ6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLmhhbmRsZXIgPT09ICdmdW5jdGlvbicpOyB9LFxuICBleHBlY3RlZDogJ2Z1bmN0aW9uIG9yIG9iamVjdCB3aXRoIFwiaGFuZGxlclwiIGZ1bmN0aW9uJ1xufTtcblxudmFyIGFzc2VydFR5cGVzID0ge1xuICBnZXR0ZXJzOiBmdW5jdGlvbkFzc2VydCxcbiAgbXV0YXRpb25zOiBmdW5jdGlvbkFzc2VydCxcbiAgYWN0aW9uczogb2JqZWN0QXNzZXJ0XG59O1xuXG5mdW5jdGlvbiBhc3NlcnRSYXdNb2R1bGUgKHBhdGgsIHJhd01vZHVsZSkge1xuICBPYmplY3Qua2V5cyhhc3NlcnRUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFyYXdNb2R1bGVba2V5XSkgeyByZXR1cm4gfVxuXG4gICAgdmFyIGFzc2VydE9wdGlvbnMgPSBhc3NlcnRUeXBlc1trZXldO1xuXG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZVtrZXldLCBmdW5jdGlvbiAodmFsdWUsIHR5cGUpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgYXNzZXJ0T3B0aW9ucy5hc3NlcnQodmFsdWUpLFxuICAgICAgICBtYWtlQXNzZXJ0aW9uTWVzc2FnZShwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBhc3NlcnRPcHRpb25zLmV4cGVjdGVkKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VBc3NlcnRpb25NZXNzYWdlIChwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBleHBlY3RlZCkge1xuICB2YXIgYnVmID0ga2V5ICsgXCIgc2hvdWxkIGJlIFwiICsgZXhwZWN0ZWQgKyBcIiBidXQgXFxcIlwiICsga2V5ICsgXCIuXCIgKyB0eXBlICsgXCJcXFwiXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICBidWYgKz0gXCIgaW4gbW9kdWxlIFxcXCJcIiArIChwYXRoLmpvaW4oJy4nKSkgKyBcIlxcXCJcIjtcbiAgfVxuICBidWYgKz0gXCIgaXMgXCIgKyAoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSArIFwiLlwiO1xuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JlIChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgU3RvcmUob3B0aW9ucylcbn1cblxudmFyIFN0b3JlID0gZnVuY3Rpb24gU3RvcmUgKG9wdGlvbnMpIHtcbiAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAge1xuICAgIGFzc2VydCh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcsIFwidnVleCByZXF1aXJlcyBhIFByb21pc2UgcG9seWZpbGwgaW4gdGhpcyBicm93c2VyLlwiKTtcbiAgICBhc3NlcnQodGhpcyBpbnN0YW5jZW9mIFN0b3JlLCBcInN0b3JlIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG5ldyBvcGVyYXRvci5cIik7XG4gIH1cblxuICB2YXIgcGx1Z2lucyA9IG9wdGlvbnMucGx1Z2luczsgaWYgKCBwbHVnaW5zID09PSB2b2lkIDAgKSBwbHVnaW5zID0gW107XG4gIHZhciBzdHJpY3QgPSBvcHRpb25zLnN0cmljdDsgaWYgKCBzdHJpY3QgPT09IHZvaWQgMCApIHN0cmljdCA9IGZhbHNlO1xuICB2YXIgZGV2dG9vbHMgPSBvcHRpb25zLmRldnRvb2xzO1xuXG4gIC8vIHN0b3JlIGludGVybmFsIHN0YXRlXG4gIHRoaXMuX2NvbW1pdHRpbmcgPSBmYWxzZTtcbiAgdGhpcy5fYWN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzID0gW107XG4gIHRoaXMuX211dGF0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX3dyYXBwZWRHZXR0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fbW9kdWxlcyA9IG5ldyBNb2R1bGVDb2xsZWN0aW9uKG9wdGlvbnMpO1xuICB0aGlzLl9tb2R1bGVzTmFtZXNwYWNlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fc3Vic2NyaWJlcnMgPSBbXTtcbiAgdGhpcy5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fZGV2dG9vbHMgPSBkZXZ0b29scztcblxuICAvLyBiaW5kIGNvbW1pdCBhbmQgZGlzcGF0Y2ggdG8gc2VsZlxuICB2YXIgc3RvcmUgPSB0aGlzO1xuICB2YXIgcmVmID0gdGhpcztcbiAgdmFyIGRpc3BhdGNoID0gcmVmLmRpc3BhdGNoO1xuICB2YXIgY29tbWl0ID0gcmVmLmNvbW1pdDtcbiAgdGhpcy5kaXNwYXRjaCA9IGZ1bmN0aW9uIGJvdW5kRGlzcGF0Y2ggKHR5cGUsIHBheWxvYWQpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2guY2FsbChzdG9yZSwgdHlwZSwgcGF5bG9hZClcbiAgfTtcbiAgdGhpcy5jb21taXQgPSBmdW5jdGlvbiBib3VuZENvbW1pdCAodHlwZSwgcGF5bG9hZCwgb3B0aW9ucykge1xuICAgIHJldHVybiBjb21taXQuY2FsbChzdG9yZSwgdHlwZSwgcGF5bG9hZCwgb3B0aW9ucylcbiAgfTtcblxuICAvLyBzdHJpY3QgbW9kZVxuICB0aGlzLnN0cmljdCA9IHN0cmljdDtcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9tb2R1bGVzLnJvb3Quc3RhdGU7XG5cbiAgLy8gaW5pdCByb290IG1vZHVsZS5cbiAgLy8gdGhpcyBhbHNvIHJlY3Vyc2l2ZWx5IHJlZ2lzdGVycyBhbGwgc3ViLW1vZHVsZXNcbiAgLy8gYW5kIGNvbGxlY3RzIGFsbCBtb2R1bGUgZ2V0dGVycyBpbnNpZGUgdGhpcy5fd3JhcHBlZEdldHRlcnNcbiAgaW5zdGFsbE1vZHVsZSh0aGlzLCBzdGF0ZSwgW10sIHRoaXMuX21vZHVsZXMucm9vdCk7XG5cbiAgLy8gaW5pdGlhbGl6ZSB0aGUgc3RvcmUgc3RhdGUsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgcmVhY3Rpdml0eVxuICAvLyAoYWxzbyByZWdpc3RlcnMgX3dyYXBwZWRHZXR0ZXJzIGFzIGNvbXB1dGVkIHByb3BlcnRpZXMpXG4gIHJlc2V0U3RvcmVTdGF0ZSh0aGlzLCBzdGF0ZSk7XG5cbiAgLy8gYXBwbHkgcGx1Z2luc1xuICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikgeyByZXR1cm4gcGx1Z2luKHRoaXMkMSQxKTsgfSk7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBzdGF0ZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5TdG9yZS5wcm90b3R5cGUuaW5zdGFsbCA9IGZ1bmN0aW9uIGluc3RhbGwgKGFwcCwgaW5qZWN0S2V5KSB7XG4gIGFwcC5wcm92aWRlKGluamVjdEtleSB8fCBzdG9yZUtleSwgdGhpcyk7XG4gIGFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kc3RvcmUgPSB0aGlzO1xuXG4gIHZhciB1c2VEZXZ0b29scyA9IHRoaXMuX2RldnRvb2xzICE9PSB1bmRlZmluZWRcbiAgICA/IHRoaXMuX2RldnRvb2xzXG4gICAgOiB0cnVlIDtcblxuICBpZiAodXNlRGV2dG9vbHMpIHtcbiAgICBhZGREZXZ0b29scyhhcHAsIHRoaXMpO1xuICB9XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMuc3RhdGUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fc3RhdGUuZGF0YVxufTtcblxucHJvdG90eXBlQWNjZXNzb3JzLnN0YXRlLnNldCA9IGZ1bmN0aW9uICh2KSB7XG4gIHtcbiAgICBhc3NlcnQoZmFsc2UsIFwidXNlIHN0b3JlLnJlcGxhY2VTdGF0ZSgpIHRvIGV4cGxpY2l0IHJlcGxhY2Ugc3RvcmUgc3RhdGUuXCIpO1xuICB9XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuY29tbWl0ID0gZnVuY3Rpb24gY29tbWl0IChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICAvLyBjaGVjayBvYmplY3Qtc3R5bGUgY29tbWl0XG4gIHZhciByZWYgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgdmFyIHBheWxvYWQgPSByZWYucGF5bG9hZDtcbiAgICB2YXIgb3B0aW9ucyA9IHJlZi5vcHRpb25zO1xuXG4gIHZhciBtdXRhdGlvbiA9IHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCB9O1xuICB2YXIgZW50cnkgPSB0aGlzLl9tdXRhdGlvbnNbdHlwZV07XG4gIGlmICghZW50cnkpIHtcbiAgICB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIG11dGF0aW9uIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICBlbnRyeS5mb3JFYWNoKGZ1bmN0aW9uIGNvbW1pdEl0ZXJhdG9yIChoYW5kbGVyKSB7XG4gICAgICBoYW5kbGVyKHBheWxvYWQpO1xuICAgIH0pO1xuICB9KTtcblxuICB0aGlzLl9zdWJzY3JpYmVyc1xuICAgIC5zbGljZSgpIC8vIHNoYWxsb3cgY29weSB0byBwcmV2ZW50IGl0ZXJhdG9yIGludmFsaWRhdGlvbiBpZiBzdWJzY3JpYmVyIHN5bmNocm9ub3VzbHkgY2FsbHMgdW5zdWJzY3JpYmVcbiAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIobXV0YXRpb24sIHRoaXMkMSQxLnN0YXRlKTsgfSk7XG5cbiAgaWYgKFxuICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5zaWxlbnRcbiAgKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbdnVleF0gbXV0YXRpb24gdHlwZTogXCIgKyB0eXBlICsgXCIuIFNpbGVudCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZC4gXCIgK1xuICAgICAgJ1VzZSB0aGUgZmlsdGVyIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIHZ1ZS1kZXZ0b29scydcbiAgICApO1xuICB9XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiBkaXNwYXRjaCAoX3R5cGUsIF9wYXlsb2FkKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICAvLyBjaGVjayBvYmplY3Qtc3R5bGUgZGlzcGF0Y2hcbiAgdmFyIHJlZiA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkKTtcbiAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgIHZhciBwYXlsb2FkID0gcmVmLnBheWxvYWQ7XG5cbiAgdmFyIGFjdGlvbiA9IHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCB9O1xuICB2YXIgZW50cnkgPSB0aGlzLl9hY3Rpb25zW3R5cGVdO1xuICBpZiAoIWVudHJ5KSB7XG4gICAge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBhY3Rpb24gdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICB0aGlzLl9hY3Rpb25TdWJzY3JpYmVyc1xuICAgICAgLnNsaWNlKCkgLy8gc2hhbGxvdyBjb3B5IHRvIHByZXZlbnQgaXRlcmF0b3IgaW52YWxpZGF0aW9uIGlmIHN1YnNjcmliZXIgc3luY2hyb25vdXNseSBjYWxscyB1bnN1YnNjcmliZVxuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYmVmb3JlOyB9KVxuICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmJlZm9yZShhY3Rpb24sIHRoaXMkMSQxLnN0YXRlKTsgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbdnVleF0gZXJyb3IgaW4gYmVmb3JlIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gZW50cnkubGVuZ3RoID4gMVxuICAgID8gUHJvbWlzZS5hbGwoZW50cnkubWFwKGZ1bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBoYW5kbGVyKHBheWxvYWQpOyB9KSlcbiAgICA6IGVudHJ5WzBdKHBheWxvYWQpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcyQxJDEuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYWZ0ZXI7IH0pXG4gICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmFmdGVyKGFjdGlvbiwgdGhpcyQxJDEuc3RhdGUpOyB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBhZnRlciBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXNvbHZlKHJlcyk7XG4gICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzJDEkMS5fYWN0aW9uU3Vic2NyaWJlcnNcbiAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5lcnJvcjsgfSlcbiAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuZXJyb3IoYWN0aW9uLCB0aGlzJDEkMS5zdGF0ZSwgZXJyb3IpOyB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBlcnJvciBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9KVxufTtcblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIHN1YnNjcmliZSAoZm4sIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGdlbmVyaWNTdWJzY3JpYmUoZm4sIHRoaXMuX3N1YnNjcmliZXJzLCBvcHRpb25zKVxufTtcblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZUFjdGlvbiA9IGZ1bmN0aW9uIHN1YnNjcmliZUFjdGlvbiAoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIHN1YnMgPSB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgPyB7IGJlZm9yZTogZm4gfSA6IGZuO1xuICByZXR1cm4gZ2VuZXJpY1N1YnNjcmliZShzdWJzLCB0aGlzLl9hY3Rpb25TdWJzY3JpYmVycywgb3B0aW9ucylcbn07XG5cblN0b3JlLnByb3RvdHlwZS53YXRjaCA9IGZ1bmN0aW9uIHdhdGNoJDEgKGdldHRlciwgY2IsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIHtcbiAgICBhc3NlcnQodHlwZW9mIGdldHRlciA9PT0gJ2Z1bmN0aW9uJywgXCJzdG9yZS53YXRjaCBvbmx5IGFjY2VwdHMgYSBmdW5jdGlvbi5cIik7XG4gIH1cbiAgcmV0dXJuIHdhdGNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldHRlcih0aGlzJDEkMS5zdGF0ZSwgdGhpcyQxJDEuZ2V0dGVycyk7IH0sIGNiLCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSlcbn07XG5cblN0b3JlLnByb3RvdHlwZS5yZXBsYWNlU3RhdGUgPSBmdW5jdGlvbiByZXBsYWNlU3RhdGUgKHN0YXRlKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzJDEkMS5fc3RhdGUuZGF0YSA9IHN0YXRlO1xuICB9KTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5yZWdpc3Rlck1vZHVsZSA9IGZ1bmN0aW9uIHJlZ2lzdGVyTW9kdWxlIChwYXRoLCByYXdNb2R1bGUsIG9wdGlvbnMpIHtcbiAgICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gICAgYXNzZXJ0KHBhdGgubGVuZ3RoID4gMCwgJ2Nhbm5vdCByZWdpc3RlciB0aGUgcm9vdCBtb2R1bGUgYnkgdXNpbmcgcmVnaXN0ZXJNb2R1bGUuJyk7XG4gIH1cblxuICB0aGlzLl9tb2R1bGVzLnJlZ2lzdGVyKHBhdGgsIHJhd01vZHVsZSk7XG4gIGluc3RhbGxNb2R1bGUodGhpcywgdGhpcy5zdGF0ZSwgcGF0aCwgdGhpcy5fbW9kdWxlcy5nZXQocGF0aCksIG9wdGlvbnMucHJlc2VydmVTdGF0ZSk7XG4gIC8vIHJlc2V0IHN0b3JlIHRvIHVwZGF0ZSBnZXR0ZXJzLi4uXG4gIHJlc2V0U3RvcmVTdGF0ZSh0aGlzLCB0aGlzLnN0YXRlKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS51bnJlZ2lzdGVyTW9kdWxlID0gZnVuY3Rpb24gdW5yZWdpc3Rlck1vZHVsZSAocGF0aCkge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgeyBwYXRoID0gW3BhdGhdOyB9XG5cbiAge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICB9XG5cbiAgdGhpcy5fbW9kdWxlcy51bnJlZ2lzdGVyKHBhdGgpO1xuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50U3RhdGUgPSBnZXROZXN0ZWRTdGF0ZSh0aGlzJDEkMS5zdGF0ZSwgcGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIGRlbGV0ZSBwYXJlbnRTdGF0ZVtwYXRoW3BhdGgubGVuZ3RoIC0gMV1dO1xuICB9KTtcbiAgcmVzZXRTdG9yZSh0aGlzKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5oYXNNb2R1bGUgPSBmdW5jdGlvbiBoYXNNb2R1bGUgKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgeyBwYXRoID0gW3BhdGhdOyB9XG5cbiAge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX21vZHVsZXMuaXNSZWdpc3RlcmVkKHBhdGgpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUuaG90VXBkYXRlID0gZnVuY3Rpb24gaG90VXBkYXRlIChuZXdPcHRpb25zKSB7XG4gIHRoaXMuX21vZHVsZXMudXBkYXRlKG5ld09wdGlvbnMpO1xuICByZXNldFN0b3JlKHRoaXMsIHRydWUpO1xufTtcblxuU3RvcmUucHJvdG90eXBlLl93aXRoQ29tbWl0ID0gZnVuY3Rpb24gX3dpdGhDb21taXQgKGZuKSB7XG4gIHZhciBjb21taXR0aW5nID0gdGhpcy5fY29tbWl0dGluZztcbiAgdGhpcy5fY29tbWl0dGluZyA9IHRydWU7XG4gIGZuKCk7XG4gIHRoaXMuX2NvbW1pdHRpbmcgPSBjb21taXR0aW5nO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFN0b3JlLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBnZXR0aW5nIHRoZSBzdGF0ZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IHN0YXRlcyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IHN0YXRlIGFuZCBnZXR0ZXJzIGZvciBwYXJhbSwgeW91IGNhbiBkbyBzb21ldGhpbmcgZm9yIHN0YXRlIGFuZCBnZXR0ZXJzIGluIGl0LlxuICogQHBhcmFtIHtPYmplY3R9XG4gKi9cbnZhciBtYXBTdGF0ZSA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBzdGF0ZXMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoIWlzVmFsaWRNYXAoc3RhdGVzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBTdGF0ZTogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoc3RhdGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkU3RhdGUgKCkge1xuICAgICAgdmFyIHN0YXRlID0gdGhpcy4kc3RvcmUuc3RhdGU7XG4gICAgICB2YXIgZ2V0dGVycyA9IHRoaXMuJHN0b3JlLmdldHRlcnM7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcFN0YXRlJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IG1vZHVsZS5jb250ZXh0LnN0YXRlO1xuICAgICAgICBnZXR0ZXJzID0gbW9kdWxlLmNvbnRleHQuZ2V0dGVycztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmNhbGwodGhpcywgc3RhdGUsIGdldHRlcnMpXG4gICAgICAgIDogc3RhdGVbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgY29tbWl0dGluZyB0aGUgbXV0YXRpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG11dGF0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBjb21taXRgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbSwgaXQgY2FuIGFjY2VwdCBhbm90aGVyIHBhcmFtcy4gWW91IGNhbiBjb21taXQgbXV0YXRpb24gYW5kIGRvIGFueSBvdGhlciB0aGluZ3MgaW4gdGhpcyBmdW5jdGlvbi4gc3BlY2lhbGx5LCBZb3UgbmVlZCB0byBwYXNzIGFudGhvciBwYXJhbXMgZnJvbSB0aGUgbWFwcGVkIGZ1bmN0aW9uLlxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwTXV0YXRpb25zID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIG11dGF0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICghaXNWYWxpZE1hcChtdXRhdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcignW3Z1ZXhdIG1hcE11dGF0aW9uczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAobXV0YXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkTXV0YXRpb24gKCkge1xuICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICAgIC8vIEdldCB0aGUgY29tbWl0IG1ldGhvZCBmcm9tIHN0b3JlXG4gICAgICB2YXIgY29tbWl0ID0gdGhpcy4kc3RvcmUuY29tbWl0O1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBNdXRhdGlvbnMnLCBuYW1lc3BhY2UpO1xuICAgICAgICBpZiAoIW1vZHVsZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGNvbW1pdCA9IG1vZHVsZS5jb250ZXh0LmNvbW1pdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmFwcGx5KHRoaXMsIFtjb21taXRdLmNvbmNhdChhcmdzKSlcbiAgICAgICAgOiBjb21taXQuYXBwbHkodGhpcy4kc3RvcmUsIFt2YWxdLmNvbmNhdChhcmdzKSlcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBnZXR0aW5nIHRoZSBnZXR0ZXJzXG4gKiBAcGFyYW0ge1N0cmluZ30gW25hbWVzcGFjZV0gLSBNb2R1bGUncyBuYW1lc3BhY2VcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBnZXR0ZXJzXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBtYXBHZXR0ZXJzID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIGdldHRlcnMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoIWlzVmFsaWRNYXAoZ2V0dGVycykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwR2V0dGVyczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoZ2V0dGVycykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICAvLyBUaGUgbmFtZXNwYWNlIGhhcyBiZWVuIG11dGF0ZWQgYnkgbm9ybWFsaXplTmFtZXNwYWNlXG4gICAgdmFsID0gbmFtZXNwYWNlICsgdmFsO1xuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkR2V0dGVyICgpIHtcbiAgICAgIGlmIChuYW1lc3BhY2UgJiYgIWdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwR2V0dGVycycsIG5hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoISh2YWwgaW4gdGhpcy4kc3RvcmUuZ2V0dGVycykpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBnZXR0ZXI6IFwiICsgdmFsKSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZGlzcGF0Y2ggdGhlIGFjdGlvblxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gYWN0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBkaXNwYXRjaGAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtLCBpdCBjYW4gYWNjZXB0IGFudGhvciBwYXJhbXMuIFlvdSBjYW4gZGlzcGF0Y2ggYWN0aW9uIGFuZCBkbyBhbnkgb3RoZXIgdGhpbmdzIGluIHRoaXMgZnVuY3Rpb24uIHNwZWNpYWxseSwgWW91IG5lZWQgdG8gcGFzcyBhbnRob3IgcGFyYW1zIGZyb20gdGhlIG1hcHBlZCBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcEFjdGlvbnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgYWN0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICghaXNWYWxpZE1hcChhY3Rpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBBY3Rpb25zOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChhY3Rpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkQWN0aW9uICgpIHtcbiAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgICAvLyBnZXQgZGlzcGF0Y2ggZnVuY3Rpb24gZnJvbSBzdG9yZVxuICAgICAgdmFyIGRpc3BhdGNoID0gdGhpcy4kc3RvcmUuZGlzcGF0Y2g7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcEFjdGlvbnMnLCBuYW1lc3BhY2UpO1xuICAgICAgICBpZiAoIW1vZHVsZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGRpc3BhdGNoID0gbW9kdWxlLmNvbnRleHQuZGlzcGF0Y2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5hcHBseSh0aGlzLCBbZGlzcGF0Y2hdLmNvbmNhdChhcmdzKSlcbiAgICAgICAgOiBkaXNwYXRjaC5hcHBseSh0aGlzLiRzdG9yZSwgW3ZhbF0uY29uY2F0KGFyZ3MpKVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWJpbmRpbmcgbmFtZXNwYWNlIHBhcmFtIGZvciBtYXBYWFggZnVuY3Rpb24gaW4gc3BlY2lhbCBzY29wZWQsIGFuZCByZXR1cm4gdGhlbSBieSBzaW1wbGUgb2JqZWN0XG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBjcmVhdGVOYW1lc3BhY2VkSGVscGVycyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UpIHsgcmV0dXJuICh7XG4gIG1hcFN0YXRlOiBtYXBTdGF0ZS5iaW5kKG51bGwsIG5hbWVzcGFjZSksXG4gIG1hcEdldHRlcnM6IG1hcEdldHRlcnMuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBNdXRhdGlvbnM6IG1hcE11dGF0aW9ucy5iaW5kKG51bGwsIG5hbWVzcGFjZSksXG4gIG1hcEFjdGlvbnM6IG1hcEFjdGlvbnMuYmluZChudWxsLCBuYW1lc3BhY2UpXG59KTsgfTtcblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIG1hcFxuICogbm9ybWFsaXplTWFwKFsxLCAyLCAzXSkgPT4gWyB7IGtleTogMSwgdmFsOiAxIH0sIHsga2V5OiAyLCB2YWw6IDIgfSwgeyBrZXk6IDMsIHZhbDogMyB9IF1cbiAqIG5vcm1hbGl6ZU1hcCh7YTogMSwgYjogMiwgYzogM30pID0+IFsgeyBrZXk6ICdhJywgdmFsOiAxIH0sIHsga2V5OiAnYicsIHZhbDogMiB9LCB7IGtleTogJ2MnLCB2YWw6IDMgfSBdXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gbWFwXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1hcCAobWFwKSB7XG4gIGlmICghaXNWYWxpZE1hcChtYXApKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkobWFwKVxuICAgID8gbWFwLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoeyBrZXk6IGtleSwgdmFsOiBrZXkgfSk7IH0pXG4gICAgOiBPYmplY3Qua2V5cyhtYXApLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoeyBrZXk6IGtleSwgdmFsOiBtYXBba2V5XSB9KTsgfSlcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB3aGV0aGVyIGdpdmVuIG1hcCBpcyB2YWxpZCBvciBub3RcbiAqIEBwYXJhbSB7Kn0gbWFwXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkTWFwIChtYXApIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkobWFwKSB8fCBpc09iamVjdChtYXApXG59XG5cbi8qKlxuICogUmV0dXJuIGEgZnVuY3Rpb24gZXhwZWN0IHR3byBwYXJhbSBjb250YWlucyBuYW1lc3BhY2UgYW5kIG1hcC4gaXQgd2lsbCBub3JtYWxpemUgdGhlIG5hbWVzcGFjZSBhbmQgdGhlbiB0aGUgcGFyYW0ncyBmdW5jdGlvbiB3aWxsIGhhbmRsZSB0aGUgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIG1hcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTmFtZXNwYWNlIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWFwKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lc3BhY2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICBtYXAgPSBuYW1lc3BhY2U7XG4gICAgICBuYW1lc3BhY2UgPSAnJztcbiAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZS5jaGFyQXQobmFtZXNwYWNlLmxlbmd0aCAtIDEpICE9PSAnLycpIHtcbiAgICAgIG5hbWVzcGFjZSArPSAnLyc7XG4gICAgfVxuICAgIHJldHVybiBmbihuYW1lc3BhY2UsIG1hcClcbiAgfVxufVxuXG4vKipcbiAqIFNlYXJjaCBhIHNwZWNpYWwgbW9kdWxlIGZyb20gc3RvcmUgYnkgbmFtZXNwYWNlLiBpZiBtb2R1bGUgbm90IGV4aXN0LCBwcmludCBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3R9IHN0b3JlXG4gKiBAcGFyYW0ge1N0cmluZ30gaGVscGVyXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE1vZHVsZUJ5TmFtZXNwYWNlIChzdG9yZSwgaGVscGVyLCBuYW1lc3BhY2UpIHtcbiAgdmFyIG1vZHVsZSA9IHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwW25hbWVzcGFjZV07XG4gIGlmICghbW9kdWxlKSB7XG4gICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gbW9kdWxlIG5hbWVzcGFjZSBub3QgZm91bmQgaW4gXCIgKyBoZWxwZXIgKyBcIigpOiBcIiArIG5hbWVzcGFjZSkpO1xuICB9XG4gIHJldHVybiBtb2R1bGVcbn1cblxuLy8gQ3JlZGl0czogYm9ycm93ZWQgY29kZSBmcm9tIGZjb21iL3JlZHV4LWxvZ2dlclxuXG5mdW5jdGlvbiBjcmVhdGVMb2dnZXIgKHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBjb2xsYXBzZWQgPSByZWYuY29sbGFwc2VkOyBpZiAoIGNvbGxhcHNlZCA9PT0gdm9pZCAwICkgY29sbGFwc2VkID0gdHJ1ZTtcbiAgdmFyIGZpbHRlciA9IHJlZi5maWx0ZXI7IGlmICggZmlsdGVyID09PSB2b2lkIDAgKSBmaWx0ZXIgPSBmdW5jdGlvbiAobXV0YXRpb24sIHN0YXRlQmVmb3JlLCBzdGF0ZUFmdGVyKSB7IHJldHVybiB0cnVlOyB9O1xuICB2YXIgdHJhbnNmb3JtZXIgPSByZWYudHJhbnNmb3JtZXI7IGlmICggdHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIHRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKHN0YXRlKSB7IHJldHVybiBzdGF0ZTsgfTtcbiAgdmFyIG11dGF0aW9uVHJhbnNmb3JtZXIgPSByZWYubXV0YXRpb25UcmFuc2Zvcm1lcjsgaWYgKCBtdXRhdGlvblRyYW5zZm9ybWVyID09PSB2b2lkIDAgKSBtdXRhdGlvblRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKG11dCkgeyByZXR1cm4gbXV0OyB9O1xuICB2YXIgYWN0aW9uRmlsdGVyID0gcmVmLmFjdGlvbkZpbHRlcjsgaWYgKCBhY3Rpb25GaWx0ZXIgPT09IHZvaWQgMCApIGFjdGlvbkZpbHRlciA9IGZ1bmN0aW9uIChhY3Rpb24sIHN0YXRlKSB7IHJldHVybiB0cnVlOyB9O1xuICB2YXIgYWN0aW9uVHJhbnNmb3JtZXIgPSByZWYuYWN0aW9uVHJhbnNmb3JtZXI7IGlmICggYWN0aW9uVHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIGFjdGlvblRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKGFjdCkgeyByZXR1cm4gYWN0OyB9O1xuICB2YXIgbG9nTXV0YXRpb25zID0gcmVmLmxvZ011dGF0aW9uczsgaWYgKCBsb2dNdXRhdGlvbnMgPT09IHZvaWQgMCApIGxvZ011dGF0aW9ucyA9IHRydWU7XG4gIHZhciBsb2dBY3Rpb25zID0gcmVmLmxvZ0FjdGlvbnM7IGlmICggbG9nQWN0aW9ucyA9PT0gdm9pZCAwICkgbG9nQWN0aW9ucyA9IHRydWU7XG4gIHZhciBsb2dnZXIgPSByZWYubG9nZ2VyOyBpZiAoIGxvZ2dlciA9PT0gdm9pZCAwICkgbG9nZ2VyID0gY29uc29sZTtcblxuICByZXR1cm4gZnVuY3Rpb24gKHN0b3JlKSB7XG4gICAgdmFyIHByZXZTdGF0ZSA9IGRlZXBDb3B5KHN0b3JlLnN0YXRlKTtcblxuICAgIGlmICh0eXBlb2YgbG9nZ2VyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGxvZ011dGF0aW9ucykge1xuICAgICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgdmFyIG5leHRTdGF0ZSA9IGRlZXBDb3B5KHN0YXRlKTtcblxuICAgICAgICBpZiAoZmlsdGVyKG11dGF0aW9uLCBwcmV2U3RhdGUsIG5leHRTdGF0ZSkpIHtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkVGltZSA9IGdldEZvcm1hdHRlZFRpbWUoKTtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkTXV0YXRpb24gPSBtdXRhdGlvblRyYW5zZm9ybWVyKG11dGF0aW9uKTtcbiAgICAgICAgICB2YXIgbWVzc2FnZSA9IFwibXV0YXRpb24gXCIgKyAobXV0YXRpb24udHlwZSkgKyBmb3JtYXR0ZWRUaW1lO1xuXG4gICAgICAgICAgc3RhcnRNZXNzYWdlKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBwcmV2IHN0YXRlJywgJ2NvbG9yOiAjOUU5RTlFOyBmb250LXdlaWdodDogYm9sZCcsIHRyYW5zZm9ybWVyKHByZXZTdGF0ZSkpO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIG11dGF0aW9uJywgJ2NvbG9yOiAjMDNBOUY0OyBmb250LXdlaWdodDogYm9sZCcsIGZvcm1hdHRlZE11dGF0aW9uKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBuZXh0IHN0YXRlJywgJ2NvbG9yOiAjNENBRjUwOyBmb250LXdlaWdodDogYm9sZCcsIHRyYW5zZm9ybWVyKG5leHRTdGF0ZSkpO1xuICAgICAgICAgIGVuZE1lc3NhZ2UobG9nZ2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZTdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChsb2dBY3Rpb25zKSB7XG4gICAgICBzdG9yZS5zdWJzY3JpYmVBY3Rpb24oZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGFjdGlvbkZpbHRlcihhY3Rpb24sIHN0YXRlKSkge1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRUaW1lID0gZ2V0Rm9ybWF0dGVkVGltZSgpO1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRBY3Rpb24gPSBhY3Rpb25UcmFuc2Zvcm1lcihhY3Rpb24pO1xuICAgICAgICAgIHZhciBtZXNzYWdlID0gXCJhY3Rpb24gXCIgKyAoYWN0aW9uLnR5cGUpICsgZm9ybWF0dGVkVGltZTtcblxuICAgICAgICAgIHN0YXJ0TWVzc2FnZShsb2dnZXIsIG1lc3NhZ2UsIGNvbGxhcHNlZCk7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgYWN0aW9uJywgJ2NvbG9yOiAjMDNBOUY0OyBmb250LXdlaWdodDogYm9sZCcsIGZvcm1hdHRlZEFjdGlvbik7XG4gICAgICAgICAgZW5kTWVzc2FnZShsb2dnZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRNZXNzYWdlIChsb2dnZXIsIG1lc3NhZ2UsIGNvbGxhcHNlZCkge1xuICB2YXIgc3RhcnRNZXNzYWdlID0gY29sbGFwc2VkXG4gICAgPyBsb2dnZXIuZ3JvdXBDb2xsYXBzZWRcbiAgICA6IGxvZ2dlci5ncm91cDtcblxuICAvLyByZW5kZXJcbiAgdHJ5IHtcbiAgICBzdGFydE1lc3NhZ2UuY2FsbChsb2dnZXIsIG1lc3NhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmxvZyhtZXNzYWdlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmRNZXNzYWdlIChsb2dnZXIpIHtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuZ3JvdXBFbmQoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5sb2coJ+KAlOKAlCBsb2cgZW5kIOKAlOKAlCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1hdHRlZFRpbWUgKCkge1xuICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7XG4gIHJldHVybiAoXCIgQCBcIiArIChwYWQodGltZS5nZXRIb3VycygpLCAyKSkgKyBcIjpcIiArIChwYWQodGltZS5nZXRNaW51dGVzKCksIDIpKSArIFwiOlwiICsgKHBhZCh0aW1lLmdldFNlY29uZHMoKSwgMikpICsgXCIuXCIgKyAocGFkKHRpbWUuZ2V0TWlsbGlzZWNvbmRzKCksIDMpKSlcbn1cblxuZnVuY3Rpb24gcmVwZWF0IChzdHIsIHRpbWVzKSB7XG4gIHJldHVybiAobmV3IEFycmF5KHRpbWVzICsgMSkpLmpvaW4oc3RyKVxufVxuXG5mdW5jdGlvbiBwYWQgKG51bSwgbWF4TGVuZ3RoKSB7XG4gIHJldHVybiByZXBlYXQoJzAnLCBtYXhMZW5ndGggLSBudW0udG9TdHJpbmcoKS5sZW5ndGgpICsgbnVtXG59XG5cbnZhciBpbmRleCA9IHtcbiAgdmVyc2lvbjogJzQuMC4yJyxcbiAgU3RvcmU6IFN0b3JlLFxuICBzdG9yZUtleTogc3RvcmVLZXksXG4gIGNyZWF0ZVN0b3JlOiBjcmVhdGVTdG9yZSxcbiAgdXNlU3RvcmU6IHVzZVN0b3JlLFxuICBtYXBTdGF0ZTogbWFwU3RhdGUsXG4gIG1hcE11dGF0aW9uczogbWFwTXV0YXRpb25zLFxuICBtYXBHZXR0ZXJzOiBtYXBHZXR0ZXJzLFxuICBtYXBBY3Rpb25zOiBtYXBBY3Rpb25zLFxuICBjcmVhdGVOYW1lc3BhY2VkSGVscGVyczogY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMsXG4gIGNyZWF0ZUxvZ2dlcjogY3JlYXRlTG9nZ2VyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBpbmRleDtcbmV4cG9ydCB7IFN0b3JlLCBjcmVhdGVMb2dnZXIsIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzLCBjcmVhdGVTdG9yZSwgbWFwQWN0aW9ucywgbWFwR2V0dGVycywgbWFwTXV0YXRpb25zLCBtYXBTdGF0ZSwgc3RvcmVLZXksIHVzZVN0b3JlIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vuex/dist/vuex.esm-browser.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/webpack-hot-middleware/client-overlay.js":
|
||
/*!**************************************************!*\
|
||
!*** (webpack)-hot-middleware/client-overlay.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/*eslint-env browser*/\n\nvar clientOverlay = document.createElement('div');\nclientOverlay.id = 'webpack-hot-middleware-clientOverlay';\nvar styles = {\n background: 'rgba(0,0,0,0.85)',\n color: '#E8E8E8',\n lineHeight: '1.2',\n whiteSpace: 'pre',\n fontFamily: 'Menlo, Consolas, monospace',\n fontSize: '13px',\n position: 'fixed',\n zIndex: 9999,\n padding: '10px',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n overflow: 'auto',\n dir: 'ltr',\n textAlign: 'left'\n};\n\nvar ansiHTML = __webpack_require__(/*! ansi-html */ \"./node_modules/ansi-html/index.js\");\nvar colors = {\n reset: ['transparent', 'transparent'],\n black: '181818',\n red: 'E36049',\n green: 'B3CB74',\n yellow: 'FFD080',\n blue: '7CAFC2',\n magenta: '7FACCA',\n cyan: 'C3C2EF',\n lightgrey: 'EBE7E3',\n darkgrey: '6D7891'\n};\n\nvar Entities = __webpack_require__(/*! html-entities */ \"./node_modules/html-entities/index.js\").AllHtmlEntities;\nvar entities = new Entities();\n\nfunction showProblems(type, lines) {\n clientOverlay.innerHTML = '';\n lines.forEach(function(msg) {\n msg = ansiHTML(entities.encode(msg));\n var div = document.createElement('div');\n div.style.marginBottom = '26px';\n div.innerHTML = problemType(type) + ' in ' + msg;\n clientOverlay.appendChild(div);\n });\n if (document.body) {\n document.body.appendChild(clientOverlay);\n }\n}\n\nfunction clear() {\n if (document.body && clientOverlay.parentNode) {\n document.body.removeChild(clientOverlay);\n }\n}\n\nfunction problemType (type) {\n var problemColors = {\n errors: colors.red,\n warnings: colors.yellow\n };\n var color = problemColors[type] || colors.red;\n return (\n '<span style=\"background-color:#' + color + '; color:#fff; padding:2px 4px; border-radius: 2px\">' +\n type.slice(0, -1).toUpperCase() +\n '</span>'\n );\n}\n\nmodule.exports = function(options) {\n for (var color in options.overlayColors) {\n if (color in colors) {\n colors[color] = options.overlayColors[color];\n }\n ansiHTML.setColors(colors);\n }\n\n for (var style in options.overlayStyles) {\n styles[style] = options.overlayStyles[style];\n }\n\n for (var key in styles) {\n clientOverlay.style[key] = styles[key];\n }\n\n return {\n showProblems: showProblems,\n clear: clear\n }\n};\n\nmodule.exports.clear = clear;\nmodule.exports.showProblems = showProblems;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spLWhvdC1taWRkbGV3YXJlL2NsaWVudC1vdmVybGF5LmpzP2M3YTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLG1CQUFPLENBQUMsb0RBQVc7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsbUJBQU8sQ0FBQyw0REFBZTtBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsWUFBWSxpQkFBaUI7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay1ob3QtbWlkZGxld2FyZS9jbGllbnQtb3ZlcmxheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qZXNsaW50LWVudiBicm93c2VyKi9cblxudmFyIGNsaWVudE92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbmNsaWVudE92ZXJsYXkuaWQgPSAnd2VicGFjay1ob3QtbWlkZGxld2FyZS1jbGllbnRPdmVybGF5JztcbnZhciBzdHlsZXMgPSB7XG4gIGJhY2tncm91bmQ6ICdyZ2JhKDAsMCwwLDAuODUpJyxcbiAgY29sb3I6ICcjRThFOEU4JyxcbiAgbGluZUhlaWdodDogJzEuMicsXG4gIHdoaXRlU3BhY2U6ICdwcmUnLFxuICBmb250RmFtaWx5OiAnTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UnLFxuICBmb250U2l6ZTogJzEzcHgnLFxuICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgekluZGV4OiA5OTk5LFxuICBwYWRkaW5nOiAnMTBweCcsXG4gIGxlZnQ6IDAsXG4gIHJpZ2h0OiAwLFxuICB0b3A6IDAsXG4gIGJvdHRvbTogMCxcbiAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgZGlyOiAnbHRyJyxcbiAgdGV4dEFsaWduOiAnbGVmdCdcbn07XG5cbnZhciBhbnNpSFRNTCA9IHJlcXVpcmUoJ2Fuc2ktaHRtbCcpO1xudmFyIGNvbG9ycyA9IHtcbiAgcmVzZXQ6IFsndHJhbnNwYXJlbnQnLCAndHJhbnNwYXJlbnQnXSxcbiAgYmxhY2s6ICcxODE4MTgnLFxuICByZWQ6ICdFMzYwNDknLFxuICBncmVlbjogJ0IzQ0I3NCcsXG4gIHllbGxvdzogJ0ZGRDA4MCcsXG4gIGJsdWU6ICc3Q0FGQzInLFxuICBtYWdlbnRhOiAnN0ZBQ0NBJyxcbiAgY3lhbjogJ0MzQzJFRicsXG4gIGxpZ2h0Z3JleTogJ0VCRTdFMycsXG4gIGRhcmtncmV5OiAnNkQ3ODkxJ1xufTtcblxudmFyIEVudGl0aWVzID0gcmVxdWlyZSgnaHRtbC1lbnRpdGllcycpLkFsbEh0bWxFbnRpdGllcztcbnZhciBlbnRpdGllcyA9IG5ldyBFbnRpdGllcygpO1xuXG5mdW5jdGlvbiBzaG93UHJvYmxlbXModHlwZSwgbGluZXMpIHtcbiAgY2xpZW50T3ZlcmxheS5pbm5lckhUTUwgPSAnJztcbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihtc2cpIHtcbiAgICBtc2cgPSBhbnNpSFRNTChlbnRpdGllcy5lbmNvZGUobXNnKSk7XG4gICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdi5zdHlsZS5tYXJnaW5Cb3R0b20gPSAnMjZweCc7XG4gICAgZGl2LmlubmVySFRNTCA9IHByb2JsZW1UeXBlKHR5cGUpICsgJyBpbiAnICsgbXNnO1xuICAgIGNsaWVudE92ZXJsYXkuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgfSk7XG4gIGlmIChkb2N1bWVudC5ib2R5KSB7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbGllbnRPdmVybGF5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbGVhcigpIHtcbiAgaWYgKGRvY3VtZW50LmJvZHkgJiYgY2xpZW50T3ZlcmxheS5wYXJlbnROb2RlKSB7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChjbGllbnRPdmVybGF5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9ibGVtVHlwZSAodHlwZSkge1xuICB2YXIgcHJvYmxlbUNvbG9ycyA9IHtcbiAgICBlcnJvcnM6IGNvbG9ycy5yZWQsXG4gICAgd2FybmluZ3M6IGNvbG9ycy55ZWxsb3dcbiAgfTtcbiAgdmFyIGNvbG9yID0gcHJvYmxlbUNvbG9yc1t0eXBlXSB8fCBjb2xvcnMucmVkO1xuICByZXR1cm4gKFxuICAgICc8c3BhbiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IycgKyBjb2xvciArICc7IGNvbG9yOiNmZmY7IHBhZGRpbmc6MnB4IDRweDsgYm9yZGVyLXJhZGl1czogMnB4XCI+JyArXG4gICAgICB0eXBlLnNsaWNlKDAsIC0xKS50b1VwcGVyQ2FzZSgpICtcbiAgICAnPC9zcGFuPidcbiAgKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIGZvciAodmFyIGNvbG9yIGluIG9wdGlvbnMub3ZlcmxheUNvbG9ycykge1xuICAgIGlmIChjb2xvciBpbiBjb2xvcnMpIHtcbiAgICAgIGNvbG9yc1tjb2xvcl0gPSBvcHRpb25zLm92ZXJsYXlDb2xvcnNbY29sb3JdO1xuICAgIH1cbiAgICBhbnNpSFRNTC5zZXRDb2xvcnMoY29sb3JzKTtcbiAgfVxuXG4gIGZvciAodmFyIHN0eWxlIGluIG9wdGlvbnMub3ZlcmxheVN0eWxlcykge1xuICAgIHN0eWxlc1tzdHlsZV0gPSBvcHRpb25zLm92ZXJsYXlTdHlsZXNbc3R5bGVdO1xuICB9XG5cbiAgZm9yICh2YXIga2V5IGluIHN0eWxlcykge1xuICAgIGNsaWVudE92ZXJsYXkuc3R5bGVba2V5XSA9IHN0eWxlc1trZXldO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzaG93UHJvYmxlbXM6IHNob3dQcm9ibGVtcyxcbiAgICBjbGVhcjogY2xlYXJcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuY2xlYXIgPSBjbGVhcjtcbm1vZHVsZS5leHBvcnRzLnNob3dQcm9ibGVtcyA9IHNob3dQcm9ibGVtcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/webpack-hot-middleware/client-overlay.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/webpack-hot-middleware/client.js?noInfo=true&reload=true":
|
||
/*!******************************************************************!*\
|
||
!*** (webpack)-hot-middleware/client.js?noInfo=true&reload=true ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/* WEBPACK VAR INJECTION */(function(__resourceQuery, module) {/*eslint-env browser*/\n/*global __resourceQuery __webpack_public_path__*/\n\nvar options = {\n path: \"/__webpack_hmr\",\n timeout: 20 * 1000,\n overlay: true,\n reload: false,\n log: true,\n warn: true,\n name: '',\n autoConnect: true,\n overlayStyles: {},\n overlayWarnings: false,\n ansiColors: {}\n};\nif (true) {\n var querystring = __webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\");\n var overrides = querystring.parse(__resourceQuery.slice(1));\n setOverrides(overrides);\n}\n\nif (typeof window === 'undefined') {\n // do nothing\n} else if (typeof window.EventSource === 'undefined') {\n console.warn(\n \"webpack-hot-middleware's client requires EventSource to work. \" +\n \"You should include a polyfill if you want to support this browser: \" +\n \"https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events#Tools\"\n );\n} else {\n if (options.autoConnect) {\n connect();\n }\n}\n\n/* istanbul ignore next */\nfunction setOptionsAndConnect(overrides) {\n setOverrides(overrides);\n connect();\n}\n\nfunction setOverrides(overrides) {\n if (overrides.autoConnect) options.autoConnect = overrides.autoConnect == 'true';\n if (overrides.path) options.path = overrides.path;\n if (overrides.timeout) options.timeout = overrides.timeout;\n if (overrides.overlay) options.overlay = overrides.overlay !== 'false';\n if (overrides.reload) options.reload = overrides.reload !== 'false';\n if (overrides.noInfo && overrides.noInfo !== 'false') {\n options.log = false;\n }\n if (overrides.name) {\n options.name = overrides.name;\n }\n if (overrides.quiet && overrides.quiet !== 'false') {\n options.log = false;\n options.warn = false;\n }\n\n if (overrides.dynamicPublicPath) {\n options.path = __webpack_require__.p + options.path;\n }\n\n if (overrides.ansiColors) options.ansiColors = JSON.parse(overrides.ansiColors);\n if (overrides.overlayStyles) options.overlayStyles = JSON.parse(overrides.overlayStyles);\n\n if (overrides.overlayWarnings) {\n options.overlayWarnings = overrides.overlayWarnings == 'true';\n }\n}\n\nfunction EventSourceWrapper() {\n var source;\n var lastActivity = new Date();\n var listeners = [];\n\n init();\n var timer = setInterval(function() {\n if ((new Date() - lastActivity) > options.timeout) {\n handleDisconnect();\n }\n }, options.timeout / 2);\n\n function init() {\n source = new window.EventSource(options.path);\n source.onopen = handleOnline;\n source.onerror = handleDisconnect;\n source.onmessage = handleMessage;\n }\n\n function handleOnline() {\n if (options.log) console.log(\"[HMR] connected\");\n lastActivity = new Date();\n }\n\n function handleMessage(event) {\n lastActivity = new Date();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](event);\n }\n }\n\n function handleDisconnect() {\n clearInterval(timer);\n source.close();\n setTimeout(init, options.timeout);\n }\n\n return {\n addMessageListener: function(fn) {\n listeners.push(fn);\n }\n };\n}\n\nfunction getEventSourceWrapper() {\n if (!window.__whmEventSourceWrapper) {\n window.__whmEventSourceWrapper = {};\n }\n if (!window.__whmEventSourceWrapper[options.path]) {\n // cache the wrapper for other entries loaded on\n // the same page with the same options.path\n window.__whmEventSourceWrapper[options.path] = EventSourceWrapper();\n }\n return window.__whmEventSourceWrapper[options.path];\n}\n\nfunction connect() {\n getEventSourceWrapper().addMessageListener(handleMessage);\n\n function handleMessage(event) {\n if (event.data == \"\\uD83D\\uDC93\") {\n return;\n }\n try {\n processMessage(JSON.parse(event.data));\n } catch (ex) {\n if (options.warn) {\n console.warn(\"Invalid HMR message: \" + event.data + \"\\n\" + ex);\n }\n }\n }\n}\n\n// the reporter needs to be a singleton on the page\n// in case the client is being used by multiple bundles\n// we only want to report once.\n// all the errors will go to all clients\nvar singletonKey = '__webpack_hot_middleware_reporter__';\nvar reporter;\nif (typeof window !== 'undefined') {\n if (!window[singletonKey]) {\n window[singletonKey] = createReporter();\n }\n reporter = window[singletonKey];\n}\n\nfunction createReporter() {\n var strip = __webpack_require__(/*! strip-ansi */ \"./node_modules/strip-ansi/index.js\");\n\n var overlay;\n if (typeof document !== 'undefined' && options.overlay) {\n overlay = __webpack_require__(/*! ./client-overlay */ \"./node_modules/webpack-hot-middleware/client-overlay.js\")({\n ansiColors: options.ansiColors,\n overlayStyles: options.overlayStyles\n });\n }\n\n var styles = {\n errors: \"color: #ff0000;\",\n warnings: \"color: #999933;\"\n };\n var previousProblems = null;\n function log(type, obj) {\n var newProblems = obj[type].map(function(msg) { return strip(msg); }).join('\\n');\n if (previousProblems == newProblems) {\n return;\n } else {\n previousProblems = newProblems;\n }\n\n var style = styles[type];\n var name = obj.name ? \"'\" + obj.name + \"' \" : \"\";\n var title = \"[HMR] bundle \" + name + \"has \" + obj[type].length + \" \" + type;\n // NOTE: console.warn or console.error will print the stack trace\n // which isn't helpful here, so using console.log to escape it.\n if (console.group && console.groupEnd) {\n console.group(\"%c\" + title, style);\n console.log(\"%c\" + newProblems, style);\n console.groupEnd();\n } else {\n console.log(\n \"%c\" + title + \"\\n\\t%c\" + newProblems.replace(/\\n/g, \"\\n\\t\"),\n style + \"font-weight: bold;\",\n style + \"font-weight: normal;\"\n );\n }\n }\n\n return {\n cleanProblemsCache: function () {\n previousProblems = null;\n },\n problems: function(type, obj) {\n if (options.warn) {\n log(type, obj);\n }\n if (overlay) {\n if (options.overlayWarnings || type === 'errors') {\n overlay.showProblems(type, obj[type]);\n return false;\n }\n overlay.clear();\n }\n return true;\n },\n success: function() {\n if (overlay) overlay.clear();\n },\n useCustomOverlay: function(customOverlay) {\n overlay = customOverlay;\n }\n };\n}\n\nvar processUpdate = __webpack_require__(/*! ./process-update */ \"./node_modules/webpack-hot-middleware/process-update.js\");\n\nvar customHandler;\nvar subscribeAllHandler;\nfunction processMessage(obj) {\n switch(obj.action) {\n case \"building\":\n if (options.log) {\n console.log(\n \"[HMR] bundle \" + (obj.name ? \"'\" + obj.name + \"' \" : \"\") +\n \"rebuilding\"\n );\n }\n break;\n case \"built\":\n if (options.log) {\n console.log(\n \"[HMR] bundle \" + (obj.name ? \"'\" + obj.name + \"' \" : \"\") +\n \"rebuilt in \" + obj.time + \"ms\"\n );\n }\n // fall through\n case \"sync\":\n if (obj.name && options.name && obj.name !== options.name) {\n return;\n }\n var applyUpdate = true;\n if (obj.errors.length > 0) {\n if (reporter) reporter.problems('errors', obj);\n applyUpdate = false;\n } else if (obj.warnings.length > 0) {\n if (reporter) {\n var overlayShown = reporter.problems('warnings', obj);\n applyUpdate = overlayShown;\n }\n } else {\n if (reporter) {\n reporter.cleanProblemsCache();\n reporter.success();\n }\n }\n if (applyUpdate) {\n processUpdate(obj.hash, obj.modules, options);\n }\n break;\n default:\n if (customHandler) {\n customHandler(obj);\n }\n }\n\n if (subscribeAllHandler) {\n subscribeAllHandler(obj);\n }\n}\n\nif (module) {\n module.exports = {\n subscribeAll: function subscribeAll(handler) {\n subscribeAllHandler = handler;\n },\n subscribe: function subscribe(handler) {\n customHandler = handler;\n },\n useCustomOverlay: function useCustomOverlay(customOverlay) {\n if (reporter) reporter.useCustomOverlay(customOverlay);\n },\n setOptionsAndConnect: setOptionsAndConnect\n };\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, \"?noInfo=true&reload=true\", __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spLWhvdC1taWRkbGV3YXJlL2NsaWVudC5qcz9kOGVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBZTtBQUNuQixvQkFBb0IsbUJBQU8sQ0FBQyw0REFBYTtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIscUJBQXVCO0FBQzFDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLG1CQUFPLENBQUMsc0RBQVk7O0FBRWxDO0FBQ0E7QUFDQSxjQUFjLG1CQUFPLENBQUMsaUZBQWtCO0FBQ3hDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSw0QkFBNEI7QUFDNUIsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxtQkFBbUIsRUFBRTtBQUN4RTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRkFBa0I7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy93ZWJwYWNrLWhvdC1taWRkbGV3YXJlL2NsaWVudC5qcz9ub0luZm89dHJ1ZSZyZWxvYWQ9dHJ1ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qZXNsaW50LWVudiBicm93c2VyKi9cbi8qZ2xvYmFsIF9fcmVzb3VyY2VRdWVyeSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyovXG5cbnZhciBvcHRpb25zID0ge1xuICBwYXRoOiBcIi9fX3dlYnBhY2tfaG1yXCIsXG4gIHRpbWVvdXQ6IDIwICogMTAwMCxcbiAgb3ZlcmxheTogdHJ1ZSxcbiAgcmVsb2FkOiBmYWxzZSxcbiAgbG9nOiB0cnVlLFxuICB3YXJuOiB0cnVlLFxuICBuYW1lOiAnJyxcbiAgYXV0b0Nvbm5lY3Q6IHRydWUsXG4gIG92ZXJsYXlTdHlsZXM6IHt9LFxuICBvdmVybGF5V2FybmluZ3M6IGZhbHNlLFxuICBhbnNpQ29sb3JzOiB7fVxufTtcbmlmIChfX3Jlc291cmNlUXVlcnkpIHtcbiAgdmFyIHF1ZXJ5c3RyaW5nID0gcmVxdWlyZSgncXVlcnlzdHJpbmcnKTtcbiAgdmFyIG92ZXJyaWRlcyA9IHF1ZXJ5c3RyaW5nLnBhcnNlKF9fcmVzb3VyY2VRdWVyeS5zbGljZSgxKSk7XG4gIHNldE92ZXJyaWRlcyhvdmVycmlkZXMpO1xufVxuXG5pZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZG8gbm90aGluZ1xufSBlbHNlIGlmICh0eXBlb2Ygd2luZG93LkV2ZW50U291cmNlID09PSAndW5kZWZpbmVkJykge1xuICBjb25zb2xlLndhcm4oXG4gICAgXCJ3ZWJwYWNrLWhvdC1taWRkbGV3YXJlJ3MgY2xpZW50IHJlcXVpcmVzIEV2ZW50U291cmNlIHRvIHdvcmsuIFwiICtcbiAgICBcIllvdSBzaG91bGQgaW5jbHVkZSBhIHBvbHlmaWxsIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgdGhpcyBicm93c2VyOiBcIiArXG4gICAgXCJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU2VydmVyLXNlbnRfZXZlbnRzI1Rvb2xzXCJcbiAgKTtcbn0gZWxzZSB7XG4gIGlmIChvcHRpb25zLmF1dG9Db25uZWN0KSB7XG4gICAgY29ubmVjdCgpO1xuICB9XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBzZXRPcHRpb25zQW5kQ29ubmVjdChvdmVycmlkZXMpIHtcbiAgc2V0T3ZlcnJpZGVzKG92ZXJyaWRlcyk7XG4gIGNvbm5lY3QoKTtcbn1cblxuZnVuY3Rpb24gc2V0T3ZlcnJpZGVzKG92ZXJyaWRlcykge1xuICBpZiAob3ZlcnJpZGVzLmF1dG9Db25uZWN0KSBvcHRpb25zLmF1dG9Db25uZWN0ID0gb3ZlcnJpZGVzLmF1dG9Db25uZWN0ID09ICd0cnVlJztcbiAgaWYgKG92ZXJyaWRlcy5wYXRoKSBvcHRpb25zLnBhdGggPSBvdmVycmlkZXMucGF0aDtcbiAgaWYgKG92ZXJyaWRlcy50aW1lb3V0KSBvcHRpb25zLnRpbWVvdXQgPSBvdmVycmlkZXMudGltZW91dDtcbiAgaWYgKG92ZXJyaWRlcy5vdmVybGF5KSBvcHRpb25zLm92ZXJsYXkgPSBvdmVycmlkZXMub3ZlcmxheSAhPT0gJ2ZhbHNlJztcbiAgaWYgKG92ZXJyaWRlcy5yZWxvYWQpIG9wdGlvbnMucmVsb2FkID0gb3ZlcnJpZGVzLnJlbG9hZCAhPT0gJ2ZhbHNlJztcbiAgaWYgKG92ZXJyaWRlcy5ub0luZm8gJiYgb3ZlcnJpZGVzLm5vSW5mbyAhPT0gJ2ZhbHNlJykge1xuICAgIG9wdGlvbnMubG9nID0gZmFsc2U7XG4gIH1cbiAgaWYgKG92ZXJyaWRlcy5uYW1lKSB7XG4gICAgb3B0aW9ucy5uYW1lID0gb3ZlcnJpZGVzLm5hbWU7XG4gIH1cbiAgaWYgKG92ZXJyaWRlcy5xdWlldCAmJiBvdmVycmlkZXMucXVpZXQgIT09ICdmYWxzZScpIHtcbiAgICBvcHRpb25zLmxvZyA9IGZhbHNlO1xuICAgIG9wdGlvbnMud2FybiA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKG92ZXJyaWRlcy5keW5hbWljUHVibGljUGF0aCkge1xuICAgIG9wdGlvbnMucGF0aCA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fICsgb3B0aW9ucy5wYXRoO1xuICB9XG5cbiAgaWYgKG92ZXJyaWRlcy5hbnNpQ29sb3JzKSBvcHRpb25zLmFuc2lDb2xvcnMgPSBKU09OLnBhcnNlKG92ZXJyaWRlcy5hbnNpQ29sb3JzKTtcbiAgaWYgKG92ZXJyaWRlcy5vdmVybGF5U3R5bGVzKSBvcHRpb25zLm92ZXJsYXlTdHlsZXMgPSBKU09OLnBhcnNlKG92ZXJyaWRlcy5vdmVybGF5U3R5bGVzKTtcblxuICBpZiAob3ZlcnJpZGVzLm92ZXJsYXlXYXJuaW5ncykge1xuICAgIG9wdGlvbnMub3ZlcmxheVdhcm5pbmdzID0gb3ZlcnJpZGVzLm92ZXJsYXlXYXJuaW5ncyA9PSAndHJ1ZSc7XG4gIH1cbn1cblxuZnVuY3Rpb24gRXZlbnRTb3VyY2VXcmFwcGVyKCkge1xuICB2YXIgc291cmNlO1xuICB2YXIgbGFzdEFjdGl2aXR5ID0gbmV3IERhdGUoKTtcbiAgdmFyIGxpc3RlbmVycyA9IFtdO1xuXG4gIGluaXQoKTtcbiAgdmFyIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gICAgaWYgKChuZXcgRGF0ZSgpIC0gbGFzdEFjdGl2aXR5KSA+IG9wdGlvbnMudGltZW91dCkge1xuICAgICAgaGFuZGxlRGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfSwgb3B0aW9ucy50aW1lb3V0IC8gMik7XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICBzb3VyY2UgPSBuZXcgd2luZG93LkV2ZW50U291cmNlKG9wdGlvbnMucGF0aCk7XG4gICAgc291cmNlLm9ub3BlbiA9IGhhbmRsZU9ubGluZTtcbiAgICBzb3VyY2Uub25lcnJvciA9IGhhbmRsZURpc2Nvbm5lY3Q7XG4gICAgc291cmNlLm9ubWVzc2FnZSA9IGhhbmRsZU1lc3NhZ2U7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVPbmxpbmUoKSB7XG4gICAgaWYgKG9wdGlvbnMubG9nKSBjb25zb2xlLmxvZyhcIltITVJdIGNvbm5lY3RlZFwiKTtcbiAgICBsYXN0QWN0aXZpdHkgPSBuZXcgRGF0ZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCkge1xuICAgIGxhc3RBY3Rpdml0eSA9IG5ldyBEYXRlKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxpc3RlbmVyc1tpXShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlRGlzY29ubmVjdCgpIHtcbiAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICBzb3VyY2UuY2xvc2UoKTtcbiAgICBzZXRUaW1lb3V0KGluaXQsIG9wdGlvbnMudGltZW91dCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFkZE1lc3NhZ2VMaXN0ZW5lcjogZnVuY3Rpb24oZm4pIHtcbiAgICAgIGxpc3RlbmVycy5wdXNoKGZuKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50U291cmNlV3JhcHBlcigpIHtcbiAgaWYgKCF3aW5kb3cuX193aG1FdmVudFNvdXJjZVdyYXBwZXIpIHtcbiAgICB3aW5kb3cuX193aG1FdmVudFNvdXJjZVdyYXBwZXIgPSB7fTtcbiAgfVxuICBpZiAoIXdpbmRvdy5fX3dobUV2ZW50U291cmNlV3JhcHBlcltvcHRpb25zLnBhdGhdKSB7XG4gICAgLy8gY2FjaGUgdGhlIHdyYXBwZXIgZm9yIG90aGVyIGVudHJpZXMgbG9hZGVkIG9uXG4gICAgLy8gdGhlIHNhbWUgcGFnZSB3aXRoIHRoZSBzYW1lIG9wdGlvbnMucGF0aFxuICAgIHdpbmRvdy5fX3dobUV2ZW50U291cmNlV3JhcHBlcltvcHRpb25zLnBhdGhdID0gRXZlbnRTb3VyY2VXcmFwcGVyKCk7XG4gIH1cbiAgcmV0dXJuIHdpbmRvdy5fX3dobUV2ZW50U291cmNlV3JhcHBlcltvcHRpb25zLnBhdGhdO1xufVxuXG5mdW5jdGlvbiBjb25uZWN0KCkge1xuICBnZXRFdmVudFNvdXJjZVdyYXBwZXIoKS5hZGRNZXNzYWdlTGlzdGVuZXIoaGFuZGxlTWVzc2FnZSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCkge1xuICAgIGlmIChldmVudC5kYXRhID09IFwiXFx1RDgzRFxcdURDOTNcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcHJvY2Vzc01lc3NhZ2UoSlNPTi5wYXJzZShldmVudC5kYXRhKSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChvcHRpb25zLndhcm4pIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiSW52YWxpZCBITVIgbWVzc2FnZTogXCIgKyBldmVudC5kYXRhICsgXCJcXG5cIiArIGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gdGhlIHJlcG9ydGVyIG5lZWRzIHRvIGJlIGEgc2luZ2xldG9uIG9uIHRoZSBwYWdlXG4vLyBpbiBjYXNlIHRoZSBjbGllbnQgaXMgYmVpbmcgdXNlZCBieSBtdWx0aXBsZSBidW5kbGVzXG4vLyB3ZSBvbmx5IHdhbnQgdG8gcmVwb3J0IG9uY2UuXG4vLyBhbGwgdGhlIGVycm9ycyB3aWxsIGdvIHRvIGFsbCBjbGllbnRzXG52YXIgc2luZ2xldG9uS2V5ID0gJ19fd2VicGFja19ob3RfbWlkZGxld2FyZV9yZXBvcnRlcl9fJztcbnZhciByZXBvcnRlcjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICBpZiAoIXdpbmRvd1tzaW5nbGV0b25LZXldKSB7XG4gICAgd2luZG93W3NpbmdsZXRvbktleV0gPSBjcmVhdGVSZXBvcnRlcigpO1xuICB9XG4gIHJlcG9ydGVyID0gd2luZG93W3NpbmdsZXRvbktleV07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlcG9ydGVyKCkge1xuICB2YXIgc3RyaXAgPSByZXF1aXJlKCdzdHJpcC1hbnNpJyk7XG5cbiAgdmFyIG92ZXJsYXk7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIG9wdGlvbnMub3ZlcmxheSkge1xuICAgIG92ZXJsYXkgPSByZXF1aXJlKCcuL2NsaWVudC1vdmVybGF5Jykoe1xuICAgICAgYW5zaUNvbG9yczogb3B0aW9ucy5hbnNpQ29sb3JzLFxuICAgICAgb3ZlcmxheVN0eWxlczogb3B0aW9ucy5vdmVybGF5U3R5bGVzXG4gICAgfSk7XG4gIH1cblxuICB2YXIgc3R5bGVzID0ge1xuICAgIGVycm9yczogXCJjb2xvcjogI2ZmMDAwMDtcIixcbiAgICB3YXJuaW5nczogXCJjb2xvcjogIzk5OTkzMztcIlxuICB9O1xuICB2YXIgcHJldmlvdXNQcm9ibGVtcyA9IG51bGw7XG4gIGZ1bmN0aW9uIGxvZyh0eXBlLCBvYmopIHtcbiAgICB2YXIgbmV3UHJvYmxlbXMgPSBvYmpbdHlwZV0ubWFwKGZ1bmN0aW9uKG1zZykgeyByZXR1cm4gc3RyaXAobXNnKTsgfSkuam9pbignXFxuJyk7XG4gICAgaWYgKHByZXZpb3VzUHJvYmxlbXMgPT0gbmV3UHJvYmxlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldmlvdXNQcm9ibGVtcyA9IG5ld1Byb2JsZW1zO1xuICAgIH1cblxuICAgIHZhciBzdHlsZSA9IHN0eWxlc1t0eXBlXTtcbiAgICB2YXIgbmFtZSA9IG9iai5uYW1lID8gXCInXCIgKyBvYmoubmFtZSArIFwiJyBcIiA6IFwiXCI7XG4gICAgdmFyIHRpdGxlID0gXCJbSE1SXSBidW5kbGUgXCIgKyBuYW1lICsgXCJoYXMgXCIgKyBvYmpbdHlwZV0ubGVuZ3RoICsgXCIgXCIgKyB0eXBlO1xuICAgIC8vIE5PVEU6IGNvbnNvbGUud2FybiBvciBjb25zb2xlLmVycm9yIHdpbGwgcHJpbnQgdGhlIHN0YWNrIHRyYWNlXG4gICAgLy8gd2hpY2ggaXNuJ3QgaGVscGZ1bCBoZXJlLCBzbyB1c2luZyBjb25zb2xlLmxvZyB0byBlc2NhcGUgaXQuXG4gICAgaWYgKGNvbnNvbGUuZ3JvdXAgJiYgY29uc29sZS5ncm91cEVuZCkge1xuICAgICAgY29uc29sZS5ncm91cChcIiVjXCIgKyB0aXRsZSwgc3R5bGUpO1xuICAgICAgY29uc29sZS5sb2coXCIlY1wiICsgbmV3UHJvYmxlbXMsIHN0eWxlKTtcbiAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIFwiJWNcIiArIHRpdGxlICsgXCJcXG5cXHQlY1wiICsgbmV3UHJvYmxlbXMucmVwbGFjZSgvXFxuL2csIFwiXFxuXFx0XCIpLFxuICAgICAgICBzdHlsZSArIFwiZm9udC13ZWlnaHQ6IGJvbGQ7XCIsXG4gICAgICAgIHN0eWxlICsgXCJmb250LXdlaWdodDogbm9ybWFsO1wiXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2xlYW5Qcm9ibGVtc0NhY2hlOiBmdW5jdGlvbiAoKSB7XG4gICAgICBwcmV2aW91c1Byb2JsZW1zID0gbnVsbDtcbiAgICB9LFxuICAgIHByb2JsZW1zOiBmdW5jdGlvbih0eXBlLCBvYmopIHtcbiAgICAgIGlmIChvcHRpb25zLndhcm4pIHtcbiAgICAgICAgbG9nKHR5cGUsIG9iaik7XG4gICAgICB9XG4gICAgICBpZiAob3ZlcmxheSkge1xuICAgICAgICBpZiAob3B0aW9ucy5vdmVybGF5V2FybmluZ3MgfHwgdHlwZSA9PT0gJ2Vycm9ycycpIHtcbiAgICAgICAgICBvdmVybGF5LnNob3dQcm9ibGVtcyh0eXBlLCBvYmpbdHlwZV0pO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBvdmVybGF5LmNsZWFyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKG92ZXJsYXkpIG92ZXJsYXkuY2xlYXIoKTtcbiAgICB9LFxuICAgIHVzZUN1c3RvbU92ZXJsYXk6IGZ1bmN0aW9uKGN1c3RvbU92ZXJsYXkpIHtcbiAgICAgIG92ZXJsYXkgPSBjdXN0b21PdmVybGF5O1xuICAgIH1cbiAgfTtcbn1cblxudmFyIHByb2Nlc3NVcGRhdGUgPSByZXF1aXJlKCcuL3Byb2Nlc3MtdXBkYXRlJyk7XG5cbnZhciBjdXN0b21IYW5kbGVyO1xudmFyIHN1YnNjcmliZUFsbEhhbmRsZXI7XG5mdW5jdGlvbiBwcm9jZXNzTWVzc2FnZShvYmopIHtcbiAgc3dpdGNoKG9iai5hY3Rpb24pIHtcbiAgICBjYXNlIFwiYnVpbGRpbmdcIjpcbiAgICAgIGlmIChvcHRpb25zLmxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBcIltITVJdIGJ1bmRsZSBcIiArIChvYmoubmFtZSA/IFwiJ1wiICsgb2JqLm5hbWUgKyBcIicgXCIgOiBcIlwiKSArXG4gICAgICAgICAgXCJyZWJ1aWxkaW5nXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJidWlsdFwiOlxuICAgICAgaWYgKG9wdGlvbnMubG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIFwiW0hNUl0gYnVuZGxlIFwiICsgKG9iai5uYW1lID8gXCInXCIgKyBvYmoubmFtZSArIFwiJyBcIiA6IFwiXCIpICtcbiAgICAgICAgICBcInJlYnVpbHQgaW4gXCIgKyBvYmoudGltZSArIFwibXNcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gZmFsbCB0aHJvdWdoXG4gICAgY2FzZSBcInN5bmNcIjpcbiAgICAgIGlmIChvYmoubmFtZSAmJiBvcHRpb25zLm5hbWUgJiYgb2JqLm5hbWUgIT09IG9wdGlvbnMubmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgYXBwbHlVcGRhdGUgPSB0cnVlO1xuICAgICAgaWYgKG9iai5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAocmVwb3J0ZXIpIHJlcG9ydGVyLnByb2JsZW1zKCdlcnJvcnMnLCBvYmopO1xuICAgICAgICBhcHBseVVwZGF0ZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChvYmoud2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAocmVwb3J0ZXIpIHtcbiAgICAgICAgICB2YXIgb3ZlcmxheVNob3duID0gcmVwb3J0ZXIucHJvYmxlbXMoJ3dhcm5pbmdzJywgb2JqKTtcbiAgICAgICAgICBhcHBseVVwZGF0ZSA9IG92ZXJsYXlTaG93bjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcG9ydGVyKSB7XG4gICAgICAgICAgcmVwb3J0ZXIuY2xlYW5Qcm9ibGVtc0NhY2hlKCk7XG4gICAgICAgICAgcmVwb3J0ZXIuc3VjY2VzcygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYXBwbHlVcGRhdGUpIHtcbiAgICAgICAgcHJvY2Vzc1VwZGF0ZShvYmouaGFzaCwgb2JqLm1vZHVsZXMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChjdXN0b21IYW5kbGVyKSB7XG4gICAgICAgIGN1c3RvbUhhbmRsZXIob2JqKTtcbiAgICAgIH1cbiAgfVxuXG4gIGlmIChzdWJzY3JpYmVBbGxIYW5kbGVyKSB7XG4gICAgc3Vic2NyaWJlQWxsSGFuZGxlcihvYmopO1xuICB9XG59XG5cbmlmIChtb2R1bGUpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgc3Vic2NyaWJlQWxsOiBmdW5jdGlvbiBzdWJzY3JpYmVBbGwoaGFuZGxlcikge1xuICAgICAgc3Vic2NyaWJlQWxsSGFuZGxlciA9IGhhbmRsZXI7XG4gICAgfSxcbiAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShoYW5kbGVyKSB7XG4gICAgICBjdXN0b21IYW5kbGVyID0gaGFuZGxlcjtcbiAgICB9LFxuICAgIHVzZUN1c3RvbU92ZXJsYXk6IGZ1bmN0aW9uIHVzZUN1c3RvbU92ZXJsYXkoY3VzdG9tT3ZlcmxheSkge1xuICAgICAgaWYgKHJlcG9ydGVyKSByZXBvcnRlci51c2VDdXN0b21PdmVybGF5KGN1c3RvbU92ZXJsYXkpO1xuICAgIH0sXG4gICAgc2V0T3B0aW9uc0FuZENvbm5lY3Q6IHNldE9wdGlvbnNBbmRDb25uZWN0XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/webpack-hot-middleware/client.js?noInfo=true&reload=true\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/webpack-hot-middleware/process-update.js":
|
||
/*!**************************************************!*\
|
||
!*** (webpack)-hot-middleware/process-update.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval("/**\n * Based heavily on https://github.com/webpack/webpack/blob/\n * c0afdf9c6abc1dd70707c594e473802a566f7b6e/hot/only-dev-server.js\n * Original copyright Tobias Koppers @sokra (MIT license)\n */\n\n/* global window __webpack_hash__ */\n\nif (false) {}\n\nvar hmrDocsUrl = \"https://webpack.js.org/concepts/hot-module-replacement/\"; // eslint-disable-line max-len\n\nvar lastHash;\nvar failureStatuses = { abort: 1, fail: 1 };\nvar applyOptions = { \t\t\t\t\n ignoreUnaccepted: true,\n ignoreDeclined: true,\n ignoreErrored: true,\n onUnaccepted: function(data) {\n console.warn(\"Ignored an update to unaccepted module \" + data.chain.join(\" -> \"));\n },\n onDeclined: function(data) {\n console.warn(\"Ignored an update to declined module \" + data.chain.join(\" -> \"));\n },\n onErrored: function(data) {\n console.error(data.error);\n console.warn(\"Ignored an error while updating module \" + data.moduleId + \" (\" + data.type + \")\");\n } \n}\n\nfunction upToDate(hash) {\n if (hash) lastHash = hash;\n return lastHash == __webpack_require__.h();\n}\n\nmodule.exports = function(hash, moduleMap, options) {\n var reload = options.reload;\n if (!upToDate(hash) && module.hot.status() == \"idle\") {\n if (options.log) console.log(\"[HMR] Checking for updates on the server...\");\n check();\n }\n\n function check() {\n var cb = function(err, updatedModules) {\n if (err) return handleError(err);\n\n if(!updatedModules) {\n if (options.warn) {\n console.warn(\"[HMR] Cannot find update (Full reload needed)\");\n console.warn(\"[HMR] (Probably because of restarting the server)\");\n }\n performReload();\n return null;\n }\n\n var applyCallback = function(applyErr, renewedModules) {\n if (applyErr) return handleError(applyErr);\n\n if (!upToDate()) check();\n\n logUpdates(updatedModules, renewedModules);\n };\n\n var applyResult = module.hot.apply(applyOptions, applyCallback);\n // webpack 2 promise\n if (applyResult && applyResult.then) {\n // HotModuleReplacement.runtime.js refers to the result as `outdatedModules`\n applyResult.then(function(outdatedModules) {\n applyCallback(null, outdatedModules);\n });\n applyResult.catch(applyCallback);\n }\n\n };\n\n var result = module.hot.check(false, cb);\n // webpack 2 promise\n if (result && result.then) {\n result.then(function(updatedModules) {\n cb(null, updatedModules);\n });\n result.catch(cb);\n }\n }\n\n function logUpdates(updatedModules, renewedModules) {\n var unacceptedModules = updatedModules.filter(function(moduleId) {\n return renewedModules && renewedModules.indexOf(moduleId) < 0;\n });\n\n if(unacceptedModules.length > 0) {\n if (options.warn) {\n console.warn(\n \"[HMR] The following modules couldn't be hot updated: \" +\n \"(Full reload needed)\\n\" +\n \"This is usually because the modules which have changed \" +\n \"(and their parents) do not know how to hot reload themselves. \" +\n \"See \" + hmrDocsUrl + \" for more details.\"\n );\n unacceptedModules.forEach(function(moduleId) {\n console.warn(\"[HMR] - \" + (moduleMap[moduleId] || moduleId));\n });\n }\n performReload();\n return;\n }\n\n if (options.log) {\n if(!renewedModules || renewedModules.length === 0) {\n console.log(\"[HMR] Nothing hot updated.\");\n } else {\n console.log(\"[HMR] Updated modules:\");\n renewedModules.forEach(function(moduleId) {\n console.log(\"[HMR] - \" + (moduleMap[moduleId] || moduleId));\n });\n }\n\n if (upToDate()) {\n console.log(\"[HMR] App is up to date.\");\n }\n }\n }\n\n function handleError(err) {\n if (module.hot.status() in failureStatuses) {\n if (options.warn) {\n console.warn(\"[HMR] Cannot check for update (Full reload needed)\");\n console.warn(\"[HMR] \" + (err.stack || err.message));\n }\n performReload();\n return;\n }\n if (options.warn) {\n console.warn(\"[HMR] Update check failed: \" + (err.stack || err.message));\n }\n }\n\n function performReload() {\n if (reload) {\n if (options.warn) console.warn(\"[HMR] Reloading page\");\n window.location.reload();\n }\n }\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spLWhvdC1taWRkbGV3YXJlL3Byb2Nlc3MtdXBkYXRlLmpzP2UxMzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLEtBQVcsRUFBRSxFQUVoQjs7QUFFRCwyRUFBMkU7O0FBRTNFO0FBQ0EsdUJBQXVCO0FBQ3ZCLG9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEc7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLHVCQUFnQjtBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay1ob3QtbWlkZGxld2FyZS9wcm9jZXNzLXVwZGF0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmFzZWQgaGVhdmlseSBvbiBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2Jsb2IvXG4gKiAgYzBhZmRmOWM2YWJjMWRkNzA3MDdjNTk0ZTQ3MzgwMmE1NjZmN2I2ZS9ob3Qvb25seS1kZXYtc2VydmVyLmpzXG4gKiBPcmlnaW5hbCBjb3B5cmlnaHQgVG9iaWFzIEtvcHBlcnMgQHNva3JhIChNSVQgbGljZW5zZSlcbiAqL1xuXG4vKiBnbG9iYWwgd2luZG93IF9fd2VicGFja19oYXNoX18gKi9cblxuaWYgKCFtb2R1bGUuaG90KSB7XG4gIHRocm93IG5ldyBFcnJvcihcIltITVJdIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnQgaXMgZGlzYWJsZWQuXCIpO1xufVxuXG52YXIgaG1yRG9jc1VybCA9IFwiaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9jb25jZXB0cy9ob3QtbW9kdWxlLXJlcGxhY2VtZW50L1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1sZW5cblxudmFyIGxhc3RIYXNoO1xudmFyIGZhaWx1cmVTdGF0dXNlcyA9IHsgYWJvcnQ6IDEsIGZhaWw6IDEgfTtcbnZhciBhcHBseU9wdGlvbnMgPSB7IFx0XHRcdFx0XG4gIGlnbm9yZVVuYWNjZXB0ZWQ6IHRydWUsXG4gIGlnbm9yZURlY2xpbmVkOiB0cnVlLFxuICBpZ25vcmVFcnJvcmVkOiB0cnVlLFxuICBvblVuYWNjZXB0ZWQ6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBjb25zb2xlLndhcm4oXCJJZ25vcmVkIGFuIHVwZGF0ZSB0byB1bmFjY2VwdGVkIG1vZHVsZSBcIiArIGRhdGEuY2hhaW4uam9pbihcIiAtPiBcIikpO1xuICB9LFxuICBvbkRlY2xpbmVkOiBmdW5jdGlvbihkYXRhKSB7XG4gICAgY29uc29sZS53YXJuKFwiSWdub3JlZCBhbiB1cGRhdGUgdG8gZGVjbGluZWQgbW9kdWxlIFwiICsgZGF0YS5jaGFpbi5qb2luKFwiIC0+IFwiKSk7XG4gIH0sXG4gIG9uRXJyb3JlZDogZnVuY3Rpb24oZGF0YSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZGF0YS5lcnJvcik7XG4gICAgY29uc29sZS53YXJuKFwiSWdub3JlZCBhbiBlcnJvciB3aGlsZSB1cGRhdGluZyBtb2R1bGUgXCIgKyBkYXRhLm1vZHVsZUlkICsgXCIgKFwiICsgZGF0YS50eXBlICsgXCIpXCIpO1xuICB9IFxufVxuXG5mdW5jdGlvbiB1cFRvRGF0ZShoYXNoKSB7XG4gIGlmIChoYXNoKSBsYXN0SGFzaCA9IGhhc2g7XG4gIHJldHVybiBsYXN0SGFzaCA9PSBfX3dlYnBhY2tfaGFzaF9fO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhhc2gsIG1vZHVsZU1hcCwgb3B0aW9ucykge1xuICB2YXIgcmVsb2FkID0gb3B0aW9ucy5yZWxvYWQ7XG4gIGlmICghdXBUb0RhdGUoaGFzaCkgJiYgbW9kdWxlLmhvdC5zdGF0dXMoKSA9PSBcImlkbGVcIikge1xuICAgIGlmIChvcHRpb25zLmxvZykgY29uc29sZS5sb2coXCJbSE1SXSBDaGVja2luZyBmb3IgdXBkYXRlcyBvbiB0aGUgc2VydmVyLi4uXCIpO1xuICAgIGNoZWNrKCk7XG4gIH1cblxuICBmdW5jdGlvbiBjaGVjaygpIHtcbiAgICB2YXIgY2IgPSBmdW5jdGlvbihlcnIsIHVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gaGFuZGxlRXJyb3IoZXJyKTtcblxuICAgICAgaWYoIXVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgICAgIGlmIChvcHRpb25zLndhcm4pIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbSE1SXSBDYW5ub3QgZmluZCB1cGRhdGUgKEZ1bGwgcmVsb2FkIG5lZWRlZClcIik7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW0hNUl0gKFByb2JhYmx5IGJlY2F1c2Ugb2YgcmVzdGFydGluZyB0aGUgc2VydmVyKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBwZXJmb3JtUmVsb2FkKCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgYXBwbHlDYWxsYmFjayA9IGZ1bmN0aW9uKGFwcGx5RXJyLCByZW5ld2VkTW9kdWxlcykge1xuICAgICAgICBpZiAoYXBwbHlFcnIpIHJldHVybiBoYW5kbGVFcnJvcihhcHBseUVycik7XG5cbiAgICAgICAgaWYgKCF1cFRvRGF0ZSgpKSBjaGVjaygpO1xuXG4gICAgICAgIGxvZ1VwZGF0ZXModXBkYXRlZE1vZHVsZXMsIHJlbmV3ZWRNb2R1bGVzKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBhcHBseVJlc3VsdCA9IG1vZHVsZS5ob3QuYXBwbHkoYXBwbHlPcHRpb25zLCBhcHBseUNhbGxiYWNrKTtcbiAgICAgIC8vIHdlYnBhY2sgMiBwcm9taXNlXG4gICAgICBpZiAoYXBwbHlSZXN1bHQgJiYgYXBwbHlSZXN1bHQudGhlbikge1xuICAgICAgICAvLyBIb3RNb2R1bGVSZXBsYWNlbWVudC5ydW50aW1lLmpzIHJlZmVycyB0byB0aGUgcmVzdWx0IGFzIGBvdXRkYXRlZE1vZHVsZXNgXG4gICAgICAgIGFwcGx5UmVzdWx0LnRoZW4oZnVuY3Rpb24ob3V0ZGF0ZWRNb2R1bGVzKSB7XG4gICAgICAgICAgYXBwbHlDYWxsYmFjayhudWxsLCBvdXRkYXRlZE1vZHVsZXMpO1xuICAgICAgICB9KTtcbiAgICAgICAgYXBwbHlSZXN1bHQuY2F0Y2goYXBwbHlDYWxsYmFjayk7XG4gICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHJlc3VsdCA9IG1vZHVsZS5ob3QuY2hlY2soZmFsc2UsIGNiKTtcbiAgICAvLyB3ZWJwYWNrIDIgcHJvbWlzZVxuICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnRoZW4pIHtcbiAgICAgICAgcmVzdWx0LnRoZW4oZnVuY3Rpb24odXBkYXRlZE1vZHVsZXMpIHtcbiAgICAgICAgICAgIGNiKG51bGwsIHVwZGF0ZWRNb2R1bGVzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5jYXRjaChjYik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbG9nVXBkYXRlcyh1cGRhdGVkTW9kdWxlcywgcmVuZXdlZE1vZHVsZXMpIHtcbiAgICB2YXIgdW5hY2NlcHRlZE1vZHVsZXMgPSB1cGRhdGVkTW9kdWxlcy5maWx0ZXIoZnVuY3Rpb24obW9kdWxlSWQpIHtcbiAgICAgIHJldHVybiByZW5ld2VkTW9kdWxlcyAmJiByZW5ld2VkTW9kdWxlcy5pbmRleE9mKG1vZHVsZUlkKSA8IDA7XG4gICAgfSk7XG5cbiAgICBpZih1bmFjY2VwdGVkTW9kdWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAob3B0aW9ucy53YXJuKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBcIltITVJdIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBjb3VsZG4ndCBiZSBob3QgdXBkYXRlZDogXCIgK1xuICAgICAgICAgIFwiKEZ1bGwgcmVsb2FkIG5lZWRlZClcXG5cIiArXG4gICAgICAgICAgXCJUaGlzIGlzIHVzdWFsbHkgYmVjYXVzZSB0aGUgbW9kdWxlcyB3aGljaCBoYXZlIGNoYW5nZWQgXCIgK1xuICAgICAgICAgIFwiKGFuZCB0aGVpciBwYXJlbnRzKSBkbyBub3Qga25vdyBob3cgdG8gaG90IHJlbG9hZCB0aGVtc2VsdmVzLiBcIiArXG4gICAgICAgICAgXCJTZWUgXCIgKyBobXJEb2NzVXJsICsgXCIgZm9yIG1vcmUgZGV0YWlscy5cIlxuICAgICAgICApO1xuICAgICAgICB1bmFjY2VwdGVkTW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uKG1vZHVsZUlkKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW0hNUl0gIC0gXCIgKyAobW9kdWxlTWFwW21vZHVsZUlkXSB8fCBtb2R1bGVJZCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHBlcmZvcm1SZWxvYWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2cpIHtcbiAgICAgIGlmKCFyZW5ld2VkTW9kdWxlcyB8fCByZW5ld2VkTW9kdWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJbSE1SXSBOb3RoaW5nIGhvdCB1cGRhdGVkLlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW0hNUl0gVXBkYXRlZCBtb2R1bGVzOlwiKTtcbiAgICAgICAgcmVuZXdlZE1vZHVsZXMuZm9yRWFjaChmdW5jdGlvbihtb2R1bGVJZCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiW0hNUl0gIC0gXCIgKyAobW9kdWxlTWFwW21vZHVsZUlkXSB8fCBtb2R1bGVJZCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVwVG9EYXRlKCkpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJbSE1SXSBBcHAgaXMgdXAgdG8gZGF0ZS5cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyKSB7XG4gICAgaWYgKG1vZHVsZS5ob3Quc3RhdHVzKCkgaW4gZmFpbHVyZVN0YXR1c2VzKSB7XG4gICAgICBpZiAob3B0aW9ucy53YXJuKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIltITVJdIENhbm5vdCBjaGVjayBmb3IgdXBkYXRlIChGdWxsIHJlbG9hZCBuZWVkZWQpXCIpO1xuICAgICAgICBjb25zb2xlLndhcm4oXCJbSE1SXSBcIiArIChlcnIuc3RhY2sgfHwgZXJyLm1lc3NhZ2UpKTtcbiAgICAgIH1cbiAgICAgIHBlcmZvcm1SZWxvYWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMud2Fybikge1xuICAgICAgY29uc29sZS53YXJuKFwiW0hNUl0gVXBkYXRlIGNoZWNrIGZhaWxlZDogXCIgKyAoZXJyLnN0YWNrIHx8IGVyci5tZXNzYWdlKSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGVyZm9ybVJlbG9hZCgpIHtcbiAgICBpZiAocmVsb2FkKSB7XG4gICAgICBpZiAob3B0aW9ucy53YXJuKSBjb25zb2xlLndhcm4oXCJbSE1SXSBSZWxvYWRpbmcgcGFnZVwiKTtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9XG4gIH1cbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/webpack-hot-middleware/process-update.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/webpack/buildin/global.js":
|
||
/*!***********************************!*\
|
||
!*** (webpack)/buildin/global.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzP2NkMDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/global.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/webpack/buildin/module.js":
|
||
/*!***********************************!*\
|
||
!*** (webpack)/buildin/module.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzP2NlZDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9tb2R1bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/module.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/xtend/immutable.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/xtend/immutable.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
eval("module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMveHRlbmQvaW1tdXRhYmxlLmpzPzUzYTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3h0ZW5kL2ltbXV0YWJsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZXh0ZW5kXG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGV4dGVuZCgpIHtcbiAgICB2YXIgdGFyZ2V0ID0ge31cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV1cblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/xtend/immutable.js\n");
|
||
|
||
/***/ })
|
||
|
||
}]); |